Index: /trunk/SRC/Documentation/idldoc_assistant_output/Colors/colorbar.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/Colors/colorbar.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/Colors/colorbar.html	(revision 363)
@@ -229,5 +229,5 @@
       
       
-      <font size="-1" color="#006633">default:</font> <font size="-1" color="#006633"><i>see bellow</i></font>
+      <font size="-1" color="#006633">default:</font> <font size="-1" color="#006633"><i>see below</i></font>
       
     </h4>
@@ -442,5 +442,5 @@
     
     <h4>Version</h4>
- $Id: colorbar.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: colorbar.pro 358 2008-04-28 09:41:14Z pinsard $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/Grid/ncdf_meshread.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/Grid/ncdf_meshread.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/Grid/ncdf_meshread.html	(revision 363)
@@ -277,5 +277,5 @@
     
     <h4>Version</h4>
- $Id: ncdf_meshread.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: ncdf_meshread.pro 359 2008-06-05 13:06:39Z smasson $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/Interpolation/file_interp.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/Interpolation/file_interp.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/Interpolation/file_interp.html	(revision 363)
@@ -74,5 +74,5 @@
 </font></h2>
 
-      <p><font face="Courier">file_interp<i>, <a href="#_file_interp_keyword_filein">filein</a>, <a href="#_file_interp_keyword_fileout">fileout</a>, <a href="#_file_interp_keyword_gridout">gridout</a></i>, <a href="#_file_interp_keyword_GRIDIN">GRIDIN</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_MASKIN">MASKIN</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_MASKOUT">MASKOUT</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_KEEP">KEEP</a>=<i>string array</i>, <a href="#_file_interp_keyword_REMOVE">REMOVE</a>=<i>string array</i>, <a href="#_file_interp_keyword_METHOD">METHOD</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_SMOOTH">SMOOTH</a>=<i>scalar 0 or 1</i>, <a href="#_file_interp_keyword_SET_XDIMNAME">SET_XDIMNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_SET_YDIMNAME">SET_YDIMNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_SET_XAXISNAME">SET_XAXISNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_SET_YAXISNAME">SET_YAXISNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_INMASKNAME">INMASKNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_ININVMASK">ININVMASK</a>=<i>scalar: 0 or 1</i>, <a href="#_file_interp_keyword_INUSEASMASK">INUSEASMASK</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_INMISSING_VALUE">INMISSING_VALUE</a>=<i>scalar</i>, <a href="#_file_interp_keyword_INADDSCL_BEFORE">INADDSCL_BEFORE</a>=<i>scalar: 0 or 1</i>, <a href="#_file_interp_keyword_OUTMASKNAME">OUTMASKNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_OUTINVMASK">OUTINVMASK</a>=<i>scalar: 0 or 1</i>, <a href="#_file_interp_keyword_OUTUSEASMASK">OUTUSEASMASK</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_OUTMISSING_VALUE">OUTMISSING_VALUE</a>=<i>scalar</i>, <a href="#_file_interp_keyword_OUTADDSCL_BEFORE">OUTADDSCL_BEFORE</a>=<i>scalar: 0 or 1</i>, <a href="#_file_interp_keyword_NAN_VALUE">NAN_VALUE</a>=<i>scalar</i>, <a href="#_file_interp_keyword_WEIG">WEIG</a>=<i>2d array or variable name</i>, <a href="#_file_interp_keyword_ADDR">ADDR</a>=<i>2d array or variable name</i>, <a href="#_file_interp_keyword_INXAXISNAME">INXAXISNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_INYAXISNAME">INYAXISNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_OUTXAXISNAME">OUTXAXISNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_OUTYAXISNAME">OUTYAXISNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword__EXTRA">_EXTRA</a>=<i>_EXTRA</i></font></p>
+      <p><font face="Courier">file_interp<i>, <a href="#_file_interp_keyword_filein">filein</a>, <a href="#_file_interp_keyword_fileout">fileout</a>, <a href="#_file_interp_keyword_gridout">gridout</a></i>, <a href="#_file_interp_keyword_GRIDIN">GRIDIN</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_MASKIN">MASKIN</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_MASKOUT">MASKOUT</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_KEEP">KEEP</a>=<i>string array</i>, <a href="#_file_interp_keyword_REMOVE">REMOVE</a>=<i>string array</i>, <a href="#_file_interp_keyword_METHOD">METHOD</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_SMOOTH">SMOOTH</a>=<i>scalar 0 or 1</i>, <a href="#_file_interp_keyword_SET_XDIMNAME">SET_XDIMNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_SET_YDIMNAME">SET_YDIMNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_SET_XAXISNAME">SET_XAXISNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_SET_YAXISNAME">SET_YAXISNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_INMASKNAME">INMASKNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_ININVMASK">ININVMASK</a>=<i>scalar: 0 or 1</i>, <a href="#_file_interp_keyword_INUSEASMASK">INUSEASMASK</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_INMISSING_VALUE">INMISSING_VALUE</a>=<i>scalar</i>, <a href="#_file_interp_keyword_INADDSCL_BEFORE">INADDSCL_BEFORE</a>=<i>scalar: 0 or 1</i>, <a href="#_file_interp_keyword_INTESTOP">INTESTOP</a>=<i>scalar string, for example 'GT 0.5'</i>, <a href="#_file_interp_keyword_OUTMASKNAME">OUTMASKNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_OUTINVMASK">OUTINVMASK</a>=<i>scalar: 0 or 1</i>, <a href="#_file_interp_keyword_OUTUSEASMASK">OUTUSEASMASK</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_OUTMISSING_VALUE">OUTMISSING_VALUE</a>=<i>scalar</i>, <a href="#_file_interp_keyword_OUTADDSCL_BEFORE">OUTADDSCL_BEFORE</a>=<i>scalar: 0 or 1</i>, <a href="#_file_interp_keyword_OUTTESTOP">OUTTESTOP</a>=<i>scalar string, for example 'GT 0.5'</i>, <a href="#_file_interp_keyword_MISSING_VALUE">MISSING_VALUE</a>=<i>scalar</i>, <a href="#_file_interp_keyword_WEIG">WEIG</a>=<i>2d array or variable name</i>, <a href="#_file_interp_keyword_ADDR">ADDR</a>=<i>2d array or variable name</i>, <a href="#_file_interp_keyword_INXAXISNAME">INXAXISNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_INYAXISNAME">INYAXISNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_OUTXAXISNAME">OUTXAXISNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword_OUTYAXISNAME">OUTYAXISNAME</a>=<i>scalar string</i>, <a href="#_file_interp_keyword__EXTRA">_EXTRA</a>=<i>_EXTRA</i></font></p>
 
     
@@ -195,5 +195,5 @@
  determined through <a href="..//ReadWrite/ncdf_getmask.html">ncdf_getmask</a> according to the keywords
  outmaskname, outinvmask, outuseasmask, outmissing_value,
- outaddscl_before (see bellow)
+ outaddscl_before (see below).
 
     
@@ -387,11 +387,13 @@
 
     
- A string giving the name of the variable in the input mask file maskin
- that will be used to build the land/sea mask. In this case the
+ A string giving the name of the variable in the input mask file
+ that will be used to build the input 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
+ exists). The input mask is build according to operator defined by INTESTOP
+ keyword (default NE) and the testing values defined as 
+   1) the second word of TESTOP if existing
+   2) MISSING_VALUE keyword
+   3) attribute missing_value or _fillvalue of the variable USEASMASK
+   4) !Values.f_nan (can be used only with NE and EQ operators)
 
     
@@ -410,5 +412,9 @@
     
  To define (or redefine if the attribute is already existing) the
- missing values used by INUSEASMASK keyword
+ missing values used with INUSEASMASK keyword to build the input mask.
+ Note that this value is not used if INTESTOP keyword is given and
+ contains 2 words.
+ Note: do not mismatch with MISSING_VALUE used to detect missing
+ values at reach record.   
 
     
@@ -430,4 +436,29 @@
 
     
+    <a name="#_file_interp_keyword_INTESTOP"></a>
+    <h4>INTESTOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+      
+      
+      
+      
+      
+      <font size="-1" color="#006633">type:</font> <font size="-1" color="#006633"><i>scalar string, for example 'GT 0.5'</i></font>
+      <font size="-1" color="#006633">default:</font> <font size="-1" color="#006633"><i>'NE'</i></font>
+      
+    </h4>
+
+    
+ a string describing the type of test that will be done to define the
+ input mask. The test is performed on the variable specified by INUSEASMASK
+ keyword.
+ INTESTOP can contain 1 or 2 words. The first word is the operator
+ definition: "EQ" "NE" "GE" "GT" "LE" "LT" (default is NE). The
+ second word define the testing value. If INTESTOP contains only 1
+ word, then the test value is denifed by
+   1) INMISSING_VALUE keyword
+   2) attribute missing_value or _fillvalue of the variable INUSEASMASK
+   3) !Values.f_nan (can be used only with NE and EQ operators)
+
+    
     <a name="#_file_interp_keyword_OUTMASKNAME"></a>
     <h4>OUTMASKNAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -510,6 +541,22 @@
 
     
-    <a name="#_file_interp_keyword_NAN_VALUE"></a>
-    <h4>NAN_VALUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    <a name="#_file_interp_keyword_OUTTESTOP"></a>
+    <h4>OUTTESTOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+      
+      
+      
+      
+      
+      <font size="-1" color="#006633">type:</font> <font size="-1" color="#006633"><i>scalar string, for example 'GT 0.5'</i></font>
+      <font size="-1" color="#006633">default:</font> <font size="-1" color="#006633"><i>'NE'</i></font>
+      
+    </h4>
+
+    
+ same as INTESTOP but for output mask file maskout
+
+    
+    <a name="#_file_interp_keyword_MISSING_VALUE"></a>
+    <h4>MISSING_VALUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       
       
@@ -518,12 +565,16 @@
       
       <font size="-1" color="#006633">type:</font> <font size="-1" color="#006633"><i>scalar</i></font>
-      <font size="-1" color="#006633">default:</font> <font size="-1" color="#006633"><i>not used</i></font>
-      
-    </h4>
-
-    
- define the missing value in input data (missing values are treated
+      <font size="-1" color="#006633">default:</font> <font size="-1" color="#006633"><i>defined by attribute missing_value or _fillvalue</i></font>
+      
+    </h4>
+
+    
+ (Re)define the missing value in input data (missing values are treated
  like masked values and will be filled with extrapolation before
- interpolation).
+ interpolation). 
+ Note: do not mismatch with (IN/OUT)MISSING_VALUE which are missing value
+ used (in association with (IN/OUT)USEASMASK) to built the mask (that
+ does not change from one record to another).
+ Note: this value will be apply to all interpolated variables
 
     
@@ -654,10 +705,10 @@
  IDL> file_interp, filein, fileout, gridout, inxaxisname = 'lo', inyaxisname = 'la', keep = ['lo', 'la', 'cond_sed']
 
- IDL> file_interp, in, out, gdout, inuseasmask = 'sst', inmissing_value = -1.00000e+30, nan_value = -1000.00
+ IDL> file_interp, in, out, gdout, inuseasmask = 'sst', inmissing_value = -1.00000e+30, missing_value = -1000.00
 
     </pre><h3>Version history</h3>
     
     <h4>Version</h4>
- $Id: file_interp.pro 330 2008-02-01 16:28:24Z smasson $
+ $Id: file_interp.pro 362 2008-07-29 09:00:03Z smasson $
 
     <h4>History</h4>
@@ -673,7 +724,11 @@
 
  - perform only horizontal interpolations on scalar fields
- - will fill all masked and missing values before interpolation
+ - all masked and missing values are filled before interpolation
+   -> output data are not masked and have values everywhere.
  - attributes (like valid_min...) are not updated
  - see restrictions of <a href="..//Interpolation/fromreg.html">fromreg</a> and <a href="..//Interpolation/fromirr.html">fromirr</a>
+ - output mask is not used but, if the input file contains the mask
+   in a variable (defined by inmaskname), this variable will contain
+   the output mask in the ouput file
 
 
Index: /trunk/SRC/Documentation/idldoc_assistant_output/Interpolation/quadrilateral2square.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/Interpolation/quadrilateral2square.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/Interpolation/quadrilateral2square.html	(revision 363)
@@ -72,5 +72,5 @@
  The mapping is done using perspective transformation which preserve
  lines in all orientations and permit quadrilateral to quadrilateral
- mappings. see ref. bellow.
+ mappings. see ref. below.
 
 
@@ -315,5 +315,5 @@
     
     <h4>Version</h4>
- $Id: quadrilateral2square.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: quadrilateral2square.pro 358 2008-04-28 09:41:14Z pinsard $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/Interpolation/square2quadrilateral.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/Interpolation/square2quadrilateral.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/Interpolation/square2quadrilateral.html	(revision 363)
@@ -70,5 +70,5 @@
  The mapping is done using perspective transformation which preserve
  lines in all orientations and permit quadrilateral to quadrilateral
- mappings. see ref. bellow.
+ mappings. see ref. below.
 
 
@@ -294,5 +294,5 @@
     
     <h4>Version</h4>
- $Id: square2quadrilateral.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: square2quadrilateral.pro 358 2008-04-28 09:41:14Z pinsard $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/ReadWrite/ncdf_getatt.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/ReadWrite/ncdf_getatt.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/ReadWrite/ncdf_getatt.html	(revision 363)
@@ -297,5 +297,5 @@
     
     <h4>Version</h4>
- $Id: ncdf_getatt.pro 334 2008-03-07 14:39:18Z smasson $
+ $Id: ncdf_getatt.pro 344 2008-04-15 11:05:43Z smasson $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/ReadWrite/ncdf_getmask.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/ReadWrite/ncdf_getmask.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/ReadWrite/ncdf_getmask.html	(revision 363)
@@ -74,5 +74,5 @@
 </font></h2>
 
-      <p><font face="Courier"><i>result = </i>ncdf_getmask(<i><a href="#_ncdf_getmask_keyword_fileid">fileid</a></i>, <a href="#_ncdf_getmask_keyword_ADDSCL_BEFORE">ADDSCL_BEFORE</a>=<i>scalar: 0 or 1</i>, <a href="#_ncdf_getmask_keyword_MASKNAME">MASKNAME</a>=<i>string</i>, <a href="#_ncdf_getmask_keyword_USEASMASK">USEASMASK</a>=<i>scalar string</i>, <a href="#_ncdf_getmask_keyword_MISSING_VALUE">MISSING_VALUE</a>=<i>scalar</i>, <a href="#_ncdf_getmask_keyword_INVMASK">INVMASK</a>=<i>scalar: 0 or 1</i>, <a href="#_ncdf_getmask_keyword__EXTRA">_EXTRA</a>=<i>_EXTRA</i>)</font></p>
+      <p><font face="Courier"><i>result = </i>ncdf_getmask(<i><a href="#_ncdf_getmask_keyword_fileid">fileid</a></i>, <a href="#_ncdf_getmask_keyword_ADDSCL_BEFORE">ADDSCL_BEFORE</a>=<i>scalar: 0 or 1</i>, <a href="#_ncdf_getmask_keyword_MASKNAME">MASKNAME</a>=<i>string</i>, <a href="#_ncdf_getmask_keyword_USEASMASK">USEASMASK</a>=<i>scalar string</i>, <a href="#_ncdf_getmask_keyword_MISSING_VALUE">MISSING_VALUE</a>=<i>scalar</i>, <a href="#_ncdf_getmask_keyword_INVMASK">INVMASK</a>=<i>scalar: 0 or 1</i>, <a href="#_ncdf_getmask_keyword_TESTOP">TESTOP</a>=<i>scalar string, for example 'GT 0.5'</i>, <a href="#_ncdf_getmask_keyword__EXTRA">_EXTRA</a>=<i>_EXTRA</i>)</font></p>
 
     
@@ -164,8 +164,10 @@
  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
+ exists). The mask is build according to operator defined by TESTOP
+ keyword (default NE) and the testing values defined as 
+   1) the second word of TESTOP if existing
+   2) MISSING_VALUE keyword
+   3) attribute missing_value or _fillvalue of the variable USEASMASK
+   4) !Values.f_nan (can be used only with NE and EQ operators)
 
     
@@ -183,7 +185,7 @@
 
     
- To define (or redefine if the attribute is
- already existing) the missing values used with USEASMASK
- keyword
+ To define (or redefine if the attribute is already existing) the
+ missing values used with USEASMASK keyword. Note that this value is
+ not used if TESTOP keyword is given and contains 2 words.  
 
     
@@ -204,4 +206,29 @@
 
     
+    <a name="#_ncdf_getmask_keyword_TESTOP"></a>
+    <h4>TESTOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+      
+      
+      
+      
+      
+      <font size="-1" color="#006633">type:</font> <font size="-1" color="#006633"><i>scalar string, for example 'GT 0.5'</i></font>
+      <font size="-1" color="#006633">default:</font> <font size="-1" color="#006633"><i>'NE'</i></font>
+      
+    </h4>
+
+    
+ a string describing the type of test that will be done to define the
+ mask. The test is performed on the variable specified by USEASMASK
+ keyword.
+ TESTOP can contain 1 or 2 words. The first word is the operator
+ definition: "EQ" "NE" "GE" "GT" "LE" "LT" (default is NE). The
+ second word define the testing value. If TESTOP contains only 1
+ word, then the test value is denifed by
+   1) MISSING_VALUE keyword
+   2) attribute missing_value or _fillvalue of the variable USEASMASK
+   3) !Values.f_nan (can be used only with NE and EQ operators)
+
+    
     <a name="#_ncdf_getmask_keyword__EXTRA"></a>
     <h4>_EXTRA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@@ -227,8 +254,10 @@
  IDL> mask = ncdf_getmask('meshmaskORCA2.nc', maskname = 'tmask')
 
+ IDL> mask = ncdf_getmask('t106.nc', useasmask = 'SLM', testop = 'le 0.5')
+
     </pre><h3>Version history</h3>
     
     <h4>Version</h4>
- $Id: ncdf_getmask.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: ncdf_getmask.pro 361 2008-07-07 14:23:42Z smasson $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/ReadWrite/ncdf_gettime.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/ReadWrite/ncdf_gettime.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/ReadWrite/ncdf_gettime.html	(revision 363)
@@ -204,5 +204,5 @@
     
     <h4>Version</h4>
- $Id: ncdf_gettime.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: ncdf_gettime.pro 358 2008-04-28 09:41:14Z pinsard $
     <h4>History</h4>
  August 2007: Sebastien Masson (smasson@lodyc.jussieu.fr)
@@ -216,5 +216,5 @@
     <h4>Restrictions</h4>
  the calendar variable must have the units attribute
- following the syntax bellow:
+ following the syntax below:
 
  time_counter:units = "seconds since 0001-01-01 00:00:00" ;
Index: /trunk/SRC/Documentation/idldoc_assistant_output/ReadWrite/ncdf_timeget.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/ReadWrite/ncdf_timeget.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/ReadWrite/ncdf_timeget.html	(revision 363)
@@ -163,5 +163,5 @@
 
     
-    </pre></pre></pre></pre><h3>Version history</h3>
+    </pre></pre></pre></pre></pre><h3>Version history</h3>
     
     <h4>Version</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/LECTURE/read_ncdf.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/LECTURE/read_ncdf.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/LECTURE/read_ncdf.html	(revision 363)
@@ -441,5 +441,5 @@
     
     <h4>Version</h4>
- $Id: read_ncdf.pro 336 2008-03-20 21:36:46Z smasson $
+ $Id: read_ncdf.pro 337 2008-03-20 22:04:33Z smasson $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/PLOTS/DESSINE/pltz.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/PLOTS/DESSINE/pltz.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/PLOTS/DESSINE/pltz.html	(revision 363)
@@ -704,5 +704,5 @@
     
     <h4>Version</h4>
- $Id: pltz.pro 328 2007-12-13 19:27:11Z smasson $
+ $Id: pltz.pro 360 2008-06-06 13:43:54Z smasson $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/PLOTS/DIVERS/barrecouleur.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/PLOTS/DIVERS/barrecouleur.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/PLOTS/DIVERS/barrecouleur.html	(revision 363)
@@ -74,5 +74,5 @@
 </font></h2>
 
-      <p><font face="Courier">barrecouleur<i>, <a href="#_barrecouleur_keyword_colnumb">colnumb</a>, <a href="#_barrecouleur_keyword_clbinf">clbinf</a>, <a href="#_barrecouleur_keyword_clbsup">clbsup</a>, <a href="#_barrecouleur_keyword_clbdiv">clbdiv</a></i>, <a href="#_barrecouleur_keyword_NOCOLORBAR">NOCOLORBAR</a>=<i>NOCOLORBAR</i>, <a href="#_barrecouleur_keyword_CB_TITLE">CB_TITLE</a>=<i>CB_TITLE</i>, <a href="#_barrecouleur_keyword_NOFILL">NOFILL</a>=<i>NOFILL</i>, <a href="#_barrecouleur_keyword_COLOR_c">COLOR_c</a>=<i>COLOR_c</i>, <a href="#_barrecouleur_keyword_MIN">MIN</a>=<i>MIN</i>, <a href="#_barrecouleur_keyword_MAX">MAX</a>=<i>MAX</i>, <a href="#_barrecouleur_keyword_divisions">divisions</a>=<i>divisions</i>, <a href="#_barrecouleur_keyword_CB_SUBTITLE">CB_SUBTITLE</a>=<i>CB_SUBTITLE</i>, <a href="#_barrecouleur_keyword_POST">POST</a>=<i>POST</i>, <a href="#_barrecouleur_keyword__EXTRA">_EXTRA</a>=<i>_EXTRA</i></font></p>
+      <p><font face="Courier">barrecouleur<i>, <a href="#_barrecouleur_keyword_colnumb">colnumb</a>, <a href="#_barrecouleur_keyword_clbinf">clbinf</a>, <a href="#_barrecouleur_keyword_clbsup">clbsup</a>, <a href="#_barrecouleur_keyword_clbdiv">clbdiv</a></i>, <a href="#_barrecouleur_keyword_NOCOLORBAR">NOCOLORBAR</a>=<i>NOCOLORBAR</i>, <a href="#_barrecouleur_keyword_CB_TITLE">CB_TITLE</a>=<i>CB_TITLE</i>, <a href="#_barrecouleur_keyword_NOFILL">NOFILL</a>=<i>NOFILL</i>, <a href="#_barrecouleur_keyword_COLOR_c">COLOR_c</a>=<i>COLOR_c</i>, <a href="#_barrecouleur_keyword_MIN">MIN</a>=<i>MIN</i>, <a href="#_barrecouleur_keyword_MAX">MAX</a>=<i>MAX</i>, <a href="#_barrecouleur_keyword_DIVISIONS">DIVISIONS</a>=<i>DIVISIONS</i>, <a href="#_barrecouleur_keyword_CB_SUBTITLE">CB_SUBTITLE</a>=<i>CB_SUBTITLE</i>, <a href="#_barrecouleur_keyword_POST">POST</a>=<i>POST</i>, <a href="#_barrecouleur_keyword__EXTRA">_EXTRA</a>=<i>_EXTRA</i></font></p>
 
     
@@ -246,6 +246,6 @@
 
     
-    <a name="#_barrecouleur_keyword_divisions"></a>
-    <h4>divisions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    <a name="#_barrecouleur_keyword_DIVISIONS"></a>
+    <h4>DIVISIONS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       
       
@@ -313,5 +313,5 @@
     
     <h4>Version</h4>
- $Id: barrecouleur.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: barrecouleur.pro 358 2008-04-28 09:41:14Z pinsard $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/PLOTS/DIVERS/checkfield.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/PLOTS/DIVERS/checkfield.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/PLOTS/DIVERS/checkfield.html	(revision 363)
@@ -192,5 +192,5 @@
     
     <h4>Version</h4>
- $Id: checkfield.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: checkfield.pro 360 2008-06-06 13:43:54Z smasson $
 
     <h4>History</h4>
@@ -322,5 +322,5 @@
     
     <h4>Version</h4>
- $Id: checkfield.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: checkfield.pro 360 2008-06-06 13:43:54Z smasson $
 
     <h4>History</h4>
@@ -452,5 +452,5 @@
     
     <h4>Version</h4>
- $Id: checkfield.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: checkfield.pro 360 2008-06-06 13:43:54Z smasson $
 
     <h4>History</h4>
@@ -655,5 +655,5 @@
     
     <h4>Version</h4>
- $Id: checkfield.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: checkfield.pro 360 2008-06-06 13:43:54Z smasson $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/PLOTS/legende.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/PLOTS/legende.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/PLOTS/legende.html	(revision 363)
@@ -281,5 +281,5 @@
     
     <h4>Version</h4>
- $Id: legende.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: legende.pro 344 2008-04-15 11:05:43Z smasson $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/STATISTICS/a_timecorrelate.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/STATISTICS/a_timecorrelate.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/STATISTICS/a_timecorrelate.html	(revision 363)
@@ -202,5 +202,5 @@
     
     <h4>Version</h4>
- $Id: a_timecorrelate.pro 335 2008-03-07 15:09:25Z smasson $
+ $Id: a_timecorrelate.pro 342 2008-03-28 16:08:47Z smasson $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/STRING/getfile.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/STRING/getfile.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_assistant_output/ToBeReviewed/STRING/getfile.html	(revision 363)
@@ -72,5 +72,5 @@
       <h2>getfile  </h2>
 
-      <p><font face="Courier"><i>result = </i>getfile(<i><a href="#_getfile_keyword_filein">filein</a></i>, <a href="#_getfile_keyword_error">error</a>=<i>error</i>, <a href="#_getfile_keyword_HELP">HELP</a>=<i>HELP</i>, <a href="#_getfile_keyword_QUIET">QUIET</a>=<i>QUIET</i>, <a href="#_getfile_keyword_LINES">LINES</a>=<i>LINES</i>, <a href="#_getfile_keyword_FIND">FIND</a>=<i>FIND</i>)</font></p>
+      <p><font face="Courier"><i>result = </i>getfile(<i><a href="#_getfile_keyword_filein">filein</a></i>, <a href="#_getfile_keyword_ERROR">ERROR</a>=<i>ERROR</i>, <a href="#_getfile_keyword_HELP">HELP</a>=<i>HELP</i>, <a href="#_getfile_keyword_QUIET">QUIET</a>=<i>QUIET</i>, <a href="#_getfile_keyword_LINES">LINES</a>=<i>LINES</i>, <a href="#_getfile_keyword_FIND">FIND</a>=<i>FIND</i>)</font></p>
 
     
@@ -106,6 +106,6 @@
 
     
-    <a name="#_getfile_keyword_error"></a>
-    <h4>error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+    <a name="#_getfile_keyword_ERROR"></a>
+    <h4>ERROR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
       
       
@@ -195,5 +195,5 @@
     
     <h4>Version</h4>
- $Id: getfile.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: getfile.pro 358 2008-04-28 09:41:14Z pinsard $
 
     <h4>History</h4>
Index: /trunk/SRC/Documentation/idldoc_html_output/Colors/colorbar.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/Colors/colorbar.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/Colors/colorbar.html	(revision 363)
@@ -255,5 +255,5 @@
 	      
 	      
-	      <span class="attr">default:</span> <span class="value">see bellow</span>
+	      <span class="attr">default:</span> <span class="value">see below</span>
 	      
 	    </h4>
@@ -457,5 +457,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: colorbar.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: colorbar.pro 358 2008-04-28 09:41:14Z pinsard $
 </div>
 	  <h4>History</h4><div class="preformat">
Index: /trunk/SRC/Documentation/idldoc_html_output/Grid/ncdf_meshread.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/Grid/ncdf_meshread.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/Grid/ncdf_meshread.html	(revision 363)
@@ -303,5 +303,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: ncdf_meshread.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: ncdf_meshread.pro 359 2008-06-05 13:06:39Z smasson $
 </div>
 	  <h4>History</h4><div class="preformat">
@@ -340,5 +340,5 @@
 	  <h3>Statistics</h3>
 	  <table class="statistics">
-	    <tr><td>McCabe cyclic</td><td>          95</td></tr>
+	    <tr><td>McCabe cyclic</td><td>          99</td></tr>
 	    <tr><td>McCabe essential</td><td>           1</td></tr>
 	    <tr><td>McCabe modular design</td><td>           1</td></tr>
Index: /trunk/SRC/Documentation/idldoc_html_output/Interpolation/file_interp.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/Interpolation/file_interp.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/Interpolation/file_interp.html	(revision 363)
@@ -109,5 +109,5 @@
 	
 	  <p class="header">
-	    file_interp<span class="result">, <a href="#_file_interp_param_filein">filein</a>, <a href="#_file_interp_param_fileout">fileout</a>, <a href="#_file_interp_param_gridout">gridout</a></span>, <a href="#_file_interp_keyword_GRIDIN">GRIDIN</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_MASKIN">MASKIN</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_MASKOUT">MASKOUT</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_KEEP">KEEP</a>=<span class="result">string array</span>, <a href="#_file_interp_keyword_REMOVE">REMOVE</a>=<span class="result">string array</span>, <a href="#_file_interp_keyword_METHOD">METHOD</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_SMOOTH">SMOOTH</a>=<span class="result">scalar 0 or 1</span>, <a href="#_file_interp_keyword_SET_XDIMNAME">SET_XDIMNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_SET_YDIMNAME">SET_YDIMNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_SET_XAXISNAME">SET_XAXISNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_SET_YAXISNAME">SET_YAXISNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_INMASKNAME">INMASKNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_ININVMASK">ININVMASK</a>=<span class="result">scalar: 0 or 1</span>, <a href="#_file_interp_keyword_INUSEASMASK">INUSEASMASK</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_INMISSING_VALUE">INMISSING_VALUE</a>=<span class="result">scalar</span>, <a href="#_file_interp_keyword_INADDSCL_BEFORE">INADDSCL_BEFORE</a>=<span class="result">scalar: 0 or 1</span>, <a href="#_file_interp_keyword_OUTMASKNAME">OUTMASKNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_OUTINVMASK">OUTINVMASK</a>=<span class="result">scalar: 0 or 1</span>, <a href="#_file_interp_keyword_OUTUSEASMASK">OUTUSEASMASK</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_OUTMISSING_VALUE">OUTMISSING_VALUE</a>=<span class="result">scalar</span>, <a href="#_file_interp_keyword_OUTADDSCL_BEFORE">OUTADDSCL_BEFORE</a>=<span class="result">scalar: 0 or 1</span>, <a href="#_file_interp_keyword_NAN_VALUE">NAN_VALUE</a>=<span class="result">scalar</span>, <a href="#_file_interp_keyword_WEIG">WEIG</a>=<span class="result">2d array or variable name</span>, <a href="#_file_interp_keyword_ADDR">ADDR</a>=<span class="result">2d array or variable name</span>, <a href="#_file_interp_keyword_INXAXISNAME">INXAXISNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_INYAXISNAME">INYAXISNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_OUTXAXISNAME">OUTXAXISNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_OUTYAXISNAME">OUTYAXISNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span></p>
+	    file_interp<span class="result">, <a href="#_file_interp_param_filein">filein</a>, <a href="#_file_interp_param_fileout">fileout</a>, <a href="#_file_interp_param_gridout">gridout</a></span>, <a href="#_file_interp_keyword_GRIDIN">GRIDIN</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_MASKIN">MASKIN</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_MASKOUT">MASKOUT</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_KEEP">KEEP</a>=<span class="result">string array</span>, <a href="#_file_interp_keyword_REMOVE">REMOVE</a>=<span class="result">string array</span>, <a href="#_file_interp_keyword_METHOD">METHOD</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_SMOOTH">SMOOTH</a>=<span class="result">scalar 0 or 1</span>, <a href="#_file_interp_keyword_SET_XDIMNAME">SET_XDIMNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_SET_YDIMNAME">SET_YDIMNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_SET_XAXISNAME">SET_XAXISNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_SET_YAXISNAME">SET_YAXISNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_INMASKNAME">INMASKNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_ININVMASK">ININVMASK</a>=<span class="result">scalar: 0 or 1</span>, <a href="#_file_interp_keyword_INUSEASMASK">INUSEASMASK</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_INMISSING_VALUE">INMISSING_VALUE</a>=<span class="result">scalar</span>, <a href="#_file_interp_keyword_INADDSCL_BEFORE">INADDSCL_BEFORE</a>=<span class="result">scalar: 0 or 1</span>, <a href="#_file_interp_keyword_INTESTOP">INTESTOP</a>=<span class="result">scalar string, for example 'GT 0.5'</span>, <a href="#_file_interp_keyword_OUTMASKNAME">OUTMASKNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_OUTINVMASK">OUTINVMASK</a>=<span class="result">scalar: 0 or 1</span>, <a href="#_file_interp_keyword_OUTUSEASMASK">OUTUSEASMASK</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_OUTMISSING_VALUE">OUTMISSING_VALUE</a>=<span class="result">scalar</span>, <a href="#_file_interp_keyword_OUTADDSCL_BEFORE">OUTADDSCL_BEFORE</a>=<span class="result">scalar: 0 or 1</span>, <a href="#_file_interp_keyword_OUTTESTOP">OUTTESTOP</a>=<span class="result">scalar string, for example 'GT 0.5'</span>, <a href="#_file_interp_keyword_MISSING_VALUE">MISSING_VALUE</a>=<span class="result">scalar</span>, <a href="#_file_interp_keyword_WEIG">WEIG</a>=<span class="result">2d array or variable name</span>, <a href="#_file_interp_keyword_ADDR">ADDR</a>=<span class="result">2d array or variable name</span>, <a href="#_file_interp_keyword_INXAXISNAME">INXAXISNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_INYAXISNAME">INYAXISNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_OUTXAXISNAME">OUTXAXISNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword_OUTYAXISNAME">OUTYAXISNAME</a>=<span class="result">scalar string</span>, <a href="#_file_interp_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span></p>
 	
 	  <div class="comments">
@@ -223,5 +223,5 @@
  determined through <a href="..//ReadWrite/ncdf_getmask.html">ncdf_getmask</a> according to the keywords
  outmaskname, outinvmask, outuseasmask, outmissing_value,
- outaddscl_before (see bellow)
+ outaddscl_before (see below).
 </div>
 	    
@@ -404,11 +404,13 @@
 	
 	    <div class="comments">
- A string giving the name of the variable in the input mask file maskin
- that will be used to build the land/sea mask. In this case the
+ A string giving the name of the variable in the input mask file
+ that will be used to build the input 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
+ exists). The input mask is build according to operator defined by INTESTOP
+ keyword (default NE) and the testing values defined as 
+   1) the second word of TESTOP if existing
+   2) MISSING_VALUE keyword
+   3) attribute missing_value or _fillvalue of the variable USEASMASK
+   4) !Values.f_nan (can be used only with NE and EQ operators)
 </div>
 	    
@@ -426,5 +428,9 @@
 	    <div class="comments">
  To define (or redefine if the attribute is already existing) the
- missing values used by INUSEASMASK keyword
+ missing values used with INUSEASMASK keyword to build the input mask.
+ Note that this value is not used if INTESTOP keyword is given and
+ contains 2 words.
+ Note: do not mismatch with MISSING_VALUE used to detect missing
+ values at reach record.   
 </div>
 	    
@@ -445,4 +451,28 @@
 </div>
 	    
+	    <h4 id="_file_interp_keyword_INTESTOP">INTESTOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      
+	      
+	      
+  	      
+	      
+	      <span class="attr">type:</span> <span class="value">scalar string, for example 'GT 0.5'</span>
+	      <span class="attr">default:</span> <span class="value">'NE'</span>
+	      
+	    </h4>
+	
+	    <div class="comments">
+ a string describing the type of test that will be done to define the
+ input mask. The test is performed on the variable specified by INUSEASMASK
+ keyword.
+ INTESTOP can contain 1 or 2 words. The first word is the operator
+ definition: "EQ" "NE" "GE" "GT" "LE" "LT" (default is NE). The
+ second word define the testing value. If INTESTOP contains only 1
+ word, then the test value is denifed by
+   1) INMISSING_VALUE keyword
+   2) attribute missing_value or _fillvalue of the variable INUSEASMASK
+   3) !Values.f_nan (can be used only with NE and EQ operators)
+</div>
+	    
 	    <h4 id="_file_interp_keyword_OUTMASKNAME">OUTMASKNAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 	      
@@ -520,5 +550,20 @@
 </div>
 	    
-	    <h4 id="_file_interp_keyword_NAN_VALUE">NAN_VALUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	    <h4 id="_file_interp_keyword_OUTTESTOP">OUTTESTOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      
+	      
+	      
+  	      
+	      
+	      <span class="attr">type:</span> <span class="value">scalar string, for example 'GT 0.5'</span>
+	      <span class="attr">default:</span> <span class="value">'NE'</span>
+	      
+	    </h4>
+	
+	    <div class="comments">
+ same as INTESTOP but for output mask file maskout
+</div>
+	    
+	    <h4 id="_file_interp_keyword_MISSING_VALUE">MISSING_VALUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 	      
 	      
@@ -527,12 +572,16 @@
 	      
 	      <span class="attr">type:</span> <span class="value">scalar</span>
-	      <span class="attr">default:</span> <span class="value">not used</span>
-	      
-	    </h4>
-	
-	    <div class="comments">
- define the missing value in input data (missing values are treated
+	      <span class="attr">default:</span> <span class="value">defined by attribute missing_value or _fillvalue</span>
+	      
+	    </h4>
+	
+	    <div class="comments">
+ (Re)define the missing value in input data (missing values are treated
  like masked values and will be filled with extrapolation before
- interpolation).
+ interpolation). 
+ Note: do not mismatch with (IN/OUT)MISSING_VALUE which are missing value
+ used (in association with (IN/OUT)USEASMASK) to built the mask (that
+ does not change from one record to another).
+ Note: this value will be apply to all interpolated variables
 </div>
 	    
@@ -656,10 +705,10 @@
  IDL> file_interp, filein, fileout, gridout, inxaxisname = 'lo', inyaxisname = 'la', keep = ['lo', 'la', 'cond_sed']
 
- IDL> file_interp, in, out, gdout, inuseasmask = 'sst', inmissing_value = -1.00000e+30, nan_value = -1000.00
+ IDL> file_interp, in, out, gdout, inuseasmask = 'sst', inmissing_value = -1.00000e+30, missing_value = -1000.00
 </div>
 	  <h3>Version history</h3>
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: file_interp.pro 330 2008-02-01 16:28:24Z smasson $
+ $Id: file_interp.pro 362 2008-07-29 09:00:03Z smasson $
 </div>
 	  <h4>History</h4><div class="preformat">
@@ -675,7 +724,11 @@
 
  - perform only horizontal interpolations on scalar fields
- - will fill all masked and missing values before interpolation
+ - all masked and missing values are filled before interpolation
+   -> output data are not masked and have values everywhere.
  - attributes (like valid_min...) are not updated
  - see restrictions of <a href="..//Interpolation/fromreg.html">fromreg</a> and <a href="..//Interpolation/fromirr.html">fromirr</a>
+ - output mask is not used but, if the input file contains the mask
+   in a variable (defined by inmaskname), this variable will contain
+   the output mask in the ouput file
 </div>
 	
@@ -692,5 +745,5 @@
 	  <h3>Statistics</h3>
 	  <table class="statistics">
-	    <tr><td>McCabe cyclic</td><td>          68</td></tr>
+	    <tr><td>McCabe cyclic</td><td>          69</td></tr>
 	    <tr><td>McCabe essential</td><td>           1</td></tr>
 	    <tr><td>McCabe modular design</td><td>           1</td></tr>
Index: /trunk/SRC/Documentation/idldoc_html_output/Interpolation/quadrilateral2square.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/Interpolation/quadrilateral2square.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/Interpolation/quadrilateral2square.html	(revision 363)
@@ -98,5 +98,5 @@
  The mapping is done using perspective transformation which preserve
  lines in all orientations and permit quadrilateral to quadrilateral
- mappings. see ref. bellow.
+ mappings. see ref. below.
 </div>
 
@@ -330,5 +330,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: quadrilateral2square.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: quadrilateral2square.pro 358 2008-04-28 09:41:14Z pinsard $
 </div>
 	  <h4>History</h4><div class="preformat">
Index: /trunk/SRC/Documentation/idldoc_html_output/Interpolation/square2quadrilateral.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/Interpolation/square2quadrilateral.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/Interpolation/square2quadrilateral.html	(revision 363)
@@ -96,5 +96,5 @@
  The mapping is done using perspective transformation which preserve
  lines in all orientations and permit quadrilateral to quadrilateral
- mappings. see ref. bellow.
+ mappings. see ref. below.
 </div>
 
@@ -310,5 +310,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: square2quadrilateral.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: square2quadrilateral.pro 358 2008-04-28 09:41:14Z pinsard $
 </div>
 	  <h4>History</h4><div class="preformat">
Index: /trunk/SRC/Documentation/idldoc_html_output/ReadWrite/ncdf_getatt.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/ReadWrite/ncdf_getatt.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/ReadWrite/ncdf_getatt.html	(revision 363)
@@ -321,5 +321,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: ncdf_getatt.pro 334 2008-03-07 14:39:18Z smasson $
+ $Id: ncdf_getatt.pro 344 2008-04-15 11:05:43Z smasson $
 </div>
 	  <h4>History</h4><div class="preformat">
@@ -344,5 +344,5 @@
 	  <h3>Statistics</h3>
 	  <table class="statistics">
-	    <tr><td>McCabe cyclic</td><td>          22</td></tr>
+	    <tr><td>McCabe cyclic</td><td>          25</td></tr>
 	    <tr><td>McCabe essential</td><td>           1</td></tr>
 	    <tr><td>McCabe modular design</td><td>           1</td></tr>
Index: /trunk/SRC/Documentation/idldoc_html_output/ReadWrite/ncdf_getmask.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/ReadWrite/ncdf_getmask.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/ReadWrite/ncdf_getmask.html	(revision 363)
@@ -109,5 +109,5 @@
 	
 	  <p class="header">
-	    <span class="result">result = </span>ncdf_getmask(<span class="result"><a href="#_ncdf_getmask_param_fileid">fileid</a></span>, <a href="#_ncdf_getmask_keyword_ADDSCL_BEFORE">ADDSCL_BEFORE</a>=<span class="result">scalar: 0 or 1</span>, <a href="#_ncdf_getmask_keyword_MASKNAME">MASKNAME</a>=<span class="result">string</span>, <a href="#_ncdf_getmask_keyword_USEASMASK">USEASMASK</a>=<span class="result">scalar string</span>, <a href="#_ncdf_getmask_keyword_MISSING_VALUE">MISSING_VALUE</a>=<span class="result">scalar</span>, <a href="#_ncdf_getmask_keyword_INVMASK">INVMASK</a>=<span class="result">scalar: 0 or 1</span>, <a href="#_ncdf_getmask_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span>)</p>
+	    <span class="result">result = </span>ncdf_getmask(<span class="result"><a href="#_ncdf_getmask_param_fileid">fileid</a></span>, <a href="#_ncdf_getmask_keyword_ADDSCL_BEFORE">ADDSCL_BEFORE</a>=<span class="result">scalar: 0 or 1</span>, <a href="#_ncdf_getmask_keyword_MASKNAME">MASKNAME</a>=<span class="result">string</span>, <a href="#_ncdf_getmask_keyword_USEASMASK">USEASMASK</a>=<span class="result">scalar string</span>, <a href="#_ncdf_getmask_keyword_MISSING_VALUE">MISSING_VALUE</a>=<span class="result">scalar</span>, <a href="#_ncdf_getmask_keyword_INVMASK">INVMASK</a>=<span class="result">scalar: 0 or 1</span>, <a href="#_ncdf_getmask_keyword_TESTOP">TESTOP</a>=<span class="result">scalar string, for example 'GT 0.5'</span>, <a href="#_ncdf_getmask_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span>)</p>
 	
 	  <div class="comments">
@@ -196,8 +196,10 @@
  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
+ exists). The mask is build according to operator defined by TESTOP
+ keyword (default NE) and the testing values defined as 
+   1) the second word of TESTOP if existing
+   2) MISSING_VALUE keyword
+   3) attribute missing_value or _fillvalue of the variable USEASMASK
+   4) !Values.f_nan (can be used only with NE and EQ operators)
 </div>
 	    
@@ -214,7 +216,7 @@
 	
 	    <div class="comments">
- To define (or redefine if the attribute is
- already existing) the missing values used with USEASMASK
- keyword
+ To define (or redefine if the attribute is already existing) the
+ missing values used with USEASMASK keyword. Note that this value is
+ not used if TESTOP keyword is given and contains 2 words.  
 </div>
 	    
@@ -234,4 +236,28 @@
 </div>
 	    
+	    <h4 id="_ncdf_getmask_keyword_TESTOP">TESTOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	      
+	      
+	      
+  	      
+	      
+	      <span class="attr">type:</span> <span class="value">scalar string, for example 'GT 0.5'</span>
+	      <span class="attr">default:</span> <span class="value">'NE'</span>
+	      
+	    </h4>
+	
+	    <div class="comments">
+ a string describing the type of test that will be done to define the
+ mask. The test is performed on the variable specified by USEASMASK
+ keyword.
+ TESTOP can contain 1 or 2 words. The first word is the operator
+ definition: "EQ" "NE" "GE" "GT" "LE" "LT" (default is NE). The
+ second word define the testing value. If TESTOP contains only 1
+ word, then the test value is denifed by
+   1) MISSING_VALUE keyword
+   2) attribute missing_value or _fillvalue of the variable USEASMASK
+   3) !Values.f_nan (can be used only with NE and EQ operators)
+</div>
+	    
 	    <h4 id="_ncdf_getmask_keyword__EXTRA">_EXTRA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 	      
@@ -255,9 +281,11 @@
 
  IDL> mask = ncdf_getmask('meshmaskORCA2.nc', maskname = 'tmask')
+
+ IDL> mask = ncdf_getmask('t106.nc', useasmask = 'SLM', testop = 'le 0.5')
 </div>
 	  <h3>Version history</h3>
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: ncdf_getmask.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: ncdf_getmask.pro 361 2008-07-07 14:23:42Z smasson $
 </div>
 	  <h4>History</h4><div class="preformat">
@@ -282,5 +310,5 @@
 	  <h3>Statistics</h3>
 	  <table class="statistics">
-	    <tr><td>McCabe cyclic</td><td>          24</td></tr>
+	    <tr><td>McCabe cyclic</td><td>          34</td></tr>
 	    <tr><td>McCabe essential</td><td>           1</td></tr>
 	    <tr><td>McCabe modular design</td><td>           1</td></tr>
Index: /trunk/SRC/Documentation/idldoc_html_output/ReadWrite/ncdf_gettime.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/ReadWrite/ncdf_gettime.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/ReadWrite/ncdf_gettime.html	(revision 363)
@@ -233,5 +233,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: ncdf_gettime.pro 327 2007-12-13 16:22:35Z pinsard $</div>
+ $Id: ncdf_gettime.pro 358 2008-04-28 09:41:14Z pinsard $</div>
 	  <h4>History</h4><div class="preformat">
  August 2007: Sebastien Masson (smasson@lodyc.jussieu.fr)
@@ -245,5 +245,5 @@
 	  <h4>Restrictions</h4><div class="preformat">
  the calendar variable must have the units attribute
- following the syntax bellow:
+ following the syntax below:
 
  time_counter:units = "seconds since 0001-01-01 00:00:00" ;
@@ -264,5 +264,5 @@
 	  <h3>Statistics</h3>
 	  <table class="statistics">
-	    <tr><td>McCabe cyclic</td><td>          42</td></tr>
+	    <tr><td>McCabe cyclic</td><td>          39</td></tr>
 	    <tr><td>McCabe essential</td><td>           1</td></tr>
 	    <tr><td>McCabe modular design</td><td>           1</td></tr>
Index: /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/LECTURE/read_ncdf.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/LECTURE/read_ncdf.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/LECTURE/read_ncdf.html	(revision 363)
@@ -454,5 +454,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: read_ncdf.pro 336 2008-03-20 21:36:46Z smasson $
+ $Id: read_ncdf.pro 337 2008-03-20 22:04:33Z smasson $
 </div>
 	  <h4>History</h4><div class="preformat">
Index: /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/pltz.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/pltz.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/pltz.html	(revision 363)
@@ -702,5 +702,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: pltz.pro 328 2007-12-13 19:27:11Z smasson $
+ $Id: pltz.pro 360 2008-06-06 13:43:54Z smasson $
 </div>
 	  <h4>History</h4><div class="preformat">
Index: /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/barrecouleur.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/barrecouleur.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/barrecouleur.html	(revision 363)
@@ -109,5 +109,5 @@
 	
 	  <p class="header">
-	    barrecouleur<span class="result">, <a href="#_barrecouleur_param_colnumb">colnumb</a>, <a href="#_barrecouleur_param_clbinf">clbinf</a>, <a href="#_barrecouleur_param_clbsup">clbsup</a>, <a href="#_barrecouleur_param_clbdiv">clbdiv</a></span>, <a href="#_barrecouleur_keyword_NOCOLORBAR">NOCOLORBAR</a>=<span class="result">NOCOLORBAR</span>, <a href="#_barrecouleur_keyword_CB_TITLE">CB_TITLE</a>=<span class="result">CB_TITLE</span>, <a href="#_barrecouleur_keyword_NOFILL">NOFILL</a>=<span class="result">NOFILL</span>, <a href="#_barrecouleur_keyword_COLOR_c">COLOR_c</a>=<span class="result">COLOR_c</span>, <a href="#_barrecouleur_keyword_MIN">MIN</a>=<span class="result">MIN</span>, <a href="#_barrecouleur_keyword_MAX">MAX</a>=<span class="result">MAX</span>, <a href="#_barrecouleur_keyword_divisions">divisions</a>=<span class="result">divisions</span>, <a href="#_barrecouleur_keyword_CB_SUBTITLE">CB_SUBTITLE</a>=<span class="result">CB_SUBTITLE</span>, <a href="#_barrecouleur_keyword_POST">POST</a>=<span class="result">POST</span>, <a href="#_barrecouleur_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span></p>
+	    barrecouleur<span class="result">, <a href="#_barrecouleur_param_colnumb">colnumb</a>, <a href="#_barrecouleur_param_clbinf">clbinf</a>, <a href="#_barrecouleur_param_clbsup">clbsup</a>, <a href="#_barrecouleur_param_clbdiv">clbdiv</a></span>, <a href="#_barrecouleur_keyword_NOCOLORBAR">NOCOLORBAR</a>=<span class="result">NOCOLORBAR</span>, <a href="#_barrecouleur_keyword_CB_TITLE">CB_TITLE</a>=<span class="result">CB_TITLE</span>, <a href="#_barrecouleur_keyword_NOFILL">NOFILL</a>=<span class="result">NOFILL</span>, <a href="#_barrecouleur_keyword_COLOR_c">COLOR_c</a>=<span class="result">COLOR_c</span>, <a href="#_barrecouleur_keyword_MIN">MIN</a>=<span class="result">MIN</span>, <a href="#_barrecouleur_keyword_MAX">MAX</a>=<span class="result">MAX</span>, <a href="#_barrecouleur_keyword_DIVISIONS">DIVISIONS</a>=<span class="result">DIVISIONS</span>, <a href="#_barrecouleur_keyword_CB_SUBTITLE">CB_SUBTITLE</a>=<span class="result">CB_SUBTITLE</span>, <a href="#_barrecouleur_keyword_POST">POST</a>=<span class="result">POST</span>, <a href="#_barrecouleur_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span></p>
 	
 	  <div class="comments">
@@ -269,5 +269,5 @@
 </div>
 	    
-	    <h4 id="_barrecouleur_keyword_divisions">divisions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	    <h4 id="_barrecouleur_keyword_DIVISIONS">DIVISIONS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 	      
 	      
@@ -332,5 +332,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: barrecouleur.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: barrecouleur.pro 358 2008-04-28 09:41:14Z pinsard $
 </div>
 	  <h4>History</h4><div class="preformat">
Index: /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/checkfield.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/checkfield.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/checkfield.html	(revision 363)
@@ -221,5 +221,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: checkfield.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: checkfield.pro 360 2008-06-06 13:43:54Z smasson $
 </div>
 	  <h4>History</h4><div class="preformat">
@@ -352,5 +352,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: checkfield.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: checkfield.pro 360 2008-06-06 13:43:54Z smasson $
 </div>
 	  <h4>History</h4><div class="preformat">
@@ -483,5 +483,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: checkfield.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: checkfield.pro 360 2008-06-06 13:43:54Z smasson $
 </div>
 	  <h4>History</h4><div class="preformat">
@@ -686,5 +686,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: checkfield.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: checkfield.pro 360 2008-06-06 13:43:54Z smasson $
 </div>
 	  <h4>History</h4><div class="preformat">
@@ -713,5 +713,5 @@
 	  <h3>Statistics</h3>
 	  <table class="statistics">
-	    <tr><td>McCabe cyclic</td><td>         120</td></tr>
+	    <tr><td>McCabe cyclic</td><td>         121</td></tr>
 	    <tr><td>McCabe essential</td><td>           1</td></tr>
 	    <tr><td>McCabe modular design</td><td>           1</td></tr>
Index: /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/legende.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/legende.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/legende.html	(revision 363)
@@ -303,5 +303,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: legende.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: legende.pro 344 2008-04-15 11:05:43Z smasson $
 </div>
 	  <h4>History</h4><div class="preformat">
@@ -333,5 +333,5 @@
 	  <h3>Statistics</h3>
 	  <table class="statistics">
-	    <tr><td>McCabe cyclic</td><td>          67</td></tr>
+	    <tr><td>McCabe cyclic</td><td>          65</td></tr>
 	    <tr><td>McCabe essential</td><td>           1</td></tr>
 	    <tr><td>McCabe modular design</td><td>           1</td></tr>
Index: /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STATISTICS/a_timecorrelate.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STATISTICS/a_timecorrelate.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STATISTICS/a_timecorrelate.html	(revision 363)
@@ -232,5 +232,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: a_timecorrelate.pro 335 2008-03-07 15:09:25Z smasson $
+ $Id: a_timecorrelate.pro 342 2008-03-28 16:08:47Z smasson $
 </div>
 	  <h4>History</h4><div class="preformat">
Index: /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/getfile.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/getfile.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/getfile.html	(revision 363)
@@ -107,5 +107,5 @@
 	
 	  <p class="header">
-	    <span class="result">result = </span>getfile(<span class="result"><a href="#_getfile_param_filein">filein</a></span>, <a href="#_getfile_keyword_error">error</a>=<span class="result">error</span>, <a href="#_getfile_keyword_HELP">HELP</a>=<span class="result">HELP</span>, <a href="#_getfile_keyword_QUIET">QUIET</a>=<span class="result">QUIET</span>, <a href="#_getfile_keyword_LINES">LINES</a>=<span class="result">LINES</span>, <a href="#_getfile_keyword_FIND">FIND</a>=<span class="result">FIND</span>)</p>
+	    <span class="result">result = </span>getfile(<span class="result"><a href="#_getfile_param_filein">filein</a></span>, <a href="#_getfile_keyword_ERROR">ERROR</a>=<span class="result">ERROR</span>, <a href="#_getfile_keyword_HELP">HELP</a>=<span class="result">HELP</span>, <a href="#_getfile_keyword_QUIET">QUIET</a>=<span class="result">QUIET</span>, <a href="#_getfile_keyword_LINES">LINES</a>=<span class="result">LINES</span>, <a href="#_getfile_keyword_FIND">FIND</a>=<span class="result">FIND</span>)</p>
 	
 	  <div class="comments">
@@ -141,5 +141,5 @@
 	    <h3>Keywords</h3>
 	    
-	    <h4 id="_getfile_keyword_error">error&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	    <h4 id="_getfile_keyword_ERROR">ERROR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 	      
 	      
@@ -225,5 +225,5 @@
 	  
 	  <h4>Version</h4><div class="preformat">
- $Id: getfile.pro 327 2007-12-13 16:22:35Z pinsard $
+ $Id: getfile.pro 358 2008-04-28 09:41:14Z pinsard $
 </div>
 	  <h4>History</h4><div class="preformat">
Index: /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-D.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-D.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-D.html	(revision 363)
@@ -283,16 +283,19 @@
 	<dd>a keyword from the routine neighbor</dd>
 	
+	<dt><a href="./Picture/showimage.html#_showimage">DITHER</a></dt>
+	<dd>a keyword from the routine showimage</dd>
+	
+	<dt><a href="./Picture/imdisp.html#_imdisp">DITHER</a></dt>
+	<dd>a keyword from the routine imdisp</dd>
+	
 	<dt><a href="./Picture/saveimage.html#_saveimage">DITHER</a></dt>
 	<dd>a keyword from the routine saveimage</dd>
 	
-	<dt><a href="./Picture/imdisp.html#_imdisp">DITHER</a></dt>
-	<dd>a keyword from the routine imdisp</dd>
-	
-	<dt><a href="./Picture/showimage.html#_showimage">DITHER</a></dt>
-	<dd>a keyword from the routine showimage</dd>
-	
 	<dt><a href="./Colors/colorbar.html#_colorbar">DIVISIONS</a></dt>
 	<dd>a keyword from the routine colorbar</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html#_barrecouleur">DIVISIONS</a></dt>
+	<dd>a keyword from the routine barrecouleur</dd>
+	
 	<dt><a href="./ReadWrite/write_ncdf.html#_writenc_unlimdim_update">DNAMAU</a></dt>
 	<dd>a keyword from the routine writenc_unlimdim_update</dd>
@@ -304,37 +307,37 @@
 	<dd>a keyword from the routine velovect</dd>
 	
+	<dt><a href="./Obsolete/meshlec.html#_meshlec">DOUBLE</a></dt>
+	<dd>a keyword from the routine meshlec</dd>
+	
+	<dt><a href="./Interpolation/square2quadrilateral.html#_square2quadrilateral">DOUBLE</a></dt>
+	<dd>a keyword from the routine square2quadrilateral</dd>
+	
+	<dt><a href="./ToBeReviewed/STATISTICS/skewness_4d.html#_skewness_4d">DOUBLE</a></dt>
+	<dd>a keyword from the routine skewness_4d</dd>
+	
+	<dt><a href="./Interpolation/quadrilateral2square.html#_quadrilateral2square">DOUBLE</a></dt>
+	<dd>a keyword from the routine quadrilateral2square</dd>
+	
+	<dt><a href="./Interpolation/inquad.html#_inquad">DOUBLE</a></dt>
+	<dd>a keyword from the routine inquad</dd>
+	
+	<dt><a href="./Interpolation/get_gridparams.html#_get_gridparams">DOUBLE</a></dt>
+	<dd>a keyword from the routine get_gridparams</dd>
+	
+	<dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html#_a_correlate2d">DOUBLE</a></dt>
+	<dd>a keyword from the routine a_correlate2d</dd>
+	
+	<dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html#_auto_cov2d">DOUBLE</a></dt>
+	<dd>a keyword from the routine auto_cov2d</dd>
+	
+	<dt><a href="./Matrix/cmapply.html#_cmapply">DOUBLE</a></dt>
+	<dd>a keyword from the routine cmapply</dd>
+	
+	<dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html#_timecross_cov">DOUBLE</a></dt>
+	<dd>a keyword from the routine timecross_cov</dd>
+	
 	<dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html#_c_timecorrelate">DOUBLE</a></dt>
 	<dd>a keyword from the routine c_timecorrelate</dd>
 	
-	<dt><a href="./Obsolete/meshlec.html#_meshlec">DOUBLE</a></dt>
-	<dd>a keyword from the routine meshlec</dd>
-	
-	<dt><a href="./Interpolation/square2quadrilateral.html#_square2quadrilateral">DOUBLE</a></dt>
-	<dd>a keyword from the routine square2quadrilateral</dd>
-	
-	<dt><a href="./ToBeReviewed/STATISTICS/skewness_4d.html#_skewness_4d">DOUBLE</a></dt>
-	<dd>a keyword from the routine skewness_4d</dd>
-	
-	<dt><a href="./Interpolation/quadrilateral2square.html#_quadrilateral2square">DOUBLE</a></dt>
-	<dd>a keyword from the routine quadrilateral2square</dd>
-	
-	<dt><a href="./Interpolation/inquad.html#_inquad">DOUBLE</a></dt>
-	<dd>a keyword from the routine inquad</dd>
-	
-	<dt><a href="./Interpolation/get_gridparams.html#_get_gridparams">DOUBLE</a></dt>
-	<dd>a keyword from the routine get_gridparams</dd>
-	
-	<dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html#_a_correlate2d">DOUBLE</a></dt>
-	<dd>a keyword from the routine a_correlate2d</dd>
-	
-	<dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html#_auto_cov2d">DOUBLE</a></dt>
-	<dd>a keyword from the routine auto_cov2d</dd>
-	
-	<dt><a href="./Matrix/cmapply.html#_cmapply">DOUBLE</a></dt>
-	<dd>a keyword from the routine cmapply</dd>
-	
-	<dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html#_timecross_cov">DOUBLE</a></dt>
-	<dd>a keyword from the routine timecross_cov</dd>
-	
 	<dt><a href="./ReadWrite/ncdf_getatt.html#_ncdf_getatt">DOUBLE</a></dt>
 	<dd>a keyword from the routine ncdf_getatt</dd>
@@ -409,28 +412,28 @@
 	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar</dd>
 	
+	<dt><a href="./Obsolete/lect.html#_lect">date1</a></dt>
+	<dd>a parameter from the routine ./Obsolete/lect</dd>
+	
+	<dt><a href="./Obsolete/nlecserie.html#_nlecserie">date1</a></dt>
+	<dd>a parameter from the routine ./Obsolete/nlecserie</dd>
+	
 	<dt><a href="./ReadWrite/read_grads.html#_read_grads">date1</a></dt>
 	<dd>a parameter from the routine ./ReadWrite/read_grads</dd>
 	
-	<dt><a href="./Obsolete/nlecserie.html#_nlecserie">date1</a></dt>
-	<dd>a parameter from the routine ./Obsolete/nlecserie</dd>
-	
-	<dt><a href="./Obsolete/lect.html#_lect">date1</a></dt>
-	<dd>a parameter from the routine ./Obsolete/lect</dd>
-	
 	<dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib.html#_read_grib">date1</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib</dd>
 	
+	<dt><a href="./Obsolete/nlecserie.html#_nlecserie">date2</a></dt>
+	<dd>a parameter from the routine ./Obsolete/nlecserie</dd>
+	
+	<dt><a href="./ReadWrite/read_grads.html#_read_grads">date2</a></dt>
+	<dd>a parameter from the routine ./ReadWrite/read_grads</dd>
+	
+	<dt><a href="./Obsolete/lect.html#_lect">date2</a></dt>
+	<dd>a parameter from the routine ./Obsolete/lect</dd>
+	
 	<dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib.html#_read_grib">date2</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib</dd>
 	
-	<dt><a href="./ReadWrite/read_grads.html#_read_grads">date2</a></dt>
-	<dd>a parameter from the routine ./ReadWrite/read_grads</dd>
-	
-	<dt><a href="./Obsolete/lect.html#_lect">date2</a></dt>
-	<dd>a parameter from the routine ./Obsolete/lect</dd>
-	
-	<dt><a href="./Obsolete/nlecserie.html#_nlecserie">date2</a></dt>
-	<dd>a parameter from the routine ./Obsolete/nlecserie</dd>
-	
 	<dt><a href="./Calendar/date2jul.html#_date2jul">date2jul</a></dt>
 	<dd>a function from the file date2jul.pro</dd>
@@ -451,10 +454,10 @@
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltt</dd>
 	
+	<dt><a href="./Calendar/caldat.html#_caldat">day</a></dt>
+	<dd>a parameter from the routine ./Calendar/caldat</dd>
+	
 	<dt><a href="./Calendar/julday.html#_julday">day</a></dt>
 	<dd>a parameter from the routine ./Calendar/julday</dd>
 	
-	<dt><a href="./Calendar/caldat.html#_caldat">day</a></dt>
-	<dd>a parameter from the routine ./Calendar/caldat</dd>
-	
 	<dt><a href="./Calendar/daysinmonth.html#_daysinmonth">daysinmonth</a></dt>
 	<dd>a function from the file daysinmonth.pro</dd>
@@ -592,10 +595,10 @@
 	<dd>a parameter from the routine ./Obsolete/fictype</dd>
 	
+	<dt><a href="./Matrix/cmapply.html#_cmapply_redim">dimapply</a></dt>
+	<dd>a parameter from the routine ./Matrix/cmapply</dd>
+	
 	<dt><a href="./Matrix/cmapply.html#_cmapply">dimapply</a></dt>
 	<dd>a parameter from the routine ./Matrix/cmapply</dd>
 	
-	<dt><a href="./Matrix/cmapply.html#_cmapply_redim">dimapply</a></dt>
-	<dd>a parameter from the routine ./Matrix/cmapply</dd>
-	
 	<dt><a href="./ReadWrite/ncdf_getaxis.html#_ncdf_getaxis">dimidx</a></dt>
 	<dd>a parameter from the routine ./ReadWrite/ncdf_getaxis</dd>
@@ -619,4 +622,7 @@
 	<dd>a parameter from the routine ./Obsolete/lect</dd>
 	
+	<dt><a href="./ToBeReviewed/CALCULS/moyenne.html#_moyenne">direc</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/moyenne</dd>
+	
 	<dt><a href="./Computation/grad.html#_grad">direc</a></dt>
 	<dd>a parameter from the routine ./Computation/grad</dd>
@@ -625,7 +631,4 @@
 	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/grossemoyenne</dd>
 	
-	<dt><a href="./ToBeReviewed/CALCULS/moyenne.html#_moyenne">direc</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/moyenne</dd>
-	
 	<dt><a href="./Utilities/isadirectory.html#_isadirectory">directoryin</a></dt>
 	<dd>a parameter from the routine ./Utilities/isadirectory</dd>
@@ -637,7 +640,4 @@
 	<dd>a file from the directory ./Computation</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html#_barrecouleur">divisions</a></dt>
-	<dd>a keyword from the routine barrecouleur</dd>
-	
 	<dt><a href="./ReadWrite/write_ncdf.html#_writenc_unlimdim_update">dnames_imposed</a></dt>
 	<dd>a parameter from the routine ./ReadWrite/write_ncdf</dd>
Index: /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-E.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-E.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-E.html	(revision 363)
@@ -190,4 +190,16 @@
 	<dd>a keyword from the routine write_oasis</dd>
 	
+	<dt><a href="./Interpolation/cutpar.html#_cutpar">ENDPOINTS</a></dt>
+	<dd>a keyword from the routine cutpar</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">ENDPOINTS</a></dt>
+	<dd>a keyword from the routine plt1d</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">ENDPOINTS</a></dt>
+	<dd>a keyword from the routine pltt</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">ENDPOINTS</a></dt>
+	<dd>a keyword from the routine pltz</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html#_placedessin">ENDPOINTS</a></dt>
 	<dd>a keyword from the routine placedessin</dd>
@@ -199,19 +211,7 @@
 	<dd>a keyword from the routine domdef</dd>
 	
-	<dt><a href="./Interpolation/cutpar.html#_cutpar">ENDPOINTS</a></dt>
-	<dd>a keyword from the routine cutpar</dd>
-	
 	<dt><a href="./ToBeReviewed/TRIANGULATION/section.html#_section">ENDPOINTS</a></dt>
 	<dd>a keyword from the routine section</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">ENDPOINTS</a></dt>
-	<dd>a keyword from the routine plt1d</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">ENDPOINTS</a></dt>
-	<dd>a keyword from the routine pltt</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">ENDPOINTS</a></dt>
-	<dd>a keyword from the routine pltz</dd>
-	
 	<dt><a href="./Interpolation/cutsegment.html#_cutsegment">ENDPOINTS</a></dt>
 	<dd>a keyword from the routine cutsegment</dd>
@@ -232,4 +232,7 @@
 	<dd>a keyword from the routine putfile</dd>
 	
+	<dt><a href="./ToBeReviewed/STRING/getfile.html#_getfile">ERROR</a></dt>
+	<dd>a keyword from the routine getfile</dd>
+	
 	<dt><a href="./ReadWrite/readoldoparestart.html#_readoldoparestart">ETAB</a></dt>
 	<dd>a keyword from the routine readoldoparestart</dd>
@@ -301,7 +304,4 @@
 	<dd>a function from the file fitintobox.pro</dd>
 	
-	<dt><a href="./ToBeReviewed/STRING/getfile.html#_getfile">error</a></dt>
-	<dd>a keyword from the routine getfile</dd>
-	
 	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html#_cw_bgroup_event">ev</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup</dd>
Index: /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-GH.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-GH.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-GH.html	(revision 363)
@@ -388,5 +388,5 @@
 table.variables td.image { width: 64px; }
 
-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; 
+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; 
   margin: 2em;
   font-size: 80%;
Index: /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-I.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-I.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-I.html	(revision 363)
@@ -295,43 +295,46 @@
 	<dd>a keyword from the routine grossemoyenne</dd>
 	
+	<dt><a href="./Picture/imdisp.html#_imdisp_imregrid">INTERP</a></dt>
+	<dd>a keyword from the routine imdisp_imregrid</dd>
+	
 	<dt><a href="./Picture/imdisp.html#_imdisp">INTERP</a></dt>
 	<dd>a keyword from the routine imdisp</dd>
 	
-	<dt><a href="./Picture/imdisp.html#_imdisp_imregrid">INTERP</a></dt>
-	<dd>a keyword from the routine imdisp_imregrid</dd>
+	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html#_label">INTERVALLE</a></dt>
+	<dd>a keyword from the routine label</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/legende.html#_legende">INTERVALLE</a></dt>
+	<dd>a keyword from the routine legende</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">INTERVALLE</a></dt>
+	<dd>a keyword from the routine pltz</dd>
 	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">INTERVALLE</a></dt>
 	<dd>a keyword from the routine pltt</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">INTERVALLE</a></dt>
+	<dd>a keyword from the routine plt</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html#_determineminmax">INTERVALLE</a></dt>
 	<dd>a keyword from the routine determineminmax</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">INTERVALLE</a></dt>
-	<dd>a keyword from the routine pltz</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html#_label">INTERVALLE</a></dt>
-	<dd>a keyword from the routine label</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/legende.html#_legende">INTERVALLE</a></dt>
-	<dd>a keyword from the routine legende</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">INTERVALLE</a></dt>
-	<dd>a keyword from the routine plt</dd>
+	<dt><a href="./Interpolation/file_interp.html#_file_interp">INTESTOP</a></dt>
+	<dd>a keyword from the routine file_interp</dd>
 	
 	<dt><a href="./Interpolation/file_interp.html#_file_interp">INUSEASMASK</a></dt>
 	<dd>a keyword from the routine file_interp</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">INV</a></dt>
+	<dd>a keyword from the routine pltt</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">INV</a></dt>
 	<dd>a keyword from the routine pltz</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">INV</a></dt>
+	<dd>a keyword from the routine plt</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html#_pltv">INV</a></dt>
 	<dd>a keyword from the routine pltv</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">INV</a></dt>
-	<dd>a keyword from the routine plt</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">INV</a></dt>
-	<dd>a keyword from the routine pltt</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/reinitplt.html#_reinitplt">INVERT</a></dt>
 	<dd>a keyword from the routine reinitplt</dd>
@@ -349,25 +352,25 @@
 	<dd>a keyword from the routine xncdf_lec</dd>
 	
+	<dt><a href="./Grid/smallmeshmask.html#_smallmeshmask">IODIR</a></dt>
+	<dd>a keyword from the routine smallmeshmask</dd>
+	
+	<dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html#_ncdf_lec">IODIR</a></dt>
+	<dd>a keyword from the routine ncdf_lec</dd>
+	
 	<dt><a href="./Grid/micromeshmask.html#_micromeshmask">IODIR</a></dt>
 	<dd>a keyword from the routine micromeshmask</dd>
 	
-	<dt><a href="./Grid/smallmeshmask.html#_smallmeshmask">IODIR</a></dt>
-	<dd>a keyword from the routine smallmeshmask</dd>
-	
-	<dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html#_ncdf_lec">IODIR</a></dt>
-	<dd>a keyword from the routine ncdf_lec</dd>
+	<dt><a href="./Utilities/isadirectory.html#_isadirectory">IODIRECTORY</a></dt>
+	<dd>a keyword from the routine isadirectory</dd>
+	
+	<dt><a href="./Utilities/isafile.html#_isafile">IODIRECTORY</a></dt>
+	<dd>a keyword from the routine isafile</dd>
+	
+	<dt><a href="./Interpolation/angle.html#_angle">IODIRECTORY</a></dt>
+	<dd>a keyword from the routine angle</dd>
 	
 	<dt><a href="./Utilities/find.html#_find">IODIRECTORY</a></dt>
 	<dd>a keyword from the routine find</dd>
 	
-	<dt><a href="./Utilities/isafile.html#_isafile">IODIRECTORY</a></dt>
-	<dd>a keyword from the routine isafile</dd>
-	
-	<dt><a href="./Interpolation/angle.html#_angle">IODIRECTORY</a></dt>
-	<dd>a keyword from the routine angle</dd>
-	
-	<dt><a href="./Utilities/isadirectory.html#_isadirectory">IODIRECTORY</a></dt>
-	<dd>a keyword from the routine isadirectory</dd>
-	
 	<dt><a href="./ToBeReviewed/STRUCTURE/where_tag.html#_where_tag">ISELECT</a></dt>
 	<dd>a keyword from the routine where_tag</dd>
@@ -379,67 +382,67 @@
 	<dd>a parameter from the routine ./Textoidl/matchdelim</dd>
 	
+	<dt><a href="./Textoidl/strtrans.html#_strtrans">InputString</a></dt>
+	<dd>a parameter from the routine ./Textoidl/strtrans</dd>
+	
+	<dt><a href="./Textoidl/textoidl.html#_textoidl">InputString</a></dt>
+	<dd>a parameter from the routine ./Textoidl/textoidl</dd>
+	
 	<dt><a href="./Textoidl/translate_sub_super.html#_translate_sub_super">InputString</a></dt>
 	<dd>a parameter from the routine ./Textoidl/translate_sub_super</dd>
 	
-	<dt><a href="./Textoidl/textoidl.html#_textoidl">InputString</a></dt>
-	<dd>a parameter from the routine ./Textoidl/textoidl</dd>
-	
-	<dt><a href="./Textoidl/strtrans.html#_strtrans">InputString</a></dt>
-	<dd>a parameter from the routine ./Textoidl/strtrans</dd>
-	
 	<dt><a href="./Colors/xlct.html#_xlct_draw_cps">i</a></dt>
 	<dd>a parameter from the routine ./Colors/xlct</dd>
 	
+	<dt><a href="./ToBeReviewed/HOPE/cw_selectinterval.html#_cw_selectinterval_get_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/HOPE/cw_selectinterval</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.html#_cw_specifie_get_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.html#_cw_specifie_set_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html#_cw_slider_pm_get_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html#_cw_slider_pm_set_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.html#_cw_slide_slice_set_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html#_cw_droplist_pm_get_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html#_cw_droplist_pm_set_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html#_cw_domain_get_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html#_cw_domain_set_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html#_cw_combobox_pm_get_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html#_cw_combobox_pm_set_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html#_get_cal_value">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar</dd>
+	
 	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html#_cw_calendar_get_value">id</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar</dd>
 	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html#_cw_slider_pm_set_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.html#_cw_slide_slice_set_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html#_cw_slider_pm_get_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html#_cw_droplist_pm_get_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.html#_cw_specifie_set_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html#_cw_droplist_pm_set_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.html#_cw_specifie_get_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html#_cw_domain_get_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html#_cw_domain_set_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html#_cw_combobox_pm_get_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html#_cw_combobox_pm_set_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html#_get_cal_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar</dd>
-	
 	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html#_cw_calendar_set_value">id</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar</dd>
 	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html#_cw_bgroup_getv">id</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup</dd>
+	
 	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html#_cw_bgroup_setv">id</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup</dd>
 	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html#_cw_bgroup_getv">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup</dd>
-	
-	<dt><a href="./ToBeReviewed/HOPE/cw_selectinterval.html#_cw_selectinterval_get_value">id</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/HOPE/cw_selectinterval</dd>
-	
 	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/identifyclick.html#_identifyclick">identifyclick</a></dt>
 	<dd>a function from the file identifyclick.pro</dd>
@@ -448,10 +451,10 @@
 	<dd>a file from the directory ./ToBeReviewed/WIDGET/AUTOUR_de_XXX</dd>
 	
+	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html#_selectfile">idlfile</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile</dd>
+	
 	<dt><a href="./ToBeReviewed/WIDGET/xxx.html#_xxx">idlfile</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/xxx</dd>
 	
-	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html#_selectfile">idlfile</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile</dd>
-	
 	<dt><a href="./ReadWrite/write_ncdf.html#_writenc_unlimdim_update">iid</a></dt>
 	<dd>a parameter from the routine ./ReadWrite/write_ncdf</dd>
@@ -577,19 +580,19 @@
 	<dd>a parameter from the routine ./Interpolation/get_gridparams</dd>
 	
+	<dt><a href="./Colors/getcolor.html#_getcolor">index</a></dt>
+	<dd>a parameter from the routine ./Colors/getcolor</dd>
+	
 	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri_e.html#_numtri">index</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri_e</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html#_label_date">index</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_date</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/LABEL/lataxe.html#_lataxe">index</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/lataxe</dd>
 	
-	<dt><a href="./Colors/getcolor.html#_getcolor">index</a></dt>
-	<dd>a parameter from the routine ./Colors/getcolor</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/LABEL/lonaxe.html#_lonaxe">index</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/lonaxe</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html#_label_date">index</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_date</dd>
-	
 	<dt><a href="./Matrix/extrac2.html#_extrac2">index1</a></dt>
 	<dd>a parameter from the routine ./Matrix/extrac2</dd>
@@ -664,16 +667,16 @@
 	<dd>a parameter from the routine ./Interpolation/file_interp</dd>
 	
+	<dt><a href="./Grid/smallmeshmask.html#_ncdf_transfer">inname</a></dt>
+	<dd>a parameter from the routine ./Grid/smallmeshmask</dd>
+	
 	<dt><a href="./Grid/micromeshmask.html#_ncdf_transfer">inname</a></dt>
 	<dd>a parameter from the routine ./Grid/micromeshmask</dd>
 	
-	<dt><a href="./Grid/smallmeshmask.html#_ncdf_transfer">inname</a></dt>
-	<dd>a parameter from the routine ./Grid/smallmeshmask</dd>
+	<dt><a href="./ToBeReviewed/STRING/tostr.html#_tostr">input</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/STRING/tostr</dd>
 	
 	<dt><a href="./ReadWrite/idl-NetCDF/ncdf_listvars.html#_ncdf_listvars">input</a></dt>
 	<dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_listvars</dd>
 	
-	<dt><a href="./ToBeReviewed/STRING/tostr.html#_tostr">input</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/STRING/tostr</dd>
-	
 	<dt><a href="./Interpolation/inquad.html#_inquad">inquad</a></dt>
 	<dd>a function from the file inquad.pro</dd>
Index: /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-M.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-M.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-M.html	(revision 363)
@@ -175,13 +175,13 @@
 	<dd>a keyword from the routine strsci</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html#_placedessin">MAP</a></dt>
+	<dd>a keyword from the routine placedessin</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">MAP</a></dt>
+	<dd>a keyword from the routine plt</dd>
+	
 	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html#_cw_bgroup">MAP</a></dt>
 	<dd>a keyword from the routine cw_bgroup</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">MAP</a></dt>
-	<dd>a keyword from the routine plt</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html#_placedessin">MAP</a></dt>
-	<dd>a keyword from the routine placedessin</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html#_placedessin">MARGES</a></dt>
 	<dd>a keyword from the routine placedessin</dd>
@@ -232,16 +232,16 @@
 	<dd>a keyword from the routine pltv</dd>
 	
+	<dt><a href="./Colors/colorbar.html#_colorbar">MAX</a></dt>
+	<dd>a keyword from the routine colorbar</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html#_barrecouleur">MAX</a></dt>
+	<dd>a keyword from the routine barrecouleur</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html#_checktypeminmax">MAX</a></dt>
+	<dd>a keyword from the routine checktypeminmax</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html#_tvplus">MAX</a></dt>
 	<dd>a keyword from the routine tvplus</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html#_barrecouleur">MAX</a></dt>
-	<dd>a keyword from the routine barrecouleur</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html#_checktypeminmax">MAX</a></dt>
-	<dd>a keyword from the routine checktypeminmax</dd>
-	
-	<dt><a href="./Colors/colorbar.html#_colorbar">MAX</a></dt>
-	<dd>a keyword from the routine colorbar</dd>
-	
 	<dt><a href="./Matrix/cmset_op.html#_cmset_op">MAXARRAY</a></dt>
 	<dd>a keyword from the routine cmset_op</dd>
@@ -250,28 +250,28 @@
 	<dd>a keyword from the routine cw_slider_pm</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html#_pltv">MAXIN</a></dt>
+	<dd>a keyword from the routine pltv</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html#_determineminmax">MAXIN</a></dt>
+	<dd>a keyword from the routine determineminmax</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">MAXIN</a></dt>
 	<dd>a keyword from the routine pltz</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">MAXIN</a></dt>
+	<dd>a keyword from the routine pltt</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">MAXIN</a></dt>
+	<dd>a keyword from the routine plt1d</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">MAXIN</a></dt>
 	<dd>a keyword from the routine plt</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">MAXIN</a></dt>
-	<dd>a keyword from the routine plt1d</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">MAXIN</a></dt>
-	<dd>a keyword from the routine pltt</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html#_pltv">MAXIN</a></dt>
-	<dd>a keyword from the routine pltv</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html#_determineminmax">MAXIN</a></dt>
-	<dd>a keyword from the routine determineminmax</dd>
+	<dt><a href="./Interpolation/extrapolate.html#_extrapolate">MAXVAL</a></dt>
+	<dd>a keyword from the routine extrapolate</dd>
 	
 	<dt><a href="./Interpolation/extrapsmooth.html#_extrapsmooth">MAXVAL</a></dt>
 	<dd>a keyword from the routine extrapsmooth</dd>
 	
-	<dt><a href="./Interpolation/extrapolate.html#_extrapolate">MAXVAL</a></dt>
-	<dd>a keyword from the routine extrapolate</dd>
-	
 	<dt><a href="./ToBeReviewed/STRUCTURE/struct2string.html#_struct2string">MAX_STRUCT_LENGTH</a></dt>
 	<dd>a keyword from the routine struct2string</dd>
@@ -286,10 +286,10 @@
 	<dd>a keyword from the routine xx</dd>
 	
+	<dt><a href="./Interpolation/file_interp.html#_file_interp">METHOD</a></dt>
+	<dd>a keyword from the routine file_interp</dd>
+	
 	<dt><a href="./Interpolation/file_interp.html#_call_interp2d">METHOD</a></dt>
 	<dd>a keyword from the routine call_interp2d</dd>
 	
-	<dt><a href="./Interpolation/file_interp.html#_file_interp">METHOD</a></dt>
-	<dd>a keyword from the routine file_interp</dd>
-	
 	<dt><a href="./Interpolation/map_npoints.html#_map_npoints">MIDDLE</a></dt>
 	<dd>a keyword from the routine map_npoints</dd>
@@ -304,37 +304,37 @@
 	<dd>a keyword from the routine div</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html#_checktypeminmax">MIN</a></dt>
+	<dd>a keyword from the routine checktypeminmax</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html#_barrecouleur">MIN</a></dt>
+	<dd>a keyword from the routine barrecouleur</dd>
+	
+	<dt><a href="./Colors/colorbar.html#_colorbar">MIN</a></dt>
+	<dd>a keyword from the routine colorbar</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html#_tvplus">MIN</a></dt>
 	<dd>a keyword from the routine tvplus</dd>
 	
-	<dt><a href="./Colors/colorbar.html#_colorbar">MIN</a></dt>
-	<dd>a keyword from the routine colorbar</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html#_checktypeminmax">MIN</a></dt>
-	<dd>a keyword from the routine checktypeminmax</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html#_barrecouleur">MIN</a></dt>
-	<dd>a keyword from the routine barrecouleur</dd>
-	
 	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html#_cw_slider_pm">MINIMUM</a></dt>
 	<dd>a keyword from the routine cw_slider_pm</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">MININ</a></dt>
+	<dd>a keyword from the routine plt</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">MININ</a></dt>
+	<dd>a keyword from the routine plt1d</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">MININ</a></dt>
+	<dd>a keyword from the routine pltz</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html#_determineminmax">MININ</a></dt>
+	<dd>a keyword from the routine determineminmax</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html#_pltv">MININ</a></dt>
+	<dd>a keyword from the routine pltv</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">MININ</a></dt>
 	<dd>a keyword from the routine pltt</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">MININ</a></dt>
-	<dd>a keyword from the routine pltz</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html#_pltv">MININ</a></dt>
-	<dd>a keyword from the routine pltv</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">MININ</a></dt>
-	<dd>a keyword from the routine plt1d</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">MININ</a></dt>
-	<dd>a keyword from the routine plt</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html#_determineminmax">MININ</a></dt>
-	<dd>a keyword from the routine determineminmax</dd>
-	
 	<dt><a href="./Calendar/date2jul.html#_date2jul">MINUTE</a></dt>
 	<dd>a keyword from the routine date2jul</dd>
@@ -355,10 +355,16 @@
 	<dd>a keyword from the routine velovect</dd>
 	
+	<dt><a href="./Interpolation/file_interp.html#_file_interp">MISSING_VALUE</a></dt>
+	<dd>a keyword from the routine file_interp</dd>
+	
+	<dt><a href="./Interpolation/file_interp.html#_call_interp2d">MISSING_VALUE</a></dt>
+	<dd>a keyword from the routine call_interp2d</dd>
+	
+	<dt><a href="./ReadWrite/ncdf_getmask.html#_ncdf_getmask">MISSING_VALUE</a></dt>
+	<dd>a keyword from the routine ncdf_getmask</dd>
+	
 	<dt><a href="./ReadWrite/ncdf_getatt.html#_ncdf_getatt">MISSING_VALUE</a></dt>
 	<dd>a keyword from the routine ncdf_getatt</dd>
 	
-	<dt><a href="./ReadWrite/ncdf_getmask.html#_ncdf_getmask">MISSING_VALUE</a></dt>
-	<dd>a keyword from the routine ncdf_getmask</dd>
-	
 	<dt><a href="./Colors/xlct.html#_xlct">MODAL</a></dt>
 	<dd>a keyword from the routine xlct</dd>
@@ -382,10 +388,10 @@
 	<dd>a keyword from the routine saveimage</dd>
 	
+	<dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html#_timeauto_cov">m</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate</dd>
+	
 	<dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html#_timecross_cov">m</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate</dd>
 	
-	<dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html#_timeauto_cov">m</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/legende.html#_legende">ma</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/legende</dd>
@@ -409,37 +415,37 @@
 	<dd>a parameter from the routine ./ToBeReviewed/POSTSCRIPT/calibre</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html#_axis4pltz">mask</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/axis4pltz</dd>
+	
+	<dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html#_drawcoast_e">mask</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_e</dd>
+	
 	<dt><a href="./ToBeReviewed/GRILLE/grille.html#_grille">mask</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/GRILLE/grille</dd>
 	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html#_drawcoast_e">mask</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_e</dd>
+	<dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html#_decoupeterre">mask</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/GRILLE/decoupeterre</dd>
 	
 	<dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_c.html#_drawcoast_c">mask</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_c</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html#_determineminmax">mask</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/determineminmax</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html#_pltbase">mask</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltbase</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html#_axis4pltz">mask</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/axis4pltz</dd>
-	
-	<dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html#_decoupeterre">mask</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/GRILLE/decoupeterre</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html#_determineminmax">mask</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/determineminmax</dd>
-	
 	<dt><a href="./ToBeReviewed/TRIANGULATION/triangule_e.html#_triangule_e">maskentree</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/triangule_e</dd>
 	
+	<dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html#_triangule">maskentree</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/triangule</dd>
+	
+	<dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html#_tracemask">maskentree</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/tracemask</dd>
+	
 	<dt><a href="./ToBeReviewed/TRIANGULATION/triangule_c.html#_triangule_c">maskentree</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/triangule_c</dd>
 	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html#_tracemask">maskentree</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/tracemask</dd>
-	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html#_triangule">maskentree</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/triangule</dd>
-	
 	<dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html#_drawsectionbottom">maskin</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawsectionbottom</dd>
@@ -454,4 +460,7 @@
 	<dd>a file from the directory ./Textoidl</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html#_label">max</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/autoscale.html#_autoscale">max</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/autoscale</dd>
@@ -463,7 +472,4 @@
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_gmt</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html#_label">max</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html#_pltsc">max1</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltsc</dd>
@@ -493,10 +499,10 @@
 	<dd>a file from the directory ./Obsolete</dd>
 	
+	<dt><a href="./Interpolation/fromreg.html#_fromreg">method</a></dt>
+	<dd>a parameter from the routine ./Interpolation/fromreg</dd>
+	
 	<dt><a href="./Interpolation/fromirr.html#_fromirr">method</a></dt>
 	<dd>a parameter from the routine ./Interpolation/fromirr</dd>
 	
-	<dt><a href="./Interpolation/fromreg.html#_fromreg">method</a></dt>
-	<dd>a parameter from the routine ./Interpolation/fromreg</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/legende.html#_legende">mi</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/legende</dd>
@@ -508,16 +514,16 @@
 	<dd>a file from the directory ./Grid</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html#_label">min</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/autoscale.html#_autoscale">min</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/autoscale</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label_gmt.html#_label_gmt">min</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_gmt</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html#_pltv">min</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltv</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/autoscale.html#_autoscale">min</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/autoscale</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label_gmt.html#_label_gmt">min</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_gmt</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html#_label">min</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html#_pltsc">min1</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltsc</dd>
@@ -541,10 +547,10 @@
 	<dd>a parameter from the routine ./Obsolete/jourdsmois</dd>
 	
+	<dt><a href="./Calendar/daysinmonth.html#_daysinmonth">month</a></dt>
+	<dd>a parameter from the routine ./Calendar/daysinmonth</dd>
+	
 	<dt><a href="./Calendar/caldat.html#_caldat">month</a></dt>
 	<dd>a parameter from the routine ./Calendar/caldat</dd>
 	
-	<dt><a href="./Calendar/daysinmonth.html#_daysinmonth">month</a></dt>
-	<dd>a parameter from the routine ./Calendar/daysinmonth</dd>
-	
 	<dt><a href="./Calendar/monthname.html#_monthname">month</a></dt>
 	<dd>a parameter from the routine ./Calendar/monthname</dd>
@@ -568,4 +574,7 @@
 	<dd>a parameter from the routine ./Grid/numbisland</dd>
 	
+	<dt><a href="./Interpolation/fromirr.html#_fromirr">mskin</a></dt>
+	<dd>a parameter from the routine ./Interpolation/fromirr</dd>
+	
 	<dt><a href="./Grid/numbisland.html#_numbisland">mskin</a></dt>
 	<dd>a parameter from the routine ./Grid/numbisland</dd>
@@ -574,7 +583,4 @@
 	<dd>a parameter from the routine ./Interpolation/extrapsmooth</dd>
 	
-	<dt><a href="./Interpolation/fromirr.html#_fromirr">mskin</a></dt>
-	<dd>a parameter from the routine ./Interpolation/fromirr</dd>
-	
 	<dt><a href="./Grid/numbisland.html#_mskneig">mskneig</a></dt>
 	<dd>a procedure from the file numbisland.pro</dd>
Index: /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-N.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-N.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-N.html	(revision 363)
@@ -172,10 +172,10 @@
       <dl>
 	
+	<dt><a href="./Obsolete/lec.html#_lec">NAME</a></dt>
+	<dd>a keyword from the routine lec</dd>
+	
 	<dt><a href="./ToBeReviewed/LECTURE/litchamp.html#_litchamp">NAME</a></dt>
 	<dd>a keyword from the routine litchamp</dd>
 	
-	<dt><a href="./Obsolete/lec.html#_lec">NAME</a></dt>
-	<dd>a keyword from the routine lec</dd>
-	
 	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html#_buildreadcmd">NAMEFIELD</a></dt>
 	<dd>a keyword from the routine buildreadcmd</dd>
@@ -184,31 +184,25 @@
 	<dd>a keyword from the routine getcolor</dd>
 	
+	<dt><a href="./ToBeReviewed/STATISTICS/skewness_4d.html#_Skewness_Num">NAN</a></dt>
+	<dd>a keyword from the routine Skewness_Num</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html#_pltbase">NAN</a></dt>
 	<dd>a keyword from the routine pltbase</dd>
 	
+	<dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html#_grossemoyenne">NAN</a></dt>
+	<dd>a keyword from the routine grossemoyenne</dd>
+	
+	<dt><a href="./ToBeReviewed/CALCULS/moyenne.html#_moyenne">NAN</a></dt>
+	<dd>a keyword from the routine moyenne</dd>
+	
+	<dt><a href="./ToBeReviewed/CALCULS/remplit.html#_remplit">NAN</a></dt>
+	<dd>a keyword from the routine remplit</dd>
+	
+	<dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html#_timeauto_cov">NAN</a></dt>
+	<dd>a keyword from the routine timeauto_cov</dd>
+	
 	<dt><a href="./Obsolete/nlec.html#_nlec">NAN</a></dt>
 	<dd>a keyword from the routine nlec</dd>
 	
-	<dt><a href="./ToBeReviewed/STATISTICS/skewness_4d.html#_Skewness_Num">NAN</a></dt>
-	<dd>a keyword from the routine Skewness_Num</dd>
-	
-	<dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html#_timeauto_cov">NAN</a></dt>
-	<dd>a keyword from the routine timeauto_cov</dd>
-	
-	<dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html#_grossemoyenne">NAN</a></dt>
-	<dd>a keyword from the routine grossemoyenne</dd>
-	
-	<dt><a href="./ToBeReviewed/CALCULS/remplit.html#_remplit">NAN</a></dt>
-	<dd>a keyword from the routine remplit</dd>
-	
-	<dt><a href="./ToBeReviewed/CALCULS/moyenne.html#_moyenne">NAN</a></dt>
-	<dd>a keyword from the routine moyenne</dd>
-	
-	<dt><a href="./Interpolation/file_interp.html#_call_interp2d">NAN_VALUE</a></dt>
-	<dd>a keyword from the routine call_interp2d</dd>
-	
-	<dt><a href="./Interpolation/file_interp.html#_file_interp">NAN_VALUE</a></dt>
-	<dd>a keyword from the routine file_interp</dd>
-	
 	<dt><a href="./Obsolete/imprime.html#_imprime">NB</a></dt>
 	<dd>a keyword from the routine imprime</dd>
@@ -217,7 +211,13 @@
 	<dd>a keyword from the routine pltv</dd>
 	
+	<dt><a href="./Picture/imdisp.html#_imdisp">NCOLORS</a></dt>
+	<dd>a keyword from the routine imdisp</dd>
+	
 	<dt><a href="./Colors/colorbar.html#_colorbar">NCOLORS</a></dt>
 	<dd>a keyword from the routine colorbar</dd>
 	
+	<dt><a href="./Picture/imdisp.html#_imdisp_imscale">NCOLORS</a></dt>
+	<dd>a keyword from the routine imdisp_imscale</dd>
+	
 	<dt><a href="./Colors/xlct.html#_xlct">NCOLORS</a></dt>
 	<dd>a keyword from the routine xlct</dd>
@@ -226,10 +226,4 @@
 	<dd>a keyword from the routine tvplus</dd>
 	
-	<dt><a href="./Picture/imdisp.html#_imdisp">NCOLORS</a></dt>
-	<dd>a keyword from the routine imdisp</dd>
-	
-	<dt><a href="./Picture/imdisp.html#_imdisp_imscale">NCOLORS</a></dt>
-	<dd>a keyword from the routine imdisp_imscale</dd>
-	
 	<dt><a href="./Calendar/caldat.html#_caldat">NDAYSPM</a></dt>
 	<dd>a keyword from the routine caldat</dd>
@@ -256,16 +250,16 @@
 	<dd>a keyword from the routine remplit</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">NLEVEL</a></dt>
+	<dd>a keyword from the routine pltt</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html#_label">NLEVEL</a></dt>
 	<dd>a keyword from the routine label</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">NLEVEL</a></dt>
+	<dd>a keyword from the routine pltz</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">NLEVEL</a></dt>
 	<dd>a keyword from the routine plt</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">NLEVEL</a></dt>
-	<dd>a keyword from the routine pltt</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">NLEVEL</a></dt>
-	<dd>a keyword from the routine pltz</dd>
-	
 	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/updatewidget.html#_updatewidget">NOBOXZOOM</a></dt>
 	<dd>a keyword from the routine updatewidget</dd>
@@ -289,10 +283,10 @@
 	<dd>a keyword from the routine updatewidget</dd>
 	
+	<dt><a href="./ToBeReviewed/CALCULS/moyenne.html#_moyenne">NODOMDEF</a></dt>
+	<dd>a keyword from the routine moyenne</dd>
+	
 	<dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html#_grossemoyenne">NODOMDEF</a></dt>
 	<dd>a keyword from the routine grossemoyenne</dd>
 	
-	<dt><a href="./ToBeReviewed/CALCULS/moyenne.html#_moyenne">NODOMDEF</a></dt>
-	<dd>a keyword from the routine moyenne</dd>
-	
 	<dt><a href="./buildinit.html#_cw_field2">NOEDIT</a></dt>
 	<dd>a keyword from the routine cw_field2</dd>
@@ -301,4 +295,7 @@
 	<dd>a keyword from the routine placedessin</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">NOFILL</a></dt>
+	<dd>a keyword from the routine plt</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html#_barrecouleur">NOFILL</a></dt>
 	<dd>a keyword from the routine barrecouleur</dd>
@@ -307,7 +304,4 @@
 	<dd>a keyword from the routine pltt</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">NOFILL</a></dt>
-	<dd>a keyword from the routine plt</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html#_placedessin">NOFILL</a></dt>
 	<dd>a keyword from the routine placedessin</dd>
@@ -331,10 +325,10 @@
 	<dd>a keyword from the routine depth2level</dd>
 	
+	<dt><a href="./ToBeReviewed/CALCULS/level2depth.html#_level2depth">NOMASK</a></dt>
+	<dd>a keyword from the routine level2depth</dd>
+	
 	<dt><a href="./ToBeReviewed/CALCULS/depth2floatlevel.html#_depth2floatlevel">NOMASK</a></dt>
 	<dd>a keyword from the routine depth2floatlevel</dd>
 	
-	<dt><a href="./ToBeReviewed/CALCULS/level2depth.html#_level2depth">NOMASK</a></dt>
-	<dd>a keyword from the routine level2depth</dd>
-	
 	<dt><a href="./ToBeReviewed/CALCULS/floatlevel2depth.html#_floatlevel2depth">NOMASK</a></dt>
 	<dd>a keyword from the routine floatlevel2depth</dd>
@@ -352,10 +346,10 @@
 	<dd>a keyword from the routine fromreg</dd>
 	
+	<dt><a href="./Interpolation/inquad.html#_inquad">NOPRINT</a></dt>
+	<dd>a keyword from the routine inquad</dd>
+	
 	<dt><a href="./ToBeReviewed/STRUCTURE/where_tag.html#_where_tag">NOPRINT</a></dt>
 	<dd>a keyword from the routine where_tag</dd>
 	
-	<dt><a href="./Interpolation/inquad.html#_inquad">NOPRINT</a></dt>
-	<dd>a keyword from the routine inquad</dd>
-	
 	<dt><a href="./Utilities/find.html#_find">NOPRO</a></dt>
 	<dd>a keyword from the routine find</dd>
@@ -367,10 +361,10 @@
 	<dd>a keyword from the routine splot</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html#_scontour">NOREINITPLT</a></dt>
+	<dd>a keyword from the routine scontour</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/sbar_plot.html#_sbar_plot">NOREINITPLT</a></dt>
 	<dd>a keyword from the routine sbar_plot</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html#_scontour">NOREINITPLT</a></dt>
-	<dd>a keyword from the routine scontour</dd>
-	
 	<dt><a href="./Picture/imdisp.html#_imdisp">NORESIZE</a></dt>
 	<dd>a keyword from the routine imdisp</dd>
@@ -382,13 +376,13 @@
 	<dd>a keyword from the routine imdisp</dd>
 	
+	<dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html#_compute_fromreg_bilinear_weigaddr">NOSOUTHERNLINE</a></dt>
+	<dd>a keyword from the routine compute_fromreg_bilinear_weigaddr</dd>
+	
+	<dt><a href="./Interpolation/fromreg.html#_fromreg">NOSOUTHERNLINE</a></dt>
+	<dd>a keyword from the routine fromreg</dd>
+	
 	<dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html#_compute_fromreg_imoms3_weigaddr">NOSOUTHERNLINE</a></dt>
 	<dd>a keyword from the routine compute_fromreg_imoms3_weigaddr</dd>
 	
-	<dt><a href="./Interpolation/fromreg.html#_fromreg">NOSOUTHERNLINE</a></dt>
-	<dd>a keyword from the routine fromreg</dd>
-	
-	<dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html#_compute_fromreg_bilinear_weigaddr">NOSOUTHERNLINE</a></dt>
-	<dd>a keyword from the routine compute_fromreg_bilinear_weigaddr</dd>
-	
 	<dt><a href="./ReadWrite/read_grads.html#_read_grads">NOSTRUCT</a></dt>
 	<dd>a keyword from the routine read_grads</dd>
@@ -451,19 +445,19 @@
 	<dd>a keyword from the routine readoldopadistcoast</dd>
 	
+	<dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html#_a_timecorrelate">NVAL</a></dt>
+	<dd>a keyword from the routine a_timecorrelate</dd>
+	
 	<dt><a href="./ToBeReviewed/STATISTICS/skewness_4d.html#_skewness_4d">NVAL</a></dt>
 	<dd>a keyword from the routine skewness_4d</dd>
 	
-	<dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html#_a_timecorrelate">NVAL</a></dt>
-	<dd>a keyword from the routine a_timecorrelate</dd>
-	
 	<dt><a href="./ToBeReviewed/STRING/getwrd.html#_getwrd">NWORDS</a></dt>
 	<dd>a keyword from the routine getwrd</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/rotation.html#_rotation">NX</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/rotation</dd>
+	
 	<dt><a href="./Picture/imdisp.html#_imdisp_imregrid">NX</a></dt>
 	<dd>a parameter from the routine ./Picture/imdisp</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/rotation.html#_rotation">NX</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/rotation</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/rotation.html#_rotation">NY</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/rotation</dd>
@@ -481,16 +475,16 @@
 	<dd>a parameter from the routine ./Interpolation/cutpar</dd>
 	
+	<dt><a href="./ToBeReviewed/POSTSCRIPT/chcolps.html#_chcolps">n1</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/POSTSCRIPT/chcolps</dd>
+	
+	<dt><a href="./Matrix/zero_one.html#_zero_one">n1</a></dt>
+	<dd>a parameter from the routine ./Matrix/zero_one</dd>
+	
+	<dt><a href="./Obsolete/zeroun.html#_zeroun">n1</a></dt>
+	<dd>a parameter from the routine ./Obsolete/zeroun</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_1d">n1</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
 	
-	<dt><a href="./Matrix/zero_one.html#_zero_one">n1</a></dt>
-	<dd>a parameter from the routine ./Matrix/zero_one</dd>
-	
-	<dt><a href="./ToBeReviewed/POSTSCRIPT/chcolps.html#_chcolps">n1</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/POSTSCRIPT/chcolps</dd>
-	
-	<dt><a href="./Obsolete/zeroun.html#_zeroun">n1</a></dt>
-	<dd>a parameter from the routine ./Obsolete/zeroun</dd>
-	
 	<dt><a href="./Grid/n128gaussian.html#_n128gaussian">n128gaussian</a></dt>
 	<dd>a function from the file n128gaussian.pro</dd>
@@ -505,10 +499,10 @@
 	<dd>a file from the directory ./Grid</dd>
 	
+	<dt><a href="./Obsolete/zeroun.html#_zeroun">n2</a></dt>
+	<dd>a parameter from the routine ./Obsolete/zeroun</dd>
+	
 	<dt><a href="./Matrix/zero_one.html#_zero_one">n2</a></dt>
 	<dd>a parameter from the routine ./Matrix/zero_one</dd>
 	
-	<dt><a href="./Obsolete/zeroun.html#_zeroun">n2</a></dt>
-	<dd>a parameter from the routine ./Obsolete/zeroun</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_1d">n2</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
@@ -538,4 +532,25 @@
 	<dd>a parameter from the routine ./ToBeReviewed/STATISTICS/skewness_4d</dd>
 	
+	<dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html#_ncdf_quickwrite_typename">name</a></dt>
+	<dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2</dd>
+	
+	<dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html#_read_ncdf">name</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/read_ncdf</dd>
+	
+	<dt><a href="./ToBeReviewed/LECTURE/xncdf_lec.html#_xncdf_lec">name</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/xncdf_lec</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline.html#_findline">name</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/slec.html#_slec">name</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/slec</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html#_read_vermair">name</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair</dd>
+	
+	<dt><a href="./Obsolete/nlec.html#_nlec">name</a></dt>
+	<dd>a parameter from the routine ./Obsolete/nlec</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_1d">name</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
@@ -544,25 +559,4 @@
 	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt</dd>
 	
-	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline.html#_findline">name</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html#_read_vermair">name</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair</dd>
-	
-	<dt><a href="./ToBeReviewed/LECTURE/xncdf_lec.html#_xncdf_lec">name</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/xncdf_lec</dd>
-	
-	<dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html#_read_ncdf">name</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/read_ncdf</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/slec.html#_slec">name</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/slec</dd>
-	
-	<dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html#_ncdf_quickwrite_typename">name</a></dt>
-	<dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2</dd>
-	
-	<dt><a href="./Obsolete/nlec.html#_nlec">name</a></dt>
-	<dd>a parameter from the routine ./Obsolete/nlec</dd>
-	
 	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd.html#_cutcmd">nameexp</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd</dd>
@@ -586,16 +580,16 @@
 	<dd>a parameter from the routine ./Interpolation/extrapolate</dd>
 	
+	<dt><a href="./Obsolete/nlec5j.html#_nlec5j">nbretps</a></dt>
+	<dd>a parameter from the routine ./Obsolete/nlec5j</dd>
+	
 	<dt><a href="./Obsolete/nlecan.html#_nlecan">nbretps</a></dt>
 	<dd>a parameter from the routine ./Obsolete/nlecan</dd>
 	
+	<dt><a href="./Obsolete/nlecsaison.html#_nlecsaison">nbretps</a></dt>
+	<dd>a parameter from the routine ./Obsolete/nlecsaison</dd>
+	
 	<dt><a href="./Obsolete/nlecmois.html#_nlecmois">nbretps</a></dt>
 	<dd>a parameter from the routine ./Obsolete/nlecmois</dd>
 	
-	<dt><a href="./Obsolete/nlecsaison.html#_nlecsaison">nbretps</a></dt>
-	<dd>a parameter from the routine ./Obsolete/nlecsaison</dd>
-	
-	<dt><a href="./Obsolete/nlec5j.html#_nlec5j">nbretps</a></dt>
-	<dd>a parameter from the routine ./Obsolete/nlec5j</dd>
-	
 	<dt><a href="./ReadWrite/ncdf_getatt.html#_ncdf_getatt">ncdf_getatt</a></dt>
 	<dd>a procedure from the file ncdf_getatt.pro</dd>
@@ -721,22 +715,22 @@
 	<dd>a file from the directory ./ReadWrite/idl-NetCDF</dd>
 	
+	<dt><a href="./Grid/micromeshmask.html#_ncdf_transfer">ncdf_transfer</a></dt>
+	<dd>a procedure from the file micromeshmask.pro</dd>
+	
 	<dt><a href="./Grid/smallmeshmask.html#_ncdf_transfer">ncdf_transfer</a></dt>
 	<dd>a procedure from the file smallmeshmask.pro</dd>
 	
-	<dt><a href="./Grid/micromeshmask.html#_ncdf_transfer">ncdf_transfer</a></dt>
-	<dd>a procedure from the file micromeshmask.pro</dd>
-	
 	<dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper1.html#_ncdf_quickwrite_helper1">ncdfstruct</a></dt>
 	<dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper1</dd>
 	
+	<dt><a href="./Grid/micromeshmask.html#_micromeshmask">ncfilein</a></dt>
+	<dd>a parameter from the routine ./Grid/micromeshmask</dd>
+	
+	<dt><a href="./ToBeReviewed/INIT/initncdf.html#_initncdf">ncfilein</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/INIT/initncdf</dd>
+	
 	<dt><a href="./Grid/smallmeshmask.html#_smallmeshmask">ncfilein</a></dt>
 	<dd>a parameter from the routine ./Grid/smallmeshmask</dd>
 	
-	<dt><a href="./ToBeReviewed/INIT/initncdf.html#_initncdf">ncfilein</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/INIT/initncdf</dd>
-	
-	<dt><a href="./Grid/micromeshmask.html#_micromeshmask">ncfilein</a></dt>
-	<dd>a parameter from the routine ./Grid/micromeshmask</dd>
-	
 	<dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html#_ncdf_quickwrite_helper2">ncfilename</a></dt>
 	<dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2</dd>
@@ -751,10 +745,10 @@
 	<dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_listdims</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html#_label">ncontour</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label_gmt.html#_label_gmt">ncontour</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_gmt</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html#_label">ncontour</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label_gmt.html#_label_gmt">ncoul</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_gmt</dd>
@@ -865,22 +859,22 @@
 	<dd>a keyword from the routine ncdf_struct</dd>
 	
+	<dt><a href="./Obsolete/nlec5j.html#_nlec5j">nom</a></dt>
+	<dd>a parameter from the routine ./Obsolete/nlec5j</dd>
+	
+	<dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html#_ncdf_lec">nom</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/ncdf_lec</dd>
+	
+	<dt><a href="./Obsolete/nlecserie.html#_nlecserie">nom</a></dt>
+	<dd>a parameter from the routine ./Obsolete/nlecserie</dd>
+	
+	<dt><a href="./Obsolete/nlecmois.html#_nlecmois">nom</a></dt>
+	<dd>a parameter from the routine ./Obsolete/nlecmois</dd>
+	
+	<dt><a href="./Obsolete/nlecsaison.html#_nlecsaison">nom</a></dt>
+	<dd>a parameter from the routine ./Obsolete/nlecsaison</dd>
+	
 	<dt><a href="./Obsolete/nlecan.html#_nlecan">nom</a></dt>
 	<dd>a parameter from the routine ./Obsolete/nlecan</dd>
 	
-	<dt><a href="./Obsolete/nlec5j.html#_nlec5j">nom</a></dt>
-	<dd>a parameter from the routine ./Obsolete/nlec5j</dd>
-	
-	<dt><a href="./Obsolete/nlecmois.html#_nlecmois">nom</a></dt>
-	<dd>a parameter from the routine ./Obsolete/nlecmois</dd>
-	
-	<dt><a href="./Obsolete/nlecsaison.html#_nlecsaison">nom</a></dt>
-	<dd>a parameter from the routine ./Obsolete/nlecsaison</dd>
-	
-	<dt><a href="./Obsolete/nlecserie.html#_nlecserie">nom</a></dt>
-	<dd>a parameter from the routine ./Obsolete/nlecserie</dd>
-	
-	<dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html#_ncdf_lec">nom</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/ncdf_lec</dd>
-	
 	<dt><a href="./Obsolete/lect.html#_lect">nomchamp</a></dt>
 	<dd>a parameter from the routine ./Obsolete/lect</dd>
@@ -889,19 +883,19 @@
 	<dd>a parameter from the routine ./Obsolete/lec</dd>
 	
+	<dt><a href="./ToBeReviewed/WIDGET/slec.html#_slec">nomexp</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/slec</dd>
+	
+	<dt><a href="./Obsolete/ficdate.html#_ficdate">nomexp</a></dt>
+	<dd>a parameter from the routine ./Obsolete/ficdate</dd>
+	
+	<dt><a href="./Obsolete/lec.html#_lec">nomexp</a></dt>
+	<dd>a parameter from the routine ./Obsolete/lec</dd>
+	
+	<dt><a href="./Obsolete/lect.html#_lect">nomexp</a></dt>
+	<dd>a parameter from the routine ./Obsolete/lect</dd>
+	
 	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html#_read_vermair">nomexp</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair</dd>
 	
-	<dt><a href="./Obsolete/ficdate.html#_ficdate">nomexp</a></dt>
-	<dd>a parameter from the routine ./Obsolete/ficdate</dd>
-	
-	<dt><a href="./Obsolete/lec.html#_lec">nomexp</a></dt>
-	<dd>a parameter from the routine ./Obsolete/lec</dd>
-	
-	<dt><a href="./Obsolete/lect.html#_lect">nomexp</a></dt>
-	<dd>a parameter from the routine ./Obsolete/lect</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/slec.html#_slec">nomexp</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/slec</dd>
-	
 	<dt><a href="./Obsolete/nlec.html#_nlec">nomexperience</a></dt>
 	<dd>a parameter from the routine ./Obsolete/nlec</dd>
@@ -937,55 +931,55 @@
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/symbols</dd>
 	
+	<dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html#_timecross_cov">nt</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate</dd>
+	
 	<dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html#_timeauto_cov">nt</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate</dd>
 	
-	<dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html#_timecross_cov">nt</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate</dd>
-	
 	<dt><a href="./ToBeReviewed/STRING/getwrd.html#_getwrd">nth</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/STRING/getwrd</dd>
 	
+	<dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_date.html#_scan_grib_date">num</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_date</dd>
+	
+	<dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html#_ncdf_quickwrite_typename">num</a></dt>
+	<dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2</dd>
+	
+	<dt><a href="./ReadWrite/readoldopadistcoast.html#_read3fromopa">num</a></dt>
+	<dd>a parameter from the routine ./ReadWrite/readoldopadistcoast</dd>
+	
+	<dt><a href="./ReadWrite/readoldoparestart.html#_read2fromopa">num</a></dt>
+	<dd>a parameter from the routine ./ReadWrite/readoldoparestart</dd>
+	
+	<dt><a href="./ReadWrite/readoldoparestart.html#_read3fromopa">num</a></dt>
+	<dd>a parameter from the routine ./ReadWrite/readoldoparestart</dd>
+	
+	<dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_bds.html#_read_grib_bds">num</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_bds</dd>
+	
+	<dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_end.html#_read_grib_end">num</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_end</dd>
+	
+	<dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_gds.html#_read_grib_gds">num</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_gds</dd>
+	
 	<dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_is.html#_read_grib_is">num</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_is</dd>
 	
+	<dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_pds.html#_read_grib_pds">num</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_pds</dd>
+	
+	<dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_code.html#_scan_grib_code">num</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_code</dd>
+	
 	<dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_messize.html#_scan_grib_messize">num</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_messize</dd>
 	
-	<dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_date.html#_scan_grib_date">num</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_date</dd>
-	
-	<dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_gds.html#_read_grib_gds">num</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_gds</dd>
-	
-	<dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_code.html#_scan_grib_code">num</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_code</dd>
-	
-	<dt><a href="./ReadWrite/readoldopadistcoast.html#_read3fromopa">num</a></dt>
-	<dd>a parameter from the routine ./ReadWrite/readoldopadistcoast</dd>
-	
-	<dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_pds.html#_read_grib_pds">num</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_pds</dd>
+	<dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_nbits.html#_scan_grib_nbits">num</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_nbits</dd>
 	
 	<dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_recstart.html#_scan_grib_recstart">num</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_recstart</dd>
 	
-	<dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_nbits.html#_scan_grib_nbits">num</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_nbits</dd>
-	
-	<dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html#_ncdf_quickwrite_typename">num</a></dt>
-	<dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2</dd>
-	
-	<dt><a href="./ReadWrite/readoldoparestart.html#_read2fromopa">num</a></dt>
-	<dd>a parameter from the routine ./ReadWrite/readoldoparestart</dd>
-	
-	<dt><a href="./ReadWrite/readoldoparestart.html#_read3fromopa">num</a></dt>
-	<dd>a parameter from the routine ./ReadWrite/readoldoparestart</dd>
-	
-	<dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_bds.html#_read_grib_bds">num</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_bds</dd>
-	
-	<dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_end.html#_read_grib_end">num</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_end</dd>
-	
 	<dt><a href="./Grid/numbisland.html#_mskneig">numb</a></dt>
 	<dd>a parameter from the routine ./Grid/numbisland</dd>
@@ -1009,13 +1003,13 @@
 	<dd>a parameter from the routine ./Obsolete/nlec5j</dd>
 	
+	<dt><a href="./Obsolete/nlecan.html#_nlecan">numsortie79</a></dt>
+	<dd>a parameter from the routine ./Obsolete/nlecan</dd>
+	
+	<dt><a href="./Obsolete/nlecmois.html#_nlecmois">numsortie79</a></dt>
+	<dd>a parameter from the routine ./Obsolete/nlecmois</dd>
+	
 	<dt><a href="./Obsolete/nlecsaison.html#_nlecsaison">numsortie79</a></dt>
 	<dd>a parameter from the routine ./Obsolete/nlecsaison</dd>
 	
-	<dt><a href="./Obsolete/nlecmois.html#_nlecmois">numsortie79</a></dt>
-	<dd>a parameter from the routine ./Obsolete/nlecmois</dd>
-	
-	<dt><a href="./Obsolete/nlecan.html#_nlecan">numsortie79</a></dt>
-	<dd>a parameter from the routine ./Obsolete/nlecan</dd>
-	
 	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri_e.html#_numtri">numtri</a></dt>
 	<dd>a function from the file definetri_e.pro</dd>
@@ -1030,31 +1024,31 @@
 	<dd>a file from the directory ./ToBeReviewed/STRING</dd>
 	
+	<dt><a href="./Grid/numbisland.html#_mskneig">nx</a></dt>
+	<dd>a parameter from the routine ./Grid/numbisland</dd>
+	
+	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri.html#_definetri">nx</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri</dd>
+	
+	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri_e.html#_numtri">nx</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri_e</dd>
+	
+	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri_e.html#_definetri_e">nx</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri_e</dd>
+	
+	<dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_c.html#_drawcoast_c">nx</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_c</dd>
+	
+	<dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html#_drawcoast_e">nx</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_e</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_3d">nx</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_2d">nx</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
+	
 	<dt><a href="./ToBeReviewed/GRILLE/grille.html#_grille">nx</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/GRILLE/grille</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_3d">nx</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_2d">nx</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
-	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri.html#_definetri">nx</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri</dd>
-	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri_e.html#_numtri">nx</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri_e</dd>
-	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri_e.html#_definetri_e">nx</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri_e</dd>
-	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_c.html#_drawcoast_c">nx</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_c</dd>
-	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html#_drawcoast_e">nx</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_e</dd>
-	
-	<dt><a href="./Grid/numbisland.html#_mskneig">nx</a></dt>
-	<dd>a parameter from the routine ./Grid/numbisland</dd>
-	
 	<dt><a href="./Utilities/fitintobox.html#_err_mess">nx</a></dt>
 	<dd>a parameter from the routine ./Utilities/fitintobox</dd>
@@ -1066,55 +1060,55 @@
 	<dd>a parameter from the routine ./Grid/computegrid</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_3d">ny</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_2d">ny</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
+	
+	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri_e.html#_definetri_e">ny</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri_e</dd>
+	
+	<dt><a href="./Utilities/fitintobox.html#_err_mess">ny</a></dt>
+	<dd>a parameter from the routine ./Utilities/fitintobox</dd>
+	
+	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri.html#_definetri">ny</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri</dd>
+	
+	<dt><a href="./Utilities/fitintobox.html#_fitintobox">ny</a></dt>
+	<dd>a parameter from the routine ./Utilities/fitintobox</dd>
+	
+	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri_e.html#_numtri">ny</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri_e</dd>
+	
 	<dt><a href="./ToBeReviewed/GRILLE/grille.html#_grille">ny</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/GRILLE/grille</dd>
 	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri_e.html#_definetri_e">ny</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri_e</dd>
-	
 	<dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html#_drawcoast_e">ny</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_e</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_3d">ny</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
-	
-	<dt><a href="./Utilities/fitintobox.html#_err_mess">ny</a></dt>
-	<dd>a parameter from the routine ./Utilities/fitintobox</dd>
-	
-	<dt><a href="./Utilities/fitintobox.html#_fitintobox">ny</a></dt>
-	<dd>a parameter from the routine ./Utilities/fitintobox</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_2d">ny</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
+	<dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_c.html#_drawcoast_c">ny</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_c</dd>
 	
 	<dt><a href="./Grid/numbisland.html#_mskneig">ny</a></dt>
 	<dd>a parameter from the routine ./Grid/numbisland</dd>
 	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_c.html#_drawcoast_c">ny</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_c</dd>
-	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri_e.html#_numtri">ny</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri_e</dd>
-	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/definetri.html#_definetri">ny</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/definetri</dd>
-	
 	<dt><a href="./Grid/computegrid.html#_computegrid">nyin</a></dt>
 	<dd>a parameter from the routine ./Grid/computegrid</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_3d">nz</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
+	
+	<dt><a href="./Utilities/fitintobox.html#_fitintobox">nz</a></dt>
+	<dd>a parameter from the routine ./Utilities/fitintobox</dd>
+	
+	<dt><a href="./Utilities/fitintobox.html#_err_mess">nz</a></dt>
+	<dd>a parameter from the routine ./Utilities/fitintobox</dd>
+	
 	<dt><a href="./ToBeReviewed/GRILLE/grille.html#_grille">nz</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/GRILLE/grille</dd>
 	
-	<dt><a href="./Utilities/fitintobox.html#_err_mess">nz</a></dt>
-	<dd>a parameter from the routine ./Utilities/fitintobox</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_3d">nz</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_2d">nz</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
 	
-	<dt><a href="./Utilities/fitintobox.html#_fitintobox">nz</a></dt>
-	<dd>a parameter from the routine ./Utilities/fitintobox</dd>
-	
       </dl>
       
Index: /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-O.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-O.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-O.html	(revision 363)
@@ -181,4 +181,7 @@
 	<dd>a keyword from the routine read_hope</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html#_label_date">OFFSET</a></dt>
+	<dd>a keyword from the routine label_date</dd>
+	
 	<dt><a href="./ToBeReviewed/LECTURE/xncdf_lec.html#_xncdf_lec">OFFSET</a></dt>
 	<dd>a keyword from the routine xncdf_lec</dd>
@@ -187,10 +190,10 @@
 	<dd>a keyword from the routine tvplus</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html#_label_date">OFFSET</a></dt>
-	<dd>a keyword from the routine label_date</dd>
-	
 	<dt><a href="./ReadWrite/write_ncdf.html#_write_ncdf">OKNAN</a></dt>
 	<dd>a keyword from the routine write_ncdf</dd>
 	
+	<dt><a href="./Grid/ncdf_meshroms.html#_ncdf_meshroms">ONEARTH</a></dt>
+	<dd>a keyword from the routine ncdf_meshroms</dd>
+	
 	<dt><a href="./Grid/ncdf_meshread.html#_ncdf_meshread">ONEARTH</a></dt>
 	<dd>a keyword from the routine ncdf_meshread</dd>
@@ -199,7 +202,4 @@
 	<dd>a keyword from the routine computegrid</dd>
 	
-	<dt><a href="./Grid/ncdf_meshroms.html#_ncdf_meshroms">ONEARTH</a></dt>
-	<dd>a keyword from the routine ncdf_meshroms</dd>
-	
 	<dt><a href="./ToBeReviewed/TRIANGULATION/dessinetri.html#_dessinetri">ONEBYONE</a></dt>
 	<dd>a keyword from the routine dessinetri</dd>
@@ -211,10 +211,10 @@
 	<dd>a keyword from the routine section</dd>
 	
+	<dt><a href="./Utilities/find.html#_find">ONLYNC</a></dt>
+	<dd>a keyword from the routine find</dd>
+	
 	<dt><a href="./Utilities/isafile.html#_isafile">ONLYNC</a></dt>
 	<dd>a keyword from the routine isafile</dd>
 	
-	<dt><a href="./Utilities/find.html#_find">ONLYNC</a></dt>
-	<dd>a keyword from the routine find</dd>
-	
 	<dt><a href="./Utilities/find.html#_find">ONLYPRO</a></dt>
 	<dd>a keyword from the routine find</dd>
@@ -226,13 +226,13 @@
 	<dd>a keyword from the routine make_selection</dd>
 	
+	<dt><a href="./Interpolation/cutpar.html#_cutpar">ONSPHERE</a></dt>
+	<dd>a keyword from the routine cutpar</dd>
+	
+	<dt><a href="./Interpolation/inquad.html#_inquad">ONSPHERE</a></dt>
+	<dd>a keyword from the routine inquad</dd>
+	
 	<dt><a href="./Interpolation/cutsegment.html#_cutsegment">ONSPHERE</a></dt>
 	<dd>a keyword from the routine cutsegment</dd>
 	
-	<dt><a href="./Interpolation/cutpar.html#_cutpar">ONSPHERE</a></dt>
-	<dd>a keyword from the routine cutpar</dd>
-	
-	<dt><a href="./Interpolation/inquad.html#_inquad">ONSPHERE</a></dt>
-	<dd>a keyword from the routine inquad</dd>
-	
 	<dt><a href="./Textoidl/matchdelim.html#_matchdelim">OPEN_DELIM</a></dt>
 	<dd>a keyword from the routine matchdelim</dd>
@@ -265,4 +265,7 @@
 	<dd>a keyword from the routine inrecgrid</dd>
 	
+	<dt><a href="./Interpolation/file_interp.html#_file_interp">OUTTESTOP</a></dt>
+	<dd>a keyword from the routine file_interp</dd>
+	
 	<dt><a href="./Interpolation/file_interp.html#_file_interp">OUTUSEASMASK</a></dt>
 	<dd>a keyword from the routine file_interp</dd>
@@ -280,34 +283,34 @@
 	<dd>a keyword from the routine pltt</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">OV1D</a></dt>
+	<dd>a keyword from the routine plt1d</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html#_pltsc">OV1D</a></dt>
 	<dd>a keyword from the routine pltsc</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">OV1D</a></dt>
-	<dd>a keyword from the routine plt1d</dd>
-	
 	<dt><a href="./Colors/newpalette.html#_newpalette">OVER</a></dt>
 	<dd>a keyword from the routine newpalette</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/bar_plot.html#_bar_plot">OVERPLOT</a></dt>
+	<dd>a keyword from the routine bar_plot</dd>
+	
+	<dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html#_tracemask">OVERPLOT</a></dt>
+	<dd>a keyword from the routine tracemask</dd>
+	
 	<dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html#_drawsectionbottom">OVERPLOT</a></dt>
 	<dd>a keyword from the routine drawsectionbottom</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/bar_plot.html#_bar_plot">OVERPLOT</a></dt>
-	<dd>a keyword from the routine bar_plot</dd>
+	<dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html#_velovect">OVERPLOT</a></dt>
+	<dd>a keyword from the routine velovect</dd>
 	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">OVERPLOT</a></dt>
 	<dd>a keyword from the routine plt</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">OVERPLOT</a></dt>
+	<dd>a keyword from the routine pltz</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">OVERPLOT</a></dt>
 	<dd>a keyword from the routine pltt</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">OVERPLOT</a></dt>
-	<dd>a keyword from the routine pltz</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html#_velovect">OVERPLOT</a></dt>
-	<dd>a keyword from the routine velovect</dd>
-	
-	<dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html#_tracemask">OVERPLOT</a></dt>
-	<dd>a keyword from the routine tracemask</dd>
-	
 	<dt><a href="./Textoidl/matchdelim.html#_matchdelim">OpenPos</a></dt>
 	<dd>a parameter from the routine ./Textoidl/matchdelim</dd>
@@ -319,10 +322,10 @@
 	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_end</dd>
 	
+	<dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html#_compute_fromreg_bilinear_weigaddr">olat</a></dt>
+	<dd>a parameter from the routine ./Interpolation/compute_fromreg_bilinear_weigaddr</dd>
+	
 	<dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html#_compute_fromreg_imoms3_weigaddr">olat</a></dt>
 	<dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr</dd>
 	
-	<dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html#_compute_fromreg_bilinear_weigaddr">olat</a></dt>
-	<dd>a parameter from the routine ./Interpolation/compute_fromreg_bilinear_weigaddr</dd>
-	
 	<dt><a href="./Interpolation/compute_fromirr_bilinear_weigaddr.html#_compute_fromirr_bilinear_weigaddr">olat</a></dt>
 	<dd>a parameter from the routine ./Interpolation/compute_fromirr_bilinear_weigaddr</dd>
@@ -337,10 +340,10 @@
 	<dd>a file from the directory ./ForOldVersion</dd>
 	
+	<dt><a href="./Interpolation/compute_fromirr_bilinear_weigaddr.html#_compute_fromirr_bilinear_weigaddr">olonin</a></dt>
+	<dd>a parameter from the routine ./Interpolation/compute_fromirr_bilinear_weigaddr</dd>
+	
 	<dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html#_compute_fromreg_imoms3_weigaddr">olonin</a></dt>
 	<dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr</dd>
 	
-	<dt><a href="./Interpolation/compute_fromirr_bilinear_weigaddr.html#_compute_fromirr_bilinear_weigaddr">olonin</a></dt>
-	<dd>a parameter from the routine ./Interpolation/compute_fromirr_bilinear_weigaddr</dd>
-	
 	<dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html#_compute_fromreg_bilinear_weigaddr">olonin</a></dt>
 	<dd>a parameter from the routine ./Interpolation/compute_fromreg_bilinear_weigaddr</dd>
@@ -367,10 +370,10 @@
 	<dd>a keyword from the routine ftp_post</dd>
 	
+	<dt><a href="./Grid/smallmeshmask.html#_ncdf_transfer">outid</a></dt>
+	<dd>a parameter from the routine ./Grid/smallmeshmask</dd>
+	
 	<dt><a href="./Grid/micromeshmask.html#_ncdf_transfer">outid</a></dt>
 	<dd>a parameter from the routine ./Grid/micromeshmask</dd>
 	
-	<dt><a href="./Grid/smallmeshmask.html#_ncdf_transfer">outid</a></dt>
-	<dd>a parameter from the routine ./Grid/smallmeshmask</dd>
-	
 	<dt><a href="./Interpolation/file_interp.html#_call_interp2d">outlat</a></dt>
 	<dd>a parameter from the routine ./Interpolation/file_interp</dd>
@@ -379,10 +382,10 @@
 	<dd>a parameter from the routine ./Interpolation/file_interp</dd>
 	
+	<dt><a href="./Grid/micromeshmask.html#_ncdf_transfer">outname</a></dt>
+	<dd>a parameter from the routine ./Grid/micromeshmask</dd>
+	
 	<dt><a href="./Grid/smallmeshmask.html#_ncdf_transfer">outname</a></dt>
 	<dd>a parameter from the routine ./Grid/smallmeshmask</dd>
 	
-	<dt><a href="./Grid/micromeshmask.html#_ncdf_transfer">outname</a></dt>
-	<dd>a parameter from the routine ./Grid/micromeshmask</dd>
-	
       </dl>
       
Index: /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-T.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-T.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/idldoc-index-T.html	(revision 363)
@@ -193,4 +193,7 @@
 	<dd>a keyword from the routine write_oasis</dd>
 	
+	<dt><a href="./ReadWrite/ncdf_getmask.html#_ncdf_getmask">TESTOP</a></dt>
+	<dd>a keyword from the routine ncdf_getmask</dd>
+	
 	<dt><a href="./buildinit.html#_cw_field2">TEXT_FRAME</a></dt>
 	<dd>a keyword from the routine cw_field2</dd>
@@ -217,4 +220,13 @@
 	<dd>a keyword from the routine ncdf_gettime</dd>
 	
+	<dt><a href="./Utilities/isadirectory.html#_isadirectory">TITLE</a></dt>
+	<dd>a keyword from the routine isadirectory</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html#_cw_slider_pm">TITLE</a></dt>
+	<dd>a keyword from the routine cw_slider_pm</dd>
+	
+	<dt><a href="./buildinit.html#_getdir">TITLE</a></dt>
+	<dd>a keyword from the routine getdir</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/bar_plot.html#_bar_plot">TITLE</a></dt>
 	<dd>a keyword from the routine bar_plot</dd>
@@ -223,13 +235,4 @@
 	<dd>a keyword from the routine cw_field2</dd>
 	
-	<dt><a href="./buildinit.html#_getdir">TITLE</a></dt>
-	<dd>a keyword from the routine getdir</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html#_cw_slider_pm">TITLE</a></dt>
-	<dd>a keyword from the routine cw_slider_pm</dd>
-	
-	<dt><a href="./Utilities/isadirectory.html#_isadirectory">TITLE</a></dt>
-	<dd>a keyword from the routine isadirectory</dd>
-	
 	<dt><a href="./ToBeReviewed/HOPE/read_hope.html#_read_hope">TLIMITS</a></dt>
 	<dd>a keyword from the routine read_hope</dd>
@@ -241,28 +244,28 @@
 	<dd>a keyword from the routine colorbar</dd>
 	
+	<dt><a href="./ToBeReviewed/GRILLE/grille.html#_grille">TOUT</a></dt>
+	<dd>a keyword from the routine grille</dd>
+	
+	<dt><a href="./Obsolete/lec.html#_lec">TOUT</a></dt>
+	<dd>a keyword from the routine lec</dd>
+	
+	<dt><a href="./Obsolete/nlec.html#_nlec">TOUT</a></dt>
+	<dd>a keyword from the routine nlec</dd>
+	
+	<dt><a href="./Obsolete/nlec5j.html#_nlec5j">TOUT</a></dt>
+	<dd>a keyword from the routine nlec5j</dd>
+	
+	<dt><a href="./Obsolete/nlecan.html#_nlecan">TOUT</a></dt>
+	<dd>a keyword from the routine nlecan</dd>
+	
+	<dt><a href="./Obsolete/nlecmois.html#_nlecmois">TOUT</a></dt>
+	<dd>a keyword from the routine nlecmois</dd>
+	
 	<dt><a href="./Obsolete/nlecsaison.html#_nlecsaison">TOUT</a></dt>
 	<dd>a keyword from the routine nlecsaison</dd>
 	
-	<dt><a href="./Obsolete/lec.html#_lec">TOUT</a></dt>
-	<dd>a keyword from the routine lec</dd>
-	
-	<dt><a href="./Obsolete/nlec.html#_nlec">TOUT</a></dt>
-	<dd>a keyword from the routine nlec</dd>
-	
-	<dt><a href="./Obsolete/nlec5j.html#_nlec5j">TOUT</a></dt>
-	<dd>a keyword from the routine nlec5j</dd>
-	
-	<dt><a href="./Obsolete/nlecan.html#_nlecan">TOUT</a></dt>
-	<dd>a keyword from the routine nlecan</dd>
-	
-	<dt><a href="./Obsolete/nlecmois.html#_nlecmois">TOUT</a></dt>
-	<dd>a keyword from the routine nlecmois</dd>
-	
 	<dt><a href="./Obsolete/nlecserie.html#_nlecserie">TOUT</a></dt>
 	<dd>a keyword from the routine nlecserie</dd>
 	
-	<dt><a href="./ToBeReviewed/GRILLE/grille.html#_grille">TOUT</a></dt>
-	<dd>a keyword from the routine grille</dd>
-	
 	<dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html#_read_ncdf">TOUT</a></dt>
 	<dd>a keyword from the routine read_ncdf</dd>
@@ -310,10 +313,10 @@
 	<dd>a keyword from the routine find</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">TT</a></dt>
+	<dd>a keyword from the routine plt1d</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">TT</a></dt>
 	<dd>a keyword from the routine pltt</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">TT</a></dt>
-	<dd>a keyword from the routine plt1d</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html#_checktypeminmax">TT</a></dt>
 	<dd>a keyword from the routine checktypeminmax</dd>
@@ -322,7 +325,16 @@
 	<dd>a keyword from the routine map_npoints</dd>
 	
+	<dt><a href="./ToBeReviewed/GRILLE/grille.html#_grille">TYPE</a></dt>
+	<dd>a keyword from the routine grille</dd>
+	
+	<dt><a href="./ToBeReviewed/GRILLE/domdef.html#_domdef">TYPE</a></dt>
+	<dd>a keyword from the routine domdef</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html#_placedessin">TYPE</a></dt>
 	<dd>a keyword from the routine placedessin</dd>
 	
+	<dt><a href="./Matrix/cmapply.html#_cmapply">TYPE</a></dt>
+	<dd>a keyword from the routine cmapply</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_checkfield">TYPE</a></dt>
 	<dd>a keyword from the routine checkfield</dd>
@@ -331,16 +343,7 @@
 	<dd>a keyword from the routine checktypeminmax</dd>
 	
-	<dt><a href="./ToBeReviewed/GRILLE/grille.html#_grille">TYPE</a></dt>
-	<dd>a keyword from the routine grille</dd>
-	
 	<dt><a href="./ToBeReviewed/TRIANGULATION/section.html#_section">TYPE</a></dt>
 	<dd>a keyword from the routine section</dd>
 	
-	<dt><a href="./ToBeReviewed/GRILLE/domdef.html#_domdef">TYPE</a></dt>
-	<dd>a keyword from the routine domdef</dd>
-	
-	<dt><a href="./Matrix/cmapply.html#_cmapply">TYPE</a></dt>
-	<dd>a keyword from the routine cmapply</dd>
-	
 	<dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html#_decoupeterre">TYPE</a></dt>
 	<dd>a keyword from the routine decoupeterre</dd>
@@ -349,10 +352,10 @@
 	<dd>a keyword from the routine pltt</dd>
 	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">TYPEIN</a></dt>
+	<dd>a keyword from the routine pltz</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">TYPEIN</a></dt>
 	<dd>a keyword from the routine plt1d</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">TYPEIN</a></dt>
-	<dd>a keyword from the routine pltz</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/legende.html#_legende">TYPE_YZ</a></dt>
 	<dd>a keyword from the routine legende</dd>
@@ -364,46 +367,46 @@
 	<dd>a file from the directory ./ToBeReviewed/GRILLE</dd>
 	
+	<dt><a href="./ToBeReviewed/CALCULS/depth2floatlevel.html#_depth2floatlevel">tab</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2floatlevel</dd>
+	
+	<dt><a href="./Obsolete/extrait.html#_extrait">tab</a></dt>
+	<dd>a parameter from the routine ./Obsolete/extrait</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">tab</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/plt1d</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html#_determineminmax">tab</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/determineminmax</dd>
+	
+	<dt><a href="./ToBeReviewed/CALCULS/floatlevel2depth.html#_floatlevel2depth">tab</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/floatlevel2depth</dd>
+	
+	<dt><a href="./ToBeReviewed/CALCULS/depth2mask.html#_depth2mask">tab</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2mask</dd>
+	
+	<dt><a href="./ToBeReviewed/CALCULS/depth2level.html#_depth2level">tab</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2level</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html#_pltt">tab</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltt</dd>
 	
+	<dt><a href="./Grid/changemsk.html#_changemsk">tab</a></dt>
+	<dd>a parameter from the routine ./Grid/changemsk</dd>
+	
+	<dt><a href="./ToBeReviewed/CALCULS/moyenne.html#_moyenne">tab</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/moyenne</dd>
+	
+	<dt><a href="./ToBeReviewed/CALCULS/level2mask.html#_level2mask">tab</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/level2mask</dd>
+	
+	<dt><a href="./ToBeReviewed/CALCULS/level2depth.html#_level2depth">tab</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/level2depth</dd>
+	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html#_pltz">tab</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltz</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html#_determineminmax">tab</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/determineminmax</dd>
-	
-	<dt><a href="./ToBeReviewed/CALCULS/moyenne.html#_moyenne">tab</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/moyenne</dd>
-	
-	<dt><a href="./Grid/changemsk.html#_changemsk">tab</a></dt>
-	<dd>a parameter from the routine ./Grid/changemsk</dd>
-	
-	<dt><a href="./ToBeReviewed/CALCULS/level2mask.html#_level2mask">tab</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/level2mask</dd>
-	
-	<dt><a href="./ToBeReviewed/CALCULS/level2depth.html#_level2depth">tab</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/level2depth</dd>
-	
 	<dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html#_grossemoyenne">tab</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/grossemoyenne</dd>
 	
-	<dt><a href="./ToBeReviewed/CALCULS/floatlevel2depth.html#_floatlevel2depth">tab</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/floatlevel2depth</dd>
-	
-	<dt><a href="./ToBeReviewed/CALCULS/depth2mask.html#_depth2mask">tab</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2mask</dd>
-	
-	<dt><a href="./ToBeReviewed/CALCULS/depth2level.html#_depth2level">tab</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2level</dd>
-	
-	<dt><a href="./Obsolete/extrait.html#_extrait">tab</a></dt>
-	<dd>a parameter from the routine ./Obsolete/extrait</dd>
-	
-	<dt><a href="./ToBeReviewed/CALCULS/depth2floatlevel.html#_depth2floatlevel">tab</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2floatlevel</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html#_plt1d">tab</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/plt1d</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html#_plt">tab1</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/plt</dd>
@@ -436,4 +439,7 @@
 	<dd>a parameter from the routine ./ToBeReviewed/STRING/str_size</dd>
 	
+	<dt><a href="./ToBeReviewed/GRILLE/t2v.html#_t2v">temp</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/GRILLE/t2v</dd>
+	
 	<dt><a href="./ToBeReviewed/GRILLE/v2t.html#_v2t">temp</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/GRILLE/v2t</dd>
@@ -442,7 +448,4 @@
 	<dd>a parameter from the routine ./ToBeReviewed/GRILLE/f2v</dd>
 	
-	<dt><a href="./ToBeReviewed/GRILLE/t2v.html#_t2v">temp</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/GRILLE/t2v</dd>
-	
 	<dt><a href="./ToBeReviewed/GRILLE/u2t.html#_u2t">temp</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/GRILLE/u2t</dd>
@@ -472,10 +475,10 @@
 	<dd>a parameter from the routine ./ToBeReviewed/LECTURE/read_ftp</dd>
 	
+	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory.html#_inserthistory">text</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory</dd>
+	
 	<dt><a href="./Utilities/text_box.html#_text_box">text</a></dt>
 	<dd>a parameter from the routine ./Utilities/text_box</dd>
 	
-	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory.html#_inserthistory">text</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory</dd>
-	
 	<dt><a href="./Utilities/text_box.html#_text_box">text_box</a></dt>
 	<dd>a procedure from the file text_box.pro</dd>
@@ -529,16 +532,16 @@
 	<dd>a parameter from the routine ./Textoidl/strtrans</dd>
 	
+	<dt><a href="./Textoidl/str_token.html#_str_token">token</a></dt>
+	<dd>a parameter from the routine ./Textoidl/str_token</dd>
+	
+	<dt><a href="./ToBeReviewed/STRING/strtok.html#_strtok">token</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/STRING/strtok</dd>
+	
+	<dt><a href="./Textoidl/translate_sub_super.html#_sub_sup_idl">token</a></dt>
+	<dd>a parameter from the routine ./Textoidl/translate_sub_super</dd>
+	
 	<dt><a href="./Textoidl/sub_sup_idl.html#_sub_sup_idl">token</a></dt>
 	<dd>a parameter from the routine ./Textoidl/sub_sup_idl</dd>
 	
-	<dt><a href="./Textoidl/str_token.html#_str_token">token</a></dt>
-	<dd>a parameter from the routine ./Textoidl/str_token</dd>
-	
-	<dt><a href="./ToBeReviewed/STRING/strtok.html#_strtok">token</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/STRING/strtok</dd>
-	
-	<dt><a href="./Textoidl/translate_sub_super.html#_sub_sup_idl">token</a></dt>
-	<dd>a parameter from the routine ./Textoidl/translate_sub_super</dd>
-	
 	<dt><a href="./Textoidl/nexttok.html#_nexttok">tokens</a></dt>
 	<dd>a parameter from the routine ./Textoidl/nexttok</dd>
@@ -547,13 +550,13 @@
 	<dd>a function from the file string2struct.pro</dd>
 	
+	<dt><a href="./ToBeReviewed/HOPE/domainpart.html#_domainpart">top_uvalue</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/HOPE/domainpart</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt.html#_extractatt">top_uvalue</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt</dd>
+	
 	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline.html#_findline">top_uvalue</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline</dd>
 	
-	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt.html#_extractatt">top_uvalue</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt</dd>
-	
-	<dt><a href="./ToBeReviewed/HOPE/domainpart.html#_domainpart">top_uvalue</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/HOPE/domainpart</dd>
-	
 	<dt><a href="./ToBeReviewed/HOPE/rh_alldomains.html#_rh_alldomains">topid</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/HOPE/rh_alldomains</dd>
@@ -781,34 +784,34 @@
 	<dd>a parameter from the routine ./ToBeReviewed/STRING/isnumber</dd>
 	
+	<dt><a href="./ToBeReviewed/STRING/getwrd.html#_getwrd">txtstr</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/STRING/getwrd</dd>
+	
 	<dt><a href="./ToBeReviewed/STRING/nwrds.html#_nwrds">txtstr</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/STRING/nwrds</dd>
 	
-	<dt><a href="./ToBeReviewed/STRING/getwrd.html#_getwrd">txtstr</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/STRING/getwrd</dd>
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_3d">type</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
+	
+	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html#_buildreadcmd">type</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd</dd>
+	
+	<dt><a href="./Colors/xpal.html#_xp_change_color">type</a></dt>
+	<dd>a parameter from the routine ./Colors/xpal</dd>
+	
+	<dt><a href="./Colors/xpal.html#_xp_replot">type</a></dt>
+	<dd>a parameter from the routine ./Colors/xpal</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_1d">type</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_2d">type</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
+	
+	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/addaxe.html#_addaxe">type</a></dt>
+	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/addaxe</dd>
 	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html#_axis4pltz">type</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/axis4pltz</dd>
 	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_2d">type</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_3d">type</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
-	
-	<dt><a href="./Colors/xpal.html#_xp_change_color">type</a></dt>
-	<dd>a parameter from the routine ./Colors/xpal</dd>
-	
-	<dt><a href="./Colors/xpal.html#_xp_replot">type</a></dt>
-	<dd>a parameter from the routine ./Colors/xpal</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_err_1d">type</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>
-	
-	<dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html#_buildreadcmd">type</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd</dd>
-	
-	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/addaxe.html#_addaxe">type</a></dt>
-	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/addaxe</dd>
-	
 	<dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html#_placedessin">typedessin</a></dt>
 	<dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/placedessin</dd>
Index: /trunk/SRC/Documentation/idldoc_html_output/idldoc-warnings.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/idldoc-warnings.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/idldoc-warnings.html	(revision 363)
@@ -1769,5 +1769,5 @@
 <tr>
 <td class="statroutine"><a href="./Grid/ncdf_meshread.html#_ncdf_meshread">ncdf_meshread</a></td>
-<td class="stat warning">          95</td>
+<td class="stat warning">          99</td>
 </tr>
 
@@ -1857,10 +1857,10 @@
 <tr>
 <td class="statroutine"><a href="./Interpolation/file_interp.html#_call_interp2d">call_interp2d</a></td>
-<td class="stat warning">          10</td>
+<td class="stat warning">          11</td>
 </tr>
 
 <tr>
 <td class="statroutine"><a href="./Interpolation/file_interp.html#_file_interp">file_interp</a></td>
-<td class="stat warning">          68</td>
+<td class="stat warning">          69</td>
 </tr>
 
@@ -2256,5 +2256,5 @@
 <tr>
 <td class="statroutine"><a href="./ReadWrite/ncdf_getatt.html#_ncdf_getatt">ncdf_getatt</a></td>
-<td class="stat warning">          22</td>
+<td class="stat warning">          25</td>
 </tr>
 
@@ -2272,5 +2272,5 @@
 <tr>
 <td class="statroutine"><a href="./ReadWrite/ncdf_getmask.html#_ncdf_getmask">ncdf_getmask</a></td>
-<td class="stat warning">          24</td>
+<td class="stat warning">          34</td>
 </tr>
 
@@ -2280,5 +2280,5 @@
 <tr>
 <td class="statroutine"><a href="./ReadWrite/ncdf_gettime.html#_ncdf_gettime">ncdf_gettime</a></td>
-<td class="stat warning">          42</td>
+<td class="stat warning">          39</td>
 </tr>
 
@@ -2955,5 +2955,5 @@
 <tr>
 <td class="statroutine"><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html#_checkfield">checkfield</a></td>
-<td class="stat warning">         120</td>
+<td class="stat warning">         121</td>
 </tr>
 
@@ -3075,5 +3075,5 @@
 <tr>
 <td class="statroutine"><a href="./ToBeReviewed/PLOTS/legende.html#_legende">legende</a></td>
-<td class="stat warning">          67</td>
+<td class="stat warning">          65</td>
 </tr>
 
Index: /trunk/SRC/Documentation/idldoc_html_output/overview.html
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/overview.html	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/overview.html	(revision 363)
@@ -382,5 +382,5 @@
 	<tr>
 	  <td>Lines of code</td>
-	  <td class="value">       66000</td>
+	  <td class="value">       66068</td>
 	</tr>
       </table>
Index: /trunk/SRC/Documentation/idldoc_html_output/search.js
===================================================================
--- /trunk/SRC/Documentation/idldoc_html_output/search.js	(revision 362)
+++ /trunk/SRC/Documentation/idldoc_html_output/search.js	(revision 363)
@@ -10,5 +10,5 @@
 a[8] = new Array("./Calendar/monthname.html", "monthname.pro", "", "       file_comments   gives the name of a month      categories   Calendar String      param month  in required   type scalar or array    the month number  from 1 to 12       keyword _EXTRA   Used to pass keywords to string function      returns   the month names  a string with the same number of elements than month       examples     IDL  print  monthname 2 3      February March     IDL  print  monthname 2  format C CMOA0      FEBRUARY     IDL  print  monthname 2  format C CmoA03 :      feb      history   Sebastien Masson  smasson lodyc jussieu fr                         1 October 2001      version    Id: monthname pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION monthname  month  _EXTRA ex     compile_opt idl2  strictarrsubs      return  string format C CMoA0 31 month 1  _EXTRA   ex  end");
 a[9] = new Array("./Colors/color24.html", "color24.pro", "", "       file_comments   The purpose of this function is to convert a RGB color triple   into the equivalent 24 big long integer    This routine was written to be used with routines like   or getcolor       categories   Graphics  Color      param rgb_triple  in required type byte  A three element array    A color triple  The values of the elements must be between 0 and 255       returns  type long integer    a 24 bit long integer that is equivalent the input color    The color is described in terms of a hexadecimal number  e g  FF206A    where the left two digits represent the blue color  the   middle two digits represent the green color  and the right   two digits represent the red color       examples   To convert the color triple for the color YELLOW     255  255  0  to the hexadecimal value  00FFFF x   or the decimal number 65535  type:     IDL  color   COLOR24 255  255  0         history         Written by:     David Fanning  3 February 96       version    Id: color24 pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION color24  rgb_triple     compile_opt idl2  strictarrsubs   ON_ERROR  1  IF N_ELEMENTS rgb_triple  NE 3 THEN      ras  report Argument must be a three element vector   IF MAX rgb_triple  GT 255 OR MIN rgb_triple  LT 0 THEN      ras   report Argument values must be in range of 0 255   base16    1L  16L   256L  4096L   65536L  1048576L   num24bit   0L  FOR j 0 2 DO num24bit   num24bit    rgb_triple j  MOD 16    base16 0 j          Fix rgb_triple j 16    base16 1 j   RETURN  num24bit END");
-a[10] = new Array("./Colors/colorbar.html", "colorbar.pro", "", "       file_comments   The purpose of this routine is to add a color bar to the current   graphics window       categories   Graphics      keyword BOTTOM  default 0B    The lowest color index of the colors to be loaded in the bar       keyword CB_CHARSIZE  default 1 0    The character size of the color bar annotations       keyword CB_CHARTHICK  default 1 0    The character thick of the color bar annotations       keyword CB_COLOR  default ncolors   1   bottom    The color index of the bar outline and characters       keyword CB_LOG   to get logarithmic scale for the colorbar      keyword CB_TITLE  default    This is title for the color bar       keyword DISCRETE   Vector which contain color s indexes to trace in a color bar  Therefore   we obtain a discrete colorbar which contains only the specified colors   in the order they appear in the vector      keyword DIVISIONS  default 2    The number of divisions to divide the bar into    There will be  divisions   1  annotations       keyword FORMAT  default F6 2    The format of the bar annotations       keyword CB_LABEL  type vector    A vector to specify sticks values of the color bar  It allows    when we use DISCRETE  to have colors that don t increase by   increments in a regular way       keyword MAX  default NCOLORS   1    The maximum data value for the bar annotation       keyword MIN  default 0    The minimum data value for the bar annotation       keyword NCOLORS  default D N_COLORS    This is the number of colors in the color bar       keyword NOTITLE   Force to don t write title even if CB_TITLE is declared       keyword POSITION  default see bellow    A four element array of normalized coordinates in the same   form as the POSITION keyword on a plot  Default is    0 88  0 15  0 95  0 95  for a vertical bar and    0 15  0 88  0 95  0 95  for a horizontal bar       keyword PSCOLOR   This keyword is only applied if the output is being sent to   a Postscript file  It indicates that the Postscript device   is configured for color output  If this keyword is set  then   the annotation is drawn in the color specified by the COLOR   keyword  If the keyword is not set  the annotation is drawn   in the color specified by the  P COLOR system variable    usually this will be the color black  In general  this   gives better looking output on non color or gray scale   printers  If you are not specifically setting the annotation   color  with the COLOR keyword  it will probably   be better NOT to set this keyword either  even if you   are outputting to a color Postscript printer       keyword RIGHT   This puts the labels on the right hand side of a vertical   color bar  It applies only to vertical color bars       keyword TOP   This puts the labels on top of the bar rather than under it    The keyword only applies if a horizontal color bar is rendered       keyword VERTICAL  default 0   horizontal color bar    Setting this keyword give a vertical color bar       keyword _EXTRA   pass any keyword to colorbar      restrictions   The number of colors available on the display device  not the   Postscript device  is used unless the NCOLORS keyword is used       examples   To display a horizontal color bar above a contour plot  type:     IDL  LOADCT  5  NCOLORS 100   IDL  CONTOUR  DIST 31 41  POSITION 0 15  0 15  0 95  0 75      IDL  C_COLORS INDGEN 25 4  NLEVELS 25   IDL  COLORBAR  NCOLORS 100      history   Written by: David Fanning  10 JUNE 96    10 27 96: Added the ability to send output to PostScript  DWF   11 04 96: Substantially rewritten to go to screen or PostScript             file without having to know much about the PostScript device             or even what the current graphics device is  DWF   01 27 97: Added the RIGHT and TOP keywords  Also modified the             way the TITLE keyword works  DWF   07 15 97: Fixed a problem some machines have with plots that have             no valid data range in them  DWF   03 03 98: Add DISCRETE keyword  sebastien masson  smasson lodyc jussieu fr       version    Id: colorbar pro 327 2007 12 13 16:22:35Z pinsard       PRO colorbar  BOTTOM bottom  CB_CHARSIZE cb_charsize                 CB_CHARTHICK cb_charthick                 CB_COLOR cb_color  DIVISIONS divisions  DISCRETE discrete                 CB_LABEL cb_label  FORMAT format  POSITION position                 MAX max  MIN min  NCOLORS ncolors  PSCOLOR pscolor                 CB_TITLE cb_title  VERTICAL vertical  TOP top  RIGHT right                 CB_LOG CB_log  NOTITLE notitle  _EXTRA ex     compile_opt idl2  strictarrsubs     Is the PostScript device selected     postScriptDevice    D NAME EQ  PS                                     Check and define keywords      IF N_ELEMENTS ncolors  EQ 0 THEN BEGIN    Most display devices to not use the 256 colors available to   the PostScript device  This presents a problem when writing   general purpose programs that can be output to the display or   to the PostScript device  This problem is especially bothersome   if you don t specify the number of colors you are using in the   program  One way to work around this problem is to make the   default number of colors the same for the display device and for   the PostScript device  Then  the colors you see in PostScript are   identical to the colors you see on your display  Here is one way to   do it         IF postScriptDevice THEN BEGIN          oldDevice    D NAME    What kind of computer are we using  SET_PLOT to appropriate   display device            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    Open a window  to make sure  D N_COLORS is accurate            WINDOW   FREE   PIXMAP  XSIZE 10  YSIZE 10          WDELETE   D WINDOW    Here is how many colors we should use            ncolors    D N_COLORS          SET_PLOT  oldDevice          IF oldDevice EQ  X  OR oldDevice EQ  MAC  OR oldDevice 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       ENDIF ELSE ncolors    D N_COLORS    ENDIF    IF N_ELEMENTS bottom  EQ 0 THEN bottom   0B    IF N_ELEMENTS cb_charsize  EQ 0 THEN cb_charsize   1 0    IF N_ELEMENTS cb_charthick  EQ 0 THEN cb_charthick   1 0    IF N_ELEMENTS format  EQ 0 THEN format    F6 2     IF N_ELEMENTS cb_color  EQ 0 THEN cb_color   ncolors   1   bottom    IF N_ELEMENTS min  EQ 0 THEN min   0 0    IF N_ELEMENTS max  EQ 0 THEN max   FLOAT ncolors    1    IF N_ELEMENTS divisions  EQ 0 THEN divisions   2    IF N_ELEMENTS cb_title  EQ 0 THEN cb_title        IF N_ELEMENTS notitle  EQ 1 THEN cb_title        pscolor   KEYWORD_SET pscolor      IF KEYWORD_SET vertical  THEN BEGIN       IF KEYWORD_SET discrete  THEN begin          facteur 256 n_elements discrete           discrete reform replicate 1 facteur    discrete facteur n_elements discrete   overwrite           bar   REPLICATE 1B 10    discrete       endif else  bar   REPLICATE 1B 10    BINDGEN 256        IF N_ELEMENTS position  EQ 0 THEN position    0 88  0 15  0 95  0 95     ENDIF ELSE BEGIN       IF KEYWORD_SET discrete  THEN begin          facteur 256 n_elements discrete           discrete reform replicate 1 facteur    discrete facteur n_elements discrete   overwrite           bar    discrete   REPLICATE 1B 10        endif else bar   BINDGEN 256    REPLICATE 1B  10        IF N_ELEMENTS position  EQ 0 THEN position    0 15  0 88  0 95  0 95     ENDELSE    Scale the color bar     IF NOT KEYWORD_SET discrete  THEN       bar   BYTSCL bar  TOP ncolors 1    bottom    Get starting locations in DEVICE coordinates      xstart   position 0     D X_VSIZE    ystart   position 1     D Y_VSIZE    Get the size of the bar in DEVICE coordinates      xsize    position 2    position 0     D X_VSIZE    ysize    position 3    position 1     D Y_VSIZE    For PostScript output only  draw the annotation in  P COLOR   unless  pscolor  is set  This makes better output on grayscale   printers      IF postScriptDevice AND  pscolor NE 1  THEN BEGIN       oldcolor   cb_color       cb_color    P COLOR    ENDIF    Display the color bar in the window  Sizing is   different for PostScript and regular display      IF postScriptDevice THEN BEGIN        TV  bar  xstart  ystart  XSIZE xsize  YSIZE ysize     ENDIF ELSE BEGIN       IF CEIL xsize  LT 0 OR CEIL ysize  LT 0 THEN return       bar   CONGRID bar  CEIL xsize  CEIL ysize   INTERP        TV  bar  xstart  ystart     ENDELSE    Annotate the color bar      if keyword_set cb_label  then begin       divisions   n_elements cb_label 1       for i   0 divisions DO cb_label   string cb_label  FORMAT   format        format        ENDIF ELSE cb_label          IF KEYWORD_SET vertical  THEN BEGIN        IF KEYWORD_SET right  THEN BEGIN           PLOT   min max   min max   NODATA  XTICKS 1              YTICKS divisions  XSTYLE 1  YSTYLE 9              POSITION position  COLOR cb_color  CHARSIZE cb_charsize  CHARTHICK cb_charthick                NOERASE              YTICKFORMAT A1  XTICKFORMAT A1  YTICKLEN 0 1               YRANGE min  max  YTITLE cb_title           AXIS  YAXIS 1  YRANGE min  max  YTICKFORMAT format  YTICKS divisions              YTICKLEN 0 1  YSTYLE 1  COLOR cb_color  CHARTHICK cb_charthick               CHARSIZE cb_charsize  xtickname   cb_label  ylog   cb_log        ENDIF ELSE BEGIN           PLOT   min max   min max   NODATA  XTICKS 1              YTICKS divisions  XSTYLE 1  YSTYLE 9              POSITION position  COLOR cb_color  CHARSIZE cb_charsize               CHARTHICK cb_charthick   NOERASE              YTICKFORMAT format  XTICKFORMAT A1  YTICKLEN 0 1               YRANGE min  max  xtickname   cb_label           AXIS  YAXIS 1  YRANGE min  max  YTICKFORMAT A1  YTICKS divisions              YTICKLEN 0 1  YTITLE cb_title  YSTYLE 1  COLOR cb_color               CHARSIZE cb_charsize  CHARTHICK cb_charthick  ylog   cb_log        ENDELSE     ENDIF ELSE BEGIN        IF KEYWORD_SET top  THEN BEGIN           PLOT   min max   min max   NODATA  XTICKS divisions              YTICKS 1  XSTYLE 9  YSTYLE 1              POSITION position  COLOR cb_color  CHARSIZE cb_charsize               CHARTHICK cb_charthick   NOERASE              YTICKFORMAT A1  XTICKFORMAT A1  XTICKLEN 0 1              XRANGE min  max  XTITLE cb_title           AXIS  XTICKS divisions  XSTYLE 1  COLOR cb_color               CHARSIZE cb_charsize  CHARTHICK cb_charthick              XTICKFORMAT format  XTICKLEN 0 1  XRANGE min  max  XAXIS 1  xtickname   cb_label  xlog   cb_log        ENDIF ELSE BEGIN           PLOT   min max   min max   NODATA  XTICKS divisions              YTICKS 1  XSTYLE 1  YSTYLE 1              POSITION position  COLOR cb_color  CHARSIZE cb_charsize               CHARTHICK cb_charthick   NOERASE              YTICKFORMAT A1  XTICKFORMAT format  XTICKLEN 0 1              XRANGE min  max  TITLE cb_title  xtickname   cb_label  xlog   cb_log        ENDELSE     ENDELSE   Restore color variable if changed for PostScript      IF postScriptDevice AND  pscolor NE 1  THEN cb_color   oldcolor     return END");
+a[10] = new Array("./Colors/colorbar.html", "colorbar.pro", "", "       file_comments   The purpose of this routine is to add a color bar to the current   graphics window       categories   Graphics      keyword BOTTOM  default 0B    The lowest color index of the colors to be loaded in the bar       keyword CB_CHARSIZE  default 1 0    The character size of the color bar annotations       keyword CB_CHARTHICK  default 1 0    The character thick of the color bar annotations       keyword CB_COLOR  default ncolors   1   bottom    The color index of the bar outline and characters       keyword CB_LOG   to get logarithmic scale for the colorbar      keyword CB_TITLE  default    This is title for the color bar       keyword DISCRETE   Vector which contain color s indexes to trace in a color bar  Therefore   we obtain a discrete colorbar which contains only the specified colors   in the order they appear in the vector      keyword DIVISIONS  default 2    The number of divisions to divide the bar into    There will be  divisions   1  annotations       keyword FORMAT  default F6 2    The format of the bar annotations       keyword CB_LABEL  type vector    A vector to specify sticks values of the color bar  It allows    when we use DISCRETE  to have colors that don t increase by   increments in a regular way       keyword MAX  default NCOLORS   1    The maximum data value for the bar annotation       keyword MIN  default 0    The minimum data value for the bar annotation       keyword NCOLORS  default D N_COLORS    This is the number of colors in the color bar       keyword NOTITLE   Force to don t write title even if CB_TITLE is declared       keyword POSITION  default see below    A four element array of normalized coordinates in the same   form as the POSITION keyword on a plot  Default is    0 88  0 15  0 95  0 95  for a vertical bar and    0 15  0 88  0 95  0 95  for a horizontal bar       keyword PSCOLOR   This keyword is only applied if the output is being sent to   a Postscript file  It indicates that the Postscript device   is configured for color output  If this keyword is set  then   the annotation is drawn in the color specified by the COLOR   keyword  If the keyword is not set  the annotation is drawn   in the color specified by the  P COLOR system variable    usually this will be the color black  In general  this   gives better looking output on non color or gray scale   printers  If you are not specifically setting the annotation   color  with the COLOR keyword  it will probably   be better NOT to set this keyword either  even if you   are outputting to a color Postscript printer       keyword RIGHT   This puts the labels on the right hand side of a vertical   color bar  It applies only to vertical color bars       keyword TOP   This puts the labels on top of the bar rather than under it    The keyword only applies if a horizontal color bar is rendered       keyword VERTICAL  default 0   horizontal color bar    Setting this keyword give a vertical color bar       keyword _EXTRA   pass any keyword to colorbar      restrictions   The number of colors available on the display device  not the   Postscript device  is used unless the NCOLORS keyword is used       examples   To display a horizontal color bar above a contour plot  type:     IDL  LOADCT  5  NCOLORS 100   IDL  CONTOUR  DIST 31 41  POSITION 0 15  0 15  0 95  0 75      IDL  C_COLORS INDGEN 25 4  NLEVELS 25   IDL  COLORBAR  NCOLORS 100      history   Written by: David Fanning  10 JUNE 96    10 27 96: Added the ability to send output to PostScript  DWF   11 04 96: Substantially rewritten to go to screen or PostScript             file without having to know much about the PostScript device             or even what the current graphics device is  DWF   01 27 97: Added the RIGHT and TOP keywords  Also modified the             way the TITLE keyword works  DWF   07 15 97: Fixed a problem some machines have with plots that have             no valid data range in them  DWF   03 03 98: Add DISCRETE keyword  sebastien masson  smasson lodyc jussieu fr       version    Id: colorbar pro 358 2008 04 28 09:41:14Z pinsard       PRO colorbar  BOTTOM bottom  CB_CHARSIZE cb_charsize                 CB_CHARTHICK cb_charthick                 CB_COLOR cb_color  DIVISIONS divisions  DISCRETE discrete                 CB_LABEL cb_label  FORMAT format  POSITION position                 MAX max  MIN min  NCOLORS ncolors  PSCOLOR pscolor                 CB_TITLE cb_title  VERTICAL vertical  TOP top  RIGHT right                 CB_LOG CB_log  NOTITLE notitle  _EXTRA ex     compile_opt idl2  strictarrsubs     Is the PostScript device selected     postScriptDevice    D NAME EQ  PS                                     Check and define keywords      IF N_ELEMENTS ncolors  EQ 0 THEN BEGIN    Most display devices to not use the 256 colors available to   the PostScript device  This presents a problem when writing   general purpose programs that can be output to the display or   to the PostScript device  This problem is especially bothersome   if you don t specify the number of colors you are using in the   program  One way to work around this problem is to make the   default number of colors the same for the display device and for   the PostScript device  Then  the colors you see in PostScript are   identical to the colors you see on your display  Here is one way to   do it         IF postScriptDevice THEN BEGIN          oldDevice    D NAME    What kind of computer are we using  SET_PLOT to appropriate   display device            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    Open a window  to make sure  D N_COLORS is accurate            WINDOW   FREE   PIXMAP  XSIZE 10  YSIZE 10          WDELETE   D WINDOW    Here is how many colors we should use            ncolors    D N_COLORS          SET_PLOT  oldDevice          IF oldDevice EQ  X  OR oldDevice EQ  MAC  OR oldDevice 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       ENDIF ELSE ncolors    D N_COLORS    ENDIF    IF N_ELEMENTS bottom  EQ 0 THEN bottom   0B    IF N_ELEMENTS cb_charsize  EQ 0 THEN cb_charsize   1 0    IF N_ELEMENTS cb_charthick  EQ 0 THEN cb_charthick   1 0    IF N_ELEMENTS format  EQ 0 THEN format    F6 2     IF N_ELEMENTS cb_color  EQ 0 THEN cb_color   ncolors   1   bottom    IF N_ELEMENTS min  EQ 0 THEN min   0 0    IF N_ELEMENTS max  EQ 0 THEN max   FLOAT ncolors    1    IF N_ELEMENTS divisions  EQ 0 THEN divisions   2    IF N_ELEMENTS cb_title  EQ 0 THEN cb_title        IF N_ELEMENTS notitle  EQ 1 THEN cb_title        pscolor   KEYWORD_SET pscolor      IF KEYWORD_SET vertical  THEN BEGIN       IF KEYWORD_SET discrete  THEN begin          facteur 256 n_elements discrete           discrete reform replicate 1 facteur    discrete facteur n_elements discrete   overwrite           bar   REPLICATE 1B 10    discrete       endif else  bar   REPLICATE 1B 10    BINDGEN 256        IF N_ELEMENTS position  EQ 0 THEN position    0 88  0 15  0 95  0 95     ENDIF ELSE BEGIN       IF KEYWORD_SET discrete  THEN begin          facteur 256 n_elements discrete           discrete reform replicate 1 facteur    discrete facteur n_elements discrete   overwrite           bar    discrete   REPLICATE 1B 10        endif else bar   BINDGEN 256    REPLICATE 1B  10        IF N_ELEMENTS position  EQ 0 THEN position    0 15  0 88  0 95  0 95     ENDELSE    Scale the color bar     IF NOT KEYWORD_SET discrete  THEN       bar   BYTSCL bar  TOP ncolors 1    bottom    Get starting locations in DEVICE coordinates      xstart   position 0     D X_VSIZE    ystart   position 1     D Y_VSIZE    Get the size of the bar in DEVICE coordinates      xsize    position 2    position 0     D X_VSIZE    ysize    position 3    position 1     D Y_VSIZE    For PostScript output only  draw the annotation in  P COLOR   unless  pscolor  is set  This makes better output on grayscale   printers      IF postScriptDevice AND  pscolor NE 1  THEN BEGIN       oldcolor   cb_color       cb_color    P COLOR    ENDIF    Display the color bar in the window  Sizing is   different for PostScript and regular display      IF postScriptDevice THEN BEGIN        TV  bar  xstart  ystart  XSIZE xsize  YSIZE ysize     ENDIF ELSE BEGIN       IF CEIL xsize  LT 0 OR CEIL ysize  LT 0 THEN return       bar   CONGRID bar  CEIL xsize  CEIL ysize   INTERP        TV  bar  xstart  ystart     ENDELSE    Annotate the color bar      if keyword_set cb_label  then begin       divisions   n_elements cb_label 1       for i   0 divisions DO cb_label   string cb_label  FORMAT   format        format        ENDIF ELSE cb_label          IF KEYWORD_SET vertical  THEN BEGIN        IF KEYWORD_SET right  THEN BEGIN           PLOT   min max   min max   NODATA  XTICKS 1              YTICKS divisions  XSTYLE 1  YSTYLE 9              POSITION position  COLOR cb_color  CHARSIZE cb_charsize  CHARTHICK cb_charthick                NOERASE              YTICKFORMAT A1  XTICKFORMAT A1  YTICKLEN 0 1               YRANGE min  max  YTITLE cb_title           AXIS  YAXIS 1  YRANGE min  max  YTICKFORMAT format  YTICKS divisions              YTICKLEN 0 1  YSTYLE 1  COLOR cb_color  CHARTHICK cb_charthick               CHARSIZE cb_charsize  xtickname   cb_label  ylog   cb_log        ENDIF ELSE BEGIN           PLOT   min max   min max   NODATA  XTICKS 1              YTICKS divisions  XSTYLE 1  YSTYLE 9              POSITION position  COLOR cb_color  CHARSIZE cb_charsize               CHARTHICK cb_charthick   NOERASE              YTICKFORMAT format  XTICKFORMAT A1  YTICKLEN 0 1               YRANGE min  max  xtickname   cb_label           AXIS  YAXIS 1  YRANGE min  max  YTICKFORMAT A1  YTICKS divisions              YTICKLEN 0 1  YTITLE cb_title  YSTYLE 1  COLOR cb_color               CHARSIZE cb_charsize  CHARTHICK cb_charthick  ylog   cb_log        ENDELSE     ENDIF ELSE BEGIN        IF KEYWORD_SET top  THEN BEGIN           PLOT   min max   min max   NODATA  XTICKS divisions              YTICKS 1  XSTYLE 9  YSTYLE 1              POSITION position  COLOR cb_color  CHARSIZE cb_charsize               CHARTHICK cb_charthick   NOERASE              YTICKFORMAT A1  XTICKFORMAT A1  XTICKLEN 0 1              XRANGE min  max  XTITLE cb_title           AXIS  XTICKS divisions  XSTYLE 1  COLOR cb_color               CHARSIZE cb_charsize  CHARTHICK cb_charthick              XTICKFORMAT format  XTICKLEN 0 1  XRANGE min  max  XAXIS 1  xtickname   cb_label  xlog   cb_log        ENDIF ELSE BEGIN           PLOT   min max   min max   NODATA  XTICKS divisions              YTICKS 1  XSTYLE 1  YSTYLE 1              POSITION position  COLOR cb_color  CHARSIZE cb_charsize               CHARTHICK cb_charthick   NOERASE              YTICKFORMAT A1  XTICKFORMAT format  XTICKLEN 0 1              XRANGE min  max  TITLE cb_title  xtickname   cb_label  xlog   cb_log        ENDELSE     ENDELSE   Restore color variable if changed for PostScript      IF postScriptDevice AND  pscolor NE 1  THEN cb_color   oldcolor     return END");
 a[11] = new Array("./Colors/getcolor.html", "getcolor.pro", "", "       file_comments   The original purpose of this function was to enable the   user to specify one of the 16 colors supported by the   McIDAS color map by name  Over time  however  the function   has become a general purpose function for handling and   supporting drawing colors in a device independent way    In particular  I have been looking for ways to write color   handling code that will work transparently on both 8 bit and   24 bit machines  On 24 bit machines  the code should work the   same where color decomposition is turned on or off       The 16 supported colors in GETCOLOR come from the McIDAS color   table offered on the IDL newsgroup by Liam Gumley       categories   Graphics  Color      param thiscolor  in optional    A string with the  name  of the color  Valid names are:             black             magenta             cyan             yellow             green             red             blue             navy             gold             pink             aqua             orchid             gray             sky             beige             white     The color YELLOW is returned if the color name can t be resolved    Case is unimportant       param index  in optional    The color table index where the specified color should be loaded       returns   If no positional parameter is present  then the return value is either a 16 by 3   byte array containing the RGB values of all 16 colors or it is a 16 element   long integer array containing color values that can be decomposed into colors    The 16 by 3 array is appropriate for loading color tables with the TVLCT command:               Device  Decomposed 0             colors   GetColor              TVLCT  colors  100     If  function is called with just this single input parameter    the return value is either a 1 by 3 array containing the RGB values of   that particular color  or a 24 bit integer that can be  decomposed  into   that particular color  depending upon the state of the TRUE keyword and   upon whether color decomposition is turned on or off  The state of color   decomposition can ONLY be determined if the program is being run in   IDL 5 2 or higher      If index parameter is passed  then the return value of the function is the   index number and not the color triple   If color decomposition is turned   on AND the user specifies an index parameter  the color is loaded in the   color table at the proper index  but a 24 bit value is returned to the   user in IDL 5 2 and higher         keyword NAMES   If this keyword is set  the return value of the function is   a 16 element string array containing the names of the colors    These names would be appropriate  for example  in building   a list widget with the names of the colors  If the NAMES   keyword is set  the COLOR and INDEX parameters are ignored      listID   Widget_List baseID  Value GetColor Names  YSize 16       keyword LOAD   If this keyword is set  all 16 colors are automatically loaded   starting at the color index specified by the START keyword    Note that setting this keyword means that the return value of the   function will be a structure  with each field of the structure   corresponding to a color name  The value of each field will be   an index number  set by the START keyword  corresponding to the   associated color  or a 24 bit long integer value that creates the   color on a true color device  What you have as the field values is   determined by the TRUE keyword or whether color decomposition is on   or off in the absence of the TRUE keyword  It will either be a 1 by 3   byte array or a long integer value       keyword START  default D TABLE_SIZE   17    The starting color index number if the LOAD keyword is set  This keyword   value is ignored unless the LOAD keyword is also set  The keyword is also   ignored if the TRUE keyword is set or if color decomposition in on in   IDL 5 2 and higher       keyword TRUE   If this keyword is set  the specified color triple is returned   as a 24 bit integer equivalent  The lowest 8 bits correspond to   the red value  the middle 8 bits to the green value  and the   highest 8 bits correspond to the blue value  In IDL 5 2 and higher    if color decomposition is turned on  it is as though this keyword   were set       restrictions   The TRUE keyword causes the START keyword to be ignored    The NAMES keyword causes the COLOR  INDEX  START  and TRUE parameters to be   ignored    The COLOR parameter is ignored if the LOAD keyword is used    On systems where it is possible to tell the state of color decomposition    i e  IDL 5 2 and higher  a 24 bit value  or values  is automatically   returned if color decomposition is ON       examples   To load a yellow color in color index 100 and plot in yellow  type:          IDL  yellow   GETCOLOR yellow  100         IDL  PLOT  data  COLOR yellow     or           IDL  PLOT  data  COLOR GETCOLOR yellow  100      To do the same thing on a 24 bit color system with decomposed color on  type:          IDL  PLOT  data  COLOR GETCOLOR yellow   TRUE      or in IDL 5 2 and higher           IDL  DEVICE  Decomposed 1        IDL  PLOT  data  COLOR GETCOLOR yellow      To load all 16 colors into the current color table  starting at   color index 200  type:          IDL  TVLCT  GETCOLOR  200     To add the color names to a list widget:          IDL  listID   Widget_List baseID  Value GetColor Names  YSize 16      To load all 16 colors and have the color indices returned in a structure:          IDL  DEVICE  Decomposed 0        IDL  colors   GetColor Load  Start 1         IDL  HELP  colors   Structure        PLOT  data  COLOR colors yellow     To get the direct color values as 24 bit integers in color structure fields:          IDL  DEVICE  Decomposed 1        IDL  colors   GetColor Load         IDL  PLOT  data  COLOR colors yellow     Note that the START keyword value is ignored if on a 24 bit device    so it is possible to write completely device independent code by   writing code like this:          IDL  colors   GetColor Load         IDL  PLOT  data  Color colors yellow            IDL  DEVICE  Decomposed 0        IDL  colors   GetColor Load  Start 1         IDL  HELP  colors   Structure        PLOT  data  COLOR colors yellow     To get the direct color values as 24 bit integers in color structure fields:          IDL  DEVICE  Decomposed 1        IDL  colors   GetColor Load         IDL  PLOT  data  COLOR colors yellow     Note that the START keyword value is ignored if on a 24 bit device    so it is possible to write completely device independent code by   writing code like this:          IDL  colors   GetColor Load         IDL  PLOT  data  Color colors yellow      history   Written by: David Fanning  10 February 96    Fixed a bug in which N_ELEMENTS was spelled wrong  7 Dec 96  DWF   Added the McIDAS colors to the program  24 Feb 99  DWF   Added the INDEX parameter to the program 8 Mar 99  DWF   Added the NAMES keyword at insistence of Martin Schultz  10 Mar 99  DWF   Reordered the colors so black is first and white is last  7 June 99  DWF   Added automatic recognition of DECOMPOSED 1 state  7 June 99  DWF   Added LOAD AND START keywords  7 June 99  DWF       version    Id: getcolor pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION getcolor  thiscolor  index  TRUE truecolor                      NAMES colornames  LOAD load  START start     compile_opt idl2  strictarrsubs         Set up the color vectors   names     Black   Magenta   Cyan   Yellow   Green  rvalue      0         255        0       255        0    gvalue      0           0      255       255      255    bvalue      0         255      255         0        0    names     names    Red   Blue   Navy   Gold   Pink  rvalue    rvalue   255      0       0     255     255    gvalue    gvalue     0      0       0     187     127    bvalue    bvalue     0    255     115       0     127    names     names    Aqua   Orchid   Gray   Sky   Beige   White  rvalue    rvalue    112      219      127     0      255      255    gvalue    gvalue    219      112      127   163      171      255    bvalue    bvalue    147      219      127   255      127      255          Did the user ask for a specific color  If not  return      all the colors  If the user asked for a specific color       find out if a 24 bit value is required  Return to main      IDL level if an error occurs   ON_Error  1 np   N_Params  IF Keyword_Set start  EQ 0 THEN start    D TABLE_SIZE   17       User ask for the color names   IF Keyword_Set colornames  THEN RETURN  names ELSE names   StrUpCase names        If no positional parameter  return all colors   IF np EQ 0 THEN BEGIN       Did the user want a 24 bit value  If so  call COLOR24      IF Keyword_Set trueColor  THEN BEGIN       returnColor   LonArr 16        FOR j 0 15 DO returnColor j    Color24 rvalue j  gvalue j  bvalue j              If LOAD keyword set  return a color structure         IF Keyword_Set load  THEN BEGIN          returnValue   Create_Struct black  returnColor 0           FOR j 1 15 DO returnValue   Create_Struct returnValue  names j  returnColor j           returnColor   returnValue       ENDIF        RETURN  returnColor    ENDIF       If color decomposition is ON  return 24 bit values      IF Float Version Release  GE 5 2 THEN BEGIN       IF  D Name EQ  X  OR  D Name EQ  WIN  OR  D Name EQ  MAC  THEN BEGIN          Device  Get_Decomposed decomposedState       ENDIF ELSE decomposedState   0       IF decomposedState EQ 1 THEN BEGIN          returnColor   LonArr 16           FOR j 0 15 DO returnColor j    Color24 rvalue j  gvalue j  bvalue j           IF Keyword_Set load  THEN BEGIN             returnValue   Create_Struct black  returnColor 0              FOR j 1 15 DO returnValue   Create_Struct returnValue  names j  returnColor j              RETURN  returnValue          ENDIF          RETURN  returnColor       ENDIF        IF Keyword_Set load  THEN BEGIN          TVLCT  Reform rvalue  gvalue  bvalue  16  3  start          returnValue   Create_Struct black  start           FOR j 1 15 DO returnValue   Create_Struct returnValue  names j  start j           RETURN  returnValue       ENDIF        returnColor   REFORM rvalue  gvalue  bvalue  16  3        RETURN  returnColor     ENDIF     IF Keyword_Set load  THEN BEGIN       TVLCT  Reform rvalue  gvalue  bvalue  16  3  start       returnValue   Create_Struct black  start        FOR j 1 15 DO returnValue   Create_Struct returnValue  names j  start j        RETURN  returnValue    ENDIF     returnColor   REFORM rvalue  gvalue  bvalue  16  3     RETURN  returnColor  ENDIF       Check synonyms of colors   IF StrUpCase thisColor  EQ  GREY  THEN thisColor    GRAY  IF StrUpCase thisColor  EQ  CHARCOAL  THEN thisColor    GRAY  IF StrUpCase thisColor  EQ  AQUAMARINE  THEN thisColor    AQUA  IF StrUpCase thisColor  EQ  SKYBLUE  THEN thisColor    SKY        Make sure the parameter is an uppercase string   varInfo   SIZE thisColor  IF varInfo varInfo 0    1  NE 7 THEN      ras   report The color name must be a string  thisColor   STRUPCASE thisColor        Get the color triple for this color   colorIndex   WHERE names EQ thisColor        If you can t find it  Issue an informational message       set the index to a YELLOW color  and continue   IF colorIndex 0  LT 0 THEN BEGIN    ras  report Can t find color  Returning YELLOW   INFORMATIONAL     colorIndex   3 ENDIF       Get the color triple   r   rvalue colorIndex  g   gvalue colorIndex  b   bvalue colorIndex  returnColor   REFORM r  g  b  1  3        Did the user want a 24 bit value  If so  call COLOR24   IF KEYWORD_SET trueColor  THEN BEGIN    returnColor   COLOR24 returnColor     RETURN  returnColor ENDIF       If color decomposition is ON  return 24 bit value   IF Float Version Release  GE 5 2 THEN BEGIN        IF  D Name EQ  X  OR  D Name EQ  WIN  OR  D Name EQ  MAC  THEN BEGIN          Device  Get_Decomposed decomposedState       ENDIF ELSE decomposedState   0     IF decomposedState EQ 1 THEN BEGIN             Before you change return color  load index if requested         IF N_Elements index  NE 0 THEN BEGIN          index   0   index  index    D Table_Size 1     TVLCT  returnColor  index    returnColor   index ENDIF  RETURN  returnColor END");
 a[12] = new Array("./Colors/lct.html", "lct.pro", "", "       file_comments   Fastest than type loadct  file    palette tbl       categories   Graphics  Color      param numpal  in optional    number of the color palette we want to select in the file palette tbl      keyword LIGHTNESS   a scalar used to change the Lightness of the color   palette to be able to adjust according to the printer we use    the media  paper or slide                  lightness  1 to get darker colors      keyword FILE  default palette tbl    The file containing the color palette  It can be in any directory of the  path      keyword GET_NAME   Set this keyword to a named variable in which the names of the color tables   are returned as a string array  No changes are made to the color table       keyword _EXTRA   Used to pass keywords to LOADCT      history   Sebastien Masson  smasson lodyc jussieu fr    30 3 1999: add extra   6 7 1999: mac windows compatibility      version    Id: lct pro 327 2007 12 13 16:22:35Z pinsard       PRO lct  numpal  FILE file  GET_NAME get_name  LIGHTNESS lightness  _EXTRA ex     compile_opt idl2  strictarrsubs     definition of the name of the file containing colors palettes    if keyword_set file  then nametbl   file ELSE nametbl    palette tbl    look for nametbl file   nametbl   find nametbl   firstfound   nopro    if nametbl NE  NOT FOUND  then BEGIN     if n_elements ex  NE 0 then          if  where tag_names ex  EQ  FILE 0  NE  1 then ex FILE   nametbl   if we are in POSTSCRIPT mode  we have to pass in X mode in order to change the color palette     oldname    d name     if  d name EQ  PS  OR  d name EQ  Z  then BEGIN       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     ENDIF       if arg_present get_name  then begin       if n_elements numpal  EQ 0 then            loadct  file   nametbl  GET_NAME   get_name  _EXTRA   ex         ELSE loadct  numpal  file   nametbl   silent  GET_NAME   get_name  _EXTRA   ex     ENDIF ELSE BEGIN       if n_elements numpal  EQ 0 then loadct  file   nametbl  _EXTRA   ex         ELSE loadct  numpal  file   nametbl   silent  _EXTRA   ex     ENDELSE       if oldname EQ  PS  AND keyword_set lightness  then palit  lightness       set_plot  oldname     IF oldname EQ  X  OR oldname EQ  MAC  OR oldname 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    ENDIF ELSE ras   report The file containing the color palettes doesn t exist     return end");
@@ -42,5 +42,5 @@
 a[40] = new Array("./Grid/n48gaussian.html", "n48gaussian.pro", "", "       file_comments   compute the latitudes of the n48 gaussian grid  See:   Gaussian 48      categories   Grid      examples   IDL  lat n48gaussian       returns   a 1d array      history        Sebastien Masson  smasson lodyc jussieu fr         June 2004      version    Id: n48gaussian pro 325 2007 12 06 10:04:53Z pinsard       FUNCTION n48gaussian     compile_opt idl2  strictarrsubs              latitude   reduced     regular  latitude             number     points      points                              n48         1          20         192   88 57216                  2          25         192   86 72253                  3          36         192   84 86197                  4          40         192   82 99894                  5          45         192   81 13497                  6          50         192   79 27055                  7          60         192   77 40588                  8          60         192   75 54106                  9          72         192   73 67613                  10          75         192   71 81113                  11          80         192   69 94608                  12          90         192   68 08099                  13          96         192   66 21587                  14         100         192   64 35073                  15         108         192   62 48557                  16         120         192   60 62039                  17         120         192   58 75520                  18         120         192   56 89001                  19         128         192   55 02480                  20         135         192   53 15959                  21         144         192   51 29437                  22         144         192   49 42915                  23         160         192   47 56392                  24         160         192   45 69869                  25         160         192   43 83345                  26         160         192   41 96822                  27         160         192   40 10297                  28         180         192   38 23773                  29         180         192   36 37249                  30         180         192   34 50724                  31         180         192   32 64199                  32         180         192   30 77674                  33         192         192   28 91149                  34         192         192   27 04623                  35         192         192   25 18098                  36         192         192   23 31573                  37         192         192   21 45047                  38         192         192   19 58521                  39         192         192   17 71996                  40         192         192   15 85470                  41         192         192   13 98944                  42         192         192   12 12418                  43         192         192   10 25892                  44         192         192    8 39366                  45         192         192    6 52840                  46         192         192    4 66314                  47         192         192    2 79788                  48         192         192    0 93262      n48   reform n48  4  48   over    n48   reform n48 3     over    n48    n48   reverse n48     return  n48 end");
 a[41] = new Array("./Grid/n80gaussian.html", "n80gaussian.pro", "", "       file_comments   compute the latitudes of the n80 gaussian grid  See:   Gaussian 80      categories   Grid      examples   IDL  lat n80gaussian       returns   a 1d array      history        Sebastien Masson  smasson lodyc jussieu fr         June 2004      version    Id: n80gaussian pro 325 2007 12 06 10:04:53Z pinsard       FUNCTION n80gaussian     compile_opt idl2  strictarrsubs              latitude   reduced     regular  latitude             number     points      points                              n80         1          18         320   89 14152                  2          25         320   88 02943                  3          36         320   86 91077                  4          40         320   85 79063                  5          45         320   84 66992                  6          54         320   83 54895                  7          60         320   82 42782                  8          64         320   81 30659                  9          72         320   80 18531                  10          72         320   79 06398                  11          80         320   77 94262                  12          90         320   76 82124                  13          96         320   75 69984                  14         100         320   74 57843                  15         108         320   73 45701                  16         120         320   72 33558                  17         120         320   71 21414                  18         128         320   70 09269                  19         135         320   68 97124                  20         144         320   67 84978                  21         144         320   66 72833                  22         150         320   65 60686                  23         160         320   64 48540                  24         160         320   63 36393                  25         180         320   62 24246                  26         180         320   61 12099                  27         180         320   59 99952                  28         192         320   58 87804                  29         192         320   57 75657                  30         200         320   56 63509                  31         200         320   55 51361                  32         216         320   54 39214                  33         216         320   53 27066                  34         216         320   52 14917                  35         225         320   51 02769                  36         225         320   49 90621                  37         240         320   48 78473                  38         240         320   47 66325                  39         240         320   46 54176                  40         256         320   45 42028                  41         256         320   44 29879                  42         256         320   43 17731                  43         256         320   42 05582                  44         288         320   40 93434                  45         288         320   39 81285                  46         288         320   38 69137                  47         288         320   37 56988                  48         288         320   36 44839                  49         288         320   35 32691                  50         288         320   34 20542                  51         288         320   33 08393                  52         288         320   31 96244                  53         300         320   30 84096                  54         300         320   29 71947                  55         300         320   28 59798                  56         300         320   27 47649                  57         320         320   26 35500                  58         320         320   25 23351                  59         320         320   24 11203                  60         320         320   22 99054                  61         320         320   21 86905                  62         320         320   20 74756                  63         320         320   19 62607                  64         320         320   18 50458                  65         320         320   17 38309                  66         320         320   16 26160                  67         320         320   15 14011                  68         320         320   14 01862                  69         320         320   12 89713                  70         320         320   11 77564                  71         320         320   10 65415                  72         320         320    9 53266                  73         320         320    8 41117                  74         320         320    7 28968                  75         320         320    6 16819                  76         320         320    5 04670                  77         320         320    3 92521                  78         320         320    2 80372                  79         320         320    1 68223                  80         320         320    0 56074      n80   reform n80  4  80   over    n80   reform n80 3     over    n80    n80   reverse n80     return  n80 end");
-a[42] = new Array("./Grid/ncdf_meshread.html", "ncdf_meshread.pro", "", "       file_comments   read NetCDF meshmask file created by OPA      categories   Grid      examples   IDL  ncdf_meshread   filename       param filename  in optional default meshmask nc type scalar string       Name of the meshmask file to read  If this name does not contain any        and if iodirectory keyword is not specified  then the common variable      iodir will be used to define the mesh file path       keyword GLAMBOUNDARY  default those defined in the file type 2 elements vector       Longitude boundaries that should be used to visualize the data         lon2   lon1        lon2   lon1 le 360      By default  the common  cm_4mesh  variable key_shift will be automatically      defined according to GLAMBOUNDARY       keyword CHECKDAT   Suppressed  Use micromeshmask to create an appropriate meshmask       keyword ONEARTH  default 1 type scalar: 0 or 1       Force the manual definition of data localization on the earth or not         0  if the data are not on the earth         1  if the data are on earth  in that case we can for example use            the labels  longitude   latitude  in plots       The resulting value will be stored in the common  cm_4mesh  variable key_onearth      ONEARTH 0 forces PERIODIC 0  SHIFT 0 and is cancelling GLAMBOUNDARY      keyword GETDIMENSIONS  default 0 type scalar: 0 or 1       Activate this keywords if you only want to know the dimension      of the domain stored in the mesh file  This dimension will be      defined in jpiglo  jpjglo  jpkglo  cm_4mesh common variables       keyword PERIODIC  default computed by using the first line of glamt type scalar: 0 or 1       Force the manual definition of the grid zonal periodicity       The resulting value will be stored in the common  cm_4mesh  variable key_periodic      PERIODIC 0 forces SHIFT 0      keyword SHIFT  default computed according to glamboundary type scalar       Force the manual definition of the zonal shift that must be apply to the data       The resulting value will be stored in the common  cm_4mesh  variable key_shift      Note that if key_periodic 0 then in any case key_shift   0       keyword STRCALLING  type scalar string       the calling command used to call computegrid  this is used by xxx       keyword STRIDE  default 1  1  1 type 3 elements vector       Specify the stride in x  y and z direction  The resulting      value will be stored in the common  cm_4mesh  variable key_stride      keyword _EXTRA   Used to pass keywords to isafile      uses   cm_4mesh   cm_4data   cm_4cal      restrictions   ixminmesh  ixmaxmesh  iyminmesh  iymaxmesh  izminmesh  izmaxmesh must   be defined before calling ncdf_meshread  If some of those values   are equal to  1 they will be automatically defined      history   Sebastien Masson  smasson lodyc jussieu fr                         12 1999   July 2004  Sebastien Masson: Several modifications  micromeshmask    clean partial steps  clean use of key_stride  automatic definition   of key_shift      Oct  2004  Sebastien Masson: add PERIODIC and SHIFT   Aug  2005  Sebastien Masson: some cleaning   english      version    Id: ncdf_meshread pro 327 2007 12 13 16:22:35Z pinsard       PRO ncdf_meshread  filename  GLAMBOUNDARY glamboundary  CHECKDAT checkdat                       ONEARTH onearth  GETDIMENSIONS getdimensions                       PERIODIC periodic  SHIFT shift  STRIDE stride                       STRCALLING strcalling  _EXTRA ex     compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF     tempsun   systime 1             for key_performance   IF keyword_set CHECKDAT  THEN BEGIN     ras   report  The keyword CHECKDAT has been suppressed  it could create bugs          Remove it from the call of ncdf_meshread          Please use smallmeshmask pro or micromeshmask pro to create a          meshmask that has manageable size      return   ENDIF     find meshfile name and open it      def of filename by default   IF n_params  EQ 0 then filename    meshmask nc    meshname   isafile file   filename  iodirectory   iodir  _EXTRA   ex    meshname   meshname 0      noticebase   xnotice Reading file  C  meshname C     if the meshmask is on tape archive   get it back   IF  version OS_FAMILY EQ  unix  THEN spawn   file  meshname     dev null    cdfid   ncdf_open meshname    inq   ncdf_inquire cdfid      dimensions     ncdf_diminq  cdfid   x  name  jpiglo   ncdf_diminq  cdfid   y  name  jpjglo   listdims   strlowcase ncdf_listdims cdfid    IF  where listdims EQ  z 0  NE  1 THEN ncdf_diminq  cdfid   z  name  jpkglo ELSE BEGIN     dimid    where strmid listdims  0  5  EQ  depth 0      IF dimid NE  1 THEN ncdf_diminq  cdfid  dimid  name  jpkglo ELSE BEGIN       dummy   report We could not find the vertical dimension  its name must be z or start with depth        stop     ENDELSE   ENDELSE     if keyword_set getdimensions  then begin     widget_control  noticebase  bad_id   nothing   destroy     ncdf_close   cdfid     return   endif     check that all i xyz min ax mesh are well defined     if n_elements ixminmesh  EQ 0 THEN ixminmesh   0   if n_elements ixmaxmesh  EQ 0 then ixmaxmesh   jpiglo 1   if ixminmesh EQ  1 THEN ixminmesh   0   IF ixmaxmesh EQ  1 then ixmaxmesh   jpiglo 1   if n_elements iyminmesh  EQ 0 THEN iyminmesh   0   IF n_elements iymaxmesh  EQ 0 then iymaxmesh   jpjglo 1   if iyminmesh EQ  1 THEN iyminmesh   0   IF iymaxmesh EQ  1 then iymaxmesh   jpjglo 1   if n_elements izminmesh  EQ 0 THEN izminmesh   0   IF n_elements izmaxmesh  EQ 0 then izmaxmesh   jpkglo 1   if izminmesh EQ  1 THEN izminmesh   0   IF izmaxmesh EQ  1 then izmaxmesh   jpkglo 1   definition of jpi jpj jpj   jpi   long ixmaxmesh ixminmesh 1    jpj   long iymaxmesh iyminmesh 1    jpk   long izmaxmesh izminmesh 1      check onearth and its consequences     IF n_elements onearth  EQ 0 THEN key_onearth   1     ELSE key_onearth   keyword_set onearth    IF NOT key_onearth THEN BEGIN     periodic   0     shift   0   ENDIF     automatic definition of key_periodic     IF n_elements periodic  EQ 0 THEN BEGIN     IF jpi GT 1 THEN BEGIN       varinq   ncdf_varinq cdfid   glamt        CASE varinq ndims OF         2:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  count    jpi  1          3:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  count    jpi  1  1          4:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  0  count    jpi  1  1  1        ENDCASE       xaxis    xaxis 720  MOD 360       xaxis   xaxis sort xaxis        key_periodic    xaxis jpi 1 2 xaxis jpi 1 xaxis jpi 2                         GE  xaxis 0 360      ENDIF ELSE key_periodic   0   ENDIF ELSE key_periodic   keyword_set periodic      automatic definition of key_shift     IF n_elements shift  EQ 0 THEN BEGIN     key_shift   long testvar var   key_shift     key_shift will be defined according to the first line of glamt      if keyword_set glamboundary  AND jpi GT 1 AND key_periodic EQ 1       THEN BEGIN       varinq   ncdf_varinq cdfid   glamt        CASE varinq ndims OF         2:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  count    jpi  1          3:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  count    jpi  1  1          4:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  0  count    jpi  1  1  1        ENDCASE   xaxis between glamboundary 0  and glamboundary 1        xaxis   xaxis MOD 360       smaller   where xaxis LT glamboundary 0        if smaller 0  NE  1 then xaxis smaller    xaxis smaller 360       bigger   where xaxis GE glamboundary 1        if bigger 0  NE  1 then xaxis bigger    xaxis bigger 360         key_shift    where xaxis EQ min xaxis 0        IF key_shift NE 0 THEN BEGIN         key_shift   jpi key_shift         xaxis   shift xaxis  key_shift        ENDIF         IF array_equal sort xaxis  lindgen jpi  NE 1 THEN BEGIN         ras   report the x axis  1st line of glamt  is not sorted in the increasing order after the automatic definition of key_shift             please use the keyword shift  and periodic  to suppress the automatic definition of key_shift  and key_periodic  and define by hand a more suitable value          widget_control  noticebase  bad_id   nothing   destroy         return       ENDIF       ENDIF ELSE key_shift   0   ENDIF ELSE key_shift   long shift key_periodic EQ 1      check key_stride and related things     if n_elements stride  eq 3 then key_stride   stride   if n_elements key_stride  LE 2 then key_stride    1  1  1    key_stride   1l   long key_stride    IF total key_stride  NE 3  THEN BEGIN     IF key_shift NE 0 THEN BEGIN   for explanation  see header of read_ncdf_varget pro       jpiright   key_shift       jpileft   jpi   key_shift      key_stride 0 1 key_shift 1  MOD key_stride 0          jpi    jpiright 1 key_stride 0 1     jpileft 1 key_stride 0 1      ENDIF ELSE jpi    jpi 1 key_stride 0 1     jpj    jpj 1 key_stride 1 1     jpk    jpk 1 key_stride 2 1   ENDIF     default definitions to be able to use read_ncdf_varget     default definitions to be able to use read_ncdf_varget   ixmindtasauve   testvar var   ixmindta    iymindtasauve   testvar var   iymindta    izmindtasauve   testvar var   izmindta      ixmindta   0l   iymindta   0l   izmindta   0l     jpt   1   time   1   firsttps   0     firstx   0   lastx   jpi 1   firsty   0   lasty   jpj 1   firstz   0   lastz   jpk 1   nx   jpi   ny   jpj   nz   1   izminmeshsauve   izminmesh   izminmesh   0     key_yreverse   0   key_zreverse   0   key_gridtype    c      2d arrays:     list the 2d variables that must be read   namevar    glamt   glamu   glamv   glamf                    gphit   gphiu   gphiv   gphif                    e1t   e1u   e1v   e1f                    e2t   e2u   e2v   e2f    for the variables related to the partial steps   allvarname    ncdf_listvars cdfid    IF  where allvarname EQ  hdept 0  NE  1 THEN BEGIN     key_partialstep   1     namevar    namevar   hdept   hdepw    ENDIF ELSE BEGIN     key_partialstep   0     hdept    1     hdepw    1   ENDELSE   for compatibility with old versions of meshmask partial steps   IF  where allvarname EQ  e3tp 0  NE  1 THEN       namevar    namevar   e3tp   e3wp  ELSE BEGIN     e3t_ps    1     e3w_ps    1   ENDELSE   IF  where allvarname EQ  e3t_ps 0  NE  1     THEN namevar    namevar   e3t_ps   e3w_ps   ELSE BEGIN     e3t_ps    1     e3w_ps    1   ENDELSE   IF  where allvarname EQ  e3u_ps 0  NE  1     THEN namevar    namevar   e3u_ps   e3v_ps  ELSE BEGIN     e3u_ps    1     e3v_ps    1   ENDELSE     read all the 2d variables     for i   0  n_elements namevar 1 do begin     varinq   ncdf_varinq cdfid  namevar i      name   varinq name  read_ncdf_varget     command   namevar i float temporary res      nothing   execute command    ENDFOR   for compatibility with old versions of meshmask partial steps   change e3 tw p to e3 tw _ps   IF n_elements e3tp  NE 0 THEN e3t_ps   temporary e3tp    IF n_elements e3wp  NE 0 THEN e3w_ps   temporary e3wp    in the case of key_stride ne  1  1  1  redefine f points   coordinates: they must be in the middle of 3 T points   if key_stride 0  NE 1 OR key_stride 1  NE 1 then BEGIN   we must recompute glamf and gphif      IF jpi GT 1 THEN BEGIN       if  keyword_set key_onearth  AND keyword_set xnotsorted            OR  keyword_set key_periodic  AND key_irregular  then BEGIN         stepxf    glamt   720  MOD 360         stepxf   shift stepxf   1   1    stepxf         stepxf      stepxf   stepxf   360   stepxf   360            stepxf   min abs stepxf  dimension   3          IF NOT keyword_set key_periodic  THEN             stepxf jpi 1      stepxf jpi 2          ENDIF ELSE BEGIN         stepxf   shift glamt   1   1    glamt         IF keyword_set key_periodic  THEN             stepxf jpi 1      360   stepxf jpi 1              ELSE stepxf jpi 1      stepxf jpi 2          ENDELSE       IF jpj GT 1 THEN BEGIN         stepxf  jpj 1    stepxf  jpj 2          stepxf jpi 1  jpj 1    stepxf jpi 2  jpj 2        ENDIF       glamf   glamt   0 5   stepxf     ENDIF ELSE glamf   glamt   0 5     IF jpj GT 1 THEN BEGIN   we must compute stepyf: y distance between T i j  T i 1 j 1        stepyf   shift gphit   1   1    gphit       stepyf  jpj 1    stepyf  jpj 2        IF jpi GT 1 THEN BEGIN         if NOT keyword_set key_periodic  THEN             stepyf jpi 1      stepyf jpi 2            stepyf jpi 1  jpj 1    stepyf jpi 2  jpj 2        ENDIF       gphif   gphit   0 5   stepyf     ENDIF ELSE gphif   gphit   0 5   ENDIF     3d arrays:     nz   jpk   izminmesh   izminmeshsauve     listdims   ncdf_listdims cdfid    micromask    where listdims EQ  y_m 0      varinq   ncdf_varinq cdfid   tmask    name   varinq name   IF micromask NE  1 THEN BEGIN   keep original values     iyminmeshtrue   iyminmesh     key_stridetrue   key_stride     yyy1   firsty key_stridetrue 1 iyminmeshtrue     yyy2   lasty key_stridetrue 1 iyminmeshtrue   the mask is stored as the bit values of the byte array  along the y   dimension  see micromeshmask pro    we must modify several parameters      iyminmesh   0L     firsty   yyy1 8     lasty   yyy2 8     ny   lasty firsty 1     key_stride    key_stride 0  1  key_stride 2   read_ncdf_varget     tmask   bytarr jpi  jpj  jpk    now we must get back the mask   loop on the level to save memory  the loop is short and  thus    should be fast enough      FOR k   0  jpk 1 DO BEGIN       zzz   transpose res    k        zzz   reform binary zzz  8 ny  nx   over        zzz   transpose temporary zzz        zzz   zzz  yyy1 MOD 8: 8 ny   8   yyy2 MOD 8        IF key_stridetrue 1  NE 1 THEN BEGIN          IF float strmid version release 0 3  LT 5 6 THEN BEGIN         nnny    size zzz 2          yind   key_stridetrue 1 lindgen nnny 1 key_stridetrue 1 1          tmask    k    temporary zzz  yind           ENDIF ELSE tmask    k    temporary zzz  0: :key_stridetrue 1        ENDIF ELSE tmask    k    temporary zzz      ENDFOR   ENDIF ELSE BEGIN  read_ncdf_varget     tmask   byte res    ENDELSE   boundary conditions used to compute umask    varinq   ncdf_varinq cdfid   umask    name   varinq name   nx   1L   firstx   jpi 1   lastx   jpi 1   IF micromask NE  1 THEN BEGIN  read_ncdf_varget     umaskred   reform binary res  8 ny  jpk   over      umaskred   umaskred yyy1 MOD 8: 8 ny   8   yyy2 MOD 8        IF key_stridetrue 1  NE 1 THEN umaskred   temporary umaskred yind      ENDIF ELSE BEGIN  read_ncdf_varget     umaskred   reform byte res   over    ENDELSE   boundary conditions used to compute fmask  1    varinq   ncdf_varinq cdfid   fmask    name   varinq name   IF micromask NE  1 THEN BEGIN  read_ncdf_varget     fmaskredy   reform binary res  8 ny  jpk   over      fmaskredy   fmaskredy yyy1 MOD 8: 8 ny   8   yyy2 MOD 8        IF key_stridetrue 1  NE 1 THEN fmaskredy   temporary fmaskredy yind      ENDIF ELSE BEGIN  read_ncdf_varget     fmaskredy   reform byte res   over      fmaskredy   temporary fmaskredy  MOD 2   ENDELSE   boundary conditions used to compute vmask   varinq   ncdf_varinq cdfid   vmask    name   varinq name   nx   jpi   firstx   0L   lastx   jpi 1L   ny   1L   firsty   jpj 1   lasty   jpj 1   IF micromask NE  1 THEN BEGIN     yyy1   firsty key_stridetrue 1 iyminmeshtrue     yyy2   lasty key_stridetrue 1 iyminmeshtrue     iyminmesh   0L     firsty   yyy1 8     lasty   yyy2 8     ny   lasty firsty 1  read_ncdf_varget     IF jpk EQ 1 THEN res   reform res  jpi  1  jpk   over      vmaskred   transpose temporary res   1  0  2      vmaskred   reform binary vmaskred  8 ny  nx  nz   over      vmaskred   transpose temporary vmaskred   1  0  2      vmaskred   reform vmaskred  yyy1 MOD 8: 8 ny   8   yyy2 MOD 8      ENDIF ELSE BEGIN  read_ncdf_varget     vmaskred   reform byte res   over    ENDELSE   boundary conditions used to compute fmask  2    varinq   ncdf_varinq cdfid   fmask    name   varinq name   IF micromask NE  1 THEN BEGIN  read_ncdf_varget     IF jpk EQ 1 THEN res   reform res  jpi  1  jpk   over      fmaskredx   transpose temporary res   1  0  2      fmaskredx   reform binary fmaskredx  8 ny  nx  nz   over      fmaskredx   transpose temporary fmaskredx   1  0  2      fmaskredx   reform fmaskredx  yyy1 MOD 8: 8 ny   8   yyy2 MOD 8          iyminmesh   iyminmeshtrue     key_stride   key_stridetrue   ENDIF ELSE BEGIN  read_ncdf_varget     fmaskredx   reform byte res   over      fmaskredx   fmaskredx MOD 2   ENDELSE     1d arrays     IF  where allvarname EQ  e3t_0 0  NE  1 THEN fnamevar    e3t_0   e3w_0   gdept_0   gdepw_0      ELSE                                            fnamevar    e3t   e3w   gdept   gdepw     namevar    e3t   e3w   gdept   gdepw    for i   0  n_elements namevar 1 do begin     varinq   ncdf_varinq cdfid  fnamevar i      CASE n_elements varinq dim  OF       4:BEGIN         command    ncdf_varget cdfid fnamevar i namevar i                        offset    0 0 izminmesh 0  count    1 1 jpk 1          if key_stride 2  NE 1 then command   command  stride 1 1 key_stride 2 1        END       2:BEGIN         command    ncdf_varget cdfid fnamevar i namevar i                        offset    izminmesh 0  count    jpk 1          if key_stride 2  NE 1 then command   command  stride key_stride 2        END       1:BEGIN         command    ncdf_varget cdfid fnamevar i namevar i                        offset    izminmesh  count    jpk          if key_stride 2  NE 1 then command   command  stride key_stride 2        END     ENDCASE     nothing   execute command      command   namevar i float namevar i      nothing   execute command      command    if size namevar i   n_dimension  gt 0 then  namevar i    reform namevar i   over      nothing   execute command    ENDFOR     ncdf_close   cdfid     Apply Glamboundary     if keyword_set glamboundary  AND key_onearth then BEGIN     if glamboundary 0  NE glamboundary 1  then BEGIN       glamt   temporary glamt  MOD 360       smaller   where glamt LT glamboundary 0        if smaller 0  NE  1 then glamt smaller    glamt smaller 360       bigger   where glamt GE glamboundary 1        if bigger 0  NE  1 then glamt bigger    glamt bigger 360       glamu   temporary glamu  MOD 360       smaller   where glamu LT glamboundary 0        if smaller 0  NE  1 then glamu smaller    glamu smaller 360       bigger   where glamu GE glamboundary 1        if bigger 0  NE  1 then glamu bigger    glamu bigger 360       glamv   temporary glamv  MOD 360       smaller   where glamv LT glamboundary 0        if smaller 0  NE  1 then glamv smaller    glamv smaller 360       bigger   where glamv GE glamboundary 1        if bigger 0  NE  1 then glamv bigger    glamv bigger 360       glamf   temporary glamf  MOD 360       smaller   where glamf LT glamboundary 0        if smaller 0  NE  1 then glamf smaller    glamf smaller 360       bigger   where glamf GE glamboundary 1        if bigger 0  NE  1 then glamf bigger    glamf bigger 360       toosmall   where glamu EQ glamboundary 0        IF toosmall 0  NE  1 THEN glamu toosmall    glamu toosmall    360       toosmall   where glamf EQ glamboundary 0        IF toosmall 0  NE  1 THEN glamf toosmall    glamf toosmall    360     endif   endif     make sure we do have 2d arrays when jpj eq 1     IF jpj EQ 1 THEN BEGIN     glamt   reform glamt  jpi  jpj   over      gphit   reform gphit  jpi  jpj   over      e1t   reform e1t  jpi  jpj   over      e2t   reform e2t  jpi  jpj   over      glamu   reform glamu  jpi  jpj   over      gphiu   reform gphiu  jpi  jpj   over      e1u   reform e1u  jpi  jpj   over      e2u   reform e2u  jpi  jpj   over      glamv   reform glamv  jpi  jpj   over      gphiv   reform gphiv  jpi  jpj   over      e1v   reform e1v  jpi  jpj   over      e2v   reform e2v  jpi  jpj   over      glamf   reform glamf  jpi  jpj   over      gphif   reform gphif  jpi  jpj   over      e1f   reform e1f  jpi  jpj   over      e2f   reform e2f  jpi  jpj   over      IF keyword_set key_partialstep  THEN BEGIN       hdept   reform hdept  jpi  jpj   over        hdepw   reform hdepw  jpi  jpj   over        e3t_ps   reform e3t_ps  jpi  jpj   over        e3w_ps   reform e3w_ps  jpi  jpj   over      ENDIF   ENDIF     ixmindta   ixmindtasauve   iymindta   iymindtasauve   izmindta   izmindtasauve     widget_control  noticebase  bad_id   nothing   destroy       grid parameters used by xxx       IF NOT keyword_set strcalling  THEN BEGIN     IF n_elements ccmeshparameters  EQ 0 THEN strcalling    ncdf_meshread        ELSE strcalling   ccmeshparameters filename   ENDIF   IF n_elements glamt  GE 2 THEN BEGIN     glaminfo   moment glamt      IF finite glaminfo 2  EQ 0 THEN glaminfo   glaminfo 0:1      gphiinfo   moment gphit      IF finite gphiinfo 2  EQ 0 THEN gphiinfo   gphiinfo 0:1    ENDIF ELSE BEGIN     glaminfo   glamt     gphiinfo   gphit   ENDELSE   romszinfos    h: 1  zeta: 1  theta_s: 1  theta_b: 1  hc: 1    ccmeshparameters    filename:strcalling                glaminfo:float string glaminfo  format    E11 4                gphiinfo:float string gphiinfo  format    E11 4                jpiglo:jpiglo  jpjglo:jpjglo  jpkglo:jpkglo               jpi:jpi  jpj:jpj  jpk:jpk               ixminmesh:ixminmesh  ixmaxmesh:ixmaxmesh               iyminmesh:iyminmesh  iymaxmesh:iymaxmesh               izminmesh:izminmesh  izmaxmesh:izmaxmesh               key_shift:key_shift  key_periodic:key_periodic               key_stride:key_stride  key_gridtype:key_gridtype               key_yreverse:key_yreverse  key_zreverse:key_zreverse               key_partialstep:key_partialstep  key_onearth:key_onearth      if keyword_set key_performance  THEN       print   time ncdf_meshread  systime 1 tempsun        updateold      return  end");
+a[42] = new Array("./Grid/ncdf_meshread.html", "ncdf_meshread.pro", "", "       file_comments   read NetCDF meshmask file created by OPA      categories   Grid      examples   IDL  ncdf_meshread   filename       param filename  in optional default meshmask nc type scalar string       Name of the meshmask file to read  If this name does not contain any        and if iodirectory keyword is not specified  then the common variable      iodir will be used to define the mesh file path       keyword GLAMBOUNDARY  default those defined in the file type 2 elements vector       Longitude boundaries that should be used to visualize the data         lon2   lon1        lon2   lon1 le 360      By default  the common  cm_4mesh  variable key_shift will be automatically      defined according to GLAMBOUNDARY       keyword CHECKDAT   Suppressed  Use micromeshmask to create an appropriate meshmask       keyword ONEARTH  default 1 type scalar: 0 or 1       Force the manual definition of data localization on the earth or not         0  if the data are not on the earth         1  if the data are on earth  in that case we can for example use            the labels  longitude   latitude  in plots       The resulting value will be stored in the common  cm_4mesh  variable key_onearth      ONEARTH 0 forces PERIODIC 0  SHIFT 0 and is cancelling GLAMBOUNDARY      keyword GETDIMENSIONS  default 0 type scalar: 0 or 1       Activate this keywords if you only want to know the dimension      of the domain stored in the mesh file  This dimension will be      defined in jpiglo  jpjglo  jpkglo  cm_4mesh common variables       keyword PERIODIC  default computed by using the first line of glamt type scalar: 0 or 1       Force the manual definition of the grid zonal periodicity       The resulting value will be stored in the common  cm_4mesh  variable key_periodic      PERIODIC 0 forces SHIFT 0      keyword SHIFT  default computed according to glamboundary type scalar       Force the manual definition of the zonal shift that must be apply to the data       The resulting value will be stored in the common  cm_4mesh  variable key_shift      Note that if key_periodic 0 then in any case key_shift   0       keyword STRCALLING  type scalar string       the calling command used to call computegrid  this is used by xxx       keyword STRIDE  default 1  1  1 type 3 elements vector       Specify the stride in x  y and z direction  The resulting      value will be stored in the common  cm_4mesh  variable key_stride      keyword _EXTRA   Used to pass keywords to isafile      uses   cm_4mesh   cm_4data   cm_4cal      restrictions   ixminmesh  ixmaxmesh  iyminmesh  iymaxmesh  izminmesh  izmaxmesh must   be defined before calling ncdf_meshread  If some of those values   are equal to  1 they will be automatically defined      history   Sebastien Masson  smasson lodyc jussieu fr                         12 1999   July 2004  Sebastien Masson: Several modifications  micromeshmask    clean partial steps  clean use of key_stride  automatic definition   of key_shift      Oct  2004  Sebastien Masson: add PERIODIC and SHIFT   Aug  2005  Sebastien Masson: some cleaning   english      version    Id: ncdf_meshread pro 359 2008 06 05 13:06:39Z smasson       PRO ncdf_meshread  filename  GLAMBOUNDARY glamboundary  CHECKDAT checkdat                       ONEARTH onearth  GETDIMENSIONS getdimensions                       PERIODIC periodic  SHIFT shift  STRIDE stride                       STRCALLING strcalling  _EXTRA ex     compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF     tempsun   systime 1             for key_performance   IF keyword_set CHECKDAT  THEN BEGIN     ras   report  The keyword CHECKDAT has been suppressed  it could create bugs          Remove it from the call of ncdf_meshread          Please use smallmeshmask pro or micromeshmask pro to create a          meshmask that has manageable size      return   ENDIF     find meshfile name and open it      def of filename by default   IF n_params  EQ 0 then filename    meshmask nc    meshname   isafile file   filename  iodirectory   iodir  _EXTRA   ex    meshname   meshname 0      noticebase   xnotice Reading file  C  meshname C     if the meshmask is on tape archive   get it back   IF  version OS_FAMILY EQ  unix  THEN spawn   file  meshname     dev null    cdfid   ncdf_open meshname    inq   ncdf_inquire cdfid      dimensions     ncdf_diminq  cdfid   x  name  jpiglo   ncdf_diminq  cdfid   y  name  jpjglo   listdims   strlowcase ncdf_listdims cdfid    IF  where listdims EQ  z 0  NE  1 THEN ncdf_diminq  cdfid   z  name  jpkglo ELSE BEGIN     dimid    where strmid listdims  0  5  EQ  depth 0      IF dimid NE  1 THEN ncdf_diminq  cdfid  dimid  name  jpkglo ELSE BEGIN       dummy   report We could not find the vertical dimension  its name must be z or start with depth        stop     ENDELSE   ENDELSE     if keyword_set getdimensions  then begin     widget_control  noticebase  bad_id   nothing   destroy     ncdf_close   cdfid     return   endif     check that all i xyz min ax mesh are well defined     if n_elements ixminmesh  EQ 0 THEN ixminmesh   0   if n_elements ixmaxmesh  EQ 0 then ixmaxmesh   jpiglo 1   if ixminmesh EQ  1 THEN ixminmesh   0   IF ixmaxmesh EQ  1 then ixmaxmesh   jpiglo 1   if n_elements iyminmesh  EQ 0 THEN iyminmesh   0   IF n_elements iymaxmesh  EQ 0 then iymaxmesh   jpjglo 1   if iyminmesh EQ  1 THEN iyminmesh   0   IF iymaxmesh EQ  1 then iymaxmesh   jpjglo 1   if n_elements izminmesh  EQ 0 THEN izminmesh   0   IF n_elements izmaxmesh  EQ 0 then izmaxmesh   jpkglo 1   if izminmesh EQ  1 THEN izminmesh   0   IF izmaxmesh EQ  1 then izmaxmesh   jpkglo 1   definition of jpi jpj jpj   jpi   long ixmaxmesh ixminmesh 1    jpj   long iymaxmesh iyminmesh 1    jpk   long izmaxmesh izminmesh 1      check onearth and its consequences     IF n_elements onearth  EQ 0 THEN key_onearth   1     ELSE key_onearth   keyword_set onearth    IF NOT key_onearth THEN BEGIN     periodic   0     shift   0   ENDIF     automatic definition of key_periodic     IF n_elements periodic  EQ 0 THEN BEGIN     IF jpi GT 1 THEN BEGIN       varinq   ncdf_varinq cdfid   glamt        CASE varinq ndims OF         2:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  count    jpi  1          3:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  count    jpi  1  1          4:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  0  count    jpi  1  1  1        ENDCASE       xaxis    xaxis 720  MOD 360       xaxis   xaxis sort xaxis        key_periodic    xaxis jpi 1 2 xaxis jpi 1 xaxis jpi 2                         GE  xaxis 0 360      ENDIF ELSE key_periodic   0   ENDIF ELSE key_periodic   keyword_set periodic      automatic definition of key_shift     IF n_elements shift  EQ 0 THEN BEGIN     key_shift   long testvar var   key_shift     key_shift will be defined according to the first line of glamt      if keyword_set glamboundary  AND jpi GT 1 AND key_periodic EQ 1       THEN BEGIN       varinq   ncdf_varinq cdfid   glamt        CASE varinq ndims OF         2:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  count    jpi  1          3:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  count    jpi  1  1          4:ncdf_varget  cdfid   glamt  xaxis                            offset    ixminmesh  iyminmesh  0  0  count    jpi  1  1  1        ENDCASE   xaxis between glamboundary 0  and glamboundary 1        xaxis   xaxis MOD 360       smaller   where xaxis LT glamboundary 0        if smaller 0  NE  1 then xaxis smaller    xaxis smaller 360       bigger   where xaxis GE glamboundary 1        if bigger 0  NE  1 then xaxis bigger    xaxis bigger 360         key_shift    where xaxis EQ min xaxis 0        IF key_shift NE 0 THEN BEGIN         key_shift   jpi key_shift         xaxis   shift xaxis  key_shift        ENDIF         IF array_equal sort xaxis  lindgen jpi  NE 1 THEN BEGIN         ras   report the x axis  1st line of glamt  is not sorted in the increasing order after the automatic definition of key_shift             please use the keyword shift  and periodic  to suppress the automatic definition of key_shift  and key_periodic  and define by hand a more suitable value          widget_control  noticebase  bad_id   nothing   destroy         return       ENDIF       ENDIF ELSE key_shift   0   ENDIF ELSE key_shift   long shift key_periodic EQ 1      check key_stride and related things     if n_elements stride  eq 3 then key_stride   stride   if n_elements key_stride  LE 2 then key_stride    1  1  1    key_stride   1l   long key_stride    IF total key_stride  NE 3  THEN BEGIN     IF key_shift NE 0 THEN BEGIN   for explanation  see header of read_ncdf_varget pro       jpiright   key_shift       jpileft   jpi   key_shift      key_stride 0 1 key_shift 1  MOD key_stride 0          jpi    jpiright 1 key_stride 0 1     jpileft 1 key_stride 0 1      ENDIF ELSE jpi    jpi 1 key_stride 0 1     jpj    jpj 1 key_stride 1 1     jpk    jpk 1 key_stride 2 1   ENDIF     default definitions to be able to use read_ncdf_varget     default definitions to be able to use read_ncdf_varget   ixmindtasauve   testvar var   ixmindta    iymindtasauve   testvar var   iymindta    izmindtasauve   testvar var   izmindta      ixmindta   0l   iymindta   0l   izmindta   0l     jpt   1   time   1   firsttps   0     firstx   0   lastx   jpi 1   firsty   0   lasty   jpj 1   firstz   0   lastz   jpk 1   nx   jpi   ny   jpj   nz   1   izminmeshsauve   izminmesh   izminmesh   0     key_yreverse   0   key_zreverse   0   key_gridtype    c      2d arrays:     list the 2d variables that must be read   namevar    glamt   glamu   glamv   glamf                    gphit   gphiu   gphiv   gphif                    e1t   e1u   e1v   e1f                    e2t   e2u   e2v   e2f    for the variables related to the partial steps   allvarname    ncdf_listvars cdfid    IF  where allvarname EQ  hdept 0  NE  1 THEN BEGIN     key_partialstep   1     namevar    namevar   hdept   hdepw    ENDIF ELSE BEGIN     key_partialstep   0     hdept    1     hdepw    1   ENDELSE   for compatibility with old versions of meshmask partial steps   IF  where allvarname EQ  e3tp 0  NE  1 THEN       namevar    namevar   e3tp   e3wp  ELSE BEGIN     e3t_ps    1     e3w_ps    1   ENDELSE   IF  where allvarname EQ  e3t_ps 0  NE  1     THEN namevar    namevar   e3t_ps   e3w_ps   ELSE BEGIN     e3t_ps    1     e3w_ps    1   ENDELSE   IF  where allvarname EQ  e3u_ps 0  NE  1     THEN namevar    namevar   e3u_ps   e3v_ps  ELSE BEGIN     e3u_ps    1     e3v_ps    1   ENDELSE     read all the 2d variables     for i   0  n_elements namevar 1 do begin     varinq   ncdf_varinq cdfid  namevar i      name   varinq name  read_ncdf_varget     command   namevar i float temporary res      nothing   execute command    ENDFOR   for compatibility with old versions of meshmask partial steps   change e3 tw p to e3 tw _ps   IF n_elements e3tp  NE 0 THEN e3t_ps   temporary e3tp    IF n_elements e3wp  NE 0 THEN e3w_ps   temporary e3wp    in the case of key_stride ne  1  1  1  redefine f points   coordinates: they must be in the middle of 3 T points   if key_stride 0  NE 1 OR key_stride 1  NE 1 then BEGIN   we must recompute glamf and gphif      IF jpi GT 1 THEN BEGIN       if  keyword_set key_onearth  AND keyword_set xnotsorted            OR  keyword_set key_periodic  AND key_irregular  then BEGIN         stepxf    glamt   720  MOD 360         stepxf   shift stepxf   1   1    stepxf         stepxf      stepxf   stepxf   360   stepxf   360            stepxf   min abs stepxf  dimension   3          IF NOT keyword_set key_periodic  THEN             stepxf jpi 1      stepxf jpi 2          ENDIF ELSE BEGIN         stepxf   shift glamt   1   1    glamt         IF keyword_set key_periodic  THEN             stepxf jpi 1      360   stepxf jpi 1              ELSE stepxf jpi 1      stepxf jpi 2          ENDELSE       IF jpj GT 1 THEN BEGIN         stepxf  jpj 1    stepxf  jpj 2          stepxf jpi 1  jpj 1    stepxf jpi 2  jpj 2        ENDIF       glamf   glamt   0 5   stepxf     ENDIF ELSE glamf   glamt   0 5     IF jpj GT 1 THEN BEGIN   we must compute stepyf: y distance between T i j  T i 1 j 1        stepyf   shift gphit   1   1    gphit       stepyf  jpj 1    stepyf  jpj 2        IF jpi GT 1 THEN BEGIN         if NOT keyword_set key_periodic  THEN             stepyf jpi 1      stepyf jpi 2            stepyf jpi 1  jpj 1    stepyf jpi 2  jpj 2        ENDIF       gphif   gphit   0 5   stepyf     ENDIF ELSE gphif   gphit   0 5   ENDIF     3d arrays:     nz   jpk   izminmesh   izminmeshsauve     listdims   ncdf_listdims cdfid    micromask    where listdims EQ  y_m 0      varinq   ncdf_varinq cdfid   tmask    name   varinq name   IF micromask NE  1 THEN BEGIN   keep original values     iyminmeshtrue   iyminmesh     key_stridetrue   key_stride     yyy1   firsty key_stridetrue 1 iyminmeshtrue     yyy2   lasty key_stridetrue 1 iyminmeshtrue   the mask is stored as the bit values of the byte array  along the y   dimension  see micromeshmask pro    we must modify several parameters      iyminmesh   0L     firsty   yyy1 8     lasty   yyy2 8     ny   lasty firsty 1     key_stride    key_stride 0  1  key_stride 2   read_ncdf_varget     tmask   bytarr jpi  jpj  jpk    now we must get back the mask   loop on the level to save memory  the loop is short and  thus    should be fast enough      FOR k   0  jpk 1 DO BEGIN       zzz   transpose res    k        zzz   reform binary zzz  8 ny  nx   over        zzz   transpose temporary zzz        zzz   zzz  yyy1 MOD 8: 8 ny   8   yyy2 MOD 8        IF key_stridetrue 1  NE 1 THEN BEGIN          IF float strmid version release 0 3  LT 5 6 THEN BEGIN         nnny    size zzz 2          yind   key_stridetrue 1 lindgen nnny 1 key_stridetrue 1 1          tmask    k    temporary zzz  yind           ENDIF ELSE tmask    k    temporary zzz  0: :key_stridetrue 1        ENDIF ELSE tmask    k    temporary zzz      ENDFOR   ENDIF ELSE BEGIN  read_ncdf_varget     tmask   byte res    ENDELSE   boundary conditions used to compute umask    IF ncdf_varid cdfid   umask  NE  1 THEN BEGIN       varinq   ncdf_varinq cdfid   umask       name   varinq name      nx   1L      firstx   jpi 1      lastx   jpi 1      IF micromask NE  1 THEN BEGIN  read_ncdf_varget         umaskred   reform binary res  8 ny  jpk   over          umaskred   umaskred yyy1 MOD 8: 8 ny   8   yyy2 MOD 8            IF key_stridetrue 1  NE 1 THEN umaskred   temporary umaskred yind         ENDIF ELSE BEGIN  read_ncdf_varget         umaskred   reform byte res   over       ENDELSE   ENDIF ELSE umaskred   bytarr jpj  jpk    boundary conditions used to compute fmask  1    IF ncdf_varid cdfid   fmask  NE  1 THEN BEGIN       varinq   ncdf_varinq cdfid   fmask       name   varinq name      IF micromask NE  1 THEN BEGIN  read_ncdf_varget         fmaskredy   reform binary res  8 ny  jpk   over          fmaskredy   fmaskredy yyy1 MOD 8: 8 ny   8   yyy2 MOD 8            IF key_stridetrue 1  NE 1 THEN fmaskredy   temporary fmaskredy yind         ENDIF ELSE BEGIN  read_ncdf_varget         fmaskredy   reform byte res   over          fmaskredy   temporary fmaskredy  MOD 2      ENDELSE   ENDIF ELSE fmaskredy   bytarr jpj  jpk    boundary conditions used to compute vmask   IF ncdf_varid cdfid   vmask  NE  1 THEN BEGIN       varinq   ncdf_varinq cdfid   vmask       name   varinq name      nx   jpi      firstx   0L      lastx   jpi 1L      ny   1L      firsty   jpj 1      lasty   jpj 1      IF micromask NE  1 THEN BEGIN         yyy1   firsty key_stridetrue 1 iyminmeshtrue         yyy2   lasty key_stridetrue 1 iyminmeshtrue         iyminmesh   0L         firsty   yyy1 8         lasty   yyy2 8         ny   lasty firsty 1  read_ncdf_varget         IF jpk EQ 1 THEN res   reform res  jpi  1  jpk   over          vmaskred   transpose temporary res   1  0  2          vmaskred   reform binary vmaskred  8 ny  nx  nz   over          vmaskred   transpose temporary vmaskred   1  0  2          vmaskred   reform vmaskred  yyy1 MOD 8: 8 ny   8   yyy2 MOD 8         ENDIF ELSE BEGIN  read_ncdf_varget         vmaskred   reform byte res   over       ENDELSE   ENDIF ELSE vmaskred   bytarr jpi  jpk    boundary conditions used to compute fmask  2    IF ncdf_varid cdfid   fmask  NE  1 THEN BEGIN       varinq   ncdf_varinq cdfid   fmask       name   varinq name      IF micromask NE  1 THEN BEGIN  read_ncdf_varget         IF jpk EQ 1 THEN res   reform res  jpi  1  jpk   over          fmaskredx   transpose temporary res   1  0  2          fmaskredx   reform binary fmaskredx  8 ny  nx  nz   over          fmaskredx   transpose temporary fmaskredx   1  0  2          fmaskredx   reform fmaskredx  yyy1 MOD 8: 8 ny   8   yyy2 MOD 8              iyminmesh   iyminmeshtrue         key_stride   key_stridetrue      ENDIF ELSE BEGIN  read_ncdf_varget         fmaskredx   reform byte res   over          fmaskredx   fmaskredx MOD 2      ENDELSE   ENDIF ELSE fmaskredx   bytarr jpi  jpk      1d arrays     IF  where allvarname EQ  e3t_0 0  NE  1 THEN fnamevar    e3t_0   e3w_0   gdept_0   gdepw_0      ELSE                                            fnamevar    e3t   e3w   gdept   gdepw     namevar    e3t   e3w   gdept   gdepw    for i   0  n_elements namevar 1 do begin     varinq   ncdf_varinq cdfid  fnamevar i      CASE n_elements varinq dim  OF       4:BEGIN         command    ncdf_varget cdfid fnamevar i namevar i                        offset    0 0 izminmesh 0  count    1 1 jpk 1          if key_stride 2  NE 1 then command   command  stride 1 1 key_stride 2 1        END       2:BEGIN         command    ncdf_varget cdfid fnamevar i namevar i                        offset    izminmesh 0  count    jpk 1          if key_stride 2  NE 1 then command   command  stride key_stride 2        END       1:BEGIN         command    ncdf_varget cdfid fnamevar i namevar i                        offset    izminmesh  count    jpk          if key_stride 2  NE 1 then command   command  stride key_stride 2        END     ENDCASE     nothing   execute command      command   namevar i float namevar i      nothing   execute command      command    if size namevar i   n_dimension  gt 0 then  namevar i    reform namevar i   over      nothing   execute command    ENDFOR     ncdf_close   cdfid     Apply Glamboundary     if keyword_set glamboundary  AND key_onearth then BEGIN     if glamboundary 0  NE glamboundary 1  then BEGIN       glamt   temporary glamt  MOD 360       smaller   where glamt LT glamboundary 0        if smaller 0  NE  1 then glamt smaller    glamt smaller 360       bigger   where glamt GE glamboundary 1        if bigger 0  NE  1 then glamt bigger    glamt bigger 360       glamu   temporary glamu  MOD 360       smaller   where glamu LT glamboundary 0        if smaller 0  NE  1 then glamu smaller    glamu smaller 360       bigger   where glamu GE glamboundary 1        if bigger 0  NE  1 then glamu bigger    glamu bigger 360       glamv   temporary glamv  MOD 360       smaller   where glamv LT glamboundary 0        if smaller 0  NE  1 then glamv smaller    glamv smaller 360       bigger   where glamv GE glamboundary 1        if bigger 0  NE  1 then glamv bigger    glamv bigger 360       glamf   temporary glamf  MOD 360       smaller   where glamf LT glamboundary 0        if smaller 0  NE  1 then glamf smaller    glamf smaller 360       bigger   where glamf GE glamboundary 1        if bigger 0  NE  1 then glamf bigger    glamf bigger 360       toosmall   where glamu EQ glamboundary 0        IF toosmall 0  NE  1 THEN glamu toosmall    glamu toosmall    360       toosmall   where glamf EQ glamboundary 0        IF toosmall 0  NE  1 THEN glamf toosmall    glamf toosmall    360     endif   endif     make sure we do have 2d arrays when jpj eq 1     IF jpj EQ 1 THEN BEGIN     glamt   reform glamt  jpi  jpj   over      gphit   reform gphit  jpi  jpj   over      e1t   reform e1t  jpi  jpj   over      e2t   reform e2t  jpi  jpj   over      glamu   reform glamu  jpi  jpj   over      gphiu   reform gphiu  jpi  jpj   over      e1u   reform e1u  jpi  jpj   over      e2u   reform e2u  jpi  jpj   over      glamv   reform glamv  jpi  jpj   over      gphiv   reform gphiv  jpi  jpj   over      e1v   reform e1v  jpi  jpj   over      e2v   reform e2v  jpi  jpj   over      glamf   reform glamf  jpi  jpj   over      gphif   reform gphif  jpi  jpj   over      e1f   reform e1f  jpi  jpj   over      e2f   reform e2f  jpi  jpj   over      IF keyword_set key_partialstep  THEN BEGIN       hdept   reform hdept  jpi  jpj   over        hdepw   reform hdepw  jpi  jpj   over        e3t_ps   reform e3t_ps  jpi  jpj   over        e3w_ps   reform e3w_ps  jpi  jpj   over      ENDIF   ENDIF     ixmindta   ixmindtasauve   iymindta   iymindtasauve   izmindta   izmindtasauve     widget_control  noticebase  bad_id   nothing   destroy       grid parameters used by xxx       IF NOT keyword_set strcalling  THEN BEGIN     IF n_elements ccmeshparameters  EQ 0 THEN strcalling    ncdf_meshread        ELSE strcalling   ccmeshparameters filename   ENDIF   IF n_elements glamt  GE 2 THEN BEGIN     glaminfo   moment glamt      IF finite glaminfo 2  EQ 0 THEN glaminfo   glaminfo 0:1      gphiinfo   moment gphit      IF finite gphiinfo 2  EQ 0 THEN gphiinfo   gphiinfo 0:1    ENDIF ELSE BEGIN     glaminfo   glamt     gphiinfo   gphit   ENDELSE   romszinfos    h: 1  zeta: 1  theta_s: 1  theta_b: 1  hc: 1    ccmeshparameters    filename:strcalling                glaminfo:float string glaminfo  format    E11 4                gphiinfo:float string gphiinfo  format    E11 4                jpiglo:jpiglo  jpjglo:jpjglo  jpkglo:jpkglo               jpi:jpi  jpj:jpj  jpk:jpk               ixminmesh:ixminmesh  ixmaxmesh:ixmaxmesh               iyminmesh:iyminmesh  iymaxmesh:iymaxmesh               izminmesh:izminmesh  izmaxmesh:izmaxmesh               key_shift:key_shift  key_periodic:key_periodic               key_stride:key_stride  key_gridtype:key_gridtype               key_yreverse:key_yreverse  key_zreverse:key_zreverse               key_partialstep:key_partialstep  key_onearth:key_onearth      if keyword_set key_performance  THEN       print   time ncdf_meshread  systime 1 tempsun        updateold      return  end");
 a[43] = new Array("./Grid/ncdf_meshroms.html", "ncdf_meshroms.pro", "", "       file_comments   read NetCDF grid file created by ROMS      categories   Grid      examples   IDL  ncdf_meshroms   filename       param filename  in optional default roms_grd nc type scalar string       Name of the meshmask file to read  If this name does not contain any        and if iodirectory keyword is not specify  then the common variable      iodir will be used to define the mesh file path       keyword GLAMBOUNDARY  default those defined in the file type 2 elements vector       Longitude boundaries that should be used to visualize the data         lon2   lon1        lon2   lon1 le 360      By default  the common  cm_4mesh  variable key_shift will be automatically      defined according to GLAMBOUNDARY       keyword ONEARTH  default 1 type scalar: 0 or 1       Force the manual definition of data localization on the earth or not         0  if the data are not on the earth         1  if the data are on earth  in that case we can for example use            the labels  longitude   latitude  in plots       The resulting value will be stored in the common  cm_4mesh  variable key_onearth      ONEARTH 0 forces PERIODIC 0  SHIFT 0 and is cancelling GLAMBOUNDARY      keyword GETDIMENSIONS  default 0 type scalar: 0 or 1       Activate this keywords if you only want to know the dimension      of the domain stored in the mesh file  This dimension will be      defined in jpiglo  jpjglo  jpkglo  cm_4mesh common variables       keyword PERIODIC  default computed by using the first line of glamt type scalar: 0 or 1       Force the manual definition of the grid zonal periodicity       The resulting value will be stored in the common  cm_4mesh  variable key_periodic      PERIODIC 0 forces SHIFT 0      keyword NRHO  default 1 type scalar       Specify the number of rho level that contain the data we want to explore       This is mainly useful when using xxx to get access to the deeper levers and vertical sections       keyword SHIFT  default computed according to glamboundary type scalar       Force the manual definition of the zonal shift that must be apply to the data       The resulting value will be stored in the common  cm_4mesh  variable key_shift      Note that if key_periodic 0 then in any case key_shift 0       keyword STRCALLING  type scalar string       the calling command used to call computegrid  this is used by xxx       keyword STRIDE  default 1  1  1 type 3 elements vector       Specify the stride in x  y and z direction  The resulting      value will be stored in the common  cm_4mesh  variable key_stride      keyword _EXTRA   Used to pass keywords to isafile      uses   cm_4mesh   cm_4data   cm_4cal      restrictions   ixminmesh  ixmaxmesh  iyminmesh  iymaxmesh  izminmesh  izmaxmesh must   be defined before calling ncdf_meshread  If some of those values   are equal to  1 they will be automatically defined     In the original ROMS grid  if F grid has  jpi jpj  points then T   grid will have  jpi 1 jpj 1  points  U grid will have  jpi jpj 1    points and V grid will have  jpi 1 jpj  points    By default C grid used in this package needs the same number of   points for T U V and F grid  with a T point at the bottom left   corner of the grid  We therefore ignore the last column of T and   V points and the last line of T and U points      Scale factors are computed using the distance between the points    which is not the exact definition for irregular grid       history   Sebastien Masson  smasson lodyc jussieu fr  September 2006      version    Id: ncdf_meshroms pro 327 2007 12 13 16:22:35Z pinsard       PRO ncdf_meshroms  filename  NRHO nrho  GLAMBOUNDARY glamboundary                       ONEARTH onearth  GETDIMENSIONS getdimensions                       PERIODIC periodic  SHIFT shift  STRIDE stride                       STRCALLING strcalling  _EXTRA ex     compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew  updatekwd   ENDIF       tempsun   systime 1             for key_performance     find meshfile name and open it      def of filename by default   IF n_params  EQ 0 then filename    roms_grd nc    meshname   isafile file   filename  iodirectory   iodir  _EXTRA   ex    meshname   meshname 0      noticebase   xnotice Reading file  C  meshname C     if the meshmask is on tape archive   get it back   IF  version OS_FAMILY EQ  unix  THEN spawn   file  meshname     dev null    cdfid   ncdf_open meshname    inq   ncdf_inquire cdfid      dimensions     ncdf_diminq  cdfid   xi_rho  name  jpiglo   ncdf_diminq  cdfid   eta_rho  name  jpjglo   IF n_elements nrho  NE 0 THEN jpkglo   long nrho 0        ELSE jpkglo   1L     if keyword_set getdimensions  then begin     widget_control  noticebase  bad_id   nothing   destroy     ncdf_close   cdfid     return   endif     check that all i xyz min ax mesh are well defined     if n_elements ixminmesh  EQ 0 THEN ixminmesh   0   if n_elements ixmaxmesh  EQ 0 then ixmaxmesh   jpiglo 1   if ixminmesh EQ  1 THEN ixminmesh   0   IF ixmaxmesh EQ  1 then ixmaxmesh   jpiglo 1   if n_elements iyminmesh  EQ 0 THEN iyminmesh   0   IF n_elements iymaxmesh  EQ 0 then iymaxmesh   jpjglo 1   if iyminmesh EQ  1 THEN iyminmesh   0   IF iymaxmesh EQ  1 then iymaxmesh   jpjglo 1   if n_elements izminmesh  EQ 0 THEN izminmesh   0   IF n_elements izmaxmesh  EQ 0 then izmaxmesh   jpkglo 1   if izminmesh EQ  1 THEN izminmesh   0   IF izmaxmesh EQ  1 then izmaxmesh   jpkglo 1   definition of jpi jpj jpj   jpi   long ixmaxmesh ixminmesh 1    jpj   long iymaxmesh iyminmesh 1    jpk   long izmaxmesh izminmesh 1      check onearth and its consequences     IF n_elements onearth  EQ 0 THEN key_onearth   1     ELSE key_onearth   keyword_set onearth    IF NOT key_onearth THEN BEGIN     periodic   0     shift   0   ENDIF     automatic definition of key_periodic     IF n_elements periodic  EQ 0 THEN BEGIN     IF jpi GT 1 THEN BEGIN       ncdf_varget  cdfid   lon_rho  xaxis                        offset    ixminmesh  iyminmesh  count    jpi  1        xaxis    xaxis 720  MOD 360       xaxis   xaxis sort xaxis        key_periodic    xaxis jpi 1 2 xaxis jpi 1 xaxis jpi 2                         GE  xaxis 0 360      ENDIF ELSE key_periodic   0   ENDIF ELSE key_periodic   keyword_set periodic      automatic definition of key_shift     IF n_elements shift  EQ 0 THEN BEGIN     key_shift   long testvar var   key_shift     key_shift will be defined according to the first line of glamt      if keyword_set glamboundary  AND jpi GT 1 AND key_periodic EQ 1       THEN BEGIN       ncdf_varget  cdfid   lon_rho  xaxis                        offset    ixminmesh  iyminmesh  count    jpi  1    xaxis between glamboundary 0  and glamboundary 1        xaxis   xaxis MOD 360       smaller   where xaxis LT glamboundary 0        if smaller 0  NE  1 then xaxis smaller    xaxis smaller 360       bigger   where xaxis GE glamboundary 1        if bigger 0  NE  1 then xaxis bigger    xaxis bigger 360         key_shift    where xaxis EQ min xaxis 0        IF key_shift NE 0 THEN BEGIN         key_shift   jpi key_shift         xaxis   shift xaxis  key_shift        ENDIF         IF array_equal sort xaxis  lindgen jpi  NE 1 THEN BEGIN         ras   report  the x axis  1st line of glamt  is not sorted in the increasing order after the automatic definition of key_shift             please use the keyword shift  and periodic  to suppress the automatic definition of key_shift  and key_periodic  and define by hand a more suitable value          widget_control  noticebase  bad_id   nothing   destroy         return       ENDIF       ENDIF ELSE key_shift   0   ENDIF ELSE key_shift   long shift key_periodic EQ 1      check key_stride and related things     if n_elements stride  eq 3 then key_stride   stride   if n_elements key_stride  LE 2 then key_stride    1  1  1    key_stride   1l   long key_stride    IF total key_stride  NE 3  THEN BEGIN     IF key_shift NE 0 THEN BEGIN   for explanation  see header of read_ncdf_varget pro       jpiright   key_shift       jpileft   jpi   key_shift      key_stride 0 1 key_shift 1  MOD key_stride 0          jpi    jpiright 1 key_stride 0 1     jpileft 1 key_stride 0 1      ENDIF ELSE jpi    jpi 1 key_stride 0 1     jpj    jpj 1 key_stride 1 1     jpk    jpk 1 key_stride 2 1   ENDIF     for the variables related to the partial steps     key_partialstep   0   hdept    1   hdepw    1     default definitions to be able to use read_ncdf_varget     default definitions to be able to use read_ncdf_varget   ixmindtasauve   testvar var   ixmindta    iymindtasauve   testvar var   iymindta    izmindtasauve   testvar var   izmindta      ixmindta   0l   iymindta   0l   izmindta   0l     jpt   1   time   1   firsttps   0     firstx   0   lastx   jpi 1   firsty   0   lasty   jpj 1   firstz   0   lastz   jpk 1   nx   jpi   ny   jpj   nz   1   izminmeshsauve   izminmesh   izminmesh   0     key_yreverse   0   key_zreverse   1   key_gridtype    c      2d arrays:     list the 2d variables that must be read   namebase     lon_   lat_   mask_   x_   y_    namebase2    glam   gphi   mask     d1   d2      read all grid T variables     for i   0  n_elements namebase 1 do begin     varinq   ncdf_varinq cdfid  namebase i rho      name   varinq name  read_ncdf_varget     command   namebase2 i t   float temporary res      nothing   execute command    ENDFOR   d1t   1 e3 shift d1t   1  0    d1t    d2t   1 e3 shift d2t  0   1    d2t    for i   0  n_elements namebase2 1 do begin     command   namebase2 i t    namebase2 i t 0:jpi 2  0:jpj 2      nothing   execute command    ENDFOR   tmask   byte temporary maskt    IF jpk GT 1 THEN tmask   reform tmask replicate 1b  jpk  jpi 1  jpj 1  jpk   overwrite    e1u   temporary d1t    e2v   temporary d2t    h: Final bathymetry at RHO points     varinq   ncdf_varinq cdfid   h      name   varinq name  read_ncdf_varget     hroms   float temporary res      hroms   hroms 0:jpi 2  0:jpj 2      read all grid U variables     jpiglo   jpiglo   1   jpi   jpi   1   ixmaxmesh   ixmaxmesh   1   firstx   0   lastx   jpi 1   nx   jpi     for i   0  n_elements namebase 1 do begin     varinq   ncdf_varinq cdfid  namebase i u      name   varinq name  read_ncdf_varget     command   namebase2 i u   float temporary res      nothing   execute command    ENDFOR   tmpsave   2    1 e3   d1u 0  0:jpj 2    d1u   1 e3 shift d1u   1  0    d1u    d2u   1 e3 shift d2u  0   1    d2u    for i   0  n_elements namebase2 1 do begin     command   namebase2 i u    namebase2 i u  0:jpj 2      nothing   execute command    ENDFOR   umaskred   byte temporary masku jpi 1      IF jpk GT 1 THEN umaskred   reform umaskred replicate 1b  jpk  1  jpj 1  jpk   overwrite    e1t   temporary d1u    e1t   shift temporary e1t  1  0    e1t 0      temporary tmpsave    e2f   temporary d2u      read all grid V variables     jpiglo   jpiglo   1   jpi   jpi   1   ixmaxmesh   ixmaxmesh   1   firstx   0   lastx   jpi 1   nx   jpi   jpjglo   jpjglo   1   jpj   jpj   1   iymaxmesh   iymaxmesh   1   firsty   0   lasty   jpj 1   ny   jpj     for i   0  n_elements namebase 1 do begin     varinq   ncdf_varinq cdfid  namebase i v      name   varinq name  read_ncdf_varget     command   namebase2 i v   float temporary res      nothing   execute command    ENDFOR   d1v   1 e3 shift d1v   1  0    d1v    tmpsave   2    1 e3   d2v 0:jpi 2  0    d2v   1 e3 shift d2v  0   1    d2v    for i   0  n_elements namebase2 1 do begin     command   namebase2 i v    namebase2 i v 0:jpi 2        nothing   execute command    ENDFOR   vmaskred   byte temporary maskv  jpj 1    IF jpk GT 1 THEN vmaskred   reform vmaskred replicate 1b  jpk  jpi 1  1  jpk   overwrite    e1f   temporary d1v    e2t   temporary d2v    e2t   shift temporary e2t  0  1    e2t  0    temporary tmpsave      read all grid F variables     jpiglo   jpiglo   1   jpi   jpi   1   ixmaxmesh   ixmaxmesh   1   firstx   0   lastx   jpi 1   nx   jpi     for i   0  n_elements namebase 1 do begin     varinq   ncdf_varinq cdfid  namebase i psi      name   varinq name  read_ncdf_varget     command   namebase2 i f   float temporary res      nothing   execute command    ENDFOR   tmpsave1   2    1 e3   d1f 0      d1f   1 e3 shift d1f   1  0    d1f    tmpsave2   2    1 e3   d2f  0    d2f   1 e3 shift d2f  0   1    d2f    fmaskredy   byte maskf jpi 1      IF jpk GT 1 THEN fmaskredy   reform fmaskredy replicate 1b  jpk  1  jpj  jpk   overwrite    fmaskredx   byte temporary maskf  jpj 1    IF jpk GT 1 THEN fmaskredx   reform fmaskredx replicate 1b  jpk  jpi  1  jpk   overwrite    e1v   temporary d1f    e1v   shift temporary e1v  1  0    e1v 0      temporary tmpsave1    e2u   temporary d2f    e2u   shift temporary e2u  0  1    e2u  0    temporary tmpsave2      in the case of key_stride ne  1  1  1  redefine f points   coordinates: they must be in the middle of 3 T points     if key_stride 0  NE 1 OR key_stride 1  NE 1 then BEGIN   we must recompute glamf and gphif      IF jpi GT 1 THEN BEGIN       if  keyword_set key_onearth  AND keyword_set xnotsorted            OR  keyword_set key_periodic  AND key_irregular  then BEGIN         stepxf    glamt   720  MOD 360         stepxf   shift stepxf   1   1    stepxf         stepxf      stepxf   stepxf   360   stepxf   360            stepxf   min abs stepxf  dimension   3          IF NOT keyword_set key_periodic  THEN             stepxf jpi 1      stepxf jpi 2          ENDIF ELSE BEGIN         stepxf   shift glamt   1   1    glamt         IF keyword_set key_periodic  THEN             stepxf jpi 1      360   stepxf jpi 1              ELSE stepxf jpi 1      stepxf jpi 2          ENDELSE       IF jpj GT 1 THEN BEGIN         stepxf  jpj 1    stepxf  jpj 2          stepxf jpi 1  jpj 1    stepxf jpi 2  jpj 2        ENDIF       glamf   glamt   0 5   stepxf     ENDIF ELSE glamf   glamt   0 5     IF jpj GT 1 THEN BEGIN   we must compute stepyf: y distance between T i j  T i 1 j 1        stepyf   shift gphit   1   1    gphit       stepyf  jpj 1    stepyf  jpj 2        IF jpi GT 1 THEN BEGIN         if NOT keyword_set key_periodic  THEN             stepyf jpi 1      stepyf jpi 2            stepyf jpi 1  jpj 1    stepyf jpi 2  jpj 2        ENDIF       gphif   gphit   0 5   stepyf     ENDIF ELSE gphif   gphit   0 5   ENDIF     1d arrays     gdept   findgen jpk    gdepw   findgen jpk    e3t   replicate 1  jpk    e3w   replicate 1  jpk      ncdf_close  cdfid     Apply Glamboudary     if keyword_set glamboundary  AND key_onearth then BEGIN     if glamboundary 0  NE glamboundary 1  then BEGIN       glamt   temporary glamt  MOD 360       smaller   where glamt LT glamboundary 0        if smaller 0  NE  1 then glamt smaller    glamt smaller 360       bigger   where glamt GE glamboundary 1        if bigger 0  NE  1 then glamt bigger    glamt bigger 360       glamu   temporary glamu  MOD 360       smaller   where glamu LT glamboundary 0        if smaller 0  NE  1 then glamu smaller    glamu smaller 360       bigger   where glamu GE glamboundary 1        if bigger 0  NE  1 then glamu bigger    glamu bigger 360       glamv   temporary glamv  MOD 360       smaller   where glamv LT glamboundary 0        if smaller 0  NE  1 then glamv smaller    glamv smaller 360       bigger   where glamv GE glamboundary 1        if bigger 0  NE  1 then glamv bigger    glamv bigger 360       glamf   temporary glamf  MOD 360       smaller   where glamf LT glamboundary 0        if smaller 0  NE  1 then glamf smaller    glamf smaller 360       bigger   where glamf GE glamboundary 1        if bigger 0  NE  1 then glamf bigger    glamf bigger 360       toosmall   where glamu EQ glamboundary 0        IF toosmall 0  NE  1 THEN glamu toosmall    glamu toosmall    360       toosmall   where glamf EQ glamboundary 0        IF toosmall 0  NE  1 THEN glamf toosmall    glamf toosmall    360     endif   endif     make sure we do have 2d arrays when jpj eq 1     IF jpj EQ 1 THEN BEGIN     glamt   reform glamt  jpi  jpj   over      gphit   reform gphit  jpi  jpj   over      e1t   reform e1t  jpi  jpj   over      e2t   reform e2t  jpi  jpj   over      glamu   reform glamu  jpi  jpj   over      gphiu   reform gphiu  jpi  jpj   over      e1u   reform e1u  jpi  jpj   over      e2u   reform e2u  jpi  jpj   over      glamv   reform glamv  jpi  jpj   over      gphiv   reform gphiv  jpi  jpj   over      e1v   reform e1v  jpi  jpj   over      e2v   reform e2v  jpi  jpj   over      glamf   reform glamf  jpi  jpj   over      gphif   reform gphif  jpi  jpj   over      e1f   reform e1f  jpi  jpj   over      e2f   reform e2f  jpi  jpj   over    ENDIF     ixmindta   ixmindtasauve   iymindta   iymindtasauve   izmindta   izmindtasauve     widget_control  noticebase  bad_id   nothing   destroy       grid parameters used by xxx       IF NOT keyword_set strcalling  THEN BEGIN     IF n_elements ccmeshparameters  EQ 0 THEN strcalling    ncdf_meshroms        ELSE strcalling   ccmeshparameters filename   ENDIF   IF n_elements glamt  GE 2 THEN BEGIN     glaminfo   moment glamt      IF finite glaminfo 2  EQ 0 THEN glaminfo   glaminfo 0:1      gphiinfo   moment gphit      IF finite gphiinfo 2  EQ 0 THEN gphiinfo   gphiinfo 0:1    ENDIF ELSE BEGIN     glaminfo   glamt     gphiinfo   gphit   ENDELSE   romszinfos    h:hroms  zeta:replicate 0  jpi  jpj  theta_s: 1  theta_b: 1  hc: 1    ccmeshparameters    filename:strcalling                glaminfo:float string glaminfo  format    E11 4                gphiinfo:float string gphiinfo  format    E11 4                jpiglo:jpiglo  jpjglo:jpjglo  jpkglo:jpkglo               jpi:jpi  jpj:jpj  jpk:jpk               ixminmesh:ixminmesh  ixmaxmesh:ixmaxmesh               iyminmesh:iyminmesh  iymaxmesh:iymaxmesh               izminmesh:izminmesh  izmaxmesh:izmaxmesh               key_shift:key_shift  key_periodic:key_periodic               key_stride:key_stride  key_gridtype:key_gridtype               key_yreverse:key_yreverse  key_zreverse:key_zreverse               key_partialstep:key_partialstep  key_onearth:key_onearth      if keyword_set key_performance  THEN       print   time ncdf_meshread  systime 1 tempsun        updateold      return  end");
 a[44] = new Array("./Grid/numbisland.html", "numbisland.pro", "", "       hidden      file_comments   recursive function    for one given point on an island  check if its neighbors are on the same island      param msk  in required type 2D array of 0 and 1    land sea mask with 0 on the land and 1 on the ocean      param nx  in required type scalar    x size of the mask      param ny  in required type scalar    y size of the mask      param indin  in required type 1D array    index listing the point of the mask which are on the island      param numb  in required type scalar    number of the island     PRO mskneig  msk  nx  ny  indin  numb     compile_opt idl2  strictarrsubs     flag the point   msk indin    numb   find its neighbors   indx    indin MOD nx     1L  0L  1L    indx    temporary indx    nx  MOD nx   x periodicity   indy    indin nx     1L  0L  1L    indy   0   temporary indy   a   numbisland tmask 0       history    Jan 2006: sebastien masson  smasson locean ipsl upmc fr       version    Id: numbisland pro 325 2007 12 06 10:04:53Z pinsard       FUNCTION numbisland  mskin     compile_opt idl2  strictarrsubs     time1   systime 1    performance measurement   szmsk   size reform mskin    IF szmsk 0  NE 2 THEN stop   nx   szmsk 1    ny   szmsk 2    msk   fix mskin     islnumb   10   default value    land    where msk EQ 0  count 0    WHILE count NE 0 DO BEGIN     IF  islnumb 9  MOD 10 EQ 0 THEN BEGIN        ras   report island number : strtrim islnumb 9  1      ENDIF     mskneig  msk  nx  ny  land  islnumb      land    where msk EQ 0  count 0      islnumb   islnumb   1   ENDWHILE    msk   msk 9   msk where msk EQ  8    0    print   time:  systime 1 time1    RETURN  msk END");
@@ -58,5 +58,5 @@
 a[56] = new Array("./Interpolation/extrapolate.html", "extrapolate.pro", "", "       file_comments   extrapolate data  zinput  where maskinput equal 0 by filling step by   step the coastline points with the mean value of the 8 neighbors    weighted by their mask values       categories   Interpolation      param zinput  in required type 2d array    data to be extrapolate      param maskinput  in required type 2d array or  1    a 2D array  the land sea mask of the output data  1 on ocean  0 on land    put  1 if input data are not masked      param nb_iteration  in optional type integer default large enough to fill everything    Maximum number of iterations done in the extrapolation process  If there   is no more masked values we exit extrapolate before reaching nb_iteration      keyword X_PERIODIC  type scalar  0 or 1 default 0    put 1 to specify that the data are periodic along x axis      keyword MINVAL  type scalar default not used    to specify a minimum value to the extrapolated values      keyword MAXVAL  type scalar default not used    to specify a maximum value to the extrapolated values      keyword GE0  type scalar 0 or 1 default 0    put 1 to force the extrapolated values to be larger than 0  same as using minval 0       keyword    _EXTRA to be able to call extrapolate with _extra keyword      returns   the extrapolated 2d array      examples   IDL  a extrapolate dist jpi jpj tmask 0 x_periodic    IDL  tvplus  a   IDL  tvplus  a 1 tmask 0    get the coastline:   IDL  a extrapolate tmask 0 tmask 0 1 x_periodic    IDL  tvplus  a tmask 0       history    Originaly written by G  Roullet    Sebastien Masson  smasson lodyc jussieu fr       version    Id: extrapolate pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION extrapolate  zinput  maskinput  nb_iteration  X_PERIODIC x_periodic                           MINVAL minval  MAXVAL maxval  GE0 ge0  _EXTRA ex     compile_opt idl2  strictarrsubs     check the number of iteration used in the extrapolation    szin   size zinput    IF szin 0  NE 2 THEN return   1  ELSE szin   szin 1:2    nx   szin 0    ny   szin 1    IF n_elements nb_iteration  EQ 0 THEN nb_iteration   max szin    IF nb_iteration EQ 0 THEN return  zinput   take care of the boundary conditions      for the x direction  we put 2 additional columns at the left and   right side of the array    for the y direction  we put 2 additional lines at the bottom and   top side of the array    These changes allow us to use shift function without taking care of   the x and y periodicity      ztmp   bytarr nx 2  ny 2    IF n_elements maskinput  EQ 1 AND maskinput 0  EQ  1 THEN maskinput   replicate 1b  nx  ny    IF n_elements maskinput  NE nx ny THEN BEGIN     ras   report input grid mask do not have the good size      return   1   ENDIF   ztmp 1:nx  1:ny    byte maskinput    msk   temporary ztmp      ztmp   replicate 1 e20  nx 2  ny 2    ztmp 1:nx  1:ny    zinput   if keyword_set x_periodic  then begin     ztmp 0  1:ny    zinput nx 1        ztmp nx 1  1:ny    zinput 0      ENDIF   remove NaN points if there is some    nan   where finite ztmp  EQ 0  cnt_nan    IF cnt_nan NE 0 THEN ztmp temporary nan    1 e20   z   temporary ztmp    nx2   nx 2   ny2   ny 2       extrapolation     sqrtinv   1 sqrt 2      cnt   1   When we look for the coastline  we don t want to select the   borderlines of the array    we force the value of the mask for   those lines    msk 0      1b   msk nx 1      1b   msk  0    1b   msk  ny 1    1b   find the land points   land   where msk EQ 0  cnt_land      WHILE cnt LE nb_iteration AND cnt_land NE 0 DO BEGIN     find the coastline points      Once the land points list has been found  we change back the   mask values for the boundary conditions      msk 0      0b     msk nx 1      0b     msk  0    0b     msk  ny 1    0b     if keyword_set x_periodic  then begin       msk 0      msk nx          msk nx 1      msk 1        endif     we compute the weighted number of sea neighbors    those 4 neighbors have a weight of 1:                         those 4 neighbors have a weight of 1 sqrt 2 :                                 As we make sure that none of the land points are located on the   border of the array  we can compute the weight without shift    faster        weight   msk land 1 msk land 1 msk land nx2 msk land nx2                  sqrtinv msk land nx2 1 msk land nx2 1                            msk land nx2 1 msk land nx2 1    list all the points that have sea neighbors     ok   where weight GT 0    the coastline points     coast   land ok    their weighted number of sea neighbors      weight   weight temporary ok      fill the coastline points       z   temporary z msk       zcoast   z 1 coast z 1 coast z nx2 coast z nx2 coast                  1 sqrt 2 z nx2 1 coast z nx2 1 coast                               z nx2 1 coast z nx2 1 coast        IF keyword_set ge0  THEN zcoast   0    temporary zcoast      IF n_elements minval  NE 0 THEN zcoast   minval   temporary zcoast      IF n_elements maxval  NE 0 THEN zcoast   temporary zcoast   we force the value of the mask for   those lines      msk 0      1b     msk nx 1      1b     msk  0    1b     msk  ny 1    1b   find the land points     land   where msk EQ 0  cnt_land      ENDWHILE     we return the original size of the array       return  z 1:nx  1:ny  END");
 a[57] = new Array("./Interpolation/extrapsmooth.html", "extrapsmooth.pro", "", "       file_comments   similar to extrapolate but could to the job in a better way   because the extrapolated values are smoothed    takes more time than extrapolate    extrapolate data where mskin is equal 0 by filling   step by step the coastline points with the mean value of the 8 neighbors       categories   Interpolation      param in  in required type 2d array    data to be extrapolate      param mskin  in required type 2d array or  1    a 2D array  the land sea mask of the output data  1 on ocean  0 on land    put  1 if input data are not masked      keyword MINVAL  type scalar default not used    to specify a minimum value to the extrapolated values      keyword MAXVAL  type scalar default not used    to specify a maximum value to the extrapolated values      keyword GE0  type scalar 0 or 1 default 0    put 1 to force the extrapolated values to be larger than 0  same as using minval 0       keyword    _EXTRA to be able to call extrapsmooth with _extra keyword      returns   the extrapolated array with no more masked values      restrictions   You cannot specify the number of iterations done in the extrapolation process      examples   IDL  a extrapsmooth dist jpi jpj tmask 0 x_periodic    IDL  tvplus  a   compare to extrapolate result:   IDL  b extrapolate dist jpi jpj tmask 0 x_periodic    IDL  tvplus  b  window   1      history    January 2007: Sebastien Masson  smasson lodyc jussieu fr       version    Id: extrapsmooth pro 327 2007 12 13 16:22:35Z pinsard     FUNCTION extrapsmooth  in  mskin  X_PERIODIC x_periodic                          MINVAL minval  MAXVAL maxval  GE0 ge0  _EXTRA ex     compile_opt strictarr  strictarrsubs     sz   size reform in    IF sz 0  NE 2 THEN BEGIN     ras   report Input arrays must have 2 dimensions      return   1   ENDIF   nx   sz 1    ny   sz 2    IF n_elements mskin  EQ 1 AND mskin 0  EQ  1 THEN mskin   replicate 1b  nx  ny    IF n_elements mskin  NE nx ny THEN BEGIN     ras   report input grid mask do not have the good size      return   1   ENDIF     out   reform in    whmsk   where mskin EQ 0  nbr    IF nbr NE 0 THEN out temporary whmsk     values f_nan   add values on each side of the array to avoid boundary effects   nx2   nx 2   ny2   ny 2   add   replicate values f_nan  nx  ny2    out    add   temporary out   add    IF keyword_set x_periodic   THEN BEGIN     add1   out 0:nx2        add2   out nx nx2:nx 1        out    add2   temporary out  add1    ENDIF ELSE BEGIN     add   replicate values f_nan  nx2  ny 2 ny2      out    add   temporary out  add    ENDELSE     msk0   where finite out  EQ 0    nnan   total finite out   nan    i   1   WHILE nnan NE 0 DO BEGIN     tmp   smooth out  2 i   1   nan        find only the changed values that where on land     new   where finite out  EQ 0 AND finite tmp  EQ 1  nnew      IF nnew EQ 0 then nnan   0 ELSE BEGIN       IF keyword_set ge0  THEN tmp   0    temporary tmp        IF n_elements minval  NE 0 THEN tmp   minval   temporary tmp        IF n_elements maxval  NE 0 THEN tmp   temporary tmp   temporary out    IF n_elements minval  NE 0 THEN out   minval   temporary out    IF n_elements maxval  NE 0 THEN out   temporary out    maxval   get back to the original domain   out    temporary out nx2:nx nx2 1  ny2:ny ny2 1    put back the non maskqed values   whmsk   where mskin NE 0    out whmsk    in whmsk      return  out END");
-a[58] = new Array("./Interpolation/file_interp.html", "file_interp.pro", "", "       hidden     FUNCTION call_interp2d  data  inlon  inlat  inmask  outlon  outlat                           INIRR inirr  METHOD method  SMOOTH smooth                           WEIG weig  ADDR addr  NAN_VALUE NaN_value  _EXTRA ex     compile_opt idl2  strictarrsubs     for byte  short and long  convert to double before extrapolation and interpolation   intype   size data   type    if intype LE 3 THEN data   double temporary data      take care of NaN values   mask   inmask  finite data      IF keyword_set NaN_value  THEN BEGIN     CASE 1 OF       nan_value GT 1 e6:mask   temporary mask     data LT  nan_value 10        nan_value LT  1 e6:mask   temporary mask     data GT  nan_value 10        abs nan_value  LT 1 e 6:mask   temporary mask     data GT 1 e 6        ELSE:mask   temporary mask     data NE nan_value      ENDCASE   ENDIF   extrapolation     IF keyword_set smooth  THEN data   extrapsmooth temporary data  mask   x_periodic  _extra   ex        ELSE data   extrapolate temporary data  mask   x_periodic  _extra   ex    interpolation   IF NOT keyword_set inirr  THEN BEGIN     data   fromreg method  temporary data  inlon  inlat  outlon  outlat  WEIG   weig  ADDR   addr  _extra   ex    ENDIF ELSE BEGIN     data   fromirr method  temporary data  inlon  inlat   1  outlon  outlat   1  WEIG   weig  ADDR   addr    ENDELSE    if intype LE 3 THEN data   round temporary data     RETURN  data END        file_comments   interpolate a NetCDF file from a grid to another  both regular or not       categories   Interpolation  NetCDF      param filein  in type scalar string    input file name  must exist       param fileout  in type scalar string    output file name  will be overwritten if already exist       param gridout  in type scalar string    output grid file name  must exist and must contain the   longitude and latitude axis as 1D or 2D arrays       keyword GRIDIN  type scalar string default set to filein    define the input grid file name  It must exist and must contain the   longitude and latitude axis as 1D or 2D arrays  Useful if   filein file doesn t contain longitude and latitude axis      keyword MASKIN  type scalar string default set to gridin    define the input mask file name  It must exist  The mask will be   determined through ncdf_getmask according to the keywords   inmaskname  ininvmask  inuseasmask  inmissing_value  inaddscl_before    see below       keyword MASKOUT  type scalar string default set to gridout    define the output mask file name  It must exist  The mask will be   determined through ncdf_getmask according to the keywords   outmaskname  outinvmask  outuseasmask  outmissing_value    outaddscl_before  see bellow       keyword KEEP  type string array default all variables    array defining the name of the variables that must be kept in the   output file      keyword REMOVE  type string array default empty    array defining the name of the variables that will be removed in the   output file      keyword METHOD  type scalar string default bilinear    interpolation method: can be only  bilinear   or  imoms3  if the input grid   is a  regular  grid  A  regular rectangular grid  is defined as a   grid for which each longitude lines have the same latitude and each   latitude columns have the same longitude       keyword SMOOTH  type scalar 0 or 1 default 0    activate to use extrapsmooth instead of   extrapolate when extrapolating input data over masked   points       keyword SET_XDIMNAME  type scalar string default not used    used to defined the name of x dimension in filein input file when   gridin keyword is used and when the x dimension name is not the same   in filein and gridin files  By default  we assume both file have the   same x dimension name       keyword SET_YDIMNAME  type scalar string default not used    same as set_xdimname but for y dimension      keyword SET_XAXISNAME  type scalar string default not used    used to defined the name of the variable containing the x axis in   filein input file when gridin keyword is used and when its variable   containing the x axis name is not the same  By default  we assume   both file have the same x axis name  Not that if filein includes x   axis there is no point to use gridin      keyword SET_YAXISNAME  type scalar string default not used    same as set_xaxisname but for y dimension      keyword INMASKNAME  type scalar string default not used    A string giving the name of the variable in the file maskin that   contains the land sea mask      keyword OUTMASKNAME  type scalar string default not used    same as inmaskname but for output mask file maskout      keyword ININVMASK  default 0 type scalar: 0 or 1    Inverse the land sea mask of the input mask file maskin  that should   have 0 1 values for land sea       keyword OUTINVMASK  default 0 type scalar: 0 or 1    same as ininvmask but for output mask file maskout      keyword INUSEASMASK  type scalar string    A string giving the name of the variable in the input mask file maskin   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 OUTUSEASMASK  type scalar string    same as inuseasmask but for output mask file maskout      keyword INMISSING_VALUE  type scalar    To define  or redefine if the attribute is already existing  the   missing values used by INUSEASMASK keyword      keyword OUTMISSING_VALUE  type scalar    same as inmissing_value but for output mask file maskout      keyword INADDSCL_BEFORE  default 0 type scalar: 0 or 1    put 1 to apply add_offset and scale factor on data before looking for   missing values when using INUSEASMASK keyword      keyword OUTADDSCL_BEFORE  default 0 type scalar: 0 or 1    same as inaddscl_before but for output mask file maskout      keyword NAN_VALUE  type scalar default not used    define the missing value in input data  missing values are treated   like masked values and will be filled with extrapolation before   interpolation       keyword ADDR  type 2d array or variable name    1  at the first call of file_interp:     This keyword can be set to a named variable  undefined or equal to     0  into which the addresses used to perform the interpolation will     be copied when the current routine exits    2  Next  once this keyword is set to a defined 2d array  it is used     to bypass the computation of the weights and addresses used to     perform the interpolation  In this case  interpolation is much     faster      keyword WEIG  type 2d array or variable name     see ADDR       keyword INXAXISNAME  default x   longitude   nav_lon   lon   lon_rho  or  NbLongitudes type scalar string    A string giving the name of the variable containing the x axis in   the input grid file gridin      keyword INYAXISNAME  default y   latitude   nav_lat lat   lat_rho  or  NbLatitudes type scalar string    same as inxaxisname but for the y axis in the input grid file gridin      keyword OUTXAXISNAME  default x   longitude   nav_lon   lon   lon_rho  or  NbLongitudes type scalar string    same as inxaxisname but for output grid file gridout      keyword OUTYAXISNAME  default y   latitude   nav_lat lat   lat_rho  or  NbLatitudes type scalar string    same as inyaxisname but for output grid file gridout      keyword  _EXTRA   to use extrapolate  extrapsmooth and fromreg keywords      uses   extrapsmooth  extrapolate  fromreg and fromirr      restrictions       perform only horizontal interpolations on scalar fields     will fill all masked and missing values before interpolation     attributes  like valid_min  are not updated     see restrictions of fromreg and fromirr      examples     IDL  file_interp  filein  fileout  gridout  inxaxisname    lo  inyaxisname    la  keep    lo   la   cond_sed      IDL  file_interp  in  out  gdout  inuseasmask    sst  inmissing_value    1 00000e 30  nan_value    1000 00      history    September 2007: Sebastien Masson  smasson locean ipsl upmc fr       version    Id: file_interp pro 330 2008 02 01 16:28:24Z smasson       PRO file_interp  filein  fileout  gridout  GRIDIN gridin  MASKIN maskin  MASKOUT maskout                    KEEP keep  REMOVE remove  METHOD method  SMOOTH smooth                    SET_XDIMNAME set_xdimname  SET_YDIMNAME set_ydimname                    SET_XAXISNAME set_xaxisname  SET_YAXISNAME set_yaxisname                    INMASKNAME inmaskname  ININVMASK ininvmask                    INUSEASMASK inuseasmask                    INMISSING_VALUE inmissing_value                    INADDSCL_BEFORE inaddscl_before                    OUTMASKNAME outmaskname  OUTINVMASK outinvmask                    OUTUSEASMASK outuseasmask                    OUTMISSING_VALUE outmissing_value                    OUTADDSCL_BEFORE outaddscl_before                    NAN_VALUE NaN_value  WEIG weig  ADDR addr                    INXAXISNAME inxaxisname  INYAXISNAME inyaxisname                    OUTXAXISNAME outxaxisname  OUTYAXISNAME outyaxisname                    _EXTRA ex     compile_opt idl2  strictarrsubs   revision    Id: file_interp pro 330 2008 02 01 16:28:24Z smasson       IF NOT keyword_set method  THEN method    bilinear      input filenames checks      inid   ncdf_open filein    ininq   ncdf_inquire inid     outid   ncdf_create fileout   clobber    ncdf_control  outid   nofill    IF NOT keyword_set gridin  THEN gridin   filein    IF NOT keyword_set maskin  THEN maskin   gridin   IF NOT keyword_set maskout  THEN maskout   gridout     Copy global attributes     FOR i   0  ininq ngatts 1 DO BEGIN     name   ncdf_attname inid  i   global      dummy   ncdf_attcopy inid  name  outid   in_global   out_global    ENDFOR   ncdf_attput  outid   Created_by  revision   GLOBAL     x y dim and x yaxis informations     ncdf_getaxis  gridin  indimidx  indimidy  inlon  inlat  xdimname   inxdimname  ydimname   inydimname                     xaxisname   inxaxisname  yaxisname   inyaxisname   get_gridparams  inlon  inlat  jpiin  jpjin  2   IF keyword_set set_xdimname  THEN inxdimname   set_xdimname   IF keyword_set set_ydimname  THEN inydimname   set_ydimname   IF keyword_set set_xaxisname  THEN inxaxisname   set_xaxisname   IF keyword_set set_yaxisname  THEN inyaxisname   set_yaxisname     ncdf_getaxis  gridout  outdimidx  outdimidy  outlon  outlat  xaxisname   outxaxisname  yaxisname   outyaxisname   get_gridparams  outlon  outlat  jpiout  jpjout  2     masks     inmask   ncdf_getmask maskin  MASKNAME   inmaskname  INVMASK   ininvmask  USEASMASK   inuseasmask                            MISSING_VALUE   inmissing_value  ADDSCL_BEFORE   inaddscl_before    inmasksz   size inmask   dimensions    IF size inmask   n_dimensions  EQ 2 THEN inmasksz    inmasksz  0    IF n_elements inmaskname  EQ 0 THEN inmaskname    not defined    default definition   outmask   ncdf_getmask maskout  MASKNAME   outmaskname  INVMASK   outinvmask  USEASMASK   outuseasmask                             MISSING_VALUE   outmissing_value  ADDSCL_BEFORE   outaddscl_before      irregular grids      CASE 0 OF     array_equal inlon  0  inlon  jpjin 1 :inirr   1b     array_equal inlat 0    inlat jpiin 1   :inirr   1b     array_equal inlon  inlon  0 replicate 1  jpjin :inirr   1b     array_equal inlat  replicate 1  jpiin inlat 0   :inirr   1b     ELSE:inirr   0b   ENDCASE   CASE 0 OF     array_equal outlon  0  outlon  jpjout 1 :outirr   1b     array_equal outlat 0    outlat jpiout 1   :outirr   1b     array_equal outlon  outlon  0 replicate 1  jpjout :outirr   1b     array_equal outlat  replicate 1  jpiout outlat 0   :outirr   1b     ELSE:outirr   0b   ENDCASE    IF inirr AND method NE  bilinear  THEN stop     Dimensions     indimsz   lonarr ininq ndims    outdimsz   lonarr ininq ndims    outdimid   lonarr ininq ndims    FOR i   0  ininq ndims 1 DO BEGIN     ncdf_diminq  inid  i  name  size     indimsz i    size     outdimsz i    size     CASE 1 OF       strlowcase name  EQ strlowcase inxdimname : BEGIN         outdimid i    ncdf_dimdef outid  name  jpiout          outdimsz i    jpiout         indimx   i         outdimx   outdimid i        END       strlowcase name  EQ strlowcase inydimname : BEGIN         outdimid i    ncdf_dimdef outid  name  jpjout          outdimsz i    jpjout         indimy   i         outdimy   outdimid i        END       i EQ ininq recdim: outdimid i    ncdf_dimdef outid  name   UNLIMITED        ELSE: outdimid i    ncdf_dimdef outid  name  size      ENDCASE   ENDFOR     Variables     outvarid   lonarr ininq nvars    FOR i   0  ininq nvars 1 DO BEGIN     varinq   ncdf_varinq inid  i      okvar   1     IF keyword_set keep  THEN okvar   total strlowcase keep  EQ strlowcase varinq name  EQ 1     IF keyword_set remove  THEN okvar   total strlowcase remove  EQ strlowcase varinq name  EQ 0     IF okvar THEN BEGIN       IF varinq ndims EQ 0 THEN BEGIN   scalar variable         outvarid i    ncdf_vardef outid  varinq name                                       BYTE   varinq datatype EQ  BYTE  CHAR   varinq datatype EQ  CHAR                                        SHORT   varinq datatype EQ  INT  OR varinq datatype EQ  SHORT                                        LONG   varinq datatype EQ  LONG                                        FLOAT   varinq datatype EQ  FLOAT  DOUBLE   varinq datatype EQ  DOUBLE        ENDIF ELSE BEGIN            array         CASE 1 OF           strlowcase varinq name  EQ strlowcase inxaxisname :BEGIN   xaxis             IF outirr THEN dimvar    outdimx  outdimy  ELSE dimvar    outdimx            END           strlowcase varinq name  EQ strlowcase inyaxisname :BEGIN   yaxis             IF outirr THEN dimvar    outdimx  outdimy  ELSE dimvar    outdimy            END           strlowcase varinq name  EQ strlowcase inmaskname :BEGIN   mask             IF outmask 0  NE  1 THEN dimvar   outdimid varinq dim  ELSE dimvar    1           END            total varinq dim EQ indimx    total varinq dim EQ indimx  EQ 1: dimvar    1   strange variable            ELSE: dimvar   outdimid varinq dim          ENDCASE         IF dimvar 0  NE  1 THEN BEGIN           outvarid i    ncdf_vardef outid  varinq name  dimvar                                         BYTE   varinq datatype EQ  BYTE  CHAR   varinq datatype EQ  CHAR                                          SHORT   varinq datatype EQ  INT  OR varinq datatype EQ  SHORT                                          LONG   varinq datatype EQ  LONG                                          FLOAT   varinq datatype EQ  FLOAT  DOUBLE   varinq datatype EQ  DOUBLE          ENDIF ELSE outvarid i      1       ENDELSE   Variables attributes       IF outvarid i  NE   1 THEN BEGIN         FOR j   0  varinq natts 1 DO BEGIN           name   ncdf_attname inid  i  j            dummy   ncdf_attcopy inid  i  name  outid  outvarid i          ENDFOR       ENDIF     ENDIF ELSE outvarid i     1   ENDFOR     ncdf_control  outid   endef     FOR i   0  ininq nvars 1 DO BEGIN     IF outvarid i  NE  1 THEN BEGIN       varinq   ncdf_varinq inid  i        IF varinq ndims GE 2 THEN BEGIN         interp   varinq dim 0  EQ indimx AND varinq dim 1  EQ indimy       ENDIF ELSE interp   0b       CASE 1 OF         strlowcase varinq name  EQ strlowcase inxaxisname :BEGIN   x axis           IF outirr THEN ncdf_varput  outid  outvarid i  outlon             ELSE ncdf_varput  outid  outvarid i  outlon  0          END         strlowcase varinq name  EQ strlowcase inyaxisname :BEGIN   y axis           IF outirr THEN ncdf_varput  outid  outvarid i  outlat             ELSE ncdf_varput  outid  outvarid i  reform outlat 0            END         strlowcase varinq name  EQ strlowcase inmaskname :BEGIN   mask           ncdf_varput  outid  outvarid i  outmask         END         ELSE:BEGIN           CASE varinq ndims OF             0:BEGIN               salar               ncdf_varget  inid  i  data               ncdf_varput  outid  outvarid i  temporary data              END             1:BEGIN               1D               ncdf_varget  inid  i  data               ncdf_varput  outid  outvarid i  temporary data              END             2:BEGIN               2D               ncdf_varget  inid  i  data               IF interp THEN data   call_interp2d temporary data  inlon  inlat  inmask    0  outlon  outlat                                                       INIRR   inirr  METHOD   method  SMOOTH   smooth                                                       WEIG   weig  ADDR   addr  NAN_VALUE   NaN_value  _extra   ex                ncdf_varput  outid  outvarid i  temporary data              END             3:BEGIN               3D               FOR k   0  indimsz varinq dim 2 1 DO BEGIN                 incnt    indimsz varinq dim 0: 1  1                  outcnt    outdimsz varinq dim 0: 1  1                  off    0  0  k                  ncdf_varget  inid  i  data  offset   off  count   incnt                 IF n_elements inmasksz  GE 3 THEN BEGIN                   IF inmasksz 2  EQ indimsz varinq dim 2  AND varinq dim 2  NE ininq recdim THEN tmpmsk   inmask    k                      ELSE tmpmsk   inmask    0                  ENDIF ELSE tmpmsk   inmask    0                  IF interp THEN data   call_interp2d temporary data  inlon  inlat  temporary tmpmsk  outlon  outlat                                                         INIRR   inirr  METHOD   method  SMOOTH   smooth                                                         WEIG   weig  ADDR   addr  NAN_VALUE   NaN_value  _extra   ex                  ncdf_varput  outid  outvarid i  temporary data  offset   off  count   outcnt               ENDFOR             END             4:BEGIN               4D               FOR t   0  indimsz varinq dim 3 1 DO BEGIN                 FOR k   0  indimsz varinq dim 2 1 DO BEGIN                   incnt    indimsz varinq dim 0: 1  1  1                    outcnt    outdimsz varinq dim 0: 1  1  1                    off    0  0  k  t                    ncdf_varget  inid  i  data  offset   off  count   incnt                   IF n_elements inmasksz  GE 3 THEN BEGIN                     IF inmasksz 2  EQ indimsz varinq dim 2  THEN tmpmsk   inmask    k  ELSE tmpmsk   inmask                   ENDIF ELSE tmpmsk   inmask    0                    IF interp THEN data   call_interp2d temporary data  inlon  inlat  temporary tmpmsk  outlon  outlat                                                           INIRR   inirr  METHOD   method  SMOOTH   smooth                                                           WEIG   weig  ADDR   addr  NAN_VALUE   NaN_value  _extra   ex                    ncdf_varput  outid  outvarid i  temporary data  offset   off  count   outcnt                 ENDFOR               ENDFOR             END           ENDCASE         END       ENDCASE     ENDIF   ENDFOR    ncdf_close  inid   ncdf_close  outid    return END");
+a[58] = new Array("./Interpolation/file_interp.html", "file_interp.pro", "", "       hidden     FUNCTION call_interp2d  data  inlon  inlat  inmask  outlon  outlat                           INIRR inirr  METHOD method  SMOOTH smooth                           WEIG weig  ADDR addr  MISSING_VALUE missing_value  _EXTRA ex     compile_opt idl2  strictarrsubs     for byte  short and long  convert to double before extrapolation and interpolation   intype   size data   type    if intype LE 3 THEN data   double temporary data      take care of NaN values   nanmsk   finite data    IF total nanmsk  NE n_elements nanmsk  THEN BEGIN     data where nanmsk EQ 0b    1 e20   put large value to be sure they are removed during the interpolation     mask   inmask   temporary nanmsk    ENDIF ELSE mask   inmask     tpmiss   size missing_value   type    IF tpmiss NE 0 AND tpmiss NE 7 THEN BEGIN     CASE 1 OF       missing_value GT 1 e6:mask   temporary mask     data LT  missing_value 10        missing_value LT  1 e6:mask   temporary mask     data GT  missing_value 10        abs missing_value  LT 1 e 6:mask   temporary mask     abs data  GT 1 e 6        ELSE:mask   temporary mask     data NE missing_value      ENDCASE   ENDIF   extrapolation     IF keyword_set smooth  THEN data   extrapsmooth temporary data  mask   x_periodic  _extra   ex        ELSE data   extrapolate temporary data  mask   x_periodic  _extra   ex    interpolation   IF NOT keyword_set inirr  THEN BEGIN     data   fromreg method  temporary data  inlon  inlat  outlon  outlat  WEIG   weig  ADDR   addr  _extra   ex    ENDIF ELSE BEGIN     data   fromirr method  temporary data  inlon  inlat   1  outlon  outlat   1  WEIG   weig  ADDR   addr    ENDELSE    if intype LE 3 THEN data   round temporary data     RETURN  data END        file_comments   interpolate a NetCDF file from a grid to another  both regular or not       categories   Interpolation  NetCDF      param filein  in type scalar string    input file name  must exist       param fileout  in type scalar string    output file name  will be overwritten if already exist       param gridout  in type scalar string    output grid file name  must exist and must contain the   longitude and latitude axis as 1D or 2D arrays       keyword GRIDIN  type scalar string default set to filein    define the input grid file name  It must exist and must contain the   longitude and latitude axis as 1D or 2D arrays  Useful if   filein file doesn t contain longitude and latitude axis      keyword MASKIN  type scalar string default set to gridin    define the input mask file name  It must exist  The mask will be   determined through ncdf_getmask according to the keywords   inmaskname  ininvmask  inuseasmask  inmissing_value  inaddscl_before    see below       keyword MASKOUT  type scalar string default set to gridout    define the output mask file name  It must exist  The mask will be   determined through ncdf_getmask according to the keywords   outmaskname  outinvmask  outuseasmask  outmissing_value    outaddscl_before  see below       keyword KEEP  type string array default all variables    array defining the name of the variables that must be kept in the   output file      keyword REMOVE  type string array default empty    array defining the name of the variables that will be removed in the   output file      keyword METHOD  type scalar string default bilinear    interpolation method: can be only  bilinear   or  imoms3  if the input grid   is a  regular  grid  A  regular rectangular grid  is defined as a   grid for which each longitude lines have the same latitude and each   latitude columns have the same longitude       keyword SMOOTH  type scalar 0 or 1 default 0    activate to use extrapsmooth instead of   extrapolate when extrapolating input data over masked   points       keyword SET_XDIMNAME  type scalar string default not used    used to defined the name of x dimension in filein input file when   gridin keyword is used and when the x dimension name is not the same   in filein and gridin files  By default  we assume both file have the   same x dimension name       keyword SET_YDIMNAME  type scalar string default not used    same as set_xdimname but for y dimension      keyword SET_XAXISNAME  type scalar string default not used    used to defined the name of the variable containing the x axis in   filein input file when gridin keyword is used and when its variable   containing the x axis name is not the same  By default  we assume   both file have the same x axis name  Not that if filein includes x   axis there is no point to use gridin      keyword SET_YAXISNAME  type scalar string default not used    same as set_xaxisname but for y dimension      keyword INMASKNAME  type scalar string default not used    A string giving the name of the variable in the file maskin that   contains the land sea mask      keyword OUTMASKNAME  type scalar string default not used    same as inmaskname but for output mask file maskout      keyword ININVMASK  default 0 type scalar: 0 or 1    Inverse the land sea mask of the input mask file maskin  that should   have 0 1 values for land sea       keyword OUTINVMASK  default 0 type scalar: 0 or 1    same as ininvmask but for output mask file maskout      keyword INUSEASMASK  type scalar string    A string giving the name of the variable in the input mask file   that will be used to build the input land sea mask  In this case the   mask is based on the first record  if record dimension   exists  The input mask is build according to operator defined by INTESTOP   keyword  default NE  and the testing values defined as      1  the second word of TESTOP if existing     2  MISSING_VALUE keyword     3  attribute missing_value or _fillvalue of the variable USEASMASK     4   Values f_nan  can be used only with NE and EQ operators       keyword OUTUSEASMASK  type scalar string    same as inuseasmask but for output mask file maskout      keyword INMISSING_VALUE  type scalar    To define  or redefine if the attribute is already existing  the   missing values used with INUSEASMASK keyword to build the input mask    Note that this value is not used if INTESTOP keyword is given and   contains 2 words    Note: do not mismatch with MISSING_VALUE used to detect missing   values at reach record          keyword OUTMISSING_VALUE  type scalar    same as inmissing_value but for output mask file maskout      keyword INTESTOP  default NE   type scalar string  for example  GT 0 5    a string describing the type of test that will be done to define the   input mask  The test is performed on the variable specified by INUSEASMASK   keyword    INTESTOP can contain 1 or 2 words  The first word is the operator   definition:  EQ   NE   GE   GT   LE   LT   default is NE  The   second word define the testing value  If INTESTOP contains only 1   word  then the test value is denifed by     1  INMISSING_VALUE keyword     2  attribute missing_value or _fillvalue of the variable INUSEASMASK     3   Values f_nan  can be used only with NE and EQ operators       keyword OUTTESTOP  default NE   type scalar string  for example  GT 0 5    same as INTESTOP but for output mask file maskout      keyword INADDSCL_BEFORE  default 0 type scalar: 0 or 1    put 1 to apply add_offset and scale factor on data before looking for   missing values when using INUSEASMASK keyword      keyword OUTADDSCL_BEFORE  default 0 type scalar: 0 or 1    same as inaddscl_before but for output mask file maskout      keyword MISSING_VALUE  type scalar default defined by attribute missing_value or _fillvalue     Re define the missing value in input data  missing values are treated   like masked values and will be filled with extrapolation before   interpolation     Note: do not mismatch with  IN OUT MISSING_VALUE which are missing value   used  in association with  IN OUT USEASMASK  to built the mask  that   does not change from one record to another    Note: this value will be apply to all interpolated variables      keyword ADDR  type 2d array or variable name    1  at the first call of file_interp:     This keyword can be set to a named variable  undefined or equal to     0  into which the addresses used to perform the interpolation will     be copied when the current routine exits    2  Next  once this keyword is set to a defined 2d array  it is used     to bypass the computation of the weights and addresses used to     perform the interpolation  In this case  interpolation is much     faster      keyword WEIG  type 2d array or variable name     see ADDR       keyword INXAXISNAME  default x   longitude   nav_lon   lon   lon_rho  or  NbLongitudes type scalar string    A string giving the name of the variable containing the x axis in   the input grid file gridin      keyword INYAXISNAME  default y   latitude   nav_lat lat   lat_rho  or  NbLatitudes type scalar string    same as inxaxisname but for the y axis in the input grid file gridin      keyword OUTXAXISNAME  default x   longitude   nav_lon   lon   lon_rho  or  NbLongitudes type scalar string    same as inxaxisname but for output grid file gridout      keyword OUTYAXISNAME  default y   latitude   nav_lat lat   lat_rho  or  NbLatitudes type scalar string    same as inyaxisname but for output grid file gridout      keyword  _EXTRA   to use extrapolate  extrapsmooth and fromreg keywords      uses   extrapsmooth  extrapolate  fromreg and fromirr      restrictions       perform only horizontal interpolations on scalar fields     all masked and missing values are filled before interpolation       output data are not masked and have values everywhere      attributes  like valid_min  are not updated     see restrictions of fromreg and fromirr     output mask is not used but  if the input file contains the mask     in a variable  defined by inmaskname  this variable will contain     the output mask in the ouput file      examples     IDL  file_interp  filein  fileout  gridout  inxaxisname    lo  inyaxisname    la  keep    lo   la   cond_sed      IDL  file_interp  in  out  gdout  inuseasmask    sst  inmissing_value    1 00000e 30  missing_value    1000 00      history    September 2007: Sebastien Masson  smasson locean ipsl upmc fr       version    Id: file_interp pro 362 2008 07 29 09:00:03Z smasson       PRO file_interp  filein  fileout  gridout  GRIDIN gridin  MASKIN maskin  MASKOUT maskout                    KEEP keep  REMOVE remove  METHOD method  SMOOTH smooth                    SET_XDIMNAME set_xdimname  SET_YDIMNAME set_ydimname                    SET_XAXISNAME set_xaxisname  SET_YAXISNAME set_yaxisname                    INMASKNAME inmaskname  ININVMASK ininvmask                    INUSEASMASK inuseasmask  INMISSING_VALUE inmissing_value                    INADDSCL_BEFORE inaddscl_before  INTESTOP   intestop                    OUTMASKNAME outmaskname  OUTINVMASK outinvmask                    OUTUSEASMASK outuseasmask  OUTMISSING_VALUE outmissing_value                    OUTADDSCL_BEFORE outaddscl_before  OUTTESTOP   outtestop                    MISSING_VALUE MISSING_VALUE  WEIG weig  ADDR addr                    INXAXISNAME inxaxisname  INYAXISNAME inyaxisname                    OUTXAXISNAME outxaxisname  OUTYAXISNAME outyaxisname                    _EXTRA ex     compile_opt idl2  strictarrsubs   revision    Id: file_interp pro 362 2008 07 29 09:00:03Z smasson       IF NOT keyword_set method  THEN method    bilinear      input filenames checks      inid   ncdf_open filein    ininq   ncdf_inquire inid     outid   ncdf_create fileout   clobber    ncdf_control  outid   nofill    IF NOT keyword_set gridin  THEN gridin   filein    IF NOT keyword_set maskin  THEN maskin   gridin   IF NOT keyword_set maskout  THEN maskout   gridout     Copy global attributes     FOR i   0  ininq ngatts 1 DO BEGIN     name   ncdf_attname inid  i   global      dummy   ncdf_attcopy inid  name  outid   in_global   out_global    ENDFOR   ncdf_attput  outid   Created_by  revision   GLOBAL     x y dim and x yaxis informations     ncdf_getaxis  gridin  indimidx  indimidy  inlon  inlat  xdimname   inxdimname  ydimname   inydimname                     xaxisname   inxaxisname  yaxisname   inyaxisname   get_gridparams  inlon  inlat  jpiin  jpjin  2   IF keyword_set set_xdimname  THEN inxdimname   set_xdimname   IF keyword_set set_ydimname  THEN inydimname   set_ydimname   IF keyword_set set_xaxisname  THEN inxaxisname   set_xaxisname   IF keyword_set set_yaxisname  THEN inyaxisname   set_yaxisname     ncdf_getaxis  gridout  outdimidx  outdimidy  outlon  outlat  xaxisname   outxaxisname  yaxisname   outyaxisname   get_gridparams  outlon  outlat  jpiout  jpjout  2     masks     inmask   ncdf_getmask maskin  MASKNAME   inmaskname  INVMASK   ininvmask  USEASMASK   inuseasmask                            MISSING_VALUE   inmissing_value  ADDSCL_BEFORE   inaddscl_before  TESTOP   intestop    inmasksz   size inmask   dimensions    IF size inmask   n_dimensions  EQ 2 THEN inmasksz    inmasksz  0    IF n_elements inmaskname  EQ 0 THEN inmaskname    not defined    default definition   outmask   ncdf_getmask maskout  MASKNAME   outmaskname  INVMASK   outinvmask  USEASMASK   outuseasmask                             MISSING_VALUE   outmissing_value  ADDSCL_BEFORE   outaddscl_before  TESTOP   outtestop      irregular grids      CASE 0 OF     array_equal inlon  0  inlon  jpjin 1 :inirr   1b     array_equal inlat 0    inlat jpiin 1   :inirr   1b     array_equal inlon  inlon  0 replicate 1  jpjin :inirr   1b     array_equal inlat  replicate 1  jpiin inlat 0   :inirr   1b     ELSE:inirr   0b   ENDCASE   CASE 0 OF     array_equal outlon  0  outlon  jpjout 1 :outirr   1b     array_equal outlat 0    outlat jpiout 1   :outirr   1b     array_equal outlon  outlon  0 replicate 1  jpjout :outirr   1b     array_equal outlat  replicate 1  jpiout outlat 0   :outirr   1b     ELSE:outirr   0b   ENDCASE    IF inirr AND method NE  bilinear  THEN stop     Dimensions     indimsz   lonarr ininq ndims    outdimsz   lonarr ininq ndims    outdimid   lonarr ininq ndims    FOR i   0  ininq ndims 1 DO BEGIN     ncdf_diminq  inid  i  name  size     indimsz i    size     outdimsz i    size     CASE 1 OF       strlowcase name  EQ strlowcase inxdimname : BEGIN         outdimid i    ncdf_dimdef outid  name  jpiout          outdimsz i    jpiout         indimx   i         outdimx   outdimid i        END       strlowcase name  EQ strlowcase inydimname : BEGIN         outdimid i    ncdf_dimdef outid  name  jpjout          outdimsz i    jpjout         indimy   i         outdimy   outdimid i        END       i EQ ininq recdim: outdimid i    ncdf_dimdef outid  name   UNLIMITED        ELSE: outdimid i    ncdf_dimdef outid  name  size      ENDCASE   ENDFOR     Variables     outvarid   lonarr ininq nvars    FOR i   0  ininq nvars 1 DO BEGIN     varinq   ncdf_varinq inid  i      okvar   1     IF keyword_set keep  THEN okvar   total strlowcase keep  EQ strlowcase varinq name  EQ 1     IF keyword_set remove  THEN okvar   total strlowcase remove  EQ strlowcase varinq name  EQ 0     IF okvar THEN BEGIN       IF varinq ndims EQ 0 THEN BEGIN   scalar variable         outvarid i    ncdf_vardef outid  varinq name                                       BYTE   varinq datatype EQ  BYTE  CHAR   varinq datatype EQ  CHAR                                        SHORT   varinq datatype EQ  INT  OR varinq datatype EQ  SHORT                                        LONG   varinq datatype EQ  LONG                                        FLOAT   varinq datatype EQ  FLOAT  DOUBLE   varinq datatype EQ  DOUBLE        ENDIF ELSE BEGIN            array         CASE 1 OF           strlowcase varinq name  EQ strlowcase inxaxisname :BEGIN   xaxis             IF outirr THEN dimvar    outdimx  outdimy  ELSE dimvar    outdimx            END           strlowcase varinq name  EQ strlowcase inyaxisname :BEGIN   yaxis             IF outirr THEN dimvar    outdimx  outdimy  ELSE dimvar    outdimy            END           strlowcase varinq name  EQ strlowcase inmaskname :BEGIN   mask             IF outmask 0  NE  1 THEN dimvar   outdimid varinq dim  ELSE dimvar    1           END            total varinq dim EQ indimx    total varinq dim EQ indimx  EQ 1: dimvar    1   strange variable            ELSE: dimvar   outdimid varinq dim          ENDCASE         IF dimvar 0  NE  1 THEN BEGIN           outvarid i    ncdf_vardef outid  varinq name  dimvar                                         BYTE   varinq datatype EQ  BYTE  CHAR   varinq datatype EQ  CHAR                                          SHORT   varinq datatype EQ  INT  OR varinq datatype EQ  SHORT                                          LONG   varinq datatype EQ  LONG                                          FLOAT   varinq datatype EQ  FLOAT  DOUBLE   varinq datatype EQ  DOUBLE          ENDIF ELSE outvarid i      1       ENDELSE   Variables attributes       IF outvarid i  NE   1 THEN BEGIN         FOR j   0  varinq natts 1 DO BEGIN           name   ncdf_attname inid  i  j            dummy   ncdf_attcopy inid  i  name  outid  outvarid i          ENDFOR       ENDIF     ENDIF ELSE outvarid i     1   ENDFOR     ncdf_control  outid   endef     FOR i   0  ininq nvars 1 DO BEGIN     IF outvarid i  NE  1 THEN BEGIN       varinq   ncdf_varinq inid  i        IF varinq ndims GE 2 THEN BEGIN         interp   varinq dim 0  EQ indimx AND varinq dim 1  EQ indimy       ENDIF ELSE interp   0b       CASE 1 OF         strlowcase varinq name  EQ strlowcase inxaxisname :BEGIN   x axis           IF outirr THEN ncdf_varput  outid  outvarid i  outlon             ELSE ncdf_varput  outid  outvarid i  outlon  0          END         strlowcase varinq name  EQ strlowcase inyaxisname :BEGIN   y axis           IF outirr THEN ncdf_varput  outid  outvarid i  outlat             ELSE ncdf_varput  outid  outvarid i  reform outlat 0            END         strlowcase varinq name  EQ strlowcase inmaskname :BEGIN   mask           ncdf_varput  outid  outvarid i  outmask         END         ELSE:BEGIN           IF n_elements missing_value  NE 0 THEN var_missing_value   MISSING_VALUE             ELSE ncdf_getatt  inid  i  MISSING_VALUE   var_missing_value           CASE varinq ndims OF             0:BEGIN               salar               ncdf_varget  inid  i  data               ncdf_varput  outid  outvarid i  temporary data              END             1:BEGIN               1D               ncdf_varget  inid  i  data               ncdf_varput  outid  outvarid i  temporary data              END             2:BEGIN               2D               ncdf_varget  inid  i  data               IF interp THEN data   call_interp2d temporary data  inlon  inlat  inmask    0  outlon  outlat                                                       INIRR   inirr  METHOD   method  SMOOTH   smooth                                                       WEIG   weig  ADDR   addr  MISSING_VALUE   var_missing_value  _extra   ex                ncdf_varput  outid  outvarid i  temporary data              END             3:BEGIN               3D               FOR k   0  indimsz varinq dim 2 1 DO BEGIN                 incnt    indimsz varinq dim 0: 1  1                  outcnt    outdimsz varinq dim 0: 1  1                  off    0  0  k                  ncdf_varget  inid  i  data  offset   off  count   incnt                 IF n_elements inmasksz  GE 3 THEN BEGIN                   IF inmasksz 2  EQ indimsz varinq dim 2  AND varinq dim 2  NE ininq recdim THEN tmpmsk   inmask    k                      ELSE tmpmsk   inmask    0                  ENDIF ELSE tmpmsk   inmask    0                  IF interp THEN data   call_interp2d temporary data  inlon  inlat  temporary tmpmsk  outlon  outlat                                                         INIRR   inirr  METHOD   method  SMOOTH   smooth                                                         WEIG   weig  ADDR   addr  MISSING_VALUE   var_missing_value  _extra   ex                  ncdf_varput  outid  outvarid i  temporary data  offset   off  count   outcnt               ENDFOR             END             4:BEGIN               4D               FOR t   0  indimsz varinq dim 3 1 DO BEGIN                 FOR k   0  indimsz varinq dim 2 1 DO BEGIN                   incnt    indimsz varinq dim 0: 1  1  1                    outcnt    outdimsz varinq dim 0: 1  1  1                    off    0  0  k  t                    ncdf_varget  inid  i  data  offset   off  count   incnt                   IF n_elements inmasksz  GE 3 THEN BEGIN                     IF inmasksz 2  EQ indimsz varinq dim 2  THEN tmpmsk   inmask    k  ELSE tmpmsk   inmask                   ENDIF ELSE tmpmsk   inmask    0                    IF interp THEN data   call_interp2d temporary data  inlon  inlat  temporary tmpmsk  outlon  outlat                                                           INIRR   inirr  METHOD   method  SMOOTH   smooth                                                           WEIG   weig  ADDR   addr  MISSING_VALUE   var_missing_value  _extra   ex                    ncdf_varput  outid  outvarid i  temporary data  offset   off  count   outcnt                 ENDFOR               ENDFOR             END           ENDCASE         END       ENDCASE     ENDIF   ENDFOR    ncdf_close  inid   ncdf_close  outid    return END");
 a[59] = new Array("./Interpolation/fromirr.html", "fromirr.pro", "", "       file_comments   interpolate data from an irregular 2D grid to any 2D grid      Only 1 method available   bilinear      categories   Interpolation      param method  in required type string    the interpolation method  must be  bilinear       param datain  in required type 2d array    the input data to interpolate      param lonin  in required type 2d array    the longitude of the input data      param latin  in required type 2d array    the latitude of the input data       param mskin  in required type 2d array or  1    a 2D array  the land sea mask of the input data  1 on ocean  0 on land    put  1 if input data are not masked      param lonout  in required type 1d or 2d array    the longitude of the output data       param latout  in required type 1d or 2d array    the latitude of the output data       param mskout  in required type 2d array or  1    a 2D array  the land sea mask of the output data  1 on ocean  0 on land    put  1 if output data are not masked      keyword WEIG  type 2d array     see ADDR       keyword ADDR  type 2d array    1  at the first call of fromirr:   This keyword can be set to a named variable  undefined or equal to 0  into which the   addresses used to perform the interpolation will be copied when the current routine exits    2  Next  once this keyword is set to a defined 2d array  it is used to bypass the computation   of the weights and addresses used to perform the interpolation  In this case  fromirr simply   compute the interpolated field as:            dataout   total weig datain addr  1             dataout   reform dataout  jpio  jpjo   over    In that case  method  lonin  latin  are not used  but are necessary    lonout  latout are used only to know the output domain size      keyword    _EXTRA to be able to call fromirr with _extra keyword      returns   2D array the interpolated data      restrictions   We supposed the data are located on a sphere  with a periodicity along   the longitude    Note that the input data can contain the same cells several times    like ORCA grid near the north pole boundary       examples      To interpolate 1 field:     IDL  tncep   fromirr bilinear  topa  glamt  gphit  tmask 0  lonout  latout  mskout       or if you have several fields to interpolate from the same source and target grids     1  get back the weights and addresses in variables a and b      that must be undefined or equal to 0 before calling fromirr      IDL  t1ncep   fromirr bilinear  topa  glamt  gphit  tmask 0  lonout  latout  mskout                                  WEIG   a  ADDR   b    IDL  help  a  b     2  use a and b that are now defined to bypass the computation of the weights    and addresses and speed up the computation      IDL  t2ncep   fromirr bilinear  topa  WEIG   a  ADDR   b       history    June 2006: Sebastien Masson  smasson lodyc jussieu fr       version    Id: fromirr pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION fromirr  method  datain  lonin  latin  mskin  lonout  latout                     mskout                     WEIG weig  ADDR addr  _EXTRA ex     compile_opt strictarr  strictarrsubs       atmospheric grid parameters       alon   lonin     alat   latin     get_gridparams  alon  alat  jpia  jpja  2   double     Oceanic grid parameters       olon   lonout     olat   latout     get_gridparams  olon  olat  jpio  jpjo  2   double     Compute weight and address     IF NOT  keyword_set weig  AND keyword_set addr  THEN BEGIN     CASE method OF        bilinear :compute_fromirr_bilinear_weigaddr  alon  alat  mskin  olon  olat  mskout  weig  addr       ELSE:BEGIN         ras   report  unknown interpolation method  we stop          stop       ENDELSE     ENDCASE   ENDIF     to the interpolation     dataout   total weig datain addr  1    dataout   reform dataout  jpio  jpjo   over      RETURN  dataout END");
 a[60] = new Array("./Interpolation/fromreg.html", "fromreg.pro", "", "       file_comments   interpolate data from a  regular rectangular grid  to any grid      2 methods available: bilinear and imoms3     A  regular rectangular grid  is defined as a grid for which    each longitude lines have the same latitude and each latitude columns    have the same longitude       categories    Interpolation      param method  in required type string    the interpolation method    must be  bilinear  or  imoms3       param datain  in required type 2d array    the input data to interpolate      param lonin  in required type 1d or 2d array    the longitude of the input data      param latin  in required type 1d or 2d array    the latitude of the input data      param lonout  in required type 1d or 2d array    the longitude of the output data      param latout  in required type 1d or 2d array    the latitude of the output data      keyword WEIG  type 2d array or variable name     see ADDR       keyword ADDR  type 2d array or variable name    1  at the first call of fromreg:    This keyword can be set to a named variable  undefined or equal to 0  into which the   addresses used to perform the interpolation will be copied when the current routine exits    2  Next  once this keyword is set to a defined 2d array  it is used to bypass the computation   of the weights and addresses used to perform the interpolation  In this case  fromreg simply   compute the interpolated field as:            dataout   total weig datain addr  1             dataout   reform dataout  jpio  jpjo   over    In that case  method  lonin  latin  are not used  but are necessary    lonout  latout are used only to know the output domain size      keyword NONORTHERNLINE   activate if you don t want to take into account the northern line   of the input data when performing the interpolation       keyword NOSOUTHERNLINE   activate if you don t want to take into account the southern line   of the input data when performing the interpolation       keyword    _EXTRA to be able to call fromreg with _extra keyword      returns   2D array the interpolated data      restrictions   We supposed the data are located on a sphere  with a periodicity along the   longitude       examples      To interpolate 1 field:     IDL  topa   fromreg bilinear  tncep  xncep  yncep  glamt  gphit       or if you have several fields to interpolate from the same source and target grids      1  get back the weights and addresses in variables a and b      that must be undefined or equal to 0 before calling fromreg     IDL  t1opa   fromreg bilinear  t1ncep  xncep  yncep  glamt  gphit  WEIG   a  ADDR   b    IDL  help  a  b     2  use a and b that are now defined to bypass the computation of the weights and addresses    and speed up the computation      IDL  t2opa   fromreg bilinear  t2ncep  xncep  yncep  glamt  gphit  WEIG   a  ADDR   b       history    November 2005: Sebastien Masson  smasson lodyc jussieu fr       version    Id: fromreg pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION fromreg  method  datain  lonin  latin  lonout  latout                       WEIG weig  ADDR addr                       NONORTHERNLINE nonorthernline                       NOSOUTHERNLINE nosouthernline  _EXTRA ex     compile_opt idl2  strictarrsubs       atmospheric grid parameters       alon   lonin     alat   latin     get_gridparams  alon  alat  jpia  jpja  1   double     Oceanic grid parameters       olon   lonout     olat   latout     get_gridparams  olon  olat  jpio  jpjo  2   double     Compute weight and address     IF NOT  keyword_set weig  AND keyword_set addr  THEN BEGIN     CASE method OF        bilinear :compute_fromreg_bilinear_weigaddr  alon  alat  olon  olat  weig  addr  NONORTHERNLINE   nonorthernline  NOSOUTHERNLINE   nosouthernline        imoms3 :  compute_fromreg_imoms3_weigaddr    alon  alat  olon  olat  weig  addr  NONORTHERNLINE   nonorthernline  NOSOUTHERNLINE   nosouthernline       ELSE:BEGIN         ras   report  unknown interpolation method  we stop          stop       ENDELSE     ENDCASE   ENDIF     dataout   total weig datain addr  1    dataout   reform dataout  jpio  jpjo   over      RETURN  dataout END");
@@ -69,9 +69,9 @@
 a[67] = new Array("./Interpolation/map_npoints.html", "map_npoints.pro", "", "       file_comments   Return the distance in meter between all np0 points P0 and all   np1 points P1 on a sphere  If keyword  TWO_BY_TWO is given then   returns the distances between number n of P0 points and number   n of P1 points  in that case  np0 and np1 must be equal    Same as MAP_2POINTS with the meter parameter but for n   points without do loop       categories   Maps      param Lon0  in required     param Lat0  in required    np0 elements vector  longitudes and latitudes of np0 points P0      param Lon1  in required     param Lat1  in required    np1 elements vector  longitude and latitude of np1 points P1      keyword AZIMUTH   A named variable that will receive the azimuth of the great   circle connecting the two points  P0 to P1      keyword MIDDLE   to get the longitude latitude of the middle point between P0 and P1       keyword RADIANS   if set  inputs and angular outputs are in radians  otherwise degrees       keyword RADIUS  default 6378206 4d0    If given  return the distance between the two points calculated using the   given radius    Default value is the Earth radius       keyword TWO_BY_TWO   If given  then map_npoints returns the distances between    number n of P0 points and number n of P1 pointsi    In that case  np0 and np1 must be equal       returns   An  np0 np1  array giving the distance in meter between np0   points P0 and np1 points P1  Element  i j  of the output is the   distance between element P0 i  and P1 j    If keyword  TWO_BY_TWO is given then map_npoints returns   an np elements vector giving the distance in meter between P0 i    and P1 i   in that case  we have np0   np1   np    if  MIDDLE see this keyword     examples   IDL  print      IDL  map_npoints 105 15 1 40 02 1 0 07 100 50 51 30 20 0    7551369 3 5600334 8   12864354  10921254    14919237  5455558 8     IDL  lon0    10  20  100    IDL  lat0    0   10  45    IDL  lon1    10  60  280    IDL  lat1    0  10  45    IDL  dist   map_npoints lon0  lat0  lon1  lat1  AZIMUTH   azi    IDL  help  dist  azi   DIST DOUBLE   Array 3  3    AZI DOUBLE   Array 3  3    IDL  print  dist 4 lindgen 3  azi 4 lindgen 3    2226414 0 4957944 5 10018863    90 000000 64 494450 4 9615627e 15   IDL  dist   map_npoints lon0  lat0  lon1  lat1  AZIMUTH   azi   TWO_BY_TWO    IDL  help  dist  azi   DIST DOUBLE   Array 3    AZI DOUBLE   Array 3    IDL  print  dist  azi   2226414 0 4957944 5 10018863    90 000000 64 494450 4 9615627e 15   IDL  print  map_2points lon0 0  lat0 0  lon1 0  lat1 0    20 000000 90 000000   IDL  print  map_npoints lon0 0  lat0 0  lon1 0  lat1 0  AZIMUTH azi 6378206 4d0    dtor  azi   20 000000   90 000000     IDL  lon0    10  20  100    IDL  lat0    0   10  45    IDL  lon1    10  60  280    IDL  lat1    0  10  45    IDL  mid   map_npoints lon0  lat0  lon1  lat1   MIDDLE   TWO_BY_TWO    IDL  print  reform mid 0  reform mid 1    0 0000000 40 000000 190 00000   0 0000000  1 5902773e 15 90 000000   IDL  print   map_2points lon0 0  lat0 0  lon1 0  lat1 0  npath   3  1    0 0000000 0 0000000   IDL  print   map_2points lon0 1  lat0 1  lon1 1  lat1 1  npath   3  1    40 000000  1 5902773e 15   IDL  print   map_2points lon0 2  lat0 2  lon1 2  lat1 2  npath   3  1    190 00000 90 000000      history   Based on the IDL function map_2points pro v 1 6 2001 01 15   Sebastien Masson  smasson lodyc jussieu fr    October 2003      version    Id: map_npoints pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION map_npoints  lon0  lat0  lon1  lat1  AZIMUTH azimuth                         RADIANS radians  RADIUS radius  MIDDLE middle                         TWO_BY_TWO two_by_two    compile_opt idl2  strictarrsubs    IF  N_PARAMS  LT 4  THEN    ras   report Incorrect number of arguments    np0   n_elements lon0   IF n_elements lat0  NE np0 THEN    ras   report lon0 and lat0 must have the same number of elements   np1   n_elements lon1   IF n_elements lat1  NE np1 THEN    ras   report lon1 and lat1 must have the same number of elements   if keyword_set two_by_two  AND np0 NE np1 then    ras   report When using two_by_two keyword  P0 and P1 must have the same number of elements    mx   MAX ABS lat0  lat1   pi2    dpi 2  IF  mx GT  KEYWORD_SET radians    pi2 : 90  THEN    ras   report Value of Latitude is out of allowed range    k   KEYWORD_SET radians    1 0d0 :  dpi 180 0  Earth equatorial radius  meters  Clarke 1866 ellipsoid  r_sphere   n_elements RADIUS  NE 0   RADIUS : 6378206 4d0    coslt1   cos k lat1   sinlt1   sin k lat1   coslt0   cos k lat0   sinlt0   sin k lat0     IF np0 EQ np1 AND np1 EQ 1 THEN two_by_two   1    if NOT keyword_set two_by_two  THEN BEGIN  coslt1   replicate 1 0d0  np0 temporary coslt1   sinlt1   replicate 1 0d0  np0 temporary sinlt1   coslt0   temporary coslt0 replicate 1 0d0  np1   sinlt0   temporary sinlt0 replicate 1 0d0  np1   ENDIF    if keyword_set two_by_two  THEN BEGIN  cosl0l1   cos k lon1 lon0   sinl0l1   sin k lon1 lon0   ENDIF ELSE BEGIN  cosl0l1   cos k replicate 1 0d0  np0 lon1 lon0 replicate 1 0d0  np1   sinl0l1   sin k replicate 1 0d0  np0 lon1 lon0 replicate 1 0d0  np1   ENDELSE   cosc   sinlt0   sinlt1   coslt0   coslt1   cosl0l1  Cos of angle between pnts   Avoid roundoff problems by clamping cosine range to  1 1   cosc    1 0d0   cosc   1 0d0    if arg_present azimuth  OR keyword_set middle  then begin  sinc   sqrt 1 0d0   cosc cosc   bad   where abs sinc  le 1 0e 7   IF bad 0  NE  1 THEN sinc bad    1  cosaz    coslt0   sinlt1   sinlt0 coslt1 cosl0l1    sinc  sinaz   sinl0l1 coslt1 sinc  IF bad 0  NE  1 THEN BEGIN  sinc bad    0 0d0  sinaz bad    0 0d0  cosaz bad    1 0d0  ENDIF  ENDIF    IF keyword_set middle  then BEGIN   s0   0 5d0   acos cosc      coss   cos s0   sins   sin s0     lats   asin sinlt0   coss   coslt0   sins   cosaz    k  lons   atan sins   sinaz  coslt0   coss   sinlt0   sins   cosaz    k    if keyword_set two_by_two  THEN BEGIN  return  transpose lon0    lons   lats   ENDIF ELSE BEGIN  return     lon0 replicate 1 0d0  np1    lons   lats     ENDELSE    ENDIF    if arg_present azimuth  then begin  azimuth   atan sinaz  cosaz   IF k NE 1 0d0 THEN azimuth   temporary azimuth    k  ENDIF  return  acos cosc    r_sphere   end");
 a[68] = new Array("./Interpolation/neighbor.html", "neighbor.pro", "", "       file_comments   find the closest point of  P0  within a list of np1 points   P1 which can be on a sphere      categories   Maps      param p0lon  in required   type scalar    longitudes of point P0       param p0lat  in required   type scalar    latitudes of point P0       param neighlon  in optional       param neighlat  in optional       keyword RADIANS   if set  inputs and angular outputs are in radians  otherwise degrees       keyword DISTANCE   dis  to get back the distances between P0 and the np1 points P1 in the   variable dis       keyword SPHERE   to activate if points are located on a sphere       returns   index giving the P1 index  point that is the closest point of  P0       examples   IDL  print  neighbor 105 15 40 02 0 07 100 50 51 30 20 0      IDL  distance dis                     0   IDL  print  dis               105 684      206 125      160 228      history   Sebastien Masson  smasson lodyc jussieu fr                     October 2003      version    Id: neighbor pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION neighbor  p0lon  p0lat  neighlon  neighlat                      SPHERE sphere  DISTANCE distance  RADIANS radians     compile_opt idl2  strictarrsubs     some checks   IF  n_elements p0lon  NE 1 THEN ras   report Sorry p0lon must be a scalar    p0lon   p0lon 0    IF  n_elements p0lat  NE 1 THEN ras   report Sorry p0lat must be a scalar    p0lat   p0lat 0    nneig   n_elements neighlon    IF  n_elements neighlat  NE nneig  THEN       ras   report neighlon and neighlat must have the same number of elements    distance between P0 and the others points   IF keyword_set sphere  THEN BEGIN     IF sphere NE 1 THEN radius   sphere     distance   Map_nPoints p0lon  p0lat  neighlon  neighlat                            radius   radius  radians   radians    ENDIF ELSE BEGIN     distance    neighlon p0lon 2 neighlat p0lat 2     IF arg_present distance  THEN distance   sqrt distance    ENDELSE   RETURN  where distance EQ min distance  END");
-a[69] = new Array("./Interpolation/quadrilateral2square.html", "quadrilateral2square.pro", "", "       file_comments   warm  or map  an arbitrary quadrilateral onto a unit square   according to the 4 point correspondences:          x0 y0     0 0           x1 y1     1 0           x2 y2     1 1           x3 y3     0 1    This is the inverse function of square2quadrilateral      The mapping is done using perspective transformation which preserve   lines in all orientations and permit quadrilateral to quadrilateral   mappings  see ref  bellow       categories   Picture  Grid      param x0in  in required     param y0in  in required     param x1in  in required     param y1in  in required     param x2in  in required     param y2in  in required     param x3in  in required     param y3in   in required    the coordinates of the quadrilateral    see above for correspondence with the unit square  Can be   scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are   given in the anticlockwise order       param xxin  in required    the coordinates of the point s  for which we want to do the mapping    Can be scalar or array       param yyin  in required    the coordinates of the point s  for which we want to do the mapping    Can be scalar or array       keyword PERF  type salar 0 or 1 default 0    activate to print the elapsed time spent within quadrilateral2square      keyword DOUBLE  type salar 0 or 1 default 0    activate to perform double precision computation      returns    2 n  array: the new coordinates  xout yout  of the  xin yin  point s  after   mapping    If xin is a scalar  then n is equal to the number of elements of x0    If xin is an array  then n is equal to the number of elements of xin       restrictions   I think degenerated quadrilateral  e g  flat of twisted  is not work    This has to be tested       examples     IDL  splot 0 5 0 3 nodata xstyle 1 ystyle 1   IDL  tracegrille  findgen 11 1  findgen 11 1 color indgen 12 20   IDL  xin    findgen 11 1 replicate 1  11    IDL  yin   replicate 1  11 findgen 11 1    IDL  out   square2quadrilateral 2 1 3 0 5 1 2 3  xin  yin    IDL  tracegrille  reform out 0 11 11  reform out 1 11 11 color indgen 12 20     IDL  inorg quadrilateral2square 2 1 3 0 5 1 2 3 out 0 out 1    IDL  tracegrille  reform inorg 0 11 11  reform inorg 1 11 11 color indgen 12 20      history        Sebastien Masson  smasson lodyc jussieu fr         August 2003        Based on  Digital Image Warping  by G  Wolberg        IEEE Computer Society Press  Los Alamitos  California        Chapter 3  see p 52 56        version    Id: quadrilateral2square pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION quadrilateral2square  x0in  y0in  x1in  y1in  x2in  y2in                                  x3in  y3in  xxin  yyin                                  PERF perf  DOUBLE double     compile_opt idl2  strictarrsubs   tempsone   systime 1      Warning  wrong definition of  x2 y2  and  x3 y3  at the bottom of   page 54 of Wolberg s book  see figure 3 7 page 56 for the good   definition      IF keyword_set double  THEN BEGIN     x0   double x0in      x1   double x1in      x2   double x2in      x3   double x3in      y0   double y0in      y1   double y1in      y2   double y2in      y3   double y3in      xin   double xxin      yin   double yyin    ENDIF ELSE BEGIN     x0   float x0in      x1   float x1in      x2   float x2in      x3   float x3in      y0   float y0in      y1   float y1in      y2   float y2in      y3   float y3in      xin   float xxin      yin   float yyin    ENDELSE     get the matrix A     a   square2quadrilateral x0in  y0in  x1in  y1in  x2in  y2in  x3in  y3in  DOUBLE   double      compute the adjoint matrix     IF keyword_set double  THEN adj   dblarr 9  n_elements x0      ELSE adj   fltarr 9  n_elements x0      adj 0      a 4            a 7   a 5      adj 1      a 7   a 2   a 1      adj 2      a 1   a 5   a 4   a 2      adj 3      a 6   a 5   a 3      adj 4      a 0            a 6   a 2      adj 5      a 3   a 2   a 0   a 5      adj 6      a 3   a 7   a 6   a 4      adj 7      a 6   a 1   a 0   a 7      adj 8      a 0   a 4   a 3   a 1        IF n_elements xin  EQ 1 THEN BEGIN     xin   replicate xin  n_elements x0      yin   replicate yin  n_elements x0    ENDIF     compute xprime  yprime and wprime     IF n_elements x0  EQ 1 THEN BEGIN     wpr   1 adj 6 xin   adj 7 yin   adj 8    ENDIF ELSE BEGIN     wpr   1 adj 6   xin   adj 7   yin   adj 8      ENDELSE   xpr   xin wpr   ypr   yin wpr     IF keyword_set double  THEN res   dblarr 2  n_elements xin      ELSE res   fltarr 2  n_elements xin      IF n_elements x0  EQ 1 THEN BEGIN     res 0      xpr adj 0    ypr adj 1   wpr adj 2      res 1      xpr adj 3    ypr adj 4   wpr adj 5    ENDIF ELSE BEGIN     res 0      xpr adj 0      ypr adj 1     wpr adj 2        res 1      xpr adj 3      ypr adj 4     wpr adj 5      ENDELSE     IF keyword_set perf  THEN print   time quadrilateral2square  systime 1 tempsone    RETURN  res END");
+a[69] = new Array("./Interpolation/quadrilateral2square.html", "quadrilateral2square.pro", "", "       file_comments   warm  or map  an arbitrary quadrilateral onto a unit square   according to the 4 point correspondences:          x0 y0     0 0           x1 y1     1 0           x2 y2     1 1           x3 y3     0 1    This is the inverse function of square2quadrilateral      The mapping is done using perspective transformation which preserve   lines in all orientations and permit quadrilateral to quadrilateral   mappings  see ref  below       categories   Picture  Grid      param x0in  in required     param y0in  in required     param x1in  in required     param y1in  in required     param x2in  in required     param y2in  in required     param x3in  in required     param y3in   in required    the coordinates of the quadrilateral    see above for correspondence with the unit square  Can be   scalar or array   x0 y0   x1 y1   x2 y2  and  x3 y3  are   given in the anticlockwise order       param xxin  in required    the coordinates of the point s  for which we want to do the mapping    Can be scalar or array       param yyin  in required    the coordinates of the point s  for which we want to do the mapping    Can be scalar or array       keyword PERF  type salar 0 or 1 default 0    activate to print the elapsed time spent within quadrilateral2square      keyword DOUBLE  type salar 0 or 1 default 0    activate to perform double precision computation      returns    2 n  array: the new coordinates  xout yout  of the  xin yin  point s  after   mapping    If xin is a scalar  then n is equal to the number of elements of x0    If xin is an array  then n is equal to the number of elements of xin       restrictions   I think degenerated quadrilateral  e g  flat of twisted  is not work    This has to be tested       examples     IDL  splot 0 5 0 3 nodata xstyle 1 ystyle 1   IDL  tracegrille  findgen 11 1  findgen 11 1 color indgen 12 20   IDL  xin    findgen 11 1 replicate 1  11    IDL  yin   replicate 1  11 findgen 11 1    IDL  out   square2quadrilateral 2 1 3 0 5 1 2 3  xin  yin    IDL  tracegrille  reform out 0 11 11  reform out 1 11 11 color indgen 12 20     IDL  inorg quadrilateral2square 2 1 3 0 5 1 2 3 out 0 out 1    IDL  tracegrille  reform inorg 0 11 11  reform inorg 1 11 11 color indgen 12 20      history        Sebastien Masson  smasson lodyc jussieu fr         August 2003        Based on  Digital Image Warping  by G  Wolberg        IEEE Computer Society Press  Los Alamitos  California        Chapter 3  see p 52 56        version    Id: quadrilateral2square pro 358 2008 04 28 09:41:14Z pinsard       FUNCTION quadrilateral2square  x0in  y0in  x1in  y1in  x2in  y2in                                  x3in  y3in  xxin  yyin                                  PERF perf  DOUBLE double     compile_opt idl2  strictarrsubs   tempsone   systime 1      Warning  wrong definition of  x2 y2  and  x3 y3  at the bottom of   page 54 of Wolberg s book  see figure 3 7 page 56 for the good   definition      IF keyword_set double  THEN BEGIN     x0   double x0in      x1   double x1in      x2   double x2in      x3   double x3in      y0   double y0in      y1   double y1in      y2   double y2in      y3   double y3in      xin   double xxin      yin   double yyin    ENDIF ELSE BEGIN     x0   float x0in      x1   float x1in      x2   float x2in      x3   float x3in      y0   float y0in      y1   float y1in      y2   float y2in      y3   float y3in      xin   float xxin      yin   float yyin    ENDELSE     get the matrix A     a   square2quadrilateral x0in  y0in  x1in  y1in  x2in  y2in  x3in  y3in  DOUBLE   double      compute the adjoint matrix     IF keyword_set double  THEN adj   dblarr 9  n_elements x0      ELSE adj   fltarr 9  n_elements x0      adj 0      a 4            a 7   a 5      adj 1      a 7   a 2   a 1      adj 2      a 1   a 5   a 4   a 2      adj 3      a 6   a 5   a 3      adj 4      a 0            a 6   a 2      adj 5      a 3   a 2   a 0   a 5      adj 6      a 3   a 7   a 6   a 4      adj 7      a 6   a 1   a 0   a 7      adj 8      a 0   a 4   a 3   a 1        IF n_elements xin  EQ 1 THEN BEGIN     xin   replicate xin  n_elements x0      yin   replicate yin  n_elements x0    ENDIF     compute xprime  yprime and wprime     IF n_elements x0  EQ 1 THEN BEGIN     wpr   1 adj 6 xin   adj 7 yin   adj 8    ENDIF ELSE BEGIN     wpr   1 adj 6   xin   adj 7   yin   adj 8      ENDELSE   xpr   xin wpr   ypr   yin wpr     IF keyword_set double  THEN res   dblarr 2  n_elements xin      ELSE res   fltarr 2  n_elements xin      IF n_elements x0  EQ 1 THEN BEGIN     res 0      xpr adj 0    ypr adj 1   wpr adj 2      res 1      xpr adj 3    ypr adj 4   wpr adj 5    ENDIF ELSE BEGIN     res 0      xpr adj 0      ypr adj 1     wpr adj 2        res 1      xpr adj 3      ypr adj 4     wpr adj 5      ENDELSE     IF keyword_set perf  THEN print   time quadrilateral2square  systime 1 tempsone    RETURN  res END");
 a[70] = new Array("./Interpolation/spl_fstdrv.html", "spl_fstdrv.pro", "", "       file_comments   returns the values of the first derivative of   the interpolating function at the points X2i  It is a double   precision array      Given the arrays X and Y  which tabulate a function  with the X i    and Y i  in ascending order  and given an input value X2  the   spl_incr function returns an interpolated value for the given   values of X2  The interpolation method is based on cubic spline  corrected   in a way that interpolated value are also in ascending order       examples   IDL  y2    spl_fstdrv x  y  yscd  x2       param x  in required    An n elements  at least 2  input vector that specifies the   tabulate points in ascending order       param y  in required    f x    y  An n elements input vector that specifies the values   of the tabulated function F Xi  corresponding to Xi       param yscd  in required    The output from SPL_INIT for the specified X and Y       param x2  in required   type  scalar or array    The input values for which the first derivative values are desired       returns      y2: f x2    y2       history    Sebastien Masson  smasson lodyc jussieu fr : May 2005      version    Id: spl_fstdrv pro 325 2007 12 06 10:04:53Z pinsard       FUNCTION spl_fstdrv  x  y  yscd  x2     compile_opt idl2  strictarrsubs     compute the first derivative of the spline function     nx   n_elements x    ny   n_elements y    x must have at least 2 elements   IF nx LT 2 THEN stop   y must have the same number of elements than x   IF nx NE ny THEN stop   define loc in a way that    if loc i  eq  1   :                 x2 i    x nx 1     else              :    x loc i   extrapolation   use x nx 2  and x nx 1  even if x2 i    x nx 1    extrapolation   loc   0   temporary loc     nx 2    distance between to consecutive x   deltax   x loc 1 x loc    distance between to consecutive y   deltay   y loc 1 y loc    relative distance between x2 i  and x loc i 1    a    x loc 1 x2 deltax   relative distance between x2 i  and x loc i    b   1 0d   a   compute the first derivative on x  see numerical recipes Chap 3 3    yfrst   temporary deltay deltax         1 0d 6 0d    3 0d a a   1 0d    deltax   yscd loc          1 0d 6 0d    3 0d b b   1 0d    deltax   yscd loc 1    beware of the computation precision    force near zero values to be exactly 0 0   zero   where abs yfrst  LT 1 e 10    IF zero 0  NE  1 THEN yfrst zero    0 0d    RETURN  yfrst END");
 a[71] = new Array("./Interpolation/spl_incr.html", "spl_incr.pro", "", "       file_comments   Given the arrays X and Y  which tabulate a function  with the X i    AND Y i  in ascending order  and given an input value X2  the   spl_incr function returns an interpolated value for the given values   of X2  The interpolation method is based on cubic spline  corrected   in a way that interpolated values are also monotonically increasing       param x1  in required    An n elements  at least 2  input vector that specifies the tabulate points in   a strict ascending order       param y1  in required    f x    y  An n elements input vector that specifies the values   of the tabulated function F Xi  corresponding to Xi  As f is   supposed to be monotonically increasing  y values must be   monotonically increasing  y can have equal consecutive values       param x2  in required    The input values for which the interpolated values are   desired  Its values must be strictly monotonically increasing       param der2      param x      returns   y2: f x2    y2  Double precision array      restrictions   It might be possible that y2 i 1 y2 i  has very small negative   values  amplitude smaller than 1 e 6       examples   IDL  n   100L   IDL  x    dindgen n 2   IDL  y   abs randomn 0  n    IDL  y n 2:n 2 1    0    IDL  y n n 3    0    IDL  y n n 6:n n 6 5    0    IDL  y   total y   cumulative   double    IDL  x2   dindgen n 1 2    IDL  n2   n_elements x2    IDL  print  min y 1:n 1 y 0:n 2  LT 0   IDL  y2   spl_incr  x  y  x2    IDL  splot  x  y  xstyle   1  ystyle   1  ysurx 25  petit    1  2  1   land   IDL  oplot  x2  y2  color   100   IDL  c   y2 1:n2 1    y2 0:n2 2    IDL  print  min c  LT 0   IDL  print  min c  max   ma  ma   IDL  splot c xstyle 1 ystyle 1  yrange 01 05  ysurx 25  petit    1  2  2   noerase   IDL  oplot 0  n_elements c   0  0  linestyle   1      history    Sebastien Masson  smasson lodyc jussieu fr : May Dec 2005      version    Id: spl_incr pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION pure_concave  x1  x2  y1  y2  der2  x     compile_opt idl2  strictarrsubs     X n type     xx    double x double x1 double x2 double x1    f    double x2 double x1 double y2 double y1    n   der2 temporary f    res   xx n      IF check_math  GT 0 THEN BEGIN         zero   where abs res  LT 1 e 10          IF zero 0  NE  1 THEN res zero    0 0d     END   res   temporary res double y2 double y1 y1      IF array_equal sort res  lindgen n_elements res    NE 1 THEN stop   RETURN  res END          param x1  in required    An n elements  at least 2  input vector that specifies the tabulate points in   a strict ascending order       param y1  in required    f x    y  An n elements input vector that specifies the values      of the tabulated function F Xi  corresponding to Xi  As f is      supposed to be monotonically increasing  y values must be      monotonically increasing  y can have equal consecutive values       param x2  in required    The input values for which the interpolated values are   desired  Its values must be strictly monotonically increasing       param der2      param x     FUNCTION pure_convex  x1  x2  y1  y2  der2  x     compile_opt idl2  strictarrsubs     1 1 X n type     xx   1 0d    double x double x1 double x2 double x1    f    double x2 double x1 double y2 double y1    n   der2 temporary f    res   xx n      IF check_math  GT 0 THEN BEGIN         zero   where abs res  LT 1 e 10          IF zero 0  NE  1 THEN res zero    0 0d     END   res   1 0d   temporary res    res   temporary res y2 y1 y1      IF array_equal sort res  lindgen n_elements res    NE 1 THEN stop   RETURN  res END          param x    param y    param x2    keyword YP0   The first derivative of the interpolating function at the      point X0  If YP0 is omitted  the second derivative at the      boundary is set to zero  resulting in a  natural spline       keyword YPN_1   The first derivative of the interpolating function at the      point Xn 1  If YPN_1 is omitted  the second derivative at the      boundary is set to zero  resulting in a  natural spline    FUNCTION spl_incr  x  y  x2  YP0 yp0  YPN_1 ypn_1     compile_opt idl2  strictarrsubs       check and initialization         nx   n_elements x    ny   n_elements y    nx2   n_elements x2    x must have at least 2 elements   IF nx LT 2 THEN stop   y must have the same number of elements than x   IF nx NE ny THEN stop   x be monotonically increasing   IF min x 1:nx 1 x 0:nx 2  LE 0 THEN stop   x2 be monotonically increasing   IF N_ELEMENTS X2  GE 2 THEN     IF min x2 1:nx2 1 x2 0:nx2 2   LE 0 THEN stop   y be monotonically increasing   IF min y 1:ny 1 y 0:ny 2  LT 0 THEN stop     first check: check if two consecutive values are equal     bad   where y 1:ny 1 y 0:ny 2  EQ 0  cntbad    IF cntbad NE 0 THEN BEGIN   define the results: y2       y2   dblarr nx2    define xinx2: see help of value_locate    if xinx2 i  eq  1   :                 x bad i    x2 nx2 1     else                : x2 xinx2 i    x2 nx2 1     else                : x2 xinx2 i   we have middle pieces for which   we force yp0   0 0d and ypn_1   0 0d       IF cntbad GT 1 THEN BEGIN   we take care of the piece located between bad ib 1  and bad ib          FOR ib   1  cntbad 1 DO BEGIN   if there is x2 values smaller that x bad ib  then the x2 values   located between bad ib 1  and bad ib  are  xinx2 ib 1 1:xinx2 ib            IF xinx2 ib  NE  1 THEN begin             y2 xinx2 ib 1 1   0                y i 1    y i      2  y  reach its minimum value between  x i  and x i 1           0  y i 1    0   y i      we do a first selection by looking for those points      loc   lindgen nx 1    maybebad   where yscd loc  LE 0 0d AND yscd loc 1  GE 0 0d  cntbad      IF cntbad NE 0 THEN BEGIN      mbbloc   loc maybebad       aaa    yscd mbbloc 1 yscd mbbloc 6 0d x mbbloc 1 x mbbloc      bbb   0 5d   yscd mbbloc      ccc   yifrst mbbloc      ddd   y mbbloc      definitive selection:   y  can become negative if and only if  2b 2   4 3a c   0   y  can become negative if and only if    b 2     3a c   0       delta   bbb bbb   3 0d aaa ccc       bad   where delta GT 0  cntbad        IF cntbad NE 0 THEN BEGIN       delta   delta bad        aaa   aaa bad        bbb   bbb bad        ccc   ccc bad        ddd   ddd bad        bad   maybebad bad    define xinx2_1: see help of value_locate    if xinx2_1 i  eq  1   :                   x bad i    x2 nx2 1     else                  : x2 xinx2_1 i    x2 nx2 1     else                  : x2 xinx2_2 i   y bad ib 1  then we cannot applay the method we want to   apply   we use then convex concave case by changing by hand the   value of yinfl and xinfl                   IF yzero GT y bad ib 1  THEN BEGIN                     yinfl   0 5d y bad ib 1 y bad ib                      xinfl   0 5d x bad ib 1 x bad ib                      GOTO  convexconcave                   ENDIF   define xinx2_3: see help of value_locate    if xinx2_3 ib  eq  1   :                x bad ib xzero   x2 nx2 1     else                   : x2 xinx2_3   we use then convex concave case by changing by hand the   value of yinfl and xinfl                   IF yzero lt y bad ib  THEN BEGIN                     yinfl   0 5d y bad ib 1 y bad ib                      xinfl   0 5d x bad ib 1 x bad ib                      GOTO  convexconcave                   ENDIF   define xinx2_3: see help of value_locate    if xinx2_3 ib  eq  1   :                x bad ib xzero   x2 nx2 1     else                   : x2 xinx2_3    x2 nx2 1     else                   : x2 xinx2_3    x bad ib xzero    x2 xinx3_2 1                    xinx2_3   value_locate x2  x bad ib xinfl                     IF xinx2_3 ge xinx2_1 ib 1 THEN BEGIN                     y2 xinx2_1 ib 1:xinx2_3                            pure_convex x bad ib  x bad ib xinfl                                          y bad ib  yinfl                                          yifrst bad ib                                          x2 xinx2_1 ib 1:xinx2_3                     ENDIF                   IF xinx2_2 ib  GE xinx2_3 1 THEN BEGIN                     y2 xinx2_3 1:xinx2_2 ib                            pure_concave x bad ib xinfl  x bad ib 1                                           yinfl  y bad ib 1                                           yifrst bad ib 1                                           x2 xinx2_3 1:xinx2_2 ib                    ENDIF                 END               ENDCASE              END           ENDCASE         ENDIF       ENDFOR      ENDIF   ENDIF     RETURN  y2   END");
 a[72] = new Array("./Interpolation/spl_keep_mean.html", "spl_keep_mean.pro", "", "       file_comments   Given the arrays X and Y  which tabulate a function  with the X i    AND Y i  in ascending order  and given an input value X2  the   spl_incr function returns an interpolated value for the given values   of X2  The interpolation method is based on cubic spline  corrected   in a way that integral of the interpolated values is the same as the   integral of the input values    for example to build daily data   from monthly mean and keep the monthly mean of the computed daily   data equal to the original values       param x  in required    An n elements  at least 2  input vector that specifies the tabulate points in   a strict ascending order       param yin  in required type array    an array with one element less than x  y i  represents the   mean value between x i  and x i 1  if  GE0 is activated  y must   have positive values       param x2  in required    The input values for which the interpolated values are desired    Its values must be strictly monotonically increasing       keyword GE0   to force that y2 is always GE than 0  In that case  y must also be GE than 0       keyword YP0   The first derivative of the interpolating function at the   point X0  If YP0 is omitted  the second derivative at the   boundary is set to zero  resulting in a  natural spline       keyword YPN_1   The first derivative of the interpolating function at the   point Xn 1  If YPN_1 is omitted  the second derivative at the   boundary is set to zero  resulting in a  natural spline       returns   y2: the mean value between two consecutive values of x2  This   array has one element less than y2  y2 has double precision       restrictions   It might be possible that y2 has very small negative values    amplitude smaller than 1 e 6       examples        12 monthly values of precipitations into daily values:     IDL  yr1   1990   IDL  yr2   1992   IDL  nyr   yr2 yr1 1   IDL  n1   12 nyr 1   IDL  x   julday 1 findgen n1  replicate 1  n1      IDL           replicate yr1  n1  fltarr n1    IDL  n2   365 nyr   total leapyr yr1 indgen nyr    1   IDL  x2   julday replicate 1  n2  1 findgen n2      IDL               replicate yr1  n2  fltarr n2    IDL  y   abs randomn 0  n1 1    IDL  y2   spl_keep_mean x  y  x2   ge0     IDL  print  min x  max   ma  ma   IDL  print  min x2  max   ma  ma   IDL  print  vairdate min x  max   ma  ma    IDL  print  total y x 1:n1 1 x 0:n1 2    IDL  print  total y2 x2 1:n2 1 x2 0:n2 2       history    Sebastien Masson  smasson lodyc jussieu fr : May 2005      version    Id: spl_keep_mean pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION spl_keep_mean  x  yin  x2  YP0 yp0  YPN_1 ypn_1  GE0 ge0     compile_opt idl2  strictarrsubs       check and initialization         nx   n_elements x    ny   n_elements yin    nx2   n_elements x2    x must have at least 2 elements   IF nx LT 2 THEN stop   x2 must have at least 2 elements   IF nx2 LT 2 THEN stop   x be monotonically increasing   IF min x 1:nx 1 x 0:nx 2  LE 0 THEN stop   x2 be monotonically increasing   IF min x2 1:nx2 1 x2 0:nx2 2   LE 0 THEN stop       compute the integral of y     if spl_keep_mean is called by the user  and not by itself  we must compute   the integral of y  yin must have one element less than x   IF nx NE ny 1 THEN stop   y   double yin double x 1:nx 1 x 0:nx 2    y    0 0d  temporary y    y   total temporary y   cumulative   double        compute the  spline  interpolation       IF keyword_set ge0  THEN BEGIN   if the want that the interpolated values are always   0  we must   have yin   0 0d     IF min yin  LT 0 THEN stop   call spl_incr     y2   spl_incr x  temporary y  x2  yp0   yp0  ypn_1   ypn_1    ENDIF ELSE BEGIN     yscd   spl_init x  y  yp0   yp0  ypn_1   ypn_1   double      y2   spl_interp x  y  temporary yscd  x2   double    ENDELSE                        Compute the derivative of y       yfrst    y2 1:nx2 1 y2 0:nx2 2 x2 1:nx2 1 x2 0:nx2 2    it can happen that we have very small negative values  1 e 6 for ex     yfrst   0 0d   temporary yfrst    RETURN  yfrst    END");
-a[73] = new Array("./Interpolation/square2quadrilateral.html", "square2quadrilateral.pro", "", "       file_comments   warm  or map  a unit square onto an arbitrary quadrilateral   according to the 4 point correspondences:          0 0     x0 y0           1 0     x1 y1           1 1     x2 y2           0 1     x3 y3    The mapping is done using perspective transformation which preserve   lines in all orientations and permit quadrilateral to quadrilateral   mappings  see ref  bellow       categories   Picture  Grid      param x0in  in required     param y0in  in required     param x1in  in required     param y1in  in required     param x2in  in required     param y2in  in required     param x3in  in required     param y3in  in required    the coordinates of the quadrilateral  see above for correspondence with the   unit square    Can be scalar or array     x0 y0   x1 y1   x2 y2  and  x3 y3  are given in the anticlockwise order       param xxin  in optional    first coordinates of the point s  for which we want to do the mapping     param yyin  in optional    second coordinates of the point s  for which we want to do the mapping       keyword DOUBLE  type salar 0 or 1 default 0    activate to perform double precision computation      returns    2 n  array: the new coordinates  xout yout  of the  xin yin    point s  after mapping    If xin is a scalar  then n is equal to the number of elements of   x0  If xin is an array   then n is equal to the number of   elements of xin    If xin and yin are omitted  square2quadrilateral returns the   matrix A which is used for the inverse transformation       restrictions   I think degenerated quadrilateral  e g  flat of twisted  is not work    This has to be tested       examples     IDL  splot 0 5 0 3 nodata xstyle 1 ystyle 1   IDL  tracegrille  findgen 11 1  findgen 11 1 color indgen 12 20   IDL  xin    findgen 11 1 replicate 1  11    IDL  yin   replicate 1  11 findgen 11 1    IDL  out   square2quadrilateral 2 1 3 0 5 1 2 3  xin  yin    IDL  tracegrille  reform out 0 11 11  reform out 1 11 11 color indgen 12 20      history        Sebastien Masson  smasson lodyc jussieu fr         August 2003        Based on  Digital Image Warping  by G  Wolberg        IEEE Computer Society Press  Los Alamitos  California        Chapter 3  see p 52 56        version    Id: square2quadrilateral pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION square2quadrilateral  x0in  y0in  x1in  y1in  x2in  y2in                                  x3in  y3in  xxin  yyin                                   DOUBLE double     Warning  wrong definition of  x2 y2  and  x3 y3  at the bottom of   page 54 of Wolberg s book  see figure 3 7 page 56 for the good   definition      compile_opt idl2  strictarrsubs     IF keyword_set double  THEN BEGIN     x0   double x0in      x1   double x1in      x2   double x2in      x3   double x3in      y0   double y0in      y1   double y1in      y2   double y2in      y3   double y3in      IF arg_present xxin  THEN BEGIN       xin   double xxin        yin   double yyin      ENDIF   ENDIF ELSE BEGIN     x0   float x0in      x1   float x1in      x2   float x2in      x3   float x3in      y0   float y0in      y1   float y1in      y2   float y2in      y3   float y3in      IF arg_present xxin  THEN BEGIN       xin   float xxin        yin   float yyin      ENDIF   ENDELSE     IF keyword_set double  THEN a   dblarr 8  n_elements x0      ELSE a   fltarr 8  n_elements x0      delx3   x0 x1 x2 x3   dely3   y0 y1 y2 y3     affinemap   where delx3 EQ 0 AND dely3 EQ 0    IF affinemap 0  NE  1 THEN BEGIN     xx0   x0 affinemap      xx1   x1 affinemap      xx2   x2 affinemap      yy0   y0 affinemap      yy1   y1 affinemap      yy2   y2 affinemap        a 0  affinemap    xx1 xx0     a 1  affinemap    xx2 xx1     a 2  affinemap    xx0     a 3  affinemap    yy1 yy0     a 4  affinemap    yy2 yy1     a 5  affinemap    yy0     a 6  affinemap    0     a 7  affinemap    0   ENDIF     projectivemap   where delx3 NE 0 OR dely3 NE 0    IF projectivemap 0  NE  1 THEN BEGIN     xx0   x0 projectivemap      xx1   x1 projectivemap      xx2   x2 projectivemap      xx3   x3 projectivemap      yy0   y0 projectivemap      yy1   y1 projectivemap      yy2   y2 projectivemap      yy3   y3 projectivemap        delx1   xx1 xx2     dely1   yy1 yy2     delx2   xx3 xx2     dely2   yy3 yy2     delx3   delx3 projectivemap      dely3   dely3 projectivemap        div   delx1 dely2 dely1 delx2     zero   where div EQ 0      IF zero 0  NE  1 THEN BEGIN       stop     ENDIF     a13    delx3 dely2 dely3 delx2 div     a23    delx1 dely3 dely1 delx3 div       a 0  projectivemap    xx1 xx0 a13 xx1     a 1  projectivemap    xx3 xx0 a23 xx3     a 2  projectivemap    xx0     a 3  projectivemap    yy1 yy0 a13 yy1     a 4  projectivemap    yy3 yy0 a23 yy3     a 5  projectivemap    yy0     a 6  projectivemap    a13     a 7  projectivemap    a23   ENDIF     IF NOT arg_present xxin  THEN return  a     IF n_elements xin  EQ 1 THEN BEGIN     xin   replicate xin  n_elements x0      yin   replicate yin  n_elements x0    ENDIF     IF keyword_set double  THEN res   dblarr 2  n_elements xin      ELSE res   fltarr 2  n_elements xin    IF n_elements x0  EQ 1 THEN BEGIN     div   a 6 xin    a 7 yin    1     zero   where div EQ 0      IF zero 0  NE  1 THEN BEGIN       stop     ENDIF     res 0       a 0 xin    a 1 yin    a 2 div     res 1       a 3 xin    a 4 yin    a 5 div   ENDIF ELSE BEGIN     div   a 6   xin  a 7   yin   1     zero   where div EQ 0      IF zero 0  NE  1 THEN BEGIN       stop     ENDIF     res 0       a 0   xin    a 1   yin    a 2   div     res 1       a 3   xin    a 4   yin    a 5   div   ENDELSE     RETURN  res END");
+a[73] = new Array("./Interpolation/square2quadrilateral.html", "square2quadrilateral.pro", "", "       file_comments   warm  or map  a unit square onto an arbitrary quadrilateral   according to the 4 point correspondences:          0 0     x0 y0           1 0     x1 y1           1 1     x2 y2           0 1     x3 y3    The mapping is done using perspective transformation which preserve   lines in all orientations and permit quadrilateral to quadrilateral   mappings  see ref  below       categories   Picture  Grid      param x0in  in required     param y0in  in required     param x1in  in required     param y1in  in required     param x2in  in required     param y2in  in required     param x3in  in required     param y3in  in required    the coordinates of the quadrilateral  see above for correspondence with the   unit square    Can be scalar or array     x0 y0   x1 y1   x2 y2  and  x3 y3  are given in the anticlockwise order       param xxin  in optional    first coordinates of the point s  for which we want to do the mapping     param yyin  in optional    second coordinates of the point s  for which we want to do the mapping       keyword DOUBLE  type salar 0 or 1 default 0    activate to perform double precision computation      returns    2 n  array: the new coordinates  xout yout  of the  xin yin    point s  after mapping    If xin is a scalar  then n is equal to the number of elements of   x0  If xin is an array   then n is equal to the number of   elements of xin    If xin and yin are omitted  square2quadrilateral returns the   matrix A which is used for the inverse transformation       restrictions   I think degenerated quadrilateral  e g  flat of twisted  is not work    This has to be tested       examples     IDL  splot 0 5 0 3 nodata xstyle 1 ystyle 1   IDL  tracegrille  findgen 11 1  findgen 11 1 color indgen 12 20   IDL  xin    findgen 11 1 replicate 1  11    IDL  yin   replicate 1  11 findgen 11 1    IDL  out   square2quadrilateral 2 1 3 0 5 1 2 3  xin  yin    IDL  tracegrille  reform out 0 11 11  reform out 1 11 11 color indgen 12 20      history        Sebastien Masson  smasson lodyc jussieu fr         August 2003        Based on  Digital Image Warping  by G  Wolberg        IEEE Computer Society Press  Los Alamitos  California        Chapter 3  see p 52 56        version    Id: square2quadrilateral pro 358 2008 04 28 09:41:14Z pinsard       FUNCTION square2quadrilateral  x0in  y0in  x1in  y1in  x2in  y2in                                  x3in  y3in  xxin  yyin                                   DOUBLE double     Warning  wrong definition of  x2 y2  and  x3 y3  at the bottom of   page 54 of Wolberg s book  see figure 3 7 page 56 for the good   definition      compile_opt idl2  strictarrsubs     IF keyword_set double  THEN BEGIN     x0   double x0in      x1   double x1in      x2   double x2in      x3   double x3in      y0   double y0in      y1   double y1in      y2   double y2in      y3   double y3in      IF arg_present xxin  THEN BEGIN       xin   double xxin        yin   double yyin      ENDIF   ENDIF ELSE BEGIN     x0   float x0in      x1   float x1in      x2   float x2in      x3   float x3in      y0   float y0in      y1   float y1in      y2   float y2in      y3   float y3in      IF arg_present xxin  THEN BEGIN       xin   float xxin        yin   float yyin      ENDIF   ENDELSE     IF keyword_set double  THEN a   dblarr 8  n_elements x0      ELSE a   fltarr 8  n_elements x0      delx3   x0 x1 x2 x3   dely3   y0 y1 y2 y3     affinemap   where delx3 EQ 0 AND dely3 EQ 0    IF affinemap 0  NE  1 THEN BEGIN     xx0   x0 affinemap      xx1   x1 affinemap      xx2   x2 affinemap      yy0   y0 affinemap      yy1   y1 affinemap      yy2   y2 affinemap        a 0  affinemap    xx1 xx0     a 1  affinemap    xx2 xx1     a 2  affinemap    xx0     a 3  affinemap    yy1 yy0     a 4  affinemap    yy2 yy1     a 5  affinemap    yy0     a 6  affinemap    0     a 7  affinemap    0   ENDIF     projectivemap   where delx3 NE 0 OR dely3 NE 0    IF projectivemap 0  NE  1 THEN BEGIN     xx0   x0 projectivemap      xx1   x1 projectivemap      xx2   x2 projectivemap      xx3   x3 projectivemap      yy0   y0 projectivemap      yy1   y1 projectivemap      yy2   y2 projectivemap      yy3   y3 projectivemap        delx1   xx1 xx2     dely1   yy1 yy2     delx2   xx3 xx2     dely2   yy3 yy2     delx3   delx3 projectivemap      dely3   dely3 projectivemap        div   delx1 dely2 dely1 delx2     zero   where div EQ 0      IF zero 0  NE  1 THEN BEGIN       stop     ENDIF     a13    delx3 dely2 dely3 delx2 div     a23    delx1 dely3 dely1 delx3 div       a 0  projectivemap    xx1 xx0 a13 xx1     a 1  projectivemap    xx3 xx0 a23 xx3     a 2  projectivemap    xx0     a 3  projectivemap    yy1 yy0 a13 yy1     a 4  projectivemap    yy3 yy0 a23 yy3     a 5  projectivemap    yy0     a 6  projectivemap    a13     a 7  projectivemap    a23   ENDIF     IF NOT arg_present xxin  THEN return  a     IF n_elements xin  EQ 1 THEN BEGIN     xin   replicate xin  n_elements x0      yin   replicate yin  n_elements x0    ENDIF     IF keyword_set double  THEN res   dblarr 2  n_elements xin      ELSE res   fltarr 2  n_elements xin    IF n_elements x0  EQ 1 THEN BEGIN     div   a 6 xin    a 7 yin    1     zero   where div EQ 0      IF zero 0  NE  1 THEN BEGIN       stop     ENDIF     res 0       a 0 xin    a 1 yin    a 2 div     res 1       a 3 xin    a 4 yin    a 5 div   ENDIF ELSE BEGIN     div   a 6   xin  a 7   yin   1     zero   where div EQ 0      IF zero 0  NE  1 THEN BEGIN       stop     ENDIF     res 0       a 0   xin    a 1   yin    a 2   div     res 1       a 3   xin    a 4   yin    a 5   div   ENDELSE     RETURN  res END");
 a[74] = new Array("./Matrix/cmapply.html", "cmapply.pro", "", "       file_comments   Utility function  adapted from CMPRODUCT      param X      version    Id: cmapply pro 325 2007 12 06 10:04:53Z pinsard        todo seb   FUNCTION cmapply_product  x     compile_opt idl2  strictarrsubs     sz   size x    n   sz 1     while n GT 1 do begin       if  n mod 2  EQ 1 then x 0    x 0    x n 1        n2   floor n 2        x   x 0:n2 1    x n2:        n   n2   endwhile   return  reform x 0   overwrite  end         file_comments   cmapply_redim : Utility function  used to collect collaped dimensions      param newarr      param dimapply      param dimkeep      param nkeep      param totcol      param totkeep      todo seb     PRO cmapply_redim  newarr  dimapply  dimkeep  nkeep  totcol  totkeep     compile_opt idl2  strictarrsubs     sz   size newarr      First task: rearrange dimensions so that the dimensions     that are  kept   ie  uncollapsed  are at the back   dimkeep   where histogram dimapply min 1 max sz 0  ne 1  nkeep    if nkeep EQ 0 then return    newarr   transpose temporary newarr   dimapply 1  dimkeep      totcol is the total number of collapsed elements   totcol   sz dimapply 0    for i   1  n_elements dimapply 1 do totcol   totcol   sz dimapply i    totkeep   sz dimkeep 0 1    for i   1  n_elements dimkeep 1 do totkeep   totkeep   sz dimkeep i 1       this new array has two dimensions:         the first  all elements that will be collapsed         the second  all dimensions that will be preserved      the ordering is so that all elements to be collapsed are      adjacent in memory    newarr   reform newarr   totcol  totkeep   overwrite  end   Main function        file_comments   Applies a function to specified dimensions of an array     Description:     CMAPPLY will apply one of a few select functions to specified   dimensions of an array   Unlike some IDL functions  you  do  have   a choice of which dimensions that are to be  collapsed  by this   function   Iterative loops are avoided where possible  for   performance reasons        The possible functions are:              and number of loop iterations:                Performs a sum  as in TOTAL        number of collapsed dimensions       AND     Finds LOGICAL  AND   not bitwise   same       OR      Finds LOGICAL  OR    not bitwise   same               Performs a product                 LOG_2 no  of collapsed elts          MIN     Finds the minimum value            smaller of no  of collapsed       MAX     Finds the maximum value            or output elements         USER    Applies user defined function      no  of output elements         It is possible to perform user defined operations arrays using     CMAPPLY   The OP parameter is set to  USER:FUNCTNAME  where     FUNCTNAME is the name of a user defined function   The user     defined function should be defined such that it accepts a single     parameter  a vector  and returns a single scalar value   Here is a     prototype for the function definition:          FUNCTION FUNCTNAME  x  KEYWORD1 key1              scalar     function of x or keywords             RETURN  scalar        END       The function may accept keywords   Keyword values are passed in to     CMAPPLY through the FUNCTARGS keywords parameter  and passed to     the user function via the _EXTRA mechanism   Thus  while the     definition of the user function is highly constrained in the     number of positional parameters  there is absolute freedom in     passing keyword parameters        It s worth noting however  that the implementation of user defined     functions is not particularly optimized for speed  Users are     encouraged to implement their own array if the number of output     elements is large       categories   Array      param OP  in required type string    The operation to perform  as a string   May be upper or lower case      If a user defined operation is to be passed  then OP is of   the form   USER:FUNCTNAME  where FUNCTNAME is the name of   the user defined function       param ARRAY  in required type array    An array of values to be operated on    Must not be of type STRING  7  or STRUCTURE  8       param dimapply  in optional default 1  ie  first dimension type array    An array of dimensions that are to be  collapsed  where   the first dimension starts with 1  ie  same convention   as IDL function TOTAL   Whereas TOTAL only allows one   dimension to be added  you can specify multiple dimensions   to CMAPPLY   Order does not matter  since all operations   are associative and transitive   NOTE: the dimensions refer   to the  input  array  not the output array   IDL allows a   maximum of 8 dimensions       keyword DOUBLE  default not set    Set this if you wish the internal computations to be done   in double precision if necessary   If ARRAY is double   precision  real or complex  then DOUBLE 1 is implied       keyword TYPE  default same as input type    Set this to the IDL code of the desired output type  refer   to documentation of SIZE  Internal results will be   rounded to the nearest integer if the output type is an   integer type       keyword FUNCTARGS   If OP is  USER:  then the contents of this keyword   are passed to the user function using the _EXTRA   mechanism   This way you can pass additional data to   your user supplied function  via keywords  without   using common blocks    DEFAULT: undefined  i e  no keywords passed by _EXTRA       returns   An array of the required TYPE  whose elements are the result of   the requested operation   Depending on the operation and number of   elements in the input array  the result may be vulnerable to   overflow or underflow       examples       First example:       Shows how cmapply can be used to total the second dimension of      the array called IN  This is equivalent to OUT   TOTAL IN  2        IDL  IN    INDGEN 5 5      IDL  OUT   CMAPPLY  IN   2      IDL  HELP  OUT     OUT             INT         Array 5        Second example:  Input is assumed to be an 5x100 array of 1 s and     0 s indicating the status of 5 detectors at 100 points in time      The desired output is an array of 100 values  indicating whether     all 5 detectors are on  1  at one time   Use the logical AND     operation        IDL  IN   detector_status               5x100 array     IDL  OUT   CMAPPLY AND  IN   1       collapses 1st dimension     IDL  HELP  OUT     OUT             BYTE        Array 100         note that MIN could also have been used in this particular case      although there would have been more loop iterations        Third example:  Shows sum over first and third dimensions in an     array with dimensions 4x4x4:       IDL  IN   INDGEN 4 4 4      IDL  OUT   CMAPPLY  IN   1 3      IDL  PRINT  OUT          408     472     536     600       Fourth example:  A user function  MEDIAN  is used:       IDL  IN   RANDOMN SEED 10 10 5      IDL  OUT   CMAPPLY USER:MEDIAN  IN  3      IDL  HELP  OUT     OUT             FLOAT       Array 10  10         OUT i j  is the median value of IN i j       history   Mar 1998  Written  CM     Changed usage message to not bomb  24 Mar 2000  CM     Significant rewrite for   MIN and MAX  inspired by Todd Clements         FOR loop indices are now type       LONG  copying terms are liberalized  CM  22  Aug 2000     More efficient MAX MIN  inspired by Alex Schuster  CM  25 Jan       2002     Make new MAX MIN actually work with 3d arrays  CM  08 Feb 2002     Add user defined functions  ON_ERROR  CM  09 Feb 2002     Correct bug in MAX MIN initialization of RESULT  CM  05 Dec 2002      Author: Craig B  Markwardt  NASA GSFC Code 662  Greenbelt  MD 20770    craigm lheamail gsfc nasa gov      version    Id: cmapply pro 325 2007 12 06 10:04:53Z pinsard       FUNCTION cmapply  op  array  dimapply  DOUBLE dbl  TYPE type                      FUNCTARGS functargs  NOCATCH nocatch     compile_opt idl2  strictarrsubs      if n_params  LT 2 then begin       message   USAGE: XX   CMAPPLY OP ARRAY 2   info       message          where OP is     AND  OR  MIN  MAX   info       return   1L   endif   if NOT keyword_set nocatch  then       on_error  2     else       on_error  0      Parameter checking     1  the dimensions of the array   sz   size array    if sz 0  EQ 0 then       message   ERROR: ARRAY must be an array       2  The type of the array   if sz sz 0 1  EQ 0 OR sz sz 0 1  EQ 7 OR sz sz 0 1  EQ 8 then       message   ERROR: Cannot apply to UNDEFINED  STRING  or STRUCTURE    if n_elements type  EQ 0 then type   sz sz 0 1       3  The type of the operation   szop   size op    if szop szop 0 1  NE 7 then       message   ERROR: operation OP was not a string       4  The dimensions to apply  default is to apply to first dim    if n_params  EQ 2 then dimapply   1   dimapply     dimapply     dimapply   dimapply sort dimapply      Sort in ascending order   napply   n_elements dimapply       5  Use double precision if requested or if needed   if n_elements dbl  EQ 0 then begin       dbl 0       if type EQ 5 OR type EQ 9 then dbl 1   endif    newop   strupcase op    newarr   array   newarr   reform newarr  sz 1:sz 0   overwrite    case 1 of            Addition        newop EQ  : begin           for i   0L  napply 1 do begin               newarr   total temporary newarr  dimapply i i  double dbl            endfor       end            Multiplication        newop EQ  : begin   Multiplication  by summation of logarithms            cmapply_redim  newarr  dimapply  dimkeep  nkeep  totcol  totkeep           if nkeep EQ 0 then begin               newarr   reform newarr  n_elements newarr  1   overwrite                return   cmapply_product newarr 0            endif            result   cmapply_product newarr            result   reform result  sz dimkeep 1   overwrite            return  result       end            LOGICAL AND or OR        newop EQ  AND  OR  newop EQ  OR : begin           newarr   temporary newarr  NE 0           totelt   1L           for i   0L  napply 1 do begin               newarr   total temporary newarr  dimapply i i                totelt   totelt   sz dimapply i            endfor           if newop EQ  AND  then return   round newarr  EQ totelt            if newop EQ  OR   then return   round newarr  NE 0        end          Operations requiring a little more attention over how to         iterate        newop EQ  MAX  OR  newop EQ  MIN : begin           cmapply_redim  newarr  dimapply  dimkeep  nkeep  totcol  totkeep           if nkeep EQ 0 then begin               if newop EQ  MAX  then return  max newarr                if newop EQ  MIN  then return  min newarr            endif              Next task: create result array           result   make_array totkeep  type type               Now either iterate over the number of output elements  or             the number of collapsed elements  whichever is smaller            if totcol LT totkeep then begin                 Iterate over the number of collapsed elements               result 0    reform newarr 0 totkeep overwrite                case newop of                    MAX : for i   1L  totcol 1 do                       result 0    result   newarr i                     MIN : for i   1L  totcol 1 do                       result 0    result   newarr i                endcase           endif else begin                 Iterate over the number of output elements               case newop of                    MAX : for i   0L  totkeep 1 do result i    max newarr i                     MIN : for i   0L  totkeep 1 do result i    min newarr i                endcase           endelse            result   reform result  sz dimkeep 1   overwrite            return  result       end          User function        strmid newop 0 4  EQ  USER : begin           functname   strmid newop 5            if functname EQ   then               message   ERROR:  newop  is not a valid operation             cmapply_redim  newarr  dimapply  dimkeep  nkeep  totcol  totkeep           if nkeep EQ 0 then begin               if n_elements functargs  GT 0 then                   return  call_function functname  newarr  _EXTRA functargs                return  call_function functname  newarr            endif              Next task: create result array           result   make_array totkeep  type type               Iterate over the number of output elements           if n_elements functargs  GT 0 then begin               for i   0L  totkeep 1 do                   result i    call_function functname  newarr i  _EXTRA functargs            endif else begin               for i   0L  totkeep 1 do                   result i    call_function functname  newarr i            endelse            result   reform result  sz dimkeep 1   overwrite            return  result       end     endcase    newsz   size newarr    if type EQ newsz newsz 0 1  then return  newarr      Cast the result into the desired type  if necessary   castfns    UNDEF   BYTE   FIX   LONG   FLOAT                  DOUBLE   COMPLEX   UNDEF   UNDEF   DCOMPLEX      if type GE 1 AND type LE 3 then       return  call_function castfns type  round newarr      else       return  call_function castfns type  newarr  end");
 a[75] = new Array("./Matrix/cmset_op.html", "cmset_op.pro", "", "       hidden      file_comments   Simplified version of CMSET_OP_UNIQ which sorts  and takes the    first  value  whatever that may mean       todo seb     FUNCTION cmset_op_uniq  a     compile_opt idl2  strictarrsubs     if n_elements a  LE 1 then return  0L    ii   sort a    b   a ii    wh   where b NE shift b   1L  ct    if ct GT 0 then return  ii wh     return  0L   end        file_comments   Performs an AND  OR  or XOR operation between two sets     Description: SET_OP performs three common operations between two sets  The   three supported functions of OP are:            OP          Meaning         AND    to find the intersection of A and B          OR     to find the union of A and B          XOR    to find the those elements who are members of A or B                but not both        Sets as defined here is one dimensional array composed of     numeric or string types  Comparisons of equality between elements     are done using the IDL EQ operator        The complements of either set can be taken as well  by using the     NOT1 and NOT2 keywords  For example  it may be desirable to find     the elements in A but not B  or B but not A  they are different      The following IDL expressions achieve each of those effects:          SET   CMSET_OP A   AND   NOT2  B      A but not B        SET   CMSET_OP NOT1  A   AND  B      B but not A       Note the distinction between NOT1 and NOT2   NOT1 refers to the     first set  A  and NOT2 refers to the second  B   Their ordered     placement in the calling sequence is entirely optional  but the     above ordering makes the logical meaning explicit        NOT1 and NOT2 can only be set for the  AND  operator  and never     simultaneously  This is because the results of an operation with      OR  or  XOR  and any combination of NOTs   or with  AND  and     both NOTs   formally cannot produce a defined result        The implementation depends on the type of operands  For integer     types  a fast technique using HISTOGRAM is used  However  this     algorithm becomes inefficient when the dynamic range in the data     is large  For those cases  and for other data types  a technique     based on SORT  is used  Thus the compute time should scale     roughly as  A B ALOG A B  or better  rather than  A B  for the     brute force approach  For large arrays this is a significant     benefit       categories   Array      param A  in required    The two sets to be operated on  A one dimensional array of   either numeric or string type  A and B must be of the same   type  Empty sets are permitted  and are either represented   as an undefined variable  or by setting EMPTY1 or EMPTY2       param B  in required    See A      param OP0  in required type string    a string  the operation to be performed  Must be one of    AND   OR  or  XOR   lower or mixed case is permitted    Other operations will cause an error message to be produced       keyword NOT1   If set and OP is  AND  then the complement of A  for   NOT1  or B  for NOT2  will be used in the operation    NOT1 and NOT2 cannot be set simultaneously       keyword NOT2   See NOT1      keyword EMPTY1   If set  then A  for EMPTY1  or B  for EMPTY2  are   assumed to be the empty set  The actual values   passed as A or B are then ignored       keyword EMPTY2   See EMPTY1      keyword INDEX   if set  then return a list of indexes instead of the array   values themselves  The  slower  set operations are always   performed in this case      The indexes refer to the  combined  array  A B  To   clarify  in the following call: I   CMSET_OP   INDEX    returned values from 0 to NA 1 refer to A I  and values   from NA to NA NB 1 refer to B I NA       keyword COUNT   upon return  the number of elements in the result set    This is only important when the result set is the empty   set  in which case COUNT is set to zero       returns   The resulting set as a one dimensional array  The set may be   represented by either an array of data values  default  or an   array of indexes  if INDEX is set  Duplicate elements  if any    are removed  and element order may not be preserved      The empty set is represented as a return value of  1L  and COUNT   is set to zero  Note that the only way to recognize the empty set   is to examine COUNT      SEE ALSO:      SET_UTILS PRO by RSI      history   Written  CM  23 Feb 2000     Added empty set capability  CM  25 Feb 2000     Documentation clarification  CM 02 Mar 2000     Incompatible but more consistent reworking of EMPTY keywords  CM        04 Mar 2000     Minor documentation clarifications  CM  26 Mar 2000     Corrected bug in empty_arg special case  CM 06 Apr 2000     Add INDEX keyword  CM 31 Jul 2000     Clarify INDEX keyword documentation  CM 06 Sep 2000     Made INDEX keyword always force SLOW_SET_OP  CM 06 Sep 2000     Added CMSET_OP_UNIQ  and ability to select FIRST_UNIQUE or       LAST_UNIQUE values  CM  18 Sep 2000     Removed FIRST_UNIQUE and LAST_UNIQUE  and streamlined       CMSET_OP_UNIQ until problems with SORT can be understood  CM  20       Sep 2000  thanks to Ben Tupper      Still trying to get documentation of INDEX and NOT right  CM  28       Sep 2000  no code changes      Correct bug for AND case  when input sets A and B each only have       one unique value  and the values are equal   CM  04 Mar 2004        thanks to James B  jbattat at cfa dot harvard dot edu      Add support for the cases where the input data types are mixed         but still compatible  also  attempt to return the same data        type that was passed in  CM  05 Feb 2005     Fix bug in type checking  thanks to  marit  CM  10 Dec 2005     Work around a stupidity in the built in IDL HISTOGRAM routine         which tries to  help  you by restricting the MIN MAX to the        range of the input variable  thanks to Will Maddox  CM  16 Jan 2006       Author: Craig B  Markwardt  NASA GSFC Code 662  Greenbelt  MD 20770     craigm lheamail gsfc nasa gov      version    Id: cmset_op pro 325 2007 12 06 10:04:53Z pinsard        examples   Utility function  similar to UNIQ  but allowing choice of taking   first or last unique element  or non unique elements    Unfortunately this doesn t work because of implementation dependent   versions of the SORT  function      function cmset_op_uniq  a  first first  non non  count ct  sort sortit     if n_elements a  LE 1 then return  0L     sh    2L keyword_set first 1L 2L keyword_set non 1        if keyword_set sortit  then begin           Sort it manually         ii   sort a    b   a ii          if keyword_set non  then wh   where b EQ shift b  sh  ct            else                     wh   where b NE shift b  sh  ct          if ct GT 0 then return  ii wh      endif else begin           Use the user s values directly         if keyword_set non  then wh   where a EQ shift a  sh  ct            else                     wh   where a NE shift a  sh  ct          if ct GT 0 then return  wh     endelse       if keyword_set first  then return  0L else return  n_elements a 1   end    Simplified version of CMSET_OP_UNIQ which sorts  and takes the    first  value  whatever that may mean      FUNCTION cmset_op  a  op0  b  NOT1 not1  NOT2 not2  COUNT count                  EMPTY1 empty1  EMPTY2 empty2  MAXARRAY ma  INDEX index     compile_opt idl2  strictarrsubs      on_error  2   return on error   count   0L   index0    1L     Histogram technique is used for array sizes  max2       nbins   maxx minn 1       if  maxx minn  GT floor ma 0  then goto  SLOW_SET_OP          Work around a stupidity in the built in IDL HISTOGRAM routine       if  tp1 EQ 2 OR tp2 EQ 2  AND  minn LT  32768 OR maxx GT 32767  then           goto  SLOW_SET_OP          Following operations create a histogram of the integer values        ha   histogram a  min minn  max maxx    1       hb   histogram b  min minn  max maxx    1          Compute NOT cases       if keyword_set not1  then ha   1b   ha       if keyword_set not2  then hb   1b   hb       case op of             Boolean operations            AND : mask   temporary ha  AND temporary hb              OR : mask   temporary ha   OR temporary hb             XOR : mask   temporary ha  XOR temporary hb        endcase        wh   where temporary mask  count        if count EQ 0 then return   1L        result   temporary wh minn        if tp1 NE tp2 then return  result       szr   size result    tpr   szr szr 0 1           Cast to the original type if necessary       if tpr NE tp1 then begin           fresult   make_array n_elements result  type tp1            fresult 0    temporary result            result   temporary fresult        endif        return  result    endelse    return   1L    DEFAULT CASE end        Here is how I did the INDEX stuff with fast histogramming   It       works  but is complicated  so I forced it to go to SLOW_SET_OP        ha   histogram a  min minn  max maxx  reverse ra    1       rr   ra 0:nbins    mask   rr NE rr 1:    ra   ra rr mask 1L mask       hb   histogram b  min minn  max maxx  reverse rb    1       rr   rb 0:nbins    mask   rr NE rr 1:    rb   rb rr mask 1L mask          AND OR XOR NOT masking here         ra   ra wh    rb   rb wh        return  ra ra GE 0     rb n1 ra LT 0    is last  ra  right  ");
@@ -125,8 +125,8 @@
 a[123] = new Array("./ReadWrite/idl-NetCDF/ncdf_struct.html", "ncdf_struct.pro", "", "     file_comments        categories        param FILENAME   The file s name       keyword NODATA        keyword NOATTRIBUTES         returns        restrictions        examples          history        version    Id: ncdf_struct pro 157 2006 08 21 09:01:50Z navarro       FUNCTION ncdf_struct filename nodata nodata noattributes noattributes     Read entire netcdf file into a structure       Structure contains metadata  actual array contents are on heap  with   pointers contained in the structure   Heap variables not created if    nodata  specified      Use ncdf_struct_free to free heap memory       Some data is duplicated for ease of access  in particular if there is   a variable name matching a dimension name  then a pointer to the variable   contents is accessible via the substructures corresponding to the dimension   and every other variable that uses it      Alan Iwi 27 6 02       compile_opt idl2  strictarrsubs    id ncdf_open filename   g ncdf_inquire id  ndim g ndims nvar g nvars natt g ngatts  if ndim gt 0 then begin     dnames strarr ndim      dsizes lonarr ndim      for idim 0 ndim 1 do begin         ncdf_diminq id idim dname dsize         dnames idim dname         dsizes idim dsize     endfor endif  if natt gt 0 and not keyword_set noattributes  then begin     anames strarr natt      for iatt 0 natt 1 do begin         aname ncdf_attname id global iatt          ainq ncdf_attinq id global aname          ncdf_attget id global aname aval         if  ainq datatype eq  CHAR  then aval string aval          if iatt eq 0 then begin             atts create_struct aname aval          endif else begin             atts create_struct atts aname aval          endelse         anames iatt aname     endfor     g create_struct g gatts atts gattnames anames  endif  if nvar gt 0 then begin     vnames strarr nvar      for ivar 0 nvar 1 do begin         v ncdf_varinq id ivar                   vname v name         vndim v ndims         vnatt v natts         vname v name                  if vnatt gt 0 and not keyword_set noattributes  then begin             vanames strarr vnatt              for iatt 0 vnatt 1 do begin                 aname ncdf_attname id ivar iatt                  ainq ncdf_attinq id ivar aname                  ncdf_attget id ivar aname aval                 if  ainq datatype eq  CHAR  then aval string aval                  if iatt eq 0 then begin                     atts create_struct aname aval                  endif else begin                     atts create_struct atts aname aval                  endelse                 vanames iatt aname             endfor             v create_struct v atts atts attnames anames          endif                  vdnames dnames v dim          vdsizes dsizes v dim          v create_struct v dimnames vdnames dimsizes vdsizes                   if not keyword_set nodata  then begin             ncdf_varget id ivar vdata             v create_struct v data ptr_new vdata                                 dimdata replicate ptr_new vndim          endif                  if ivar eq 0 then begin             vars create_struct vname v          endif else begin             vars create_struct vars vname v          endelse                  vnames ivar vname         endfor endif  if ndim gt 0 then begin     for idim 0 ndim 1 do begin         dname dnames idim          d name:dname size:dsizes idim                   if not keyword_set nodata  and nvar gt 0 then begin             matchvar 1             for ivar 0 nvar 1 do begin                 if vnames ivar  eq dname then matchvar ivar             endfor             if matchvar ne  1 then                  d create_struct d data vars matchvar data          endif                  if idim eq 0 then begin             dims create_struct dname d          endif else begin             dims create_struct dims dname d          endelse              endfor     g create_struct g dims dims dimnames dnames dimsizes dsizes  endif  if nvar gt 0 then begin     if not keyword_set nodata  then begin         for ivar 0 nvar 1 do begin             for idim 0 vars ivar ndims 1 do begin                 vars ivar dimdata idim dims vars ivar dim idim data             endfor         endfor     endif     g create_struct g vars vars varnames vnames  endif       ncdf_close id  return g  end");
 a[124] = new Array("./ReadWrite/idl-NetCDF/ncdf_struct_free.html", "ncdf_struct_free.pro", "", "     file_comments        categories        param S   The string to be searched         returns        restrictions        examples          history        version    Id: ncdf_struct_free pro 157 2006 08 21 09:01:50Z navarro       PRO ncdf_struct_free s     compile_opt idl2  strictarrsubs        free heap memory associated with struct returned by ncdf_struct    for i 0 s nvars 1 do ptr_free s vars i data  end");
-a[125] = new Array("./ReadWrite/ncdf_getatt.html", "ncdf_getatt.pro", "", "       file_comments   Get variable attibutes from a NetCDF file      categories   Read NetCDF file      param fileid  in required type salar string or long    if fileid is a scalar string then it is the name of the file  with   the full path  to be opened  in that case  the file will be opened   and closed within ncdf_getatt    if fileid is a scalar long then it is the id of the file return by a call   to ncdf_open outside of ncdf_getatt  in that case  the file will   NOT be opened and closed within ncdf_getatt       param varid  in required type salar string or long    The netCDF variable ID  returned from a previous call to NCDF_VARDEF   or NCDF_VARID  or the name of the variable       keyword add_offset    Set this keyword to a named variable in which the value of   add_offset attribute is returned  Return 0  if this attribute   doesn t exist       keyword scale_factor   Set this keyword to a named variable in which the value of   scale_factor attribute is returned  Return 0  if this attribute   doesn t exist       keyword missing_value   Set this keyword to a named variable in which the value of   missing_value or _fillvalue attribute is returned  Return the scalar    no  if this attribute doesn t exist       keyword units   Set this keyword to a named variable in which the value of   units attribute is returned  Return the empty string   if this attribute   doesn t exist       keyword calendar   Set this keyword to a named variable in which the value of   calendar attribute is returned  Return the string  greg  if this attribute   doesn t exist       keyword long_name   Set this keyword to a named variable in which the value of   long_name is returned  Return empty string if this attribute   does not exist       keyword DOUBLE  default 0   type 1 or 0    activate to force double precision floating point value of   add_offset and scale_factor      keyword standard_name   Set this keyword to a named variable in which the value of   standard_name  CF convention  is returned  Return empty string    if this attribute does not exist       keyword _EXTRA   defined only to be able to call ncdf_getatt with the _extra keyword      examples   IDL  ncdf_getatt  cdfid   sst  add_offset   add_offset  scale_factor   scale_factor  units   units      history   August 2007: Sebastien Masson  smasson lodyc jussieu fr       version    Id: ncdf_getatt pro 334 2008 03 07 14:39:18Z smasson       PRO ncdf_getatt  fileid  varid  ADD_OFFSET   add_offset  SCALE_FACTOR   scale_factor                      MISSING_VALUE   missing_value  UNITS   units  CALENDAR   calendar                      LONG_NAME   long_name  STANDARD_NAME   standard_name  DOUBLE   double                      _extra   ex     compile_opt idl2  strictarrsubs     should we open the file    IF size fileid   type  EQ 7 THEN cdfid   ncdf_open fileid  ELSE cdfid   fileid   default definitions   units       add_offset   0    scale_factor   1    missing_value    no    calendar    greg    long_name       standard_name          varinq   ncdf_varinq cdfid  varid    IF varinq natts GT 0 THEN BEGIN     FOR a   0  varinq natts 1 DO BEGIN       attname   ncdf_attname cdfid  varid  a        CASE strlowcase attname  OF          units :BEGIN            ncdf_attget  cdfid  varid  attname  tmp           units   strtrim tmp  2          END          calendar :BEGIN            ncdf_attget  cdfid  varid  attname  tmp           tmp   strtrim tmp  2            CASE tmp OF              noleap :calendar    noleap               360d :calendar    360d               greg :IF n_elements calendar  EQ 0 THEN calendar    greg              ELSE:BEGIN              notused   report Unknown calendar:  tmp  we use greg calendar                calendar    greg              END           ENDCASE         END          long_name :BEGIN            ncdf_attget  cdfid  varid  attname  tmp            long_name   strtrim tmp  2                     END          standard_name :BEGIN            ncdf_attget  cdfid  varid  attname  tmp            standard_name   strtrim tmp  2                     END          add_offset :ncdf_attget  cdfid  varid  attname  add_offset          scale_factor :ncdf_attget  cdfid  varid  attname  scale_factor          _fillvalue :ncdf_attget  cdfid  varid  attname  missing_value          missing_value :ncdf_attget  cdfid  varid  attname  missing_value         ELSE:       ENDCASE     ENDFOR   ENDIF     IF size missing_value   type  EQ 1 THEN BEGIN     missing_value   strlowcase string missing_value      IF strmid missing_value  0  1   reverse_offset  EQ  f  THEN          missing_value   strmid missing_value  0  strlen missing_value 1      IF isnumber string missing_value  tmp  EQ 1 THEN BEGIN        missing_value   tmp     ENDIF ELSE BEGIN       ras   report Warning: missing value is not a number:     missing_value        missing_value    no      ENDELSE   ENDIF     IF keyword_set double  THEN BEGIN     add_offset   double add_offset      scale_factor   double scale_factor    ENDIF ELSE BEGIN      add_offset   float add_offset      scale_factor   float scale_factor    ENDELSE     IF size fileid   type  EQ 7 THEN ncdf_close  cdfid      return END ");
+a[125] = new Array("./ReadWrite/ncdf_getatt.html", "ncdf_getatt.pro", "", "       file_comments   Get variable attibutes from a NetCDF file      categories   Read NetCDF file      param fileid  in required type salar string or long    if fileid is a scalar string then it is the name of the file  with   the full path  to be opened  in that case  the file will be opened   and closed within ncdf_getatt    if fileid is a scalar long then it is the id of the file return by a call   to ncdf_open outside of ncdf_getatt  in that case  the file will   NOT be opened and closed within ncdf_getatt       param varid  in required type salar string or long    The netCDF variable ID  returned from a previous call to NCDF_VARDEF   or NCDF_VARID  or the name of the variable       keyword add_offset    Set this keyword to a named variable in which the value of   add_offset attribute is returned  Return 0  if this attribute   doesn t exist       keyword scale_factor   Set this keyword to a named variable in which the value of   scale_factor attribute is returned  Return 0  if this attribute   doesn t exist       keyword missing_value   Set this keyword to a named variable in which the value of   missing_value or _fillvalue attribute is returned  Return the scalar    no  if this attribute doesn t exist       keyword units   Set this keyword to a named variable in which the value of   units attribute is returned  Return the empty string   if this attribute   doesn t exist       keyword calendar   Set this keyword to a named variable in which the value of   calendar attribute is returned  Return the string  greg  if this attribute   doesn t exist       keyword long_name   Set this keyword to a named variable in which the value of   long_name is returned  Return empty string if this attribute   does not exist       keyword DOUBLE  default 0   type 1 or 0    activate to force double precision floating point value of   add_offset and scale_factor      keyword standard_name   Set this keyword to a named variable in which the value of   standard_name  CF convention  is returned  Return empty string    if this attribute does not exist       keyword _EXTRA   defined only to be able to call ncdf_getatt with the _extra keyword      examples   IDL  ncdf_getatt  cdfid   sst  add_offset   add_offset  scale_factor   scale_factor  units   units      history   August 2007: Sebastien Masson  smasson lodyc jussieu fr       version    Id: ncdf_getatt pro 344 2008 04 15 11:05:43Z smasson       PRO ncdf_getatt  fileid  varid  ADD_OFFSET   add_offset  SCALE_FACTOR   scale_factor                      MISSING_VALUE   missing_value  UNITS   units  CALENDAR   calendar                      LONG_NAME   long_name  STANDARD_NAME   standard_name  DOUBLE   double                      _extra   ex     compile_opt idl2  strictarrsubs     should we open the file    IF size fileid   type  EQ 7 THEN cdfid   ncdf_open fileid  ELSE cdfid   fileid   default definitions   units       add_offset   0    scale_factor   1    missing_value    no    calendar    greg    long_name       standard_name          varinq   ncdf_varinq cdfid  varid    IF varinq natts GT 0 THEN BEGIN     FOR a   0  varinq natts 1 DO BEGIN       attname   ncdf_attname cdfid  varid  a        CASE strlowcase attname  OF          units :BEGIN            ncdf_attget  cdfid  varid  attname  tmp           units   strtrim tmp  2          END          calendar :BEGIN            ncdf_attget  cdfid  varid  attname  tmp           tmp   strtrim tmp  2            CASE tmp OF              noleap :calendar    noleap               360d :calendar    360d               greg :calendar    greg               360_day :calendar    360d               365_day :calendar    noleap               gregorian : calendar    greg              ELSE:notused   report Unknown calendar:  tmp  we use greg calendar            ENDCASE         END          long_name :BEGIN            ncdf_attget  cdfid  varid  attname  tmp            long_name   strtrim tmp  2                     END          standard_name :BEGIN            ncdf_attget  cdfid  varid  attname  tmp            standard_name   strtrim tmp  2                     END          add_offset :ncdf_attget  cdfid  varid  attname  add_offset          scale_factor :ncdf_attget  cdfid  varid  attname  scale_factor          _fillvalue :ncdf_attget  cdfid  varid  attname  missing_value          missing_value :ncdf_attget  cdfid  varid  attname  missing_value         ELSE:       ENDCASE     ENDFOR   ENDIF     IF size missing_value   type  EQ 1 THEN BEGIN     missing_value   strlowcase string missing_value      IF strmid missing_value  0  1   reverse_offset  EQ  f  THEN          missing_value   strmid missing_value  0  strlen missing_value 1      IF isnumber string missing_value  tmp  EQ 1 THEN BEGIN        missing_value   tmp     ENDIF ELSE BEGIN       ras   report Warning: missing value is not a number:     missing_value        missing_value    no      ENDELSE   ENDIF     IF keyword_set double  THEN BEGIN     add_offset   double add_offset      scale_factor   double scale_factor    ENDIF ELSE BEGIN      add_offset   float add_offset      scale_factor   float scale_factor    ENDELSE     IF size fileid   type  EQ 7 THEN ncdf_close  cdfid      return END ");
 a[126] = new Array("./ReadWrite/ncdf_getaxis.html", "ncdf_getaxis.pro", "", "       file_comments   get the x y dimension Id and x y axes from a netcdf file      categories   Read NetCDF file      param fileid  in required type scalar    the id of the netcdf file      param dimidx  out type scalar  long    id of the x dimension      param dimidy  out type scalar  long    id of the y dimension      param xaxis  out type 1D or 2D array    the x axis      param yaxis  out type 1D or 2D array    the y axis      keyword ROMSGRID  out type scalar: 0 or 1    gives back if we are using a ROMS grid  1  or not  0       keyword START1  default 0 type scalar: 0 or 1    Index the axis from 1 instead of 0 when using  xyindex      keyword XDIMNAME  default longitude   lon   x   longitude   lon   x   longitude   lon  or  x type scalar string    A string giving the name of the x dimension or and a named variable   in which x dimension name is returned       keyword YDIMNAME  default latitude   lat   y   latitude   lat   y   eta_   latitude   lat   y type scalar string    A string giving the name of the y dimension or and a named variable   in which y dimension name is returned       keyword XAXISNAME  default x   longitude   nav_lon   lon   lon_rho  or  NbLongitudes type scalar string    A string giving the name of the variable in the file   that contains the x axis or and a named variable   in which this variable name is returned       keyword YAXISNAME  default y   latitude   nav_lat lat   lat_rho  or  NbLatitudes type scalar string    A string giving the name of the variable in the file   that contains the y axis or and a named variable   in which this variable name is returned       keyword XYINDEX  default 0 type scalar: 0 or 1    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       keyword _EXTRA   Used to be able to call ncdf_getaxis with _extra      history   March 2007: Sebastien Masson  smasson locean ipsl upmc fr         version    Id: ncdf_getaxis pro 327 2007 12 13 16:22:35Z pinsard     PRO ncdf_getaxis  fileid  dimidx  dimidy  xaxis  yaxis                       XAXISNAME xaxisname  YAXISNAME yaxisname                       XDIMNAME xdimname  YDIMNAME ydimname                       XYINDEX xyindex  START1 start1                       ROMSGRID romsgrid  _EXTRA ex     compile_opt idl2  strictarrsubs     should we open the file    IF size fileid   type  EQ 7 THEN cdfid   ncdf_open fileid  ELSE cdfid   fileid   what is inside the file   inside   ncdf_inquire cdfid      name of all dimensions   namedim   strarr inside ndims    for dimiq   0  inside ndims 1 do begin     ncdf_diminq  cdfid  dimiq  tmpname  value     namedim dimiq    strlowcase tmpname    ENDFOR     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   try to get the variable that contains 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                      OR namevar EQ  lon_rho  OR namevar EQ  nblongitudes 0    no xaxis variable found  we will build a fake xaxis based on the size of the x dimension     we must find the x dimension   IF xvarid EQ  1 THEN BEGIN     dummy   report xaxis variable was not found within the default names:                           longitude   nav_lon   lon   lon_rho   nblongitudes                            we use a fake xaxis based on x dimension size  or use XAXISNAME keyword   simple      xaxisname    Not Found    try to get the dimension corresponding to x   roms file      dimidx   where namedim EQ  xi_rho  OR namedim EQ  xi_u  OR namedim EQ  xi_v  OR namedim EQ  xi_psi      IF dimidx 0  EQ  1 THEN BEGIN   we are looking for a x dimension with a name matching one of the following regular expression:       if keyword_set xdimname  then testname   strlowcase xdimname          ELSE testname    longitude   lon   x   longitude   lon   x   longitude   lon   x        cnt    1       ii   0       WHILE cnt NE 1 AND ii LT n_elements testname  DO BEGIN         dimidx   where strmatch namedim  testname ii  EQ 1  cnt          ii   ii 1       ENDWHILE       CASE cnt OF         0:begin           dummy   report none of the dimensions name matches one of the following regular expression:                                 longitude   lon   x   longitude   lon   x   longitude   lon   x                                    we cannot find the x dimension  use XDIMNAME keyword   simple            stop         END         1:dimidx   dimidx 0          ELSE:begin           dummy   report several  and not one unique  dimensions name matches the following regular expression:                                 longitude   lon   x   longitude   lon   x   longitude   lon   x                                    we cannot find the x dimension  use XDIMNAME keyword   simple            stop         ENDELSE       ENDCASE       romsgrid   0b     ENDIF ELSE romsgrid   1b   ENDIF ELSE BEGIN     romsgrid   strmid namevar xvarid  0  4  EQ  lon_      xinq   ncdf_varinq cdfid  xvarid      xaxisname   xinq name     dimidx   xinq dim 0      IF xinq ndims GE 2 THEN ncdf_diminq  cdfid  xinq dim 1  blabla  jpjfromx   ENDELSE   IF arg_present xdimname  THEN ncdf_diminq  cdfid  dimidx   xdimname  jpifromx     IF arg_present xaxis  THEN BEGIN     ncdf_diminq  cdfid  dimidx  blabla  jpifromx   should we read or compute the xaxis      IF keyword_set xyindex  OR xvarid EQ  1 THEN BEGIN       xaxis   keyword_set start1    findgen jpifromx        xyindex   1     ENDIF ELSE BEGIN   read the xaxis       ncdf_varget  cdfid  xvarid  xaxis   make sure of the shape of xaxis       IF n_elements jpjfromx  NE 0 THEN xaxis   reform xaxis  jpifromx  jpjfromx   over      ENDELSE   ENDIF      find the yaxis   try to get the variable that contains 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                      OR namevar EQ  lat_rho  OR namevar EQ  nblatitudes 0    yvarid   yvarid 0    no yaxis variable found  we will build a fake yaxis based on the size of the y dimension     we must find the y dimension   if yvarid EQ  1 then begin     dummy   report yaxis variable was not found within the default names:                           latitude   nav_lat   lat   lat_rho   nblatitudes                            we use a fake yaxis based on y dimension size  or use YAXISNAME keyword   simple      yaxisname    Not Found    try to get the dimension corresponding to y   roms file      dimidy   where namedim EQ  eta_rho  OR namedim EQ  eta_u  OR namedim EQ  eta_v  OR namedim EQ  eta_psi      IF dimidy 0  EQ  1 THEN BEGIN   we are looking for a y dimension with a name matching one of the following regular expression:       if keyword_set ydimname  then testname   strlowcase ydimname          ELSE testname    latitude   lat   y   latitude   lat   y   eta_   latitude   lat   y        cnt    1       ii   0       WHILE cnt NE 1 AND ii LT n_elements testname  DO BEGIN         dimidy   where strmatch namedim  testname ii  EQ 1  cnt          ii   ii 1       ENDWHILE       CASE cnt OF         0:begin           dummy   report none of the dimensions name matches one of the following regular expression:                                 latitude   lat   y   latitude   lat   y   eta_   latitude   lat   y                                    we cannot find the y dimension  use YDIMNAME keyword   simple            stop         END         1:dimidy   dimidy 0          ELSE:begin           dummy   report several  and not one unique  dimensions name matches the following regular expression:                                 latitude   lat   y   latitude   lat   y   eta_   latitude   lat   y                                    we cannot find the y dimension  use YDIMNAME keyword   simple            stop         ENDELSE       ENDCASE     ENDIF   ENDIF ELSE BEGIN     yinq   ncdf_varinq cdfid  yvarid      yaxisname   yinq name     IF yinq ndims GE 2 THEN BEGIN       ncdf_diminq  cdfid  yinq dim 0  blabla  jpifromy       dimidy   yinq dim 1      ENDIF ELSE dimidy   yinq dim 0    ENDELSE   IF arg_present ydimname  THEN ncdf_diminq  cdfid  dimidy   ydimname  jpjfromy     IF arg_present yaxis  THEN BEGIN     IF n_elements jpifromy  NE 0 THEN BEGIN       IF jpifromy NE jpifromx THEN BEGIN         dummy   report x y axes do not have the same x dimension          stop       ENDIF     ENDIF     ncdf_diminq  cdfid  dimidy  blabla  jpjfromy     IF n_elements jpjfromx  NE 0 THEN BEGIN       IF jpjfromy NE jpjfromx THEN BEGIN         dummy   report  x y axes do not have the same y dimension          stop       ENDIF     ENDIF   should we read or compute the xaxis      IF keyword_set xyindex  OR yvarid EQ  1 THEN BEGIN       yaxis   keyword_set start1    findgen jpjfromy      ENDIF ELSE BEGIN   read the yaxis       ncdf_varget  cdfid  yvarid  yaxis   make sure of the shape of xaxis       IF n_elements jpifromy  NE 0 THEN yaxis   reform yaxis  jpifromy  jpjfromy   over      ENDELSE   ENDIF    IF size fileid   type  EQ 7 THEN ncdf_close  cdfid    return END");
-a[127] = new Array("./ReadWrite/ncdf_getmask.html", "ncdf_getmask.pro", "", "       file_comments   get the land sea mask array from a NetCDF file      categories   Read NetCDF file      param fileid  in required type salar string or long    if fileid is a scalar string then it is the name of the file  with   the full path  to be opened  in that case  the file will be opened   and closed within ncdf_getmask    if fileid is a scalar then it is the id of the file return by a call   to ncdf_open outside of ncdf_getmask  in that case  the file will   NOT be opened and closed within ncdf_getmask       keyword ADDSCL_BEFORE  default 0 type scalar: 0 or 1    put 1 to apply add_offset ad scale factor on data before looking for   missing values when using USEASMASK keyword      keyword INVMASK  default 0 type scalar: 0 or 1    Inverse the land sea mask  that should have 0 1 values for land sea : mask   1 mask      keyword MASKNAME  type string    A string giving the name of the variable in the file   that contains the land sea mask      keyword MISSING_VALUE  type scalar    To define  or redefine if the attribute is   already existing  the missing values used with USEASMASK   keyword      keyword USEASMASK  type scalar string    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    _EXTRA to be able to call ncdf_getmask with _extra keyword      returns   the land sea mask 2D or 3D array or  1 in case of error or mask absence      examples     IDL  mask   ncdf_getmask HadISST1_1m_187001_200702_sst_reg1m nc useasmask    sst  missing_value    1 00000e 30      IDL  mask   ncdf_getmask meshmaskORCA2 nc  maskname    tmask       history   August 2007: Sebastien Masson  smasson lodyc jussieu fr       version    Id: ncdf_getmask pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION ncdf_getmask  fileid  ADDSCL_BEFORE addscl_before                          MASKNAME maskname  USEASMASK useasmask                          MISSING_VALUE missing_value  INVMASK invmask                          _EXTRA ex     compile_opt idl2  strictarrsubs     IF NOT  keyword_set maskname  OR keyword_set useasmask  AND keyword_set romsgrid  THEN maskname    mask_rho    IF NOT  keyword_set maskname  OR keyword_set useasmask  THEN return   1     should we open the file    IF size fileid   type  EQ 7 THEN cdfid   ncdf_open fileid  ELSE cdfid   fileid   what is inside the file   inq   ncdf_inquire cdfid    name of the variables   namevar   strarr inq nvars    for varid   0  inq nvars 1 do begin     invar   ncdf_varinq cdfid  varid      namevar varid    strlowcase invar name    ENDFOR     CASE 1 OF     keyword_set maskname :mskid    where namevar EQ strlowcase maskname 0      keyword_set useasmask :mskid    where namevar EQ strlowcase useasmask 0    ENDCASE     if mskid NE  1 THEN BEGIN     mskinq   ncdf_varinq cdfid  mskid    is the mask variable containing the record dimension      withrcd    where mskinq dim EQ inq 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  mask  count   count     ENDIF ELSE ncdf_varget  cdfid  mskid  mask   check if we need to applay add_offset and scale factor     ncdf_getatt  cdfid  mskid  add_offset   add  scale_factor   scl  missing_value   miss     IF n_elements missing_value  NE 0 THEN miss   missing_value      IF keyword_set addscl_before  THEN BEGIN       IF scl NE 1 THEN mask   mask   scl       IF add NE 0 THEN mask   mask   add     ENDIF      IF keyword_set useasmask   THEN BEGIN       IF n_elements miss  NE 0 THEN BEGIN   we have to take care of the float accuracy         CASE 1 OF           miss GE 1 e6:mask   mask LT  miss 10            miss LE  1 e6:mask   mask GT  miss 10            abs miss  LE 1 e 6:mask   abs mask  GT 1 e 6           ELSE:mask   mask NE miss         ENDCASE       ENDIF ELSE BEGIN         mask   finite mask          IF min mask  EQ 1 THEN BEGIN           ras   report   missing or nan values not found            mask    1         ENDIF       ENDELSE     ENDIF      mask   byte round mask      if keyword_set invmask  then mask   1b mask    ENDIF ELSE mask    1    IF size fileid   type  EQ 7 THEN ncdf_close  cdfid    return  mask END");
-a[128] = new Array("./ReadWrite/ncdf_gettime.html", "ncdf_gettime.pro", "", "       file_comments   get the time axis from a netcdf_file and transforms it in   Julian days of IDL       categories   Read NetCDF file      param filename  in required type scalar string    the name of the ncdf_file      param cdfid  in required type scalar    the ID of the ncdf_file  which is already open      keyword TIMEVAR  type string    It define the name of the variable that   contains the time axis  This keyword can be useful if there   is no unlimited dimension or if the time axis selected by default    the first 1D array with unlimited dimension  is not the good one       keyword CALLER  required type scalar    Used to specify the error messages  Give the name of the calling   procedure  It can be only  read_ncdf  or  scanfile       keyword ERR   Set this keyword to a named variable in which the value of the error   message will be returned      keyword _EXTRA   _EXTRA to be able to call ncdf_getmask with _extra keyword      returns   a double 1D array of IDL Julian days   In case of error return  1 if the time dimension was not found                 or return  jpt if it as been found that the time dimension size is jpt      restrictions   the calendar variable must have the units attribute   following the syntax bellow:     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         history   August 2007: Sebastien Masson  smasson lodyc jussieu fr       version    Id: ncdf_gettime pro 327 2007 12 13 16:22:35Z pinsard     FUNCTION ncdf_gettime  filename  cdfid                          TIMEVAR timevar  CALLER caller  ERR err  _EXTRA ex     compile_opt idl2  strictarrsubs      cm_4cal                          needed for key_caltype     inq   ncdf_inquire cdfid     find the variable containing the time axis     we get its name through the keyword timevar   IF keyword_set timevar  THEN BEGIN     timeid   ncdf_varid cdfid  timevar      IF timeid EQ  1 THEN BEGIN       the variable is not found       CASE caller OF          read_ncdf :err    No variable     timevar    found in  filename  Use the TIMESTEP keyword           scanfile :err    No variable     timevar    found in  filename  We create a fake calendar        ENDCASE       return   1     ENDIF     timeinq   ncdf_varinq cdfid  timeid      inq recdim   timeinq dim 0      ncdf_diminq  cdfid  inq recdim  timedimname  jpt   ENDIF ELSE BEGIN   we try to find the time axis automatically   we look for the infinite dimension     IF inq recdim EQ  1 THEN BEGIN       CASE caller OF          read_ncdf :err    the file  filename  as no infinite dimension   C Use TIMESTEP or TIMEVAR keyword           scanfile :err    the file  filename  as no infinite dimension  We create a fake calendar        ENDCASE       return   1     ENDIF     ncdf_diminq  cdfid  inq recdim  timedimname  jpt   we look for the variable containing the time axis   we look for the first variable having for only dimension inq recdim     timeid   0     REPEAT BEGIN                  As long as we have not find a variable having only one dimension: the infinite one       timeinq   ncdf_varinq cdfid  timeid    that the variable contain        timeid   timeid 1     ENDREP UNTIL  n_elements timeinq dim  EQ 1 AND timeinq dim 0  EQ inq recdim           OR timeid EQ inq nvars 1     IF timeid EQ inq nvars 1 THEN BEGIN       CASE caller OF          read_ncdf :err    the file  filename  as no time axis variable   C Use the TIMESTEP keyword           scanfile :err    the file  fullname  has no time axis C we create a fake calendar         ENDCASE       return   jpt     ENDIF     timeid   timeid 1   ENDELSE     look for attribute units and calendar to know how to compte the calendar     no attribute for time variable    IF timeinq natts EQ 0 then begin     CASE caller OF        read_ncdf :err    the variable  timeinq name  has no attribute C Use the TIMESTEP keyword         scanfile :err    the variable  timeinq name  has no attribute C we create a fake calendar       ENDCASE     return   jpt   ENDIF   get attributes names   attnames   strarr timeinq natts    for attiq   0  timeinq natts 1 do attnames attiq    strlowcase ncdf_attname cdfid  timeid  attiq    do we find units attribute    IF  where attnames EQ  units 0  EQ  1 then BEGIN     CASE caller OF        read_ncdf :err    Attribute  units  not found for the variable  timeinq name   C Use the TIMESTEP keyword         scanfile :err    Attribute  units  not found for the variable  timeinq name C we create a fake calendar       ENDCASE     return   jpt   ENDIF   Is attribute  calendar  existing    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   strlowcase strtrim value  2    unpade cm_4cal variable key_caltype  used by julday and caldat      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     decode units attribute     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  attribute to find the time origin   value   strtrim strcompress string value  2    words   str_sep value        units   words 0    units   strlowcase units    IF strpos units   s  strlen units 1  NE  1 THEN units   strmid units  0  strlen units 1    IF strpos units   julian_  NE  1 THEN units   strmid units  7    IF units NE  second  AND units NE  hour  AND units NE  day         AND units NE  month  AND units NE  year  THEN BEGIN     CASE caller OF        read_ncdf :err    time units does not start with seconds hours days months years  C Use the TIMESTEP keyword         scanfile :err    time units does not start with seconds hours days months years  C we create a fake calendar       ENDCASE     return   jpt   ENDIF   IF stregex value      since  0 9 1 4 0 9 1 2 0 9 1 2   boolean  EQ 0 THEN BEGIN     CASE caller OF        read_ncdf :err    attribute units of time has not the good format:     since  0 9 1 4 0 9 1 2 0 9 1 2 C Use the TIMESTEP keyword         scanfile :err    attribute units of time has not the good format:     since  0 9 1 4 0 9 1 2 0 9 1 2 C we create a fake calendar       ENDCASE     return   jpt   ENDIF   start   str_sep words 2        compute time axis     ncdf_varget  cdfid  timeid  time   time   double time    case units of      second :time   julday start 1  start 2  start 0  0  0  0 time 86400 d      hour :time   julday start 1  start 2  start 0  0  0  0 time 24 d      day :time   julday start 1  start 2  start 0  0  0  0 time      month :BEGIN       if total fix time  NE time  NE 0 then     we switch to days with 30d m          time   julday start 1  start 2  start 0 round time 30          ELSE for t   0  n_elements time 1 DO            time t    julday start 1 time t  start 2  start 0      END      year :BEGIN       if total fix time  NE time  NE 0 then     we switch to days with 365d y          time   julday start 1  start 2  start 0 round time 365          ELSE for t   0  n_elements time 1 do            time t    julday start 1  start 2  start 0 time t      END   ENDCASE   time   double time      return  time END");
+a[127] = new Array("./ReadWrite/ncdf_getmask.html", "ncdf_getmask.pro", "", "       file_comments   get the land sea mask array from a NetCDF file      categories   Read NetCDF file      param fileid  in required type salar string or long    if fileid is a scalar string then it is the name of the file  with   the full path  to be opened  in that case  the file will be opened   and closed within ncdf_getmask    if fileid is a scalar then it is the id of the file return by a call   to ncdf_open outside of ncdf_getmask  in that case  the file will   NOT be opened and closed within ncdf_getmask       keyword ADDSCL_BEFORE  default 0 type scalar: 0 or 1    put 1 to apply add_offset ad scale factor on data before looking for   missing values when using USEASMASK keyword      keyword INVMASK  default 0 type scalar: 0 or 1    Inverse the land sea mask  that should have 0 1 values for land sea : mask   1 mask      keyword MASKNAME  type string    A string giving the name of the variable in the file   that contains the land sea mask      keyword MISSING_VALUE  type scalar    To define  or redefine if the attribute is already existing  the   missing values used with USEASMASK keyword  Note that this value is   not used if TESTOP keyword is given and contains 2 words         keyword USEASMASK  type scalar string    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 operator defined by TESTOP   keyword  default NE  and the testing values defined as      1  the second word of TESTOP if existing     2  MISSING_VALUE keyword     3  attribute missing_value or _fillvalue of the variable USEASMASK     4   Values f_nan  can be used only with NE and EQ operators       keyword TESTOP  default NE   type scalar string  for example  GT 0 5    a string describing the type of test that will be done to define the   mask  The test is performed on the variable specified by USEASMASK   keyword    TESTOP can contain 1 or 2 words  The first word is the operator   definition:  EQ   NE   GE   GT   LE   LT   default is NE  The   second word define the testing value  If TESTOP contains only 1   word  then the test value is denifed by     1  MISSING_VALUE keyword     2  attribute missing_value or _fillvalue of the variable USEASMASK     3   Values f_nan  can be used only with NE and EQ operators       keyword    _EXTRA to be able to call ncdf_getmask with _extra keyword      returns   the land sea mask 2D or 3D array or  1 in case of error or mask absence      examples     IDL  mask   ncdf_getmask HadISST1_1m_187001_200702_sst_reg1m nc useasmask    sst  missing_value    1 00000e 30      IDL  mask   ncdf_getmask meshmaskORCA2 nc  maskname    tmask      IDL  mask   ncdf_getmask t106 nc  useasmask    SLM  testop    le 0 5       history   August 2007: Sebastien Masson  smasson lodyc jussieu fr       version    Id: ncdf_getmask pro 361 2008 07 07 14:23:42Z smasson       FUNCTION ncdf_getmask  fileid  ADDSCL_BEFORE   addscl_before                            MASKNAME   maskname  USEASMASK   useasmask                            MISSING_VALUE   missing_value  INVMASK   invmask                            TESTOP   testop  _EXTRA   ex     compile_opt idl2  strictarrsubs     IF NOT  keyword_set maskname  OR keyword_set useasmask  AND keyword_set romsgrid  THEN maskname    mask_rho    IF NOT  keyword_set maskname  OR keyword_set useasmask  THEN return   1     should we open the file    IF size fileid   type  EQ 7 THEN cdfid   ncdf_open fileid  ELSE cdfid   fileid   what is inside the file   inq   ncdf_inquire cdfid    name of the variables   namevar   strarr inq nvars    for varid   0  inq nvars 1 do begin     invar   ncdf_varinq cdfid  varid      namevar varid    strlowcase invar name    ENDFOR     CASE 1 OF     keyword_set maskname :mskid    where namevar EQ strlowcase maskname 0      keyword_set useasmask :mskid    where namevar EQ strlowcase useasmask 0    ENDCASE     if mskid NE  1 THEN BEGIN     mskinq   ncdf_varinq cdfid  mskid    is the mask variable containing the record dimension      withrcd    where mskinq dim EQ inq 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  mask  count   count     ENDIF ELSE ncdf_varget  cdfid  mskid  mask    get add_offset  scale factor and missing value attributes     ncdf_getatt  cdfid  mskid  add_offset   add  scale_factor   scl  missing_value   miss   do we apply add_offset and scale factor       IF keyword_set addscl_before  THEN BEGIN       IF scl NE 1 THEN mask   mask   scl       IF add NE 0 THEN mask   mask   add     ENDIF      IF keyword_set useasmask   THEN BEGIN        IF n_elements missing_value  NE 0 THEN miss   missing_value       IF size miss   type  EQ 7 THEN miss    values f_nan        IF NOT keyword_set testop  THEN testop    NE        tmp   strsplit testop       extract        op   strupcase tmp 0        IF op EQ  EQ  THEN BEGIN         op    NE          invmask   1b   keyword_set invmask         ENDIF       IF n_elements tmp  EQ 1 THEN testval   miss ELSE testval   float tmp 1         IF finite testval  EQ 0 THEN BEGIN         IF op NE  NE  THEN mask   report NaN test value can be used only with EQ or NE operator  ELSE mask   finite mask        ENDIF ELSE BEGIN         CASE op OF            GE :mask   mask GE testval            GT :mask   mask GT testval            LE :mask   mask LE testval            LT :mask   mask LT testval            NE :BEGIN    we have to take care of the float accuracy             CASE 1 OF               testval GE  1 e6:mask   mask LT  testval   10                testval LE  1 e6:mask   mask GT  testval   10                abs testval  LE 1 e 6:mask   abs mask  GT 1 e 6               ELSE:mask   mask NE testval             ENDCASE           END         ENDCASE       ENDELSE      ENDIF      IF mask 0  NE  1 THEN BEGIN        mask   byte round mask        if keyword_set invmask  then mask   1b   mask     ENDIF    ENDIF ELSE mask    1    IF size fileid   type  EQ 7 THEN ncdf_close  cdfid    return  mask END");
+a[128] = new Array("./ReadWrite/ncdf_gettime.html", "ncdf_gettime.pro", "", "       file_comments   get the time axis from a netcdf_file and transforms it in   Julian days of IDL       categories   Read NetCDF file      param filename  in required type scalar string    the name of the ncdf_file      param cdfid  in required type scalar    the ID of the ncdf_file  which is already open      keyword TIMEVAR  type string    It define the name of the variable that   contains the time axis  This keyword can be useful if there   is no unlimited dimension or if the time axis selected by default    the first 1D array with unlimited dimension  is not the good one       keyword CALLER  required type scalar    Used to specify the error messages  Give the name of the calling   procedure  It can be only  read_ncdf  or  scanfile       keyword ERR   Set this keyword to a named variable in which the value of the error   message will be returned      keyword _EXTRA   _EXTRA to be able to call ncdf_getmask with _extra keyword      returns   a double 1D array of IDL Julian days   In case of error return  1 if the time dimension was not found                 or return  jpt if it as been found that the time dimension size is jpt      restrictions   the calendar variable must have the units attribute   following the syntax below:     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         history   August 2007: Sebastien Masson  smasson lodyc jussieu fr       version    Id: ncdf_gettime pro 358 2008 04 28 09:41:14Z pinsard     FUNCTION ncdf_gettime  filename  cdfid                          TIMEVAR timevar  CALLER caller  ERR err  _EXTRA ex     compile_opt idl2  strictarrsubs      cm_4cal                          needed for key_caltype     inq   ncdf_inquire cdfid     find the variable containing the time axis     we get its name through the keyword timevar   IF keyword_set timevar  THEN BEGIN     timeid   ncdf_varid cdfid  timevar      IF timeid EQ  1 THEN BEGIN       the variable is not found       CASE caller OF          read_ncdf :err    No variable     timevar    found in  filename  Use the TIMESTEP keyword           scanfile :err    No variable     timevar    found in  filename  We create a fake calendar        ENDCASE       return   1     ENDIF     timeinq   ncdf_varinq cdfid  timeid      inq recdim   timeinq dim 0      ncdf_diminq  cdfid  inq recdim  timedimname  jpt   ENDIF ELSE BEGIN   we try to find the time axis automatically   we look for the infinite dimension     IF inq recdim EQ  1 THEN BEGIN       CASE caller OF          read_ncdf :err    the file  filename  as no infinite dimension   C Use TIMESTEP or TIMEVAR keyword           scanfile :err    the file  filename  as no infinite dimension  We create a fake calendar        ENDCASE       return   1     ENDIF     ncdf_diminq  cdfid  inq recdim  timedimname  jpt   we look for the variable containing the time axis   we look for the first variable having for only dimension inq recdim     timeid   0     REPEAT BEGIN                  As long as we have not find a variable having only one dimension: the infinite one       timeinq   ncdf_varinq cdfid  timeid    that the variable contain        timeid   timeid 1     ENDREP UNTIL  n_elements timeinq dim  EQ 1 AND timeinq dim 0  EQ inq recdim           OR timeid EQ inq nvars 1     IF timeid EQ inq nvars 1 THEN BEGIN       CASE caller OF          read_ncdf :err    the file  filename  as no time axis variable   C Use the TIMESTEP keyword           scanfile :err    the file  fullname  has no time axis C we create a fake calendar         ENDCASE       return   jpt     ENDIF     timeid   timeid 1   ENDELSE     look for attribute units and calendar to know how to compte the calendar     no attribute for time variable    IF timeinq natts EQ 0 then begin     CASE caller OF        read_ncdf :err    the variable  timeinq name  has no attribute C Use the TIMESTEP keyword         scanfile :err    the variable  timeinq name  has no attribute C we create a fake calendar       ENDCASE     return   jpt   ENDIF   get attributes names   attnames   strarr timeinq natts    for attiq   0  timeinq natts 1 do attnames attiq    strlowcase ncdf_attname cdfid  timeid  attiq    do we find units attribute    IF  where attnames EQ  units 0  EQ  1 then BEGIN     CASE caller OF        read_ncdf :err    Attribute  units  not found for the variable  timeinq name   C Use the TIMESTEP keyword         scanfile :err    Attribute  units  not found for the variable  timeinq name C we create a fake calendar       ENDCASE     return   jpt   ENDIF   Is attribute  calendar  existing    If no  we suppose that the calendar is gregorian calendar     ncdf_getatt  cdfid  timeid  calendar   calendar  units   value   CASE calendar OF      noleap :key_caltype    noleap       360d :key_caltype    360d       greg :key_caltype    greg    ENDCASE     decode units attribute       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  attribute to find the time origin   value   strtrim strcompress string value  2    words   str_sep value        units   words 0    units   strlowcase units    IF strpos units   s  strlen units 1  NE  1 THEN units   strmid units  0  strlen units 1    IF strpos units   julian_  NE  1 THEN units   strmid units  7    IF units NE  second  AND units NE  hour  AND units NE  day         AND units NE  month  AND units NE  year  THEN BEGIN     CASE caller OF        read_ncdf :err    time units does not start with seconds hours days months years  C Use the TIMESTEP keyword         scanfile :err    time units does not start with seconds hours days months years  C we create a fake calendar       ENDCASE     return   jpt   ENDIF   IF stregex value      since  0 9 1 4 0 9 1 2 0 9 1 2   boolean  EQ 0 THEN BEGIN     CASE caller OF        read_ncdf :err    attribute units of time has not the good format:     since  0 9 1 4 0 9 1 2 0 9 1 2 C Use the TIMESTEP keyword         scanfile :err    attribute units of time has not the good format:     since  0 9 1 4 0 9 1 2 0 9 1 2 C we create a fake calendar       ENDCASE     return   jpt   ENDIF   start   str_sep words 2        compute time axis     ncdf_varget  cdfid  timeid  time   time   double time    case units of      second :time   julday start 1  start 2  start 0  0  0  0 time 86400 d      hour :time   julday start 1  start 2  start 0  0  0  0 time 24 d      day :time   julday start 1  start 2  start 0  0  0  0 time      month :BEGIN       if total fix time  NE time  NE 0 then     we switch to days with 30d m          time   julday start 1  start 2  start 0 round time 30          ELSE for t   0  n_elements time 1 DO            time t    julday start 1 time t  start 2  start 0      END      year :BEGIN       if total fix time  NE time  NE 0 then     we switch to days with 365d y          time   julday start 1  start 2  start 0 round time 365          ELSE for t   0  n_elements time 1 do            time t    julday start 1  start 2  start 0 time t      END   ENDCASE   time   double time      return  time END");
 a[129] = new Array("./ReadWrite/read_grads.html", "read_grads.pro", "", "       file_comments   reading grads file  except  data type station  or  grib    from the grads control file even if there is multiple data files       categories   Reading      param VAR  in required    the variable name      param DATE1  in required    date of the beginning  yyyymmdd if TIMESTEP is not activate       param DATE2  in optional    last date  Optional  if not specified date2 date1      keyword FILENAME   the grads control file name:  xxxx ctl       keyword TIMESTEP   to specify that the dates are time steps instead of true calendar      NOT yet available      keyword BOX  type A 4 or 6 elements 1d array   lon1 lon2 lat1 lat2  depth1  depth2    It specifies the area where data must be read      keyword EVERYTHING      keyword NOSTRUCT      keyword _EXTRA   Used to pass keywords      returns   an array      uses   common      restrictions   define all the grid parameters  defined in common pro    associated to the data      this function call the procedure scanfile that use the   unix commands grep and sed      examples   IDL  a read_grads sst 19900101 19900131 filename outputs ctl    IDL  plt  a      history   Sebastien Masson  smasson lodyc jussieu fr       version    Id: read_grads pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION read_grads  var  date1  date2                        FILENAME filename  BOX box  TIMESTEP timestep                        EVERYTHING everything  NOSTRUCT nostruct  _EXTRA ex     compile_opt idl2  strictarrsubs    cm_4mesh  cm_4data  cm_4cal   IF NOT keyword_set key_forgetold  THEN BEGIN  updatenew   ENDIF     we find the filename       filename   isafile FILENAME   filename  IODIRECTORY   iodir  _EXTRA   ex     if size filename   type  NE 7 then       return  report read_ncdf cancelled      we scan the control file called filename      scanctl  filename  filesname  jpt1file  varsname  varslev  swapbytes  bigendian  littleendian  f77sequential  fileheader  theader  xyheader  VARFMT   varfmt  _EXTRA   ex    if n_elements varfmt  EQ 0 then varfmt    float        check date1 and date2 and found the starting index  t1  and the   ending index  t2  that corresponds to the time series specified by   date1 and date2 for the time axis defined in the  ctl file         if n_elements date1  EQ 0 then begin       t0   0       t1   0    ENDIF    if n_elements date2  EQ 0 then date2   date1    if keyword_set timestep  then BEGIN       if date1 GT date2 then begin          ras   report   date2 must be larger than date1           return   1       endif       t1   0   long date1   long date2   date2jul date2   grads        if jdate1 GT jdate2 then begin          ras   report date2 must be larger than date1           return   1       endif       t1    where time GE jdate1 0        tmp   where time LE jdate2  t2        t2   t2 1    ENDELSE    if t2 LT t1 then begin       ras   report There is no date between date1 and date2        return   1    endif    jpt2read   t2 t1 1       index of the variable        varid   where strlowcase varsname  EQ strlowcase var     varid   varid 0     if varid EQ  1 then begin       ras   report var  not found in the variable list of  filename        return    1    ENDIF    varname   var    if varslev varid  EQ 1 then res   fltarr jpi  jpj  jpt2read   nozero       ELSE res   fltarr jpi  jpj  varslev varid  jpt2read   nozero        find the first file to be read according to the file list  the   number of time step in each file and t1 and t2        indf2read   t1 jpt1file    startread   t1 indf2read jpt1file    alreadyread   0 readagain:    jpt2read1file   min jpt1file startread  jpt2read     f2read   filesname indf2read        opening       check the existence of the file    f2read   isafile filename   f2read  iodirectory   iodir  _EXTRA   ex    if the file is stored on tape    if  version os_family EQ  unix  then spawn   file  f2read     dev null    open the file    openr  unit  f2read   get_lun  error err         swap_if_little_endian   bigendian         swap_if_big_endian   littleendian         swap_endian   swapbytes    if err ne 0 then begin       ras   report err_string        return   1    endif      case varfmt of        byte :fmtsz   1l        uint :fmtsz   2l        int :fmtsz   2l        long :fmtsz   4l        float :fmtsz   4l    endcase     check its size    addf77sec   long 4 2 f77sequential     xyblocsize   xyheader   addf77sec xyheader NE 0    jpi jpj fmtsz  addf77sec    nxybloc   long total varslev     filesize    fileheader   addf77sec fileheader NE 0         theader addf77sec theader NE 0    nxybloc xyblocsize jpt1file    infof2read fstat unit     if infof2read size NE filesize then begin       ras   report According to  filename  the file size must be  strtrim filesize  1  instead of  strtrim infof2read size  1           jpi:  strtrim jpi  2           jpj:  strtrim jpj  2           jpt:  strtrim jpt  2           format size in byte:  strtrim fmtsz  2           number of xy arrays:  strtrim nxybloc  2        return   1    endif       reading         loop on the time steps to be read in one file    for i   0  jpt2read1file 1 do begin   computing the offset       offset    fileheader   addf77sec fileheader NE 0            theader addf77sec theader NE 0    nxybloc xyblocsize startread i            theader addf77sec theader NE 0        if varid NE 0 THEN          offset   offset   long total varslev 0:varid 1 xyblocsize   if there is only one level       IF varslev varid  EQ 1 then begin          case varfmt of              byte :a assoc unit  bytarr jpi jpj nozero  offset 4 f77sequential               uint :a assoc unit uintarr jpi jpj nozero  offset 4 f77sequential               int :a assoc unit   intarr jpi jpj nozero  offset 4 f77sequential               long :a assoc unit  lonarr jpi jpj nozero  offset 4 f77sequential               float :a assoc unit fltarr jpi jpj nozero  offset 4 f77sequential           endcase          res    i alreadyread a 0        ENDIF ELSE BEGIN   more than 1 level to be read          if f77sequential then BEGIN   sequential access             case varfmt of                 byte :a assoc unit  bytarr jpi jpj 8  varslev varid nozero  offset                  uint :a assoc unit uintarr jpi jpj 4  varslev varid nozero  offset                  int :a assoc unit   intarr jpi jpj 4  varslev varid nozero  offset                  long :a assoc unit  lonarr jpi jpj 2  varslev varid nozero  offset                  float :a assoc unit fltarr jpi jpj 2  varslev varid nozero  offset              endcase             tmp   a 0              case varfmt OF   we cut the headers and tailers of f77 write                 byte : tmp   tmp 4:jpi jpj 3                    uint : tmp   tmp 2:jpi jpj 1                    int :  tmp   tmp 2:jpi jpj 1                    long : tmp   tmp 1:jpi jpj 0                    float :tmp   tmp 1:jpi jpj 0                endcase             if keyword_set key_zreverse  then res      i alreadyread reverse reform tmp   jpi  jpj  varslev varid   over  3  ELSE res      i alreadyread reform tmp   jpi  jpj  varslev varid   over           ENDIF ELSE BEGIN    direct acces             case varfmt of                 byte :a assoc unit  bytarr jpi jpj varslev varid nozero offset                  uint :a assoc unit uintarr jpi jpj varslev varid nozero offset                  int :a assoc unit   intarr jpi jpj varslev varid nozero offset                  long :a assoc unit  lonarr jpi jpj varslev varid nozero offset                  float :a assoc unit fltarr jpi jpj varslev varid nozero offset              endcase             if keyword_set key_zreverse  then res      i alreadyread reverse a 0  3  ELSE res      i alreadyread a 0           ENDELSE       ENDELSE    endfor     close the file    free_lun unit    close unit       do we need to read a new file to complete the time series          if jpt2read1file NE jpt2read then BEGIN       indf2read   indf2read 1       startread   0       alreadyread   alreadyread jpt2read1file       jpt2read   jpt2read jpt2read1file       GOTO  readagain    ENDIF       post processing        if keyword_set key_yreverse  then res   reverse res  2     if keyword_set key_shift  then begin       case  size res 0  of          2:res   shift res  key_shift  0           3:res   shift res  key_shift  0  0           4:res   shift res  key_shift  0  0  0        endcase    endif       mask     IF varslev varid  EQ 1 then begin        if abs valmask  LE 1e5 then notgood   where res    0  EQ valmask           ELSE notgood   where abs res    0  GE abs valmask 10         if notgood 0  NE  1 then tmask notgood    0b     ENDIF ELSE BEGIN        if abs valmask  LE 1e5 then notgood   where res      0  EQ valmask           ELSE notgood   where abs res      0  GE abs valmask 10         if notgood 0  NE  1 then tmask notgood    0b     ENDELSE    if abs valmask  LE 1e5 then notgood   where res EQ valmask       ELSE notgood   where abs res  GE abs valmask 10     if notgood 0  NE  1 THEN res notgood     values f_nan     valmask   1e20     if abs valmask  LE 1e5 then notgood   where res EQ valmask        ELSE notgood   where abs res  GE abs valmask 10      if notgood 0  NE  1 THEN res notgood    1e20     valmask   1e20    triangles_list   triangule      subdomain extraction      time arguments      time   time t1:t2     jpt   t2 t1 1    if keyword_set timestep  then vardate   strtrim time 0  2       ELSE vardate   date2string vairdate time 0        updateold       return  res end");
 a[130] = new Array("./ReadWrite/read_oasis.html", "read_oasis.pro", "", "       file_comments   read the f77 unformatted files used in Oasis  version  a read_oasis grids_orca_t106 a106 lon 320 160    IDL  m read_oasis masks_orca_t106 or1t msk 182 149 i4      see also IDL  scanoasis grids_orca_t106       history   Sebastien Masson  smasson lodyc jussieu fr                         July 01  2002    version    Id: read_oasis pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION read_oasis  filename  varname  jpi  jpj  I2 I2  I4 i4  I8 i8  R4 r4     compile_opt idl2  strictarrsubs       openr  unit  filename   f77_unformatted   get_lun   swap_if_little_endian         error err    if err ne 0 then begin       ras   report err_string        return   1    endif     char8    12345678     readu  unit  char8     print  char8    found   char8 EQ varname     WHILE NOT EOF unit  AND found NE 1 DO BEGIN       readu  unit       if EOF unit  then begin          ras   report varname  not found in  filename           return   1       endif       readu  unit  char8        print  char8       found   char8 EQ varname    ENDWHILE    case 1 of       keyword_set i2 :res   intarr jpi  jpj        keyword_set i4 :res   lonarr jpi  jpj        keyword_set i8 :res   lon64arr jpi  jpj        keyword_set r4 :res   fltarr jpi  jpj        ELSE:res   dblarr jpi  jpj     endcase     readu  unit  res     free_lun unit     return  res end");
@@ -255,5 +255,5 @@
 a[253] = new Array("./ToBeReviewed/LECTURE/ncdf_lec.html", "ncdf_lec.pro", "", "       file_comments   Give informations on a file netcdf and allows to recuperate   variables which are written in it       categories   Reading      param NOM  in required    Name of a file netcdf located in the directory stipulated by iodir       keyword ATT    global  or the name of a variable  Allows to see all attributes   associated to variable      keyword DIM   Give the list of dimensions       keyword VAR         1   var: Give the list of dimensions          2  var name_of_a_variable : in this case the function send back the variable       keyword IODIR   String containing the directory containing the file to be read      keyword _EXTRA   Used to pass keywords defined by IDL to functions NETCDF  especially OFFSET   and COUNT in NCDF_VARGET       returns    1  except 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 327 2007 12 13 16:22:35Z pinsard       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      What does the file contain       wathinside ncdf_inquire cdfid      print in the file   iodir nom  there are:     if keyword_set dim  then begin       ras   report number of dimensions:     strtrim wathinside ndims 1           number of the dimension which value is infinite :  strtrim wathinside recdim 1     endif    if keyword_set var  then       if size var   type  NE 7 then ras   report number of variables  : strtrim wathinside nvars 1     if keyword_set att  then begin       if strlowcase att  ne  global  then goto nonglobal       ras   report number of global attributes :    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          ras   report 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          ras   report dimension number     strtrim dimiq 1      name:                      nomdim dimiq      value:     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             ras   report variable number:     strtrim varid 1                          name:    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                   ras   report          strtrim attiq                                      name :     strtrim string value 1                 endfor                goto  sortie             endif          endif       endfor    endif   sortie:    ncdf_close cdfid     fini:     return  res end");
 a[254] = new Array("./ToBeReviewed/LECTURE/read_ftp.html", "read_ftp.pro", "", "       file_comments      categories      param U      param CMD      param RES      keyword OUT      keyword COUNT   Upon return  the number of elements in the result set    This is only important when the result set is the empty   set  in which case COUNT is set to zero       restrictions      examples      history      version    Id: read_ftp pro 325 2007 12 06 10:04:53Z pinsard       PRO ftp_post  u  cmd  res  out out  count count     compile_opt idl2  strictarrsubs     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 consequently be opened with OPENR and the      COMPRESSED keyword       history      version    Id: read_ftp pro 325 2007 12 06 10:04:53Z pinsard        todo   seb: que fait on de  syntax  au debut du header    give examples with date in year 0  should not exists but may happen      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");
-a[255] = new Array("./ToBeReviewed/LECTURE/read_ncdf.html", "read_ncdf.pro", "", "       file_comments   Reading function for the file net_cdf    This program is less universal than ncdf_lec  it appeal to declared   variables in common pro  but it is very easier to be used  It considerate   the declaration of the different zooms which have been defined    ixminmesh premierx  the declaration of the variable key_shift    To put it in a nutshell  the result of read_ncdf can be directly used in plt    This is also this program which is used by default in our reading widgets       categories   Reading      param NAME  in required type string    It define the field to be read       param BEGINNING  in required    Relative with the time axis    These can be      2 date of the  type yyyymmdd and in this case  we select dates    which are included between these two dates       2 indexes which define between which and which time step we have    to extract the temporal dimension       param ENDING   in required    Relative with the time axis    See BEGINNING       param COMPATIBILITY  in optional    Useless  defined for compatibility      keyword ADDSCL_BEFORE  default 0 type scalar: 0 or 1    put 1 to apply add_offset ad scale factor on data before looking for   missing values      keyword BOXZOOM   Contain the boxzoom on which we have to do the reading      keyword CALLITSELF  default 0 type scalar: 0 or 1    For ROMS outputs  Use by read_ncdf itself to access auxilliary data  h and zeta       keyword DIREC   a string used to specify the direction along which we want to make   spatial and or temporal mean  It could be:  x   y   z   t   xy   xz     yz   xyz   xt   yt   zt   xyt   xzt   yzt  or  xyzt        keyword FILENAME  required type string    It contains the file s name       keyword INIT  default 0 type scalar: 0 or 1    To call automatically initncdf with filename as input argument    and thus   redefine all the grid parameters      keyword GRID    UTVWF  to specify the type of grid  Default 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       keyword TIMESTEP  default 0 type scalar: 0 or 1    Specify that BEGINNING and ENDING refer to indexes of the time axis and not to dates      keyword TOUT  default 0 type scalar: 0 or 1    We activate it if we want to read the file on the whole domain without   considerate the sub domain defined by the boxzoom or   lon1 lon2 lat1 lat2 vert1 vert2       keyword NOSTRUCT  default 0 type scalar: 0 or 1    We activate it if we do not want that read_ncdf send back a structure   but only the array referring to the field       keyword ZETAFILENAME  default FILENAME type string    For ROMS outputs  The filename of the file where zeta variable should be read      keyword ZETAZERO  default 0 type scalar: 0 or 1    For ROMS outputs  To define zeta to 0  instead of reading it      keyword ZINVAR  type named variable    Set this keyword to a named variable in which 1 is returned if a   vertical dimension is found in the variable  Returns 0 otherwise      keyword _EXTRA   Used to pass keywords to isafile  initncdf    ncdf_gettime  ncdf_getatt and domdef      returns   Structure readable by litchamp or an array if NOSTRUCT is activated     uses   common pro      restrictions   The field must have a temporal dimension       history   Sebastien Masson  smasson lodyc jussieu fr                         15 10 1999      version    Id: read_ncdf pro 336 2008 03 20 21:36:46Z smasson       FUNCTION read_ncdf  name  beginning  ending  compatibility                         BOXZOOM   boxzoom  FILENAME   filename                         PARENTIN   parentin  TIMESTEP   timestep                         ADDSCL_BEFORE   addscl_before                         TOUT   tout  NOSTRUCT   nostruct  CONT_NOFILL   CONT_NOFILL  INIT   init                         GRID   grid  CALLITSELF   callitself  DIREC   direc                         ZETAFILENAME   zetafilename  ZETAZERO   zetazero                         ZINVAR   zinvar  _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      Opening of the name file     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    inq   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   varinq   ncdf_varinq cdfid  name    IF varinq ndims LT 2 THEN return  report read_ncdf cannot read scalar or 1D data    look for the dimension names   dimnames   strarr varinq ndims    FOR i   0  varinq ndims 1 DO BEGIN     ncdf_diminq  cdfid  varinq dim i  tmp  dimsize     dimnames i    tmp   ENDFOR     we check if the variable has a vertical dimension and or    a record dimension  This is useful to define boxzoom    keyword in domdef     dummy   where varinq dim EQ inq recdim  tinvar     check the presence of a vertical dimension according to the   number of dimensions and the presence of a record dimension   zinvar    varinq ndims EQ 3 AND tinvar NE 1  OR varinq ndims EQ 4     shall we redefine the grid parameters     IF keyword_set init  THEN initncdf  filename  _extra   ex     check the time axis and the debut and ending dates     IF n_elements beginning  EQ 0 THEN BEGIN     beginning   0L     timestep   1L   ENDIF   define time and jpt   CASE 1 OF     keyword_set timestep :BEGIN        firsttps   long beginning 0        IF n_elements ending  NE 0 THEN lasttps   long ending 0  ELSE lasttps   firsttps       jpt   lasttps firsttps 1       IF NOT keyword_set callitself  then time   julday 1  1  1    lindgen jpt      END     keyword_set parent :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 beginning 0        if n_elements ending  NE 0 then date2   date2jul ending 0  ELSE date2   date1       firsttps    where abs time   date1  LT 0 9d 86400 d 0    beware of rounding errors        lasttps    where abs time   date2  LT 0 9d 86400 d 0        jpt   lasttps firsttps 1     END     ELSE:BEGIN        time   ncdf_gettime filename  cdfid  caller    read_ncdf  err   err  _extra   ex        IF n_elements err  NE 0 THEN BEGIN         dummy   report err          ncdf_close  cdfid         return   1       ENDIF   date1       date1   date2jul beginning 0    date2       if n_elements ending  NE 0 then date2   date2jul ending 0  ELSE date2   date1   firsttps       firsttps   where time GE  date1   0 9d 86400 d    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       lasttps   where time LE  date2   0 9d 86400 d    lasttps   lasttps n_elements lasttps 1        if lasttps EQ  1 THEN BEGIN         ncdf_close  cdfid         return  report the time axis has no date before date 2:  strtrim jul2date date2  1        endif       if lasttps LT firsttps then BEGIN         ncdf_close  cdfid         return  report the time axis has no dates between date1 and  date 2:  strtrim jul2date date1  1   strtrim jul2date date2  1        endif       time   time firsttps:lasttps        jpt   lasttps firsttps 1     END   ENDCASE     Name of the grid on which the field refer to      IF keyword_set grid  THEN vargrid   strupcase grid  ELSE BEGIN     vargrid    T                  default definition     IF finite glamu 0  EQ 1 THEN BEGIN   are we in one of the case corresponding to ROMS conventions        CASE 1 OF         dimnames 2  long key_stride       read_ncdf_varget       We define common  cm_4data  variables associated with the variable      varname   IF NOT keyword_set callitself  THEN varname   name   varunit and others    ncdf_getatt  cdfid  name  add_offset   add_offset  scale_factor   scale_factor  missing_value   missing_value  units   units  _extra   ex   IF NOT keyword_set callitself  THEN varunit   units   vardate   We make a legible date in function of the specified language    year   long beginning 0 10000   month    long beginning 0 100  MOD 100   day    long beginning 0  MOD 100    vardate   string format    C CMoA  31 month 1   strtrim day  1   strtrim year  1    varexp   file_basename filename    We apply the value valmask on land points    if NOT keyword_set cont_nofill  then begin     valmask   1 e20     case 1 of       varinq ndims eq 2:                                               earth   where mask    0  EQ 0   xy   array       varinq ndims eq 3 AND  where varinq dim EQ inq recdim 0  EQ  1:earth   where mask EQ 0            xyz  array       varinq ndims eq 3 AND  where varinq dim EQ inq recdim 0  NE  1:earth   where mask    0  EQ 0   xyt  array           varinq ndims eq 4:                                               earth   where mask EQ 0            xyzt array     ENDCASE   ENDIF ELSE earth    1   we look for  missing_value   we apply add_offset  scale_factor and missing_value   IF keyword_set addscl_before  THEN BEGIN     IF scale_factor NE 1 THEN res   temporary res scale_factor     IF add_offset   NE 0 THEN res   temporary res add_offset   ENDIF   IF size missing_value   type  NE 7 THEN BEGIN     IF finite missing_value  EQ 1 THEN BEGIN       CASE 1 OF         missing_value GT 1 e6:missing   where res GT missing_value 10          missing_value LT  1 e6:missing   where res LT missing_value 10          abs missing_value  LT 1 e 6:missing   where abs res  LT 1 e 6          ELSE:missing   where res EQ missing_value        ENDCASE     ENDIF ELSE missing   where finite res  EQ 0    ENDIF ELSE missing    1   IF NOT keyword_set addscl_before  THEN BEGIN     if scale_factor NE 1 then res   temporary res scale_factor     if add_offset NE 0 then res   temporary res add_offset   ENDIF   IF missing 0  NE  1 THEN res temporary missing     values f_nan   IF earth 0  NE  1 THEN BEGIN      IF varinq ndims eq 3 AND  where varinq dim EQ inq recdim 0  NE  1 THEN    xyt array            earth   earth replicate 1  jpt replicate nx ny  n_elements earth lindgen jpt      IF varinq ndims eq 4 THEN earth   earth replicate 1  jpt replicate nx ny nz  n_elements earth lindgen jpt      res temporary earth    1 e20   ENDIF      if it is roms outputs  we need to get additionals infos    IF NOT keyword_set callitself  THEN BEGIN     IF strmid dimnames 0  0  3  EQ  xi_  AND strmid dimnames 1  0  4  EQ  eta_  THEN BEGIN       ncdf_attget  cdfid   theta_s  theta_s   global       ncdf_attget  cdfid   theta_b  theta_b   global       ncdf_attget  cdfid   hc  hc   global   look for all variables names       allvarnames   strarr inq nvars        FOR i   0  inq nvars 1 DO BEGIN         tmp   ncdf_varinq  cdfid  i          allvarnames i    tmp name       ENDFOR       CASE 1 OF         keyword_set zetazero :zeta   fltarr nx  ny  jpt          keyword_set zetafilename :               zeta   read_ncdf zeta  firsttps  lasttps  FILENAME   zetafilename                                  TIMESTEP   NOSTRUCT  CONT_NOFILL   CONT_NOFILL                                 GRID   vargrid   CALLITSELF  _EXTRA   ex           where allvarnames EQ  zeta 0  NE  1:              zeta   read_ncdf zeta  firsttps  lasttps  FILENAME   filename                                  TIMESTEP   NOSTRUCT  CONT_NOFILL   CONT_NOFILL                                 GRID   vargrid   CALLITSELF  _EXTRA   ex          ELSE:return  report The variable zeta was not found in the file  please use the keyword ZETAFILENAME to specify the name of a file containing zeta or use  keyword ZETAZERO to define zeta to 0        ENDCASE       romszinfos    h:romszinfos h  zeta:temporary zeta  theta_s:theta_s  theta_b:theta_b  hc:hc      ENDIF ELSE romszinfos    h: 1  zeta: 1  theta_s: 1  theta_b: 1  hc: 1    ENDIF     IF keyword_set direc  THEN BEGIN     IF jpt EQ 1 THEN res   moyenne temporary res  direc  _extra   ex        ELSE BEGIN       res   grossemoyenne temporary res  direc  _extra   ex        IF   strpos strlowcase direc   t  ge 0   THEN BEGIN         vardate   strtrim jul2date time 0  1     strtrim jul2date time jpt 1  1          time   total time float jpt          jpt   1       ENDIF     ENDELSE    ENDIF     ncdf_close  cdfid   IF keyword_set nostruct  THEN return  res   IF keyword_set key_forgetold  THEN BEGIN     return   arr:temporary res  grid:vargrid  unit:varunit  experiment:varexp  name:varname    ENDIF ELSE BEGIN     return   tab:temporary res  grille:vargrid  unite:varunit  experience:varexp  nom:varname    ENDELSE  END");
+a[255] = new Array("./ToBeReviewed/LECTURE/read_ncdf.html", "read_ncdf.pro", "", "       file_comments   Reading function for the file net_cdf    This program is less universal than ncdf_lec  it appeal to declared   variables in common pro  but it is very easier to be used  It considerate   the declaration of the different zooms which have been defined    ixminmesh premierx  the declaration of the variable key_shift    To put it in a nutshell  the result of read_ncdf can be directly used in plt    This is also this program which is used by default in our reading widgets       categories   Reading      param NAME  in required type string    It define the field to be read       param BEGINNING  in required    Relative with the time axis    These can be      2 date of the  type yyyymmdd and in this case  we select dates    which are included between these two dates       2 indexes which define between which and which time step we have    to extract the temporal dimension       param ENDING   in required    Relative with the time axis    See BEGINNING       param COMPATIBILITY  in optional    Useless  defined for compatibility      keyword ADDSCL_BEFORE  default 0 type scalar: 0 or 1    put 1 to apply add_offset ad scale factor on data before looking for   missing values      keyword BOXZOOM   Contain the boxzoom on which we have to do the reading      keyword CALLITSELF  default 0 type scalar: 0 or 1    For ROMS outputs  Use by read_ncdf itself to access auxilliary data  h and zeta       keyword DIREC   a string used to specify the direction along which we want to make   spatial and or temporal mean  It could be:  x   y   z   t   xy   xz     yz   xyz   xt   yt   zt   xyt   xzt   yzt  or  xyzt        keyword FILENAME  required type string    It contains the file s name       keyword INIT  default 0 type scalar: 0 or 1    To call automatically initncdf with filename as input argument    and thus   redefine all the grid parameters      keyword GRID    UTVWF  to specify the type of grid  Default 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       keyword TIMESTEP  default 0 type scalar: 0 or 1    Specify that BEGINNING and ENDING refer to indexes of the time axis and not to dates      keyword TOUT  default 0 type scalar: 0 or 1    We activate it if we want to read the file on the whole domain without   considerate the sub domain defined by the boxzoom or   lon1 lon2 lat1 lat2 vert1 vert2       keyword NOSTRUCT  default 0 type scalar: 0 or 1    We activate it if we do not want that read_ncdf send back a structure   but only the array referring to the field       keyword ZETAFILENAME  default FILENAME type string    For ROMS outputs  The filename of the file where zeta variable should be read      keyword ZETAZERO  default 0 type scalar: 0 or 1    For ROMS outputs  To define zeta to 0  instead of reading it      keyword ZINVAR  type named variable    Set this keyword to a named variable in which 1 is returned if a   vertical dimension is found in the variable  Returns 0 otherwise      keyword _EXTRA   Used to pass keywords to isafile  initncdf    ncdf_gettime  ncdf_getatt and domdef      returns   Structure readable by litchamp or an array if NOSTRUCT is activated     uses   common pro      restrictions   The field must have a temporal dimension       history   Sebastien Masson  smasson lodyc jussieu fr                         15 10 1999      version    Id: read_ncdf pro 337 2008 03 20 22:04:33Z smasson       FUNCTION read_ncdf  name  beginning  ending  compatibility                         BOXZOOM   boxzoom  FILENAME   filename                         PARENTIN   parentin  TIMESTEP   timestep                         ADDSCL_BEFORE   addscl_before                         TOUT   tout  NOSTRUCT   nostruct  CONT_NOFILL   CONT_NOFILL  INIT   init                         GRID   grid  CALLITSELF   callitself  DIREC   direc                         ZETAFILENAME   zetafilename  ZETAZERO   zetazero                         ZINVAR   zinvar  _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      Opening of the name file     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    inq   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   varinq   ncdf_varinq cdfid  name    IF varinq ndims LT 2 THEN return  report read_ncdf cannot read scalar or 1D data    look for the dimension names   dimnames   strarr varinq ndims    FOR i   0  varinq ndims 1 DO BEGIN     ncdf_diminq  cdfid  varinq dim i  tmp  dimsize     dimnames i    tmp   ENDFOR     we check if the variable has a vertical dimension and or    a record dimension  This is useful to define boxzoom    keyword in domdef     dummy   where varinq dim EQ inq recdim  tinvar     check the presence of a vertical dimension according to the   number of dimensions and the presence of a record dimension   zinvar    varinq ndims EQ 3 AND tinvar NE 1  OR varinq ndims EQ 4     shall we redefine the grid parameters     IF keyword_set init  THEN initncdf  filename  _extra   ex     check the time axis and the debut and ending dates     IF n_elements beginning  EQ 0 THEN BEGIN     beginning   0L     timestep   1L   ENDIF   define time and jpt   CASE 1 OF     keyword_set timestep :BEGIN        firsttps   long beginning 0        IF n_elements ending  NE 0 THEN lasttps   long ending 0  ELSE lasttps   firsttps       jpt   lasttps firsttps 1       IF NOT keyword_set callitself  then time   julday 1  1  1    lindgen jpt      END     keyword_set parent :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 beginning 0        if n_elements ending  NE 0 then date2   date2jul ending 0  ELSE date2   date1       firsttps    where abs time   date1  LT 0 9d 86400 d 0    beware of rounding errors        lasttps    where abs time   date2  LT 0 9d 86400 d 0        jpt   lasttps firsttps 1     END     ELSE:BEGIN        time   ncdf_gettime filename  cdfid  caller    read_ncdf  err   err  _extra   ex        IF n_elements err  NE 0 THEN BEGIN         dummy   report err          ncdf_close  cdfid         return   1       ENDIF   date1       date1   date2jul beginning 0    date2       if n_elements ending  NE 0 then date2   date2jul ending 0  ELSE date2   date1   firsttps       firsttps   where time GE  date1   0 9d 86400 d    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       lasttps   where time LE  date2   0 9d 86400 d    lasttps   lasttps n_elements lasttps 1        if lasttps EQ  1 THEN BEGIN         ncdf_close  cdfid         return  report the time axis has no date before date 2:  strtrim jul2date date2  1        endif       if lasttps LT firsttps then BEGIN         ncdf_close  cdfid         return  report the time axis has no dates between date1 and  date 2:  strtrim jul2date date1  1   strtrim jul2date date2  1        endif       time   time firsttps:lasttps        jpt   lasttps firsttps 1     END   ENDCASE     Name of the grid on which the field refer to      IF keyword_set grid  THEN vargrid   strupcase grid  ELSE BEGIN     vargrid    T                  default definition     IF finite glamu 0  EQ 1 THEN BEGIN   are we in one of the case corresponding to ROMS conventions        CASE 1 OF         dimnames 2  long key_stride       read_ncdf_varget       We define common  cm_4data  variables associated with the variable      varname   IF NOT keyword_set callitself  THEN varname   name   varunit and others    ncdf_getatt  cdfid  name  add_offset   add_offset  scale_factor   scale_factor  missing_value   missing_value  units   units  _extra   ex   IF NOT keyword_set callitself  THEN varunit   units   vardate   We make a legible date in function of the specified language    year   long beginning 0 10000   month    long beginning 0 100  MOD 100   day    long beginning 0  MOD 100    vardate   string format    C CMoA  31 month 1   strtrim day  1   strtrim year  1    varexp   file_basename filename    We apply the value valmask on land points    if NOT keyword_set cont_nofill  then begin     valmask   1 e20     case 1 of       varinq ndims eq 2:                                               earth   where mask    0  EQ 0   xy   array       varinq ndims eq 3 AND  where varinq dim EQ inq recdim 0  EQ  1:earth   where mask EQ 0            xyz  array       varinq ndims eq 3 AND  where varinq dim EQ inq recdim 0  NE  1:earth   where mask    0  EQ 0   xyt  array           varinq ndims eq 4:                                               earth   where mask EQ 0            xyzt array     ENDCASE   ENDIF ELSE earth    1   we look for  missing_value   we apply add_offset  scale_factor and missing_value   IF keyword_set addscl_before  THEN BEGIN     IF scale_factor NE 1 THEN res   temporary res scale_factor     IF add_offset   NE 0 THEN res   temporary res add_offset   ENDIF   IF size missing_value   type  NE 7 THEN BEGIN     IF finite missing_value  EQ 1 THEN BEGIN       CASE 1 OF         missing_value GT 1 e6:missing   where res GT missing_value 10          missing_value LT  1 e6:missing   where res LT missing_value 10          abs missing_value  LT 1 e 6:missing   where abs res  LT 1 e 6          ELSE:missing   where res EQ missing_value        ENDCASE     ENDIF ELSE missing   where finite res  EQ 0    ENDIF ELSE missing    1   IF NOT keyword_set addscl_before  THEN BEGIN     if scale_factor NE 1 then res   temporary res scale_factor     if add_offset NE 0 then res   temporary res add_offset   ENDIF   IF missing 0  NE  1 THEN res temporary missing     values f_nan   IF earth 0  NE  1 THEN BEGIN      IF varinq ndims eq 3 AND  where varinq dim EQ inq recdim 0  NE  1 THEN    xyt array            earth   earth replicate 1  jpt replicate nx ny  n_elements earth lindgen jpt      IF varinq ndims eq 4 THEN earth   earth replicate 1  jpt replicate nx ny nz  n_elements earth lindgen jpt      res temporary earth    1 e20   ENDIF      if it is roms outputs  we need to get additionals infos    IF NOT keyword_set callitself  THEN BEGIN     IF strmid dimnames 0  0  3  EQ  xi_  AND strmid dimnames 1  0  4  EQ  eta_  THEN BEGIN       ncdf_attget  cdfid   theta_s  theta_s   global       ncdf_attget  cdfid   theta_b  theta_b   global       ncdf_attget  cdfid   hc  hc   global   look for all variables names       allvarnames   strarr inq nvars        FOR i   0  inq nvars 1 DO BEGIN         tmp   ncdf_varinq  cdfid  i          allvarnames i    tmp name       ENDFOR       CASE 1 OF         keyword_set zetazero :zeta   fltarr nx  ny  jpt          keyword_set zetafilename :               zeta   read_ncdf zeta  firsttps  lasttps  FILENAME   zetafilename                                  TIMESTEP   NOSTRUCT  CONT_NOFILL   CONT_NOFILL                                 GRID   vargrid   CALLITSELF  _EXTRA   ex           where allvarnames EQ  zeta 0  NE  1:              zeta   read_ncdf zeta  firsttps  lasttps  FILENAME   filename                                  TIMESTEP   NOSTRUCT  CONT_NOFILL   CONT_NOFILL                                 GRID   vargrid   CALLITSELF  _EXTRA   ex          ELSE:return  report The variable zeta was not found in the file  please use the keyword ZETAFILENAME to specify the name of a file containing zeta or use  keyword ZETAZERO to define zeta to 0        ENDCASE       romszinfos    h:romszinfos h  zeta:temporary zeta  theta_s:theta_s  theta_b:theta_b  hc:hc      ENDIF ELSE romszinfos    h: 1  zeta: 1  theta_s: 1  theta_b: 1  hc: 1    ENDIF     IF keyword_set direc  THEN BEGIN     IF jpt EQ 1 THEN res   moyenne temporary res  direc  _extra   ex        ELSE BEGIN       res   grossemoyenne temporary res  direc  _extra   ex        IF   strpos strlowcase direc   t  ge 0   THEN BEGIN         vardate   strtrim jul2date time 0  1     strtrim jul2date time jpt 1  1          time   total time float jpt          jpt   1       ENDIF     ENDELSE    ENDIF     ncdf_close  cdfid   IF keyword_set nostruct  THEN return  res   IF keyword_set key_forgetold  THEN BEGIN     return   arr:temporary res  grid:vargrid  unit:varunit  experiment:varexp  name:varname    ENDIF ELSE BEGIN     return   tab:temporary res  grille:vargrid  unite:varunit  experience:varexp  nom:varname    ENDELSE  END");
 a[256] = new Array("./ToBeReviewed/LECTURE/read_ncdf_varget.html", "read_ncdf_varget.pro", "", "");
 a[257] = new Array("./ToBeReviewed/LECTURE/xncdf_lec.html", "xncdf_lec.pro", "", "       file_comments   Reading of a NetCdf file with widgets      categories   Widget      param NAME  in optional type string    It give the name of the file to be opened  If NAME   does not contain the separating character of directories   under   unix for example  the file will be looked for in the current directory       keyword IODIR  type string    It contains the directory where to go look for the file to be read    If NAME does not contain the separating character of directories   under   unix for example  the file will be called iodir nom_fichier       keyword COUNT  type vector    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       keyword 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       keyword OFFSET  type vector default 0  0    An optional vector containing the starting position   for the read  The default start position is  0  0         keyword SHIFT  type vector default 0  0    A vector of integers  specifying for each dimension how much we have to shift it    By default  it is  0 0  See the function shift for more explanations  BEWARE    the shift is done on the biggest array before a possible reduction determined   by OFFSET and COUNT  On the other hand  it is done after the possible extraction   created by the STRIDE       keyword STRIDE  type vector default 1  1    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       returns    2 different cases:         1  None attribute has been selected  In this case  res is the array we         wanted to read          2  Some attributes has been selected  In this case  res is a structure         whose the first element having the name of the variable is the values         array and the other arguments are the select arguments       uses   wididbase  infovariable  resultat  motcle      examples   IDL  help  xncdf_lec       history   Sebastien Masson  smasson lodyc jussieu fr                         24 8 1999      version    Id: xncdf_lec pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION xncdf_lec  name  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     Trick for using keywords  we pass by variables declared in a 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     choice of the file s name     What type of machine is used    thisOS   strupcase strmid version os_family  0  3     CASE thisOS of        MAC :sep    :         WIN :sep           ELSE: sep        ENDCASE   If IODIR is not defined  we initialize it at the current directory    if NOT keyword_set iodir  then cd   current   iodir    mciodir   iodir   We complete IODIR with a separating character if needed     IF rstrpos iodir  sep  NE strlen iodir 1 THEN iodir   iodir sep    if n_elements name  EQ 0 then BEGIN   If NAME is not defined  we find one thanks to the program dialog_pickfile        name   dialog_pickfile filter   iodir nc        if name 0  EQ   then return    1  If we do not have find anything  we go out   We complete NAME by IODIR if NAME does not contain any directory separating character     ENDIF ELSE if strpos name  sep  EQ  1 then name   iodir name    test   findfile name            Does the name looked for correspond to a file     while test 0  EQ   OR n_elements test  GT 1 do BEGIN   We look for one as long as it correspond to nothing        test   test 0        name   dialog_pickfile filter   iodir nc        if name EQ   then return    1       test   findfile name     endwhile     Opening of the file name       cdfid ncdf_open name     contient ncdf_inquire cdfid      What does this file contain      Opening of the base window as columns    if n_elements group  EQ 0 then base   widget_base column  title Fichier:  name   align_left       ELSE base   widget_base column  title Fichier:  name   align_left  GROUP_LEADER   group    Opening of base sub windows       base 1 title having the file s name      base1   widget_base base   column   align_center     rien   widget_label base1  value    NetCdf filename   align_center     rien   widget_text base1  value   name   align_center  uvalue 1   editable   File s name we can change    rien   widget_label base1  value         We jump a line     base 2 General informations on the file      base2   widget_base base   column      Informations on global attributes      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   Loop on  the number of global attributes          name ncdf_attname cdfid attiq global   Attribute s name          ncdf_attget cdfid name value global  Attribute s value          rien   widget_text base2  value   name :  strtrim string value 1  xsize   60   scroll   wrap   align_right        endfor       rien   widget_label base2  value          endif      Informations on dimensions      rien   widget_label base2  value    Nombre de dimensions:  strtrim contient ndims 1   align_left     if contient recdim NE  1 then begin    Loop on  the number of global attributes       ncdf_diminq cdfid contient recdim name value   Name and value of the dimension       rien   widget_label base2  value    name de la dimension infinie:  name   align_left     endif      nomdim    strarr contient ndims    Vector containing dimensions s name    tailledim lonarr contient ndims    Vector containing dimensions s value    for dimiq 0 contient ndims 1 do begin   Loop on the number of dimensions       ncdf_diminq cdfid dimiq name value   Name and value of the 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         We jump a line     base 3 choice of the 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 of a listename containing the name of all file s variables    listename   strarr contient nvars     for varid 0 contient nvars 1 do begin       varcontient ncdf_varinq cdfid varid    that the variable contain       listename varid    varcontient name    endfor    rien  widget_label base31  value    variable    Creation of a button with a pop up menu     base311 widget_droplist base31 value listename  uvalue 2     rien   widget_label base3  value         base 4 button done      base4   widget_base base   row     base42 widget_button base4 value done  uvalue 3   align_right   Execution of the base window and of sub windows    widget_control base realize      xmanager xncdf_lec base          return  res end     La lecture de ce programme se fait de bas en haut:     1  xncdf_lec       2  xncdf_lec_event           3  wid_var                wid_var_event          file_comments   Procedure called by xmanager when we press on a button of a second widget created by wid_var       param EVENT  in required    A structure characterizing the type of event which arrive to a widget number1 2      uses   wididbase resultat infovariable indicewid motcle      version    Id: xncdf_lec pro 327 2007 12 13 16:22:35Z pinsard       PRO wid_var_event  event     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     What is the type of event     widget_control  event id  get_uvalue uval    tailledimvar   tailledim varcontient dim     if n_elements uval  EQ 0 then return   case on the type of event     case uval OF       1:BEGIN                     We change values in the array   We check that values put in the array are not totally false           widget_control  widbase1  get_value   table   Is it the good type of argument    If the type is wrong  we automatically change it by default values           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   Argument with a wrong name value           table   fix table           case event x of             0:BEGIN               We touched the 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   If it exceed the dimension of the array  we put it at the max and the cont at 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   If  with the new offset  the cont is too big  we reduce it  until it goes well                    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              We touched the cont                 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   If it is too big  we reduce it  until it goes well                 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              We touched the 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              We touched the 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    It must not be null                  widget_control  widbase1  use_table_select    3  event y  3  event y                      set_value   1   It must not be too big                 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                 We touched buttons yes no   We update the vector selectatt at 0 or 1 for the concerned attribute  number event id           selectatt where widbase2111 EQ event id    event select       end       31:BEGIN                   We pressed on  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   There are some shifts    We read the wholeness of dimensions for which ones there is a shift              mcoffset mcshift    0             mccount mcshift    tailledimvar mcshift    We do not activate stride when there is no need because it makes write something weird on the screen              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   To do the shift             mcshift   table 2                mcoffset   table 0                mccount   table 1      We define the command allowing to do a shift              commande    res shift res              for dim   0  varcontient ndims 1 do commande   commande string table 2 dim              commande   commande              rien   execute commande    We redefine the command allowing to cut dimensions which has not been cut yet  ones we shift              commande    res res    initialization of the command             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    Case without shift  we read directly the good part of the array           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   Do we have to constitute a structure with selected attributes           if total selectatt  NE 0 then BEGIN   There are selected attributes             res   create_struct varcontient name  res    We create the structure             selectatt   where selectatt EQ 1    We find selected attributes             for attid   0   n_elements selectatt 1 do BEGIN   for which we take                widget_control  widbase212 selectatt attid  get_value   attname   the name                widget_control  widbase213 selectatt attid  get_value   attvalue   the value               res   create_struct res  attname 0  attvalue 0    We concatenate the structure             endfor          endif          widget_control  event top   destroy  We shut the second widget           widget_control  base   destroy  We shut the first widget           ncdf_close cdfid       END       32:                        Case of the display of a held  with xdisplayfile        33:widget_control  event top   destroy  We shut the second widget        ELSE:    endcase    return end          file_comments   This procedure manage the second created widget when we call xncdf_lec    This widget concern the reading of the variable       param WIDID_PERE  type scalar in required    It contains the identity of the father widget which was   created by xncdf_lec and which has allowed to select the variable to be read       results   indirectement res  le tableau ou la structure resultat       uses   resultat infovariable indicewid_var motcle      version    Id: xncdf_lec pro 327 2007 12 13 16:22:35Z pinsard     PRO wid_var  widid_pere     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     Opening of the base window as columns     widbase   widget_base column  title variable:  varcontient name   align_center  group_leader   widid_pere      Opening of the base subwindow     widbase1 array of offsets      rien   widget_label widbase  value         We jump a line   Definition of labels of lines of the array    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 of array s initial values    valinit   lonarr 4  n_elements varcontient dim    column 0 : offsets    if keyword_set mcoffset  AND n_elements mcoffset  EQ varcontient ndims THEN       valinit 0 mcoffset ELSE valinit 0      0   colomn 1 : counts    if keyword_set mccount  AND n_elements mccount  EQ varcontient ndims THEN        valinit 1 mccount ELSE valinit 1      tailledim varcontient dim    column 2 : shifts    if keyword_set mcshift  AND n_elements mcshift  EQ varcontient ndims THEN       valinit 2 mcshift ELSE valinit 2      0   column 3 : strides    if keyword_set mcstride  AND n_elements mcstride  EQ varcontient ndims THEN       valinit 3 mcstride ELSE valinit 3      1   test of initial values of the array    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 of shifts   declaration of the array    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 choice of attributes      rien   widget_label widbase  value         We jump a line    widbase2   widget_base widbase   column    To each attribute  we created a widget  widbase21  containing in line a button   yes no  widbase211  and two widget text  widbase212  widbase213  comprising the   name and the value of the attribute     widbase21   lonarr varcontient natts     widbase211   lonarr varcontient natts     widbase2111   lonarr varcontient natts    Vector which will serve to know which yes no are selected  see  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  Loop on the number of attribute        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 buttons of the bottom       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 of the base window and of sub window       widget_control widbase realize      xmanager wid_var widbase    return end          file_comments   Procedure called by xmanager when we press a button of the first widget   created by par xncdf_lec      param EVENT   A structure characterising the event type which arrive at the widget number 1       uses   resultat  infovariable  motcle      version    Id: xncdf_lec pro 327 2007 12 13 16:22:35Z pinsard       PRO xncdf_lec_event  event     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   What is the type of event     widget_control  event id  get_uvalue uval   case on the type of event     case uval of       1:BEGIN                     We want to read an other file          widget_control  event id  get_value   nom   We recuperate the name           widget_control  event top   destroy  We shut the widget           ncdf_close cdfid        We shut the wrong file which has been opened   We call back 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                     A variable is selected           varid   event index      We recuperat its number in the file Netcdf          varcontient   ncdf_varinq cdfid varid           wid_var  event top       We call the program which launch the second widget  See sooner        END       3:BEGIN                     button done          widget_control  event top   destroy   We delete the widget          ncdf_close cdfid         We shut the file        END       ELSE:    endcase    return end");
@@ -266,5 +266,5 @@
 a[264] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltt.html", "pltt.pro", "", "       file_comments   Trace hovmoeller graphs: xt yt zt t      categories    Graphics      param TAB  in required    The field whose we want to make the hovmoeller 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 extraction 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  extraction zone via BOXZOOM          2  a structure respecting all criterions specified by litchamp            See IDL  xhelp litchamp  The array contained in the structure            respecting criterions of case 1          param GIVENTYPE      param GIVENMIN   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       param GIVENMAX   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       param DATMIN   c est la borne inf de l axe temporel  c est un         longinteger de la forme yyyymmdd  ou bien yymmdd       param 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 geographic 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  type integer    When CONTOUR is activated  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  default we take the max of the array passed in the keyword CONTOUR  on ocean points    When CONTOUR is activated  max value we want to consider in the isoline   traced by a trait s line       keyword CONTMIN  default we take the min of the array passed in the keyword CONTOUR  on ocean points    When CONTOUR is activated  min value we want to consider in the isoline   traced by a trait s line       keyword CONTNLEVEL  default 20    When  CONTOUR is activated  it is the number of contours   traced by a trait for drawing  active if   CONTLABEL 0       keyword CONTOUR   If we want to trace contours of a different field than the one   whose we have the colored drawing  by example E P in color and QSR in contours    It must be a field respecting same characteristics than the argument number one of pltt       keyword ENDPOINTS   keyword specifying that we want to make a vertical cut in diagonal  Then coordinated of extremities   of these one are defined 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 interval between two isolines  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 isolines  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  type integer    If n different of 0  it choose the label s type   corresponding to cases n  cf label   Comment: When CONTOUR is activated  it only specify the label s type for colored isolines    For these 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   to specify the max value we want to plot with a keyword instead of with the   input parameter max  If max is defined by both  parameter and keyword  the   keyword is retained       keyword MININ   to specify the min value we want to plot with a keyword instead of with the   input parameter min  If min is defined by both  parameter and keyword  the   keyword is retained       keyword NLEVEL  default 20    Number of contours to draw  active if   LABEL 0 or is not specified       keyword NOFILL   To make just isolines with no filling      keyword CONTNLEVEL  default 20    When CONTOUR is activated  it is the number of contours   traced by a trait for drawing  active if   CONTLABEL 0       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  Values inferior superior at the   specified min max are not filled  Note that max values a considered   as missing values so cells containing one or more corners with   values above max will have no contours drawn through them         keyword STYLE  default style 0    Contour s style to adopt to draw isolines  See style for more informations      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      keyword TYPEIN   allows to specify the type of hovmoeller we want to do                xt yt zt t    with help of a keyword rather than the argument type  If the argument and the   keyword are specified in the same time  it is the value specified by the   keyword which is retained       keyword _EXTRA   Used to pass keywords      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr   27 5 98                         Jerome Vialard  adapting plt to hovmoeller 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 328 2007 12 13 19:27:11Z smasson        todo    seb: definition of parameters  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             NOFILL nofill  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     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 reinitialize 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 n_elements z2d  EQ 1 AND z2d 0  EQ  1 then BEGIN         IF keyword_set savedbox  THEN restoreboxparam   boxparam4pltt dat          return       endif       grille  mask  glam  gphi  gdep  nx  ny  nz  type   type    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       ras   report     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  automatically 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");
 a[265] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltv.html", "pltv.pro", "", "       file_comments   Draw 2d plots with TV procedure      categories    find a file   graphic      param DATA  in required    The field we want to display can be:      1  an array  If the array is not a 2D array  its mean along         the z and t direction will be automatically performed          as it is done in plt       2  a structure respecting all criterions specified by         litchamp cf  IDL  xhelp litchamp       param MIN  in optional default min of DATA  on non masked points       param MAX  in optional default max of DATA  on non masked points       keyword BOTTOM  default 1    The lowest color index of the colors to be used       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 C_NAN  default 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 NCOLORS  default d n_colors placedessin  TV    axe  legende  barrecouleur     terminedessin      examples   IDL  tvplus  dist 100       history   Aug 2006: Sebastien Masson  smasson lodyc jussieu fr       version    Id: pltv pro 327 2007 12 13 16:22:35Z pinsard       PRO pltv  data  min  max  BOTTOM bottom  BOXZOOM boxzoom             C_MASK c_mask  C_NAN c_nan  INV inv  MININ minin  MAXIN maxin             MASKVAL maskval  NCOLORS ncolors  NOINTERP nointerp             _EXTRA ex     compile_opt idl2  strictarrsubs      cm_general   for key_performance     tempsun   systime 1             for key_performance       I2  Reading of the field and checkup      IF n_elements minin  NE 0 THEN min   minin   IF n_elements maxin  NE 0 THEN max   maxin   IF size data   type  NE 8 THEN z2d   reform float data  ELSE z2d   data   IF size z2d   n_dimensions  NE 2 then BEGIN     if keyword_set boxzoom  then BEGIN       savedbox   1b       saveboxparam   boxparam4pltv dat      ENDIF     z2d   checkfield temporary z2d   plt  TYPE    xy  direc   direc  BOXZOOM   boxzoom      if n_elements z2d  EQ 1 AND z2d 0  EQ  1 then BEGIN       IF keyword_set savedbox  THEN restoreboxparam   boxparam4pltv dat        return     ENDIF   ENDIF   dtasize   size z2d   dimensions      def of ncolmax  bottom  topcol et ncolors     ncolmax    d n_colors  bottom   IF NOT keyword_set ncolors  then topcol   ncolmax   2 ELSE topcol    bottom   ncolors   1   temporary z2d   c_nan  c_mask    ncolmax   1  ELSE cmask    ncolmax  1      z2d maskind    cmask   ENDIF   reverse colors  from topcol to bottom instead of bottom to topcol    IF keyword_set inv  THEN BEGIN     m   float topcol     bottom   float bottom   topcol      p   float bottom 2   topcol 2 float bottom   topcol      z2d   m   temporary z2d    p   ENDIF   avoid rounding errors   z2d   round temporary z2d    use byte type to save memory   z2d   byte temporary z2d            if NOT keyword_set overplot  then reinitplt   z   invert   placedessin   pltv  posplot  posbar  dtasize  _extra   ex     3  Drawing       xsize    p position 2     p position 0     ysize    p position 3     p position 1     IF  d name EQ  X  THEN BEGIN      xsize   ceil xsize    d x_size       ysize   ceil ysize    d y_size       z2d   congrid z2d  xsize  ysize     ENDIF     tv  z2d   p position 0   p position 1             xsize   xsize  ysize   ysize             normal  _EXTRA   ex       caption   display of these       axe   pltv  dtasize  _EXTRA   ex    legende  truemin  truemax   plt  DIREC   direc                 INTERVALLE   float max min topcol bottom                  _extra   ex    plot   0   0   noerase   nodata  xstyle   1  ystyle   1  _extra   ex     IF keyword_set masked  THEN tracemask  msk  indgen dtasize 0  indgen dtasize 1      color bar      IF keyword_set inv  THEN colors   topcol   bindgen ncolors  ELSE colors   bottom   bindgen ncolors     barrecouleur  colors  min   max  10  position   posbar   _extra   ex   4  End of drawing    terminedessin  _extra ex     if keyword_set savedbox  THEN restoreboxparam   boxparam4pltv dat    if keyword_set key_performance  NE 0 THEN print   time pltv  systime 1 tempsun      return end");
-a[266] = 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             See IDL  xhelp litchamp  The array contained in the structure must be 2 or 3d  See case 1         param GIVENTYPE      param GIVENMIN  required    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       param GIVENMAX  required    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       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  type integer    When CONTOUR is activated  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  default max of the keyword CONTOUR  on ocean points    When CONTOUR is activated  max value we want to consider in the isoline   traced by a trait s line       keyword CONTMIN  default min of the keyword CONTOUR  on ocean points    When CONTOUR is activated  min value we want to consider in the isoline   traced by a trait s line       keyword CONTNLEVEL  default 20    When  CONTOUR is activated  it is the number of contours   traced by a trait for drawing  active if   CONTLABEL 0       keyword CONTOUR   If we want to trace contours of a different field than the one   whose we have the colored drawing  by example E P in color and QSR in contours    It must be a field respecting same characteristics than the argument number one of plt       keyword ENDPOINTS   keyword specifying that we want to make a vertical cut in diagonal  Then coordinated of extremities   of these one are defined by the 4 elements of the vector ENDPOINTS:  x1 y1 x2 y2  which are   coordinates       keyword INTERVALLE   Value of an interval between two isolines  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 isolines  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  default 2 3    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       keyword LABEL  default 0 type integer    It choose the label s type corresponding to cases in label   Comment: When CONTOUR is activated  it only specify the label s type for colored isolines    For these one traced by a trait  use CONTLABEL       keyword MAXIN   to specify the max value we want to plot with a keyword instead of with the   input parameter max  If max is defined by both  parameter and keyword  the   keyword is retained       keyword MININ   to specify the min value we want to plot with a keyword instead of with the   input parameter min  If min is defined by both  parameter and keyword  the   keyword is retained       keyword NLEVEL  default 20    Number of contours to draw  active if   LABEL 0 or is not specified       keyword NOFILL   To make just isolines with no filling      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  except 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  Values inferior superior at the   specified min max are not filled  Note that max values a considered   as missing values so cells containing one or more corners with   values above max will have no contours drawn through them         keyword STYLE  default style 0    Contour s style to adopt to draw isolines  See style for more informations      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   default 200m or max depth if it is inferior at 200m    Depth where i can make our maximum zoom       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 328 2007 12 13 19:27:11Z smasson        todo    seb definition of paramaters 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             NOFILL nofill  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     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 reinitialize 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 n_elements z2d  EQ 1 AND 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 n_elements z2d  EQ 1 AND 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  type   type  WDEPTH   wdepth       ELSE grille  mask  glam  gphi  gdep  nx  ny  nz  WDEPTH   wdepth   ENDELSE   IF size gdep   n_dimensions  EQ 2 THEN usetri   2     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 n_elements key_save  EQ 0 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                                            trifield   triangule mask   basic      IF NOT keyword_set endpoints   THEN BEGIN     if keyword_set nan  then trinan   triangule masknan   basic  coinmonte   coinmontenan  coindescend   coindescendnan      maskorg   mask     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     IF n_elements romszinfos  EQ 1 THEN BEGIN   add one line at bottom to have nicer plot  colors go until the ocean bottom      IF n_elements romszinfos h  NE 1 THEN BEGIN       CASE type OF          xz :romsh   moyenne romszinfos h   y           yz :romsh   moyenne romszinfos h   x        ENDCASE       IF nzt EQ jpk THEN BEGIN         z2d    z2d   z2d  jpk 1          zzaxis    zzaxis   romsh        ENDIF     ENDIF   ENDIF   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  NOFILL   nofill         maskorg   maskorg  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   display 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");
+a[266] = 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             See IDL  xhelp litchamp  The array contained in the structure must be 2 or 3d  See case 1         param GIVENTYPE      param GIVENMIN  required    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       param GIVENMAX  required    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       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  type integer    When CONTOUR is activated  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  default max of the keyword CONTOUR  on ocean points    When CONTOUR is activated  max value we want to consider in the isoline   traced by a trait s line       keyword CONTMIN  default min of the keyword CONTOUR  on ocean points    When CONTOUR is activated  min value we want to consider in the isoline   traced by a trait s line       keyword CONTNLEVEL  default 20    When  CONTOUR is activated  it is the number of contours   traced by a trait for drawing  active if   CONTLABEL 0       keyword CONTOUR   If we want to trace contours of a different field than the one   whose we have the colored drawing  by example E P in color and QSR in contours    It must be a field respecting same characteristics than the argument number one of plt       keyword ENDPOINTS   keyword specifying that we want to make a vertical cut in diagonal  Then coordinated of extremities   of these one are defined by the 4 elements of the vector ENDPOINTS:  x1 y1 x2 y2  which are   coordinates       keyword INTERVALLE   Value of an interval between two isolines  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 isolines  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  default 2 3    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       keyword LABEL  default 0 type integer    It choose the label s type corresponding to cases in label   Comment: When CONTOUR is activated  it only specify the label s type for colored isolines    For these one traced by a trait  use CONTLABEL       keyword MAXIN   to specify the max value we want to plot with a keyword instead of with the   input parameter max  If max is defined by both  parameter and keyword  the   keyword is retained       keyword MININ   to specify the min value we want to plot with a keyword instead of with the   input parameter min  If min is defined by both  parameter and keyword  the   keyword is retained       keyword NLEVEL  default 20    Number of contours to draw  active if   LABEL 0 or is not specified       keyword NOFILL   To make just isolines with no filling      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  except 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  Values inferior superior at the   specified min max are not filled  Note that max values a considered   as missing values so cells containing one or more corners with   values above max will have no contours drawn through them         keyword STYLE  default style 0    Contour s style to adopt to draw isolines  See style for more informations      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   default 200m or max depth if it is inferior at 200m    Depth where i can make our maximum zoom       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 360 2008 06 06 13:43:54Z smasson        todo    seb definition of paramaters 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             NOFILL nofill  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     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 reinitialize 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 n_elements z2d  EQ 1 AND 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 n_elements z2d  EQ 1 AND 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  type   type  WDEPTH   wdepth       ELSE grille  mask  glam  gphi  gdep  nx  ny  nz  WDEPTH   wdepth   ENDELSE   IF size gdep   n_dimensions  EQ 2 THEN usetri   2     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 n_elements key_save  EQ 0 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                                            trifield   triangule mask   basic      IF NOT keyword_set endpoints   THEN BEGIN     if keyword_set nan  then trinan   triangule masknan   basic  coinmonte   coinmontenan  coindescend   coindescendnan      maskorg   mask     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     IF n_elements romszinfos  EQ 1 THEN BEGIN   add one line at bottom to have nicer plot  colors go until the ocean bottom      IF n_elements romszinfos h  NE 1 THEN BEGIN       CASE type OF          xz :romsh   moyenne romszinfos h   y           yz :romsh   moyenne romszinfos h   x        ENDCASE       IF nzt EQ jpk THEN BEGIN         z2d    z2d   z2d  jpk 1          zzaxis    zzaxis   romsh        ENDIF     ENDIF   ENDIF   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  NOFILL   nofill         maskorg   maskorg  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  _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   display 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");
 a[267] = new Array("./ToBeReviewed/PLOTS/DESSINE/sbar_plot.html", "sbar_plot.pro", "", "       file_comments   Same thing that bar_plot but compatible with the whole environment  common pro included       categories Graphics      keyword COLORS  type vector    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  type integer    I gives 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 environment variables  p   x   y   z   to be reinitialized by the procedure reinitplt      keyword _EXTRA   Used to pass keyword      uses   common pro      restrictions   If NOREINITPLT is not activated  all environment   variables  p   x   y   z are reinitializted by 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 327 2007 12 13 16:22:35Z pinsard       PRO sbar_plot  values  COLORS colors  NOREINITPLT noreinitplt  _EXTRA ex     compile_opt idl2  strictarrsubs    common   1  I reinitialize the graphic environment  variables  x   y and  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");
 a[268] = new Array("./ToBeReviewed/PLOTS/DESSINE/scontour.html", "scontour.pro", "", "       file_comments   Same thing that contour but compatible with the whole environment  common pro included       categories   Graphics      keyword NOREINITPLT   We active it if we do not want environment variables  p   x   y   z   to be reinitilalized by the procedure reinitplt      keyword _EXTRA   Used to pass 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 327 2007 12 13 16:22:35Z pinsard       PRO scontour  x  y  z  NOREINITPLT noreinitplt  _EXTRA ex     compile_opt idl2  strictarrsubs    common   1  I reinitialize the graphic environment  variables  x   y and  p :   if NOT keyword_set NOREINITPLT  then reinitplt  _extra   ex   2  i put the drawing on the screen like on the postscript   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_orientation    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_orientation     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_orientation  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");
@@ -274,6 +274,6 @@
 a[272] = 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   Graphics      param MIN  in required   type float    above what value we want to trace a contour      param MAX  in required   type float    below what value we want to trace a contour      param CI  out   type real    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 contours to be even       history   G  Roullet   aout 99  gr lodyc jussieu fr       version    Id: autoscale pro 325 2007 12 06 10:04:53Z pinsard       PRO autoscale  min  max  ci     compile_opt idl2  strictarrsubs     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      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");
 a[273] = 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  default 2 3    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       keyword _EXTRA   Used to pass keywords     Others: see pltz      history   Sebastien Masson  smasson lodyc jussieu fr                         June 24  2002      version    Id: axis4pltz pro 327 2007 12 13 16:22:35Z pinsard       PRO axis4pltz  type  mask  glam  gphi  z                  XXAXIS xxaxis  ZZAXIS zzaxis  SIN sin  ZRATIO zratio                  ZOOM zoom  PROFMAX profmax  PROFMIN profmin  _EXTRA ex     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    ENDIF ELSE BEGIN     xxaxis   glam  0    ENDELSE   zzaxis   z     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      small   where zzaxis LE zoom      IF small 0  NE  1 THEN zzaxis small    mp 0 zzaxis small mp 1      mp   projsegment zoom  profmax   zratio  1   mp      big   where zzaxis GE zoom      IF big 0  NE  1 THEN zzaxis big    mp 0 zzaxis big 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");
-a[274] = new Array("./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html", "barrecouleur.pro", "", "       file_comments   Overlayer of colorbar      categories   Utilities      param colnumb      param clbinf      param clbsup      param clbdiv      keyword NOCOLORBAR      keyword CB_TITLE      keyword NOFILL      keyword COLOR_C      keyword MIN   Scalar used to specify the min value to be drawn       keyword MAX   Scalar used to specify the max value to be drawn       keyword DIVISIONS      keyword CB_SUBTITLE      keyword POST      keyword _EXTRA   Used to pass keywords      restrictions   pass all arguments we want thanks to _EXTRA      history   Sebastien Masson  smasson lodyc jussieu fr                          23 12 98      version    Id: barrecouleur pro 327 2007 12 13 16:22:35Z pinsard        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");
-a[275] = new Array("./ToBeReviewed/PLOTS/DIVERS/checkfield.html", "checkfield.pro", "", "       file_comments      categories      param TYPE  in required type string    A string of two characters specifying the type of plot we do      param N1  in required type integer    Number of elements in the first dimension      param N2  in required type integer    Number of elements in the second dimension      param NAME  in optional type string    It gives the name of the file to be opened  If NAME   does not contain the separating character of directories   under   unix for example  the file will be looked for in the current directory       returns      restrictions      examples      history      version    Id: checkfield pro 327 2007 12 13 16:22:35Z pinsard       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          file_comments      categories      param TYPE  in required type string    A string of two characters specifying the type of plot we do      param SZ  in optional default defined by grille       param NX  in optional default defined by grille       param NY  in optional default defined by grille       param NZ      returns      restrictions      examples      history      version    Id: checkfield pro 327 2007 12 13 16:22:35Z pinsard       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 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      categories      param TYPE  in required type string    A string of two characters specifying the type of plot we do      param SZ  in optional default defined by grille       param NX  in optional default defined by grille       param NY  in optional default defined by grille       param NZ      returns      restrictions      examples      history      version    Id: checkfield pro 327 2007 12 13 16:22:35Z pinsard       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 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   Graphics      param FIELD  in required type field    It respect litchamp s criterions  See IDL xhelp litchamp       param PROCEDURE  in required       keyword TYPE      keyword NOQUESTION      keyword BOXZOOM  type vector    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 instead of T   depth  automatically activated if vargrid eq  W       keyword VECTEUR type vector    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 inconsequential          vecteur u:lec unsurface v:lec vnsurface  is also appropriated       keyword _EXTRA   Used to pass keywords      keyword DIREC      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                         08 02 2000      version    Id: checkfield pro 327 2007 12 13 16:22:35Z pinsard        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    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 the 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");
+a[274] = new Array("./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html", "barrecouleur.pro", "", "       file_comments   Overlayer of colorbar      categories   Utilities      param colnumb      param clbinf      param clbsup      param clbdiv      keyword NOCOLORBAR      keyword CB_TITLE      keyword NOFILL      keyword COLOR_C      keyword MIN   Scalar used to specify the min value to be drawn       keyword MAX   Scalar used to specify the max value to be drawn       keyword DIVISIONS      keyword CB_SUBTITLE      keyword POST      keyword _EXTRA   Used to pass keywords      restrictions   pass all arguments we want thanks to _EXTRA      history   Sebastien Masson  smasson lodyc jussieu fr                          23 12 98      version    Id: barrecouleur pro 358 2008 04 28 09:41:14Z pinsard        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");
+a[275] = new Array("./ToBeReviewed/PLOTS/DIVERS/checkfield.html", "checkfield.pro", "", "       file_comments      categories      param TYPE  in required type string    A string of two characters specifying the type of plot we do      param N1  in required type integer    Number of elements in the first dimension      param N2  in required type integer    Number of elements in the second dimension      param NAME  in optional type string    It gives the name of the file to be opened  If NAME   does not contain the separating character of directories   under   unix for example  the file will be looked for in the current directory       returns      restrictions      examples      history      version    Id: checkfield pro 360 2008 06 06 13:43:54Z smasson       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          file_comments      categories      param TYPE  in required type string    A string of two characters specifying the type of plot we do      param SZ  in optional default defined by grille       param NX  in optional default defined by grille       param NY  in optional default defined by grille       param NZ      returns      restrictions      examples      history      version    Id: checkfield pro 360 2008 06 06 13:43:54Z smasson       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 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      categories      param TYPE  in required type string    A string of two characters specifying the type of plot we do      param SZ  in optional default defined by grille       param NX  in optional default defined by grille       param NY  in optional default defined by grille       param NZ      returns      restrictions      examples      history      version    Id: checkfield pro 360 2008 06 06 13:43:54Z smasson       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 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   Graphics      param FIELD  in required type field    It respect litchamp s criterions  See IDL xhelp litchamp       param PROCEDURE  in required       keyword TYPE      keyword NOQUESTION      keyword BOXZOOM  type vector    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 instead of T   depth  automatically activated if vargrid eq  W       keyword VECTEUR type vector    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 inconsequential          vecteur u:lec unsurface v:lec vnsurface  is also appropriated       keyword _EXTRA   Used to pass keywords      keyword DIREC      uses   common pro      history   Sebastien Masson  smasson lodyc jussieu fr                         08 02 2000      version    Id: checkfield pro 360 2008 06 06 13:43:54Z smasson        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    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    if vargrid eq  W  then wdepth   1   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 the 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");
 a[276] = new Array("./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html", "checktypeminmax.pro", "", "       file_comments      categories      param PROCEDURE      keyword TYPE      keyword MIN      keyword MAX      keyword XY      keyword XZ      keyword YZ      keyword XT      keyword YT      keyword ZT      keyword TT      keyword XX      keyword YY      keyword ZZ      keyword XINDEX      keyword YINDEX      keyword ENDPOINTS      keyword _EXTRA   Used to pass keywords      returns      uses   common pro      restrictions      examples      history   Sebastien Masson  smasson lodyc jussieu fr       version    Id: checktypeminmax pro 327 2007 12 13 16:22:35Z pinsard        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  AND type NE  t  DO BEGIN               type   xquestion What kind of plot do you want to do  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");
 a[277] = new Array("./ToBeReviewed/PLOTS/DIVERS/determineminmax.html", "determineminmax.pro", "", "       file_comments   Determine the min and the max of a mask array      categories   Plotting      param TAB  in required    The array whose we determine the min and the max      param MASK  in required    The mask array      keyword MININ  type scalar    If it is not defined  it takes the value of VRAIMIN      keyword MAXIN  type scalar    If it is not defined  it takes 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 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 327 2007 12 13 16:22:35Z pinsard        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 of the 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");
@@ -296,5 +296,5 @@
 a[294] = 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 type vector    Optional abscissa values  X must be a vector with a length   equal to the first dimension of U and V       param Y  in optional type vector    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  default 1 0    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 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 327 2007 12 13 16:22:35Z pinsard       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");
 a[295] = new Array("./ToBeReviewed/PLOTS/axe.html", "axe.pro", "", "       file_comments   Manage axes for the different drawings created by    plt  pltz and pltt      categories   Graphics      param COUPE  type string    It designate 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  type string    It separate the different constituents of the date  By default    it is a return to the line when 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 label_date for more information on  Z and  Y       keyword _EXTRA   Used to pass 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 327 2007 12 13 16:22:35Z pinsard       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 defined      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          CASE 1 OF   yearly base         ymin NE 0 AND tempsmax GT julday mmin  dmin  ymin   3  hmin  mnmin  smin :BEGIN   more than 3 years           CASE 1 OF           ymax ymin 1 GT 5000: BEGIN   freq   500    tminor   5   datfmt   fmtyr   end           ymax ymin 1 GT 2000: BEGIN   freq   200    tminor   4   datfmt   fmtyr   end           ymax ymin 1 GT 1000: BEGIN   freq   100    tminor   5   datfmt   fmtyr   end           ymax ymin 1 GT 500: BEGIN   freq   50    tminor   5   datfmt   fmtyr   end           ymax ymin 1 GT 200: BEGIN   freq   20    tminor   4   datfmt   fmtyr   end           ymax ymin 1 GT 100: BEGIN   freq   10    tminor   5   datfmt   fmtyr   end           ymax ymin 1 GT 50: BEGIN   freq   5    tminor   5   datfmt    M sep fmtyr   end           ymax ymin 1 GT 20: BEGIN   freq   4    tminor   4   datfmt    M sep fmtyr   end           ymax ymin 1 GT 10: BEGIN   freq   2    tminor   4   datfmt    M sep fmtyr   end           ELSE: BEGIN   freq   1    tminor   4   datfmt    M sep fmtyr   end           ENDCASE           nticks   ceil ymax ymin freq    2           yminf    floor ymin freq freq           ticknom   lonarr nticks            for y   0  nticks 1 do ticknom y    julday 1  1  yminf   y freq  _EXTRA   ex            ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax  nticks          END   monthly base         tempsmax GT julday mmin   3  dmin  ymin  hmin  mnmin  smin :BEGIN   more than 3 months           CASE 1 OF             tempsmax GT julday mmin   30  dmin  ymin  hmin  mnmin  smin :BEGIN   more than 30 months   ticks every 3 months             freq   3    tminor   3   END             tempsmax GT julday mmin   16  dmin  ymin  hmin  mnmin  smin :BEGIN   more than 16 months   ticks every 2 months             freq   2    tminor   2   END             else:BEGIN            monthly ticks             freq   1    tminor   6   END           ENDCASE           nticks   ceil mmax   12 ymax   ymin    mmin freq    2           mminf   1    floor mmin freq freq            ticknom   lonarr nticks            for m   0  nticks 1 do ticknom m    julday mminf   freq m  1  ymin  _EXTRA   ex            datfmt    M sep fmtyr           ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax  nticks          END   daily base         tempsmax GT julday mmin  dmin   3  ymin  hmin  mnmin  smin :BEGIN   more than 3 days           CASE 1 OF             tempsmax GT julday mmin  dmin   60  ymin  hmin  mnmin  smin :BEGIN   more than 60 days   ticks every 7 days             freq   7    tminor   2   END             tempsmax GT julday mmin  dmin   30  ymin  hmin  mnmin  smin :BEGIN   more than 30 days   ticks every 5 days             freq   5    tminor   5   END             tempsmax GT julday mmin  dmin   16  ymin  hmin  mnmin  smin :BEGIN   more than 16 days   ticks every 2 days             freq   2    tminor   2   END             ELSE:BEGIN     daily ticks             freq   1    tminor   2   END           ENDCASE           nticks   ceil tempsmax   tempsmin freq    2           dminf   1    floor dmin freq freq            ticknom   lonarr nticks            for d   0  nticks 1 do ticknom d    julday mmin  dminf   freq d  ymin  _EXTRA   ex            datfmt    D sep M            ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax  nticks          END   hourly base         tempsmax GT julday mmin  dmin  ymin  hmin   3  mnmin  smin :BEGIN   more than 3 hours           CASE 1 OF             tempsmax GT julday mmin  dmin  ymin  hmin   48  mnmin  smin :BEGIN   more than 48 hours   ticks every 6 hours             freq   6    tminor   3   datfmt    D sep H:00    END             tempsmax GT julday mmin  dmin  ymin  hmin   30  mnmin  smin :BEGIN   more than 30 hours   ticks every 4 hours             freq   4    tminor   2   datfmt    D sep H:00    END             tempsmax GT julday mmin  dmin  ymin  hmin   16  mnmin  smin :BEGIN   more than 16 hours   ticks every 2 hours             freq   2    tminor   2   datfmt    H:00    END             ELSE:BEGIN     ticks every hour             freq   1    tminor   2   datfmt    H:00    END           ENDCASE           nticks   ceil hmax   24 dmax   dmin    hmin freq    2           hminf    floor hmin freq freq           ticknom   dblarr nticks            for h   0  nticks 1 do ticknom h    julday mmin  dmin  ymin  hminf   freq h  0  0  _EXTRA   ex            ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax  nticks          END   minute base         tempsmax GT julday mmin  dmin  ymin  hmin  mnmin   3  smin :BEGIN   more than 3 minutes           CASE 1 OF             tempsmax GT julday mmin  dmin  ymin  hmin  mnmin   120  smin :BEGIN   more than 120 minutes   ticks every 10 minutes             freq   10    tminor   2   END             tempsmax GT julday mmin  dmin  ymin  hmin  mnmin   60  smin :BEGIN   more than 60 minutes   ticks every 6 minutes             freq   6    tminor   3   END             tempsmax GT julday mmin  dmin  ymin  hmin  mnmin   30  smin :BEGIN   more than 30 minutes   ticks every 4 minutes             freq   4    tminor   2   END             tempsmax GT julday mmin  dmin  ymin  hmin  mnmin   15  smin :BEGIN   more than 15 minutes   ticks every 2 minutes             freq   2    tminor   2   END             ELSE:BEGIN     ticks every minutes             freq   1    tminor   2   END           ENDCASE           nticks   ceil mnmax   60 hmax   hmin    mnmin freq    2           mnminf    floor mnmin freq freq           ticknom   dblarr nticks            for mn   0  nticks 1 do ticknom mn    julday mmin  dmin  ymin  hmin  mnminf   freq mn  0  _EXTRA   ex            ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax  nticks            datfmt    H: I          END   second base         ELSE:BEGIN   less than 3 minutes           CASE 1 OF             tempsmax GT julday mmin  dmin  ymin  hmin  mnmin  smin   120 :BEGIN   more than 120 seconds   ticks every 20 seconds             freq   20    tminor   2   datfmt    H: I: S    END             tempsmax GT julday mmin  dmin  ymin  hmin  mnmin  smin   60 :BEGIN   more than 60 seconds   ticks every 15 seconds             freq   15    tminor   3   datfmt    H: I: S    END             tempsmax GT julday mmin  dmin  ymin  hmin  mnmin  smin   30 :BEGIN   more than 30 seconds   ticks every 10 seconds             freq   10    tminor   2   datfmt    H: I: S    END             tempsmax GT julday mmin  dmin  ymin  hmin  mnmin  smin   15 :BEGIN   more than 15 seconds   ticks every 4 seconds             freq   4    tminor   4   datfmt    H: I: S    END             tempsmax GT julday mmin  dmin  ymin  hmin  mnmin  smin   7 :BEGIN   more than 7 seconds   ticks every 2 seconds             freq   2    tminor   2   datfmt    H: I: S    END             ELSE:BEGIN     ticks every minutes             freq   1    tminor   2   datfmt    H: I: S    END           ENDCASE           nticks   ceil smax   60 mnmax   mnmin    smin freq    2           sminf    floor smin freq freq           ticknom   dblarr nticks            for s   0  nticks 1 do ticknom s    julday mmin  dmin  ymin  hmin  mnmin  sminf   freq s  _EXTRA   ex            ticknom   ticknom where ticknom GE tempsmin AND ticknom LE tempsmax  nticks          END       ENDCASE       dummy   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        pltv :BEGIN         dtasize   tempsmin           x range    0 5  dtasize 0    0 5            y range    0 5  dtasize 1    0 5           if keyword_set reverse_x  then  x range reverse x range           if keyword_set reverse_y  then  y range reverse y range            x title    nx            y title    ny        END        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");
-a[296] = new Array("./ToBeReviewed/PLOTS/legende.html", "legende.pro", "", "       file_comments   Provide caption      categories   Graphics      param MI  in required    The min of the drawing      param MA  in required    The max of the plot      param COUPE  type string    Character 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 example E P in color and QSR in contours    It must be a field respecting same characteristics than the argument number one of plt       keyword ENDPOINTS   Used when we do vertical cuts in diagonal       keyword _EXTRA   Used to pass keywords      uses   common pro      restrictions   The use of the global variable language 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 327 2007 12 13 16:22:35Z pinsard       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");
+a[296] = new Array("./ToBeReviewed/PLOTS/legende.html", "legende.pro", "", "       file_comments   Provide caption      categories   Graphics      param MI  in required    The min of the drawing      param MA  in required    The max of the plot      param COUPE  type string    Character 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 example E P in color and QSR in contours    It must be a field respecting same characteristics than the argument number one of plt       keyword ENDPOINTS   Used when we do vertical cuts in diagonal       keyword _EXTRA   Used to pass keywords      uses   common pro      restrictions   The use of the global variable language 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 344 2008 04 15 11:05:43Z smasson       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     IF keyword_set TYPE_YZ  THEN BEGIN     vertz   type_yz     legniv      type_yz   ENDIF ELSE BEGIN      vertz   depthf2     legniv     m    ENDELSE      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   vertz     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   vertz       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   vertz        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");
 a[297] = new Array("./ToBeReviewed/PLOTS/plotsym.html", "plotsym.pro", "", "       file_comments   function to make plotting symbols much easier       categories   Graphics      keyword CIRCLE   circle symbol      keyword TRIANGLE   triangle symbol      keyword DIAMOND   diamond symbol      keyword BOX   box symbol      keyword LINE   line symbol      keyword SCALE   scales the symbol      keyword ANGLE   angle the symbol should be rotated      keyword _EXTRA   Used to pass keywords to 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 325 2007 12 06 10:04:53Z pinsard       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");
 a[298] = new Array("./ToBeReviewed/PLOTS/reinitplt.html", "reinitplt.pro", "", "       file_comments   This procedure will reinitialize all or a selection   of the system plot variables      categories   Utilities      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  reinitplt all invert  does nothing       uses   common pro      restrictions   The system 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 325 2007 12 06 10:04:53Z pinsard       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      ");
@@ -305,10 +305,10 @@
 a[303] = new Array("./ToBeReviewed/POSTSCRIPT/ps.html", "ps.pro", "", "");
 a[304] = new Array("./ToBeReviewed/STATISTICS/a_correlate2d.html", "a_correlate2d.pro", "", "       file_comments         categories   Statistics      param X  in required    An 2 dimension Array  nx ny       param LAG  in required    2 element vector  in the intervals  nx 2   nx 2 ny 2   ny 2    of type integer that specifies the absolute distance s  between    indexed elements of X       keyword ZERO2NAN      keyword DOUBLE   If set to a non zero value  computations are done in double precision arithmetic       history   28 2 2000 Sebastien Masson  smasson lodyc jussieu fr    Based on the A_CORRELATE procedure of IDL      version    Id: a_correlate2d pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION auto_cov2d  x  lag  DOUBLE double  ZERO2NAN zero2nan     compile_opt idl2  strictarrsubs      XDim   SIZE X   dimensions     nx   XDim 0     ny   XDim 1   Sample autocovariance function    Xmean   TOTAL X  Double   Double     1 nx ny       res   TOTAL   X 0:nx 1 lag 0  0:ny 1 lag 1    Xmean                       X lag 0 :nx 1  lag 1 :ny 1    Xmean                      Double   Double      if keyword_set zero2nan  AND res EQ 0 then res    values f_nan    RETURN  res  END        file_comments   This function computes the autocorrelation Px K L  or   autocovariance Rx K L  of a sample population X nx ny  as a   function of the lag  K L       categories   Statistics      param X  in required    An 2 dimension Array  nx ny       param LAG  in required    2 element vector  in the intervals  nx 2   nx 2 ny 2   ny 2    of type integer that specifies the absolute distance s  between    indexed elements of X       keyword COVARIANCE   If set to a non zero value  the sample autocovariance is computed       keyword DOUBLE   If set to a non zero value  computations are done in double precision arithmetic       history   28 2 2000 Sebastien Masson  smasson lodyc jussieu fr    Based on the A_CORRELATE procedure of IDL      version    Id: a_correlate2d pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION a_correlate2d  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     nx   XDim 0     ny   XDim 1     if XNDim NE 2 then       ras   report X array must contain 2 dimensions   Check length     if nx lt 2 then       ras   report first dimension of X array must contain 2 or more elements     if ny lt 2 then       ras   report second dimension of X array must contain 2 or more elements     if n_elements Lag  NE 2 THEN       ras   report Lag array must contain 2 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 KEYWORD_SET Covariance  eq 0 then begin  Compute Autocorrelation        Auto   Auto_Cov2d X  ABS Lag  Double   Double                Auto_Cov2d X   0L  0L  Double   Double   zero2nan     endif else begin              Compute Autocovariance        Auto   Auto_Cov2d X  ABS Lag  Double   Double    n_elements X      endelse     if Double eq 0 then RETURN  FLOAT Auto  else       RETURN  Auto  END");
-a[305] = new Array("./ToBeReviewed/STATISTICS/a_timecorrelate.html", "a_timecorrelate.pro", "", "       file_comments      categories   Statistics      param X  in required type array    An array which last dimension is the time dimension so   size n       param M      param NT      keyword ZERO2NAN      keyword NAN      keyword DOUBLE   If set to a non zero value  computations are done in   double precision arithmetic       hidden      version    Id: a_timecorrelate pro 335 2008 03 07 15:09:25Z smasson       FUNCTION timeauto_cov  x  m  nt  DOUBLE double  ZERO2NAN zero2nan  NAN    nan  Sample autocovariance function     compile_opt idl2  strictarrsubs     IF NAN AND M GE 1 THEN      STOP   Warning : lagged autocorrelation is not possible at the moment for time series with NaN      TimeDim   size X   n_dimensions    Xmean   NAN   TOTAL X  TimeDim  Double   Double   NAN    nan    TOTAL FINITE X  TimeDim  :      TOTAL X  TimeDim  Double   Double    nT                                                                                   one   double   1 0d : 1 0   Xmean   Xmean replicate one  nT   M     Time series with NaN : only for Lag   0   case TimeDim of      1:res   TOTAL X 0:nT   M   1L    Xmean     X M:nT   1L    Xmean                       TimeDim  Double   Double  NAN    nan       2:res   TOTAL X  0:nT   M   1L    Xmean                          X  M:nT   1L    Xmean                         TimeDim  Double   Double  NAN    nan       3:res   TOTAL X    0:nT   M   1L    Xmean                            X    M:nT   1L    Xmean                         TimeDim  Double   Double  NAN    nan       4:res   TOTAL X      0:nT   M   1L    Xmean                          X      M:nT   1L    Xmean                         TimeDim  Double   Double   NAN    nan    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        file_comments   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       categories   Statistics      param X  in required type array    An array which last dimension is the time dimension so   size n       param LAG  in required type scalar or vector    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 COVARIANCE   If set to a non zero value  the sample autocovariance   is computed       keyword NVAL   A named variable that  on exit  contains the number of valid   observations  not NAN       keyword DOUBLE   If set to a non zero value  computations are done in   double precision arithmetic       examples   Define an n element sample population    IDL  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   IDL  lag    3  0  1  3  4  8    IDL  result   a_correlate x  lag      The result should be:    0 0146185  1 00000  0 810879  0 0146185   0 325279   0 151684       history   24 2 2000 Sebastien Masson  smasson lodyc jussieu fr      Based on the A_CORRELATE procedure of IDL   INTRODUCTION TO STATISTICAL TIME SERIES   Wayne A  Fuller   ISBN 0 471 28715 6      version    Id: a_timecorrelate pro 335 2008 03 07 15:09:25Z smasson       FUNCTION a_timecorrelate  x  lag  COVARIANCE covariance  DOUBLE double  NVAL    nval     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     Keyword NAN activated if needed for TimeAuto_Cov function   Keyword NVAL not compulsory      NAN      WHERE FINITE X  EQ 0  0  NE  1     1 : 0  We can retrieve the matrix of real lenghts of time series       nTreal      WHERE FINITE X  EQ 0  0  NE  1      TOTAL FINITE X   XNDim  : nT      IF ARG_PRESENT NVAL  THEN nval   nTreal   Check length     IF  WHERE nTreal LE 1 0  NE  1 THEN       MESSAGE    Matrix of length of time series 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     type   SIZE X   TYPE     useDouble    N_ELEMENTS Double  eq 1    KEYWORD_SET Double  :  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     Type of outputs according to the type of data input     case XNDim of       1: Auto   useDouble   DBLARR nLag  : FLTARR nLag        2: Auto   useDouble   DBLARR XDim 0  nLag  : FLTARR XDim 0  nLag        3: Auto   useDouble   DBLARR XDim 0  XDim 1  nLag  : FLTARR XDim 0  XDim 1  nLag        4: Auto   useDouble   DBLARR XDim 0  XDim 1  XDim 2  nLag  : FLTARR XDim 0  XDim 1  XDim 2  nLag     endcase    Compute lagged autocorrelation or autocovariance  no NaN     FOR k   0  nLag 1 DO BEGIN       case XNDim of          1: BEGIN             Auto k    TimeAuto_Cov X  ABS Lag k  nT  Double   useDouble  NAN   nan                     KEYWORD_SET Covariance     nTreal : TimeAuto_Cov X  0L  nT  Double   useDouble    zero2nan  NAN   nan             END          2: BEGIN             Auto  k    TimeAuto_Cov X  ABS Lag k  nT  Double   useDouble  NAN   nan                     KEYWORD_SET Covariance     nTreal : TimeAuto_Cov X  0L  nT  Double   useDouble   zero2nan  NAN   nan                END          3: BEGIN             Auto    k    TimeAuto_Cov X  ABS Lag k  nT  Double   useDouble  NAN   nan                     KEYWORD_SET Covariance     nTreal : TimeAuto_Cov X  0L  nT  Double   useDouble   zero2nan  NAN   nan             END          4: BEGIN             Auto      k    TimeAuto_Cov X  ABS Lag k  nT  Double   useDouble  NAN   nan                     KEYWORD_SET Covariance     nTreal : TimeAuto_Cov X  0L  nT  Double   useDouble   zero2nan  NAN   nan             END       ENDCASE    ENDFOR     return  useDouble   Auto : FLOAT Auto   END");
+a[305] = new Array("./ToBeReviewed/STATISTICS/a_timecorrelate.html", "a_timecorrelate.pro", "", "       file_comments      categories   Statistics      param X  in required type array    An array which last dimension is the time dimension so   size n       param M      param NT      keyword ZERO2NAN      keyword NAN      keyword DOUBLE   If set to a non zero value  computations are done in   double precision arithmetic       hidden      version    Id: a_timecorrelate pro 342 2008 03 28 16:08:47Z smasson       FUNCTION timeauto_cov  x  m  nt  DOUBLE double  ZERO2NAN zero2nan  NAN    nan  Sample autocovariance function     compile_opt idl2  strictarrsubs     IF NAN AND M GE 1 THEN      STOP   Warning : lagged autocorrelation is not possible at the moment for time series with NaN      TimeDim   size X   n_dimensions    Xmean   NAN   TOTAL X  TimeDim  Double   Double   NAN    nan    TOTAL FINITE X  TimeDim  :      TOTAL X  TimeDim  Double   Double    nT                                                                                   one   double   1 0d : 1 0   Xmean   Xmean replicate one  nT   M     Time series with NaN : only for Lag   0   case TimeDim of      1:res   TOTAL X 0:nT   M   1L    Xmean     X M:nT   1L    Xmean                       TimeDim  Double   Double  NAN    nan       2:res   TOTAL X  0:nT   M   1L    Xmean                          X  M:nT   1L    Xmean                         TimeDim  Double   Double  NAN    nan       3:res   TOTAL X    0:nT   M   1L    Xmean                            X    M:nT   1L    Xmean                         TimeDim  Double   Double  NAN    nan       4:res   TOTAL X      0:nT   M   1L    Xmean                          X      M:nT   1L    Xmean                         TimeDim  Double   Double   NAN    nan    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        file_comments   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       categories   Statistics      param X  in required type array    An array which last dimension is the time dimension so   size n       param LAG  in required type scalar or vector    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 COVARIANCE   If set to a non zero value  the sample autocovariance   is computed       keyword NVAL   A named variable that  on exit  contains the number of valid   observations  not NAN       keyword DOUBLE   If set to a non zero value  computations are done in   double precision arithmetic       examples   Define an n element sample population    IDL  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   IDL  lag    3  0  1  3  4  8    IDL  result   a_correlate x  lag      The result should be:    0 0146185  1 00000  0 810879  0 0146185   0 325279   0 151684       history   24 2 2000 Sebastien Masson  smasson lodyc jussieu fr      Based on the A_CORRELATE procedure of IDL   INTRODUCTION TO STATISTICAL TIME SERIES   Wayne A  Fuller   ISBN 0 471 28715 6      version    Id: a_timecorrelate pro 342 2008 03 28 16:08:47Z smasson       FUNCTION a_timecorrelate  x  lag  COVARIANCE covariance  DOUBLE double  NVAL    nval     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     Keyword NAN activated if needed for TimeAuto_Cov function   Keyword NVAL not compulsory      NAN      WHERE FINITE X  EQ 0  0  NE  1     1 : 0  We can retrieve the matrix of real lenghts of time series       nTreal      WHERE FINITE X  EQ 0  0  NE  1      TOTAL FINITE X   XNDim  : nT      IF ARG_PRESENT NVAL  THEN nval   nTreal   Check length     IF  WHERE nTreal GT 1 0  EQ  1 THEN       MESSAGE    Matrix of length of time series 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     type   SIZE X   TYPE     useDouble    N_ELEMENTS Double  eq 1    KEYWORD_SET Double  :  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     Type of outputs according to the type of data input     case XNDim of       1: Auto   useDouble   DBLARR nLag  : FLTARR nLag        2: Auto   useDouble   DBLARR XDim 0  nLag  : FLTARR XDim 0  nLag        3: Auto   useDouble   DBLARR XDim 0  XDim 1  nLag  : FLTARR XDim 0  XDim 1  nLag        4: Auto   useDouble   DBLARR XDim 0  XDim 1  XDim 2  nLag  : FLTARR XDim 0  XDim 1  XDim 2  nLag     endcase    Compute lagged autocorrelation or autocovariance  no NaN     FOR k   0  nLag 1 DO BEGIN       case XNDim of          1: BEGIN             Auto k    TimeAuto_Cov X  ABS Lag k  nT  Double   useDouble  NAN   nan                     KEYWORD_SET Covariance     nTreal : TimeAuto_Cov X  0L  nT  Double   useDouble    zero2nan  NAN   nan             END          2: BEGIN             Auto  k    TimeAuto_Cov X  ABS Lag k  nT  Double   useDouble  NAN   nan                     KEYWORD_SET Covariance     nTreal : TimeAuto_Cov X  0L  nT  Double   useDouble   zero2nan  NAN   nan                END          3: BEGIN             Auto    k    TimeAuto_Cov X  ABS Lag k  nT  Double   useDouble  NAN   nan                     KEYWORD_SET Covariance     nTreal : TimeAuto_Cov X  0L  nT  Double   useDouble   zero2nan  NAN   nan             END          4: BEGIN             Auto      k    TimeAuto_Cov X  ABS Lag k  nT  Double   useDouble  NAN   nan                     KEYWORD_SET Covariance     nTreal : TimeAuto_Cov X  0L  nT  Double   useDouble   zero2nan  NAN   nan             END       ENDCASE    ENDFOR     return  useDouble   Auto : FLOAT Auto   END");
 a[306] = new Array("./ToBeReviewed/STATISTICS/c_timecorrelate.html", "c_timecorrelate.pro", "", "       file_comments      categories   Statistics      param XD      param YD      param M      param NT      param NDIM      keyword ZERO2NAN      keyword DOUBLE   If set to a non zero value  computations are done in   double precision arithmetic       examples      history      version    Id: c_timecorrelate pro 327 2007 12 13 16:22:35Z pinsard       FUNCTION timecross_cov  xd  yd  m  nt  ndim  DOUBLE double  ZERO2NAN zero2nan     compile_opt hidden    Sample cross covariance function     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          file_comments   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 multidimensional arrays  as a   function of the lag  L       categories   Statistics      param X  in required   type array    An array which last dimension is the time dimension of   size n  float or double       param Y  in required   type array    An array which last dimension is the time dimension of   size n  float or double       param LAG  in required type scalar or vector    A scalar or n elements vector  in the interval  n 2 n 2    of type integer that specifies the absolute distance s  between   indexed elements of X       keyword COVARIANCE   If set to a non zero value  the sample cross   covariance is computed       keyword DOUBLE   If set to a non zero value  computations are done in   double precision arithmetic       examples     Define two n elements sample populations    IDL  x    3 73  3 67  3 77  3 83  4 67  5 87  6 70  6 97  6 40  5 57    IDL  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   IDL  lag    5  0  1  5  6  7    IDL  result   c_timecorrelate x  y  lag      The result should be:    0 428246  0 914755  0 674547   0 405140   0 403100   0 339685       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           INTRODUCTION TO STATISTICAL TIME SERIES         Wayne A  Fuller         ISBN 0 471 28715 6      version    Id: c_timecorrelate pro 327 2007 12 13 16:22:35Z pinsard       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       ras   report X and Y arrays must have the same size and the same dimensions    Check length     if nt lt 2 then       ras   report 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");
 a[307] = new Array("./ToBeReviewed/STATISTICS/skewness_4d.html", "skewness_4d.pro", "", "       file_comments       categories   Statistics      param X  in required type array    An Array which last dimension is the time dimension so   size n       param NT      keyword DOUBLE   If set to a non zero value  computations are done in   double precision arithmetic       hidden      version    Id: skewness_4d pro 335 2008 03 07 15:09:25Z smasson       FUNCTION Skewness_Num  X  nT  Double   Double   NAN    nan   Compute the numerator of the skewness expression      compile_opt idl2  strictarrsubs       TimeDim   size X   n_dimensions    Xmean   NAN   TOTAL X  TimeDim  Double   Double   NAN    nan    TOTAL FINITE X  TimeDim  :      TOTAL X  TimeDim  Double   Double    nT       one   double   1 0d : 1 0   Xmean   Xmean replicate one  nT    res   TOTAL   X Xmean 3  TimeDim  Double   Double  NAN    nan     RETURN  res  END      file_comments   Same function as SKEWNESS but accept array  until 4   dimension  for input and perform  the skewness    along the time dimension which must be the last   one of the input array       categories   Statistics      param X  in required type array    An Array which last dimension is the time dimension so   size n       keyword DOUBLE   If set to a non zero value  computations are done in   double precision arithmetic       keyword NVAL   A named variable that  on exit  contains the number of valid   observations  not NAN       examples      history   May 2007 Michel Kolasinski  michel kolasinski locean ipsl upmc fr      Based on the  a_timecorrelate procedure of IDL   INTRODUCTION TO STATISTICAL TIME SERIES   Wayne A  Fuller   ISBN 0 471 28715 6      version    Id: skewness_4d pro 335 2008 03 07 15:09:25Z smasson        FUNCTION skewness_4d  X  DOUBLE   Double   NVAL    nval      compile_opt idl2  strictarrsubs     Compute the skewness from 1d to 4d vectors     ON_ERROR  2     XDim   SIZE X   dimensions     XNDim   SIZE X   n_dimensions     nT   XDim XNDim 1     Keyword NAN activated if needed   Keyword NVAL not compulsory      NAN      WHERE FINITE X  EQ 0  0  NE  1     1 : 0  We can retrieve the matrix of real lenghts of time series       nTreal      WHERE FINITE X  EQ 0  0  NE  1      TOTAL FINITE X   XNDim  : nT      IF ARG_PRESENT NVAL  THEN nval   nTreal    Check length     IF  WHERE nTreal LE 1 0  NE  1 THEN       MESSAGE    Matrix of length of time series 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     type   SIZE X   TYPE     useDouble    N_ELEMENTS Double  eq 1    KEYWORD_SET Double  :        type eq 5     Type of outputs according to the type of data input    case XNDim of       1: Skew   useDouble   DBLARR 1  : FLTARR 1        2: Skew   useDouble   DBLARR XDim 0  : FLTARR XDim 0        3: Skew   useDouble   DBLARR XDim 0  XDim 1  : FLTARR XDim 0  XDim 1        4: Skew   useDouble   DBLARR XDim 0  XDim 1  XDim 2  : FLTARR XDim 0  XDim 1  XDim 2     endcase   Compute standard deviation   nTreal might be a matrix    std   a_timecorrelate X  0   covariance     std   sqrt std     zero   where std EQ 0      if zero 0  NE  1 then STOP          Cannot compute skewness since there are zeros in the matrix of standard deviations      Problem with high masked values  x 3 makes NaN when x is high    Threshold put on the values of the tab    idx_std   WHERE  std GT 1 0e 10     X   X   1 0e 10    std   std   1 0e 10    Compute skewness    Skew   Skewness_Num X  nT  Double   useDouble  NAN   nan     nTreal std 3     IF idx_std 0  NE  1 THEN Skew idx_std    valmask     return  useDouble   Skew : FLOAT Skew   END ");
 a[308] = new Array("./ToBeReviewed/STRING/chkeywd.html", "chkeywd.pro", "", "       file_comments   In a string containing an order to execute with EXECUTE by example    We change the value of one of keywords    More generally  in a string  we look for the character chain:   keywdname      and we change the value of       categories   String  keywords      param STRINGIN  in required type string    it is a string      param KEYWDNAME  in required type string    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 Character 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 Character 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 327 2007 12 13 16:22:35Z pinsard       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");
 a[309] = 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 325 2007 12 06 10:04:53Z pinsard       FUNCTION delchr  old  c  HELP hlp     compile_opt idl2  strictarrsubs     if  n_params 0  lt 2  or keyword_set hlp  then begin   ras   report Delete all occurrences of a character from a text string        new   delchr old  char          old   original text string      in            char   character to delete      in            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");
-a[310] = 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 the 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 the file in the all  path directories  use find          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 327 2007 12 13 16:22:35Z pinsard       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 ras   report                Read a text file into a string array      s   getfile f        f   text file name       in        s   string array         out      Keywords:        ERROR err  error flag: 0 ok  1 file not opened          2 no lines in file         QUIET means give no error message        LINES n  Number of lines to read  def all          Much faster if number of lines is known          Automatic for IDL 5 6 or later  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 found              return   1           endif         ENDIF ELSE file   filein          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");
+a[310] = 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 the 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 the file in the all  path directories  use find          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 358 2008 04 28 09:41:14Z pinsard       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 ras   report                Read a text file into a string array      s   getfile f        f   text file name       in        s   string array         out      Keywords:        ERROR err  error flag: 0 ok  1 file not opened          2 no lines in file         QUIET means give no error message        LINES n  Number of lines to read  def all          Much faster if number of lines is known          Automatic for IDL 5 6 or later  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 found              return   1           endif         ENDIF ELSE file   filein          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");
 a[311] = new Array("./ToBeReviewed/STRING/getwrd.html", "getwrd.pro", "", "       file_comments   Return the n th word from a text string       categories   String      param TXTSTR  in required   type string or array of strings    text string to extract from    The first element is used if txt is an array       param NTH  in required   type integer   default 0    word number to get  first   0   def       param MTH  in optional   type integer    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");
 a[312] = 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 325 2007 12 06 10:04:53Z pinsard       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  Allow 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");
Index: /trunk/SRC/Documentation/xmldoc/savesaxo.sh
===================================================================
--- /trunk/SRC/Documentation/xmldoc/savesaxo.sh	(revision 362)
+++ /trunk/SRC/Documentation/xmldoc/savesaxo.sh	(revision 363)
@@ -110,5 +110,5 @@
 docompileall=0
 dohtml=0
-dowiki=1
+dowiki=0
 dooldtest=0
 doidlwavedoc=0
@@ -124,5 +124,5 @@
 doDTAidris=0
 dodocdownload=0
-dowikiupdate=1
+dowikiupdate=0
 #
 case $( whoami ) in
Index: /trunk/SRC/Interpolation/.idlwave_catalog
===================================================================
--- /trunk/SRC/Interpolation/.idlwave_catalog	(revision 362)
+++ /trunk/SRC/Interpolation/.idlwave_catalog	(revision 363)
@@ -16,6 +16,6 @@
    ("extrapolate" fun nil (lib "extrapolate.pro" nil "saxo") "Result = %s(zinput, maskinput, nb_iteration)" (nil ("_EXTRA") ("GE0") ("MAXVAL") ("MINVAL") ("X_PERIODIC")))
    ("extrapsmooth" fun nil (lib "extrapsmooth.pro" nil "saxo") "Result = %s(in, mskin)" (nil ("_EXTRA") ("GE0") ("MAXVAL") ("MINVAL") ("X_PERIODIC")))
-   ("call_interp2d" fun nil (lib "file_interp.pro" nil "saxo") "Result = %s(data, inlon, inlat, inmask, outlon, outlat)" (nil ("_EXTRA") ("ADDR") ("INIRR") ("METHOD") ("NAN_VALUE") ("SMOOTH") ("WEIG")))
-   ("file_interp" pro nil (lib "file_interp.pro" nil "saxo") "%s, filein, fileout, gridout" (nil ("_EXTRA") ("ADDR") ("GRIDIN") ("INADDSCL_BEFORE") ("ININVMASK") ("INMASKNAME") ("INMISSING_VALUE") ("INUSEASMASK") ("INXAXISNAME") ("INYAXISNAME") ("KEEP") ("MASKIN") ("MASKOUT") ("METHOD") ("NAN_VALUE") ("OUTADDSCL_BEFORE") ("OUTINVMASK") ("OUTMASKNAME") ("OUTMISSING_VALUE") ("OUTUSEASMASK") ("OUTXAXISNAME") ("OUTYAXISNAME") ("REMOVE") ("SET_XAXISNAME") ("SET_XDIMNAME") ("SET_YAXISNAME") ("SET_YDIMNAME") ("SMOOTH") ("WEIG")))
+   ("call_interp2d" fun nil (lib "file_interp.pro" nil "saxo") "Result = %s(data, inlon, inlat, inmask, outlon, outlat)" (nil ("_EXTRA") ("ADDR") ("INIRR") ("METHOD") ("MISSING_VALUE") ("SMOOTH") ("WEIG")))
+   ("file_interp" pro nil (lib "file_interp.pro" nil "saxo") "%s, filein, fileout, gridout" (nil ("_EXTRA") ("ADDR") ("GRIDIN") ("INADDSCL_BEFORE") ("ININVMASK") ("INMASKNAME") ("INMISSING_VALUE") ("INTESTOP") ("INUSEASMASK") ("INXAXISNAME") ("INYAXISNAME") ("KEEP") ("MASKIN") ("MASKOUT") ("METHOD") ("MISSING_VALUE") ("OUTADDSCL_BEFORE") ("OUTINVMASK") ("OUTMASKNAME") ("OUTMISSING_VALUE") ("OUTTESTOP") ("OUTUSEASMASK") ("OUTXAXISNAME") ("OUTYAXISNAME") ("REMOVE") ("SET_XAXISNAME") ("SET_XDIMNAME") ("SET_YAXISNAME") ("SET_YDIMNAME") ("SMOOTH") ("WEIG")))
    ("fromirr" fun nil (lib "fromirr.pro" nil "saxo") "Result = %s(method, datain, lonin, latin, mskin, lonout, latout, mskout)" (nil ("_EXTRA") ("ADDR") ("WEIG")))
    ("fromreg" fun nil (lib "fromreg.pro" nil "saxo") "Result = %s(method, datain, lonin, latin, lonout, latout)" (nil ("_EXTRA") ("ADDR") ("NONORTHERNLINE") ("NOSOUTHERNLINE") ("WEIG")))
Index: /trunk/SRC/ReadWrite/.idlwave_catalog
===================================================================
--- /trunk/SRC/ReadWrite/.idlwave_catalog	(revision 362)
+++ /trunk/SRC/ReadWrite/.idlwave_catalog	(revision 363)
@@ -8,5 +8,5 @@
  '(("ncdf_getatt" pro nil (lib "ncdf_getatt.pro" nil "saxo") "%s, fileid, varid" (nil ("_extra") ("ADD_OFFSET") ("CALENDAR") ("DOUBLE") ("LONG_NAME") ("MISSING_VALUE") ("SCALE_FACTOR") ("STANDARD_NAME") ("UNITS")))
    ("ncdf_getaxis" pro nil (lib "ncdf_getaxis.pro" nil "saxo") "%s, fileid, dimidx, dimidy, xaxis, yaxis" (nil ("_EXTRA") ("ROMSGRID") ("START1") ("XAXISNAME") ("XDIMNAME") ("XYINDEX") ("YAXISNAME") ("YDIMNAME")))
-   ("ncdf_getmask" fun nil (lib "ncdf_getmask.pro" nil "saxo") "Result = %s(fileid)" (nil ("_EXTRA") ("ADDSCL_BEFORE") ("INVMASK") ("MASKNAME") ("MISSING_VALUE") ("USEASMASK")))
+   ("ncdf_getmask" fun nil (lib "ncdf_getmask.pro" nil "saxo") "Result = %s(fileid)" (nil ("_EXTRA") ("ADDSCL_BEFORE") ("INVMASK") ("MASKNAME") ("MISSING_VALUE") ("TESTOP") ("USEASMASK")))
    ("ncdf_gettime" fun nil (lib "ncdf_gettime.pro" nil "saxo") "Result = %s(filename, cdfid)" (nil ("_EXTRA") ("CALLER") ("ERR") ("TIMEVAR")))
    ("read_grads" fun nil (lib "read_grads.pro" nil "saxo") "Result = %s(var, date1, date2)" (nil ("_EXTRA") ("BOX") ("EVERYTHING") ("FILENAME") ("NOSTRUCT") ("TIMESTEP")))
Index: /trunk/SRC/ToBeReviewed/PLOTS/DIVERS/.idlwave_catalog
===================================================================
--- /trunk/SRC/ToBeReviewed/PLOTS/DIVERS/.idlwave_catalog	(revision 362)
+++ /trunk/SRC/ToBeReviewed/PLOTS/DIVERS/.idlwave_catalog	(revision 363)
@@ -9,5 +9,5 @@
    ("autoscale" pro nil (lib "autoscale.pro" nil "saxo") "%s, min, max, ci" (nil))
    ("axis4pltz" pro nil (lib "axis4pltz.pro" nil "saxo") "%s, type, mask, glam, gphi, z" (nil ("_EXTRA") ("PROFMAX") ("PROFMIN") ("SIN") ("XXAXIS") ("ZOOM") ("ZRATIO") ("ZZAXIS")))
-   ("barrecouleur" pro nil (lib "barrecouleur.pro" nil "saxo") "%s, colnumb, clbinf, clbsup, clbdiv" (nil ("_EXTRA") ("CB_SUBTITLE") ("CB_TITLE") ("COLOR_c") ("divisions") ("MAX") ("MIN") ("NOCOLORBAR") ("NOFILL") ("POST")))
+   ("barrecouleur" pro nil (lib "barrecouleur.pro" nil "saxo") "%s, colnumb, clbinf, clbsup, clbdiv" (nil ("_EXTRA") ("CB_SUBTITLE") ("CB_TITLE") ("COLOR_c") ("DIVISIONS") ("MAX") ("MIN") ("NOCOLORBAR") ("NOFILL") ("POST")))
    ("err_1d" fun nil (lib "checkfield.pro" nil "saxo") "Result = %s(type, n1, name, n2)" (nil))
    ("err_2d" fun nil (lib "checkfield.pro" nil "saxo") "Result = %s(type, sz, nx, ny, nz)" (nil))
Index: /trunk/SRC/ToBeReviewed/STRING/.idlwave_catalog
===================================================================
--- /trunk/SRC/ToBeReviewed/STRING/.idlwave_catalog	(revision 362)
+++ /trunk/SRC/ToBeReviewed/STRING/.idlwave_catalog	(revision 363)
@@ -8,5 +8,5 @@
  '(("chkeywd" fun nil (lib "chkeywd.pro" nil "saxo") "Result = %s(stringin, keywdname, keywdvalue)" (nil ("AFTER") ("SEPARATOR")))
    ("delchr" fun nil (lib "delchr.pro" nil "saxo") "Result = %s(old, c)" (nil ("HELP")))
-   ("getfile" fun nil (lib "getfile.pro" nil "saxo") "Result = %s(filein)" (nil ("error") ("FIND") ("HELP") ("LINES") ("QUIET")))
+   ("getfile" fun nil (lib "getfile.pro" nil "saxo") "Result = %s(filein)" (nil ("ERROR") ("FIND") ("HELP") ("LINES") ("QUIET")))
    ("getwrd" fun nil (lib "getwrd.pro" nil "saxo") "Result = %s(txtstr, nth, mth)" (nil ("DELIMITER") ("HELP") ("LAST") ("LOCATION") ("NOTRIM") ("NWORDS")))
    ("isnumber" fun nil (lib "isnumber.pro" nil "saxo") "Result = %s(txt0, x)" (nil ("HELP")))
