- Timestamp:
- 06/12/06 10:29:56 (18 years ago)
- Location:
- trunk/SRC
- Files:
-
- 54 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SRC/Documentation/idldoc_html_output/Interpolation/angle.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> north stereographic polar projection 90 91 Compute angles between grid lines and direction of the North 92 (fom angle.F,v 2.2 in OPA8.2) 93 </div> 90 94 91 95 … … 102 106 103 107 <dt><p><a href="#_fsnspp"><span class="result">result = </span>fsnspp(<span class="result">plam, pphi</span>, DOUBLE=<span class="result">DOUBLE</span>)</a></p><dt> 104 <dd> NAME:angle.</dd>108 <dd></dd> 105 109 106 110 <dt><p><a href="#_angle">angle<span class="result">, fileocemesh, gcosu, gsinu, gcosv, gsinv, gcost, gsint</span>, IODIRECTORY=<span class="result">IODIRECTORY</span>, DOUBLE=<span class="result">DOUBLE</span></a></p><dt> … … 121 125 <span class="result">result = </span>fsnspp(<span class="result"><a href="#_fsnspp_param_plam">plam</a>, <a href="#_fsnspp_param_pphi">pphi</a></span>, <a href="#_fsnspp_keyword_DOUBLE">DOUBLE</a>=<span class="result">DOUBLE</span>)</p> 122 126 123 <div class="comments"> 124 NAME:angle.pro (fom angle.F,v 2.2 in OPA8.2) 125 126 PURPOSE:Compute angles between grid lines and direction of the North 127 128 CALLING SEQUENCE: 129 angle, fileocemesh, gcosu, gsinu, gcosv, gsinv, gcost, gsint 130 131 INPUTS: 132 fileocemesh a netcdf file that contains (at least): 133 glamu, gphiu: longitudes and latitudes at U-points 134 glamv, gphiv: longitudes and latitudes at V-points 135 glamf, gphif: longitudes and latitudes at F-points 136 137 KEYWORD PARAMETERS: 138 139 IODIRECTORY: the directory path where is located fileocemesh 140 141 /DOUBLE: use double precision (default is float) 142 143 OUTPUTS: 127 <div class="comments"></div> 128 129 <h3>Return value</h3><div class="value"> 144 130 gsinu,gcosu : sinus and cosinus of the angle 145 131 gsinv,gcosv between north-south direction 146 132 gsint,gcost and the j-direction of the mesh 147 148 149 RESTRICTIONS: to compute the lateral boundary conditions, we assume 133 </div> 134 135 136 <h3>Parameters</h3> 137 138 139 <h4 id="_fsnspp_param_plam">plam 140 141 142 143 144 145 146 147 148 </h4> 149 150 <div class="comments"></div> 151 152 <h4 id="_fsnspp_param_pphi">pphi 153 154 155 156 157 158 159 160 161 </h4> 162 163 <div class="comments"></div> 164 165 166 167 168 169 170 <h3>Keywords</h3> 171 172 <h4 id="_fsnspp_keyword_DOUBLE">DOUBLE 173 174 175 176 177 178 179 180 181 </h4> 182 183 <div class="comments"> use double precision (default is float) 184 </div> 185 186 187 188 189 <h3>Version history</h3> 190 191 192 <h4>History</h4><div class="value"> 193 -------------- 194 Original : 96-07 (O. Marti) 195 98-06 (G. Madec) 196 Feb 2005: IDL adaptation S. Masson </div> 197 198 199 <h3>Known issues</h3> 200 201 202 203 <h4>Restrictions</h4><div class="value"> to compute the lateral boundary conditions, we assume 150 204 that: 151 205 (1) the first line is similar to the second line … … 157 211 => gsinv[0, *] = gsinv[jpj-2, *] 158 212 159 160 MODIFICATION HISTORY: 161 -------------- 162 Original : 96-07 (O. Marti) 163 98-06 (G. Madec) 164 Feb 2005: IDL adaptation S. Masson </div> 165 166 167 168 169 <h3>Parameters</h3> 170 171 172 <h4 id="_fsnspp_param_plam">plam 173 174 175 176 177 178 179 180 181 </h4> 182 183 <div class="comments"></div> 184 185 <h4 id="_fsnspp_param_pphi">pphi 186 187 188 189 190 191 192 193 194 </h4> 195 196 <div class="comments"></div> 197 198 199 200 201 202 203 <h3>Keywords</h3> 204 205 <h4 id="_fsnspp_keyword_DOUBLE">DOUBLE 206 207 208 209 210 211 212 213 214 </h4> 215 216 <div class="comments"></div> 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 213 </div> 232 214 233 215 … … 260 242 261 243 <h4 id="_angle_param_fileocemesh">fileocemesh 262 263 264 265 266 267 268 269 270 </h4> 271 272 <div class="comments"></div> 244 <span class="attr">in</span> 245 246 247 <span class="attr">required</span> 248 249 250 251 252 </h4> 253 254 <div class="comments"> a netcdf file that contains (at least): 255 glamu, gphiu: longitudes and latitudes at U-points 256 glamv, gphiv: longitudes and latitudes at V-points 257 glamf, gphif: longitudes and latitudes at F-points 258 </div> 273 259 274 260 <h4 id="_angle_param_gcosu">gcosu … … 368 354 </h4> 369 355 370 <div class="comments"> </div>356 <div class="comments"> the directory path where is located fileocemesh</div> 371 357 372 358 <h4 id="_angle_keyword_DOUBLE">DOUBLE … … 381 367 </h4> 382 368 383 <div class="comments"> </div>369 <div class="comments"> use double precision (default is float)</div> 384 370 385 371 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/clickincell.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> click on a map and find in which cell the click was 90 </div> 90 91 91 92 … … 102 103 <div class="routine_details" id="_clickincell"> 103 104 104 <h2><a class="top" href="#container">top</a>clickincell </h2> 105 <h2><a class="top" href="#container">top</a>clickincell <span class="categories"> finding where is a point on a grid 106 </span></h2> 105 107 106 108 <p class="header"> 107 109 <span class="result">result = </span>clickincell(<a href="#_clickincell_keyword_CELLTYPE">CELLTYPE</a>=<span class="result">CELLTYPE</span>, <a href="#_clickincell_keyword_DRAWCELL">DRAWCELL</a>=<span class="result">DRAWCELL</span>, <a href="#_clickincell_keyword_COLOR">COLOR</a>=<span class="result">COLOR</span>, <a href="#_clickincell_keyword_ORIGINAL">ORIGINAL</a>=<span class="result">ORIGINAL</span>, <a href="#_clickincell_keyword_IJ">IJ</a>=<span class="result">IJ</span>, <a href="#_clickincell_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span>)</p> 108 110 109 <div class="comments"> 110 NAME:clickincell 111 112 PURPOSE: click on a map and find in which cell the click was 113 114 CATEGORY:finding where is a point on a grid 115 116 CALLING SEQUENCE: 111 <div class="comments"></div> 112 113 <h3>Return value</h3><div class="value"> 114 the index of the selected cells regarding to the grid which 115 is in memory in the variable of the common. If /ij keyword is 116 activated give 2D array (2, n) which are the i,j position of the 117 n selected cells. 118 </div> 119 120 121 122 123 124 <h3>Keywords</h3> 125 126 <h4 id="_clickincell_keyword_CELLTYPE">CELLTYPE 127 128 129 130 131 132 133 134 135 </h4> 136 137 <div class="comments"> = 'T', 'W', 'U', 'V' or 'F' This this the type of point 138 that is located in the center of the cell which the click is 139 located. default is T type of cell (with corner defined by F 140 points). 141 </div> 142 143 <h4 id="_clickincell_keyword_DRAWCELL">DRAWCELL 144 145 146 147 148 149 150 151 152 </h4> 153 154 <div class="comments"> to draw the cell in which we clicked 155 </div> 156 157 <h4 id="_clickincell_keyword_COLOR">COLOR 158 159 160 161 162 163 164 165 166 </h4> 167 168 <div class="comments"> the color used to draw the cells (Clicking one more 169 time in the same cell will draw the cell with the white color) 170 </div> 171 172 <h4 id="_clickincell_keyword_ORIGINAL">ORIGINAL 173 174 175 176 177 178 179 180 181 </h4> 182 183 <div class="comments"> to get the position of the cell regarding the original 184 grid (with no key_shift, ixminmesh, iyminmesh...) 185 </div> 186 187 <h4 id="_clickincell_keyword_IJ">IJ 188 189 190 191 192 193 194 195 196 </h4> 197 198 <div class="comments"> see outpus 199 </div> 200 201 <h4 id="_clickincell_keyword__EXTRA">_EXTRA 202 203 204 205 206 207 208 209 210 </h4> 211 212 <div class="comments"> to pass extra keywords to inquad and plot (when /drawcell) 213 </div> 214 215 216 217 <h3>Examples</h3><div class="value"> 117 218 118 219 res = clickincell() … … 121 222 Click on the right button to quit. 122 223 123 INPUTS:None 124 125 KEYWORD PARAMETERS: 126 127 CELLTYPE = 'T', 'W', 'U', 'V' or 'F': This this the type of point 128 that is located in the center of the cell which the click is 129 located. default is T type of cell (with corner defined by F 130 points). 131 132 /DRAWCELL: to draw the cell in which we clicked 133 134 COLOR = the color used to draw the cells (Clicking one more 135 time in the same cell will draw the cell with the white color) 136 137 /ORIGINAL: to get the position of the cell regarding the original 138 grid (with no key_shift, ixminmesh, iyminmesh...) 139 140 /IJ: see outpus 141 142 _EXTRA: to pass extra keywords to inquad and plot (when /drawcell) 143 144 OUTPUTS: 145 the the index of the selected cells regarding to the grid which 146 is in memory in the variable of the common. If /ij keyword is 147 activated give 2D array (2, n) which are the i,j position of the 148 n selected cells. 149 150 COMMON BLOCKS:common.pro 151 152 SIDE EFFECTS: 153 154 RESTRICTIONS: 155 156 EXAMPLE: 224 157 225 158 226 IDL> plt, findgen(jpi,jpj),/nodata,map=[90,0,0],/ortho 159 227 IDL> print, clickincell(/draw,color=150,/xy) 160 161 MODIFICATION HISTORY:</div> 162 163 164 165 166 167 168 169 <h3>Keywords</h3> 170 171 <h4 id="_clickincell_keyword_CELLTYPE">CELLTYPE 172 173 174 175 176 177 178 179 180 </h4> 181 182 <div class="comments"></div> 183 184 <h4 id="_clickincell_keyword_DRAWCELL">DRAWCELL 185 186 187 188 189 190 191 192 193 </h4> 194 195 <div class="comments"></div> 196 197 <h4 id="_clickincell_keyword_COLOR">COLOR 198 199 200 201 202 203 204 205 206 </h4> 207 208 <div class="comments"></div> 209 210 <h4 id="_clickincell_keyword_ORIGINAL">ORIGINAL 211 212 213 214 215 216 217 218 219 </h4> 220 221 <div class="comments"></div> 222 223 <h4 id="_clickincell_keyword_IJ">IJ 224 225 226 227 228 229 230 231 232 </h4> 233 234 <div class="comments"></div> 235 236 <h4 id="_clickincell_keyword__EXTRA">_EXTRA 237 238 239 240 241 242 243 244 245 </h4> 246 247 <div class="comments"></div> 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 228 </div> 229 <h3>Version history</h3> 230 231 232 <h4>History</h4><div class="value"> 233 Sebastien Masson (smasson@lodyc.jussieu.fr) 234 August 2003 235 </div> 236 237 238 239 240 241 242 243 244 <h3>Other attributes</h3> 245 246 247 <h4>Uses routines</h4><div class="value"> common.pro 248 </div> 268 249 269 250 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/compute_fromreg_bilinear_weigaddr.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> compute the weight and address neede to interpolate data from a 90 "regular grid" to any grid using the bilinear method 91 </div> 90 92 91 93 … … 102 104 <div class="routine_details" id="_compute_fromreg_bilinear_weigaddr"> 103 105 104 <h2><a class="top" href="#container">top</a>compute_fromreg_bilinear_weigaddr </h2> 106 <h2><a class="top" href="#container">top</a>compute_fromreg_bilinear_weigaddr <span class="categories"> interpolation 107 </span></h2> 105 108 106 109 <p class="header"> 107 110 compute_fromreg_bilinear_weigaddr<span class="result">, <a href="#_compute_fromreg_bilinear_weigaddr_param_alonin">alonin</a>, <a href="#_compute_fromreg_bilinear_weigaddr_param_alatin">alatin</a>, <a href="#_compute_fromreg_bilinear_weigaddr_param_olonin">olonin</a>, <a href="#_compute_fromreg_bilinear_weigaddr_param_olat">olat</a>, <a href="#_compute_fromreg_bilinear_weigaddr_param_weig">weig</a>, <a href="#_compute_fromreg_bilinear_weigaddr_param_addr">addr</a></span>, <a href="#_compute_fromreg_bilinear_weigaddr_keyword_NONORTHERNLINE">NONORTHERNLINE</a>=<span class="result">NONORTHERNLINE</span>, <a href="#_compute_fromreg_bilinear_weigaddr_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE</a>=<span class="result">NOSOUTHERNLINE</span></p> 108 111 109 <div class="comments"> 110 NAME: compute_fromreg_bilinear_weigaddr 111 112 PURPOSE: compute the weight and address neede to interpolate data from a 113 "regular grid" to any grid using the bilinear method 114 115 CATEGORY:interpolation 116 117 CALLING SEQUENCE: 118 compute_fromreg_bilinear_weigaddr, alon, alat, olon, olat, weig, addr 119 120 INPUTS: 121 lonin and latin: longitude/latitude of the input data 122 lonout and latout: longitude/latitude of the output data 123 124 KEYWORD PARAMETERS: 125 126 /NONORTHERNLINE and /NOSOUTHERNLINE: activate if you don't whant to take into 127 account the northen/southern line of the input data when perfoming the 128 interpolation. 129 130 OUTPUTS: 112 <div class="comments"></div> 113 114 <h3>Return value</h3><div class="value"> 131 115 weig, addr: 2D arrays, weig and addr are the weight and addresses used to 132 116 perform the interpolation: 133 117 dataout = total(weig*datain[addr], 1) 134 118 dataout = reform(dataout, jpio, jpjo, /over) 135 136 COMMON BLOCKS: none 137 138 SIDE EFFECTS: ? 139 140 RESTRICTIONS: 119 </div> 120 121 122 <h3>Parameters</h3> 123 124 125 <h4 id="_compute_fromreg_bilinear_weigaddr_param_alonin">alonin 126 <span class="attr">in</span> 127 128 129 <span class="attr">required</span> 130 131 132 133 134 </h4> 135 136 <div class="comments"> longitudeof the input data </div> 137 138 <h4 id="_compute_fromreg_bilinear_weigaddr_param_alatin">alatin 139 <span class="attr">in</span> 140 141 142 <span class="attr">required</span> 143 144 145 146 147 </h4> 148 149 <div class="comments"> latitude of the input data </div> 150 151 <h4 id="_compute_fromreg_bilinear_weigaddr_param_olonin">olonin 152 <span class="attr">in</span> 153 154 155 <span class="attr">required</span> 156 157 158 159 160 </h4> 161 162 <div class="comments"> longitude of the output data </div> 163 164 <h4 id="_compute_fromreg_bilinear_weigaddr_param_olat">olat 165 <span class="attr">in</span> 166 167 168 <span class="attr">required</span> 169 170 171 172 173 </h4> 174 175 <div class="comments"> latitude of the output data 176 </div> 177 178 <h4 id="_compute_fromreg_bilinear_weigaddr_param_weig">weig 179 180 181 182 183 184 185 186 187 </h4> 188 189 <div class="comments"></div> 190 191 <h4 id="_compute_fromreg_bilinear_weigaddr_param_addr">addr 192 193 194 195 196 197 198 199 200 </h4> 201 202 <div class="comments"></div> 203 204 205 206 207 208 209 <h3>Keywords</h3> 210 211 <h4 id="_compute_fromreg_bilinear_weigaddr_keyword_NONORTHERNLINE">NONORTHERNLINE 212 213 214 215 216 217 218 219 220 </h4> 221 222 <div class="comments"> activate if you don't whant to take into 223 account the northen line of the input data when perfoming the</div> 224 225 <h4 id="_compute_fromreg_bilinear_weigaddr_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE 226 227 228 229 230 231 232 233 234 </h4> 235 236 <div class="comments"> activate if you don't whant to take into 237 account the southern line of the input data when perfoming the 238 interpolation. 239 </div> 240 241 242 243 244 <h3>Version history</h3> 245 246 247 <h4>History</h4><div class="value"></div> 248 249 250 <h3>Known issues</h3> 251 252 253 254 <h4>Restrictions</h4><div class="value"> 141 255 - the input grid must be a "regular grid", defined as a grid for which each 142 256 lontitudes lines have the same latitude and each latitudes columns have the … … 146 260 - points located out of the southern and northern boundaries are interpolated 147 261 using a linear interpolation only along the longitudinal direction. 148 149 EXAMPLE: 150 151 MODIFICATION HISTORY:</div> 152 153 154 155 156 <h3>Parameters</h3> 157 158 159 <h4 id="_compute_fromreg_bilinear_weigaddr_param_alonin">alonin 160 161 162 163 164 165 166 167 168 </h4> 169 170 <div class="comments"></div> 171 172 <h4 id="_compute_fromreg_bilinear_weigaddr_param_alatin">alatin 173 174 175 176 177 178 179 180 181 </h4> 182 183 <div class="comments"></div> 184 185 <h4 id="_compute_fromreg_bilinear_weigaddr_param_olonin">olonin 186 187 188 189 190 191 192 193 194 </h4> 195 196 <div class="comments"></div> 197 198 <h4 id="_compute_fromreg_bilinear_weigaddr_param_olat">olat 199 200 201 202 203 204 205 206 207 </h4> 208 209 <div class="comments"></div> 210 211 <h4 id="_compute_fromreg_bilinear_weigaddr_param_weig">weig 212 213 214 215 216 217 218 219 220 </h4> 221 222 <div class="comments"></div> 223 224 <h4 id="_compute_fromreg_bilinear_weigaddr_param_addr">addr 225 226 227 228 229 230 231 232 233 </h4> 234 235 <div class="comments"></div> 236 237 238 239 240 241 242 <h3>Keywords</h3> 243 244 <h4 id="_compute_fromreg_bilinear_weigaddr_keyword_NONORTHERNLINE">NONORTHERNLINE 245 246 247 248 249 250 251 252 253 </h4> 254 255 <div class="comments"></div> 256 257 <h4 id="_compute_fromreg_bilinear_weigaddr_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE 258 259 260 261 262 263 264 265 266 </h4> 267 268 <div class="comments"></div> 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 262 </div> 284 263 285 264 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/compute_fromreg_imoms3_weigaddr.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> compute the weight and address neede to interpolate data from a 90 "regular grid" to any grid using the imoms3 method 91 </div> 90 92 91 93 … … 102 104 <div class="routine_details" id="_compute_fromreg_imoms3_weigaddr"> 103 105 104 <h2><a class="top" href="#container">top</a>compute_fromreg_imoms3_weigaddr < /h2>106 <h2><a class="top" href="#container">top</a>compute_fromreg_imoms3_weigaddr <span class="categories"> interpolation</span></h2> 105 107 106 108 <p class="header"> 107 compute_fromreg_imoms3_weigaddr<span class="result">, <a href="#_compute_fromreg_imoms3_weigaddr_param_alonin">alonin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_alatin">alatin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_olonin">olonin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_olat">olat</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_weig">weig</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_addr ">addr</a></span>, <a href="#_compute_fromreg_imoms3_weigaddr_keyword_NONORTHERNLINE">NONORTHERNLINE</a>=<span class="result">NONORTHERNLINE</span>, <a href="#_compute_fromreg_imoms3_weigaddr_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE</a>=<span class="result">NOSOUTHERNLINE</span></p>109 compute_fromreg_imoms3_weigaddr<span class="result">, <a href="#_compute_fromreg_imoms3_weigaddr_param_alonin">alonin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_alatin">alatin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_olonin">olonin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_olat">olat</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_weig">weig</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_addr PRO compute_fromreg_imoms3_weigaddr">addr PRO compute_fromreg_imoms3_weigaddr</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_alonin">alonin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_alatin">alatin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_olonin">olonin</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_olat">olat</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_weig">weig</a>, <a href="#_compute_fromreg_imoms3_weigaddr_param_addr">addr</a></span>, <a href="#_compute_fromreg_imoms3_weigaddr_keyword_NONORTHERNLINE">NONORTHERNLINE</a>=<span class="result">NONORTHERNLINE</span>, <a href="#_compute_fromreg_imoms3_weigaddr_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE</a>=<span class="result">NOSOUTHERNLINE</span></p> 108 110 109 111 <div class="comments"> 110 NAME: compute_fromreg_imoms3_weigaddr 111 112 PURPOSE: compute the weight and address neede to interpolate data from a 113 "regular grid" to any grid using the imoms3 method 114 115 CATEGORY:interpolation 116 117 CALLING SEQUENCE: 118 compute_fromreg_imoms3_weigaddr, alon, alat, olon, olat, weig, addr 119 120 INPUTS: 121 lonin and latin: longitude/latitude of the input data 122 lonout and latout: longitude/latitude of the output data 123 124 KEYWORD PARAMETERS: 125 126 /NONORTHERNLINE and /NOSOUTHERNLINE: activate if you don't whant to take into 127 account the northen/southern line of the input data when perfoming the 128 interpolation. 129 130 OUTPUTS: 131 weig, addr: 2D arrays, weig and addr are the weight and addresses used to 132 perform the interpolation: 133 dataout = total(weig*datain[addr], 1) 134 dataout = reform(dataout, jpio, jpjo, /over) 135 136 COMMON BLOCKS: none 137 138 SIDE EFFECTS: ? 139 140 RESTRICTIONS: 141 - the input grid must be a "regular/rectangular grid", defined as a grid for 142 which each lontitudes lines have the same latitude and each latitudes columns 143 have the same longitude. 144 - We supposed the data are located on a sphere, with a periodicity along 145 the longitude. 146 - points located between the first/last 2 lines are interpolated 147 using a imoms3 interpolation along the longitudinal direction and linear 148 interpolation along the latitudinal direction 149 - points located out of the southern and northern boundaries are interpolated 150 using a imoms3 interpolation only along the longitudinal direction. 151 152 EXAMPLE: 153 154 MODIFICATION HISTORY:</div> 112 </div> 155 113 156 114 … … 159 117 <h3>Parameters</h3> 160 118 119 120 <h4 id="_compute_fromreg_imoms3_weigaddr_param_alonin">alonin 121 122 123 124 125 126 127 128 129 </h4> 130 131 <div class="comments"></div> 132 133 <h4 id="_compute_fromreg_imoms3_weigaddr_param_alatin">alatin 134 135 136 137 138 139 140 141 142 </h4> 143 144 <div class="comments"></div> 145 146 <h4 id="_compute_fromreg_imoms3_weigaddr_param_olonin">olonin 147 148 149 150 151 152 153 154 155 </h4> 156 157 <div class="comments"></div> 158 159 <h4 id="_compute_fromreg_imoms3_weigaddr_param_olat">olat 160 161 162 163 164 165 166 167 168 </h4> 169 170 <div class="comments"></div> 171 172 <h4 id="_compute_fromreg_imoms3_weigaddr_param_weig">weig 173 174 175 176 177 178 179 180 181 </h4> 182 183 <div class="comments"></div> 184 185 <h4 id="_compute_fromreg_imoms3_weigaddr_param_addr PRO compute_fromreg_imoms3_weigaddr">addr PRO compute_fromreg_imoms3_weigaddr 186 187 188 189 190 191 192 193 194 </h4> 195 196 <div class="comments"></div> 161 197 162 198 <h4 id="_compute_fromreg_imoms3_weigaddr_param_alonin">alonin -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/cutpar.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> cut p parallelogram(s) into p*n^2 parallelograms 90 </div> 90 91 91 92 … … 102 103 <div class="routine_details" id="_cutpar"> 103 104 104 <h2><a class="top" href="#container">top</a>cutpar </h2> 105 <h2><a class="top" href="#container">top</a>cutpar <span class="categories"> basic work 106 </span></h2> 105 107 106 108 <p class="header"> … … 108 110 109 111 <div class="comments"> 110 NAME: cutpar 111 112 PURPOSE: cut p parallelogram(s) into p*n^2 parallelograms 113 114 CATEGORY: basic work 115 116 CALLING SEQUENCE:res = cutpar(x0, y0, x1, y1, x2, y2, x3, y3, n) 117 118 INPUTS: 119 x0,y0 1d arrays of p elements, giving the edge positions. The 120 edges must be given as in plot to traw the parallelogram. (see 121 example). 122 n: each parallelogram will be cutted in n^2 pieces 123 124 KEYWORD PARAMETERS: 125 126 /endpoints: see outputs 127 128 /onsphere: to specify that the points are located on a 129 sphere. In this case, x and y corresponds to longitude and 130 latitude in degrees. 131 132 OUTPUTS: 112 </div> 113 114 <h3>Return value</h3><div class="value"> 133 115 -defaut: 3d array(2,n^2,p) giving the center position of each 134 116 piece of the parallelograms 135 117 -/endpoints: 3d array(2,(n+1)^2,p) giving the edge positions 136 118 of each piece of the parallelograms 137 138 COMMON BLOCKS: no 139 140 SIDE EFFECTS: need cutsegment.pro 141 142 RESTRICTIONS: ? 143 144 EXAMPLE: 119 </div> 120 121 122 <h3>Parameters</h3> 123 124 125 <h4 id="_cutpar_param_x0">x0 126 <span class="attr">in</span> 127 128 129 <span class="attr">required</span> 130 131 132 133 134 </h4> 135 136 <div class="comments"> 1d arrays of p elements, giving the edge positions. The 137 edges must be given as in plot to traw the parallelogram. (see 138 example).</div> 139 140 <h4 id="_cutpar_param_y0">y0 141 142 143 144 145 146 147 148 149 </h4> 150 151 <div class="comments"></div> 152 153 <h4 id="_cutpar_param_x1">x1 154 155 156 157 158 159 160 161 162 </h4> 163 164 <div class="comments"></div> 165 166 <h4 id="_cutpar_param_y1">y1 167 168 169 170 171 172 173 174 175 </h4> 176 177 <div class="comments"></div> 178 179 <h4 id="_cutpar_param_x2">x2 180 181 182 183 184 185 186 187 188 </h4> 189 190 <div class="comments"></div> 191 192 <h4 id="_cutpar_param_y2">y2 193 194 195 196 197 198 199 200 201 </h4> 202 203 <div class="comments"></div> 204 205 <h4 id="_cutpar_param_x3">x3 206 207 208 209 210 211 212 213 214 </h4> 215 216 <div class="comments"></div> 217 218 <h4 id="_cutpar_param_y3">y3 219 220 221 222 223 224 225 226 227 </h4> 228 229 <div class="comments"></div> 230 231 <h4 id="_cutpar_param_n">n 232 <span class="attr">in</span> 233 234 235 <span class="attr">required</span> 236 237 238 239 240 </h4> 241 242 <div class="comments"> each parallelogram will be cutted in n^2 pieces 243 </div> 244 245 246 247 248 249 250 <h3>Keywords</h3> 251 252 <h4 id="_cutpar_keyword_endpoints">endpoints 253 254 255 256 257 258 259 260 261 </h4> 262 263 <div class="comments"> see outputs 264 </div> 265 266 <h4 id="_cutpar_keyword_onsphere">onsphere 267 268 269 270 271 272 273 274 275 </h4> 276 277 <div class="comments"> to specify that the points are located on a 278 sphere. In this case, x and y corresponds to longitude and 279 latitude in degrees. 280 </div> 281 282 283 284 <h3>Examples</h3><div class="value"> 285 res = cutpar(x0, y0, x1, y1, x2, y2, x3, y3, n) 286 287 145 288 146 289 x0 = [2,6,2] … … 157 300 res=cutpar(x0, y0, x1, y1, x2, y2, x3, y3, n) 158 301 for i=0,2 do oplot, [res[0,*,i]], [res[1,*,i]], color = 20+10*i, psym = 1, thick = 3 159 160 MODIFICATION HISTORY:</div> 161 162 163 164 165 <h3>Parameters</h3> 166 167 168 <h4 id="_cutpar_param_x0">x0 169 170 171 172 173 174 175 176 177 </h4> 178 179 <div class="comments"></div> 180 181 <h4 id="_cutpar_param_y0">y0 182 183 184 185 186 187 188 189 190 </h4> 191 192 <div class="comments"></div> 193 194 <h4 id="_cutpar_param_x1">x1 195 196 197 198 199 200 201 202 203 </h4> 204 205 <div class="comments"></div> 206 207 <h4 id="_cutpar_param_y1">y1 208 209 210 211 212 213 214 215 216 </h4> 217 218 <div class="comments"></div> 219 220 <h4 id="_cutpar_param_x2">x2 221 222 223 224 225 226 227 228 229 </h4> 230 231 <div class="comments"></div> 232 233 <h4 id="_cutpar_param_y2">y2 234 235 236 237 238 239 240 241 242 </h4> 243 244 <div class="comments"></div> 245 246 <h4 id="_cutpar_param_x3">x3 247 248 249 250 251 252 253 254 255 </h4> 256 257 <div class="comments"></div> 258 259 <h4 id="_cutpar_param_y3">y3 260 261 262 263 264 265 266 267 268 </h4> 269 270 <div class="comments"></div> 271 272 <h4 id="_cutpar_param_n">n 273 274 275 276 277 278 279 280 281 </h4> 282 283 <div class="comments"></div> 284 285 286 287 288 289 290 <h3>Keywords</h3> 291 292 <h4 id="_cutpar_keyword_endpoints">endpoints 293 294 295 296 297 298 299 300 301 </h4> 302 303 <div class="comments"></div> 304 305 <h4 id="_cutpar_keyword_onsphere">onsphere 306 307 308 309 310 311 312 313 314 </h4> 315 316 <div class="comments"></div> 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 302 </div> 303 <h3>Version history</h3> 304 305 306 <h4>History</h4><div class="value"> 307 S. Masson (smasson@lodyc.jussieu.fr) 308 July 5th, 2002</div> 309 310 311 312 313 314 315 316 317 <h3>Other attributes</h3> 318 319 320 <h4>Uses routines</h4><div class="value"> cutsegment.pro 321 </div> 337 322 338 323 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/cutsegment.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> cut p segments into p*n equal parts 90 </div> 90 91 91 92 … … 102 103 <div class="routine_details" id="_cutsegment"> 103 104 104 <h2><a class="top" href="#container">top</a>cutsegment </h2> 105 <h2><a class="top" href="#container">top</a>cutsegment <span class="categories"> basic work 106 </span></h2> 105 107 106 108 <p class="header"> … … 108 110 109 111 <div class="comments"> 110 NAME: cutsegment 111 112 PURPOSE: cut p segments into p*n equal parts 113 114 CATEGORY: basic work 115 116 CALLING SEQUENCE: res = cutsegment(x0, y0, x1, y1, n) 117 118 INPUTS: 119 x0,y0 and x1,y1, 1d arrays of p elements, the coordinates of 120 the endpoints of the p segmements 121 n: the number of pieces we want to cut each segment 122 123 KEYWORD PARAMETERS: 124 125 /endpoints: see ouputs 126 127 /onsphere: to specify that the points are located on a 128 sphere. In this case, x and y corresponds to longitude and 129 latitude in degrees. 130 131 OUTPUTS: 112 </div> 113 114 <h3>Return value</h3><div class="value"> 132 115 defaut: a 3d array (2,n,p) that gives the coordinates of the 133 116 middle of the cutted segments. 134 117 if /endpoints, a 3d array (2,n+1,p) that gives the 135 118 coordinates of the endpoints of the cutted segments. 136 137 COMMON BLOCKS: no 138 139 SIDE EFFECTS: no 140 141 RESTRICTIONS: ? 142 143 EXAMPLE: 119 </div> 120 121 122 <h3>Parameters</h3> 123 124 125 <h4 id="_cutsegment_param_x0">x0 126 <span class="attr">in</span> 127 128 129 <span class="attr">required</span> 130 131 132 133 134 </h4> 135 136 <div class="comments"> 1d arrays of p elements, the coordinates of 137 the endpoints of the p segmements</div> 138 139 <h4 id="_cutsegment_param_y0">y0 140 141 142 143 144 145 146 147 148 </h4> 149 150 <div class="comments"></div> 151 152 <h4 id="_cutsegment_param_x1">x1 153 154 155 156 157 158 159 160 161 </h4> 162 163 <div class="comments"></div> 164 165 <h4 id="_cutsegment_param_y1">y1 166 167 168 169 170 171 172 173 174 </h4> 175 176 <div class="comments"></div> 177 178 <h4 id="_cutsegment_param_n">n 179 <span class="attr">in</span> 180 181 182 <span class="attr">required</span> 183 184 185 186 187 </h4> 188 189 <div class="comments"> the number of pieces we want to cut each segment 190 191 </div> 192 193 194 195 196 197 198 <h3>Keywords</h3> 199 200 <h4 id="_cutsegment_keyword_endpoints">endpoints 201 202 203 204 205 206 207 208 209 </h4> 210 211 <div class="comments"> see ouputs 212 </div> 213 214 <h4 id="_cutsegment_keyword_onsphere">onsphere 215 216 217 218 219 220 221 222 223 </h4> 224 225 <div class="comments"> to specify that the points are located on a 226 sphere. In this case, x and y corresponds to longitude and 227 latitude in degrees. 228 </div> 229 230 231 232 <h3>Examples</h3><div class="value"> 233 res = cutsegment(x0, y0, x1, y1, n) 234 235 144 236 145 237 IDL> x0=[2,5] … … 153 245 IDL> oplot, [x0[1], x1[1]], [y0[1], y1[1]] 154 246 IDL> oplot, [res[0,*,1]], [res[1,*,1]], color = 40, psym = 1, thick = 3 155 156 MODIFICATION HISTORY:</div> 157 158 159 160 161 <h3>Parameters</h3> 162 163 164 <h4 id="_cutsegment_param_x0">x0 165 166 167 168 169 170 171 172 173 </h4> 174 175 <div class="comments"></div> 176 177 <h4 id="_cutsegment_param_y0">y0 178 179 180 181 182 183 184 185 186 </h4> 187 188 <div class="comments"></div> 189 190 <h4 id="_cutsegment_param_x1">x1 191 192 193 194 195 196 197 198 199 </h4> 200 201 <div class="comments"></div> 202 203 <h4 id="_cutsegment_param_y1">y1 204 205 206 207 208 209 210 211 212 </h4> 213 214 <div class="comments"></div> 215 216 <h4 id="_cutsegment_param_n">n 217 218 219 220 221 222 223 224 225 </h4> 226 227 <div class="comments"></div> 228 229 230 231 232 233 234 <h3>Keywords</h3> 235 236 <h4 id="_cutsegment_keyword_endpoints">endpoints 237 238 239 240 241 242 243 244 245 </h4> 246 247 <div class="comments"></div> 248 249 <h4 id="_cutsegment_keyword_onsphere">onsphere 250 251 252 253 254 255 256 257 258 </h4> 259 260 <div class="comments"></div> 261 262 263 264 265 266 267 268 247 </div> 248 <h3>Version history</h3> 249 250 251 <h4>History</h4><div class="value"> 252 S. Masson (smasson@lodyc.jussieu.fr) 253 July 5th, 2002</div> 269 254 270 255 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/directory-overview.html
r89 r101 90 90 91 91 <dt><a href="angle.html?format=raw">angle.pro</a></dt> 92 <dd> </dd>92 <dd> north stereographic polar projection Compute angles between grid lines and direction of the North (fom angle.</dd> 93 93 94 94 <dt><a href="clickincell.html?format=raw">clickincell.pro</a></dt> 95 <dd> </dd>95 <dd> click on a map and find in which cell the click was </dd> 96 96 97 97 <dt><a href="compute_fromreg_bilinear_weigaddr.html?format=raw">compute_fromreg_bilinear_weigaddr.pro</a></dt> 98 <dd> </dd>98 <dd> compute the weight and address neede to interpolate data from a "regular grid" to any grid using the bilinear method </dd> 99 99 100 100 <dt><a href="compute_fromreg_imoms3_weigaddr.html?format=raw">compute_fromreg_imoms3_weigaddr.pro</a></dt> 101 <dd> </dd>101 <dd> compute the weight and address neede to interpolate data from a "regular grid" to any grid using the imoms3 method </dd> 102 102 103 103 <dt><a href="cutpar.html?format=raw">cutpar.pro</a></dt> 104 <dd> </dd>104 <dd> cut p parallelogram(s) into p*n^2 parallelograms </dd> 105 105 106 106 <dt><a href="cutsegment.html?format=raw">cutsegment.pro</a></dt> 107 <dd> </dd>107 <dd> cut p segments into p*n equal parts </dd> 108 108 109 109 <dt><a href="extrapolate.html?format=raw">extrapolate.pro</a></dt> 110 <dd> </dd>110 <dd> extrapolate data (zinput) where maskinput eq 0 by filling step by step the coastline points with the mean value of the 8 neighbourgs.</dd> 111 111 112 112 <dt><a href="fromreg.html?format=raw">fromreg.pro</a></dt> 113 <dd> </dd>113 <dd> interpolate data from a "regular/rectangular grid" to any grid.</dd> 114 114 115 115 <dt><a href="get_gridparams.html?format=raw">get_gridparams.pro</a></dt> 116 <dd> </dd>116 <dd> 1) extract from a NetCDF file the longitude, latidude, and their dimensions and make sure it is 1D or 2D arrays or 2) given longitude and latitude arrays get their dimensions and make sure they are 1D or 2D arrays </dd> 117 117 118 118 <dt><a href="imoms3.html?format=raw">imoms3.pro</a></dt> … … 120 120 121 121 <dt><a href="inquad.html?format=raw">inquad.pro</a></dt> 122 <dd> </dd>122 <dd> to find if an (x,y) point is in a quadrilateral (x1,x2,x3,x4) </dd> 123 123 124 124 <dt><a href="inrecgrid.html?format=raw">inrecgrid.pro</a></dt> 125 <dd> </dd>125 <dd> given - a list of points, (x,y) position - the x and y limits of a rectangular grid find in which cell is located each given point.</dd> 126 126 127 127 <dt><a href="ll_narcs_distances.html?format=raw">ll_narcs_distances.pro</a></dt> 128 <dd> </dd>128 <dd> This function returns the longitude and latitude [lon, lat] of a point a given arc distance (-pi <= Arc_Dist <= pi), and azimuth (Az), from a specified location Lon0, lat0.</dd> 129 129 130 130 <dt><a href="map_npoints.html?format=raw">map_npoints.pro</a></dt> 131 <dd> </dd>131 <dd> Return the distance in meter between all np0 points P0 and all np1 points P1 on a sphere.</dd> 132 132 133 133 <dt><a href="neighbor.html?format=raw">neighbor.pro</a></dt> 134 <dd> </dd>134 <dd> find the closetest point of (P0) within a list of np1 points P1 Which can be on a sphere </dd> 135 135 136 136 <dt><a href="quadrilateral2square.html?format=raw">quadrilateral2square.pro</a></dt> 137 <dd> </dd>137 <dd> warm (or map) an arbitrary quadrilateral onto a unit square according to the 4-point correspondences: (x0,y0) -> (0,0) (x1,y1) -> (1,0) (x2,y2) -> (1,1) (x3,y3) -> (0,1) This is the inverse function of square2quadrilateral.</dd> 138 138 139 139 <dt><a href="spl_fstdrv.html?format=raw">spl_fstdrv.pro</a></dt> 140 <dd> </dd>140 <dd> SPL_FSTDRV returns the values of the first derivative of the interpolating function at the points X2i.</dd> 141 141 142 142 <dt><a href="spl_incr.html?format=raw">spl_incr.pro</a></dt> 143 <dd> </dd>143 <dd> Given the arrays X and Y, which tabulate a function (with the X[i] AND Y[i] in ascending order), and given an input value X2, the SPL_INCR function returns an interpolated value for the given values of X2.</dd> 144 144 145 145 <dt><a href="spl_keep_mean.html?format=raw">spl_keep_mean.pro</a></dt> 146 <dd> </dd>146 <dd> Given the arrays X and Y, which tabulate a function (with the X[i] AND Y[i] in ascending order), and given an input value X2, the SPL_INCR function returns an interpolated value for the given values of X2.</dd> 147 147 148 148 <dt><a href="square2quadrilateral.html?format=raw">square2quadrilateral.pro</a></dt> 149 <dd> </dd>149 <dd> warm (or map) a unit square onto an arbitrary quadrilateral according to the 4-point correspondences: (0,0) -> (x0,y0) (1,0) -> (x1,y1) (1,1) -> (x2,y2) (0,1) -> (x3,y3) The mapping is done using perspective transformation which preserve lines in all orientations and permit quadrilateral to quadrilateral mappings.</dd> 150 150 151 151 <dt><a href="testinterp.html?format=raw">testinterp.pro</a></dt> -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/extrapolate.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> extrapolate data (zinput) where maskinput eq 0 by filling step by 90 step the coastline points with the mean value of the 8 neighbourgs. 91 </div> 90 92 91 93 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/fromreg.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 90 91 92 93 94 95 96 97 98 99 <div id="routine_details"> 100 101 102 <div class="routine_details" id="_fromreg"> 103 104 <h2><a class="top" href="#container">top</a>fromreg </h2> 105 106 <p class="header"> 107 <span class="result">result = </span>fromreg(<span class="result"><a href="#_fromreg_param_method">method</a>, <a href="#_fromreg_param_datain">datain</a>, <a href="#_fromreg_param_lonin">lonin</a>, <a href="#_fromreg_param_latin">latin</a>, <a href="#_fromreg_param_lonout">lonout</a>, <a href="#_fromreg_param_latout">latout</a></span>, <a href="#_fromreg_keyword_WEIG">WEIG</a>=<span class="result">WEIG</span>, <a href="#_fromreg_keyword_ADDR">ADDR</a>=<span class="result">ADDR</span>, <a href="#_fromreg_keyword_NONORTHERNLINE">NONORTHERNLINE</a>=<span class="result">NONORTHERNLINE</span>, <a href="#_fromreg_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE</a>=<span class="result">NOSOUTHERNLINE</span>)</p> 108 109 <div class="comments"> 110 NAME: fromreg 111 112 PURPOSE: interpolate data from a "regular/rectangular grid" to any grid. 89 <div id="file_comments"> interpolate data from a "regular/rectangular grid" to any grid. 113 90 2 metods availables: bilinear and imoms3 114 91 A "regular/rectangular grid" is defined as a grid for which each lontitudes lines have 115 92 the same latitude and each latitudes columns have the same longitude. 116 117 CATEGORY:interpolation 118 119 CALLING SEQUENCE: dataout = fromreg(method, datain [, lonin, latin, lonout, latout]) 120 121 INPUTS: 122 method: a string defining the interpolation method. 123 must be 'bilinear' or 'imoms3' 124 datain: a 2D array the input data to interpolate 125 lonin and latin: longitude/latitude of the input data. optionals if 93 </div> 94 95 96 97 98 99 100 101 102 103 <div id="routine_details"> 104 105 106 <div class="routine_details" id="_fromreg"> 107 108 <h2><a class="top" href="#container">top</a>fromreg <span class="categories"> interpolation 109 </span></h2> 110 111 <p class="header"> 112 <span class="result">result = </span>fromreg(<span class="result"><a href="#_fromreg_param_method">method</a>, <a href="#_fromreg_param_datain">datain</a>, <a href="#_fromreg_param_lonin">lonin</a>, <a href="#_fromreg_param_latin">latin</a>, <a href="#_fromreg_param_lonout">lonout</a>, <a href="#_fromreg_param_latout">latout</a></span>, <a href="#_fromreg_keyword_WEIG">WEIG</a>=<span class="result">WEIG</span>, <a href="#_fromreg_keyword_ADDR">ADDR</a>=<span class="result">ADDR</span>, <a href="#_fromreg_keyword_NONORTHERNLINE">NONORTHERNLINE</a>=<span class="result">NONORTHERNLINE</span>, <a href="#_fromreg_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE</a>=<span class="result">NOSOUTHERNLINE</span>)</p> 113 114 <div class="comments"> 115 </div> 116 117 <h3>Return value</h3><div class="value"> 2D array: the interpolated data 118 </div> 119 120 121 <h3>Parameters</h3> 122 123 124 <h4 id="_fromreg_param_method">method 125 <span class="attr">in</span> 126 127 128 <span class="attr">required</span> 129 130 131 132 133 </h4> 134 135 <div class="comments"> a string defining the interpolation method. 136 must be 'bilinear' or 'imoms3'</div> 137 138 <h4 id="_fromreg_param_datain">datain 139 <span class="attr">in</span> 140 141 142 <span class="attr">required</span> 143 144 145 146 147 </h4> 148 149 <div class="comments"> a 2D array the input data to interpolate</div> 150 151 <h4 id="_fromreg_param_lonin">lonin 152 <span class="attr">in</span> 153 154 155 <span class="attr">required</span> 156 157 158 159 160 </h4> 161 162 <div class="comments"> longitude/latitude of the input data. optionals if 163 WEIG and ADDR keywords used.</div> 164 165 <h4 id="_fromreg_param_latin">latin 166 167 168 169 170 171 172 173 174 </h4> 175 176 <div class="comments"></div> 177 178 <h4 id="_fromreg_param_lonout">lonout 179 <span class="attr">in</span> 180 181 182 <span class="attr">required</span> 183 184 185 186 187 </h4> 188 189 <div class="comments"> longitude/latitude of the output data. optionals if 126 190 WEIG and ADDR keywords used. 127 lonout and latout: longitude/latitude of the output data. optionals if 128 WEIG and ADDR keywords used. 129 130 KEYWORD PARAMETERS: 131 132 WEIG, ADDR: 2D arrays, weig and addr are the weight and addresses used to 191 </div> 192 193 <h4 id="_fromreg_param_latout">latout 194 195 196 197 198 199 200 201 202 </h4> 203 204 <div class="comments"></div> 205 206 207 208 209 210 211 <h3>Keywords</h3> 212 213 <h4 id="_fromreg_keyword_WEIG">WEIG 214 215 216 217 218 219 220 221 222 </h4> 223 224 <div class="comments">, ADDR 2D arrays, weig and addr are the weight and addresses used to 133 225 perform the interpolation: 134 226 dataout = total(weig*datain[addr], 1) … … 138 230 the interpolation whithout computing again those 2 parameters. In that 139 231 case, lonin, latin, lonout and latout are not necessary. 140 141 /NONORTHERNLINE and /NOSOUTHERNLINE: activate if you don't whant to take into 232 </div> 233 234 <h4 id="_fromreg_keyword_ADDR">ADDR 235 236 237 238 239 240 241 242 243 </h4> 244 245 <div class="comments"></div> 246 247 <h4 id="_fromreg_keyword_NONORTHERNLINE">NONORTHERNLINE 248 249 250 251 252 253 254 255 256 </h4> 257 258 <div class="comments"> and /NOSOUTHERNLINE activate if you don't whant to take into 142 259 account the northen/southern line of the input data when perfoming the 143 260 interpolation. 144 145 OUTPUTS: 2D array: the interpolated data 146 147 COMMON BLOCKS: none 148 149 SIDE EFFECTS: ? 150 151 RESTRICTIONS:We supposed the data are located on a sphere, with a periodicity along 152 the longitude. 153 154 EXAMPLE: 261 </div> 262 263 <h4 id="_fromreg_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE 264 265 266 267 268 269 270 271 272 </h4> 273 274 <div class="comments"></div> 275 276 277 278 <h3>Examples</h3><div class="value"> 279 dataout = fromreg(method, datain [, lonin, latin, lonout, latout]) 280 281 155 282 156 283 topa = fromreg('bilinear', tncep, xncep, yncep, glamt, gphit) … … 161 288 help, a, b 162 289 t2opa = fromreg('bilinear', t2ncep, xncep, WEIG = a, ADDR = b) 163 164 MODIFICATION HISTORY:</div> 165 166 167 168 169 <h3>Parameters</h3> 170 171 172 <h4 id="_fromreg_param_method">method 173 174 175 176 177 178 179 180 181 </h4> 182 183 <div class="comments"></div> 184 185 <h4 id="_fromreg_param_datain">datain 186 187 188 189 190 191 192 193 194 </h4> 195 196 <div class="comments"></div> 197 198 <h4 id="_fromreg_param_lonin">lonin 199 200 201 202 203 204 205 206 207 </h4> 208 209 <div class="comments"></div> 210 211 <h4 id="_fromreg_param_latin">latin 212 213 214 215 216 217 218 219 220 </h4> 221 222 <div class="comments"></div> 223 224 <h4 id="_fromreg_param_lonout">lonout 225 226 227 228 229 230 231 232 233 </h4> 234 235 <div class="comments"></div> 236 237 <h4 id="_fromreg_param_latout">latout 238 239 240 241 242 243 244 245 246 </h4> 247 248 <div class="comments"></div> 249 250 251 252 253 254 255 <h3>Keywords</h3> 256 257 <h4 id="_fromreg_keyword_WEIG">WEIG 258 259 260 261 262 263 264 265 266 </h4> 267 268 <div class="comments"></div> 269 270 <h4 id="_fromreg_keyword_ADDR">ADDR 271 272 273 274 275 276 277 278 279 </h4> 280 281 <div class="comments"></div> 282 283 <h4 id="_fromreg_keyword_NONORTHERNLINE">NONORTHERNLINE 284 285 286 287 288 289 290 291 292 </h4> 293 294 <div class="comments"></div> 295 296 <h4 id="_fromreg_keyword_NOSOUTHERNLINE">NOSOUTHERNLINE 297 298 299 300 301 302 303 304 305 </h4> 306 307 <div class="comments"></div> 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 290 </div> 291 <h3>Version history</h3> 292 293 294 <h4>History</h4><div class="value"> 295 November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr) 296 </div> 297 298 299 <h3>Known issues</h3> 300 301 302 303 <h4>Restrictions</h4><div class="value"> We supposed the data are located on a sphere, with a 304 periodicity along the longitude. 305 </div> 323 306 324 307 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/get_gridparams.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 90 91 92 93 94 95 96 97 98 99 <div id="routine_details"> 100 101 102 <div class="routine_details" id="_get_gridparams"> 103 104 <h2><a class="top" href="#container">top</a>get_gridparams </h2> 105 106 <p class="header"> 107 get_gridparams<span class="result">, <a href="#_get_gridparams_param_in1">in1</a>, <a href="#_get_gridparams_param_in2">in2</a>, <a href="#_get_gridparams_param_in3">in3</a>, <a href="#_get_gridparams_param_in4">in4</a>, <a href="#_get_gridparams_param_in5">in5</a>, <a href="#_get_gridparams_param_in6">in6</a>, <a href="#_get_gridparams_param_in7">in7</a>, <a href="#_get_gridparams_param_in8">in8</a></span>, <a href="#_get_gridparams_keyword_DOUBLE">DOUBLE</a>=<span class="result">DOUBLE</span></p> 108 109 <div class="comments"> 110 NAME: get_gridparams 111 112 PURPOSE: 89 <div id="file_comments"> 113 90 1) extract from a NetCDF file the longitude, latidude, and their dimensions 114 91 and make sure it is 1D or 2D arrays … … 116 93 or 2) given longitude and latitude arrays get their dimensions and make sure 117 94 they are 1D or 2D arrays 118 119 CATEGORY:for interpolations tools 120 121 CALLING SEQUENCE: 122 123 1) get_gridparams, file, lonname, latname, lon, lat, jpi, jpj, n_dimensions 124 125 or 126 127 2) get_gridparams, lon, lat, jpi, jpj, n_dimensions 128 129 INPUTS: 130 131 1) 132 file: the name of the netcdf file 133 loname: the name of the variable that contains the longitude in the NetCDF file 134 latname: the name of the variable that contains the latitude in the NetCDF file 135 136 or 137 138 2) lon and lat: 1d or 2D arrays defining longitudes and latitudes. 139 Note that these arrays are also outputs and can therefore be modified. 140 141 KEYWORD PARAMETERS: none 142 143 OUTPUTS: 144 lon the variable that will contain the longitudes 145 lat the variable that will contain the latitudes 146 jpi the number of points in the longitudinal direction 147 jpj the number of points in the latitudinal direction 148 n_dimensions: 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 95 </div> 96 97 98 99 100 101 102 103 104 105 <div id="routine_details"> 106 107 108 <div class="routine_details" id="_get_gridparams"> 109 110 <h2><a class="top" href="#container">top</a>get_gridparams <span class="categories"> interpolation 111 </span></h2> 112 113 <p class="header"> 114 get_gridparams<span class="result">, <a href="#_get_gridparams_param_in1">in1</a>, <a href="#_get_gridparams_param_in2">in2</a>, <a href="#_get_gridparams_param_in3">in3</a>, <a href="#_get_gridparams_param_in4">in4</a>, <a href="#_get_gridparams_param_in5">in5</a>, <a href="#_get_gridparams_param_in6">in6</a>, <a href="#_get_gridparams_param_in7">in7</a>, <a href="#_get_gridparams_param_in8">in8</a></span>, <a href="#_get_gridparams_keyword_DOUBLE">DOUBLE</a>=<span class="result">DOUBLE</span></p> 115 116 <div class="comments"> 117 </div> 118 119 120 121 122 <h3>Parameters</h3> 123 124 125 <h4 id="_get_gridparams_param_in1">in1 126 <span class="attr">in</span> 127 <span class="attr">out</span> 128 129 <span class="attr">required</span> 130 131 132 133 134 </h4> 135 136 <div class="comments"> the name of the netcdf file 137 the variable that will contain the longitudes</div> 138 139 <h4 id="_get_gridparams_param_in2">in2 140 <span class="attr">in</span> 141 <span class="attr">out</span> 142 143 <span class="attr">required</span> 144 145 146 147 148 </h4> 149 150 <div class="comments"> the name of the variable that contains the longitude in the NetCDF file 151 the variable that will contain the latitudes</div> 152 153 <h4 id="_get_gridparams_param_in3">in3 154 <span class="attr">in</span> 155 <span class="attr">out</span> 156 157 <span class="attr">required</span> 158 159 160 161 162 </h4> 163 164 <div class="comments"> the name of the variable that contains the latitude in the NetCDF file 165 the number of points in the longitudinal direction</div> 166 167 <h4 id="_get_gridparams_param_in4">in4 168 169 <span class="attr">out</span> 170 171 172 173 174 175 176 </h4> 177 178 <div class="comments"> the number of points in the longitudinal direction 179 the number of points in the latitudinal direction</div> 180 181 <h4 id="_get_gridparams_param_in5">in5 182 183 <span class="attr">out</span> 184 185 186 187 188 189 190 </h4> 191 192 <div class="comments"> the number of points in the latitudinal direction 193 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 149 194 arrays or 2D arrays (jpi,jpj). Note that of n_dimensions = 1, then the 150 195 grid must be regular (each longitudes must be the same for all latitudes 151 196 and each latitudes should be the sae for all longitudes). 152 153 COMMON BLOCKS: none 154 155 SIDE EFFECTS: ? 156 157 RESTRICTIONS: ? 158 159 EXAMPLE: 197 </div> 198 199 <h4 id="_get_gridparams_param_in6">in6 200 201 <span class="attr">out</span> 202 203 204 205 206 207 208 </h4> 209 210 <div class="comments"> the variable that will contain the longitudes</div> 211 212 <h4 id="_get_gridparams_param_in7">in7 213 214 <span class="attr">out</span> 215 216 217 218 219 220 221 </h4> 222 223 <div class="comments"> the variable that will contain the latitudes</div> 224 225 <h4 id="_get_gridparams_param_in8">in8 226 227 <span class="attr">out</span> 228 229 230 231 232 233 234 </h4> 235 236 <div class="comments"> 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 237 238 or 239 240 2) </div> 241 242 243 244 245 246 247 <h3>Keywords</h3> 248 249 <h4 id="_get_gridparams_keyword_DOUBLE">DOUBLE 250 251 252 253 254 255 256 257 258 </h4> 259 260 <div class="comments"></div> 261 262 263 264 <h3>Examples</h3><div class="value"> 265 266 1) get_gridparams, file, lonname, latname, lon, lat, jpi, jpj, n_dimensions 267 268 or 269 270 2) get_gridparams, lon, lat, jpi, jpj, n_dimensions 271 272 1) 273 160 274 161 275 1) ncdf_get_gridparams, 'coordinates_ORCA_R05.nc', 'glamt', 'gphit' $ … … 163 277 164 278 2) ncdf_get_gridparams, olon, olat, jpio, jpjo, 2 165 166 MODIFICATION HISTORY:</div> 167 168 169 170 171 <h3>Parameters</h3> 172 173 174 <h4 id="_get_gridparams_param_in1">in1 175 176 177 178 179 180 181 182 183 </h4> 184 185 <div class="comments"></div> 186 187 <h4 id="_get_gridparams_param_in2">in2 188 189 190 191 192 193 194 195 196 </h4> 197 198 <div class="comments"></div> 199 200 <h4 id="_get_gridparams_param_in3">in3 201 202 203 204 205 206 207 208 209 </h4> 210 211 <div class="comments"></div> 212 213 <h4 id="_get_gridparams_param_in4">in4 214 215 216 217 218 219 220 221 222 </h4> 223 224 <div class="comments"></div> 225 226 <h4 id="_get_gridparams_param_in5">in5 227 228 229 230 231 232 233 234 235 </h4> 236 237 <div class="comments"></div> 238 239 <h4 id="_get_gridparams_param_in6">in6 240 241 242 243 244 245 246 247 248 </h4> 249 250 <div class="comments"></div> 251 252 <h4 id="_get_gridparams_param_in7">in7 253 254 255 256 257 258 259 260 261 </h4> 262 263 <div class="comments"></div> 264 265 <h4 id="_get_gridparams_param_in8">in8 266 267 268 269 270 271 272 273 274 </h4> 275 276 <div class="comments"></div> 277 278 279 280 281 282 283 <h3>Keywords</h3> 284 285 <h4 id="_get_gridparams_keyword_DOUBLE">DOUBLE 286 287 288 289 290 291 292 293 294 </h4> 295 296 <div class="comments"></div> 297 298 299 300 301 302 303 304 279 </div> 280 <h3>Version history</h3> 281 282 283 <h4>History</h4><div class="value"> 284 November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr) 285 </div> 305 286 306 287 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/imoms3.html
r89 r101 107 107 <span class="result">result = </span>imoms3(<span class="result"><a href="#_imoms3_param_xin">xin</a></span>)</p> 108 108 109 <div class="comments"></div> 109 <div class="comments"> 110 </div> 110 111 111 112 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/inquad.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> to find if an (x,y) point is in a quadrilateral (x1,x2,x3,x4) 90 </div> 90 91 91 92 … … 102 103 <div class="routine_details" id="_inquad"> 103 104 104 <h2><a class="top" href="#container">top</a>inquad </h2> 105 <h2><a class="top" href="#container">top</a>inquad <span class="categories"> grid manipulation 106 </span></h2> 105 107 106 108 <p class="header"> 107 109 <span class="result">result = </span>inquad(<span class="result"><a href="#_inquad_param_x">x</a>, <a href="#_inquad_param_y">y</a>, <a href="#_inquad_param_x1">x1</a>, <a href="#_inquad_param_y1">y1</a>, <a href="#_inquad_param_x2">x2</a>, <a href="#_inquad_param_y2">y2</a>, <a href="#_inquad_param_x3">x3</a>, <a href="#_inquad_param_y3">y3</a>, <a href="#_inquad_param_x4">x4</a>, <a href="#_inquad_param_y4">y4</a></span>, <a href="#_inquad_keyword_ONSPHERE">ONSPHERE</a>=<span class="result">ONSPHERE</span>, <a href="#_inquad_keyword_DOUBLE">DOUBLE</a>=<span class="result">DOUBLE</span>, <a href="#_inquad_keyword_ZOOMRADIUS">ZOOMRADIUS</a>=<span class="result">ZOOMRADIUS</span>, <a href="#_inquad_keyword_NOPRINT">NOPRINT</a>=<span class="result">NOPRINT</span>, <a href="#_inquad_keyword_NEWCOORD">NEWCOORD</a>=<span class="result">NEWCOORD</span>)</p> 108 110 109 <div class="comments"> 110 NAME:inquad 111 112 PURPOSE: to find if an (x,y) point is in a quadrilateral (x1,x2,x3,x4) 113 114 CATEGORY:grid manipulation 115 116 CALLING SEQUENCE: 117 118 res = inquad(x, y, x1, y1, x2, y2, x3, y3, x4, y4) 119 120 INPUTS: 121 122 x,y: the coordinates of the point we want to know where it 111 <div class="comments"></div> 112 113 <h3>Return value</h3><div class="value"> 114 a n element vector. Where n is the number of elements of 115 x. res[i]=j means that the point number i is located in the 116 quadrilateral number j with (0 <= j <= n_elements(x0)-1) 117 </div> 118 119 120 <h3>Parameters</h3> 121 122 123 <h4 id="_inquad_param_x">x 124 <span class="attr">in</span> 125 126 127 <span class="attr">required</span> 128 129 130 131 132 </h4> 133 134 <div class="comments"> the coordinates of the point we want to know where it 123 135 is. Must be a scalar if /onsphere activated else can be scalar 124 136 or array. 125 126 x1, y1, x2, y2, x3, y3, x4, y4: the coordinates of the 137 </div> 138 139 <h4 id="_inquad_param_y">y 140 141 142 143 144 145 146 147 148 </h4> 149 150 <div class="comments"></div> 151 152 <h4 id="_inquad_param_x1">x1 153 <span class="attr">in</span> 154 155 156 <span class="attr">required</span> 157 158 159 160 161 </h4> 162 163 <div class="comments"> the coordinates of the 127 164 quadrilateral given in the CLOCKWISE order. Scalar or array. 128 165 129 KEYWORD PARAMETERS: 130 131 /DOUBLE: use double precision to perform the computation 132 133 /ONSPHERE: to specify that the quadilateral are on a sphere and 166 </div> 167 168 <h4 id="_inquad_param_y1">y1 169 170 171 172 173 174 175 176 177 </h4> 178 179 <div class="comments"></div> 180 181 <h4 id="_inquad_param_x2">x2 182 183 184 185 186 187 188 189 190 </h4> 191 192 <div class="comments"></div> 193 194 <h4 id="_inquad_param_y2">y2 195 196 197 198 199 200 201 202 203 </h4> 204 205 <div class="comments"></div> 206 207 <h4 id="_inquad_param_x3">x3 208 209 210 211 212 213 214 215 216 </h4> 217 218 <div class="comments"></div> 219 220 <h4 id="_inquad_param_y3">y3 221 222 223 224 225 226 227 228 229 </h4> 230 231 <div class="comments"></div> 232 233 <h4 id="_inquad_param_x4">x4 234 235 236 237 238 239 240 241 242 </h4> 243 244 <div class="comments"></div> 245 246 <h4 id="_inquad_param_y4">y4 247 248 249 250 251 252 253 254 255 </h4> 256 257 <div class="comments"></div> 258 259 260 261 262 263 264 <h3>Keywords</h3> 265 266 <h4 id="_inquad_keyword_ONSPHERE">ONSPHERE 267 268 269 270 271 272 273 274 275 </h4> 276 277 <div class="comments"> to specify that the quadilateral are on a sphere and 134 278 that teir coordinates are longitude-latitude coordinates. In this 135 279 case, est-west periodicity, poles singularity and other pbs 136 280 related to longitude-latitude coordinates are managed 137 281 automatically. 138 139 ZOOMRADIUS:the zoom (circle centred on the (x,y) with a radius of 282 </div> 283 284 <h4 id="_inquad_keyword_DOUBLE">DOUBLE 285 286 287 288 289 290 291 292 293 </h4> 294 295 <div class="comments"> use double precision to perform the computation 296 </div> 297 298 <h4 id="_inquad_keyword_ZOOMRADIUS">ZOOMRADIUS 299 300 301 302 303 304 305 306 307 </h4> 308 309 <div class="comments"> :the zoom (circle centred on the (x,y) with a radius of 140 310 zoomradius degree where we look for the the quadrilateral which; contains the (x,y) point) used for the satellite projection 141 311 when /onsphere is activated. Default is 4 and seems to be the 142 312 minimum which can be used. Can be increase if the cell size is 143 313 larger than 5 degrees. 144 145 /NOPRINT: to suppress the print messages. 146 147 OUTPUTS: 148 149 res, a n element vector. Where n is the number of elements of 150 x. res[i]=j means that the point number i is located in the 151 quadrilateral number j with (0 <= j <= n_elements(x0)-1) 152 153 COMMON BLOCKS:none 154 155 SIDE EFFECTS: 156 157 RESTRICTIONS: I think degenerated quadrilateral (e.g. flat of 158 twisted) is not work. This has to be tested. 159 160 EXAMPLE: 314 </div> 315 316 <h4 id="_inquad_keyword_NOPRINT">NOPRINT 317 318 319 320 321 322 323 324 325 </h4> 326 327 <div class="comments"> to suppress the print messages. 328 </div> 329 330 <h4 id="_inquad_keyword_NEWCOORD">NEWCOORD 331 332 333 334 335 336 337 338 339 </h4> 340 341 <div class="comments"></div> 342 343 344 345 <h3>Examples</h3><div class="value"> 346 347 res = inquad(x, y, x1, y1, x2, y2, x3, y3, x4, y4) 348 349 161 350 162 351 x = 1.*[1, 2, 6, 7, 3] … … 176 365 177 366 On a sphere see clickincell.pro... 178 179 MODIFICATION HISTORY:</div> 180 181 182 183 184 <h3>Parameters</h3> 185 186 187 <h4 id="_inquad_param_x">x 188 189 190 191 192 193 194 195 196 </h4> 197 198 <div class="comments"></div> 199 200 <h4 id="_inquad_param_y">y 201 202 203 204 205 206 207 208 209 </h4> 210 211 <div class="comments"></div> 212 213 <h4 id="_inquad_param_x1">x1 214 215 216 217 218 219 220 221 222 </h4> 223 224 <div class="comments"></div> 225 226 <h4 id="_inquad_param_y1">y1 227 228 229 230 231 232 233 234 235 </h4> 236 237 <div class="comments"></div> 238 239 <h4 id="_inquad_param_x2">x2 240 241 242 243 244 245 246 247 248 </h4> 249 250 <div class="comments"></div> 251 252 <h4 id="_inquad_param_y2">y2 253 254 255 256 257 258 259 260 261 </h4> 262 263 <div class="comments"></div> 264 265 <h4 id="_inquad_param_x3">x3 266 267 268 269 270 271 272 273 274 </h4> 275 276 <div class="comments"></div> 277 278 <h4 id="_inquad_param_y3">y3 279 280 281 282 283 284 285 286 287 </h4> 288 289 <div class="comments"></div> 290 291 <h4 id="_inquad_param_x4">x4 292 293 294 295 296 297 298 299 300 </h4> 301 302 <div class="comments"></div> 303 304 <h4 id="_inquad_param_y4">y4 305 306 307 308 309 310 311 312 313 </h4> 314 315 <div class="comments"></div> 316 317 318 319 320 321 322 <h3>Keywords</h3> 323 324 <h4 id="_inquad_keyword_ONSPHERE">ONSPHERE 325 326 327 328 329 330 331 332 333 </h4> 334 335 <div class="comments"></div> 336 337 <h4 id="_inquad_keyword_DOUBLE">DOUBLE 338 339 340 341 342 343 344 345 346 </h4> 347 348 <div class="comments"></div> 349 350 <h4 id="_inquad_keyword_ZOOMRADIUS">ZOOMRADIUS 351 352 353 354 355 356 357 358 359 </h4> 360 361 <div class="comments"></div> 362 363 <h4 id="_inquad_keyword_NOPRINT">NOPRINT 364 365 366 367 368 369 370 371 372 </h4> 373 374 <div class="comments"></div> 375 376 <h4 id="_inquad_keyword_NEWCOORD">NEWCOORD 377 378 379 380 381 382 383 384 385 </h4> 386 387 <div class="comments"></div> 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 367 </div> 368 <h3>Version history</h3> 369 370 371 <h4>History</h4><div class="value"> 372 Sebastien Masson (smasson@lodyc.jussieu.fr) 373 August 2003 374 Based on Convert_clic_ij.pro written by Gurvan Madec 375 </div> 376 377 378 <h3>Known issues</h3> 379 380 381 382 <h4>Restrictions</h4><div class="value"> I think degenerated quadrilateral (e.g. flat of 383 twisted) is not work. This has to be tested. 384 </div> 403 385 404 386 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/inrecgrid.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> given - a list of points, (x,y) position 90 - the x and y limits of a rectangular grid 91 find in which cell is located each given point. 92 </div> 90 93 91 94 … … 102 105 <div class="routine_details" id="_inrecgrid"> 103 106 104 <h2><a class="top" href="#container">top</a>inrecgrid </h2> 107 <h2><a class="top" href="#container">top</a>inrecgrid <span class="categories"> no DO loop, use the wonderfull value_locate function! 108 </span></h2> 105 109 106 110 <p class="header"> … … 108 112 109 113 <div class="comments"> 110 NAME: inrecgrid 111 112 PURPOSE: given - a list of points, (x,y) position 113 - the x and y limits of a rectangular grid 114 find in which cell is located each given point. 115 116 CATEGORY: no DO loop, use the wonderfull value_locate function! 117 118 CALLING SEQUENCE:res = inrecgrid(xin, yin, left, bottom) 119 120 INPUTS: 121 122 x1d: a 1d array, the x position on the points 123 y1d: a 1d array, the y position on the points 124 left: a 1d, monotonically increasing array, the position of the 125 "left" border of each cell. 126 bottom: a 1d, monotonically increasing array, the position of the 114 </div> 115 116 <h3>Return value</h3><div class="value"> the index on the cell accoring to the 2d array defined by 117 left and bottom. 118 </div> 119 120 121 <h3>Parameters</h3> 122 123 124 <h4 id="_inrecgrid_param_x1d">x1d 125 <span class="attr">in</span> 126 127 128 <span class="attr">required</span> 129 130 131 132 133 </h4> 134 135 <div class="comments"> a 1d array, the x position on the points</div> 136 137 <h4 id="_inrecgrid_param_y1d">y1d 138 <span class="attr">in</span> 139 140 141 <span class="attr">required</span> 142 143 144 145 146 </h4> 147 148 <div class="comments"> a 1d, monotonically increasing array, the position of the 149 "left" border of each cell.</div> 150 151 <h4 id="_inrecgrid_param_left">left 152 153 154 155 156 157 158 159 160 </h4> 161 162 <div class="comments"></div> 163 164 <h4 id="_inrecgrid_param_bottom">bottom 165 <span class="attr">in</span> 166 167 168 <span class="attr">required</span> 169 170 171 172 173 </h4> 174 175 <div class="comments"> a 1d, monotonically increasing array, the position of the 127 176 "bottom" border of each cell. 128 177 129 OPTIONAL INPUTS: 130 131 KEYWORD PARAMETERS:; 132 133 /output2d: to get the output as a 2d array (2,n_elements(x1d)), 178 </div> 179 180 181 182 183 184 185 <h3>Keywords</h3> 186 187 <h4 id="_inrecgrid_keyword_output2d">output2d 188 189 190 191 192 193 194 195 196 </h4> 197 198 <div class="comments"> to get the output as a 2d array (2,n_elements(x1d)), 134 199 with res[0,*] the x index accoring to the 1d array defined by 135 200 left and res[1,*] the y index accoring to the 1d array defined by 136 201 bottom. 137 138 checkout=[rbgrid,ubgrid] specify the right and upper bondaries of 202 </div> 203 204 <h4 id="_inrecgrid_keyword_checkout">checkout 205 206 207 208 209 210 211 212 213 </h4> 214 215 <div class="comments">=[rbgrid,ubgrid] specify the right and upper bondaries of 139 216 the grid and check if some points are out. 140 141 OUTPUTS:the index on the cell accoring to the 2d array defined by 142 left and bottom. 143 144 OPTIONAL OUTPUTS: 145 146 COMMON BLOCKS: no 147 148 SIDE EFFECTS: 149 150 RESTRICTIONS: 151 152 PROCEDURE: 153 154 EXAMPLE: 217 </div> 218 219 220 221 <h3>Examples</h3><div class="value"> 222 res = inrecgrid(xin, yin, left, bottom) 223 224 155 225 156 226 IDL> a=indgen(5) … … 164 234 3.00000 2.00000 165 235 2.00000 1.00000 166 167 MODIFICATION HISTORY:</div> 168 169 170 171 172 <h3>Parameters</h3> 173 174 175 <h4 id="_inrecgrid_param_x1d">x1d 176 177 178 179 180 181 182 183 184 </h4> 185 186 <div class="comments"></div> 187 188 <h4 id="_inrecgrid_param_y1d">y1d 189 190 191 192 193 194 195 196 197 </h4> 198 199 <div class="comments"></div> 200 201 <h4 id="_inrecgrid_param_left">left 202 203 204 205 206 207 208 209 210 </h4> 211 212 <div class="comments"></div> 213 214 <h4 id="_inrecgrid_param_bottom">bottom 215 216 217 218 219 220 221 222 223 </h4> 224 225 <div class="comments"></div> 226 227 228 229 230 231 232 <h3>Keywords</h3> 233 234 <h4 id="_inrecgrid_keyword_output2d">output2d 235 236 237 238 239 240 241 242 243 </h4> 244 245 <div class="comments"></div> 246 247 <h4 id="_inrecgrid_keyword_checkout">checkout 248 249 250 251 252 253 254 255 256 </h4> 257 258 <div class="comments"></div> 259 260 261 262 263 264 265 266 236 </div> 237 <h3>Version history</h3> 238 239 240 <h4>History</h4><div class="value"> 241 S. Masson (smasson@lodyc.jussieu.fr) 242 July 3rd, 2002 243 October 3rd, 2003: use value_locate</div> 267 244 268 245 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/ll_narcs_distances.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> 90 This function returns the longitude and latitude [lon, lat] of 91 a point a given arc distance (-pi <= Arc_Dist <= pi), and azimuth (Az), 92 from a specified location Lon0, lat0. 93 Same as LL_ARC_DISTANCE but for n points without do loop. 94 95 96 Formula from Map Projections - a working manual. USGS paper 97 1395. Equations (5-5) and (5-6). 98 </div> 90 99 91 100 … … 102 111 <div class="routine_details" id="_LL_NARCS_DISTANCES"> 103 112 104 <h2><a class="top" href="#container">top</a>LL_NARCS_DISTANCES </h2> 113 <h2><a class="top" href="#container">top</a>LL_NARCS_DISTANCES <span class="categories"> Mapping, geography 114 </span></h2> 105 115 106 116 <p class="header"> … … 108 118 109 119 <div class="comments"> 110 NAME: 111 LL_NARCS_DISTANCES 112 113 PURPOSE: 114 This function returns the longitude and latitude [lon, lat] of 115 a point a given arc distance (-pi <= Arc_Dist <= pi), and azimuth (Az), 116 from a specified location Lon0, lat0. 117 Same as LL_ARC_DISTANCE but for n points without do loop. 118 119 CATEGORY: 120 Mapping, geography. 121 122 CALLING SEQUENCE: 123 Result = LL_NARCS_DISTANCES(Lon, lat0, Arc_Dist, Az) 124 125 INPUTS: 126 Lon0: An array containing the longitude of the starting point. 127 Values are assumed to be in radians unless the keyword 128 DEGREES is set. 129 Lat0: An array containing the latitude of the starting point. 130 Values are assumed to be in radians unless the keyword 131 DEGREES is set. 132 Arc_Dist: The arc distance from Lon_lat0. The value must be between 133 -!PI and +!PI. To express distances in arc units, divide 134 by the radius of the globe expressed in the original units. 135 For example, if the radius of the earth is 6371 km, divide 136 the distance in km by 6371 to obtain the arc distance. 137 Az: The azimuth from Lon_lat0. The value is assumed to be in 138 radians unless the keyword DEGREES is set. 139 140 KEYWORD PARAMETERS: 141 DEGREES: Set this keyword to express all measurements and 142 results in degrees. 143 144 OUTPUTS: 145 This function returns a (2, n) array containing the 120 </div> 121 122 <h3>Return value</h3><div class="value"> 123 a (2, n) array containing the 146 124 longitude / latitude of the resultings points. Values are in radians 147 125 unless the keyword DEGREES is set. 148 149 PROCEDURE: 150 Formula from Map Projections - a working manual. USGS paper 151 1395. Equations (5-5) and (5-6). 152 153 EXAMPLE: 154 Lon_lat0 = [1.0, 2.0] ; Initial point specified in radians 155 Arc_Dist = 2.0 ; Arc distance in radians 156 Az = 1.0 ; Azimuth in radians 157 Result = LL_ARC_DISTANCE(Lon_lat0, Arc_Dist, Az) 158 PRINT, Result 159 2.91415 -0.622234 160 161 IDL> lon0 = [-10, 20, 100] 162 IDL> lat0 = [0, -10, 45] 163 IDL> lon1 = [10, 60, 280] 164 IDL> lat1 = [0, 10, 45] 165 IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 166 IDL> earthradius = 6378206.4d0 167 IDL> res = ll_narcs_distances(lon0, lat0, dist/earthradius, azi, /degrees) 168 IDL> print, reform(res[0, *]) 169 10.000000 60.000000 280.00000 170 IDL> print, reform(res[1, *]) 126 </div> 127 128 129 <h3>Parameters</h3> 130 131 132 <h4 id="_LL_NARCS_DISTANCES_param_lon0">lon0 133 <span class="attr">in</span> 134 135 136 <span class="attr">required</span> 137 138 139 140 141 </h4> 142 143 <div class="comments"> An array containing the longitude of the starting point. 144 Values are assumed to be in radians unless the keyword 145 DEGREES is set.</div> 146 147 <h4 id="_LL_NARCS_DISTANCES_param_lat0">lat0 148 <span class="attr">in</span> 149 150 151 <span class="attr">required</span> 152 153 154 155 156 </h4> 157 158 <div class="comments"> An array containing the latitude of the starting point. 159 Values are assumed to be in radians unless the keyword 160 DEGREES is set.</div> 161 162 <h4 id="_LL_NARCS_DISTANCES_param_arc_dist">arc_dist 163 <span class="attr">in</span> 164 165 166 <span class="attr">required</span> 167 168 169 170 171 </h4> 172 173 <div class="comments"> The arc distance from Lon_lat0. The value must be between 174 -!PI and +!PI. To express distances in arc units, divide 175 by the radius of the globe expressed in the original units. 176 For example, if the radius of the earth is 6371 km, divide 177 the distance in km by 6371 to obtain the arc distance. </div> 178 179 <h4 id="_LL_NARCS_DISTANCES_param_az">az 180 <span class="attr">in</span> 181 182 183 <span class="attr">required</span> 184 185 186 187 188 </h4> 189 190 <div class="comments"> The azimuth from Lon_lat0. The value is assumed to be in 191 radians unless the keyword DEGREES is set. 192 </div> 193 194 195 196 197 198 199 <h3>Keywords</h3> 200 201 <h4 id="_LL_NARCS_DISTANCES_keyword_DEGREES">DEGREES 202 203 204 205 206 207 208 209 210 </h4> 211 212 <div class="comments"> Set this keyword to express all measurements and 213 results in degrees. 214 </div> 215 216 217 218 <h3>Examples</h3><div class="value"> 219 Result = LL_NARCS_DISTANCES(Lon, lat0, Arc_Dist, Az) 220 221 222 Lon_lat0 = [1.0, 2.0]; Initial point specified in radians 223 Arc_Dist = 2.0; Arc distance in radians 224 Az = 1.0; Azimuth in radians 225 Result = LL_ARC_DISTANCE(Lon_lat0, Arc_Dist, Az) 226 PRINT, Result 227 2.91415 -0.622234 228 229 IDL> lon0 = [-10, 20, 100] 230 IDL> lat0 = [0, -10, 45] 231 IDL> lon1 = [10, 60, 280] 232 IDL> lat1 = [0, 10, 45] 233 IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 234 IDL> earthradius = 6378206.4d0 235 IDL> res = ll_narcs_distances(lon0, lat0, dist/earthradius, azi, /degrees) 236 IDL> print, reform(res[0, *]) 237 10.000000 60.000000 280.00000 238 IDL> print, reform(res[1, *]) 171 239 1.1999280e-15 10.000000 45.000000 172 173 MODIFICATION HISTORY: 174 Based on the IDL function ll_arc_distance.pro,v 1.11 2003/02/03</div> 175 176 177 178 179 <h3>Parameters</h3> 180 181 182 <h4 id="_LL_NARCS_DISTANCES_param_lon0">lon0 183 184 185 186 187 188 189 190 191 </h4> 192 193 <div class="comments"></div> 194 195 <h4 id="_LL_NARCS_DISTANCES_param_lat0">lat0 196 197 198 199 200 201 202 203 204 </h4> 205 206 <div class="comments"></div> 207 208 <h4 id="_LL_NARCS_DISTANCES_param_arc_dist">arc_dist 209 210 211 212 213 214 215 216 217 </h4> 218 219 <div class="comments"></div> 220 221 <h4 id="_LL_NARCS_DISTANCES_param_az">az 222 223 224 225 226 227 228 229 230 </h4> 231 232 <div class="comments"></div> 233 234 235 236 237 238 239 <h3>Keywords</h3> 240 241 <h4 id="_LL_NARCS_DISTANCES_keyword_DEGREES">DEGREES 242 243 244 245 246 247 248 249 250 </h4> 251 252 <div class="comments"></div> 253 254 255 256 257 258 259 260 240 </div> 241 <h3>Version history</h3> 242 243 244 <h4>History</h4><div class="value"> 245 Based on the IDL function ll_arc_distance.pro,v 1.11 2003/02/03 246 Sebastien Masson (smasson@lodyc.jussieu.fr) 247 August 2005</div> 261 248 262 249 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/map_npoints.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 90 91 92 93 94 95 96 97 98 99 <div id="routine_details"> 100 101 102 <div class="routine_details" id="_Map_npoints"> 103 104 <h2><a class="top" href="#container">top</a>Map_npoints </h2> 105 106 <p class="header"> 107 <span class="result">result = </span>Map_npoints(<span class="result"><a href="#_Map_npoints_param_lon0">lon0</a>, <a href="#_Map_npoints_param_lat0">lat0</a>, <a href="#_Map_npoints_param_lon1">lon1</a>, <a href="#_Map_npoints_param_lat1">lat1</a></span>, <a href="#_Map_npoints_keyword_azimuth">azimuth</a>=<span class="result">azimuth</span>, <a href="#_Map_npoints_keyword_RADIANS">RADIANS</a>=<span class="result">RADIANS</span>, <a href="#_Map_npoints_keyword_RADIUS">RADIUS</a>=<span class="result">RADIUS</span>, <a href="#_Map_npoints_keyword_MIDDLE">MIDDLE</a>=<span class="result">MIDDLE</span>, <a href="#_Map_npoints_keyword_TWO_BY_TWO">TWO_BY_TWO</a>=<span class="result">TWO_BY_TWO</span>)</p> 108 109 <div class="comments"> 110 NAME: 111 Map_nPoints 112 113 PURPOSE: 114 Return the distance in meter between all np0 points P0 and all 89 <div id="file_comments"> 90 Return the distance in meter between all np0 points P0 and all 115 91 np1 points P1 on a sphere. If keyword /TWO_BY_TWO is given then 116 92 returns the distances between number n of P0 points and number … … 118 94 Same as map_2points with the meter parameter but for n points 119 95 without do loop. 120 121 CATEGORY: 122 Maps. 123 124 CALLING SEQUENCE: 125 Result = Map_nPoints(lon0, lat0, lon1, lat1) 126 127 INPUTS: 128 Lon0, Lat0 = np0 elements vector. longitudes and latitudes of 129 np0 points P0 130 Lon1, Lat1 = np1 elements vector. longitude and latitude of 131 np1 points P1 132 133 KEYWORD PARAMETERS: 134 135 AZIMUTH: A named variable that will receive the azimuth of the great 136 circle connecting the two points, P0 to P1 137 /MIDDLE: to get the longitude/latitude of the middle point betwen P0 and P1. 138 RADIANS = if set, inputs and angular outputs are in radians, otherwise 139 degrees. 140 RADIUS: If given, return the distance between the two points 141 calculated using the given radius. 142 Default value is the earth radius : 6378206.4d0 143 TWO_BY_TWO:If given,then Map_nPoints returns the distances between 144 number n of P0 points and number n of P1 points (in that case, 145 np0 and np1 must be equal). 146 147 OUTPUTS: 96 </div> 97 98 99 100 101 102 103 104 105 106 <div id="routine_details"> 107 108 109 <div class="routine_details" id="_Map_npoints"> 110 111 <h2><a class="top" href="#container">top</a>Map_npoints <span class="categories"> Maps 112 </span></h2> 113 114 <p class="header"> 115 <span class="result">result = </span>Map_npoints(<span class="result"><a href="#_Map_npoints_param_lon0">lon0</a>, <a href="#_Map_npoints_param_lat0">lat0</a>, <a href="#_Map_npoints_param_lon1">lon1</a>, <a href="#_Map_npoints_param_lat1">lat1</a></span>, <a href="#_Map_npoints_keyword_azimuth">azimuth</a>=<span class="result">azimuth</span>, <a href="#_Map_npoints_keyword_RADIANS">RADIANS</a>=<span class="result">RADIANS</span>, <a href="#_Map_npoints_keyword_RADIUS">RADIUS</a>=<span class="result">RADIUS</span>, <a href="#_Map_npoints_keyword_MIDDLE">MIDDLE</a>=<span class="result">MIDDLE</span>, <a href="#_Map_npoints_keyword_TWO_BY_TWO">TWO_BY_TWO</a>=<span class="result">TWO_BY_TWO</span>)</p> 116 117 <div class="comments"> 118 </div> 119 120 <h3>Return value</h3><div class="value"> 148 121 An (np0,np1) array giving the distance in meter between np0 149 122 points P0 and np1 points P1. Element (i,j) of the ouput is the … … 153 126 and P1[i] (in that case, we have np0 = np1 = np) 154 127 if /MIDDLE see this keyword. 155 156 EXAMPLES: 157 IDL> print, $ 158 map_npoints([-105.15,1],[40.02,1],[-0.07,100,50],[51.30,20,0]) 159 7551369.3 5600334.8 160 12864354. 10921254. 161 14919237. 5455558.8 162 163 IDL> lon0 = [-10, 20, 100] 164 IDL> lat0 = [0, -10, 45] 165 IDL> lon1 = [10, 60, 280] 166 IDL> lat1 = [0, 10, 45] 167 IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi) 168 IDL> help, dist, azi 169 DIST DOUBLE = Array[3, 3] 170 AZI DOUBLE = Array[3, 3] 171 IDL> print, dist[4*lindgen(3)], azi[4*lindgen(3)] 172 2226414.0 4957944.5 10018863. 173 90.000000 64.494450 4.9615627e-15 174 IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 175 IDL> help, dist, azi 176 DIST DOUBLE = Array[3] 177 AZI DOUBLE = Array[3] 178 IDL> print, dist, azi 179 2226414.0 4957944.5 10018863. 180 90.000000 64.494450 4.9615627e-15 181 IDL> print, map_2points(lon0[0], lat0[0], lon1[0], lat1[0]) 182 20.000000 90.000000 183 IDL> print, map_npoints(lon0[0], lat0[0], lon1[0], lat1[0], azi=azi)/6378206.4d0 / !dtor, azi 184 20.000000 185 90.000000 186 187 IDL> lon0 = [-10, 20, 100] 188 IDL> lat0 = [0, -10, 45] 189 IDL> lon1 = [10, 60, 280] 190 IDL> lat1 = [0, 10, 45] 191 IDL> mid = map_npoints(lon0, lat0, lon1, lat1, /middle, /two_by_two) 192 IDL> print, reform(mid[0,*]), reform(mid[1,*]) 193 0.0000000 40.000000 190.00000 194 0.0000000 -1.5902773e-15 90.000000 195 IDL> print, (map_2points(lon0[0], lat0[0], lon1[0], lat1[0], npath = 3))[*, 1] 196 0.0000000 0.0000000 197 IDL> print, (map_2points(lon0[1], lat0[1], lon1[1], lat1[1], npath = 3))[*, 1] 198 40.000000 -1.5902773e-15 199 IDL> print, (map_2points(lon0[2], lat0[2], lon1[2], lat1[2], npath = 3))[*, 1] 200 190.00000 90.000000 201 202 MODIFICATION HISTORY: 203 Based on the IDL function map_2points.pro,v 1.6 2001/01/15</div> 204 205 128 </div> 206 129 207 130 … … 210 133 211 134 <h4 id="_Map_npoints_param_lon0">lon0 135 <span class="attr">in</span> 136 137 138 <span class="attr">required</span> 139 140 141 142 143 </h4> 144 145 <div class="comments"> np0 elements vector. longitudes and latitudes of np0 points P0 </div> 146 147 <h4 id="_Map_npoints_param_lat0">lat0 212 148 213 149 … … 222 158 <div class="comments"></div> 223 159 224 <h4 id="_Map_npoints_param_lat0">lat0 160 <h4 id="_Map_npoints_param_lon1">lon1 161 <span class="attr">in</span> 162 163 164 <span class="attr">required</span> 165 166 167 168 169 </h4> 170 171 <div class="comments"> np1 elements vector. longitude and latitude of np1 points P1 172 </div> 173 174 <h4 id="_Map_npoints_param_lat1">lat1 225 175 226 176 … … 235 185 <div class="comments"></div> 236 186 237 <h4 id="_Map_npoints_param_lon1">lon1 238 239 240 241 242 243 244 245 246 </h4>247 248 <div class="comments"></div>249 250 <h4 id="_Map_npoints_param_lat1">lat1 251 252 253 254 255 256 257 258 259 </h4>260 261 <div class="comments"></div>262 263 187 264 188 … … 279 203 </h4> 280 204 281 <div class="comments"></div> 205 <div class="comments"> A named variable that will receive the azimuth of the great 206 circle connecting the two points, P0 to P1</div> 282 207 283 208 <h4 id="_Map_npoints_keyword_RADIANS">RADIANS … … 292 217 </h4> 293 218 294 <div class="comments"></div> 219 <div class="comments"> = if set, inputs and angular outputs are in radians, otherwise 220 degrees.</div> 295 221 296 222 <h4 id="_Map_npoints_keyword_RADIUS">RADIUS … … 305 231 </h4> 306 232 307 <div class="comments"></div> 233 <div class="comments"> If given, return the distance between the two points 234 calculated using the given radius. 235 Default value is the earth radius : 6378206.4d0</div> 308 236 309 237 <h4 id="_Map_npoints_keyword_MIDDLE">MIDDLE … … 318 246 </h4> 319 247 320 <div class="comments"> </div>248 <div class="comments"> to get the longitude/latitude of the middle point betwen P0 and P1.</div> 321 249 322 250 <h4 id="_Map_npoints_keyword_TWO_BY_TWO">TWO_BY_TWO … … 331 259 </h4> 332 260 333 <div class="comments"></div> 334 335 336 337 338 339 340 341 261 <div class="comments">:If given,then Map_nPoints returns the distances between 262 number n of P0 points and number n of P1 points (in that case, 263 np0 and np1 must be equal). 264 </div> 265 266 267 268 <h3>Examples</h3><div class="value"> 269 Result = Map_nPoints(lon0, lat0, lon1, lat1) 270 271 272 IDL> print, $ 273 map_npoints([-105.15,1],[40.02,1],[-0.07,100,50],[51.30,20,0]) 274 7551369.3 5600334.8 275 12864354. 10921254. 276 14919237. 5455558.8 277 278 IDL> lon0 = [-10, 20, 100] 279 IDL> lat0 = [0, -10, 45] 280 IDL> lon1 = [10, 60, 280] 281 IDL> lat1 = [0, 10, 45] 282 IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi) 283 IDL> help, dist, azi 284 DIST DOUBLE = Array[3, 3] 285 AZI DOUBLE = Array[3, 3] 286 IDL> print, dist[4*lindgen(3)], azi[4*lindgen(3)] 287 2226414.0 4957944.5 10018863. 288 90.000000 64.494450 4.9615627e-15 289 IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 290 IDL> help, dist, azi 291 DIST DOUBLE = Array[3] 292 AZI DOUBLE = Array[3] 293 IDL> print, dist, azi 294 2226414.0 4957944.5 10018863. 295 90.000000 64.494450 4.9615627e-15 296 IDL> print, map_2points(lon0[0], lat0[0], lon1[0], lat1[0]) 297 20.000000 90.000000 298 IDL> print, map_npoints(lon0[0], lat0[0], lon1[0], lat1[0], azi=azi)/6378206.4d0 / !dtor, azi 299 20.000000 300 90.000000 301 302 IDL> lon0 = [-10, 20, 100] 303 IDL> lat0 = [0, -10, 45] 304 IDL> lon1 = [10, 60, 280] 305 IDL> lat1 = [0, 10, 45] 306 IDL> mid = map_npoints(lon0, lat0, lon1, lat1, /middle, /two_by_two) 307 IDL> print, reform(mid[0,*]), reform(mid[1,*]) 308 0.0000000 40.000000 190.00000 309 0.0000000 -1.5902773e-15 90.000000 310 IDL> print, (map_2points(lon0[0], lat0[0], lon1[0], lat1[0], npath = 3))[*, 1] 311 0.0000000 0.0000000 312 IDL> print, (map_2points(lon0[1], lat0[1], lon1[1], lat1[1], npath = 3))[*, 1] 313 40.000000 -1.5902773e-15 314 IDL> print, (map_2points(lon0[2], lat0[2], lon1[2], lat1[2], npath = 3))[*, 1] 315 190.00000 90.000000 316 </div> 317 <h3>Version history</h3> 318 319 320 <h4>History</h4><div class="value"> 321 Based on the IDL function map_2points.pro,v 1.6 2001/01/15 322 Sebastien Masson (smasson@lodyc.jussieu.fr) 323 October 2003</div> 342 324 343 325 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/neighbor.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> 90 find the closetest point of (P0) within a list of np1 points 91 P1 Which can be on a sphere 92 </div> 90 93 91 94 … … 102 105 <div class="routine_details" id="_neighbor"> 103 106 104 <h2><a class="top" href="#container">top</a>neighbor </h2> 107 <h2><a class="top" href="#container">top</a>neighbor <span class="categories"> Maps 108 </span></h2> 105 109 106 110 <p class="header"> … … 108 112 109 113 <div class="comments"> 110 NAME: 111 neighbor 112 113 PURPOSE: 114 find the closetest point of (P0) within a list of np1 points 115 P1 Which can be on a sphere 116 117 CATEGORY: 118 Maps. 119 120 CALLING SEQUENCE: 121 Result = neighbor(lon0, lat0, lon1, lat1) 122 123 INPUTS: 124 Lon0, Lat0 = scalar. longitudes and latitudes of point P0. 125 Lon1, Lat1 = np1 elements vector. longitude and latitude of 126 np1 points P1 127 128 KEYWORD PARAMETERS: 129 RADIANS = if set, inputs and angular outputs are in radians, otherwise 130 degrees. 131 DISTANCE = dis, to get back the distances between P0 and the np1 132 points P1 in the variable dis. 133 /SPHERE to activate if points are located on a sphere. 134 135 OUTPUTS: 114 </div> 115 116 <h3>Return value</h3><div class="value"> 136 117 index giving the P1[index] point that is the closetest point 137 118 of (P0) 138 139 EXAMPLES: 119 </div> 120 121 122 <h3>Parameters</h3> 123 124 125 <h4 id="_neighbor_param_p0lon">p0lon 126 <span class="attr">in</span> 127 128 129 <span class="attr">required</span> 130 131 132 133 134 </h4> 135 136 <div class="comments"> scalar. longitudes of point P0. </div> 137 138 <h4 id="_neighbor_param_p0lat">p0lat 139 <span class="attr">in</span> 140 141 142 <span class="attr">required</span> 143 144 145 146 147 </h4> 148 149 <div class="comments"> scalar. latitudes of point P0. 150 </div> 151 152 <h4 id="_neighbor_param_neighlon">neighlon 153 154 155 156 157 158 159 160 161 </h4> 162 163 <div class="comments"></div> 164 165 <h4 id="_neighbor_param_neighlat">neighlat 166 167 168 169 170 171 172 173 174 </h4> 175 176 <div class="comments"></div> 177 178 179 180 181 182 183 <h3>Keywords</h3> 184 185 <h4 id="_neighbor_keyword_sphere">sphere 186 187 188 189 190 191 192 193 194 </h4> 195 196 <div class="comments"> to activate if points are located on a sphere. 197 </div> 198 199 <h4 id="_neighbor_keyword_distance">distance 200 201 202 203 204 205 206 207 208 </h4> 209 210 <div class="comments"> dis, to get back the distances between P0 and the np1 211 points P1 in the variable dis.</div> 212 213 <h4 id="_neighbor_keyword_radians">radians 214 215 216 217 218 219 220 221 222 </h4> 223 224 <div class="comments"> if set, inputs and angular outputs are in radians, otherwise 225 degrees.</div> 226 227 228 229 <h3>Examples</h3><div class="value"> 230 IDL> Result = neighbor(lon0, lat0, lon1, lat1) 231 232 140 233 IDL> print, neighbor(-105.15,40.02,[-0.07,100,50],[51.30,20,0], $ 141 234 distance=dis) … … 143 236 IDL> print, dis 144 237 105.684 206.125 160.228 145 146 MODIFICATION HISTORY:</div> 147 148 149 150 151 <h3>Parameters</h3> 152 153 154 <h4 id="_neighbor_param_p0lon">p0lon 155 156 157 158 159 160 161 162 163 </h4> 164 165 <div class="comments"></div> 166 167 <h4 id="_neighbor_param_p0lat">p0lat 168 169 170 171 172 173 174 175 176 </h4> 177 178 <div class="comments"></div> 179 180 <h4 id="_neighbor_param_neighlon">neighlon 181 182 183 184 185 186 187 188 189 </h4> 190 191 <div class="comments"></div> 192 193 <h4 id="_neighbor_param_neighlat">neighlat 194 195 196 197 198 199 200 201 202 </h4> 203 204 <div class="comments"></div> 205 206 207 208 209 210 211 <h3>Keywords</h3> 212 213 <h4 id="_neighbor_keyword_sphere">sphere 214 215 216 217 218 219 220 221 222 </h4> 223 224 <div class="comments"></div> 225 226 <h4 id="_neighbor_keyword_distance">distance 227 228 229 230 231 232 233 234 235 </h4> 236 237 <div class="comments"></div> 238 239 <h4 id="_neighbor_keyword_radians">radians 240 241 242 243 244 245 246 247 248 </h4> 249 250 <div class="comments"></div> 251 252 253 254 255 256 257 258 238 </div> 239 <h3>Version history</h3> 240 241 242 <h4>History</h4><div class="value"> 243 Sebastien Masson (smasson@lodyc.jussieu.fr) 244 October 2003</div> 259 245 260 246 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/quadrilateral2square.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 90 91 92 93 94 95 96 97 98 99 <div id="routine_details"> 100 101 102 <div class="routine_details" id="_quadrilateral2square"> 103 104 <h2><a class="top" href="#container">top</a>quadrilateral2square </h2> 105 106 <p class="header"> 107 <span class="result">result = </span>quadrilateral2square(<span class="result"><a href="#_quadrilateral2square_param_x0in">x0in</a>, <a href="#_quadrilateral2square_param_y0in">y0in</a>, <a href="#_quadrilateral2square_param_x1in">x1in</a>, <a href="#_quadrilateral2square_param_y1in">y1in</a>, <a href="#_quadrilateral2square_param_x2in">x2in</a>, <a href="#_quadrilateral2square_param_y2in">y2in</a>, <a href="#_quadrilateral2square_param_x3in">x3in</a>, <a href="#_quadrilateral2square_param_y3in">y3in</a>, <a href="#_quadrilateral2square_param_xxin">xxin</a>, <a href="#_quadrilateral2square_param_yyin">yyin</a></span>, <a href="#_quadrilateral2square_keyword_PERF">PERF</a>=<span class="result">PERF</span>)</p> 108 109 <div class="comments"> 110 NAME:quadrilateral2square 111 112 PURPOSE:warm (or map) an arbitrary quadrilateral onto a unit square 89 <div id="file_comments"> warm (or map) an arbitrary quadrilateral onto a unit square 113 90 according to the 4-point correspondences: 114 91 (x0,y0) -> (0,0) … … 120 97 lines in all orientations and permit quadrilateral to quadrilateral 121 98 mappings. see ref. bellow. 122 123 CATEGORY:image/grid manipulation 124 125 CALLING SEQUENCE: 126 127 res = square2quadrilateral(x0,y0,x1,y1,x2,y2,x3,y3,xin,yin) 128 129 INPUTS: 130 131 x0,y0,x1,y1,x2,y2,x3,y3 the coordinates of the quadrilateral 132 (see above for correspondance with the unit square). Can be 133 scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 134 given in the anticlockwise order. 135 136 xin,yin:the coordinates of the point(s) for which we want to do the 137 mapping. Can be scalar or array. 138 139 KEYWORD PARAMETERS: 140 141 /DOUBLE: use double precision to perform the computation 142 143 OUTPUTS: 99 </div> 100 101 102 103 104 105 106 107 108 109 <div id="routine_details"> 110 111 112 <div class="routine_details" id="_quadrilateral2square"> 113 114 <h2><a class="top" href="#container">top</a>quadrilateral2square <span class="categories"> image, grid manipulation 115 </span></h2> 116 117 <p class="header"> 118 <span class="result">result = </span>quadrilateral2square(<span class="result"><a href="#_quadrilateral2square_param_x0in">x0in</a>, <a href="#_quadrilateral2square_param_y0in">y0in</a>, <a href="#_quadrilateral2square_param_x1in">x1in</a>, <a href="#_quadrilateral2square_param_y1in">y1in</a>, <a href="#_quadrilateral2square_param_x2in">x2in</a>, <a href="#_quadrilateral2square_param_y2in">y2in</a>, <a href="#_quadrilateral2square_param_x3in">x3in</a>, <a href="#_quadrilateral2square_param_y3in">y3in</a>, <a href="#_quadrilateral2square_param_xxin">xxin</a>, <a href="#_quadrilateral2square_param_yyin">yyin</a></span>, <a href="#_quadrilateral2square_keyword_PERF">PERF</a>=<span class="result">PERF</span>)</p> 119 120 <div class="comments"> 121 </div> 122 123 <h3>Return value</h3><div class="value"> 144 124 145 125 (2,n) array: the new coodinates (xout, yout) of the (xin,yin) … … 148 128 x0. If xin is an array , then n is equal to the number of 149 129 elements of xin. 150 151 COMMON BLOCKS:none 152 153 SIDE EFFECTS: 154 155 RESTRICTIONS: I think degenerated quadrilateral (e.g. flat of 156 twisted) is not work. This has to be tested. 157 158 EXAMPLE: 130 </div> 131 132 133 <h3>Parameters</h3> 134 135 136 <h4 id="_quadrilateral2square_param_x0in">x0in 137 <span class="attr">in</span> 138 139 140 <span class="attr">required</span> 141 142 143 144 145 </h4> 146 147 <div class="comments"> the coordinates of the quadrilateral</div> 148 149 <h4 id="_quadrilateral2square_param_y0in">y0in 150 <span class="attr">in</span> 151 152 153 <span class="attr">required</span> 154 155 156 157 158 </h4> 159 160 <div class="comments"> the coordinates of the quadrilateral</div> 161 162 <h4 id="_quadrilateral2square_param_x1in">x1in 163 <span class="attr">in</span> 164 165 166 <span class="attr">required</span> 167 168 169 170 171 </h4> 172 173 <div class="comments"> the coordinates of the quadrilateral</div> 174 175 <h4 id="_quadrilateral2square_param_y1in">y1in 176 <span class="attr">in</span> 177 178 179 <span class="attr">required</span> 180 181 182 183 184 </h4> 185 186 <div class="comments"> the coordinates of the quadrilateral</div> 187 188 <h4 id="_quadrilateral2square_param_x2in">x2in 189 <span class="attr">in</span> 190 191 192 <span class="attr">required</span> 193 194 195 196 197 </h4> 198 199 <div class="comments"> the coordinates of the quadrilateral</div> 200 201 <h4 id="_quadrilateral2square_param_y2in">y2in 202 <span class="attr">in</span> 203 204 205 <span class="attr">required</span> 206 207 208 209 210 </h4> 211 212 <div class="comments"> the coordinates of the quadrilateral</div> 213 214 <h4 id="_quadrilateral2square_param_x3in">x3in 215 <span class="attr">in</span> 216 217 218 <span class="attr">required</span> 219 220 221 222 223 </h4> 224 225 <div class="comments"> the coordinates of the quadrilateral</div> 226 227 <h4 id="_quadrilateral2square_param_y3in">y3in 228 <span class="attr">in</span> 229 230 231 <span class="attr">required</span> 232 233 234 235 236 </h4> 237 238 <div class="comments"> the coordinates of the quadrilateral 239 (see above for correspondance with the unit square). Can be 240 scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 241 given in the anticlockwise order. 242 </div> 243 244 <h4 id="_quadrilateral2square_param_xxin">xxin 245 <span class="attr">in</span> 246 247 248 <span class="attr">required</span> 249 250 251 252 253 </h4> 254 255 <div class="comments"> the coordinates of the point(s) for which we want to do the 256 mapping. Can be scalar or array.</div> 257 258 <h4 id="_quadrilateral2square_param_yyin">yyin 259 <span class="attr">in</span> 260 261 262 <span class="attr">required</span> 263 264 265 266 267 </h4> 268 269 <div class="comments"> the coordinates of the point(s) for which we want to do the 270 mapping. Can be scalar or array. 271 </div> 272 273 274 275 276 277 278 <h3>Keywords</h3> 279 280 <h4 id="_quadrilateral2square_keyword_PERF">PERF 281 282 283 284 285 286 287 288 289 </h4> 290 291 <div class="comments"></div> 292 293 294 295 <h3>Examples</h3><div class="value"> 296 297 res = square2quadrilateral(x0,y0,x1,y1,x2,y2,x3,y3,xin,yin) 298 299 159 300 160 301 IDL> splot,[0,5],[0,3],/nodata,xstyle=1,ystyle=1 … … 167 308 IDL> inorg=quadrilateral2square(2,1,3,0,5,1,2,3,out[0,*],out[1,*]) 168 309 IDL> tracegrille, reform(inorg[0,*],11,11), reform(inorg[1,*],11,11),color=indgen(12)*20 169 170 MODIFICATION HISTORY:</div> 171 172 173 174 175 <h3>Parameters</h3> 176 177 178 <h4 id="_quadrilateral2square_param_x0in">x0in 179 180 181 182 183 184 185 186 187 </h4> 188 189 <div class="comments"></div> 190 191 <h4 id="_quadrilateral2square_param_y0in">y0in 192 193 194 195 196 197 198 199 200 </h4> 201 202 <div class="comments"></div> 203 204 <h4 id="_quadrilateral2square_param_x1in">x1in 205 206 207 208 209 210 211 212 213 </h4> 214 215 <div class="comments"></div> 216 217 <h4 id="_quadrilateral2square_param_y1in">y1in 218 219 220 221 222 223 224 225 226 </h4> 227 228 <div class="comments"></div> 229 230 <h4 id="_quadrilateral2square_param_x2in">x2in 231 232 233 234 235 236 237 238 239 </h4> 240 241 <div class="comments"></div> 242 243 <h4 id="_quadrilateral2square_param_y2in">y2in 244 245 246 247 248 249 250 251 252 </h4> 253 254 <div class="comments"></div> 255 256 <h4 id="_quadrilateral2square_param_x3in">x3in 257 258 259 260 261 262 263 264 265 </h4> 266 267 <div class="comments"></div> 268 269 <h4 id="_quadrilateral2square_param_y3in">y3in 270 271 272 273 274 275 276 277 278 </h4> 279 280 <div class="comments"></div> 281 282 <h4 id="_quadrilateral2square_param_xxin">xxin 283 284 285 286 287 288 289 290 291 </h4> 292 293 <div class="comments"></div> 294 295 <h4 id="_quadrilateral2square_param_yyin">yyin 296 297 298 299 300 301 302 303 304 </h4> 305 306 <div class="comments"></div> 307 308 309 310 311 312 313 <h3>Keywords</h3> 314 315 <h4 id="_quadrilateral2square_keyword_PERF">PERF 316 317 318 319 320 321 322 323 324 </h4> 325 326 <div class="comments"></div> 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 310 </div> 311 <h3>Version history</h3> 312 313 314 <h4>History</h4><div class="value"> 315 Sebastien Masson (smasson@lodyc.jussieu.fr) 316 August 2003 317 Based on "Digital Image Warping" by G. Wolberg 318 IEEE Computer Society Press, Los Alamitos, California 319 Chapter 3, see p 52-56 320 </div> 321 322 323 <h3>Known issues</h3> 324 325 326 327 <h4>Restrictions</h4><div class="value"> I think degenerated quadrilateral (e.g. flat of 328 twisted) is not work. This has to be tested. 329 </div> 342 330 343 331 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/spl_fstdrv.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 90 91 92 93 94 95 96 97 98 99 <div id="routine_details"> 100 101 102 <div class="routine_details" id="_spl_fstdrv"> 103 104 <h2><a class="top" href="#container">top</a>spl_fstdrv </h2> 105 106 <p class="header"> 107 <span class="result">result = </span>spl_fstdrv(<span class="result"><a href="#_spl_fstdrv_param_x">x</a>, <a href="#_spl_fstdrv_param_y">y</a>, <a href="#_spl_fstdrv_param_yscd">yscd</a>, <a href="#_spl_fstdrv_param_x2">x2</a></span>)</p> 108 109 <div class="comments"> 110 NAME:spl_fstdrv 111 112 PURPOSE: SPL_FSTDRV returns the values of the first derivative of 89 <div id="file_comments"> SPL_FSTDRV returns the values of the first derivative of 113 90 the interpolating function at the points X2i. it is a double 114 91 precision array. … … 119 96 of X2. The interpolation method is based on cubic spline, corrected 120 97 in a way that interpolated value are also in ascending order 121 122 CATEGORY: 123 124 CALLING SEQUENCE: y2 = spl_fstdrv(x, y, yscd, x2) 125 126 INPUTS: 127 128 x: An n-element (at least 2) input vector that specifies the 98 </div> 99 100 101 102 103 104 105 106 107 108 <div id="routine_details"> 109 110 111 <div class="routine_details" id="_spl_fstdrv"> 112 113 <h2><a class="top" href="#container">top</a>spl_fstdrv </h2> 114 115 <p class="header"> 116 <span class="result">result = </span>spl_fstdrv(<span class="result"><a href="#_spl_fstdrv_param_x">x</a>, <a href="#_spl_fstdrv_param_y">y</a>, <a href="#_spl_fstdrv_param_yscd">yscd</a>, <a href="#_spl_fstdrv_param_x2">x2</a></span>)</p> 117 118 <div class="comments"> 119 </div> 120 121 <h3>Return value</h3><div class="value"> 122 123 y2: f'(x2) = y2. 124 125 </div> 126 127 128 <h3>Parameters</h3> 129 130 131 <h4 id="_spl_fstdrv_param_x">x 132 <span class="attr">in</span> 133 134 135 <span class="attr">required</span> 136 137 138 139 140 </h4> 141 142 <div class="comments"> An n-element (at least 2) input vector that specifies the 129 143 tabulate points in ascending order. 130 131 y: f(x) = y. An n-element input vector that specifies the values 144 </div> 145 146 <h4 id="_spl_fstdrv_param_y">y 147 <span class="attr">in</span> 148 149 150 <span class="attr">required</span> 151 152 153 154 155 </h4> 156 157 <div class="comments"> f(x) = y. An n-element input vector that specifies the values 132 158 of the tabulated function F(Xi) corresponding to Xi. 133 134 yscd: The output from SPL_INIT for the specified X and Y. 135 136 x2: The input values for which the first derivative values are 159 </div> 160 161 <h4 id="_spl_fstdrv_param_yscd">yscd 162 <span class="attr">in</span> 163 164 165 <span class="attr">required</span> 166 167 168 169 170 </h4> 171 172 <div class="comments"> The output from SPL_INIT for the specified X and Y. 173 </div> 174 175 <h4 id="_spl_fstdrv_param_x2">x2 176 <span class="attr">in</span> 177 178 179 <span class="attr">required</span> 180 181 182 183 184 </h4> 185 186 <div class="comments"> The input values for which the first derivative values are 137 187 desired. X can be scalar or an array of values. 138 139 KEYWORD PARAMETERS: none 140 141 OUTPUTS: 142 143 y2: f'(x2) = y2. 144 145 COMMON BLOCKS: none 146 147 SIDE EFFECTS: ? 148 149 RESTRICTIONS: ? 150 151 EXAMPLE: 152 153 MODIFICATION HISTORY:</div> 154 155 156 157 158 <h3>Parameters</h3> 159 160 161 <h4 id="_spl_fstdrv_param_x">x 162 163 164 165 166 167 168 169 170 </h4> 171 172 <div class="comments"></div> 173 174 <h4 id="_spl_fstdrv_param_y">y 175 176 177 178 179 180 181 182 183 </h4> 184 185 <div class="comments"></div> 186 187 <h4 id="_spl_fstdrv_param_yscd">yscd 188 189 190 191 192 193 194 195 196 </h4> 197 198 <div class="comments"></div> 199 200 <h4 id="_spl_fstdrv_param_x2">x2 201 202 203 204 205 206 207 208 209 </h4> 210 211 <div class="comments"></div> 212 213 214 215 216 217 218 219 220 221 222 188 </div> 189 190 191 192 193 194 195 <h3>Examples</h3><div class="value"> y2 = spl_fstdrv(x, y, yscd, x2) 196 </div> 197 <h3>Version history</h3> 198 199 200 <h4>History</h4><div class="value"> 201 Sebastien Masson (smasson@lodyc.jussieu.fr): May 2005</div> 223 202 224 203 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/spl_incr.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> 90 91 Given the arrays X and Y, which tabulate a function (with the X[i] 92 AND Y[i] in ascending order), and given an input value X2, the 93 SPL_INCR function returns an interpolated value for the given values 94 of X2. The interpolation method is based on cubic spline, corrected 95 in a way that interpolated values are also monotonically increasing. 96 </div> 90 97 91 98 … … 102 109 103 110 <dt><p><a href="#_pure_concave"><span class="result">result = </span>pure_concave(<span class="result">x1, x2, y1, y2, der2, x</span>)</a></p><dt> 104 <dd> NAME:spl_incr PURPOSE: Given the arrays X and Y, which tabulate a function (with the X[i] AND Y[i] in ascending order), and given an input value X2, the SPL_INCR function returns an interpolated value for the given values of X2.</dd>111 <dd> </dd> 105 112 106 113 <dt><p><a href="#_pure_convex"><span class="result">result = </span>pure_convex(<span class="result">x1, x2, y1, y2, der2, x</span>)</a></p><dt> … … 125 132 126 133 <div class="comments"> 127 NAME:spl_incr 128 129 PURPOSE: 130 131 Given the arrays X and Y, which tabulate a function (with the X[i] 132 AND Y[i] in ascending order), and given an input value X2, the 133 SPL_INCR function returns an interpolated value for the given values 134 of X2. The interpolation method is based on cubic spline, corrected 135 in a way that interpolated values are also monotonically increasing. 136 137 CATEGORY: 138 139 CALLING SEQUENCE: y2 = spl_incr(x, y, x2) 140 141 INPUTS: 142 143 x: An n-element (at least 2) input vector that specifies the 134 </div> 135 136 <h3>Return value</h3><div class="value"> 137 138 y2: f(x2) = y2. Double precision array 139 </div> 140 141 142 <h3>Parameters</h3> 143 144 145 <h4 id="_pure_concave_param_x1">x1 146 <span class="attr">in</span> 147 148 149 <span class="attr">required</span> 150 151 152 153 154 </h4> 155 156 <div class="comments"> An n-element (at least 2) input vector that specifies the 144 157 tabulate points in a strict ascending order. 145 146 y: f(x) = y. An n-element input vector that specifies the values 158 </div> 159 160 <h4 id="_pure_concave_param_x2">x2 161 <span class="attr">in</span> 162 163 164 <span class="attr">required</span> 165 166 167 168 169 </h4> 170 171 <div class="comments"> The input values for which the interpolated values are 172 desired. Its values must be strictly monotonically increasing. 173 174 175 176 </div> 177 178 <h4 id="_pure_concave_param_y1">y1 179 <span class="attr">in</span> 180 181 182 <span class="attr">required</span> 183 184 185 186 187 </h4> 188 189 <div class="comments"> f(x) = y. An n-element input vector that specifies the values 147 190 of the tabulated function F(Xi) corresponding to Xi. As f is 148 191 supposed to be monotonically increasing, y values must be 149 192 monotonically increasing. y can have equal consecutive values. 150 151 x2: The input values for which the interpolated values are 152 desired. Its values must be strictly monotonically increasing. 153 154 KEYWORD PARAMETERS: 155 156 YP0: The first derivative of the interpolating function at the 157 point X0. If YP0 is omitted, the second derivative at the 158 boundary is set to zero, resulting in a "natural spline." 159 160 YPN_1: The first derivative of the interpolating function at the 161 point Xn-1. If YPN_1 is omitted, the second derivative at the 162 boundary is set to zero, resulting in a "natural spline." 163 164 OUTPUTS: 165 166 y2: f(x2) = y2. Double precision array 167 168 COMMON BLOCKS: none 169 170 SIDE EFFECTS: ? 171 172 RESTRICTIONS: 173 It might be possible that y2[i+1]-y2[i] has very small negative 174 values (amplitude smaller than 1.e-6)... 175 176 EXAMPLE: 193 </div> 194 195 <h4 id="_pure_concave_param_y2">y2 196 197 198 199 200 201 202 203 204 </h4> 205 206 <div class="comments"></div> 207 208 <h4 id="_pure_concave_param_der2">der2 209 210 211 212 213 214 215 216 217 </h4> 218 219 <div class="comments"></div> 220 221 <h4 id="_pure_concave_param_x">x 222 223 224 225 226 227 228 229 230 </h4> 231 232 <div class="comments"></div> 233 234 235 236 237 238 239 <h3>Examples</h3><div class="value"> y2 = spl_incr(x, y, x2) 240 241 177 242 178 243 n = 100L … … 194 259 splot,c,xstyle=1,ystyle=1, yrange=[-.01,.05], ysurx=.25, petit = [1, 2, 2], /noerase 195 260 oplot,[0, n_elements(c)], [0, 0], linestyle = 1 196 197 MODIFICATION HISTORY:</div> 198 199 200 201 202 <h3>Parameters</h3> 203 204 205 <h4 id="_pure_concave_param_x1">x1 206 207 208 209 210 211 212 213 214 </h4> 215 216 <div class="comments"></div> 217 218 <h4 id="_pure_concave_param_x2">x2 219 220 221 222 223 224 225 226 227 </h4> 228 229 <div class="comments"></div> 230 231 <h4 id="_pure_concave_param_y1">y1 232 233 234 235 236 237 238 239 240 </h4> 241 242 <div class="comments"></div> 243 244 <h4 id="_pure_concave_param_y2">y2 245 246 247 248 249 250 251 252 253 </h4> 254 255 <div class="comments"></div> 256 257 <h4 id="_pure_concave_param_der2">der2 258 259 260 261 262 263 264 265 266 </h4> 267 268 <div class="comments"></div> 269 270 <h4 id="_pure_concave_param_x">x 271 272 273 274 275 276 277 278 279 </h4> 280 281 <div class="comments"></div> 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 261 </div> 262 <h3>Version history</h3> 263 264 265 <h4>History</h4><div class="value"> 266 Sebastien Masson (smasson@lodyc.jussieu.fr): May-Dec 2005</div> 267 268 269 <h3>Known issues</h3> 270 271 272 273 <h4>Restrictions</h4><div class="value"> 274 It might be possible that y2[i+1]-y2[i] has very small negative 275 values (amplitude smaller than 1.e-6)... 276 </div> 300 277 301 278 … … 508 485 </h4> 509 486 510 <div class="comments"></div> 487 <div class="comments"> The first derivative of the interpolating function at the 488 point X0. If YP0 is omitted, the second derivative at the 489 boundary is set to zero, resulting in a "natural spline."</div> 511 490 512 491 <h4 id="_spl_incr_keyword_YPN_1">YPN_1 … … 521 500 </h4> 522 501 523 <div class="comments"></div> 502 <div class="comments"> The first derivative of the interpolating function at the 503 point Xn-1. If YPN_1 is omitted, the second derivative at the 504 boundary is set to zero, resulting in a "natural spline." </div> 524 505 525 506 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/spl_keep_mean.html
r89 r101 87 87 </div> 88 88 89 <div id="file_comments"></div> 90 91 92 93 94 95 96 97 98 99 <div id="routine_details"> 100 101 102 <div class="routine_details" id="_spl_keep_mean"> 103 104 <h2><a class="top" href="#container">top</a>spl_keep_mean </h2> 105 106 <p class="header"> 107 <span class="result">result = </span>spl_keep_mean(<span class="result"><a href="#_spl_keep_mean_param_x">x</a>, <a href="#_spl_keep_mean_param_yin">yin</a>, <a href="#_spl_keep_mean_param_x2">x2</a></span>, <a href="#_spl_keep_mean_keyword_YP0">YP0</a>=<span class="result">YP0</span>, <a href="#_spl_keep_mean_keyword_YPN_1">YPN_1</a>=<span class="result">YPN_1</span>, <a href="#_spl_keep_mean_keyword_GE0">GE0</a>=<span class="result">GE0</span>)</p> 108 109 <div class="comments"> 110 NAME:spl_keep_mean 111 112 PURPOSE: 89 <div id="file_comments"> 113 90 114 91 Given the arrays X and Y, which tabulate a function (with the X[i] … … 120 97 from monthly mean and keep the monthly mean of the computed daily 121 98 data equa to the original values) 122 123 CATEGORY: 124 125 CALLING SEQUENCE: y2 = spl_keep_mean(x, y, x2) 126 127 INPUTS: 128 129 x: An n-element (at least 2) input vector that specifies the 99 </div> 100 101 102 103 104 105 106 107 108 109 <div id="routine_details"> 110 111 112 <div class="routine_details" id="_spl_keep_mean"> 113 114 <h2><a class="top" href="#container">top</a>spl_keep_mean </h2> 115 116 <p class="header"> 117 <span class="result">result = </span>spl_keep_mean(<span class="result"><a href="#_spl_keep_mean_param_x">x</a>, <a href="#_spl_keep_mean_param_yin">yin</a>, <a href="#_spl_keep_mean_param_x2">x2</a></span>, <a href="#_spl_keep_mean_keyword_YP0">YP0</a>=<span class="result">YP0</span>, <a href="#_spl_keep_mean_keyword_YPN_1">YPN_1</a>=<span class="result">YPN_1</span>, <a href="#_spl_keep_mean_keyword_GE0">GE0</a>=<span class="result">GE0</span>)</p> 118 119 <div class="comments"></div> 120 121 <h3>Return value</h3><div class="value"> 122 123 y2: the meean value between two consecutive values of x2. This 124 array has one element less than y2. y2 has double precision. 125 </div> 126 127 128 <h3>Parameters</h3> 129 130 131 <h4 id="_spl_keep_mean_param_x">x 132 <span class="attr">in</span> 133 134 135 <span class="attr">required</span> 136 137 138 139 140 </h4> 141 142 <div class="comments"> An n-element (at least 2) input vector that specifies the 130 143 tabulate points in a strict ascending order. 131 132 y: an array with one element less than x. y[i] represents the 144 </div> 145 146 <h4 id="_spl_keep_mean_param_yin">yin 147 <span class="attr">in</span> 148 149 150 <span class="attr">required</span> 151 152 153 154 155 </h4> 156 157 <div class="comments"> an array with one element less than x. y[i] represents the 133 158 mean value between x[i] and x[i+1]. if /GE0 is activated, y must 134 159 have positive values. 135 136 x2: The input values for which the interpolated values are 160 </div> 161 162 <h4 id="_spl_keep_mean_param_x2">x2 163 <span class="attr">in</span> 164 165 166 <span class="attr">required</span> 167 168 169 170 171 </h4> 172 173 <div class="comments"> The input values for which the interpolated values are 137 174 desired. Its values must be strictly monotonically increasing. 138 175 139 KEYWORD PARAMETERS: 140 141 /GE0: to force that y2 is always GE than 0. In that case, y must 142 also be GE than 0. 143 144 YP0: The first derivative of the interpolating function at the 176 </div> 177 178 179 180 181 182 183 <h3>Keywords</h3> 184 185 <h4 id="_spl_keep_mean_keyword_YP0">YP0 186 187 188 189 190 191 192 193 194 </h4> 195 196 <div class="comments"> The first derivative of the interpolating function at the 145 197 point X0. If YP0 is omitted, the second derivative at the 146 198 boundary is set to zero, resulting in a "natural spline." 147 148 YPN_1: The first derivative of the interpolating function at the 199 </div> 200 201 <h4 id="_spl_keep_mean_keyword_YPN_1">YPN_1 202 203 204 205 206 207 208 209 210 </h4> 211 212 <div class="comments"> The first derivative of the interpolating function at the 149 213 point Xn-1. If YPN_1 is omitted, the second derivative at the 150 214 boundary is set to zero, resulting in a "natural spline." 151 152 OUTPUTS: 153 154 y2: the meean value between two consecutive values of x2. This 155 array has one element less than y2. y2 has double precision. 156 157 COMMON BLOCKS: none 158 159 SIDE EFFECTS: ? 160 161 RESTRICTIONS: 162 It might be possible that y2 has very small negative values 163 (amplitude smaller than 1.e-6)... 164 165 166 EXAMPLE: 215 </div> 216 217 <h4 id="_spl_keep_mean_keyword_GE0">GE0 218 219 220 221 222 223 224 225 226 </h4> 227 228 <div class="comments"> to force that y2 is always GE than 0. In that case, y must 229 also be GE than 0. 230 </div> 231 232 233 234 <h3>Examples</h3><div class="value"> y2 = spl_keep_mean(x, y, x2) 235 236 167 237 168 238 12 monthly values of precipitations into daily values: … … 185 255 print, total(y*(x[1:n1-1]-x[0:n1-2])) 186 256 print, total(y2*(x2[1:n2-1]-x2[0:n2-2])) 187 188 MODIFICATION HISTORY:</div> 189 190 191 192 193 <h3>Parameters</h3> 194 195 196 <h4 id="_spl_keep_mean_param_x">x 197 198 199 200 201 202 203 204 205 </h4> 206 207 <div class="comments"></div> 208 209 <h4 id="_spl_keep_mean_param_yin">yin 210 211 212 213 214 215 216 217 218 </h4> 219 220 <div class="comments"></div> 221 222 <h4 id="_spl_keep_mean_param_x2">x2 223 224 225 226 227 228 229 230 231 </h4> 232 233 <div class="comments"></div> 234 235 236 237 238 239 240 <h3>Keywords</h3> 241 242 <h4 id="_spl_keep_mean_keyword_YP0">YP0 243 244 245 246 247 248 249 250 251 </h4> 252 253 <div class="comments"></div> 254 255 <h4 id="_spl_keep_mean_keyword_YPN_1">YPN_1 256 257 258 259 260 261 262 263 264 </h4> 265 266 <div class="comments"></div> 267 268 <h4 id="_spl_keep_mean_keyword_GE0">GE0 269 270 271 272 273 274 275 276 277 </h4> 278 279 <div class="comments"></div> 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 257 </div> 258 <h3>Version history</h3> 259 260 261 <h4>History</h4><div class="value"> 262 Sebastien Masson (smasson@lodyc.jussieu.fr): May 2005</div> 263 264 265 <h3>Known issues</h3> 266 267 268 269 <h4>Restrictions</h4><div class="value"> 270 It might be possible that y2 has very small negative values 271 (amplitude smaller than 1.e-6)... 272 273 </div> 295 274 296 275 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/square2quadrilateral.html
r89 r101 72 72 <div id="secondary_navbar"> 73 73 74 <a href="spl_keep_mean.html"><<prev file</a> | <a href="testinterp.html">next file >></a> <a href="square2quadrilateral.html" target="_TOP">view single page</a> | <a href="./../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a>74 <a href="spl_keep_mean.html"><<prev file</a> | <a href="testinterp.html">next file >></a> <a href="square2quadrilateral.html" target="_TOP">view single page</a> | <a href="./../index.html?format=raw" target="_TOP">view frames</a> summary: fields | <a href="#routine_summary">routine</a> details: <a href="#routine_details">routine</a> 75 75 76 76 </div> … … 87 87 </div> 88 88 89 <div id="file_comments"></div> 90 91 92 93 94 95 96 97 98 99 <div id="routine_details"> 100 101 102 <div class="routine_details" id="_square2quadrilateral"> 103 104 <h2><a class="top" href="#container">top</a>square2quadrilateral </h2> 105 106 <p class="header"> 107 <span class="result">result = </span>square2quadrilateral(<span class="result"><a href="#_square2quadrilateral_param_x0in">x0in</a>, <a href="#_square2quadrilateral_param_y0in">y0in</a>, <a href="#_square2quadrilateral_param_x1in">x1in</a>, <a href="#_square2quadrilateral_param_y1in">y1in</a>, <a href="#_square2quadrilateral_param_x2in">x2in</a>, <a href="#_square2quadrilateral_param_y2in">y2in</a>, <a href="#_square2quadrilateral_param_x3in">x3in</a>, <a href="#_square2quadrilateral_param_y3in">y3in</a>, <a href="#_square2quadrilateral_param_xxin">xxin</a>, <a href="#_square2quadrilateral_param_yyin">yyin</a></span>)</p> 108 109 <div class="comments"> 110 NAME:square2quadrilateral 111 112 PURPOSE:warm (or map) a unit square onto an arbitrary quadrilateral 89 <div id="file_comments"> warm (or map) a unit square onto an arbitrary quadrilateral 113 90 according to the 4-point correspondences: 114 91 (0,0) -> (x0,y0) … … 119 96 lines in all orientations and permit quadrilateral to quadrilateral 120 97 mappings. see ref. bellow. 121 122 CATEGORY:image/grid manipulation 123 124 CALLING SEQUENCE: 98 </div> 99 100 101 102 103 104 105 106 107 <div id="routine_summary"> 108 <h2>Routine summary</h2> 109 110 <dl> 111 112 <dt><p><a href="#_square2quadrilateral"><span class="result">result = </span>square2quadrilateral(<span class="result">x0in, y0in, x1in, y1in, x2in, y2in, x3in, y3in, xxin, yyin</span>)</a></p><dt> 113 <dd> </dd> 114 115 <dt><p><a href="#_square2quadrilateral"><span class="result">result = </span>square2quadrilateral(<span class="result">x0in, y0in, x1in, y1in, x2in, y2in, x3in, y3in, xxin, yyin</span>)</a></p><dt> 116 <dd></dd> 117 118 </dl> 119 </div> 120 121 122 <div id="routine_details"> 123 124 125 <div class="routine_details" id="_square2quadrilateral"> 126 127 <h2><a class="top" href="#container">top</a>square2quadrilateral <span class="categories"> image, grid manipulation 128 </span></h2> 129 130 <p class="header"> 131 <span class="result">result = </span>square2quadrilateral(<span class="result"><a href="#_square2quadrilateral_param_x0in">x0in</a>, <a href="#_square2quadrilateral_param_y0in">y0in</a>, <a href="#_square2quadrilateral_param_x1in">x1in</a>, <a href="#_square2quadrilateral_param_y1in">y1in</a>, <a href="#_square2quadrilateral_param_x2in">x2in</a>, <a href="#_square2quadrilateral_param_y2in">y2in</a>, <a href="#_square2quadrilateral_param_x3in">x3in</a>, <a href="#_square2quadrilateral_param_y3in">y3in</a>, <a href="#_square2quadrilateral_param_xxin">xxin</a>, <a href="#_square2quadrilateral_param_yyin">yyin</a></span>)</p> 132 133 <div class="comments"> 134 </div> 135 136 137 138 139 <h3>Parameters</h3> 140 141 142 <h4 id="_square2quadrilateral_param_x0in">x0in 143 144 145 146 147 148 149 150 151 </h4> 152 153 <div class="comments"></div> 154 155 <h4 id="_square2quadrilateral_param_y0in">y0in 156 157 158 159 160 161 162 163 164 </h4> 165 166 <div class="comments"></div> 167 168 <h4 id="_square2quadrilateral_param_x1in">x1in 169 170 171 172 173 174 175 176 177 </h4> 178 179 <div class="comments"></div> 180 181 <h4 id="_square2quadrilateral_param_y1in">y1in 182 183 184 185 186 187 188 189 190 </h4> 191 192 <div class="comments"></div> 193 194 <h4 id="_square2quadrilateral_param_x2in">x2in 195 196 197 198 199 200 201 202 203 </h4> 204 205 <div class="comments"></div> 206 207 <h4 id="_square2quadrilateral_param_y2in">y2in 208 209 210 211 212 213 214 215 216 </h4> 217 218 <div class="comments"></div> 219 220 <h4 id="_square2quadrilateral_param_x3in">x3in 221 222 223 224 225 226 227 228 229 </h4> 230 231 <div class="comments"></div> 232 233 <h4 id="_square2quadrilateral_param_y3in">y3in 234 235 236 237 238 239 240 241 242 </h4> 243 244 <div class="comments"></div> 245 246 <h4 id="_square2quadrilateral_param_xxin">xxin 247 248 249 250 251 252 253 254 255 </h4> 256 257 <div class="comments"></div> 258 259 <h4 id="_square2quadrilateral_param_yyin">yyin 260 261 262 263 264 265 266 267 268 </h4> 269 270 <div class="comments"></div> 271 272 273 274 275 276 277 <h3>Examples</h3><div class="value"> 125 278 126 279 res = square2quadrilateral(x0,y0,x1,y1,x2,y2,x3,y3[,xin,yin]) 127 128 INPUTS: 129 130 x0,y0,x1,y1,x2,y2,x3,y3 the coordinates of the quadrilateral 131 (see above for correspondance with the unit square). Can be 132 scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 133 given in the anticlockwise order. 134 135 xin,yin:the coordinates of the point(s) for which we want to do the 136 mapping. Can be scalar or array. 137 138 KEYWORD PARAMETERS: 139 140 /DOUBLE: use double precision to perform the computation 141 142 OUTPUTS: 143 144 (2,n) array: the new coodinates (xout, yout) of the (xin,yin) 145 point(s) after mapping. 146 If xin is a scalar, then n is equal to the number of elements of 147 x0. If xin is an array , then n is equal to the number of 148 elements of xin. 149 If xin and yin are omited, square2quadrilateral returns the 150 matrix A which is used for the inverse transformation. 151 152 COMMON BLOCKS:none 153 154 SIDE EFFECTS: 155 156 RESTRICTIONS: I think degenerated quadrilateral (e.g. flat of 157 twisted) is not work. This has to be tested. 158 159 EXAMPLE: 160 161 IDL> splot,[0,5],[0,3],/nodata,xstyle=1,ystyle=1 162 IDL> tracegrille, findgen(11)*.1, findgen(11)*.1,color=indgen(12)*20 163 IDL> xin = (findgen(11)*.1)#replicate(1, 11) 164 IDL> yin = replicate(1, 11)#(findgen(11)*.1) 165 IDL> out = square2quadrilateral(2,1,3,0,5,1,2,3, xin, yin) 166 IDL> tracegrille, reform(out[0,*],11,11), reform(out[1,*],11,11),color=indgen(12)*20 167 168 MODIFICATION HISTORY:</div> 280 </div> 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 </div> 304 305 306 <div class="routine_details" id="_square2quadrilateral"> 307 308 <h2><a class="top" href="#container">top</a>square2quadrilateral </h2> 309 310 <p class="header"> 311 <span class="result">result = </span>square2quadrilateral(<span class="result"><a href="#_square2quadrilateral_param_x0in">x0in</a>, <a href="#_square2quadrilateral_param_y0in">y0in</a>, <a href="#_square2quadrilateral_param_x1in">x1in</a>, <a href="#_square2quadrilateral_param_y1in">y1in</a>, <a href="#_square2quadrilateral_param_x2in">x2in</a>, <a href="#_square2quadrilateral_param_y2in">y2in</a>, <a href="#_square2quadrilateral_param_x3in">x3in</a>, <a href="#_square2quadrilateral_param_y3in">y3in</a>, <a href="#_square2quadrilateral_param_xxin">xxin</a>, <a href="#_square2quadrilateral_param_yyin">yyin</a></span>)</p> 312 313 <div class="comments"></div> 169 314 170 315 -
trunk/SRC/Documentation/idldoc_html_output/Obsolete/nlec5j.html
r97 r101 243 243 244 244 245 245 <h4>Restrictions</h4><div class="value"> appele par nlec 246 </div> 246 247 247 248 <h3>Other attributes</h3> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/VECTEUR/velovect.html
r89 r101 107 107 VELOVECT<span class="result">, <a href="#_VELOVECT_param_U">U</a>, <a href="#_VELOVECT_param_V">V</a>, <a href="#_VELOVECT_param_X">X</a>, <a href="#_VELOVECT_param_Y">Y</a></span>, <a href="#_VELOVECT_keyword_Missing">Missing</a>=<span class="result">Missing</span>, <a href="#_VELOVECT_keyword_Length">Length</a>=<span class="result">Length</span>, <a href="#_VELOVECT_keyword_Dots">Dots</a>=<span class="result">Dots</span>, <a href="#_VELOVECT_keyword_Color">Color</a>=<span class="result">Color</span>, <a href="#_VELOVECT_keyword_CLIP">CLIP</a>=<span class="result">CLIP</span>, <a href="#_VELOVECT_keyword_NOCLIP">NOCLIP</a>=<span class="result">NOCLIP</span>, <a href="#_VELOVECT_keyword_OVERPLOT">OVERPLOT</a>=<span class="result">OVERPLOT</span>, <a href="#_VELOVECT_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span></p> 108 108 109 <div class="comments"></div> 109 <div class="comments"> 110 NAME: 111 VELOVECT 112 113 PURPOSE: 114 Produce a two-dimensional velocity field plot. 115 116 A directed arrow is drawn at each point showing the direction and 117 magnitude of the field. 118 119 CATEGORY: 120 Plotting, two-dimensional. 121 122 CALLING SEQUENCE: 123 VELOVECT, U, V [, X, Y] 124 125 INPUTS: 126 U: The X component of the two-dimensional field. 127 U must be a two-dimensional array. 128 129 V: The Y component of the two dimensional field. Y must have 130 the same dimensions as X. The vector at point [i,j] has a 131 magnitude of: 132 133 (U[i,j]^2 + V[i,j]^2)^0.5 134 135 and a direction of: 136 137 ATAN2(V[i,j],U[i,j]). 138 139 OPTIONAL INPUT PARAMETERS: 140 X: Optional abcissae values. X must be a vector with a length 141 equal to the first dimension of U and V. 142 143 Y: Optional ordinate values. Y must be a vector with a length 144 equal to the first dimension of U and V. 145 146 KEYWORD INPUT PARAMETERS: 147 COLOR: The color index used for the plot. 148 149 DOTS: Set this keyword to 1 to place a dot at each missing point. 150 Set this keyword to 0 or omit it to draw nothing for missing 151 points. Has effect only if MISSING is specified. 152 153 LENGTH: Length factor. The default of 1.0 makes the longest (U,V) 154 vector the length of a cell. 155 156 MISSING: Missing data value. Vectors with a LENGTH greater 157 than MISSING are ignored. 158 159 OVERPLOT: Set this keyword to make VELOVECT "overplot". That is, the 160 current graphics screen is not erased, no axes are drawn, and 161 the previously established scaling remains in effect. 162 163 164 Note: All other keywords are passed directly to the PLOT procedure 165 and may be used to set option such as TITLE, POSITION, 166 NOERASE, etc. 167 OUTPUTS: 168 None. 169 170 COMMON BLOCKS: 171 None. 172 173 SIDE EFFECTS: 174 Plotting on the selected device is performed. System 175 variables concerning plotting are changed. 176 177 RESTRICTIONS: 178 None. 179 180 PROCEDURE: 181 Straightforward. Unrecognized keywords are passed to the PLOT 182 procedure. 183 184 MODIFICATION HISTORY: 185 DMS, RSI, Oct., 1983. 186 For Sun, DMS, RSI, April, 1989. 187 Added TITLE, Oct, 1990. 188 Added POSITION, NOERASE, COLOR, Feb 91, RES. 189 August, 1993. Vince Patrick, Adv. Visualization Lab, U. of Maryland, 190 fixed errors in math. 191 August, 1993. DMS, Added _EXTRA keyword inheritance. 192 January, 1994, KDB. Fixed integer math which produced 0 and caused 193 divide by zero errors. 194 December, 1994, MWR. Added _EXTRA inheritance for PLOTS and OPLOT. 195 June, 1995, MWR. Removed _EXTRA inheritance for PLOTS and changed 196 OPLOT to PLOTS. 197 September, 1996, GGS. Changed denominator of x_step and y_step vars. 198 February, 1998, DLD. Add support for CLIP and NO_CLIP keywords. 199 June, 1998, DLD. Add support for OVERPLOT keyword.</div> 110 200 111 201 -
trunk/SRC/Documentation/idldoc_html_output/idldoc-categories.html
r97 r101 116 116 117 117 </ul> 118 </li> <li id="idldoc-Mapping">Mapping <span class="result">(1 routine)</span> 119 <ul> 120 121 <li><a href="./Interpolation/ll_narcs_distances.html?format=raw#_LL_NARCS_DISTANCES">LL_NARCS_DISTANCES</a></li> 122 123 </ul> 124 </li> <li id="idldoc-Maps">Maps <span class="result">(2 routines)</span> 125 <ul> 126 127 <li><a href="./Interpolation/map_npoints.html?format=raw#_Map_npoints">Map_npoints</a></li> 128 129 <li><a href="./Interpolation/neighbor.html?format=raw#_neighbor">neighbor</a></li> 130 131 </ul> 132 </li> <li id="idldoc-basic_work">basic work <span class="result">(2 routines)</span> 133 <ul> 134 135 <li><a href="./Interpolation/cutpar.html?format=raw#_cutpar">cutpar</a></li> 136 137 <li><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">cutsegment</a></li> 138 139 </ul> 118 140 </li> <li id="idldoc-calendar">calendar <span class="result">(7 routines)</span> 119 141 <ul> … … 140 162 141 163 </ul> 164 </li> <li id="idldoc-finding_where_is_a_point_on_a_grid">finding where is a point on a grid <span class="result">(1 routine)</span> 165 <ul> 166 167 <li><a href="./Interpolation/clickincell.html?format=raw#_clickincell">clickincell</a></li> 168 169 </ul> 170 </li> <li id="idldoc-geography">geography <span class="result">(1 routine)</span> 171 <ul> 172 173 <li><a href="./Interpolation/ll_narcs_distances.html?format=raw#_LL_NARCS_DISTANCES">LL_NARCS_DISTANCES</a></li> 174 175 </ul> 176 </li> <li id="idldoc-grid_manipulation">grid manipulation <span class="result">(3 routines)</span> 177 <ul> 178 179 <li><a href="./Interpolation/inquad.html?format=raw#_inquad">inquad</a></li> 180 181 <li><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">quadrilateral2square</a></li> 182 183 <li><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">square2quadrilateral</a></li> 184 185 </ul> 186 </li> <li id="idldoc-image">image <span class="result">(2 routines)</span> 187 <ul> 188 189 <li><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">quadrilateral2square</a></li> 190 191 <li><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">square2quadrilateral</a></li> 192 193 </ul> 194 </li> <li id="idldoc-interpolation">interpolation <span class="result">(4 routines)</span> 195 <ul> 196 197 <li><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">compute_fromreg_bilinear_weigaddr</a></li> 198 199 <li><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">compute_fromreg_imoms3_weigaddr</a></li> 200 201 <li><a href="./Interpolation/fromreg.html?format=raw#_fromreg">fromreg</a></li> 202 203 <li><a href="./Interpolation/get_gridparams.html?format=raw#_get_gridparams">get_gridparams</a></li> 204 205 </ul> 142 206 </li> <li id="idldoc-io">io <span class="result">(2 routines)</span> 143 207 <ul> … … 168 232 169 233 </ul> 234 </li> <li id="idldoc-no_DO_loop">no DO loop <span class="result">(1 routine)</span> 235 <ul> 236 237 <li><a href="./Interpolation/inrecgrid.html?format=raw#_inrecgrid">inrecgrid</a></li> 238 239 </ul> 170 240 </li> <li id="idldoc-string">string <span class="result">(1 routine)</span> 171 241 <ul> 172 242 173 243 <li><a href="./Calendar/date2string.html?format=raw#_date2string">date2string</a></li> 244 245 </ul> 246 </li> <li id="idldoc-">use the wonderfull value_locate function! <span class="result">(1 routine)</span> 247 <ul> 248 249 <li><a href="./Interpolation/inrecgrid.html?format=raw#_inrecgrid">inrecgrid</a></li> 174 250 175 251 </ul> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-O.html
r89 r101 232 232 <dd>a keyword from the routine IMDISP</dd> 233 233 234 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">OV1D</a></dt> 235 <dd>a keyword from the routine plt1d</dd> 236 237 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">OV1D</a></dt> 238 <dd>a keyword from the routine pltt</dd> 239 234 240 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">OV1D</a></dt> 235 241 <dd>a keyword from the routine pltsc</dd> 236 242 237 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">OV1D</a></dt>238 <dd>a keyword from the routine pltt</dd>239 240 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">OV1D</a></dt>241 <dd>a keyword from the routine plt1d</dd>242 243 243 <dt><a href="./ToBeReviewed/COULEURS/newpalette.html?format=raw#_newpalette">OVER</a></dt> 244 244 <dd>a keyword from the routine newpalette</dd> 245 245 246 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">OVERPLOT</a></dt> 247 <dd>a keyword from the routine pltt</dd> 248 249 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">OVERPLOT</a></dt> 250 <dd>a keyword from the routine pltz</dd> 251 252 <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">OVERPLOT</a></dt> 253 <dd>a keyword from the routine VELOVECT</dd> 254 255 <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">OVERPLOT</a></dt> 256 <dd>a keyword from the routine drawsectionbottom</dd> 257 258 <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">OVERPLOT</a></dt> 259 <dd>a keyword from the routine tracemask</dd> 260 246 261 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">OVERPLOT</a></dt> 247 262 <dd>a keyword from the routine plt</dd> 248 263 249 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">OVERPLOT</a></dt>250 <dd>a keyword from the routine pltt</dd>251 252 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">OVERPLOT</a></dt>253 <dd>a keyword from the routine pltz</dd>254 255 <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">OVERPLOT</a></dt>256 <dd>a keyword from the routine VELOVECT</dd>257 258 <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">OVERPLOT</a></dt>259 <dd>a keyword from the routine drawsectionbottom</dd>260 261 <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">OVERPLOT</a></dt>262 <dd>a keyword from the routine tracemask</dd>263 264 264 <dt><a href="./Textoidl/matchdelim.html?format=raw#_Matchdelim">OpenPos</a></dt> 265 265 <dd>a parameter from the routine ./Textoidl/matchdelim.html</dd> … … 274 274 <dd>a keyword from the routine test</dd> 275 275 276 <dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">olat</a></dt> 277 <dd>a parameter from the routine ./Interpolation/compute_fromreg_bilinear_weigaddr.html</dd> 278 276 279 <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">olat</a></dt> 277 280 <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 278 281 279 <dt><a href="./Interpolation/compute_fromreg_ bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">olat</a></dt>280 <dd>a parameter from the routine ./Interpolation/compute_fromreg_ bilinear_weigaddr.html</dd>282 <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">olat</a></dt> 283 <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 281 284 282 285 <dt><a href="ForOldVersion/oldcm_empty.html?format=raw">oldcm_empty.pro</a></dt> … … 286 289 <dd>a file from the directory ./ForOldVersion</dd> 287 290 291 <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">olonin</a></dt> 292 <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 293 294 <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">olonin</a></dt> 295 <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 296 288 297 <dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">olonin</a></dt> 289 298 <dd>a parameter from the routine ./Interpolation/compute_fromreg_bilinear_weigaddr.html</dd> 290 299 291 <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">olonin</a></dt>292 <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd>293 294 300 <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html?format=raw#_drawcoast_e">onemore</a></dt> 295 301 <dd>a keyword from the routine drawcoast_e</dd> … … 298 304 <dd>a keyword from the routine make_selection</dd> 299 305 306 <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">onsphere</a></dt> 307 <dd>a keyword from the routine cutsegment</dd> 308 300 309 <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">onsphere</a></dt> 301 310 <dd>a keyword from the routine cutpar</dd> 302 311 303 <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">onsphere</a></dt>304 <dd>a keyword from the routine cutsegment</dd>305 306 312 <dt><a href="./ToBeReviewed/MATRICE/cmapply.html?format=raw#_cmapply">op</a></dt> 307 313 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmapply.html</dd> … … 319 325 <dd>a file from the directory ./ToBeReviewed/UTILITAIRE</dd> 320 326 327 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html?format=raw#_tracecadre">out</a></dt> 328 <dd>a keyword from the routine tracecadre</dd> 329 321 330 <dt><a href="./ToBeReviewed/LECTURE/read_ftp.html?format=raw#_ftp_post">out</a></dt> 322 331 <dd>a keyword from the routine ftp_post</dd> 323 332 324 <dt><a href="./ ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html?format=raw#_tracecadre">out</a></dt>325 <dd>a keyword from the routine tracecadre</dd>333 <dt><a href="./Grid/micromeshmask.html?format=raw#_ncdf_transfer">outid</a></dt> 334 <dd>a parameter from the routine ./Grid/micromeshmask.html</dd> 326 335 327 336 <dt><a href="./Grid/smallmeshmask.html?format=raw#_ncdf_transfer">outid</a></dt> 328 337 <dd>a parameter from the routine ./Grid/smallmeshmask.html</dd> 329 338 330 <dt><a href="./Grid/micromeshmask.html?format=raw#_ncdf_transfer">outid</a></dt>331 <dd>a parameter from the routine ./Grid/micromeshmask.html</dd>332 333 339 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/bar_plot.html?format=raw#_bar_plot">outline</a></dt> 334 340 <dd>a keyword from the routine bar_plot</dd> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-S.html
r89 r101 208 208 <dd>a keyword from the routine computegrid</dd> 209 209 210 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_e.html?format=raw#_triangule_e">SHIFTED</a></dt> 211 <dd>a keyword from the routine triangule_e</dd> 212 210 213 <dt><a href="./ToBeReviewed/TRIANGULATION/definetri_e.html?format=raw#_definetri_e">SHIFTED</a></dt> 211 214 <dd>a keyword from the routine definetri_e</dd> 212 215 213 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_e.html?format=raw#_triangule_e">SHIFTED</a></dt>214 <dd>a keyword from the routine triangule_e</dd>215 216 216 <dt><a href="./ToBeReviewed/STRING/strsci.html?format=raw#_StrSci">SHORT</a></dt> 217 217 <dd>a keyword from the routine StrSci</dd> … … 232 232 <dd>a keyword from the routine report</dd> 233 233 234 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">SIN</a></dt> 235 <dd>a keyword from the routine plt1d</dd> 236 237 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">SIN</a></dt> 238 <dd>a keyword from the routine pltz</dd> 239 240 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">SIN</a></dt> 241 <dd>a keyword from the routine axis4pltz</dd> 242 234 243 <dt><a href="./ToBeReviewed/PLOTS/axe.html?format=raw#_axe">SIN</a></dt> 235 244 <dd>a keyword from the routine axe</dd> 236 245 237 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">SIN</a></dt> 238 <dd>a keyword from the routine pltz</dd> 239 240 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">SIN</a></dt> 241 <dd>a keyword from the routine plt1d</dd> 242 243 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">SIN</a></dt> 244 <dd>a keyword from the routine axis4pltz</dd> 246 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">SMALL</a></dt> 247 <dd>a keyword from the routine placedessin</dd> 245 248 246 249 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/terminedessin.html?format=raw#_terminedessin">SMALL</a></dt> 247 250 <dd>a keyword from the routine terminedessin</dd> 248 251 249 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">SMALL</a></dt>250 <dd>a keyword from the routine placedessin</dd>251 252 252 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">SPACE</a></dt> 253 253 <dd>a keyword from the routine CW_BGROUP</dd> … … 277 277 <dd>a keyword from the routine cw_domain</dd> 278 278 279 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html?format=raw#_label">STRICTFILL</a></dt> 280 <dd>a keyword from the routine label</dd> 281 282 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">STRICTFILL</a></dt> 283 <dd>a keyword from the routine pltz</dd> 284 285 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">STRICTFILL</a></dt> 286 <dd>a keyword from the routine plt</dd> 287 279 288 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">STRICTFILL</a></dt> 280 289 <dd>a keyword from the routine pltt</dd> 281 290 282 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">STRICTFILL</a></dt> 283 <dd>a keyword from the routine pltz</dd> 284 285 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html?format=raw#_label">STRICTFILL</a></dt> 286 <dd>a keyword from the routine label</dd> 287 288 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">STRICTFILL</a></dt> 289 <dd>a keyword from the routine plt</dd> 291 <dt><a href="./Grid/computegrid.html?format=raw#_computegrid">STRIDE</a></dt> 292 <dd>a keyword from the routine computegrid</dd> 293 294 <dt><a href="./Grid/ncdf_meshread.html?format=raw#_ncdf_meshread">STRIDE</a></dt> 295 <dd>a keyword from the routine ncdf_meshread</dd> 290 296 291 297 <dt><a href="./ToBeReviewed/LECTURE/xncdf_lec.html?format=raw#_xncdf_lec">STRIDE</a></dt> 292 298 <dd>a keyword from the routine xncdf_lec</dd> 293 299 294 <dt><a href="./Grid/computegrid.html?format=raw#_computegrid">STRIDE</a></dt>295 <dd>a keyword from the routine computegrid</dd>296 297 <dt><a href="./Grid/ncdf_meshread.html?format=raw#_ncdf_meshread">STRIDE</a></dt>298 <dd>a keyword from the routine ncdf_meshread</dd>299 300 300 <dt><a href="./buildinit.html?format=raw#_CW_FIELD2">STRING</a></dt> 301 301 <dd>a keyword from the routine CW_FIELD2</dd> … … 310 310 <dd>a function from the file str_size.pro</dd> 311 311 312 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">STY1D</a></dt> 313 <dd>a keyword from the routine pltsc</dd> 314 315 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">STY1D</a></dt> 316 <dd>a keyword from the routine pltt</dd> 317 312 318 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">STY1D</a></dt> 313 319 <dd>a keyword from the routine plt1d</dd> 314 320 315 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">STY1D</a></dt>316 <dd>a keyword from the routine pltsc</dd>317 318 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">STY1D</a></dt>319 <dd>a keyword from the routine pltt</dd>320 321 321 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">STYLE</a></dt> 322 322 <dd>a keyword from the routine pltz</dd> … … 349 349 <dd>a function from the file str_token.pro</dd> 350 350 351 <dt><a href="./ToBeReviewed/STRING/strcnt.html?format=raw#_Strcnt">Strcnt</a></dt> 352 <dd>a function from the file strcnt.pro</dd> 353 351 354 <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">Strcnt</a></dt> 352 355 <dd>a function from the file strcnt.pro</dd> 353 356 354 <dt><a href="./ToBeReviewed/STRING/strcnt.html?format=raw#_Strcnt">Strcnt</a></dt>355 <dd>a function from the file strcnt.pro</dd>356 357 357 <dt><a href="./ToBeReviewed/STRING/strtok.html?format=raw#_Strtok">Strtok</a></dt> 358 358 <dd>a function from the file strtok.pro</dd> … … 367 367 <dd>a function from the file sub_sup_idl.pro</dd> 368 368 369 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper3.html?format=raw#_ncdf_quickwrite_helper3">s</a></dt> 370 <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper3.html</dd> 371 372 <dt><a href="./ToBeReviewed/STRING/strright.html?format=raw#_strright">s</a></dt> 373 <dd>a parameter from the routine ./ToBeReviewed/STRING/strright.html</dd> 374 369 375 <dt><a href="./ToBeReviewed/STRING/putfile.html?format=raw#_putfile">s</a></dt> 370 376 <dd>a parameter from the routine ./ToBeReviewed/STRING/putfile.html</dd> 371 377 372 <dt><a href="./ToBeReviewed/STRING/strright.html?format=raw#_strright">s</a></dt> 373 <dd>a parameter from the routine ./ToBeReviewed/STRING/strright.html</dd> 374 375 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper3.html?format=raw#_ncdf_quickwrite_helper3">s</a></dt> 376 <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper3.html</dd> 378 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html?format=raw#_ncdf_quickwrite_helper2">s</a></dt> 379 <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html</dd> 377 380 378 381 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_struct_free.html?format=raw#_ncdf_struct_free">s</a></dt> 379 382 <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_struct_free.html</dd> 380 383 381 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html?format=raw#_ncdf_quickwrite_helper2">s</a></dt>382 <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html</dd>383 384 384 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/saveatt.html?format=raw#_saveatt">saveatt</a></dt> 385 385 <dd>a function from the file saveatt.pro</dd> … … 532 532 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/createhistory.html</dd> 533 533 534 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html?format=raw#_tracecadre">small</a></dt> 535 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html</dd> 536 534 537 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html?format=raw#_cw_pagelayout">small</a></dt> 535 538 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html</dd> 536 539 537 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html?format=raw#_tracecadre">small</a></dt>538 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html</dd>539 540 540 <dt><a href="./ToBeReviewed/POSTSCRIPT/calibre.html?format=raw#_calibre">smalldraw</a></dt> 541 541 <dd>a parameter from the routine ./ToBeReviewed/POSTSCRIPT/calibre.html</dd> … … 595 595 <dd>a function from the file square2quadrilateral.pro</dd> 596 596 597 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">square2quadrilateral</a></dt> 598 <dd>a function from the file square2quadrilateral.pro</dd> 599 597 600 <dt><a href="Interpolation/square2quadrilateral.html?format=raw">square2quadrilateral.pro</a></dt> 598 601 <dd>a file from the directory ./Interpolation</dd> 599 602 603 <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">startpos</a></dt> 604 <dd>a parameter from the routine ./Textoidl/strcnt.html</dd> 605 600 606 <dt><a href="./ToBeReviewed/STRING/strcnt.html?format=raw#_Strcnt">startpos</a></dt> 601 607 <dd>a parameter from the routine ./ToBeReviewed/STRING/strcnt.html</dd> 602 608 603 <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">startpos</a></dt>604 <dd>a parameter from the routine ./Textoidl/strcnt.html</dd>605 606 609 <dt><a href="./Grid/computegrid.html?format=raw#_computegrid">startx</a></dt> 607 610 <dd>a parameter from the routine ./Grid/computegrid.html</dd> … … 616 619 <dd>a parameter from the routine ./Grid/computegrid.html</dd> 617 620 621 <dt><a href="./ToBeReviewed/STRING/strwhere.html?format=raw#_strwhere">str</a></dt> 622 <dd>a parameter from the routine ./ToBeReviewed/STRING/strwhere.html</dd> 623 618 624 <dt><a href="./ToBeReviewed/STRING/strrepl.html?format=raw#_strrepl">str</a></dt> 619 625 <dd>a parameter from the routine ./ToBeReviewed/STRING/strrepl.html</dd> … … 622 628 <dd>a parameter from the routine ./ToBeReviewed/STRING/lenstr.html</dd> 623 629 624 <dt><a href="./ToBeReviewed/STRING/strwhere.html?format=raw#_strwhere">str</a></dt>625 <dd>a parameter from the routine ./ToBeReviewed/STRING/strwhere.html</dd>626 627 630 <dt><a href="./ToBeReviewed/STRING/string2struct.html?format=raw#_string2struct">strVal</a></dt> 628 631 <dd>a parameter from the routine ./ToBeReviewed/STRING/string2struct.html</dd> … … 634 637 <dd>a file from the directory ./Textoidl</dd> 635 638 636 <dt><a href="ToBeReviewed/STRING/strcnt.html?format=raw">strcnt.pro</a></dt>637 <dd>a file from the directory ./ToBeReviewed/STRING</dd>638 639 639 <dt><a href="Textoidl/strcnt.html?format=raw">strcnt.pro</a></dt> 640 640 <dd>a file from the directory ./Textoidl</dd> 641 641 642 <dt><a href="ToBeReviewed/STRING/strcnt.html?format=raw">strcnt.pro</a></dt> 643 <dd>a file from the directory ./ToBeReviewed/STRING</dd> 644 645 <dt><a href="./ToBeReviewed/STRING/str_size.html?format=raw#_STR_SIZE">string</a></dt> 646 <dd>a parameter from the routine ./ToBeReviewed/STRING/str_size.html</dd> 647 642 648 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html?format=raw#__str">string</a></dt> 643 649 <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html</dd> … … 649 655 <dd>a parameter from the routine ./Textoidl/str_token.html</dd> 650 656 651 <dt><a href="./ToBeReviewed/STRING/str_size.html?format=raw#_STR_SIZE">string</a></dt>652 <dd>a parameter from the routine ./ToBeReviewed/STRING/str_size.html</dd>653 654 657 <dt><a href="./ToBeReviewed/STRING/string2struct.html?format=raw#_string2struct">string2struct</a></dt> 655 658 <dd>a function from the file string2struct.pro</dd> … … 667 670 <dd>a file from the directory ./ToBeReviewed/STRING</dd> 668 671 672 <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">strn</a></dt> 673 <dd>a parameter from the routine ./Textoidl/strcnt.html</dd> 674 669 675 <dt><a href="./Textoidl/nexttok.html?format=raw#_nexttok">strn</a></dt> 670 676 <dd>a parameter from the routine ./Textoidl/nexttok.html</dd> … … 673 679 <dd>a parameter from the routine ./ToBeReviewed/STRING/strcnt.html</dd> 674 680 675 <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">strn</a></dt>676 <dd>a parameter from the routine ./Textoidl/strcnt.html</dd>677 678 681 <dt><a href="./ToBeReviewed/STRING/strrepl.html?format=raw#_strrepl">strrepl</a></dt> 679 682 <dd>a function from the file strrepl.pro</dd> … … 700 703 <dd>a function from the file strtrans.pro</dd> 701 704 702 <dt><a href="ToBeReviewed/STRING/strtrans.html?format=raw">strtrans.pro</a></dt>703 <dd>a file from the directory ./ToBeReviewed/STRING</dd>704 705 705 <dt><a href="Textoidl/strtrans.html?format=raw">strtrans.pro</a></dt> 706 706 <dd>a file from the directory ./Textoidl</dd> 707 707 708 <dt><a href="ToBeReviewed/STRING/strtrans.html?format=raw">strtrans.pro</a></dt> 709 <dd>a file from the directory ./ToBeReviewed/STRING</dd> 710 708 711 <dt><a href="./ToBeReviewed/STRUCTURE/extractstru.html?format=raw#_extractstru">stru</a></dt> 709 712 <dd>a parameter from the routine ./ToBeReviewed/STRUCTURE/extractstru.html</dd> … … 715 718 <dd>a parameter from the routine ./ToBeReviewed/STRUCTURE/mixstru.html</dd> 716 719 720 <dt><a href="./ToBeReviewed/LECTURE/litchamp.html?format=raw#_litchamp">struct</a></dt> 721 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/litchamp.html</dd> 722 723 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/restoreatt.html?format=raw#_restoreatt">struct</a></dt> 724 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/restoreatt.html</dd> 725 717 726 <dt><a href="./ToBeReviewed/STRING/strkeywd.html?format=raw#_strkeywd">struct</a></dt> 718 727 <dd>a parameter from the routine ./ToBeReviewed/STRING/strkeywd.html</dd> … … 721 730 <dd>a parameter from the routine ./ToBeReviewed/STRUCTURE/struct2string.html</dd> 722 731 723 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/restoreatt.html?format=raw#_restoreatt">struct</a></dt>724 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/restoreatt.html</dd>725 726 <dt><a href="./ToBeReviewed/LECTURE/litchamp.html?format=raw#_litchamp">struct</a></dt>727 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/litchamp.html</dd>728 729 732 <dt><a href="./ToBeReviewed/STRUCTURE/struct2string.html?format=raw#_struct2string">struct2string</a></dt> 730 733 <dd>a function from the file struct2string.pro</dd> … … 757 760 <dd>a keyword from the routine read_gribtable</dd> 758 761 762 <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">substrn</a></dt> 763 <dd>a parameter from the routine ./Textoidl/strcnt.html</dd> 764 759 765 <dt><a href="./ToBeReviewed/STRING/strcnt.html?format=raw#_Strcnt">substrn</a></dt> 760 766 <dd>a parameter from the routine ./ToBeReviewed/STRING/strcnt.html</dd> 761 767 762 <dt><a href="./Textoidl/strcnt.html?format=raw#_Strcnt">substrn</a></dt>763 <dd>a parameter from the routine ./Textoidl/strcnt.html</dd>764 765 768 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickread/ncdf_quickread_helper.html?format=raw#_ncdf_quickread_getFile">suffix</a></dt> 766 769 <dd>a keyword from the routine ncdf_quickread_getFile</dd> … … 778 781 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield.html</dd> 779 782 783 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_2d">sz</a></dt> 784 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield.html</dd> 785 780 786 <dt><a href="./ToBeReviewed/UTILITAIRE/fitintobox.html?format=raw#_err_mess">sz</a></dt> 781 787 <dd>a parameter from the routine ./ToBeReviewed/UTILITAIRE/fitintobox.html</dd> 782 788 783 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_2d">sz</a></dt>784 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield.html</dd>785 786 789 </dl> 787 790 -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-W.html
r89 r101 175 175 <dd>a keyword from the routine dessinetri</dd> 176 176 177 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">WDEPTH</a></dt> 178 <dd>a keyword from the routine checkfield</dd> 179 180 <dt><a href="./ToBeReviewed/UTILITAIRE/fitintobox.html?format=raw#_fitintobox">WDEPTH</a></dt> 181 <dd>a keyword from the routine fitintobox</dd> 182 183 <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">WDEPTH</a></dt> 184 <dd>a keyword from the routine section</dd> 185 186 <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">WDEPTH</a></dt> 187 <dd>a keyword from the routine grossemoyenne</dd> 188 189 <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">WDEPTH</a></dt> 190 <dd>a keyword from the routine moyenne</dd> 191 192 <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">WDEPTH</a></dt> 193 <dd>a keyword from the routine decoupeterre</dd> 194 195 <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">WDEPTH</a></dt> 196 <dd>a keyword from the routine grille</dd> 197 177 198 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">WDEPTH</a></dt> 178 199 <dd>a keyword from the routine pltz</dd> 179 200 180 <dt><a href="./ToBeReviewed/UTILITAIRE/fitintobox.html?format=raw#_fitintobox">WDEPTH</a></dt>181 <dd>a keyword from the routine fitintobox</dd>182 183 <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">WDEPTH</a></dt>184 <dd>a keyword from the routine section</dd>185 186 <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">WDEPTH</a></dt>187 <dd>a keyword from the routine grossemoyenne</dd>188 189 <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">WDEPTH</a></dt>190 <dd>a keyword from the routine moyenne</dd>191 192 <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">WDEPTH</a></dt>193 <dd>a keyword from the routine decoupeterre</dd>194 195 <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">WDEPTH</a></dt>196 <dd>a keyword from the routine grille</dd>197 198 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">WDEPTH</a></dt>199 <dd>a keyword from the routine checkfield</dd>200 201 201 <dt><a href="./Interpolation/fromreg.html?format=raw#_fromreg">WEIG</a></dt> 202 202 <dd>a keyword from the routine fromreg</dd> … … 214 214 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/VECTEUR/vecteur.html</dd> 215 215 216 <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">weig</a></dt> 217 <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 218 216 219 <dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">weig</a></dt> 217 220 <dd>a parameter from the routine ./Interpolation/compute_fromreg_bilinear_weigaddr.html</dd> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-X.html
r89 r101 172 172 <dl> 173 173 174 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">X</a></dt> 175 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate.html</dd> 176 177 <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_TimeAuto_Cov">X</a></dt> 178 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate.html</dd> 179 180 <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_A_TimeCorrelate">X</a></dt> 181 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate.html</dd> 182 183 <dt><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_ISNUMBER">X</a></dt> 184 <dd>a parameter from the routine ./ToBeReviewed/STRING/isnumber.html</dd> 185 174 186 <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">X</a></dt> 175 187 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/VECTEUR/velovect.html</dd> … … 181 193 <dd>a keyword from the routine plt1d</dd> 182 194 183 <dt><a href="./ToBeReviewed/STRING/isnumber.html?format=raw#_ISNUMBER">X</a></dt> 184 <dd>a parameter from the routine ./ToBeReviewed/STRING/isnumber.html</dd> 185 186 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">X</a></dt> 187 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate.html</dd> 188 189 <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_A_TimeCorrelate">X</a></dt> 190 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate.html</dd> 191 192 <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_TimeAuto_Cov">X</a></dt> 193 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate.html</dd> 195 <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_A_Correlate2d">X</a></dt> 196 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_correlate2d.html</dd> 194 197 195 198 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/rotation.html?format=raw#_ROTATION">X</a></dt> 196 199 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/rotation.html</dd> 197 200 198 <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_A_Correlate2d">X</a></dt>199 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_correlate2d.html</dd>200 201 201 <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">X0</a></dt> 202 202 <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd> … … 208 208 <dd>a keyword from the routine initncdf</dd> 209 209 210 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">XINDEX</a></dt> 211 <dd>a keyword from the routine checktypeminmax</dd> 212 210 213 <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">XINDEX</a></dt> 211 214 <dd>a keyword from the routine domdef</dd> 212 215 213 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">XINDEX</a></dt>214 <dd>a keyword from the routine checktypeminmax</dd>215 216 216 <dt><a href="./ToBeReviewed/COULEURS/xlct.html?format=raw#_XLCT_PSAVE">XLCT_PSAVE</a></dt> 217 217 <dd>a procedure from the file xlct.pro</dd> … … 262 262 <dd>a procedure from the file xpal.pro</dd> 263 263 264 <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html?format=raw#_drawcoast_e">XSEUIL</a></dt> 265 <dd>a keyword from the routine drawcoast_e</dd> 266 264 267 <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_c.html?format=raw#_drawcoast_c">XSEUIL</a></dt> 265 268 <dd>a keyword from the routine drawcoast_c</dd> 266 269 267 <dt><a href="./ToBeReviewed/ TRIANGULATION/drawcoast_e.html?format=raw#_drawcoast_e">XSEUIL</a></dt>268 <dd>a keyword from the routine drawcoast_e</dd>270 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">XSIZE</a></dt> 271 <dd>a keyword from the routine CW_BGROUP</dd> 269 272 270 273 <dt><a href="./buildinit.html?format=raw#_CW_FIELD2">XSIZE</a></dt> … … 274 277 <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd> 275 278 276 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">XSIZE</a></dt>277 <dd>a keyword from the routine CW_BGROUP</dd>278 279 279 <dt><a href="./ToBeReviewed/GRILLE/tracegrille.html?format=raw#_tracegrille">XSTRIDE</a></dt> 280 280 <dd>a keyword from the routine tracegrille</dd> … … 313 313 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate.html</dd> 314 314 315 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">x</a></dt> 316 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 317 318 <dt><a href="./ToBeReviewed/MATRICE/congridseb.html?format=raw#_congridseb">x</a></dt> 319 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/congridseb.html</dd> 320 321 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">x</a></dt> 322 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 323 324 <dt><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">x</a></dt> 325 <dd>a parameter from the routine ./Interpolation/spl_fstdrv.html</dd> 326 327 <dt><a href="./ToBeReviewed/MATRICE/cmapply.html?format=raw#_cmapply_product">x</a></dt> 328 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmapply.html</dd> 329 330 <dt><a href="./ToBeReviewed/PLOTS/reinitplt.html?format=raw#_reinitplt">x</a></dt> 331 <dd>a keyword from the routine reinitplt</dd> 332 333 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">x</a></dt> 334 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/splot.html</dd> 335 336 <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">x</a></dt> 337 <dd>a parameter from the routine ./Interpolation/spl_keep_mean.html</dd> 338 339 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">x</a></dt> 340 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/scontour.html</dd> 341 342 <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">x</a></dt> 343 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 344 345 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">x</a></dt> 346 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltbase.html</dd> 347 348 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html?format=raw#_LABEL_DATE">x</a></dt> 349 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_date.html</dd> 350 351 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">x</a></dt> 352 <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 353 315 354 <dt><a href="./ToBeReviewed/TRIANGULATION/dessinetri.html?format=raw#_dessinetri">x</a></dt> 316 355 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/dessinetri.html</dd> 317 356 318 <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">x</a></dt> 319 <dd>a parameter from the routine ./Interpolation/spl_keep_mean.html</dd> 320 321 <dt><a href="./ToBeReviewed/PLOTS/reinitplt.html?format=raw#_reinitplt">x</a></dt> 322 <dd>a keyword from the routine reinitplt</dd> 323 324 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">x</a></dt> 325 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 326 327 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html?format=raw#_LABEL_DATE">x</a></dt> 328 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_date.html</dd> 329 330 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">x</a></dt> 331 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 332 333 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">x</a></dt> 334 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/splot.html</dd> 335 336 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">x</a></dt> 337 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/scontour.html</dd> 338 339 <dt><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">x</a></dt> 340 <dd>a parameter from the routine ./Interpolation/spl_fstdrv.html</dd> 341 342 <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">x</a></dt> 343 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 344 345 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">x</a></dt> 346 <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 347 348 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">x</a></dt> 349 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltbase.html</dd> 350 351 <dt><a href="./ToBeReviewed/MATRICE/congridseb.html?format=raw#_congridseb">x</a></dt> 352 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/congridseb.html</dd> 353 354 <dt><a href="./ToBeReviewed/MATRICE/cmapply.html?format=raw#_cmapply_product">x</a></dt> 355 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmapply.html</dd> 357 <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">x0</a></dt> 358 <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 356 359 357 360 <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">x0</a></dt> 358 361 <dd>a parameter from the routine ./Interpolation/cutsegment.html</dd> 359 362 360 <dt><a href="./Interpolation/ cutpar.html?format=raw#_cutpar">x0</a></dt>361 <dd>a parameter from the routine ./Interpolation/ cutpar.html</dd>363 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x0in</a></dt> 364 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 362 365 363 366 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x0in</a></dt> … … 367 370 <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> 368 371 372 <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">x1</a></dt> 373 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd> 374 369 375 <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">x1</a></dt> 370 376 <dd>a parameter from the routine ./Interpolation/cutsegment.html</dd> 371 377 372 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">x1</a></dt>373 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd>374 375 <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">x1</a></dt>376 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd>377 378 378 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">x1</a></dt> 379 379 <dd>a parameter from the routine ./Interpolation/inquad.html</dd> … … 382 382 <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 383 383 384 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">x1</a></dt> 385 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 386 384 387 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">x1</a></dt> 385 388 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> … … 388 391 <dd>a parameter from the routine ./Interpolation/inrecgrid.html</dd> 389 392 393 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x1in</a></dt> 394 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 395 396 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x1in</a></dt> 397 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 398 390 399 <dt><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">x1in</a></dt> 391 400 <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> 392 401 393 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x1in</a></dt>394 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd>395 396 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">x2</a></dt>397 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd>398 399 402 <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">x2</a></dt> 400 403 <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 401 404 405 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">x2</a></dt> 406 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 407 408 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">x2</a></dt> 409 <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 410 411 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">x2</a></dt> 412 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 413 414 <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">x2</a></dt> 415 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 416 417 <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">x2</a></dt> 418 <dd>a parameter from the routine ./Interpolation/spl_keep_mean.html</dd> 419 402 420 <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">x2</a></dt> 403 421 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd> 404 422 405 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">x2</a></dt>406 <dd>a parameter from the routine ./Interpolation/inquad.html</dd>407 408 423 <dt><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">x2</a></dt> 409 424 <dd>a parameter from the routine ./Interpolation/spl_fstdrv.html</dd> 410 425 411 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">x2</a></dt> 412 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 413 414 <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">x2</a></dt> 415 <dd>a parameter from the routine ./Interpolation/spl_keep_mean.html</dd> 416 417 <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">x2</a></dt> 418 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 426 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x2in</a></dt> 427 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 419 428 420 429 <dt><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">x2in</a></dt> … … 436 445 <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> 437 446 447 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">x3in</a></dt> 448 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 449 438 450 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">x4</a></dt> 439 451 <dd>a parameter from the routine ./Interpolation/inquad.html</dd> … … 448 460 <dd>a procedure from the file buildinit.pro</dd> 449 461 462 <dt><a href="./ToBeReviewed/HOPE/computehopegrid.html?format=raw#_computehopegrid">xaxis</a></dt> 463 <dd>a parameter from the routine ./ToBeReviewed/HOPE/computehopegrid.html</dd> 464 450 465 <dt><a href="./ToBeReviewed/HOPE/findlineandpointtype.html?format=raw#_findlineandpointtype">xaxis</a></dt> 451 466 <dd>a parameter from the routine ./ToBeReviewed/HOPE/findlineandpointtype.html</dd> 452 467 453 <dt><a href="./ToBeReviewed/HOPE/computehopegrid.html?format=raw#_computehopegrid">xaxis</a></dt>454 <dd>a parameter from the routine ./ToBeReviewed/HOPE/computehopegrid.html</dd>455 456 468 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/xcreateanim.html?format=raw#_xcreateanim">xcreateanim</a></dt> 457 469 <dd>a procedure from the file xcreateanim.pro</dd> … … 481 493 <dd>a file from the directory ./ToBeReviewed/UTILITAIRE</dd> 482 494 495 <dt><a href="./Interpolation/imoms3.html?format=raw#_imoms3">xin</a></dt> 496 <dd>a parameter from the routine ./Interpolation/imoms3.html</dd> 497 498 <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">xin</a></dt> 499 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/fillcornermask.html</dd> 500 483 501 <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">xin</a></dt> 484 502 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/tracemask.html</dd> 485 503 486 <dt><a href="./Interpolation/imoms3.html?format=raw#_imoms3">xin</a></dt>487 <dd>a parameter from the routine ./Interpolation/imoms3.html</dd>488 489 <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">xin</a></dt>490 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/fillcornermask.html</dd>491 492 504 <dt><a href="ToBeReviewed/COULEURS/xlct.html?format=raw">xlct.pro</a></dt> 493 505 <dd>a file from the directory ./ToBeReviewed/COULEURS</dd> … … 562 574 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 563 575 576 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">xxin</a></dt> 577 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 578 564 579 <dt><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">xxin</a></dt> 565 580 <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-Y.html
r89 r101 172 172 <dl> 173 173 174 <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">Y</a></dt> 175 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/VECTEUR/velovect.html</dd> 176 177 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">Y</a></dt> 178 <dd>a keyword from the routine plt1d</dd> 179 174 180 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">Y</a></dt> 175 181 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate.html</dd> 176 182 177 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">Y</a></dt>178 <dd>a keyword from the routine plt1d</dd>179 180 183 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/rotation.html?format=raw#_ROTATION">Y</a></dt> 181 184 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/rotation.html</dd> 182 185 183 <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">Y</a></dt>184 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/VECTEUR/velovect.html</dd>185 186 186 <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">Y0</a></dt> 187 187 <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd> … … 214 214 <dd>a keyword from the routine CW_BGROUP</dd> 215 215 216 <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">YP0</a></dt> 217 <dd>a keyword from the routine spl_keep_mean</dd> 218 216 219 <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">YP0</a></dt> 217 220 <dd>a keyword from the routine spl_incr</dd> 218 221 219 <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">YP0</a></dt>220 <dd>a keyword from the routine spl_keep_mean</dd>221 222 222 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">YPAD</a></dt> 223 223 <dd>a keyword from the routine CW_BGROUP</dd> … … 235 235 <dd>a keyword from the routine drawcoast_e</dd> 236 236 237 <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">YSIZE</a></dt> 238 <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd> 239 240 <dt><a href="./buildinit.html?format=raw#_CW_FIELD2">YSIZE</a></dt> 241 <dd>a keyword from the routine CW_FIELD2</dd> 242 237 243 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">YSIZE</a></dt> 238 244 <dd>a keyword from the routine CW_BGROUP</dd> 239 245 240 <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">YSIZE</a></dt>241 <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd>242 243 <dt><a href="./buildinit.html?format=raw#_CW_FIELD2">YSIZE</a></dt>244 <dd>a keyword from the routine CW_FIELD2</dd>245 246 246 <dt><a href="./ToBeReviewed/GRILLE/tracegrille.html?format=raw#_tracegrille">YSTRIDE</a></dt> 247 247 <dd>a keyword from the routine tracegrille</dd> 248 248 249 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">YT</a></dt> 250 <dd>a keyword from the routine pltt</dd> 251 249 252 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">YT</a></dt> 250 253 <dd>a keyword from the routine checktypeminmax</dd> 251 254 252 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">YT</a></dt>253 <dd>a keyword from the routine pltt</dd>254 255 255 <dt><a href="./ToBeReviewed/POSTSCRIPT/calibre.html?format=raw#_calibre">YXASPECT</a></dt> 256 256 <dd>a keyword from the routine calibre</dd> … … 262 262 <dd>a keyword from the routine ncdf_timeget</dd> 263 263 264 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">YZ</a></dt> 265 <dd>a keyword from the routine pltz</dd> 266 264 267 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">YZ</a></dt> 265 268 <dd>a keyword from the routine checktypeminmax</dd> 266 269 267 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">YZ</a></dt>268 <dd>a keyword from the routine pltz</dd>269 270 270 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">Y_SCROLL_SIZE</a></dt> 271 271 <dd>a keyword from the routine CW_BGROUP</dd> … … 274 274 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate.html</dd> 275 275 276 <dt><a href="./ToBeReviewed/TRIANGULATION/dessinetri.html?format=raw#_dessinetri">y</a></dt> 277 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/dessinetri.html</dd> 278 279 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">y</a></dt> 280 <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 281 282 <dt><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">y</a></dt> 283 <dd>a parameter from the routine ./Interpolation/spl_fstdrv.html</dd> 284 285 <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">y</a></dt> 286 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 287 288 <dt><a href="./ToBeReviewed/MATRICE/congridseb.html?format=raw#_congridseb">y</a></dt> 289 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/congridseb.html</dd> 290 276 291 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">y</a></dt> 277 292 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltbase.html</dd> 278 293 294 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">y</a></dt> 295 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/scontour.html</dd> 296 279 297 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">y</a></dt> 280 298 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/splot.html</dd> 281 299 282 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">y</a></dt>283 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/scontour.html</dd>284 285 <dt><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">y</a></dt>286 <dd>a parameter from the routine ./Interpolation/spl_fstdrv.html</dd>287 288 <dt><a href="./ToBeReviewed/TRIANGULATION/dessinetri.html?format=raw#_dessinetri">y</a></dt>289 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/dessinetri.html</dd>290 291 <dt><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">y</a></dt>292 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd>293 294 300 <dt><a href="./ToBeReviewed/PLOTS/reinitplt.html?format=raw#_reinitplt">y</a></dt> 295 301 <dd>a keyword from the routine reinitplt</dd> 296 302 297 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">y</a></dt> 298 <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 299 300 <dt><a href="./ToBeReviewed/MATRICE/congridseb.html?format=raw#_congridseb">y</a></dt> 301 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/congridseb.html</dd> 303 <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">y0</a></dt> 304 <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 302 305 303 306 <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">y0</a></dt> 304 307 <dd>a parameter from the routine ./Interpolation/cutsegment.html</dd> 305 308 306 <dt><a href="./Interpolation/ cutpar.html?format=raw#_cutpar">y0</a></dt>307 <dd>a parameter from the routine ./Interpolation/ cutpar.html</dd>309 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">y0in</a></dt> 310 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 308 311 309 312 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">y0in</a></dt> … … 313 316 <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> 314 317 318 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">y1</a></dt> 319 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 320 321 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">y1</a></dt> 322 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 323 324 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">y1</a></dt> 325 <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 326 327 <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">y1</a></dt> 328 <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 329 330 <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">y1</a></dt> 331 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd> 332 315 333 <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">y1</a></dt> 316 334 <dd>a parameter from the routine ./Interpolation/cutsegment.html</dd> 317 335 318 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">y1</a></dt>319 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd>320 321 <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">y1</a></dt>322 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd>323 324 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">y1</a></dt>325 <dd>a parameter from the routine ./Interpolation/inquad.html</dd>326 327 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">y1</a></dt>328 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd>329 330 <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">y1</a></dt>331 <dd>a parameter from the routine ./Interpolation/cutpar.html</dd>332 333 336 <dt><a href="./Interpolation/inrecgrid.html?format=raw#_inrecgrid">y1d</a></dt> 334 337 <dd>a parameter from the routine ./Interpolation/inrecgrid.html</dd> 335 338 339 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">y1in</a></dt> 340 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 341 336 342 <dt><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">y1in</a></dt> 337 343 <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> … … 340 346 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 341 347 348 <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">y2</a></dt> 349 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd> 350 351 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">y2</a></dt> 352 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 353 342 354 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_concave">y2</a></dt> 343 355 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 344 356 345 <dt><a href="./Interpolation/spl_incr.html?format=raw#_pure_convex">y2</a></dt> 346 <dd>a parameter from the routine ./Interpolation/spl_incr.html</dd> 347 348 <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">y2</a></dt> 349 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/domdef.html</dd> 357 <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">y2</a></dt> 358 <dd>a parameter from the routine ./Interpolation/cutpar.html</dd> 350 359 351 360 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">y2</a></dt> 352 361 <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 353 362 354 <dt><a href="./Interpolation/ cutpar.html?format=raw#_cutpar">y2</a></dt>355 <dd>a parameter from the routine ./Interpolation/ cutpar.html</dd>363 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">y2in</a></dt> 364 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 356 365 357 366 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">y2in</a></dt> … … 367 376 <dd>a parameter from the routine ./Interpolation/inquad.html</dd> 368 377 378 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">y3in</a></dt> 379 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 380 369 381 <dt><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">y3in</a></dt> 370 382 <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> … … 382 394 <dd>a parameter from the routine ./ToBeReviewed/HOPE/findlineandpointtype.html</dd> 383 395 396 <dt><a href="./Calendar/leapyr.html?format=raw#_leapyr">year</a></dt> 397 <dd>a parameter from the routine ./Calendar/leapyr.html</dd> 398 384 399 <dt><a href="./Calendar/daysinmonth.html?format=raw#_daysinmonth">year</a></dt> 385 400 <dd>a parameter from the routine ./Calendar/daysinmonth.html</dd> … … 388 403 <dd>a parameter from the routine ./ToBeReviewed/CALENDRIER/caldat.html</dd> 389 404 390 <dt><a href="./Calendar/leapyr.html?format=raw#_leapyr">year</a></dt>391 <dd>a parameter from the routine ./Calendar/leapyr.html</dd>392 393 405 <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html?format=raw#_drawcoast_e">yf</a></dt> 394 406 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_e.html</dd> … … 397 409 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_c.html</dd> 398 410 411 <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">yin</a></dt> 412 <dd>a parameter from the routine ./Interpolation/spl_keep_mean.html</dd> 413 414 <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">yin</a></dt> 415 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/fillcornermask.html</dd> 416 399 417 <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">yin</a></dt> 400 418 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/tracemask.html</dd> 401 419 402 <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">yin</a></dt>403 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/fillcornermask.html</dd>404 405 <dt><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">yin</a></dt>406 <dd>a parameter from the routine ./Interpolation/spl_keep_mean.html</dd>407 408 420 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">ym</a></dt> 409 421 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltbase.html</dd> … … 415 427 <dd>a keyword from the routine bar_plot</dd> 416 428 429 <dt><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">yyin</a></dt> 430 <dd>a parameter from the routine ./Interpolation/square2quadrilateral.html</dd> 431 417 432 <dt><a href="./Interpolation/quadrilateral2square.html?format=raw#_quadrilateral2square">yyin</a></dt> 418 433 <dd>a parameter from the routine ./Interpolation/quadrilateral2square.html</dd> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index.html
r89 r101 193 193 <dd>a keyword from the routine write_oasis</dd> 194 194 195 <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_GETPOS">ASPECT</a></dt> 196 <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd> 197 195 198 <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP">ASPECT</a></dt> 196 199 <dd>a keyword from the routine IMDISP</dd> 197 200 198 <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_GETPOS">ASPECT</a></dt>199 <dd>a parameter from the routine ./ToBeReviewed/IMAGE/imdisp.html</dd>200 201 201 <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP_IMSIZE">ASPECT</a></dt> 202 202 <dd>a keyword from the routine IMDISP_IMSIZE</dd> 203 203 204 <dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html?format=raw#_ncdf_lec">ATT</a></dt> 205 <dd>a keyword from the routine ncdf_lec</dd> 206 204 207 <dt><a href="./ToBeReviewed/LECTURE/xncdf_lec.html?format=raw#_xncdf_lec">ATT</a></dt> 205 208 <dd>a keyword from the routine xncdf_lec</dd> 206 209 207 <dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html?format=raw#_ncdf_lec">ATT</a></dt>208 <dd>a keyword from the routine ncdf_lec</dd>209 210 210 <dt><a href="./ToBeReviewed/IMAGE/imdisp.html?format=raw#_IMDISP">AXIS</a></dt> 211 211 <dd>a keyword from the routine IMDISP</dd> … … 220 220 <dd>a function from the file a_correlate2d.pro</dd> 221 221 222 <dt><a href="./ToBeReviewed/MATRICE/cmset_op.html?format=raw#_cmset_op">a</a></dt> 223 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmset_op.html</dd> 224 225 <dt><a href="./ToBeReviewed/MATRICE/union.html?format=raw#_union">a</a></dt> 226 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/union.html</dd> 227 222 228 <dt><a href="./ToBeReviewed/MATRICE/inter.html?format=raw#_inter">a</a></dt> 223 229 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/inter.html</dd> 224 230 225 <dt><a href="./ToBeReviewed/MATRICE/cmset_op.html?format=raw#_cmset_op">a</a></dt> 226 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmset_op.html</dd> 231 <dt><a href="./ToBeReviewed/MATRICE/different.html?format=raw#_different">a</a></dt> 232 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/different.html</dd> 233 234 <dt><a href="./ToBeReviewed/CALCULS/determ2.html?format=raw#_determ2">a</a></dt> 235 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/determ2.html</dd> 227 236 228 237 <dt><a href="./ToBeReviewed/MATRICE/cmset_op.html?format=raw#_cmset_op_uniq">a</a></dt> 229 238 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmset_op.html</dd> 230 239 231 <dt><a href="./ToBeReviewed/MATRICE/union.html?format=raw#_union">a</a></dt>232 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/union.html</dd>233 234 <dt><a href="./ToBeReviewed/CALCULS/determ2.html?format=raw#_determ2">a</a></dt>235 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/determ2.html</dd>236 237 <dt><a href="./ToBeReviewed/MATRICE/different.html?format=raw#_different">a</a></dt>238 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/different.html</dd>239 240 240 <dt><a href="./ToBeReviewed/MATRICE/colle.html?format=raw#_colle">a0</a></dt> 241 241 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/colle.html</dd> … … 325 325 <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 326 326 327 <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">addr PRO compute_fromreg_imoms3_weigaddr</a></dt> 328 <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 329 327 330 <dt><a href="./ToBeReviewed/STRING/strrepl.html?format=raw#_strrepl">agument1</a></dt> 328 331 <dd>a parameter from the routine ./ToBeReviewed/STRING/strrepl.html</dd> … … 337 340 <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 338 341 342 <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">alatin</a></dt> 343 <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 344 339 345 <dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">alatin</a></dt> 340 346 <dd>a parameter from the routine ./Interpolation/compute_fromreg_bilinear_weigaddr.html</dd> … … 352 358 <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 353 359 360 <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">alonin</a></dt> 361 <dd>a parameter from the routine ./Interpolation/compute_fromreg_imoms3_weigaddr.html</dd> 362 354 363 <dt><a href="./Interpolation/angle.html?format=raw#_angle">angle</a></dt> 355 364 <dd>a procedure from the file angle.pro</dd> … … 376 385 <dd>a parameter from the routine ./Interpolation/ll_narcs_distances.html</dd> 377 386 387 <dt><a href="./ToBeReviewed/WIDGET/xxx.html?format=raw#_xxx">argspro</a></dt> 388 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/xxx.html</dd> 389 378 390 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html?format=raw#_selectfile">argspro</a></dt> 379 391 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html</dd> 380 392 381 <dt><a href="./ToBeReviewed/WIDGET/xxx.html?format=raw#_xxx">argspro</a></dt>382 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/xxx.html</dd>383 384 393 <dt><a href="./ToBeReviewed/MATRICE/cmapply.html?format=raw#_cmapply">array</a></dt> 385 394 <dd>a parameter from the routine ./ToBeReviewed/MATRICE/cmapply.html</dd> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-warnings.html
r97 r101 265 265 <tr> 266 266 <td class="docroutine"><a href="./Interpolation/angle.html?format=raw#_angle">angle</a></td> 267 <td class="docstat notdoc">not documented</td>268 </tr>269 270 </table><a href="./Interpolation/clickincell.html?format=raw">./Interpolation/clickincell.pro</a>271 <table>272 273 <tr>274 <td class="docroutine"><a href="./Interpolation/clickincell.html?format=raw#_clickincell">clickincell</a></td>275 267 <td class="docstat partialdoc">partially documented</td> 276 268 </tr> … … 313 305 <tr> 314 306 <td class="docroutine"><a href="./Interpolation/extrapolate.html?format=raw#_extrapolate">extrapolate</a></td> 315 <td class="docstat notdoc">notdocumented</td>307 <td class="docstat partialdoc">partially documented</td> 316 308 </tr> 317 309 … … 337 329 <tr> 338 330 <td class="docroutine"><a href="./Interpolation/imoms3.html?format=raw#_imoms3">imoms3</a></td> 339 <td class="docstat notdoc">notdocumented</td>331 <td class="docstat partialdoc">partially documented</td> 340 332 </tr> 341 333 … … 356 348 </tr> 357 349 358 </table><a href="./Interpolation/ll_narcs_distances.html?format=raw">./Interpolation/ll_narcs_distances.pro</a>359 <table>360 361 <tr>362 <td class="docroutine"><a href="./Interpolation/ll_narcs_distances.html?format=raw#_LL_NARCS_DISTANCES">LL_NARCS_DISTANCES</a></td>363 <td class="docstat partialdoc">partially documented</td>364 </tr>365 366 350 </table><a href="./Interpolation/map_npoints.html?format=raw">./Interpolation/map_npoints.pro</a> 367 351 <table> … … 388 372 </tr> 389 373 390 </table><a href="./Interpolation/spl_fstdrv.html?format=raw">./Interpolation/spl_fstdrv.pro</a>391 <table>392 393 <tr>394 <td class="docroutine"><a href="./Interpolation/spl_fstdrv.html?format=raw#_spl_fstdrv">spl_fstdrv</a></td>395 <td class="docstat partialdoc">partially documented</td>396 </tr>397 398 374 </table><a href="./Interpolation/spl_incr.html?format=raw">./Interpolation/spl_incr.pro</a> 399 375 <table> … … 411 387 <tr> 412 388 <td class="docroutine"><a href="./Interpolation/spl_incr.html?format=raw#_spl_incr">spl_incr</a></td> 413 <td class="docstat notdoc">not documented</td>414 </tr>415 416 </table><a href="./Interpolation/spl_keep_mean.html?format=raw">./Interpolation/spl_keep_mean.pro</a>417 <table>418 419 <tr>420 <td class="docroutine"><a href="./Interpolation/spl_keep_mean.html?format=raw#_spl_keep_mean">spl_keep_mean</a></td>421 389 <td class="docstat partialdoc">partially documented</td> 422 390 </tr> … … 430 398 </tr> 431 399 432 </table><a href="./Interpolation/testinterp.html?format=raw">./Interpolation/testinterp.pro</a> 433 <table> 434 435 <tr> 436 <td class="docroutine"><a href="./Interpolation/testinterp.html?format=raw#_testinterp">testinterp</a></td> 400 <tr> 401 <td class="docroutine"><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">square2quadrilateral</a></td> 437 402 <td class="docstat notdoc">not documented</td> 438 403 </tr> … … 2189 2154 <tr> 2190 2155 <td class="docroutine"><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">VELOVECT</a></td> 2191 <td class="docstat notdoc">notdocumented</td>2156 <td class="docstat partialdoc">partially documented</td> 2192 2157 </tr> 2193 2158 -
trunk/SRC/Documentation/idldoc_html_output/overview.html
r97 r101 356 356 <tr> 357 357 <td>Routines/methods</td> 358 <td class="value"> 75 5</td>358 <td class="value"> 756</td> 359 359 </tr> 360 360 <tr> 361 361 <td>Lines of code</td> 362 <td class="value"> 55 778</td>362 <td class="value"> 55663</td> 363 363 </tr> 364 364 </table> -
trunk/SRC/Documentation/idldoc_html_output/search.js
r97 r101 28 28 a[26] = new Array("./Grid/n48gaussian.html", "n48gaussian.pro", "", " NAME:n48gaussian PURPOSE:compute the latitudes of the n48 gaussian grid See: http: www ecmwf int products data technical gaussian n48FIS html CATEGORY:grid CALLING SEQUENCE:lat n48gaussian INPUTS:None KEYWORD PARAMETERS:None OUTPUTS:a 1d array COMMON BLOCKS:None SIDE EFFECTS:None RESTRICTIONS:None EXAMPLE: MODIFICATION HISTORY: Sebastien Masson smasson lodyc jussieu fr June 2004 FUNCTION n48gaussian latitude reduced regular latitude number points points n48 1 20 192 88 57216 2 25 192 86 72253 3 36 192 84 86197 4 40 192 82 99894 5 45 192 81 13497 6 50 192 79 27055 7 60 192 77 40588 8 60 192 75 54106 9 72 192 73 67613 10 75 192 71 81113 11 80 192 69 94608 12 90 192 68 08099 13 96 192 66 21587 14 100 192 64 35073 15 108 192 62 48557 16 120 192 60 62039 17 120 192 58 75520 18 120 192 56 89001 19 128 192 55 02480 20 135 192 53 15959 21 144 192 51 29437 22 144 192 49 42915 23 160 192 47 56392 24 160 192 45 69869 25 160 192 43 83345 26 160 192 41 96822 27 160 192 40 10297 28 180 192 38 23773 29 180 192 36 37249 30 180 192 34 50724 31 180 192 32 64199 32 180 192 30 77674 33 192 192 28 91149 34 192 192 27 04623 35 192 192 25 18098 36 192 192 23 31573 37 192 192 21 45047 38 192 192 19 58521 39 192 192 17 71996 40 192 192 15 85470 41 192 192 13 98944 42 192 192 12 12418 43 192 192 10 25892 44 192 192 8 39366 45 192 192 6 52840 46 192 192 4 66314 47 192 192 2 79788 48 192 192 0 93262 n48 reform n48 4 48 over n48 reform n48 3 over n48 n48 reverse n48 return n48 end"); 29 29 a[27] = new Array("./Grid/n80gaussian.html", "n80gaussian.pro", "", " NAME:n80gaussian PURPOSE:compute the latitudes of the n80 gaussian grid See: http: www ecmwf int products data technical gaussian n80FIS html CATEGORY:grid CALLING SEQUENCE:lat n80gaussian INPUTS:None KEYWORD PARAMETERS:None OUTPUTS:a 1d array COMMON BLOCKS:None SIDE EFFECTS:None RESTRICTIONS:None EXAMPLE: MODIFICATION HISTORY: Sebastien Masson smasson lodyc jussieu fr June 2004 FUNCTION n80gaussian latitude reduced regular latitude number points points n80 1 18 320 89 14152 2 25 320 88 02943 3 36 320 86 91077 4 40 320 85 79063 5 45 320 84 66992 6 54 320 83 54895 7 60 320 82 42782 8 64 320 81 30659 9 72 320 80 18531 10 72 320 79 06398 11 80 320 77 94262 12 90 320 76 82124 13 96 320 75 69984 14 100 320 74 57843 15 108 320 73 45701 16 120 320 72 33558 17 120 320 71 21414 18 128 320 70 09269 19 135 320 68 97124 20 144 320 67 84978 21 144 320 66 72833 22 150 320 65 60686 23 160 320 64 48540 24 160 320 63 36393 25 180 320 62 24246 26 180 320 61 12099 27 180 320 59 99952 28 192 320 58 87804 29 192 320 57 75657 30 200 320 56 63509 31 200 320 55 51361 32 216 320 54 39214 33 216 320 53 27066 34 216 320 52 14917 35 225 320 51 02769 36 225 320 49 90621 37 240 320 48 78473 38 240 320 47 66325 39 240 320 46 54176 40 256 320 45 42028 41 256 320 44 29879 42 256 320 43 17731 43 256 320 42 05582 44 288 320 40 93434 45 288 320 39 81285 46 288 320 38 69137 47 288 320 37 56988 48 288 320 36 44839 49 288 320 35 32691 50 288 320 34 20542 51 288 320 33 08393 52 288 320 31 96244 53 300 320 30 84096 54 300 320 29 71947 55 300 320 28 59798 56 300 320 27 47649 57 320 320 26 35500 58 320 320 25 23351 59 320 320 24 11203 60 320 320 22 99054 61 320 320 21 86905 62 320 320 20 74756 63 320 320 19 62607 64 320 320 18 50458 65 320 320 17 38309 66 320 320 16 26160 67 320 320 15 14011 68 320 320 14 01862 69 320 320 12 89713 70 320 320 11 77564 71 320 320 10 65415 72 320 320 9 53266 73 320 320 8 41117 74 320 320 7 28968 75 320 320 6 16819 76 320 320 5 04670 77 320 320 3 92521 78 320 320 2 80372 79 320 320 1 68223 80 320 320 0 56074 n80 reform n80 4 80 over n80 reform n80 3 over n80 n80 reverse n80 return n80 end"); 30 a[28] = new Array("./Grid/ncdf_meshread.html", "ncdf_meshread.pro", "", " NAME:ncdf_meshread PURPOSE:read NetCDF meshmask file created by OPA CATEGORY:grid reading CALLING SEQUENCE:ncdf_meshread filename INPUTS: filename: the name of the meshmask file to read Default is meshmask nc if this name does not contain any and if iodirectory keyword is not specify then the common variable iodir will be use to define the mesh file path KEYWORD PARAMETERS: GLAMBOUNDARY:a 2 elements vector lon1 lon2 the longitute boundaries that should be used to visualize the data lon2 lon1 lon2 lon1 le 360 key_shift will be automaticaly defined according to GLAMBOUNDARY CHECKDAT: Suppressed Use micromeshmask pro to create an appropriate meshmask ONEARTH 0 or 1: to force the manual definition of key_onearth to specify if the data are on earth use longitude latitude etc By default key_onearth 1 note that ONEARTH 0 forces PERIODIC 0 SHIFT 0 and is cancelling GLAMBOUNDARY PERIODIC 0 or 1: to force the manual definition of key_periodic By default key_periodic is automaticaly computed by using the first line of glamt SHIFT : to force the manual definition of key_shift By debault key_shift is automaticaly computed according to the glamboundary when defined by using the first line of glamt if key_periodic 0 then in any case key_shift 0 STRCALLING: a string containing the calling command used to call computegrid this is used by xxx pro STRIDE : a 3 elements vector to specify the stride in x y z direction Default definition is key_stride The resulting value will be stored in the common cm_4mesh variable key_stride OUTPUTS:none COMMON BLOCKS: cm_4mesh cm_4data cm_4cal SIDE EFFECTS: define and or use common variables from cm_4mesh cm_4data cm_4cal RESTRICTIONS: ixminmesh ixmaxmesh iyminmesh iymaxmesh izminmesh izmaxmesh must be defined febore calling ncdf_meshread if some of those value are equal to 1 they will be automatically defined EXAMPLE: MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr 12 1999 July 2004 Sebastien Masson: Several modifications micromeshmask clean partial steps clean use of key_stride automatic definition of key_shift Oct 2004 Sebastien Masson: add PERIODIC and SHIFT Aug 2005 Sebastien Masson: some cleaning english PRO ncdf_meshread filename GLAMBOUNDARY glamboundary CHECKDAT checkdat ONEARTH onearth GETDIMENSIONS getdimensions PERIODIC periodic SHIFT shift STRIDE stride STRCALLING strcalling _EXTRA ex cm_4mesh cm_4data cm_4cal IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 for key_performance IF keyword_set CHECKDAT THEN BEGIN print The keyword CHECKDAT has been suppressed it could create bugs print Remove it from the call of ncdf_meshread print Please use smallmeshmask pro or micromeshmask pro to create a print meshmask that has manageable size return ENDIF find meshfile name and open it def de filename par defaut IF n_params EQ 0 then filename meshmask nc meshname isafile file filename iodirectory iodir _EXTRA ex meshname meshname 0 noticebase xnotice Reading file C meshname C if the meshmask is on tape archive get it back IF version OS_FAMILY EQ unix THEN spawn file meshname dev null cdfid ncdf_open meshname contient ncdf_inquire cdfid dimensions ncdf_diminq cdfid x name jpiglo ncdf_diminq cdfid y name jpjglo listdims strlowcase ncdf_listdims cdfid IF where listdims EQ z 0 NE 1 THEN ncdf_diminq cdfid z name jpkglo ELSE BEGIN dimid where strmid listdims 0 5 EQ depth 0 IF dimid NE 1 THEN ncdf_diminq cdfid dimid name jpkglo ELSE BEGIN report We could not find the vertical dimension its name must be z or start with depth stop ENDELSE ENDELSE if keyword_set getdimensions then begin widget_control noticebase bad_id nothing destroy ncdf_close cdfid return endif check that all i xyz min ax mesh are well defined if n_elements ixminmesh EQ 0 THEN ixminmesh 0 if n_elements ixmaxmesh EQ 0 then ixmaxmesh jpiglo 1 if ixminmesh EQ 1 THEN ixminmesh 0 IF ixmaxmesh EQ 1 then ixmaxmesh jpiglo 1 if n_elements iyminmesh EQ 0 THEN iyminmesh 0 IF n_elements iymaxmesh EQ 0 then iymaxmesh jpjglo 1 if iyminmesh EQ 1 THEN iyminmesh 0 IF iymaxmesh EQ 1 then iymaxmesh jpjglo 1 if n_elements izminmesh EQ 0 THEN izminmesh 0 IF n_elements izmaxmesh EQ 0 then izmaxmesh jpkglo 1 if izminmesh EQ 1 THEN izminmesh 0 IF izmaxmesh EQ 1 then izmaxmesh jpkglo 1 definition of jpi jpj jpj jpi long ixmaxmesh ixminmesh 1 jpj long iymaxmesh iyminmesh 1 jpk long izmaxmesh izminmesh 1 check onearth and its consequences IF n_elements onearth EQ 0 THEN key_onearth 1 ELSE key_onearth keyword_set onearth IF NOT key_onearth THEN BEGIN periodic 0 shift 0 ENDIF automatic definition of key_periodic IF n_elements periodic EQ 0 THEN BEGIN IF jpi GT 1 THEN BEGIN varinq ncdf_varinq cdfid glamt CASE varinq ndims OF 2:ncdf_varget cdfid glamt xaxis offset ixminmesh iyminmesh count jpi 1 3:ncdf_varget cdfid glamt xaxis offset ixminmesh iyminmesh 0 count jpi 1 1 4:ncdf_varget cdfid glamt xaxis offset ixminmesh iyminmesh 0 0 count jpi 1 1 1 ENDCASE xaxis xaxis 720 MOD 360 xaxis xaxis sort xaxis key_periodic xaxis jpi 1 2 xaxis jpi 1 xaxis jpi 2 GE xaxis 0 360 ENDIF ELSE key_periodic 0 ENDIF ELSE key_periodic keyword_set periodic automatic definition of key_shift IF n_elements shift EQ 0 THEN BEGIN key_shift long testvar var key_shift key_shift will be defined according to the first line of glamt if keyword_set glamboundary AND jpi GT 1 AND key_periodic EQ 1 THEN BEGIN varinq ncdf_varinq cdfid glamt CASE varinq ndims OF 2:ncdf_varget cdfid glamt xaxis offset ixminmesh iyminmesh count jpi 1 3:ncdf_varget cdfid glamt xaxis offset ixminmesh iyminmesh 0 count jpi 1 1 4:ncdf_varget cdfid glamt xaxis offset ixminmesh iyminmesh 0 0 count jpi 1 1 1 ENDCASE xaxis between glamboundary 0 and glamboundary 1 xaxis xaxis MOD 360 smaller where xaxis LT glamboundary 0 if smaller 0 NE 1 then xaxis smaller xaxis smaller 360 bigger where xaxis GE glamboundary 1 if bigger 0 NE 1 then xaxis bigger xaxis bigger 360 key_shift where xaxis EQ min xaxis 0 IF key_shift NE 0 THEN BEGIN key_shift jpi key_shift xaxis shift xaxis key_shift ENDIF IF array_equal sort xaxis lindgen jpi NE 1 THEN BEGIN print the x axis 1st line of glamt is not sorted in the inceasing order after the automatic definition of key_shift print please use the keyword shift and periodic to suppress the automatic definition of key_shift and key_periodic and define by hand a more suitable value widget_control noticebase bad_id nothing destroy return ENDIF ENDIF ELSE key_shift 0 ENDIF ELSE key_shift long shift key_periodic EQ 1 check key_stride and related things if n_elements stride eq 3 then key_stride stride if n_elements key_stride LE 2 then key_stride 1 1 1 key_stride 1l long key_stride IF total key_stride NE 3 THEN BEGIN IF key_shift NE 0 THEN BEGIN for explanation see header of read_ncdf_varget pro jpiright key_shift jpileft jpi key_shift key_stride 0 1 key_shift 1 MOD key_stride 0 jpi jpiright 1 key_stride 0 1 jpileft 1 key_stride 0 1 ENDIF ELSE jpi jpi 1 key_stride 0 1 jpj jpj 1 key_stride 1 1 jpk jpk 1 key_stride 2 1 ENDIF default definitions to be able to use read_ncdf_varget default definitions to be able to use read_ncdf_varget ixmindtasauve testvar var ixmindta iymindtasauve testvar var iymindta izmindtasauve testvar var izmindta ixmindta 0l iymindta 0l izmindta 0l jpt 1 time 1 firsttps 0 firstx 0 lastx jpi 1 firsty 0 lasty jpj 1 firstz 0 lastz jpk 1 nx jpi ny jpj nz 1 izminmeshsauve izminmesh izminmesh 0 2d arrays: list the 2d variables that must be read namevar glamt glamu glamv glamf gphit gphiu gphiv gphif e1t e1u e1v e1f e2t e2u e2v e2f for the variables related to the partial steps allvarname ncdf_listvars cdfid IF where allvarname EQ hdept 0 NE 1 THEN BEGIN key_partialstep 1 namevar namevar hdept hdepw ENDIF ELSE BEGIN key_partialstep 0 hdept 1 hdepw 1 ENDELSE for compatibility with old versions of meshmask partial steps IF where allvarname EQ e3tp 0 NE 1 THEN namevar namevar e3tp e3wp ELSE BEGIN e3t_ps 1 e3w_ps 1 ENDELSE IF where allvarname EQ e3t_ps 0 NE 1 THEN namevar namevar e3t_ps e3w_ps ELSE BEGIN e3t_ps 1 e3w_ps 1 ENDELSE IF where allvarname EQ e3u_ps 0 NE 1 THEN namevar namevar e3u_ps e3v_ps ELSE BEGIN e3u_ps 1 e3v_ps 1 ENDELSE read all the 2d variables for i 0 n_elements namevar 1 do begin varcontient ncdf_varinq cdfid namevar i name varcontient name read_ncdf_varget commande namevar i float res rien execute commande ENDFOR for compatibility with old versions of meshmask partial steps change e3 tw p to e3 tw _ps IF n_elements e3tp NE 0 THEN e3t_ps temporary e3tp IF n_elements e3wp NE 0 THEN e3w_ps temporary e3wp in the kase of key_stride ne 1 1 1 redefine f points coordinates: they must be in the middle of 3 T points if key_stride 0 NE 1 OR key_stride 1 NE 1 then BEGIN we must recompute glamf and gphif IF jpi GT 1 THEN BEGIN if keyword_set key_onearth AND keyword_set xnotsorted OR keyword_set key_periodic AND key_irregular then BEGIN stepxf glamt 720 MOD 360 stepxf shift stepxf 1 1 stepxf stepxf stepxf stepxf 360 stepxf 360 stepxf min abs stepxf dimension 3 IF NOT keyword_set key_periodic THEN stepxf jpi 1 stepxf jpi 2 ENDIF ELSE BEGIN stepxf shift glamt 1 1 glamt IF keyword_set key_periodic THEN stepxf jpi 1 360 stepxf jpi 1 ELSE stepxf jpi 1 stepxf jpi 2 ENDELSE IF jpj GT 1 THEN BEGIN stepxf jpj 1 stepxf jpj 2 stepxf jpi 1 jpj 1 stepxf jpi 2 jpj 2 ENDIF glamf glamt 0 5 stepxf ENDIF ELSE glamf glamt 0 5 IF jpj GT 1 THEN BEGIN we must compute stepyf: y distance between T i j T i 1 j 1 stepyf shift gphit 1 1 gphit stepyf jpj 1 stepyf jpj 2 IF jpi GT 1 THEN BEGIN if NOT keyword_set key_periodic THEN stepyf jpi 1 stepyf jpi 2 stepyf jpi 1 jpj 1 stepyf jpi 2 jpj 2 ENDIF gphif gphit 0 5 stepyf ENDIF ELSE gphif gphit 0 5 ENDIF 3d arrays: nz jpk izminmesh izminmeshsauve listdims ncdf_listdims cdfid micromask where listdims EQ y_m 0 varcontient ncdf_varinq cdfid tmask name varcontient name IF micromask NE 1 THEN BEGIN keep original values iyminmeshtrue iyminmesh key_stridetrue key_stride yyy1 firsty key_stridetrue 1 iyminmeshtrue yyy2 lasty key_stridetrue 1 iyminmeshtrue the mask is stored as the bit values of the byte array along the y dimension see micromeshmask pro we must modify several parameters iyminmesh 0L firsty yyy1 8 lasty yyy2 8 ny lasty firsty 1 key_stride key_stride 0 1 key_stride 2 read_ncdf_varget tmask bytarr jpi jpj jpk now we must get back the mask loop on the level to save memory the loop is short and thus should be fast enough FOR k 0 jpk 1 DO BEGIN zzz transpose res k zzz reform binary zzz 8 ny nx over zzz transpose temporary zzz zzz zzz yyy1 MOD 8: 8 ny 8 yyy2 MOD 8 IF key_stridetrue 1 NE 1 THEN BEGIN IF float strmid version release 0 3 LT 5 6 THEN BEGIN nnny size zzz 2 yind key_stridetrue 1 lindgen nnny 1 key_stridetrue 1 1 tmask k temporary zzz yind ENDIF ELSE tmask k temporary zzz 0: :key_stridetrue 1 ENDIF ELSE tmask k temporary zzz ENDFOR ENDIF ELSE BEGIN read_ncdf_varget tmask byte res ENDELSE boudary conditions used to compute umask varcontient ncdf_varinq cdfid umask name varcontient name nx 1L firstx jpi 1 lastx jpi 1 IF micromask NE 1 THEN BEGIN read_ncdf_varget umaskred reform binary res 8 ny jpk over umaskred umaskred yyy1 MOD 8: 8 ny 8 yyy2 MOD 8 IF key_stridetrue 1 NE 1 THEN umaskred temporary umaskred yind ENDIF ELSE BEGIN read_ncdf_varget umaskred reform byte res over ENDELSE boudary conditions used to compute fmask 1 varcontient ncdf_varinq cdfid fmask name varcontient name IF micromask NE 1 THEN BEGIN read_ncdf_varget fmaskredy reform binary res 8 ny jpk over fmaskredy fmaskredy yyy1 MOD 8: 8 ny 8 yyy2 MOD 8 IF key_stridetrue 1 NE 1 THEN fmaskredy temporary fmaskredy yind ENDIF ELSE BEGIN read_ncdf_varget fmaskredy reform byte res over fmaskredy temporary fmaskredy MOD 2 ENDELSE boudary conditions used to compute vmask varcontient ncdf_varinq cdfid vmask name varcontient name nx jpi firstx 0L lastx jpi 1L ny 1L firsty jpj 1 lasty jpj 1 IF micromask NE 1 THEN BEGIN yyy1 firsty key_stridetrue 1 iyminmeshtrue yyy2 lasty key_stridetrue 1 iyminmeshtrue iyminmesh 0L firsty yyy1 8 lasty yyy2 8 ny lasty firsty 1 read_ncdf_varget vmaskred transpose temporary res 1 0 2 vmaskred reform binary vmaskred 8 ny nx nz over vmaskred transpose temporary vmaskred 1 0 2 vmaskred reform vmaskred yyy1 MOD 8: 8 ny 8 yyy2 MOD 8 ENDIF ELSE BEGIN read_ncdf_varget vmaskred reform byte res over ENDELSE boudary conditions used to compute fmask 2 varcontient ncdf_varinq cdfid fmask name varcontient name IF micromask NE 1 THEN BEGIN read_ncdf_vargetfmaskredx transpose temporary res 1 0 2 fmaskredx reform binary fmaskredx 8 ny nx nz over fmaskredx transpose temporary fmaskredx 1 0 2 fmaskredx reform fmaskredx yyy1 MOD 8: 8 ny 8 yyy2 MOD 8 iyminmesh iyminmeshtrue key_stride key_stridetrue ENDIF ELSE BEGIN read_ncdf_varget fmaskredx reform byte res over fmaskredx fmaskredx MOD 2 ENDELSE 1d arrays namevar e3t e3w gdept gdepw for i 0 n_elements namevar 1 do begin varcontient ncdf_varinq cdfid namevar i CASE n_elements varcontient dim OF 4:BEGIN commande ncdf_varget cdfid namevar i namevar i offset 0 0 izminmesh 0 count 1 1 jpk 1 if key_stride 2 NE 1 then commande commande stride 1 1 key_stride 2 1 END 2:BEGIN commande ncdf_varget cdfid namevar i namevar i offset izminmesh 0 count jpk 1 if key_stride 2 NE 1 then commande commande stride key_stride 2 END 1:BEGIN commande ncdf_varget cdfid namevar i namevar i offset izminmesh count jpk if key_stride 2 NE 1 then commande commande stride key_stride 2 END ENDCASE rien execute commande commande namevar i float namevar i rien execute commande commande if size namevar i n_dimension gt 0 then namevar i reform namevar i over rien execute commande ENDFOR ncdf_close cdfid Apply Glamboudary if keyword_set glamboundary AND key_onearth then BEGIN if glamboundary 0 NE glamboundary 1 then BEGIN glamt glamt MOD 360 smaller where glamt LT glamboundary 0 if smaller 0 NE 1 then glamt smaller glamt smaller 360 bigger where glamt GE glamboundary 1 if bigger 0 NE 1 then glamt bigger glamt bigger 360 glamu glamu MOD 360 smaller where glamu LT glamboundary 0 if smaller 0 NE 1 then glamu smaller glamu smaller 360 bigger where glamu GE glamboundary 1 if bigger 0 NE 1 then glamu bigger glamu bigger 360 glamv glamv MOD 360 smaller where glamv LT glamboundary 0 if smaller 0 NE 1 then glamv smaller glamv smaller 360 bigger where glamv GE glamboundary 1 if bigger 0 NE 1 then glamv bigger glamv bigger 360 glamf glamf MOD 360 smaller where glamf LT glamboundary 0 if smaller 0 NE 1 then glamf smaller glamf smaller 360 bigger where glamf GE glamboundary 1 if bigger 0 NE 1 then glamf bigger glamf bigger 360 toosmall where glamu EQ glamboundary 0 IF toosmall 0 NE 1 THEN glamu toosmall glamu toosmall 360 toosmall where glamf EQ glamboundary 0 IF toosmall 0 NE 1 THEN glamf toosmall glamf toosmall 360 endif endif make sure we do have 2d arrays when jpj eq 1 IF jpj EQ 1 THEN BEGIN glamt reform glamt jpi jpj over gphit reform gphit jpi jpj over e1t reform e1t jpi jpj over e2t reform e2t jpi jpj over glamu reform glamu jpi jpj over gphiu reform gphiu jpi jpj over e1u reform e1u jpi jpj over e2u reform e2u jpi jpj over glamv reform glamv jpi jpj over gphiv reform gphiv jpi jpj over e1v reform e1v jpi jpj over e2v reform e2v jpi jpj over glamf reform glamf jpi jpj over gphif reform gphif jpi jpj over e1f reform e1f jpi jpj over e2f reform e2f jpi jpj over IF keyword_set key_partialstep THEN BEGIN hdept reform hdept jpi jpj over hdepw reform hdepw jpi jpj over e3t_ps reform e3t_ps jpi jpj over e3w_ps reform e3w_ps jpi jpj over ENDIF ENDIF ixmindta ixmindtasauve iymindta iymindtasauve izmindta izmindtasauve widget_control noticebase bad_id nothing destroy key_yreverse 0 key_zreverse 0 key_gridtype c grid parameters used by xxx IF NOT keyword_set strcalling THEN BEGIN IF n_elements ccmeshparameters EQ 0 THEN strcalling ncdf_meshread ELSE strcalling ccmeshparameters filename ENDIF IF n_elements glamt GE 2 THEN BEGIN glaminfo moment glamt IF finite glaminfo 2 EQ 0 THEN glaminfo glaminfo 0:1 gphiinfo moment gphit IF finite gphiinfo 2 EQ 0 THEN gphiinfo gphiinfo 0:1 ENDIF ELSE BEGIN glaminfo glamt gphiinfo gphit ENDELSE ccmeshparameters filename:strcalling glaminfo:float string glaminfo format E11 4 gphiinfo:float string gphiinfo format E11 4 jpiglo:jpiglo jpjglo:jpjglo jpkglo:jpkglo jpi:jpi jpj:jpj jpk:jpk ixminmesh:ixminmesh ixmaxmesh:ixmaxmesh iyminmesh:iyminmesh iymaxmesh:iymaxmesh izminmesh:izminmesh izmaxmesh:izmaxmesh key_shift:key_shift key_periodic:key_periodic key_stride:key_stride key_gridtype:key_gridtype key_yreverse:key_yreverse key_zreverse:key_zreverse key_partialstep:key_partialstep key_onearth:key_onearth if keyword_set key_performance THEN print time ncdf_meshread systime 1 tempsun updateold return end");30 a[28] = new Array("./Grid/ncdf_meshread.html", "ncdf_meshread.pro", "", " NAME:ncdf_meshread PURPOSE:read NetCDF meshmask file created by OPA CATEGORY:grid reading CALLING SEQUENCE:ncdf_meshread filename INPUTS: filename: the name of the meshmask file to read Default is meshmask nc if this name does not contain any and if iodirectory keyword is not specify then the common variable iodir will be use to define the mesh file path KEYWORD PARAMETERS: GLAMBOUNDARY:a 2 elements vector lon1 lon2 the longitute boundaries that should be used to visualize the data lon2 lon1 lon2 lon1 le 360 key_shift will be automaticaly defined according to GLAMBOUNDARY CHECKDAT: Suppressed Use micromeshmask pro to create an appropriate meshmask ONEARTH 0 or 1: to force the manual definition of key_onearth to specify if the data are on earth use longitude latitude etc By default key_onearth 1 note that ONEARTH 0 forces PERIODIC 0 SHIFT 0 and is cancelling GLAMBOUNDARY PERIODIC 0 or 1: to force the manual definition of key_periodic By default key_periodic is automaticaly computed by using the first line of glamt SHIFT : to force the manual definition of key_shift By debault key_shift is automaticaly computed according to the glamboundary when defined by using the first line of glamt if key_periodic 0 then in any case key_shift 0 STRCALLING: a string containing the calling command used to call computegrid this is used by xxx pro STRIDE : a 3 elements vector to specify the stride in x y z direction Default definition is key_stride The resulting value will be stored in the common cm_4mesh variable key_stride OUTPUTS:none COMMON BLOCKS: cm_4mesh cm_4data cm_4cal SIDE EFFECTS: define and or use common variables from cm_4mesh cm_4data cm_4cal RESTRICTIONS: ixminmesh ixmaxmesh iyminmesh iymaxmesh izminmesh izmaxmesh must be defined febore calling ncdf_meshread if some of those value are equal to 1 they will be automatically defined EXAMPLE: MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr 12 1999 July 2004 Sebastien Masson: Several modifications micromeshmask clean partial steps clean use of key_stride automatic definition of key_shift Oct 2004 Sebastien Masson: add PERIODIC and SHIFT Aug 2005 Sebastien Masson: some cleaning english PRO ncdf_meshread filename GLAMBOUNDARY glamboundary CHECKDAT checkdat ONEARTH onearth GETDIMENSIONS getdimensions PERIODIC periodic SHIFT shift STRIDE stride STRCALLING strcalling _EXTRA ex cm_4mesh cm_4data cm_4cal IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 for key_performance IF keyword_set CHECKDAT THEN BEGIN print The keyword CHECKDAT has been suppressed it could create bugs print Remove it from the call of ncdf_meshread print Please use smallmeshmask pro or micromeshmask pro to create a print meshmask that has manageable size return ENDIF find meshfile name and open it def de filename par defaut IF n_params EQ 0 then filename meshmask nc meshname isafile file filename iodirectory iodir _EXTRA ex meshname meshname 0 noticebase xnotice Reading file C meshname C if the meshmask is on tape archive get it back IF version OS_FAMILY EQ unix THEN spawn file meshname dev null cdfid ncdf_open meshname contient ncdf_inquire cdfid dimensions ncdf_diminq cdfid x name jpiglo ncdf_diminq cdfid y name jpjglo listdims strlowcase ncdf_listdims cdfid IF where listdims EQ z 0 NE 1 THEN ncdf_diminq cdfid z name jpkglo ELSE BEGIN dimid where strmid listdims 0 5 EQ depth 0 IF dimid NE 1 THEN ncdf_diminq cdfid dimid name jpkglo ELSE BEGIN report We could not find the vertical dimension its name must be z or start with depth stop ENDELSE ENDELSE if keyword_set getdimensions then begin widget_control noticebase bad_id nothing destroy ncdf_close cdfid return endif check that all i xyz min ax mesh are well defined if n_elements ixminmesh EQ 0 THEN ixminmesh 0 if n_elements ixmaxmesh EQ 0 then ixmaxmesh jpiglo 1 if ixminmesh EQ 1 THEN ixminmesh 0 IF ixmaxmesh EQ 1 then ixmaxmesh jpiglo 1 if n_elements iyminmesh EQ 0 THEN iyminmesh 0 IF n_elements iymaxmesh EQ 0 then iymaxmesh jpjglo 1 if iyminmesh EQ 1 THEN iyminmesh 0 IF iymaxmesh EQ 1 then iymaxmesh jpjglo 1 if n_elements izminmesh EQ 0 THEN izminmesh 0 IF n_elements izmaxmesh EQ 0 then izmaxmesh jpkglo 1 if izminmesh EQ 1 THEN izminmesh 0 IF izmaxmesh EQ 1 then izmaxmesh jpkglo 1 definition of jpi jpj jpj jpi long ixmaxmesh ixminmesh 1 jpj long iymaxmesh iyminmesh 1 jpk long izmaxmesh izminmesh 1 check onearth and its consequences IF n_elements onearth EQ 0 THEN key_onearth 1 ELSE key_onearth keyword_set onearth IF NOT key_onearth THEN BEGIN periodic 0 shift 0 ENDIF automatic definition of key_periodic IF n_elements periodic EQ 0 THEN BEGIN IF jpi GT 1 THEN BEGIN varinq ncdf_varinq cdfid glamt CASE varinq ndims OF 2:ncdf_varget cdfid glamt xaxis offset ixminmesh iyminmesh count jpi 1 3:ncdf_varget cdfid glamt xaxis offset ixminmesh iyminmesh 0 count jpi 1 1 4:ncdf_varget cdfid glamt xaxis offset ixminmesh iyminmesh 0 0 count jpi 1 1 1 ENDCASE xaxis xaxis 720 MOD 360 xaxis xaxis sort xaxis key_periodic xaxis jpi 1 2 xaxis jpi 1 xaxis jpi 2 GE xaxis 0 360 ENDIF ELSE key_periodic 0 ENDIF ELSE key_periodic keyword_set periodic automatic definition of key_shift IF n_elements shift EQ 0 THEN BEGIN key_shift long testvar var key_shift key_shift will be defined according to the first line of glamt if keyword_set glamboundary AND jpi GT 1 AND key_periodic EQ 1 THEN BEGIN varinq ncdf_varinq cdfid glamt CASE varinq ndims OF 2:ncdf_varget cdfid glamt xaxis offset ixminmesh iyminmesh count jpi 1 3:ncdf_varget cdfid glamt xaxis offset ixminmesh iyminmesh 0 count jpi 1 1 4:ncdf_varget cdfid glamt xaxis offset ixminmesh iyminmesh 0 0 count jpi 1 1 1 ENDCASE xaxis between glamboundary 0 and glamboundary 1 xaxis xaxis MOD 360 smaller where xaxis LT glamboundary 0 if smaller 0 NE 1 then xaxis smaller xaxis smaller 360 bigger where xaxis GE glamboundary 1 if bigger 0 NE 1 then xaxis bigger xaxis bigger 360 key_shift where xaxis EQ min xaxis 0 IF key_shift NE 0 THEN BEGIN key_shift jpi key_shift xaxis shift xaxis key_shift ENDIF IF array_equal sort xaxis lindgen jpi NE 1 THEN BEGIN print the x axis 1st line of glamt is not sorted in the inceasing order after the automatic definition of key_shift print please use the keyword shift and periodic to suppress the automatic definition of key_shift and key_periodic and define by hand a more suitable value widget_control noticebase bad_id nothing destroy return ENDIF ENDIF ELSE key_shift 0 ENDIF ELSE key_shift long shift key_periodic EQ 1 check key_stride and related things if n_elements stride eq 3 then key_stride stride if n_elements key_stride LE 2 then key_stride 1 1 1 key_stride 1l long key_stride IF total key_stride NE 3 THEN BEGIN IF key_shift NE 0 THEN BEGIN for explanation see header of read_ncdf_varget pro jpiright key_shift jpileft jpi key_shift key_stride 0 1 key_shift 1 MOD key_stride 0 jpi jpiright 1 key_stride 0 1 jpileft 1 key_stride 0 1 ENDIF ELSE jpi jpi 1 key_stride 0 1 jpj jpj 1 key_stride 1 1 jpk jpk 1 key_stride 2 1 ENDIF default definitions to be able to use read_ncdf_varget default definitions to be able to use read_ncdf_varget ixmindtasauve testvar var ixmindta iymindtasauve testvar var iymindta izmindtasauve testvar var izmindta ixmindta 0l iymindta 0l izmindta 0l jpt 1 time 1 firsttps 0 firstx 0 lastx jpi 1 firsty 0 lasty jpj 1 firstz 0 lastz jpk 1 nx jpi ny jpj nz 1 izminmeshsauve izminmesh izminmesh 0 2d arrays: list the 2d variables that must be read namevar glamt glamu glamv glamf gphit gphiu gphiv gphif e1t e1u e1v e1f e2t e2u e2v e2f for the variables related to the partial steps allvarname ncdf_listvars cdfid IF where allvarname EQ hdept 0 NE 1 THEN BEGIN key_partialstep 1 namevar namevar hdept hdepw ENDIF ELSE BEGIN key_partialstep 0 hdept 1 hdepw 1 ENDELSE for compatibility with old versions of meshmask partial steps IF where allvarname EQ e3tp 0 NE 1 THEN namevar namevar e3tp e3wp ELSE BEGIN e3t_ps 1 e3w_ps 1 ENDELSE IF where allvarname EQ e3t_ps 0 NE 1 THEN namevar namevar e3t_ps e3w_ps ELSE BEGIN e3t_ps 1 e3w_ps 1 ENDELSE IF where allvarname EQ e3u_ps 0 NE 1 THEN namevar namevar e3u_ps e3v_ps ELSE BEGIN e3u_ps 1 e3v_ps 1 ENDELSE read all the 2d variables for i 0 n_elements namevar 1 do begin varcontient ncdf_varinq cdfid namevar i name varcontient name read_ncdf_varget commande namevar i float res rien execute commande ENDFOR for compatibility with old versions of meshmask partial steps change e3 tw p to e3 tw _ps IF n_elements e3tp NE 0 THEN e3t_ps temporary e3tp IF n_elements e3wp NE 0 THEN e3w_ps temporary e3wp in the kase of key_stride ne 1 1 1 redefine f points coordinates: they must be in the middle of 3 T points if key_stride 0 NE 1 OR key_stride 1 NE 1 then BEGIN we must recompute glamf and gphif IF jpi GT 1 THEN BEGIN if keyword_set key_onearth AND keyword_set xnotsorted OR keyword_set key_periodic AND key_irregular then BEGIN stepxf glamt 720 MOD 360 stepxf shift stepxf 1 1 stepxf stepxf stepxf stepxf 360 stepxf 360 stepxf min abs stepxf dimension 3 IF NOT keyword_set key_periodic THEN stepxf jpi 1 stepxf jpi 2 ENDIF ELSE BEGIN stepxf shift glamt 1 1 glamt IF keyword_set key_periodic THEN stepxf jpi 1 360 stepxf jpi 1 ELSE stepxf jpi 1 stepxf jpi 2 ENDELSE IF jpj GT 1 THEN BEGIN stepxf jpj 1 stepxf jpj 2 stepxf jpi 1 jpj 1 stepxf jpi 2 jpj 2 ENDIF glamf glamt 0 5 stepxf ENDIF ELSE glamf glamt 0 5 IF jpj GT 1 THEN BEGIN we must compute stepyf: y distance between T i j T i 1 j 1 stepyf shift gphit 1 1 gphit stepyf jpj 1 stepyf jpj 2 IF jpi GT 1 THEN BEGIN if NOT keyword_set key_periodic THEN stepyf jpi 1 stepyf jpi 2 stepyf jpi 1 jpj 1 stepyf jpi 2 jpj 2 ENDIF gphif gphit 0 5 stepyf ENDIF ELSE gphif gphit 0 5 ENDIF 3d arrays: nz jpk izminmesh izminmeshsauve listdims ncdf_listdims cdfid micromask where listdims EQ y_m 0 varcontient ncdf_varinq cdfid tmask name varcontient name IF micromask NE 1 THEN BEGIN keep original values iyminmeshtrue iyminmesh key_stridetrue key_stride yyy1 firsty key_stridetrue 1 iyminmeshtrue yyy2 lasty key_stridetrue 1 iyminmeshtrue the mask is stored as the bit values of the byte array along the y dimension see micromeshmask pro we must modify several parameters iyminmesh 0L firsty yyy1 8 lasty yyy2 8 ny lasty firsty 1 key_stride key_stride 0 1 key_stride 2 read_ncdf_varget tmask bytarr jpi jpj jpk now we must get back the mask loop on the level to save memory the loop is short and thus should be fast enough FOR k 0 jpk 1 DO BEGIN zzz transpose res k zzz reform binary zzz 8 ny nx over zzz transpose temporary zzz zzz zzz yyy1 MOD 8: 8 ny 8 yyy2 MOD 8 IF key_stridetrue 1 NE 1 THEN BEGIN IF float strmid version release 0 3 LT 5 6 THEN BEGIN nnny size zzz 2 yind key_stridetrue 1 lindgen nnny 1 key_stridetrue 1 1 tmask k temporary zzz yind ENDIF ELSE tmask k temporary zzz 0: :key_stridetrue 1 ENDIF ELSE tmask k temporary zzz ENDFOR ENDIF ELSE BEGIN read_ncdf_varget tmask byte res ENDELSE boudary conditions used to compute umask varcontient ncdf_varinq cdfid umask name varcontient name nx 1L firstx jpi 1 lastx jpi 1 IF micromask NE 1 THEN BEGIN read_ncdf_varget umaskred reform binary res 8 ny jpk over umaskred umaskred yyy1 MOD 8: 8 ny 8 yyy2 MOD 8 IF key_stridetrue 1 NE 1 THEN umaskred temporary umaskred yind ENDIF ELSE BEGIN read_ncdf_varget umaskred reform byte res over ENDELSE boudary conditions used to compute fmask 1 varcontient ncdf_varinq cdfid fmask name varcontient name IF micromask NE 1 THEN BEGIN read_ncdf_varget fmaskredy reform binary res 8 ny jpk over fmaskredy fmaskredy yyy1 MOD 8: 8 ny 8 yyy2 MOD 8 IF key_stridetrue 1 NE 1 THEN fmaskredy temporary fmaskredy yind ENDIF ELSE BEGIN read_ncdf_varget fmaskredy reform byte res over fmaskredy temporary fmaskredy MOD 2 ENDELSE boudary conditions used to compute vmask varcontient ncdf_varinq cdfid vmask name varcontient name nx jpi firstx 0L lastx jpi 1L ny 1L firsty jpj 1 lasty jpj 1 IF micromask NE 1 THEN BEGIN yyy1 firsty key_stridetrue 1 iyminmeshtrue yyy2 lasty key_stridetrue 1 iyminmeshtrue iyminmesh 0L firsty yyy1 8 lasty yyy2 8 ny lasty firsty 1 read_ncdf_varget IF jpk EQ 1 THEN res reform res jpi 1 jpk over vmaskred transpose temporary res 1 0 2 vmaskred reform binary vmaskred 8 ny nx nz over vmaskred transpose temporary vmaskred 1 0 2 vmaskred reform vmaskred yyy1 MOD 8: 8 ny 8 yyy2 MOD 8 ENDIF ELSE BEGIN read_ncdf_varget vmaskred reform byte res over ENDELSE boudary conditions used to compute fmask 2 varcontient ncdf_varinq cdfid fmask name varcontient name IF micromask NE 1 THEN BEGIN read_ncdf_varget IF jpk EQ 1 THEN res reform res jpi 1 jpk over fmaskredx transpose temporary res 1 0 2 fmaskredx reform binary fmaskredx 8 ny nx nz over fmaskredx transpose temporary fmaskredx 1 0 2 fmaskredx reform fmaskredx yyy1 MOD 8: 8 ny 8 yyy2 MOD 8 iyminmesh iyminmeshtrue key_stride key_stridetrue ENDIF ELSE BEGIN read_ncdf_varget fmaskredx reform byte res over fmaskredx fmaskredx MOD 2 ENDELSE 1d arrays namevar e3t e3w gdept gdepw for i 0 n_elements namevar 1 do begin varcontient ncdf_varinq cdfid namevar i CASE n_elements varcontient dim OF 4:BEGIN commande ncdf_varget cdfid namevar i namevar i offset 0 0 izminmesh 0 count 1 1 jpk 1 if key_stride 2 NE 1 then commande commande stride 1 1 key_stride 2 1 END 2:BEGIN commande ncdf_varget cdfid namevar i namevar i offset izminmesh 0 count jpk 1 if key_stride 2 NE 1 then commande commande stride key_stride 2 END 1:BEGIN commande ncdf_varget cdfid namevar i namevar i offset izminmesh count jpk if key_stride 2 NE 1 then commande commande stride key_stride 2 END ENDCASE rien execute commande commande namevar i float namevar i rien execute commande commande if size namevar i n_dimension gt 0 then namevar i reform namevar i over rien execute commande ENDFOR ncdf_close cdfid Apply Glamboudary if keyword_set glamboundary AND key_onearth then BEGIN if glamboundary 0 NE glamboundary 1 then BEGIN glamt glamt MOD 360 smaller where glamt LT glamboundary 0 if smaller 0 NE 1 then glamt smaller glamt smaller 360 bigger where glamt GE glamboundary 1 if bigger 0 NE 1 then glamt bigger glamt bigger 360 glamu glamu MOD 360 smaller where glamu LT glamboundary 0 if smaller 0 NE 1 then glamu smaller glamu smaller 360 bigger where glamu GE glamboundary 1 if bigger 0 NE 1 then glamu bigger glamu bigger 360 glamv glamv MOD 360 smaller where glamv LT glamboundary 0 if smaller 0 NE 1 then glamv smaller glamv smaller 360 bigger where glamv GE glamboundary 1 if bigger 0 NE 1 then glamv bigger glamv bigger 360 glamf glamf MOD 360 smaller where glamf LT glamboundary 0 if smaller 0 NE 1 then glamf smaller glamf smaller 360 bigger where glamf GE glamboundary 1 if bigger 0 NE 1 then glamf bigger glamf bigger 360 toosmall where glamu EQ glamboundary 0 IF toosmall 0 NE 1 THEN glamu toosmall glamu toosmall 360 toosmall where glamf EQ glamboundary 0 IF toosmall 0 NE 1 THEN glamf toosmall glamf toosmall 360 endif endif make sure we do have 2d arrays when jpj eq 1 IF jpj EQ 1 THEN BEGIN glamt reform glamt jpi jpj over gphit reform gphit jpi jpj over e1t reform e1t jpi jpj over e2t reform e2t jpi jpj over glamu reform glamu jpi jpj over gphiu reform gphiu jpi jpj over e1u reform e1u jpi jpj over e2u reform e2u jpi jpj over glamv reform glamv jpi jpj over gphiv reform gphiv jpi jpj over e1v reform e1v jpi jpj over e2v reform e2v jpi jpj over glamf reform glamf jpi jpj over gphif reform gphif jpi jpj over e1f reform e1f jpi jpj over e2f reform e2f jpi jpj over IF keyword_set key_partialstep THEN BEGIN hdept reform hdept jpi jpj over hdepw reform hdepw jpi jpj over e3t_ps reform e3t_ps jpi jpj over e3w_ps reform e3w_ps jpi jpj over ENDIF ENDIF ixmindta ixmindtasauve iymindta iymindtasauve izmindta izmindtasauve widget_control noticebase bad_id nothing destroy key_yreverse 0 key_zreverse 0 key_gridtype c grid parameters used by xxx IF NOT keyword_set strcalling THEN BEGIN IF n_elements ccmeshparameters EQ 0 THEN strcalling ncdf_meshread ELSE strcalling ccmeshparameters filename ENDIF IF n_elements glamt GE 2 THEN BEGIN glaminfo moment glamt IF finite glaminfo 2 EQ 0 THEN glaminfo glaminfo 0:1 gphiinfo moment gphit IF finite gphiinfo 2 EQ 0 THEN gphiinfo gphiinfo 0:1 ENDIF ELSE BEGIN glaminfo glamt gphiinfo gphit ENDELSE ccmeshparameters filename:strcalling glaminfo:float string glaminfo format E11 4 gphiinfo:float string gphiinfo format E11 4 jpiglo:jpiglo jpjglo:jpjglo jpkglo:jpkglo jpi:jpi jpj:jpj jpk:jpk ixminmesh:ixminmesh ixmaxmesh:ixmaxmesh iyminmesh:iyminmesh iymaxmesh:iymaxmesh izminmesh:izminmesh izmaxmesh:izmaxmesh key_shift:key_shift key_periodic:key_periodic key_stride:key_stride key_gridtype:key_gridtype key_yreverse:key_yreverse key_zreverse:key_zreverse key_partialstep:key_partialstep key_onearth:key_onearth if keyword_set key_performance THEN print time ncdf_meshread systime 1 tempsun updateold return end"); 31 31 a[29] = new Array("./Grid/restoreboxparam.html", "restoreboxparam.pro", "", " NAME: restoreboxparam PURPOSE: restore all the zoom parameters defined by calling domdef perviously defined by saveboxparam CATEGORY: CALLING SEQUENCE: restoreboxparam filename INPUTS: filename a scalar string defining the file name KEYWORD PARAMETERS: none OUTPUTS:none COMMON BLOCKS: cm_4mesh and cm_demomode_used if we are in demo mode SIDE EFFECTS: call def_myuniquetmpdir if myuniquetmpdir is undefined: define create and add it to path RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr July 2005 PRO restoreboxparam filename cm_4mesh IF lmgr demo EQ 1 THEN BEGIN if we are in demo mode we cannot save the parameters in a temporary file cm_demomode_used lon1 boxzoomparam bound 0 lon2 boxzoomparam bound 1 lat1 boxzoomparam bound 2 lat2 boxzoomparam bound 3 vert1 boxzoomparam bound 4 vert2 boxzoomparam bound 5 firstxt boxzoomparam indexes 0 lastxt boxzoomparam indexes 1 firstyt boxzoomparam indexes 2 lastyt boxzoomparam indexes 3 firstxu boxzoomparam indexes 4 lastxu boxzoomparam indexes 5 firstyu boxzoomparam indexes 6 lastyu boxzoomparam indexes 7 firstxv boxzoomparam indexes 8 lastxv boxzoomparam indexes 9 firstyv boxzoomparam indexes 10 lastyv boxzoomparam indexes 11 firstxf boxzoomparam indexes 12 lastxf boxzoomparam indexes 13 firstyf boxzoomparam indexes 14 lastyf boxzoomparam indexes 15 firstzt boxzoomparam indexes 16 lastzt boxzoomparam indexes 17 firstzw boxzoomparam indexes 18 lastzw boxzoomparam indexes 19 nxt boxzoomparam indexes 20 nyt boxzoomparam indexes 21 nxu boxzoomparam indexes 22 nyu boxzoomparam indexes 23 nxv boxzoomparam indexes 24 nyv boxzoomparam indexes 25 nxf boxzoomparam indexes 26 nyf boxzoomparam indexes 27 nzt boxzoomparam indexes 28 nzw boxzoomparam indexes 29 key_irregular boxzoomparam key boxzoomparam 1 ENDIF ELSE BEGIN restore myuniquetmpdir filename file_delete myuniquetmpdir filename ENDELSE updateold return end "); 32 32 a[30] = new Array("./Grid/saveboxparam.html", "saveboxparam.pro", "", " NAME: saveboxparam PURPOSE: save all the zoom parameters defined by calling domdef in a file using save command located in myuniquetmpdir common variable defined by def_myuniquetmpdir CATEGORY: CALLING SEQUENCE: saveboxparam filename INPUTS: filename a scalar string defining the file name KEYWORD PARAMETERS: none OUTPUTS:none COMMON BLOCKS: cm_4mesh and cm_demomode_used if we are in demo mode SIDE EFFECTS: call def_myuniquetmpdir if myuniquetmpdir is undefined: define create and add it to path RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr June 2005 PRO saveboxparam filename cm_4mesh def_myuniquetmpdir IF lmgr demo EQ 1 THEN BEGIN if we are in demo mode we cannot save the parameters in a temporary file cm_demomode_used boxzoomparam bound: lon1 lon2 lat1 lat2 vert1 vert2 indexes: firstxt lastxt firstyt lastyt firstxu lastxu firstyu lastyu firstxv lastxv firstyv lastyv firstxf lastxf firstyf lastyf firstzt lastzt firstzw lastzw nxt nyt nxu nyu nxv nyv nxf nyf nzt nzw key:key_irregular ENDIF ELSE BEGIN save lon1 lon2 lat1 lat2 vert1 vert2 firstxt lastxt firstyt lastyt firstxu lastxu firstyu lastyu firstxv lastxv firstyv lastyv firstxf lastxf firstyf lastyf firstzt lastzt firstzw lastzw nxt nyt nxu nyu nxv nyv nxf nyf nzt nzw key_irregular filename myuniquetmpdir filename ENDELSE return end"); 33 33 a[31] = new Array("./Grid/smallmeshmask.html", "smallmeshmask.pro", "", " NAME: smallmeshmask pro PURPOSE: reduce the size of the NetCDF meshmask created by OPA by using byte format for the masks and the foat format for the other fields CATEGORY:for OPA meshmask files CALLING SEQUENCE: smallmeshmask ncfilein ncfileout INPUTS: ncfilein: 1 the name of the meshmask file to be reduced In that case there is only one meshmask file OR 2 the xxx part in the names: xxx mesh_hgr nc xxx mesh_zgr nc xxx mask nc In that case the meshmask is split into 3 files ncfileout: the name of the reduced meshmask file default definition is smallmeshmask nc KEYWORD PARAMETERS: IODIR:to define the files path OUTPUTS: no COMMON BLOCKS: no EXAMPLE: IDL meshdir d1fes2 raid2 smasson DATA ORCA05 IDL smallmeshmask meshmask_ORCA_R05 nc iodir meshdir MODIFICATION HISTORY: July 2004 Sebastien Masson smasson lodyc jussieu fr PRO ncdf_transfer inid outid inname outname IF n_elements outname EQ 0 THEN outname inname ncdf_varget inid inname zzz ncdf_varput outid outname float reform zzz over RETURN END PRO smallmeshmask ncfilein ncfileout IODIR iodir filein isafile FILE ncfilein IODIR iodir NEW test findfile filein 0 IF test EQ THEN BEGIN filein_hgr findfile filein mesh_hgr nc 0 filein_zgr findfile filein mesh_zgr nc 0 filein_msk findfile filein mask nc 0 IF filein_hgr EQ OR filein_zgr EQ OR filein_msk EQ THEN BEGIN print meshmask file s not found print filein does not exist print filein mesh_hgr nc does not exist print filein mesh_zgr nc does not exist print filein mask nc does not exist return ENDIF ENDIF ELSE filein test get the horizontal dimensions IF n_elements filein_hgr NE 0 THEN cdfid ncdf_open filein_hgr ELSE cdfid ncdf_open filein ncdf_diminq cdfid x name jpi ncdf_diminq cdfid y name jpj get the vertical dimensions IF n_elements filein_zgr NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_zgr ENDIF listdims strlowcase ncdf_listdims cdfid IF where listdims EQ z 0 NE 1 THEN ncdf_diminq cdfid z name jpk ELSE BEGIN dimid where strmid listdims 0 5 EQ depth 0 IF dimid NE 1 THEN ncdf_diminq cdfid dimid name jpk ELSE BEGIN report We could not find the vertical dimension its name must be z or start with depth return ENDELSE ENDELSE get the variables list related to the partial steps varlist_ps ncdf_listvars cdfid varlist_ps strtrim strlowcase varlist_ps 2 define the output file IF n_elements ncfileout EQ 0 THEN ncfileout smallmeshmask nc cdfidout ncdf_create isafile FILE ncfileout IODIR iodir NEW clobber ncdf_control cdfidout nofill dimension dimidx ncdf_dimdef cdfidout x jpi dimidy ncdf_dimdef cdfidout y jpj dimidz ncdf_dimdef cdfidout z jpk global attributs ncdf_attput cdfidout IDL_Program_Name smallmeshmask pro GLOBAL ncdf_attput cdfidout Creation_Date systime GLOBAL declaration des variables varid lonarr 20 horizontal variables hgrlist glamt glamu glamv glamf gphit gphiu gphiv gphif e1t e1u e1v e1f e2t e2u e2v e2f FOR h 0 n_elements hgrlist 1 DO varid h ncdf_vardef cdfidout hgrlist h dimidx dimidy float vertical variables zgrlist e3t e3w gdept gdepw FOR z 0 n_elements zgrlist 1 DO varid 16 z ncdf_vardef cdfidout zgrlist z dimidz float variables related to the partial steps IF where varlist_ps EQ hdept 0 NE 1 THEN varid varid ncdf_vardef cdfidout hdept dimidx dimidy float IF where varlist_ps EQ hdepw 0 NE 1 THEN varid varid ncdf_vardef cdfidout hdepw dimidx dimidy float old variable name keep for compatibility with old run Change e3tp to e3t_ps IF where varlist_ps EQ e3tp 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3t_ps dimidx dimidy float old variable name keep for compatibility with old run Change e3wp to e3w_ps IF where varlist_ps EQ e3wp 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3w_ps dimidx dimidy float IF where varlist_ps EQ e3t_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3t_ps dimidx dimidy float IF where varlist_ps EQ e3w_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3w_ps dimidx dimidy float IF where varlist_ps EQ e3u_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3u_ps dimidx dimidy float IF where varlist_ps EQ e3v_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3v_ps dimidx dimidy float mask variable msklist tmask umask vmask fmask FOR m 0 n_elements msklist 1 DO varid varid ncdf_vardef cdfidout msklist m dimidx dimidy dimidz byte ncdf_control cdfidout endef get the horizontal variables IF n_elements filein_hgr NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_hgr ENDIF FOR h 0 n_elements hgrlist 1 DO ncdf_transfer cdfid cdfidout hgrlist h get the vertical variables IF n_elements filein_zgr NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_zgr ENDIF FOR z 0 n_elements zgrlist 1 DO ncdf_transfer cdfid cdfidout zgrlist z partial step variables IF where varlist_ps EQ hdept 0 NE 1 THEN ncdf_transfer cdfid cdfidout hdept IF where varlist_ps EQ hdepw 0 NE 1 THEN ncdf_transfer cdfid cdfidout hdepw IF where varlist_ps EQ e3tp 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3tp e3t_ps IF where varlist_ps EQ e3wp 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3wp e3w_ps IF where varlist_ps EQ e3t_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3t_ps IF where varlist_ps EQ e3w_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3w_ps IF where varlist_ps EQ e3u_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3u_ps IF where varlist_ps EQ e3v_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3v_ps mask IF n_elements filein_msk NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_msk ENDIF loop on the vertical levels to limit the memory use FOR k 0 jpk 1 DO BEGIN FOR m 0 3 DO BEGIN CASE ncdf_varinq cdfid msklist m ndims OF 3:ncdf_varget cdfid msklist m zzz offset 0 0 k count jpi jpj 1 4:ncdf_varget cdfid msklist m zzz offset 0 0 k 0 count jpi jpj 1 1 ENDCASE ncdf_varput cdfidout msklist m byte temporary zzz offset 0 0 k count jpi jpj 1 ENDFOR ENDFOR ncdf_close cdfid ncdf_close cdfidout RETURN END"); 34 a[32] = new Array("./Interpolation/angle.html", "angle.pro", "", " NAME:angle pro fom angle F v 2 2 in OPA8 2 PURPOSE:Compute angles between grid lines and direction of the North CALLING SEQUENCE: angle fileocemesh gcosu gsinu gcosv gsinv gcost gsint INPUTS: fileocemesh a netcdf file that contains at least : glamu gphiu: longitudes and latitudes at U points glamv gphiv: longitudes and latitudes at V points glamf gphif: longitudes and latitudes at F points KEYWORD PARAMETERS: IODIRECTORY: the directory path where is located fileocemesh DOUBLE: use double precision default is float OUTPUTS: gsinu gcosu : sinus and cosinus of the angle gsinv gcosv between north south direction gsint gcost and the j direction of the mesh RESTRICTIONS: to compute the lateral boundary conditions we assume that: 1 the first line is similar to the second line gcosu 0 gcosu 1 gsinu 0 gsinu 1 2 the grid follows OPA x periodicity rule first column is equal to the next to last column gcosv 0 gcosv jpj 2 gsinv 0 gsinv jpj 2 MODIFICATION HISTORY: Original : 96 07 O Marti 98 06 G Madec Feb 2005: IDL adaptation S Masson fsnspp: north stereographic polar projection FUNCTION fsnspp plam pphi DOUBLE double IF keyword_set double THEN BEGIN a 2 d tan dpi 4 d dpi 180 d pphi 2 d x cos dpi 180 d plam a y sin dpi 180 d plam a ENDIF ELSE BEGIN a 2 tan pi 4 pi 180 float pphi 2 x cos pi 180 float plam a y sin pi 180 float plam a ENDELSE RETURN x:x y:y ENDPRO angle fileocemesh gcosu gsinu gcosv gsinv gcost gsint IODIRECTORY iodirectory DOUBLE double 0 read oceanic grid parameters IF keyword_set IODIRECTORY THEN BEGIN IF strpos iodirectory reverse_search NE strlen iodirectory 1 THEN iodirectory iodirectory ENDIF ELSE iodirectory fileoce iodirectory fileocemesh fileoce findfile fileoce count okfile IF okfile NE 1 THEN BEGIN print the file fileoce is not found we stop stop ENDIF cdfido ncdf_open fileoce 0 ncdf_varget cdfido glamt glamt ncdf_varget cdfido glamu glamu ncdf_varget cdfido glamv glamv ncdf_varget cdfido glamf glamf ncdf_varget cdfido gphit gphit ncdf_varget cdfido gphiu gphiu ncdf_varget cdfido gphiv gphiv ncdf_varget cdfido gphif gphif ncdf_close cdfido glamt reform glamt over glamu reform glamu over glamv reform glamv over glamf reform glamf over gphit reform gphit over gphiu reform gphiu over gphiv reform gphiv over gphif reform gphif over jpj size glamf dimension 1 I Compute the cosinus and sinus computation done on the north stereographic polar plan north pole direction modulous at t point znpt fsnspp glamt gphit DOUBLE double glamt 1 gphit 1 free memory znpt x znpt x znpt y znpt y znnpt znpt x znpt x znpt y znpt y north pole direction modulous at u point znpu fsnspp glamu gphiu DOUBLE double glamu 1 gphiu 1 free memory znpu x znpu x znpu y znpu y znnpu znpu x znpu x znpu y znpu y north pole direction modulous at v point znpv fsnspp glamv gphiv DOUBLE double znpv00 znpv znpv01 fsnspp shift glamv 0 1 shift gphiv 0 1 DOUBLE double glamv 1 gphiv 1 free memory znpv x znpv x znpv y znpv y znnpv znpv x znpv x znpv y znpv y f point znpf00 fsnspp glamf gphif DOUBLE double znpf01 fsnspp shift glamf 0 1 shift gphif 0 1 DOUBLE double znpf10 fsnspp shift glamf 1 0 shift gphif 1 0 DOUBLE double glamf 1 gphif 1 free memory j direction: v point segment direction t point zxvvt znpv00 x znpv01 x zyvvt znpv00 y znpv01 y zmnpvt sqrt temporary znnpt zxvvt zxvvt zyvvt zyvvt znpv00 1 free memory znpv01 1 free memory IF keyword_set double THEN zmnpvt 1 e 14 zmnpvt ELSE zmnpvt 1 e 6 zmnpvt j direction: f point segment direction u point zxffu znpf00 x znpf01 x zyffu znpf00 y znpf01 y zmnpfu sqrt temporary znnpu zxffu zxffu zyffu zyffu znpf01 1 free memory IF keyword_set double THEN zmnpfu 1 e 14 zmnpfu ELSE zmnpfu 1 e 6 zmnpfu i direction: f point segment direction v point zxffv znpf00 x znpf10 x zyffv znpf00 y znpf10 y znpf00 1 znpf10 1 free memory zmnpfv sqrt temporary znnpv zxffv zxffv zyffv zyffv IF keyword_set double THEN zmnpfv 1 e 14 zmnpfv ELSE zmnpfv 1 e 6 zmnpfv cosinus and sinus using scalar and vectorial products gsint znpt x zyvvt znpt y zxvvt zmnpvt gcost znpt x zxvvt znpt y zyvvt zmnpvt cosinus and sinus using scalar and vectorial products gsinu znpu x zyffu znpu y zxffu zmnpfu gcosu znpu x zxffu znpu y zyffu zmnpfu cosinus and sinus using scalar and vectorial products caution rotation of 90 degres gsinv znpv x zxffv znpv y zyffv zmnpfv gcosv znpv x zyffv znpv y zxffv zmnpfv II Geographic mesh bad where abs glamf shift glamf 0 1 LT 1 e 8 IF bad 0 NE 1 THEN BEGIN gcosu bad 1 gsinu bad 0 ENDIF bad where abs gphif shift gphif 1 0 LT 1 e 8 IF bad 0 NE 1 THEN BEGIN gcosv bad 1 gsinv bad 0 ENDIF III Lateral boundary conditions gcost 0 gcost 1 gsint 0 gsint 1 gcosu 0 gcosu 1 gsinu 0 gsinu 1 gcosv 0 gcosv jpj 2 gsinv 0 gsinv jpj 2 RETURN END");35 a[33] = new Array("./Interpolation/clickincell.html", "clickincell.pro", "", " NAME:clickincell PURPOSE: click on a map and find in which cell the click was CATEGORY:finding where is a point on a grid CALLING SEQUENCE: res clickincell Click with the left button to select a cell Clicking one more time in the same cell remove the cell from the selection Click on the right button to quit INPUTS:None KEYWORD PARAMETERS: CELLTYPE T W U V or F : This this the type of point that is located in the center of the cell which the click is located default is T type of cell with corner defined by F points DRAWCELL: to draw the cell in which we clicked COLOR the color used to draw the cells Clicking one more time in the same cell will draw the cell with the white color ORIGINAL: to get the position of the cell regarding the original grid with no key_shift ixminmesh iyminmesh IJ: see outpus _EXTRA: to pass extra keywords to inquad and plot when drawcell OUTPUTS: the the index of the selected cells regarding to the grid which is in memory in the variable of the common If ij keyword is activated give 2D array 2 n which are the i j position of the n selected cells COMMON BLOCKS:common pro SIDE EFFECTS: RESTRICTIONS: EXAMPLE: IDL plt findgen jpi jpj nodata map 90 0 0 ortho IDL print clickincell draw color 150 xy MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr August 2003 FUNCTION clickincell CELLTYPE celltype DRAWCELL drawcell COLOR color ORIGINAL original IJ ij _EXTRA extra common initialization cellnum 1L selected 0 Cell list get the grid parameter according to celltype oldgrid vargrid IF NOT keyword_set celltype THEN celltype T CASE strupcase celltype OF T :vargrid F W :vargrid F U :vargrid V V :vargrid U F :vargrid T ENDCASE grille 1 glam gphi 1 nx ny nz firstx firsty firstz lastx lasty lastz vargrid oldgrid define the corner of the cells in the clockwise direction IF keyword_set key_periodic AND nx EQ jpi THEN BEGIN x1 glam 0:ny 2 y1 gphi 0:ny 2 x2 glam 1:ny 1 y2 gphi 1:ny 1 x3 shift glam 1:ny 1 1 0 y3 shift gphi 1:ny 1 1 0 x4 shift glam 0:ny 2 1 0 y4 shift gphi 0:ny 2 1 0 ENDIF ELSE BEGIN x1 glam 0:nx 2 0:ny 2 y1 gphi 0:nx 2 0:ny 2 x2 glam 0:nx 2 1:ny 1 y2 gphi 0:nx 2 1:ny 1 x3 glam 1:nx 1 1:ny 1 y3 gphi 1:nx 1 1:ny 1 x4 glam 1:nx 1 0:ny 2 y4 gphi 1:nx 1 0:ny 2 ENDELSE glam 1 free memory gphi 1 free memory get mousse position on the reference map cursor x y data up while mouse button ne 4 do BEGIN IF finite x finite x EQ 0 THEN GOTO outwhile case mouse button of 1:BEGIN What is the longitude WHILE x GT x range 1 DO x x 360 WHILE x LT x range 0 DO x x 360 IF x GT x range 1 THEN GOTO outwhile IF y GT y range 1 THEN GOTO outwhile IF y LT y range 0 THEN GOTO outwhile cell inquad x y x1 y1 x2 y2 x3 y3 x4 y4 onsphere _extra extra IF cell 0 EQ 1 OR n_elements cell GT 1 THEN GOTO outwhile cell cell 0 already where cellnum EQ cell 0 IF already EQ 1 THEN BEGIN cellnum cellnum cell selected selected 1 already n_elements selected 1 ENDIF ELSE selected already 1 selected already IF keyword_set drawcell THEN BEGIN oplot x1 cell x2 cell x3 cell x4 cell x1 cell y1 cell y2 cell y3 cell y4 cell y1 cell color color selected already d n_colors 255 1 selected already _extra extra ENDIF END 2: middle button ELSE: ENDCASE get mousse position on the reference map outwhile: cursor x y data up ENDWHILE good where selected NE 0 IF good 0 EQ 1 THEN RETURN 1 cellnum cellnum good yy cellnum nx 1 key_periodic nx EQ jpi xx cellnum MOD nx 1 key_periodic nx EQ jpi CASE strupcase celltype OF T :BEGIN xx xx firstx 1 yy yy firsty 1 END W :BEGIN xx xx firstx 1 yy yy firsty 1 END U :BEGIN xx xx firstx yy yy firsty 1 END V :BEGIN xx xx firstx 1 yy yy firsty END F :BEGIN xx xx firstx yy yy firsty END ENDCASE bad where xx GE jpi IF bad 0 NE 1 THEN BEGIN xx bad xx bad jpi yy bad yy bad 1 ENDIF bad where yy GE jpj IF bad 0 NE 1 THEN stop IF keyword_set original THEN BEGIN xx xx key_shift bad where xx LT 0 IF bad 0 NE 1 THEN xx bad xx bad jpi xx xx MOD jpi xx xx ixminmesh yy yy iyminmesh ENDIF ncell n_elements xx IF keyword_set ij THEN RETURN reform xx 1 ncell over reform yy 1 ncell over IF keyword_set original THEN RETURN xx jpiglo yy ELSE RETURN xx jpi yy END ");36 a[34] = new Array("./Interpolation/compute_fromreg_bilinear_weigaddr.html", "compute_fromreg_bilinear_weigaddr.pro", "", " NAME: compute_fromreg_bilinear_weigaddr PURPOSE: compute the weight and address neede to interpolate data from a regular grid to any grid using the bilinear method CATEGORY:interpolation CALLING SEQUENCE: compute_fromreg_bilinear_weigaddr alon alat olon olat weig addr INPUTS: lonin and latin: longitude latitude of the input data lonout and latout: longitude latitude of the output data KEYWORD PARAMETERS: NONORTHERNLINE and NOSOUTHERNLINE: activate if you don t whant to take into account the northen southern line of the input data when perfoming the interpolation OUTPUTS: weig addr: 2D arrays weig and addr are the weight and addresses used to perform the interpolation: dataout total weig datain addr 1 dataout reform dataout jpio jpjo over COMMON BLOCKS: none SIDE EFFECTS: RESTRICTIONS: the input grid must be a regular grid defined as a grid for which each lontitudes lines have the same latitude and each latitudes columns have the same longitude We supposed the data are located on a sphere with a periodicity along the longitude points located out of the southern and northern boundaries are interpolated using a linear interpolation only along the longitudinal direction EXAMPLE: MODIFICATION HISTORY:November 2005: Sebastien Masson smasson lodyc jussieu fr PRO compute_fromreg_bilinear_weigaddr alonin alatin olonin olat weig addr NONORTHERNLINE nonorthernline NOSOUTHERNLINE nosouthernline compile_opt strictarr strictarrsubs alon alonin alat alatin olon olonin jpia n_elements alon jpja n_elements alat jpio size olon dimensions 0 jpjo size olon dimensions 1 alon minalon min alon max maxalon IF maxalon minalon GE 360 THEN stop alon must be monotonically increasing IF array_equal sort alon lindgen jpia NE 1 THEN BEGIN shiftx where alon EQ min alon 0 alon shift alon shiftx IF array_equal sort alon lindgen jpia NE 1 THEN stop ENDIF ELSE shiftx 0 for longitude periodic bondary condition we add the fist column on the right side of the array and alon alon alon 0 360 jpia jpia 1L alat revy alat 0 GT alat 1 IF revy THEN alat reverse alat alat must be monotonically increasing IF array_equal sort alat lindgen jpja NE 1 THEN stop if keyword_set nonorthernline then BEGIN jpja jpja 1L alat alat 0: jpja 1L ENDIF if keyword_set nosouthernline then BEGIN alat alat 1: jpja 1L jpja jpja 1L ENDIF olon between minalon et minalon 360 out where olon LT minalon WHILE out 0 NE 1 DO BEGIN olon out olon out 360 out where olon LT minalon ENDWHILE out where olon GE minalon 360 WHILE out 0 NE 1 DO BEGIN olon out olon out 360 out where olon GE minalon 360 ENDWHILE make sure that all values of olon are located within values of alon IF min olon max ma LT minalon THEN stop IF ma GE minalon 360 THEN stop we want to do biliear interpolation for each ocean point we must find in which atm cell it is located if the ocean point is out of the atm grid we use closest neighbor interpolation for each T point of oce grid we find in which armospheric cell it is located As the atmospheric grid is regular we can use inrecgrid instead of inquad pos inrecgrid olon olat alon 0:jpia 2L alat 0:jpja 2L checkout alon jpia 1L alat jpja 1L output2d checks for longitude each ocean points must be located in atm cell IF where pos 0 EQ 1 0 NE 1 THEN stop no ocean point should be located westward of the left bondary of the atm cell in which it is supposed to be located IF total olon LT alon pos 0 NE 0 THEN stop no ocean point should be located eastward of the right bondary of the atm cell in which it is supposed to be located IF total olon GT alon pos 0 1 NE 0 THEN stop we use bilinear interpolation we change the coordinates of each ocean points to fit into a rectangle defined by: y2 y1 x1 x2 X x x1 x2 x1 Y y y1 y2 y1 indx pos 0 indy temporary pos 1 points located out of the atmospheric grid too much northward or southward bad where indy EQ 1 indy 0 indy IF max indx GT jpia 2 THEN stop checks IF max indy GT jpja 2 THEN stop checks x coordinates of the atm cell x1 alon indx x2 alon indx 1 new x coordinates of the ocean points in each cell divi temporary x2 x1 glamnew olon x1 temporary divi x1 1 free memory olon 1 free memory y coordinates of the atm cell y1 alat indy y2 alat indy 1 new y coordinates of the ocean points in each cell divi temporary y2 y1 zero where divi EQ 0 IF zero 0 NE 1 THEN divi zero 1 gphinew olat y1 temporary divi y1 1 free memory checks IF min glamnew LT 0 THEN stop IF max glamnew GT 1 THEN stop weight and address array used for bilinear interpolation xaddr lonarr 4 jpio jpjo xaddr 0 indx xaddr 1 indx 1L xaddr 2 indx 1L xaddr 3 indx yaddr lonarr 4 jpio jpjo yaddr 0 indy yaddr 1 indy yaddr 2 indy 1L yaddr 3 indy 1L compute the weight for the bilinear interpolation weig fltarr 4 jpio jpjo weig 0 1 glamnew 1 gphinew weig 1 glamnew 1 gphinew weig 2 glamnew gphinew weig 3 1 glamnew gphinew free memory gphinew 1 IF bad 0 EQ 1 THEN glamnew 1 ELSE glamnew temporary glamnew bad we work now on the bad points linear interpolation only along the longitudinal direction IF bad 0 NE 1 THEN BEGIN ybad olat bad the ocean points that are not located into an atm cell should be located northward of the northern boudary of the atm grid or southward of the southern boudary of the atm grid IF total ybad GE min alat AND ybad LE max alat GE 1 THEN stop weig 0 bad 1 glamnew weig 1 bad temporary glamnew weig 2 bad 0 weig 3 bad 0 south where ybad LT alat 0 IF south 0 NE 1 THEN yaddr bad temporary south 0L north where ybad GT alat jpja 1 IF north 0 NE 1 THEN yaddr bad temporary north 0L ybad 1 bad 1 free memory ENDIF check totalweight 1 totalweig abs 1 total weig 1 IF where temporary totalweig GE 1 e 5 0 NE 1 THEN stop come back to the original atm grid without longitudinal overlap jpia jpia 1L xaddr temporary xaddr MOD jpia take into account shiftx if needed IF shiftx NE 0 THEN xaddr temporary xaddr shiftx MOD jpia take into account nosouthernline and nonorthernline if keyword_set nosouthernline then BEGIN yaddr temporary yaddr 1L jpja jpja 1L ENDIF if keyword_set nonorthernline then jpja jpja 1L take into account revy if needed IF revy EQ 1 THEN yaddr jpja 1L temporary yaddr addr temporary yaddr jpia temporary xaddr return end ");37 a[35] = new Array("./Interpolation/compute_fromreg_imoms3_weigaddr.html", "compute_fromreg_imoms3_weigaddr.pro", "", " NAME: compute_fromreg_imoms3_weigaddr PURPOSE: compute the weight and address neede to interpolate data from a regular grid to any grid using the imoms3 method CATEGORY:interpolation CALLING SEQUENCE: compute_fromreg_imoms3_weigaddr alon alat olon olat weig addr INPUTS: lonin and latin: longitude latitude of the input data lonout and latout: longitude latitude of the output data KEYWORD PARAMETERS: NONORTHERNLINE and NOSOUTHERNLINE: activate if you don t whant to take into account the northen southern line of the input data when perfoming the interpolation OUTPUTS: weig addr: 2D arrays weig and addr are the weight and addresses used to perform the interpolation: dataout total weig datain addr 1 dataout reform dataout jpio jpjo over COMMON BLOCKS: none SIDE EFFECTS: RESTRICTIONS: the input grid must be a regular rectangular grid defined as a grid for which each lontitudes lines have the same latitude and each latitudes columns have the same longitude We supposed the data are located on a sphere with a periodicity along the longitude points located between the first last 2 lines are interpolated using a imoms3 interpolation along the longitudinal direction and linear interpolation along the latitudinal direction points located out of the southern and northern boundaries are interpolated using a imoms3 interpolation only along the longitudinal direction EXAMPLE: MODIFICATION HISTORY:November 2005: Sebastien Masson smasson lodyc jussieu fr March 2006: works for rectangular grids PRO compute_fromreg_imoms3_weigaddr alonin alatin olonin olat weig addr NONORTHERNLINE nonorthernline NOSOUTHERNLINE nosouthernline compile_opt strictarr strictarrsubs alon alonin alat alatin olon olonin jpia n_elements alon jpja n_elements alat jpio size olon dimensions 0 jpjo size olon dimensions 1 alon minalon min alon max maxalon IF maxalon minalon GE 360 THEN stop alon must be monotonically increasing IF array_equal sort alon lindgen jpia NE 1 THEN BEGIN shiftx where alon EQ min alon 0 alon shift alon shiftx IF array_equal sort alon lindgen jpia NE 1 THEN stop ENDIF ELSE shiftx 0 alon is it regularly spaced step alon shift alon 1 step 0 step 0 360 IF total step step 0 GE 1 e 6 NE 0 THEN noregx 1 we extend the longitude range of alon easy interpolation even near minalon et maxalon toadd 10 jpia 360 1 alon alon jpia toadd:jpia 1 360 alon alon 0:toadd 1 360 jpia jpia 2 toadd alat revy alat 0 GT alat 1 IF revy THEN alat reverse alat alat must be monotonically increasing IF array_equal sort alat lindgen jpja NE 1 THEN stop alat is it regularly spaced step alat shift alat 1 step step 1:jpja 1L IF total step step 0 GE 1 e 6 NE 0 THEN noregy 1 if keyword_set nonorthernline then BEGIN jpja jpja 1L alat alat 0: jpja 1L ENDIF if keyword_set nosouthernline then BEGIN alat alat 1: jpja 1L jpja jpja 1L ENDIF olon between minalon et minalon 360 out where olon LT minalon WHILE out 0 NE 1 DO BEGIN olon out olon out 360 out where olon LT minalon ENDWHILE out where olon GE minalon 360 WHILE out 0 NE 1 DO BEGIN olon out olon out 360 out where olon GE minalon 360 ENDWHILE make sure that all values of olon are located within values of alon IF min olon max ma LT minalon THEN stop IF ma GE minalon 360 THEN stop xaddr lonarr 16 jpio jpjo yaddr lonarr 16 jpio jpjo weig fltarr 16 jpio jpjo indexlon value_locate alon olon IF total alon indexlon GT olon NE 0 THEN stop IF total alon indexlon 1L LE olon NE 0 THEN stop IF where indexlon LE 1L 0 NE 1 THEN stop IF where indexlon GE jpia 3L 0 NE 1 THEN stop indexlat value_locate alat olat for the ocean points located below the atm line jpja 2 and above the line 1 for those points we can always find 16 neighbors imoms interpolation along longitude and latitude short where indexlat LT jpja 2L AND indexlat GE 1L ilon indexlon short ilat indexlat short IF NOT keyword_set noregy THEN BEGIN delta alat ilat 1L alat ilat IF max abs delta delta 0 GE 1 e 6 THEN stop delta delta 0 d0 alat ilat 1L olat short delta IF min d0 max ma LE 2 THEN stop IF ma GT 1 THEN stop wy0 imoms3 temporary d0 d1 alat ilat olat short delta IF min d1 max ma LE 1 THEN stop IF ma GT 0 THEN stop wy1 imoms3 temporary d1 d2 alat ilat 1L olat short delta IF min d2 max ma LE 0 THEN stop IF ma GT 1 THEN stop wy2 imoms3 temporary d2 d3 alat ilat 2L olat short delta IF min d3 max ma LE 1 THEN stop IF ma GT 2 THEN stop wy3 imoms3 temporary d3 ENDIF ELSE BEGIN nele n_elements short wy0 fltarr nele wy1 fltarr nele wy2 fltarr nele wy3 fltarr nele FOR i 0L nele 1 DO BEGIN IF i MOD 10000 EQ 0 THEN print i newlat spl_incr alat ilat i 1L:ilat i 2L 1 0 1 2 olat short i IF newlat LE 0 THEN stop IF newlat GT 1 THEN stop wy0 i imoms3 newlat 1 wy1 i imoms3 newlat wy2 i imoms3 1 newlat wy3 i imoms3 2 newlat ENDFOR ENDELSE mi min wy0 wy1 wy2 wy3 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop IF NOT keyword_set noregx THEN BEGIN delta alon ilon alon ilon 1L IF max abs delta delta 0 GE 1 e 6 THEN stop delta delta 0 d0 alon ilon 1L olon short delta IF min d0 max ma LE 2 THEN stop IF ma GT 1 THEN stop wx0 imoms3 temporary d0 d1 alon ilon olon short delta IF min d1 max ma LE 1 THEN stop IF ma GT 0 THEN stop wx1 imoms3 temporary d1 d2 alon ilon 1L olon short delta IF min d2 max ma LE 0 THEN stop IF ma GT 1 THEN stop wx2 imoms3 temporary d2 d3 alon ilon 2L olon short delta IF min d3 max ma LE 1 THEN stop IF ma GT 2 THEN stop wx3 imoms3 temporary d3 ENDIF ELSE BEGIN nele n_elements short wx0 fltarr nele wx1 fltarr nele wx2 fltarr nele wx3 fltarr nele FOR i 0L nele 1 DO BEGIN IF i MOD 10000 EQ 0 THEN print i newlon spl_incr alon ilon i 1L:ilon i 2L 1 0 1 2 olon short i IF newlon LE 0 THEN stop IF newlon GT 1 THEN stop wx0 i imoms3 newlon 1 wx1 i imoms3 newlon wx2 i imoms3 1 newlon wx3 i imoms3 2 newlon ENDFOR ENDELSE mi min wx0 wx1 wx2 wx3 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop line 0 xaddr 0 short ilon 1L xaddr 1 short ilon xaddr 2 short ilon 1L xaddr 3 short ilon 2L yaddr 0 short ilat 1L yaddr 1 short yaddr 0 short yaddr 2 short yaddr 0 short yaddr 3 short yaddr 0 short weig 0 short wx0 wy0 weig 1 short wx1 wy0 weig 2 short wx2 wy0 weig 3 short wx3 wy0 line 1 xaddr 4 short ilon 1L xaddr 5 short ilon xaddr 6 short ilon 1L xaddr 7 short ilon 2L yaddr 4 short ilat yaddr 5 short ilat yaddr 6 short ilat yaddr 7 short ilat weig 4 short wx0 wy1 weig 5 short wx1 wy1 weig 6 short wx2 wy1 weig 7 short wx3 wy1 line 2 xaddr 8 short ilon 1L xaddr 9 short ilon xaddr 10 short ilon 1L xaddr 11 short ilon 2L yaddr 8 short ilat 1L yaddr 9 short yaddr 8 short yaddr 10 short yaddr 8 short yaddr 11 short yaddr 8 short weig 8 short wx0 wy2 weig 9 short wx1 wy2 weig 10 short wx2 wy2 weig 11 short wx3 wy2 line 3 xaddr 12 short ilon 1L xaddr 13 short ilon xaddr 14 short ilon 1L xaddr 15 short ilon 2L yaddr 12 short ilat 2L yaddr 13 short yaddr 12 short yaddr 14 short yaddr 12 short yaddr 15 short yaddr 12 short weig 12 short wx0 wy3 weig 13 short wx1 wy3 weig 14 short wx2 wy3 weig 15 short wx3 wy3 mi min total weig short 1 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop for the ocean points located between the atm lines jpja 2 and jpja 1 or between the atm lines 0 and 1 linear interpolation between line 1 and line 2 short where indexlat EQ jpja 2L OR indexlat EQ 0 IF short 0 NE 1 THEN BEGIN ilon indexlon short ilat indexlat short delta alat ilat 1L alat ilat IF NOT keyword_set noregy THEN BEGIN IF max abs delta delta 0 GE 1 e 6 THEN stop delta delta 0 ENDIF d1 alat ilat olat short delta IF min d1 max ma LE 1 THEN stop IF ma GT 0 THEN stop wy1 1 temporary d1 d2 alat ilat 1L olat short delta IF min d2 max ma LE 0 THEN stop IF ma GT 1 THEN stop wy2 1 temporary d2 mi min wy1 wy2 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop but imoms3 along the longitude IF NOT keyword_set noregx THEN BEGIN delta alon ilon alon ilon 1L IF max abs delta delta 0 GE 1 e 6 THEN stop delta delta 0 d0 alon ilon 1L olon short delta IF min d0 max ma LE 2 THEN stop IF ma GT 1 THEN stop wx0 imoms3 temporary d0 d1 alon ilon olon short delta IF min d1 max ma LE 1 THEN stop IF ma GT 0 THEN stop wx1 imoms3 temporary d1 d2 alon ilon 1L olon short delta IF min d2 max ma LE 0 THEN stop IF ma GT 1 THEN stop wx2 imoms3 temporary d2 d3 alon ilon 2L olon short delta IF min d3 max ma LE 1 THEN stop IF ma GT 2 THEN stop wx3 imoms3 temporary d3 ENDIF ELSE BEGIN nele n_elements short wx0 fltarr nele wx1 fltarr nele wx2 fltarr nele wx3 fltarr nele FOR i 0L nele 1 DO BEGIN IF i MOD 10000 EQ 0 THEN print i newlon spl_incr alon ilon i 1L:ilon i 2L 1 0 1 2 olon short i IF newlon LE 0 THEN stop IF newlon GT 1 THEN stop wx0 i imoms3 newlon 1 wx1 i imoms3 newlon wx2 i imoms3 1 newlon wx3 i imoms3 2 newlon ENDFOR ENDELSE mi min wx0 wx1 wx2 wx3 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop line 1 xaddr 0 short ilon 1L xaddr 1 short ilon xaddr 2 short ilon 1L xaddr 3 short ilon 2L yaddr 0 short ilat yaddr 1 short ilat yaddr 2 short ilat yaddr 3 short ilat weig 0 short wx0 wy1 weig 1 short wx1 wy1 weig 2 short wx2 wy1 weig 3 short wx3 wy1 line 2 xaddr 4 short ilon 1L xaddr 5 short ilon xaddr 6 short ilon 1L xaddr 7 short ilon 2L yaddr 4 short ilat 1L yaddr 5 short yaddr 4 short yaddr 6 short yaddr 4 short yaddr 7 short yaddr 4 short weig 4 short wx0 wy2 weig 5 short wx1 wy2 weig 6 short wx2 wy2 weig 7 short wx3 wy2 mi min total weig short 1 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop ENDIF for the ocean points located below the line 0 Interpolation only along the longitude short where indexlat EQ 1 IF short 0 NE 1 THEN BEGIN ilon indexlon short IF NOT keyword_set noregx THEN BEGIN delta alon ilon alon ilon 1L IF max abs delta delta 0 GE 1 e 6 THEN stop delta delta 0 d0 alon ilon 1L olon short delta IF min d0 max ma LE 2 THEN stop IF ma GT 1 THEN stop wx0 imoms3 temporary d0 d1 alon ilon olon short delta IF min d1 max ma LE 1 THEN stop IF ma GT 0 THEN stop wx1 imoms3 temporary d1 d2 alon ilon 1L olon short delta IF min d2 max ma LE 0 THEN stop IF ma GT 1 THEN stop wx2 imoms3 temporary d2 d3 alon ilon 2L olon short delta IF min d3 max ma LE 1 THEN stop IF ma GT 2 THEN stop wx3 imoms3 temporary d3 ENDIF ELSE BEGIN nele n_elements short wx0 fltarr nele wx1 fltarr nele wx2 fltarr nele wx3 fltarr nele FOR i 0L nele 1 DO BEGIN IF i MOD 10000 EQ 0 THEN print i newlon spl_incr alon ilon i 1L:ilon i 2L 1 0 1 2 olon short i IF newlon LE 0 THEN stop IF newlon GT 1 THEN stop wx0 i imoms3 newlon 1 wx1 i imoms3 newlon wx2 i imoms3 1 newlon wx3 i imoms3 2 newlon ENDFOR ENDELSE mi min wx0 wx1 wx2 wx3 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop line 1 xaddr 0 short ilon 1L xaddr 1 short ilon xaddr 2 short ilon 1L xaddr 3 short ilon 2L yaddr 0:3 short 0 weig 0 short wx0 weig 1 short wx1 weig 2 short wx2 weig 3 short wx3 mi min total weig short 1 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop ENDIF for the ocean points located above jpia 1 Interpolation only along the longitude short where indexlat EQ jpja 1L IF short 0 NE 1 THEN BEGIN ilon indexlon short IF NOT keyword_set noregx THEN BEGIN delta alon ilon alon ilon 1L IF max abs delta delta 0 GE 1 e 6 THEN stop delta delta 0 d0 alon ilon 1L olon short delta IF min d0 max ma LE 2 THEN stop IF ma GT 1 THEN stop wx0 imoms3 temporary d0 d1 alon ilon olon short delta IF min d1 max ma LE 1 THEN stop IF ma GT 0 THEN stop wx1 imoms3 temporary d1 d2 alon ilon 1L olon short delta IF min d2 max ma LE 0 THEN stop IF ma GT 1 THEN stop wx2 imoms3 temporary d2 d3 alon ilon 2L olon short delta IF min d3 max ma LE 1 THEN stop IF ma GT 2 THEN stop wx3 imoms3 temporary d3 ENDIF ELSE BEGIN nele n_elements short wx0 fltarr nele wx1 fltarr nele wx2 fltarr nele wx3 fltarr nele FOR i 0L nele 1 DO BEGIN IF i MOD 10000 EQ 0 THEN print i newlon spl_incr alon ilon i 1L:ilon i 2L 1 0 1 2 olon short i IF newlon LE 0 THEN stop IF newlon GT 1 THEN stop wx0 i imoms3 newlon 1 wx1 i imoms3 newlon wx2 i imoms3 1 newlon wx3 i imoms3 2 newlon ENDFOR ENDELSE mi min wx0 wx1 wx2 wx3 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop line 1 xaddr 0 short ilon 1L xaddr 1 short ilon xaddr 2 short ilon 1L xaddr 3 short ilon 2L yaddr 0:3 short jpja 1L weig 0 short wx0 weig 1 short wx1 weig 2 short wx2 weig 3 short wx3 mi min total weig short 1 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop ENDIF Come back to the original index of atm grid without longitudinal overlap xaddr temporary xaddr toadd jpia jpia 2 toadd make sure all values are ge 0 xaddr temporary xaddr jpia range the values between 0 and jpia 1 xaddr temporary xaddr mod jpia take into account shiftx if needed IF shiftx NE 0 THEN xaddr temporary xaddr shiftx MOD jpia take into account nosouthernline and nonorthernline if keyword_set nosouthernline then BEGIN yaddr temporary yaddr 1L jpja jpja 1L ENDIF if keyword_set nonorthernline then jpja jpja 1L take into account revy if needed IF revy EQ 1 THEN yaddr jpja 1L temporary yaddr addr temporary yaddr jpia temporary xaddr RETURN END");38 a[36] = new Array("./Interpolation/cutpar.html", "cutpar.pro", "", " NAME: cutpar PURPOSE: cut p parallelogram s into p n 2 parallelograms CATEGORY: basic work CALLING SEQUENCE:res cutpar x0 y0 x1 y1 x2 y2 x3 y3 n INPUTS: x0 y0 1d arrays of p elements giving the edge positions The edges must be given as in plot to traw the parallelogram see example n: each parallelogram will be cutted in n 2 pieces KEYWORD PARAMETERS: endpoints: see outputs onsphere: to specify that the points are located on a sphere In this case x and y corresponds to longitude and latitude in degrees OUTPUTS: defaut: 3d array 2 n 2 p giving the center position of each piece of the parallelograms endpoints: 3d array 2 n 1 2 p giving the edge positions of each piece of the parallelograms COMMON BLOCKS: no SIDE EFFECTS: need cutsegment pro RESTRICTIONS: EXAMPLE: x0 2 6 2 y0 0 2 6 x1 3 8 4 y1 4 4 6 x2 1 6 4 y2 5 6 8 x3 0 4 2 y3 1 4 8 n 4 splot 0 10 0 10 xstyle 1 ystyle 1 nodata for i 0 2 do oplot x0 i x1 i x2 i x3 i x0 i y0 i y1 i y2 i y3 i y0 i res cutpar x0 y0 x1 y1 x2 y2 x3 y3 n for i 0 2 do oplot res 0 i res 1 i color 20 10 i psym 1 thick 3 MODIFICATION HISTORY:S Masson smasson lodyc jussieu fr July 5th 2002 FUNCTION cutpar x0 y0 x1 y1 x2 y2 x3 y3 n endpoints endpoints onsphere onsphere is it a parallelogram eps 1e 4 IF total abs x0 x2 2 x1 x3 2 GE eps GT 0 OR total abs y0 y2 2 y1 y3 2 GE eps GT 0 THEN stop print NOT a parallelogram x0 npar npar n_elements x0 firstborder 2 n keyword_set endpoints npar firstborder cutsegment x0 y0 x1 y1 n endpoints endpoints onsphere onsphere thirdborder cutsegment x3 y3 x2 y2 n endpoints endpoints onsphere onsphere res 2 n keyword_set endpoints n keyword_set endpoints npar res cutsegment firstborder 0 firstborder 1 thirdborder 0 thirdborder 1 n endpoints endpoints onsphere onsphere free memory firstborder 1 thirdborder 1 reform the result res reform res 2 n keyword_set endpoints 2 npar overwrite RETURN res END");39 a[37] = new Array("./Interpolation/cutsegment.html", "cutsegment.pro", "", " NAME: cutsegment PURPOSE: cut p segments into p n equal parts CATEGORY: basic work CALLING SEQUENCE: res cutsegment x0 y0 x1 y1 n INPUTS: x0 y0 and x1 y1 1d arrays of p elements the coordinates of the endpoints of the p segmements n: the number of pieces we want to cut each segment KEYWORD PARAMETERS: endpoints: see ouputs onsphere: to specify that the points are located on a sphere In this case x and y corresponds to longitude and latitude in degrees OUTPUTS: defaut: a 3d array 2 n p that gives the coordinates of the middle of the cutted segments if endpoints a 3d array 2 n 1 p that gives the coordinates of the endpoints of the cutted segments COMMON BLOCKS: no SIDE EFFECTS: no RESTRICTIONS: EXAMPLE: IDL x0 2 5 IDL y0 5 1 IDL x1 9 3 IDL y1 1 8 IDL res cutsegment x0 y0 x1 y1 10 IDL splot 0 10 0 10 xstyle 1 ystyle 1 nodata IDL oplot x0 0 x1 0 y0 0 y1 0 IDL oplot res 0 0 res 1 0 color 20 psym 1 thick 3 IDL oplot x0 1 x1 1 y0 1 y1 1 IDL oplot res 0 1 res 1 1 color 40 psym 1 thick 3 MODIFICATION HISTORY:S Masson smasson lodyc jussieu fr July 5th 2002 FUNCTION cutsegment x0 y0 x1 y1 n endpoints endpoints onsphere onsphere number of segment nseg n_elements x0 number of point to find on each segment n2find n keyword_set endpoints IF keyword_set onsphere THEN BEGIN save the inputs arrays x0in temporary x0 y0in temporary y0 x1in temporary x1 y1in temporary y1 sp_cood transpose x0in transpose y0in replicate 1 1 nseg rect_coord CV_COORD FROM_SPHERE temporary sp_cood TO_RECT DEGREES x0 rect_coord 0 y0 rect_coord 1 z0 rect_coord 2 rect_coord 1 free memory sp_cood transpose x1in transpose y1in replicate 1 1 nseg rect_coord CV_COORD FROM_SPHERE temporary sp_cood TO_RECT DEGREES x1 rect_coord 0 y1 rect_coord 1 z1 rect_coord 2 rect_coord 1 free memory ENDIF resx replicate 1 n2find x0 resx temporary resx 1 n findgen n2find 5 1 keyword_set endpoints x1 x0 resx temporary resx resy replicate 1 n2find y0 resy temporary resy 1 n findgen n2find 5 1 keyword_set endpoints y1 y0 resy temporary resy IF keyword_set onsphere THEN BEGIN resz replicate 1 n2find z0 resz temporary resz 1 n findgen n2find 5 1 keyword_set endpoints z1 z0 resz temporary resz rec_cood transpose temporary resx transpose temporary resy transpose temporary resz res CV_COORD FROM_RECT temporary rec_cood TO_SPHERE DEGREES restore the input arrays x0 temporary x0in y0 temporary y0in x1 temporary x1in y1 temporary y1in ENDIF ELSE res transpose temporary resx transpose temporary resy res reform res 0:1 2 n2find nseg overwrite RETURN res END");40 a[38] = new Array("./Interpolation/extrapolate.html", "extrapolate.pro", "", " FUNCTION extrapolate zinput maskinput nb_iteration x_periodic x_periodic MINVAL minval MAXVAL maxval compile_opt strictarr strictarrsubs extrapolate data zinput where maskinput eq 0 by filling step by step the coastline points with the mean value of the 8 neighbourgs check the number of iteration used in the extrapolation IF n_elements nb_iteration EQ 0 THEN nb_iteration 10 E20 IF nb_iteration EQ 0 THEN return zinput nx size zinput 1 ny size zinput 2 take care of the boundary conditions for the x direction we put 2 additional columns at the left and right side of the array for the y direction we put 2 additional lines at the bottom and top side of the array These changes allow us to use shift function without taking care of the x and y periodicity ztmp bytarr nx 2 ny 2 ztmp 1:nx 1:ny byte maskinput msk temporary ztmp ztmp replicate 1 e20 nx 2 ny 2 ztmp 1:nx 1:ny zinput if keyword_set x_periodic then begin ztmp 0 1:ny zinput nx 1 ztmp nx 1 1:ny zinput 0 ENDIF remove NaN points if there is some nan where finite ztmp EQ 0 cnt_nan IF cnt_nan NE 0 THEN ztmp temporary nan 1 e20 z temporary ztmp nx2 nx 2 ny2 ny 2 extrapolation sqrtinv 1 sqrt 2 cnt 1 When we look for the coast line we don t whant to select the borderlines of the array we force the value of the mask for those lines msk 0 1b msk nx 1 1b msk 0 1b msk ny 1 1b find the land points land where msk EQ 0 cnt_land WHILE cnt LE nb_iteration AND cnt_land NE 0 DO BEGIN find the coast line points Once the land points list has been found we change back the the mask values for the boundary conditions msk 0 0b msk nx 1 0b msk 0 0b msk ny 1 0b if keyword_set x_periodic then begin msk 0 msk nx msk nx 1 msk 1 endif we compute the weighted number of sea neighbourgs those 4 neighbours have a weight of 1: those 4 neighbours have a weight of 1 sqrt 2 : As we make sure that none of the land points are located on the border of the array we can compute the weight without shift faster weight msk land 1 msk land 1 msk land nx2 msk land nx2 sqrtinv msk land nx2 1 msk land nx2 1 msk land nx2 1 msk land nx2 1 list all the points that have sea neighbourgs ok where weight GT 0 the coastline points coast land ok their weighted number of sea neighbourgs weight weight temporary ok fill the coastine points z temporary z msk zcoast z 1 coast z 1 coast z nx2 coast z nx2 coast 1 sqrt 2 z nx2 1 coast z nx2 1 coast z nx2 1 coast z nx2 1 coast IF n_elements minval NE 0 THEN zcoast minval temporary zcoast IF n_elements maxval NE 0 THEN zcoast temporary zcoast we force the value of the mask for those lines msk 0 1b msk nx 1 1b msk 0 1b msk ny 1 1b find the land points land where msk EQ 0 cnt_land ENDWHILE we return the original size of the array return z 1:nx 1:ny END ");41 a[39] = new Array("./Interpolation/fromreg.html", "fromreg.pro", "", " NAME: fromreg PURPOSE: interpolate data from a regular rectangular grid to any grid 2 metods availables: bilinear and imoms3 A regular rectangular grid is defined as a grid for which each lontitudes lines have the same latitude and each latitudes columns have the same longitude CATEGORY:interpolation CALLING SEQUENCE: dataout fromreg method datain lonin latin lonout latout INPUTS: method: a string defining the interpolation method must be bilinear or imoms3 datain: a 2D array the input data to interpolate lonin and latin: longitude latitude of the input data optionals if WEIG and ADDR keywords used lonout and latout: longitude latitude of the output data optionals if WEIG and ADDR keywords used KEYWORD PARAMETERS: WEIG ADDR: 2D arrays weig and addr are the weight and addresses used to perform the interpolation: dataout total weig datain addr 1 dataout reform dataout jpio jpjo over Those keywords can be set to named variables into which the values will be copied when the current routine exits Next they can be used to perform the interpolation whithout computing again those 2 parameters In that case lonin latin lonout and latout are not necessary NONORTHERNLINE and NOSOUTHERNLINE: activate if you don t whant to take into account the northen southern line of the input data when perfoming the interpolation OUTPUTS: 2D array: the interpolated data COMMON BLOCKS: none SIDE EFFECTS: RESTRICTIONS:We supposed the data are located on a sphere with a periodicity along the longitude EXAMPLE: topa fromreg bilinear tncep xncep yncep glamt gphit or t1opa fromreg bilinear t1ncep xncep yncep glamt gphit WEIG a ADDR b help a b t2opa fromreg bilinear t2ncep xncep WEIG a ADDR b MODIFICATION HISTORY:November 2005: Sebastien Masson smasson lodyc jussieu fr FUNCTION fromreg method datain lonin latin lonout latout WEIG weig ADDR addr NONORTHERNLINE nonorthernline NOSOUTHERNLINE nosouthernline compile_opt strictarr strictarrsubs IF NOT keyword_set weig AND keyword_set addr THEN BEGIN atmospheric grid parameters alon lonin alat latin get_gridparams alon alat jpia jpja 1 double Oceanic grid parameters olon lonout olat latout get_gridparams olon olat jpio jpjo 2 double Compute weight and address CASE method OF bilinear :compute_fromreg_bilinear_weigaddr alon alat olon olat weig addr NONORTHERNLINE nonorthernline NOSOUTHERNLINE nosouthernline imoms3 : compute_fromreg_imoms3_weigaddr alon alat olon olat weig addr NONORTHERNLINE nonorthernline NOSOUTHERNLINE nosouthernline ELSE:BEGIN print unknown interpolation method we stop stop ENDELSE ENDCASE ENDIF dataout total weig datain addr 1 dataout reform dataout jpio jpjo over RETURN dataout END");42 a[40] = new Array("./Interpolation/get_gridparams.html", "get_gridparams.pro", "", " NAME: get_gridparams PURPOSE: 1 extract from a NetCDF file the longitude latidude and their dimensions and make sure it is 1D or 2D arrays or 2 given longitude and latitude arrays get their dimensions and make sure they are 1D or 2D arrays CATEGORY:for interpolations tools CALLING SEQUENCE: 1 get_gridparams file lonname latname lon lat jpi jpj n_dimensions or 2 get_gridparams lon lat jpi jpj n_dimensions INPUTS: 1 file: the name of the netcdf file loname: the name of the variable that contains the longitude in the NetCDF file latname: the name of the variable that contains the latitude in the NetCDF file or 2 lon and lat: 1d or 2D arrays defining longitudes and latitudes Note that these arrays are also outputs and can therefore be modified KEYWORD PARAMETERS: none OUTPUTS: lon the variable that will contain the longitudes lat the variable that will contain the latitudes jpi the number of points in the longitudinal direction jpj the number of points in the latitudinal direction n_dimensions: 1 or 2 to specify if lon and lat should be 1D jpi or jpj arrays or 2D arrays jpi jpj Note that of n_dimensions 1 then the grid must be regular each longitudes must be the same for all latitudes and each latitudes should be the sae for all longitudes COMMON BLOCKS: none SIDE EFFECTS: RESTRICTIONS: EXAMPLE: 1 ncdf_get_gridparams coordinates_ORCA_R05 nc glamt gphit olon olat jpio jpjo 2 2 ncdf_get_gridparams olon olat jpio jpjo 2 MODIFICATION HISTORY:November 2005: Sebastien Masson smasson lodyc jussieu fr PRO get_gridparams in1 in2 in3 in4 in5 in6 in7 in8 DOUBLE double file lonname latname lon lat jpi jpj n_dimensions lon lat jpi jpj n_dimensions CASE n_params OF 8:BEGIN get longitude and latitude IF file_test in1 EQ 0 THEN BEGIN print file in1 does not exist stop ENDIF cdfido ncdf_open in1 ncdf_varget cdfido in2 lon ncdf_varget cdfido in3 lat ncdf_close cdfido n_dimensions in8 END 5:BEGIN lon temporary in1 lat temporary in2 n_dimensions in5 END ELSE:BEGIN print Bad nimber of input parameters stop end ENDCASE sizelon size lon sizelat size lat CASE 1 OF lon and lat are 1D arrays sizelon 0 EQ 1 AND sizelat 0 EQ 1:BEGIN get jpi and jpj jpi sizelon 1 jpj sizelat 1 make sure that lon and lat have the good number of dimensions CASE n_dimensions OF 1: 2:BEGIN make lon and lat 2D arrays lon temporary lon replicate 1 jpj lat replicate 1 jpi temporary lat END ELSE:stop ENDCASE END lon is 2D array and lat is 1D array sizelon 0 EQ 2 AND sizelat 0 EQ 1:BEGIN get jpi and jpj jpi sizelon 1 jpj sizelon 2 IF jpj NE n_elements lat THEN stop make sure that lon and lat have the good number of dimensions CASE n_dimensions OF 1:BEGIN IF array_equal lon lon 0 replicate 1 jpj NE 1 THEN BEGIN print Longitudes are not the same for all latitudes imposible to extract a 1D array of the longitudes stop ENDIF lon lon 0 END 2:lat replicate 1 jpi temporary lat ELSE:stop ENDCASE END lon is 1D array and lat is 2D array sizelon 0 EQ 1 AND sizelat 0 EQ 2:BEGIN get jpi and jpj jpi sizelat 1 jpj sizelat 2 IF jpi NE n_elements lon THEN stop make sure that lon and lat have the good number of dimensions CASE n_dimensions OF 1:BEGIN IF array_equal lat replicate 1 jpi lat 0 NE 1 THEN BEGIN print Latitudes are not the same for all longitudes imposible to extract a 1D array of the latitudes stop ENDIF lat reform lat 0 END 2:lon temporary lon replicate 1 jpj ELSE:stop ENDCASE END lon and lat are 2D arrays sizelon 0 EQ 2 AND sizelat 0 EQ 2:BEGIN get jpi and jpj IF array_equal sizelon 1:2 sizelat 1:2 NE 1 THEN stop jpi sizelon 1 jpj sizelon 2 make sure that lon and lat have the good number of dimensions CASE n_dimensions OF 1:BEGIN IF array_equal lon lon 0 replicate 1 jpj NE 1 THEN BEGIN print Longitudes are not the same for all latitudes imposible to extract a 1D array of the longitudes stop ENDIF lon lon 0 IF array_equal lat replicate 1 jpi reform lat 0 NE 1 THEN BEGIN print Latitudes are not the same for all longitudes imposible to extract a 1D array of the latitudes stop ENDIF lat reform lat 0 END 2: ELSE:stop ENDCASE END lon and lat are not 1D and or 2D arrays ELSE:stop ENDCASE double keyword if keyword_set double then BEGIN lon double temporary lon lat double temporary lat ENDIF give back the right outparameters CASE n_params OF 8:BEGIN in4 temporary lon in5 temporary lat in6 temporary jpi in7 temporary jpj END 5:BEGIN in1 temporary lon in2 temporary lat in3 temporary jpi in4 temporary jpj END ENDCASE return END");43 a[41] = new Array("./Interpolation/imoms3.html", "imoms3.pro", "", " FUNCTION imoms3 xin x abs xin y fltarr n_elements x test1 where x LT 1 IF test1 0 NE 1 THEN BEGIN xtmp x test1 y test1 0 5 xtmp xtmp xtmp xtmp xtmp 0 5 xtmp 1 ENDIF test1 where x LT 2 AND x GE 1 IF test1 0 NE 1 THEN BEGIN xtmp x test1 y test1 1 6 xtmp xtmp xtmp xtmp xtmp 11 6 xtmp 1 ENDIF RETURN y END");44 a[42] = new Array("./Interpolation/inquad.html", "inquad.pro", "", " NAME:inquad PURPOSE: to find if an x y point is in a quadrilateral x1 x2 x3 x4 CATEGORY:grid manipulation CALLING SEQUENCE: res inquad x y x1 y1 x2 y2 x3 y3 x4 y4 INPUTS: x y: the coordinates of the point we want to know where it is Must be a scalar if onsphere activated else can be scalar or array x1 y1 x2 y2 x3 y3 x4 y4: the coordinates of the quadrilateral given in the CLOCKWISE order Scalar or array KEYWORD PARAMETERS: DOUBLE: use double precision to perform the computation ONSPHERE: to specify that the quadilateral are on a sphere and that teir coordinates are longitude latitude coordinates In this case est west periodicity poles singularity and other pbs related to longitude latitude coordinates are managed automatically ZOOMRADIUS:the zoom circle centred on the x y with a radius of zoomradius degree where we look for the the quadrilateral which contains the x y point used for the satellite projection when onsphere is activated Default is 4 and seems to be the minimum which can be used Can be increase if the cell size is larger than 5 degrees NOPRINT: to suppress the print messages OUTPUTS: res a n element vector Where n is the number of elements of x res i j means that the point number i is located in the quadrilateral number j with 0 j n_elements x0 1 COMMON BLOCKS:none SIDE EFFECTS: RESTRICTIONS: I think degenerated quadrilateral e g flat of twisted is not work This has to be tested EXAMPLE: x 1 1 2 6 7 3 y 1 1 3 3 4 7 x1 1 0 4 2 y1 1 1 4 8 x2 1 1 6 4 y2 1 5 6 8 x3 1 3 8 4 y3 1 4 4 6 x4 1 2 6 2 y4 1 0 2 6 splot 0 10 0 10 xstyle 1 ystyle 1 nodata for i 0 2 do oplot x4 i x1 i x2 i x3 i x4 i y4 i y1 i y2 i y3 i y4 i oplot x y color 20 psym 1 thick 2 print inquad x y x1 y1 x2 y2 x3 y3 x4 y4 On a sphere see clickincell pro MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr August 2003 Based on Convert_clic_ij pro written by Gurvan Madec FUNCTION inquad x y x1 y1 x2 y2 x3 y3 x4 y4 ONSPHERE onsphere DOUBLE double ZOOMRADIUS zoomradius NOPRINT noprint NEWCOORD newcoord ntofind n_elements x nquad n_elements x2 IF keyword_set onsphere THEN BEGIN save the inputs parameters xin x yin y x1in x1 y1in y1 x2in x2 y2in y2 x3in x3 y3in y3 x4in x4 y4in y4 for map_set x x MOD 360 x1 x1 MOD 360 x2 x2 MOD 360 x3 x3 MOD 360 x4 x4 MOD 360 save map save map: map x: x y: y z: z p: p do a satellite projection IF NOT keyword_set zoomradius THEN zoomradius 4 map_set y 0 x 0 0 satellite sat_p 1 zoomradius 20 6371 229 0 0 noerase iso noborder use normal coordinates to reject cells which are out of the projection tmp convert_coord x y DATA TO_NORMAL DOUBLE double tmp1 convert_coord x1 y1 DATA TO_NORMAL DOUBLE double tmp2 convert_coord x2 y2 DATA TO_NORMAL DOUBLE double tmp3 convert_coord x3 y3 DATA TO_NORMAL DOUBLE double tmp4 convert_coord x4 y4 DATA TO_NORMAL DOUBLE double remove cell which have one corner with coordinates equal to NaN test finite tmp1 0 tmp1 1 tmp2 0 tmp2 1 tmp3 0 tmp3 1 tmp4 0 tmp4 1 good where temporary test EQ 1 IF good 0 EQ 1 THEN BEGIN IF NOT keyword_set noprint THEN print The point is out of the cells restore the input parameters x temporary xin y temporary yin x1 temporary x1in y1 temporary y1in x2 temporary x2in y2 temporary y2in x3 temporary x3in y3 temporary y3in x4 temporary x4in y4 temporary y4in restore old map map save map x save x y save y z save z p save p RETURN 1 ENDIF x tmp 0 y tmp 1 x1 tmp1 0 good y1 tmp1 1 good x2 tmp2 0 good y2 tmp2 1 good x3 tmp3 0 good y3 tmp3 1 good x4 tmp4 0 good y4 tmp4 1 good tmp1 1 tmp2 1 tmp3 1 tmp4 1 remove cells which are obviously bad test x1 GT x AND x2 GT x AND x3 GT x AND x4 GT x OR x1 LT x AND x2 LT x AND x3 LT x AND x4 LT x OR y1 GT y AND y2 GT y AND y3 GT y AND y4 GT y OR y1 LT y AND y2 LT y AND y3 LT y AND y4 LT y good2 where temporary test EQ 0 IF good2 0 EQ 1 THEN BEGIN IF NOT keyword_set noprint THEN print The point is out of the cells restore the input parameters x temporary xin y temporary yin x1 temporary x1in y1 temporary y1in x2 temporary x2in y2 temporary y2in x3 temporary x3in y3 temporary y3in x4 temporary x4in y4 temporary y4in restore old map map save map x save x y save y z save z p save p RETURN 1 ENDIF nquad n_elements good2 x1 x1 good2 y1 y1 good2 x2 x2 good2 y2 y2 good2 x3 x3 good2 y3 y3 good2 x4 x4 good2 y4 y4 good2 ENDIF the point is inside the quadilateral if test eq 1 with test equal to: test x x1 y2 y1 GE x2 x1 y y1 x x2 y3 y2 GT x3 x2 y y2 x x3 y4 y3 GT x4 x3 y y3 x x4 y1 y4 GE x1 x4 y y4 computation of test without any do loop for ntofind points x y and nquad quadilateral x1 x2 x3 x4 y1 y2 y3 y4 test dimensions are ntofind nquad column i of test corresponds to the intersection of point i with all quadirlateral row j of test corresponds to all the points localized in cell j test x x1 x replicate 1 nquad replicate 1 ntofind x1 y2 y1 replicate 1 ntofind y2 y1 GE x2 x1 GE replicate 1 ntofind x2 x1 y y1 y replicate 1 nquad replicate 1 ntofind y1 test temporary test x x2 x replicate 1 nquad replicate 1 ntofind x2 y3 y2 replicate 1 ntofind y3 y2 GE x3 x2 GE replicate 1 ntofind x3 x2 y y2 y replicate 1 nquad replicate 1 ntofind y2 test temporary test x x3 x replicate 1 nquad replicate 1 ntofind x3 y4 y3 replicate 1 ntofind y4 y3 GE x4 x3 GE replicate 1 ntofind x4 x3 y y3 y replicate 1 nquad replicate 1 ntofind y3 test temporary test x x4 x replicate 1 nquad replicate 1 ntofind x4 y1 y4 replicate 1 ntofind y1 y4 GE x1 x4 GE replicate 1 ntofind x1 x4 y y4 y replicate 1 nquad replicate 1 ntofind y4 check test if ntofind gt 1 if ntofind gt 1 each point must be localised in one uniq cell IF ntofind GT 1 THEN BEGIN each column of test must have only 1 position equal to one chtest total test 2 points out of the cells IF where chtest EQ 0 0 NE 1 THEN BEGIN IF NOT keyword_set noprint THEN print Points number strjoin strtrim where chtest EQ 0 1 are out of the grid stop ENDIF points in more than one cell IF where chtest GT 1 0 NE 1 THEN BEGIN IF NOT keyword_set noprint THEN print Points number strjoin strtrim where chtest GT 1 1 are in more than one cell stop ENDIF ENDIF find the points for which test eq 1 found where temporary test EQ 1 if ntofind eq 1 the point may be localised in more than one grid cell ou may also be out of the cells IF ntofind EQ 1 THEN BEGIN CASE 1 OF found 0 EQ 1:BEGIN IF NOT keyword_set noprint THEN print The point is out of the cells IF keyword_set onsphere THEN BEGIN restore old map map save map x save x y save y z save z p save p ENDIF return 1 END n_elements found GT ntofind:BEGIN IF NOT keyword_set noprint THEN print The point is in more than one cell END ELSE: ENDCASE ENDIF ELSE BEGIN if ntofind GT 1 found must be sorted i position of found this corresponds to one x y point forsort found MOD ntofind j position of found this corresponds to cell in which is one x y point found temporary found ntofind found must be sorted accordind to forsort found found sort forsort ENDELSE IF keyword_set onsphere THEN BEGIN IF arg_present newcoord THEN BEGIN newcoord x1 found y1 found x2 found y2 found x3 found y3 found x4 found y4 found x y ENDIF found good good2 found restore the input parameters x temporary xin y temporary yin x1 temporary x1in y1 temporary y1in x2 temporary x2in y2 temporary y2in x3 temporary x3in y3 temporary y3in x4 temporary x4in y4 temporary y4in restore old map map save map x save x y save y z save z p save p ENDIF RETURN found END");45 a[43] = new Array("./Interpolation/inrecgrid.html", "inrecgrid.pro", "", " NAME: inrecgrid PURPOSE: given a list of points x y position the x and y limits of a rectangular grid find in which cell is located each given point CATEGORY: no DO loop use the wonderfull value_locate function CALLING SEQUENCE:res inrecgrid xin yin left bottom INPUTS: x1d: a 1d array the x position on the points y1d: a 1d array the y position on the points left: a 1d monotonically increasing array the position of the left border of each cell bottom: a 1d monotonically increasing array the position of the bottom border of each cell OPTIONAL INPUTS: KEYWORD PARAMETERS: output2d: to get the output as a 2d array 2 n_elements x1d with res 0 the x index accoring to the 1d array defined by left and res 1 the y index accoring to the 1d array defined by bottom checkout rbgrid ubgrid specify the right and upper bondaries of the grid and check if some points are out OUTPUTS:the index on the cell accoring to the 2d array defined by left and bottom OPTIONAL OUTPUTS: COMMON BLOCKS: no SIDE EFFECTS: RESTRICTIONS: PROCEDURE: EXAMPLE: IDL a indgen 5 IDL b indgen 7 IDL r inrecgrid 0 25 3 25 2 4 25 2 8 1 4 a b IDL print r 20 13 7 IDL r inrecgrid 0 25 3 25 2 4 25 2 8 1 4 a a 1 b b 1 output2d IDL print r 0 00000 4 00000 3 00000 2 00000 2 00000 1 00000 MODIFICATION HISTORY:S Masson smasson lodyc jussieu fr July 3rd 2002 October 3rd 2003: use value_locate FUNCTION inrecgrid x1d y1d left bottom output2d output2d checkout checkout ncellx n_elements left ncelly n_elements bottom xpos value_locate left x1d ypos value_locate bottom y1d IF n_elements checkout EQ 2 THEN BEGIN out where x1d GT checkout 0 IF out 0 NE 1 THEN xpos out 1 out where y1d GT checkout 1 IF out 0 NE 1 THEN ypos out 1 ENDIF IF keyword_set output2d THEN return transpose xpos transpose ypos IF NOT keyword_set checkout THEN RETURN xpos ncellx ypos res xpos ncellx ypos out where xpos EQ 1 OR ypos EQ 1 IF out 0 NE 1 THEN res out 1 RETURN res END");46 a[44] = new Array("./Interpolation/ll_narcs_distances.html", "ll_narcs_distances.pro", "", " NAME: LL_NARCS_DISTANCES PURPOSE: This function returns the longitude and latitude lon lat of a point a given arc distance pi lon0 10 20 100 IDL lat0 0 10 45 IDL lon1 10 60 280 IDL lat1 0 10 45 IDL dist map_npoints lon0 lat0 lon1 lat1 azimuth azi two_by_two IDL earthradius 6378206 4d0 IDL res ll_narcs_distances lon0 lat0 dist earthradius azi degrees IDL print reform res 0 10 000000 60 000000 280 00000 IDL print reform res 1 1 1999280e 15 10 000000 45 000000 MODIFICATION HISTORY: Based on the IDL function ll_arc_distance pro v 1 11 2003 02 03 Sebastien Masson smasson lodyc jussieu fr August 2005 Return the lon lat of the point a given arc distance pi arc_dist pi and azimuth az from lon_lat0FUNCTION LL_NARCS_DISTANCES lon0 lat0 arc_dist az DEGREES degs IF n_elements lon0 NE n_elements lat0 OR n_elements lon0 NE n_elements arc_dist OR n_elements lon0 NE n_elements az THEN return 1 cdist cos arc_dist Arc_Dist is always in radians sdist sin arc_dist if keyword_set degs then s dpi 180 0 else s 1 0d0 ll lat0 s To radians sinll1 sin ll cosll1 cos ll azs az s phi asin sinll1 cdist cosll1 sdist cos azs ll lon0 s To radians lam ll atan sdist sin azs cosll1 cdist sinll1 sdist cos azs zero where arc_dist eq 0 count IF count NE 0 THEN BEGIN lam zero lon0 zero phi zero lat0 zero ENDIF if keyword_set degs then return transpose lam phi s ELSE return transpose lam phi end ");47 a[45] = new Array("./Interpolation/map_npoints.html", "map_npoints.pro", "", " NAME: Map_nPoints PURPOSE: Return the distance in meter between all np0 points P0 and all np1 points P1 on a sphere If keyword TWO_BY_TWO is given then returns the distances between number n of P0 points and number n of P1 points in that case np0 and np1 must be equal Same as map_2points with the meter parameter but for n points without do loop CATEGORY: Maps CALLING SEQUENCE: Result Map_nPoints lon0 lat0 lon1 lat1 INPUTS: Lon0 Lat0 np0 elements vector longitudes and latitudes of np0 points P0 Lon1 Lat1 np1 elements vector longitude and latitude of np1 points P1 KEYWORD PARAMETERS: AZIMUTH: A named variable that will receive the azimuth of the great circle connecting the two points P0 to P1 MIDDLE: to get the longitude latitude of the middle point betwen P0 and P1 RADIANS if set inputs and angular outputs are in radians otherwise degrees RADIUS: If given return the distance between the two points calculated using the given radius Default value is the earth radius : 6378206 4d0 TWO_BY_TWO:If given then Map_nPoints returns the distances between number n of P0 points and number n of P1 points in that case np0 and np1 must be equal OUTPUTS: An np0 np1 array giving the distance in meter between np0 points P0 and np1 points P1 Element i j of the ouput is the distance between element P0 i and P1 j If keyword TWO_BY_TWO is given then Map_nPoints returns an np element vector giving the distance in meter between P0 i and P1 i in that case we have np0 np1 np if MIDDLE see this keyword EXAMPLES: IDL print map_npoints 105 15 1 40 02 1 0 07 100 50 51 30 20 0 7551369 3 5600334 8 12864354 10921254 14919237 5455558 8 IDL lon0 10 20 100 IDL lat0 0 10 45 IDL lon1 10 60 280 IDL lat1 0 10 45 IDL dist map_npoints lon0 lat0 lon1 lat1 azimuth azi IDL help dist azi DIST DOUBLE Array 3 3 AZI DOUBLE Array 3 3 IDL print dist 4 lindgen 3 azi 4 lindgen 3 2226414 0 4957944 5 10018863 90 000000 64 494450 4 9615627e 15 IDL dist map_npoints lon0 lat0 lon1 lat1 azimuth azi two_by_two IDL help dist azi DIST DOUBLE Array 3 AZI DOUBLE Array 3 IDL print dist azi 2226414 0 4957944 5 10018863 90 000000 64 494450 4 9615627e 15 IDL print map_2points lon0 0 lat0 0 lon1 0 lat1 0 20 000000 90 000000 IDL print map_npoints lon0 0 lat0 0 lon1 0 lat1 0 azi azi 6378206 4d0 dtor azi 20 000000 90 000000 IDL lon0 10 20 100 IDL lat0 0 10 45 IDL lon1 10 60 280 IDL lat1 0 10 45 IDL mid map_npoints lon0 lat0 lon1 lat1 middle two_by_two IDL print reform mid 0 reform mid 1 0 0000000 40 000000 190 00000 0 0000000 1 5902773e 15 90 000000 IDL print map_2points lon0 0 lat0 0 lon1 0 lat1 0 npath 3 1 0 0000000 0 0000000 IDL print map_2points lon0 1 lat0 1 lon1 1 lat1 1 npath 3 1 40 000000 1 5902773e 15 IDL print map_2points lon0 2 lat0 2 lon1 2 lat1 2 npath 3 1 190 00000 90 000000 MODIFICATION HISTORY: Based on the IDL function map_2points pro v 1 6 2001 01 15Sebastien Masson smasson lodyc jussieu fr October 2003 Function Map_npoints lon0 lat0 lon1 lat1 azimuth azimuth RADIANS radians RADIUS radius MIDDLE middle TWO_BY_TWO two_by_two COMPILE_OPT idl2 ON_ERROR 2 return to caller IF N_PARAMS LT 4 THEN MESSAGE Incorrect number of arguments np0 n_elements lon0 IF n_elements lat0 NE np0 THEN MESSAGE lon0 and lat0 must have the same number of elements np1 n_elements lon1 IF n_elements lat1 NE np1 THEN MESSAGE lon1 and lat1 must have the same number of elements if keyword_set two_by_two AND np0 NE np1 then MESSAGE When using two_by_two keyword P0 and P1 must have the same number of elements mx MAX ABS lat0 lat1 pi2 dpi 2 IF mx GT KEYWORD_SET radians pi2 : 90 THEN MESSAGE Value of Latitude is out of allowed range k KEYWORD_SET radians 1 0d0 : dpi 180 0 Earth equatorial radius meters Clarke 1866 ellipsoid r_sphere n_elements RADIUS NE 0 RADIUS : 6378206 4d0 coslt1 cos k lat1 sinlt1 sin k lat1 coslt0 cos k lat0 sinlt0 sin k lat0 IF np0 EQ np1 AND np1 EQ 1 THEN two_by_two 1 if NOT keyword_set two_by_two THEN BEGIN coslt1 replicate 1 0d0 np0 temporary coslt1 sinlt1 replicate 1 0d0 np0 temporary sinlt1 coslt0 temporary coslt0 replicate 1 0d0 np1 sinlt0 temporary sinlt0 replicate 1 0d0 np1 ENDIF if keyword_set two_by_two THEN BEGIN cosl0l1 cos k lon1 lon0 sinl0l1 sin k lon1 lon0 ENDIF ELSE BEGIN cosl0l1 cos k replicate 1 0d0 np0 lon1 lon0 replicate 1 0d0 np1 sinl0l1 sin k replicate 1 0d0 np0 lon1 lon0 replicate 1 0d0 np1 ENDELSE cosc sinlt0 sinlt1 coslt0 coslt1 cosl0l1 Cos of angle between pnts Avoid roundoff problems by clamping cosine range to 1 1 cosc 1 0d0 cosc 1 0d0 if arg_present azimuth OR keyword_set middle then begin sinc sqrt 1 0d0 cosc cosc bad where abs sinc le 1 0e 7 IF bad 0 NE 1 THEN sinc bad 1 cosaz coslt0 sinlt1 sinlt0 coslt1 cosl0l1 sinc sinaz sinl0l1 coslt1 sinc IF bad 0 NE 1 THEN BEGIN sinc bad 0 0d0 sinaz bad 0 0d0 cosaz bad 1 0d0 ENDIF ENDIF IF keyword_set middle then BEGIN s0 0 5d0 acos cosc coss cos s0 sins sin s0 lats asin sinlt0 coss coslt0 sins cosaz k lons atan sins sinaz coslt0 coss sinlt0 sins cosaz k if keyword_set two_by_two THEN BEGIN return transpose lon0 lons lats ENDIF ELSE BEGIN return lon0 replicate 1 0d0 np1 lons lats ENDELSE ENDIF if arg_present azimuth then begin azimuth atan sinaz cosaz IF k NE 1 0d0 THEN azimuth temporary azimuth k ENDIF return acos cosc r_sphere end");48 a[46] = new Array("./Interpolation/neighbor.html", "neighbor.pro", "", " NAME: neighbor PURPOSE: find the closetest point of P0 within a list of np1 points P1 Which can be on a sphere CATEGORY: Maps CALLING SEQUENCE: Result neighbor lon0 lat0 lon1 lat1 INPUTS: Lon0 Lat0 scalar longitudes and latitudes of point P0 Lon1 Lat1 np1 elements vector longitude and latitude of np1 points P1 KEYWORD PARAMETERS: RADIANS if set inputs and angular outputs are in radians otherwise degrees DISTANCE dis to get back the distances between P0 and the np1 points P1 in the variable dis SPHERE to activate if points are located on a sphere OUTPUTS: index giving the P1 index point that is the closetest point of P0 EXAMPLES: IDL print neighbor 105 15 40 02 0 07 100 50 51 30 20 0 distance dis 0 IDL print dis 105 684 206 125 160 228 MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr October 2003 FUNCTION neighbor p0lon p0lat neighlon neighlat sphere sphere distance distance radians radians somme checks IF n_elements p0lon NE 1 THEN MESSAGE Sorry p0lon must be a scalar p0lon p0lon 0 IF n_elements p0lat NE 1 THEN MESSAGE Sorry p0lat must be a scalar p0lat p0lat 0 nneig n_elements neighlon IF n_elements neighlat NE nneig THEN MESSAGE neighlon and neighlat must have the same number of elements distance between P0 and the others points IF keyword_set sphere THEN BEGIN IF sphere NE 1 THEN radius sphere distance Map_nPoints p0lon p0lat neighlon neighlat radius radius radians radians ENDIF ELSE BEGIN distance neighlon p0lon 2 neighlat p0lat 2 IF arg_present distance THEN distance sqrt distance ENDELSE RETURN where distance EQ min distance END");49 a[47] = new Array("./Interpolation/quadrilateral2square.html", "quadrilateral2square.pro", "", " NAME:quadrilateral2square PURPOSE:warm or map an arbitrary quadrilateral onto a unit square according to the 4 point correspondences: x0 y0 0 0 x1 y1 1 0 x2 y2 1 1 x3 y3 0 1 This is the inverse function of square2quadrilateral pro The mapping is done using perspective transformation which preserve lines in all orientations and permit quadrilateral to quadrilateral mappings see ref bellow CATEGORY:image grid manipulation CALLING SEQUENCE: res square2quadrilateral x0 y0 x1 y1 x2 y2 x3 y3 xin yin INPUTS: x0 y0 x1 y1 x2 y2 x3 y3 the coordinates of the quadrilateral see above for correspondance with the unit square Can be scalar or array x0 y0 x1 y1 x2 y2 and x3 y3 are given in the anticlockwise order xin yin:the coordinates of the point s for which we want to do the mapping Can be scalar or array KEYWORD PARAMETERS: DOUBLE: use double precision to perform the computation OUTPUTS: 2 n array: the new coodinates xout yout of the xin yin point s after mapping If xin is a scalar then n is equal to the number of elements of x0 If xin is an array then n is equal to the number of elements of xin COMMON BLOCKS:none SIDE EFFECTS: RESTRICTIONS: I think degenerated quadrilateral e g flat of twisted is not work This has to be tested EXAMPLE: IDL splot 0 5 0 3 nodata xstyle 1 ystyle 1 IDL tracegrille findgen 11 1 findgen 11 1 color indgen 12 20 IDL xin findgen 11 1 replicate 1 11 IDL yin replicate 1 11 findgen 11 1 IDL out square2quadrilateral 2 1 3 0 5 1 2 3 xin yin IDL tracegrille reform out 0 11 11 reform out 1 11 11 color indgen 12 20 IDL inorg quadrilateral2square 2 1 3 0 5 1 2 3 out 0 out 1 IDL tracegrille reform inorg 0 11 11 reform inorg 1 11 11 color indgen 12 20 MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr August 2003 Based on Digital Image Warping by G Wolberg IEEE Computer Society Press Los Alamitos California Chapter 3 see p 52 56 FUNCTION quadrilateral2square x0in y0in x1in y1in x2in y2in x3in y3in xxin yyin PERF perf tempsone systime 1 Warning wrong definition of x2 y2 and x3 y3 at the bottom of page 54 of Wolberg s book see figure 3 7 page 56 for the good definition IF keyword_set double THEN BEGIN x0 double x0in x1 double x1in x2 double x2in x3 double x3in y0 double y0in y1 double y1in y2 double y2in y3 double y3in xin double xxin yin double yyin ENDIF ELSE BEGIN x0 float x0in x1 float x1in x2 float x2in x3 float x3in y0 float y0in y1 float y1in y2 float y2in y3 float y3in xin float xxin yin float yyin ENDELSE get the matrix A a square2quadrilateral x0in y0in x1in y1in x2in y2in x3in y3in compute the adjoint matrix IF keyword_set double THEN adj dblarr 9 n_elements x0 ELSE adj fltarr 9 n_elements x0 adj 0 a 4 a 7 a 5 adj 1 a 7 a 2 a 1 adj 2 a 1 a 5 a 4 a 2 adj 3 a 6 a 5 a 3 adj 4 a 0 a 6 a 2 adj 5 a 3 a 2 a 0 a 5 adj 6 a 3 a 7 a 6 a 4 adj 7 a 6 a 1 a 0 a 7 adj 8 a 0 a 4 a 3 a 1 IF n_elements xin EQ 1 THEN BEGIN xin replicate xin n_elements x0 yin replicate yin n_elements x0 ENDIF compute xprime yprime and wprime IF n_elements x0 EQ 1 THEN BEGIN wpr 1 adj 6 xin adj 7 yin adj 8 ENDIF ELSE BEGIN wpr 1 adj 6 xin adj 7 yin adj 8 ENDELSE xpr xin wpr ypr yin wpr IF keyword_set double THEN res dblarr 2 n_elements xin ELSE res fltarr 2 n_elements xin IF n_elements x0 EQ 1 THEN BEGIN res 0 xpr adj 0 ypr adj 1 wpr adj 2 res 1 xpr adj 3 ypr adj 4 wpr adj 5 ENDIF ELSE BEGIN res 0 xpr adj 0 ypr adj 1 wpr adj 2 res 1 xpr adj 3 ypr adj 4 wpr adj 5 ENDELSE IF keyword_set perf THEN print time quadrilateral2square systime 1 tempsone RETURN res END");50 a[48] = new Array("./Interpolation/spl_fstdrv.html", "spl_fstdrv.pro", "", " NAME:spl_fstdrv PURPOSE: SPL_FSTDRV returns the values of the first derivative of the interpolating function at the points X2i it is a double precision array Given the arrays X and Y which tabulate a function with the X i AND Y i in ascending order and given an input value X2 the SPL_INCR function returns an interpolated value for the given values of X2 The interpolation method is based on cubic spline corrected in a way that interpolated value are also in ascending order CATEGORY: CALLING SEQUENCE: y2 spl_fstdrv x y yscd x2 INPUTS: x: An n element at least 2 input vector that specifies the tabulate points in ascending order y: f x y An n element input vector that specifies the values of the tabulated function F Xi corresponding to Xi yscd: The output from SPL_INIT for the specified X and Y x2: The input values for which the first derivative values are desired X can be scalar or an array of values KEYWORD PARAMETERS: none OUTPUTS: y2: f x2 y2 COMMON BLOCKS: none SIDE EFFECTS: RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr : May 2005 FUNCTION spl_fstdrv x y yscd x2 compute the first derivative of the spline function nx n_elements x ny n_elements y x must have at least 2 elements IF nx LT 2 THEN stop y must have the same number of elements than x IF nx NE ny THEN stop define loc in a way that if loc i eq 1 : x2 i x nx 1 else : x loc i extrapolation use x nx 2 and x nx 1 even if x2 i x nx 1 extrapolation loc 0 temporary loc nx 2 distance between to consecutive x deltax x loc 1 x loc distance between to consecutive y deltay y loc 1 y loc relative distance between x2 i and x loc i 1 a x loc 1 x2 deltax relative distance between x2 i and x loc i b 1 0d a compute the first derivative on x see numerical recipes Chap 3 3 yfrst temporary deltay deltax 1 0d 6 0d 3 0d a a 1 0d deltax yscd loc 1 0d 6 0d 3 0d b b 1 0d deltax yscd loc 1 beware of the computation precision force near zero values to be exactly 0 0 zero where abs yfrst LT 1 e 10 IF zero 0 NE 1 THEN yfrst zero 0 0d RETURN yfrst END ");51 a[49] = new Array("./Interpolation/spl_incr.html", "spl_incr.pro", "", " NAME:spl_incr PURPOSE: Given the arrays X and Y which tabulate a function with the X i AND Y i in ascending order and given an input value X2 the SPL_INCR function returns an interpolated value for the given values of X2 The interpolation method is based on cubic spline corrected in a way that interpolated values are also monotonically increasing CATEGORY: CALLING SEQUENCE: y2 spl_incr x y x2 INPUTS: x: An n element at least 2 input vector that specifies the tabulate points in a strict ascending order y: f x y An n element input vector that specifies the values of the tabulated function F Xi corresponding to Xi As f is supposed to be monotonically increasing y values must be monotonically increasing y can have equal consecutive values x2: The input values for which the interpolated values are desired Its values must be strictly monotonically increasing KEYWORD PARAMETERS: YP0: The first derivative of the interpolating function at the point X0 If YP0 is omitted the second derivative at the boundary is set to zero resulting in a natural spline YPN_1: The first derivative of the interpolating function at the point Xn 1 If YPN_1 is omitted the second derivative at the boundary is set to zero resulting in a natural spline OUTPUTS: y2: f x2 y2 Double precision array COMMON BLOCKS: none SIDE EFFECTS: RESTRICTIONS: It might be possible that y2 i 1 y2 i has very small negative values amplitude smaller than 1 e 6 EXAMPLE: n 100L x dindgen n 2 y abs randomn 0 n y n 2:n 2 1 0 y n n 3 0 y n n 6:n n 6 5 0 y total y cumulative double x2 dindgen n 1 2 n2 n_elements x2 print min y 1:n 1 y 0:n 2 LT 0 y2 spl_incr x y x2 splot x y xstyle 1 ystyle 1 ysurx 25 petit 1 2 1 land oplot x2 y2 color 100 c y2 1:n2 1 y2 0:n2 2 print min c LT 0 print min c max ma ma splot c xstyle 1 ystyle 1 yrange 01 05 ysurx 25 petit 1 2 2 noerase oplot 0 n_elements c 0 0 linestyle 1 MODIFICATION HISTORY: Sebastien Masson smasson lodyc jussieu fr : May Dec 2005 FUNCTION pure_concave x1 x2 y1 y2 der2 x X n type xx double x double x1 double x2 double x1 f double x2 double x1 double y2 double y1 n der2 temporary f res xx n IF check_math GT 0 THEN BEGIN zero where abs res LT 1 e 10 IF zero 0 NE 1 THEN res zero 0 0d END res temporary res double y2 double y1 y1 IF array_equal sort res lindgen n_elements res NE 1 THEN stop RETURN res END FUNCTION pure_convex x1 x2 y1 y2 der2 x 1 1 X n type xx 1 0d double x double x1 double x2 double x1 f double x2 double x1 double y2 double y1 n der2 temporary f res xx n IF check_math GT 0 THEN BEGIN zero where abs res LT 1 e 10 IF zero 0 NE 1 THEN res zero 0 0d END res 1 0d temporary res res temporary res y2 y1 y1 IF array_equal sort res lindgen n_elements res NE 1 THEN stop RETURN res ENDFUNCTION spl_incr x y x2 YP0 yp0 YPN_1 ypn_1 check and initialisation nx n_elements x ny n_elements y nx2 n_elements x2 x must have at least 2 elements IF nx LT 2 THEN stop y must have the same number of elements than x IF nx NE ny THEN stop x be monotonically increasing IF min x 1:nx 1 x 0:nx 2 LE 0 THEN stop x2 be monotonically increasing IF N_ELEMENTS X2 GE 2 THEN IF min x2 1:nx2 1 x2 0:nx2 2 LE 0 THEN stop y be monotonically increasing IF min y 1:ny 1 y 0:ny 2 LT 0 THEN stop first check: check if two consecutive values are equal bad where y 1:ny 1 y 0:ny 2 EQ 0 cntbad IF cntbad NE 0 THEN BEGIN define the results: y2 y2 dblarr nx2 define xinx2: see help of value_locate if xinx2 i eq 1 : x bad i x2 nx2 1 else : x2 xinx2 i x2 nx2 1 else : x2 xinx2 i we have middle pieces for which we force yp0 0 0d and ypn_1 0 0d IF cntbad GT 1 THEN BEGIN we take care of the piece located wetween bad ib 1 and bad ib FOR ib 1 cntbad 1 DO BEGIN if there is x2 values smaller that x bad ib then the x2 values located between bad ib 1 and bad ib are xinx2 ib 1 1:xinx2 ib IF xinx2 ib NE 1 THEN begin y2 xinx2 ib 1 1 0 y i 1 y i 2 y reach its minimum value between x i and x i 1 0 y i 1 0 y i we do a first selection by looking for those points loc lindgen nx 1 maybebad where yscd loc LE 0 0d AND yscd loc 1 GE 0 0d cntbad IF cntbad NE 0 THEN BEGIN mbbloc loc maybebad aaa yscd mbbloc 1 yscd mbbloc 6 0d x mbbloc 1 x mbbloc bbb 0 5d yscd mbbloc ccc yifrst mbbloc ddd y mbbloc definitive selection: y can become negative if and only if 2b 2 4 3a c 0 y can become negative if and only if b 2 3a c 0 delta bbb bbb 3 0d aaa ccc bad where delta GT 0 cntbad IF cntbad NE 0 THEN BEGIN delta delta bad aaa aaa bad bbb bbb bad ccc ccc bad ddd ddd bad bad maybebad bad define xinx2_1: see help of value_locate if xinx2_1 i eq 1 : x bad i x2 nx2 1 else : x2 xinx2_1 i x2 nx2 1 else : x2 xinx2_2 i y bad ib 1 then we cannot applay the method we want to apply we use then convex concave case by changing by hand the value of yinfl and xinfl IF yzero GT y bad ib 1 THEN BEGIN yinfl 0 5d y bad ib 1 y bad ib xinfl 0 5d x bad ib 1 x bad ib GOTO convexconcave ENDIF define xinx2_3: see help of value_locate if xinx2_3 ib eq 1 : x bad ib xzero x2 nx2 1 else : x2 xinx2_3 we use then convex concave case by changing by hand the value of yinfl and xinfl IF yzero lt y bad ib THEN BEGIN yinfl 0 5d y bad ib 1 y bad ib xinfl 0 5d x bad ib 1 x bad ib GOTO convexconcave ENDIF define xinx2_3: see help of value_locate if xinx2_3 ib eq 1 : x bad ib xzero x2 nx2 1 else : x2 xinx2_3 x2 nx2 1 else : x2 xinx2_3 x bad ib xzero x2 xinx3_2 1 xinx2_3 value_locate x2 x bad ib xinfl IF xinx2_3 ge xinx2_1 ib 1 THEN BEGIN y2 xinx2_1 ib 1:xinx2_3 pure_convex x bad ib x bad ib xinfl y bad ib yinfl yifrst bad ib x2 xinx2_1 ib 1:xinx2_3 ENDIF IF xinx2_2 ib GE xinx2_3 1 THEN BEGIN y2 xinx2_3 1:xinx2_2 ib pure_concave x bad ib xinfl x bad ib 1 yinfl y bad ib 1 yifrst bad ib 1 x2 xinx2_3 1:xinx2_2 ib ENDIF END ENDCASE END ENDCASE ENDIF ENDFOR ENDIF ENDIF RETURN y2 END");52 a[50] = new Array("./Interpolation/spl_keep_mean.html", "spl_keep_mean.pro", "", " NAME:spl_keep_mean PURPOSE: Given the arrays X and Y which tabulate a function with the X i AND Y i in ascending order and given an input value X2 the SPL_INCR function returns an interpolated value for the given values of X2 The interpolation method is based on cubic spline corrected in a way that integral of the interpolated values is the same as the integral of the input values for exemple to build daily data from monthly mean and keep the monthly mean of the computed daily data equa to the original values CATEGORY: CALLING SEQUENCE: y2 spl_keep_mean x y x2 INPUTS: x: An n element at least 2 input vector that specifies the tabulate points in a strict ascending order y: an array with one element less than x y i represents the mean value between x i and x i 1 if GE0 is activated y must have positive values x2: The input values for which the interpolated values are desired Its values must be strictly monotonically increasing KEYWORD PARAMETERS: GE0: to force that y2 is always GE than 0 In that case y must also be GE than 0 YP0: The first derivative of the interpolating function at the point X0 If YP0 is omitted the second derivative at the boundary is set to zero resulting in a natural spline YPN_1: The first derivative of the interpolating function at the point Xn 1 If YPN_1 is omitted the second derivative at the boundary is set to zero resulting in a natural spline OUTPUTS: y2: the meean value between two consecutive values of x2 This array has one element less than y2 y2 has double precision COMMON BLOCKS: none SIDE EFFECTS: RESTRICTIONS: It might be possible that y2 has very small negative values amplitude smaller than 1 e 6 EXAMPLE: 12 monthly values of precipitations into daily values: yr1 1990 yr2 1992 nyr yr2 yr1 1 n1 12 nyr 1 x julday 1 findgen n1 replicate 1 n1 replicate yr1 n1 fltarr n1 n2 365 nyr total leapyr yr1 indgen nyr 1 x2 julday replicate 1 n2 1 findgen n2 replicate yr1 n2 fltarr n2 y abs randomn 0 n1 1 y2 spl_keep_mean x y x2 ge0 print min x max ma ma print min x2 max ma ma print vairdate min x max ma ma print total y x 1:n1 1 x 0:n1 2 print total y2 x2 1:n2 1 x2 0:n2 2 MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr : May 2005 FUNCTION spl_keep_mean x yin x2 YP0 yp0 YPN_1 ypn_1 GE0 ge0 check and initialisation nx n_elements x ny n_elements yin nx2 n_elements x2 x must have at least 2 elements IF nx LT 2 THEN stop x2 must have at least 2 elements IF nx2 LT 2 THEN stop x be monotonically increasing IF min x 1:nx 1 x 0:nx 2 LE 0 THEN stop x2 be monotonically increasing IF min x2 1:nx2 1 x2 0:nx2 2 LE 0 THEN stop compute the integral of y if spl_keep_mean is called by the user and not by itself we must compute the integral of y yin must have one element less than x IF nx NE ny 1 THEN stop y double yin double x 1:nx 1 x 0:nx 2 y 0 0d temporary y y total temporary y cumulative double compute the spline interpolation IF keyword_set ge0 THEN BEGIN if the want that the interpolated values are always 0 we must have yin 0 0d IF min yin LT 0 THEN stop call spl_incr y2 spl_incr x temporary y x2 yp0 yp0 ypn_1 ypn_1 ENDIF ELSE BEGIN yscd spl_init x y yp0 yp0 ypn_1 ypn_1 double y2 spl_interp x y temporary yscd x2 double ENDELSE Compute the derivative of y yfrst y2 1:nx2 1 y2 0:nx2 2 x2 1:nx2 1 x2 0:nx2 2 it can happen that we have very small negative values 1 e 6 for ex yfrst 0 0d temporary yfrst RETURN yfrst END");53 a[51] = new Array("./Interpolation/square2quadrilateral.html", "square2quadrilateral.pro", "", " NAME:square2quadrilateral PURPOSE:warm or map a unit square onto an arbitrary quadrilateral according to the 4 point correspondences: 0 0 x0 y0 1 0 x1 y1 1 1 x2 y2 0 1 x3 y3 The mapping is done using perspective transformation which preserve lines in all orientations and permit quadrilateral to quadrilateral mappings see ref bellow CATEGORY:image grid manipulation CALLING SEQUENCE: res square2quadrilateral x0 y0 x1 y1 x2 y2 x3 y3 xin yin INPUTS: x0 y0 x1 y1 x2 y2 x3 y3 the coordinates of the quadrilateral see above for correspondance with the unit square Can be scalar or array x0 y0 x1 y1 x2 y2 and x3 y3 are given in the anticlockwise order xin yin:the coordinates of the point s for which we want to do the mapping Can be scalar or array KEYWORD PARAMETERS: DOUBLE: use double precision to perform the computation OUTPUTS: 2 n array: the new coodinates xout yout of the xin yin point s after mapping If xin is a scalar then n is equal to the number of elements of x0 If xin is an array then n is equal to the number of elements of xin If xin and yin are omited square2quadrilateral returns the matrix A which is used for the inverse transformation COMMON BLOCKS:none SIDE EFFECTS: RESTRICTIONS: I think degenerated quadrilateral e g flat of twisted is not work This has to be tested EXAMPLE: IDL splot 0 5 0 3 nodata xstyle 1 ystyle 1 IDL tracegrille findgen 11 1 findgen 11 1 color indgen 12 20 IDL xin findgen 11 1 replicate 1 11 IDL yin replicate 1 11 findgen 11 1 IDL out square2quadrilateral 2 1 3 0 5 1 2 3 xin yin IDL tracegrille reform out 0 11 11 reform out 1 11 11 color indgen 12 20 MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr August 2003 Based on Digital Image Warping by G Wolberg IEEE Computer Society Press Los Alamitos California Chapter 3 see p 52 56 FUNCTION square2quadrilateral x0in y0in x1in y1in x2in y2in x3in y3in xxin yyin Warning wrong definition of x2 y2 and x3 y3 at the bottom of page 54 of Wolberg s book see figure 3 7 page 56 for the good definition IF keyword_set double THEN BEGIN x0 double x0in x1 double x1in x2 double x2in x3 double x3in y0 double y0in y1 double y1in y2 double y2in y3 double y3in IF arg_present xxin THEN BEGIN xin double xxin yin double yyin ENDIF ENDIF ELSE BEGIN x0 float x0in x1 float x1in x2 float x2in x3 float x3in y0 float y0in y1 float y1in y2 float y2in y3 float y3in IF arg_present xxin THEN BEGIN xin float xxin yin float yyin ENDIF ENDELSE IF keyword_set double THEN a dlbarr 8 n_elements x0 ELSE a fltarr 8 n_elements x0 delx3 x0 x1 x2 x3 dely3 y0 y1 y2 y3 affinemap where delx3 EQ 0 AND dely3 EQ 0 IF affinemap 0 NE 1 THEN BEGIN xx0 x0 affinemap xx1 x1 affinemap xx2 x2 affinemap yy0 y0 affinemap yy1 y1 affinemap yy2 y2 affinemap a 0 affinemap xx1 xx0 a 1 affinemap xx2 xx1 a 2 affinemap xx0 a 3 affinemap yy1 yy0 a 4 affinemap yy2 yy1 a 5 affinemap yy0 a 6 affinemap 0 a 7 affinemap 0 ENDIF projectivemap where delx3 NE 0 OR dely3 NE 0 IF projectivemap 0 NE 1 THEN BEGIN xx0 x0 projectivemap xx1 x1 projectivemap xx2 x2 projectivemap xx3 x3 projectivemap yy0 y0 projectivemap yy1 y1 projectivemap yy2 y2 projectivemap yy3 y3 projectivemap delx1 xx1 xx2 dely1 yy1 yy2 delx2 xx3 xx2 dely2 yy3 yy2 delx3 delx3 projectivemap dely3 dely3 projectivemap div delx1 dely2 dely1 delx2 zero where div EQ 0 IF zero 0 NE 1 THEN BEGIN stop ENDIF a13 delx3 dely2 dely3 delx2 div a23 delx1 dely3 dely1 delx3 div a 0 projectivemap xx1 xx0 a13 xx1 a 1 projectivemap xx3 xx0 a23 xx3 a 2 projectivemap xx0 a 3 projectivemap yy1 yy0 a13 yy1 a 4 projectivemap yy3 yy0 a23 yy3 a 5 projectivemap yy0 a 6 projectivemap a13 a 7 projectivemap a23 ENDIF IF NOT arg_present xxin THEN return a IF n_elements xin EQ 1 THEN BEGIN xin replicate xin n_elements x0 yin replicate yin n_elements x0 ENDIF IF keyword_set double THEN res dblarr 2 n_elements xin ELSE res fltarr 2 n_elements xin IF n_elements x0 EQ 1 THEN BEGIN div a 6 xin a 7 yin 1 zero where div EQ 0 IF zero 0 NE 1 THEN BEGIN stop ENDIF res 0 a 0 xin a 1 yin a 2 div res 1 a 3 xin a 4 yin a 5 div ENDIF ELSE BEGIN div a 6 xin a 7 yin 1 zero where div EQ 0 IF zero 0 NE 1 THEN BEGIN stop ENDIF res 0 a 0 xin a 1 yin a 2 div res 1 a 3 xin a 4 yin a 5 div ENDELSE RETURN res END");54 a[52] = new Array("./Interpolation/testinterp.html", "testinterp.pro", "", " PRO testinterp method bilinear method imoms3 jpia 300L jpja 200L torg findgen jpia jpja xorg 20 d 360 d jpia dindgen jpia yorg 89 d 178 d jpja 1 dindgen jpja jpio 400L jpjo 150L xnew 0 d 360 d jpio dindgen jpio ynew 89 5d 179 d jpjo 1 dindgen jpjo outnorth where ynew GT yorg jpja 2 noutn outsouth where ynew LT yorg 1 nouts t2 fromreg method torg xorg yorg xnew ynew t3 fromreg method reverse torg 2 xorg reverse yorg xnew ynew IF array_equal t2 t3 EQ 0 THEN stop ELSE print ok1 xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift xorg2 0: xshift 1 xorg2 0: xshift 1 360 IF array_equal sort xorg2 lindgen n_elements xorg2 EQ 0 THEN stop t3 fromreg method torg2 xorg2 yorg xnew ynew IF array_equal t2 t3 EQ 0 THEN stop ELSE print ok2 xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift xorg2 0: xshift 1 xorg2 0: xshift 1 360 IF array_equal sort xorg2 lindgen n_elements xorg2 EQ 0 THEN stop t3 fromreg method reverse torg2 2 xorg2 reverse yorg xnew ynew IF array_equal t2 t3 EQ 0 THEN stop ELSE print ok3 xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift t3 fromreg method torg2 xorg2 yorg xnew ynew IF array_equal t2 t3 EQ 0 THEN stop ELSE print ok4 xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift t3 fromreg method reverse torg2 2 xorg2 reverse yorg xnew ynew IF array_equal t2 t3 EQ 0 THEN stop ELSE print ok5 t3 fromreg method torg xorg yorg xnew ynew nonorthernline IF array_equal t2 0:jpjo 1 noutn t3 0:jpjo 1 noutn EQ 0 THEN stop ELSE print ok6 FOR i 1 noutn 1 DO if array_equal t3 jpjo 1 t3 jpjo 1 i EQ 0 THEN stop ELSE print ok7 i t3 fromreg method torg xorg yorg xnew ynew nosouthernline IF array_equal t2 nouts: t3 nouts: EQ 0 THEN stop ELSE print ok8 FOR i 1 nouts 1 DO if array_equal t3 0 t3 i EQ 0 THEN stop ELSE print ok9 i t3 fromreg method reverse torg 2 xorg reverse yorg xnew ynew nonorthernline IF array_equal t2 0:jpjo 1 noutn t3 0:jpjo 1 noutn EQ 0 THEN stop ELSE print ok10 FOR i 1 noutn 1 DO if array_equal t3 jpjo 1 t3 jpjo 1 i EQ 0 THEN stop ELSE print ok11 i t3 fromreg method reverse torg 2 xorg reverse yorg xnew ynew nosouthernline IF array_equal t2 nouts: t3 nouts: EQ 0 THEN stop ELSE print ok12 FOR i 1 nouts 1 DO if array_equal t3 0 t3 i EQ 0 THEN stop ELSE print ok13 i xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift xorg2 0: xshift 1 xorg2 0: xshift 1 360 IF array_equal sort xorg2 lindgen n_elements xorg2 EQ 0 THEN stop t3 fromreg method torg2 xorg2 yorg xnew ynew nonorthernline IF array_equal t2 0:jpjo 1 noutn t3 0:jpjo 1 noutn EQ 0 THEN stop ELSE print ok14 FOR i 1 noutn 1 DO if array_equal t3 jpjo 1 t3 jpjo 1 i EQ 0 THEN stop ELSE print ok15 i xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift xorg2 0: xshift 1 xorg2 0: xshift 1 360 IF array_equal sort xorg2 lindgen n_elements xorg2 EQ 0 THEN stop t3 fromreg method torg2 xorg2 yorg xnew ynew nosouthernline IF array_equal t2 nouts: t3 nouts: EQ 0 THEN stop ELSE print ok16 FOR i 1 nouts 1 DO if array_equal t3 0 t3 i EQ 0 THEN stop ELSE print ok17 i xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift xorg2 0: xshift 1 xorg2 0: xshift 1 360 IF array_equal sort xorg2 lindgen n_elements xorg2 EQ 0 THEN stop t3 fromreg method reverse torg2 2 xorg2 reverse yorg xnew ynew nonorthernline IF array_equal t2 0:jpjo 1 noutn t3 0:jpjo 1 noutn EQ 0 THEN stop ELSE print ok18 FOR i 1 noutn 1 DO if array_equal t3 jpjo 1 t3 jpjo 1 i EQ 0 THEN stop ELSE print ok19 i xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift xorg2 0: xshift 1 xorg2 0: xshift 1 360 IF array_equal sort xorg2 lindgen n_elements xorg2 EQ 0 THEN stop t3 fromreg method reverse torg2 2 xorg2 reverse yorg xnew ynew nosouthernline IF array_equal t2 nouts: t3 nouts: EQ 0 THEN stop ELSE print ok20 FOR i 1 nouts 1 DO if array_equal t3 0 t3 i EQ 0 THEN stop ELSE print ok21 i return end");34 a[32] = new Array("./Interpolation/angle.html", "angle.pro", "", " file_comments north stereographic polar projection keyword DOUBLE use double precision default is float returns gsinu gcosu : sinus and cosinus of the angle gsinv gcosv between north south direction gsint gcost and the j direction of the mesh restrictions to compute the lateral boundary conditions we assume that: 1 the first line is similar to the second line gcosu 0 gcosu 1 gsinu 0 gsinu 1 2 the grid follows OPA x periodicity rule first column is equal to the next to last column gcosv 0 gcosv jpj 2 gsinv 0 gsinv jpj 2 history Original : 96 07 O Marti 98 06 G Madec Feb 2005: IDL adaptation S Masson FUNCTION fsnspp plam pphi DOUBLE double IF keyword_set double THEN BEGIN a 2 d tan dpi 4 d dpi 180 d pphi 2 d x cos dpi 180 d plam a y sin dpi 180 d plam a ENDIF ELSE BEGIN a 2 tan pi 4 pi 180 float pphi 2 x cos pi 180 float plam a y sin pi 180 float plam a ENDELSE RETURN x:x y:y END file_comments Compute angles between grid lines and direction of the North fom angle F v 2 2 in OPA8 2 param fileocemesh in required a netcdf file that contains at least : glamu gphiu: longitudes and latitudes at U points glamv gphiv: longitudes and latitudes at V points glamf gphif: longitudes and latitudes at F points keyword IODIRECTORY the directory path where is located fileocemesh keyword DOUBLE use double precision default is float PRO angle fileocemesh gcosu gsinu gcosv gsinv gcost gsint IODIRECTORY iodirectory DOUBLE double 0 read oceanic grid parameters IF keyword_set IODIRECTORY THEN BEGIN IF strpos iodirectory reverse_search NE strlen iodirectory 1 THEN iodirectory iodirectory ENDIF ELSE iodirectory fileoce iodirectory fileocemesh fileoce findfile fileoce count okfile IF okfile NE 1 THEN BEGIN print the file fileoce is not found we stop stop ENDIF cdfido ncdf_open fileoce 0 ncdf_varget cdfido glamt glamt ncdf_varget cdfido glamu glamu ncdf_varget cdfido glamv glamv ncdf_varget cdfido glamf glamf ncdf_varget cdfido gphit gphit ncdf_varget cdfido gphiu gphiu ncdf_varget cdfido gphiv gphiv ncdf_varget cdfido gphif gphif ncdf_close cdfido glamt reform glamt over glamu reform glamu over glamv reform glamv over glamf reform glamf over gphit reform gphit over gphiu reform gphiu over gphiv reform gphiv over gphif reform gphif over jpj size glamf dimension 1 I Compute the cosinus and sinus computation done on the north stereographic polar plan north pole direction modulous at t point znpt fsnspp glamt gphit DOUBLE double glamt 1 gphit 1 free memory znpt x znpt x znpt y znpt y znnpt znpt x znpt x znpt y znpt y north pole direction modulous at u point znpu fsnspp glamu gphiu DOUBLE double glamu 1 gphiu 1 free memory znpu x znpu x znpu y znpu y znnpu znpu x znpu x znpu y znpu y north pole direction modulous at v point znpv fsnspp glamv gphiv DOUBLE double znpv00 znpv znpv01 fsnspp shift glamv 0 1 shift gphiv 0 1 DOUBLE double glamv 1 gphiv 1 free memory znpv x znpv x znpv y znpv y znnpv znpv x znpv x znpv y znpv y f point znpf00 fsnspp glamf gphif DOUBLE double znpf01 fsnspp shift glamf 0 1 shift gphif 0 1 DOUBLE double znpf10 fsnspp shift glamf 1 0 shift gphif 1 0 DOUBLE double glamf 1 gphif 1 free memory j direction: v point segment direction t point zxvvt znpv00 x znpv01 x zyvvt znpv00 y znpv01 y zmnpvt sqrt temporary znnpt zxvvt zxvvt zyvvt zyvvt znpv00 1 free memory znpv01 1 free memory IF keyword_set double THEN zmnpvt 1 e 14 zmnpvt ELSE zmnpvt 1 e 6 zmnpvt j direction: f point segment direction u point zxffu znpf00 x znpf01 x zyffu znpf00 y znpf01 y zmnpfu sqrt temporary znnpu zxffu zxffu zyffu zyffu znpf01 1 free memory IF keyword_set double THEN zmnpfu 1 e 14 zmnpfu ELSE zmnpfu 1 e 6 zmnpfu i direction: f point segment direction v point zxffv znpf00 x znpf10 x zyffv znpf00 y znpf10 y znpf00 1 znpf10 1 free memory zmnpfv sqrt temporary znnpv zxffv zxffv zyffv zyffv IF keyword_set double THEN zmnpfv 1 e 14 zmnpfv ELSE zmnpfv 1 e 6 zmnpfv cosinus and sinus using scalar and vectorial products gsint znpt x zyvvt znpt y zxvvt zmnpvt gcost znpt x zxvvt znpt y zyvvt zmnpvt cosinus and sinus using scalar and vectorial products gsinu znpu x zyffu znpu y zxffu zmnpfu gcosu znpu x zxffu znpu y zyffu zmnpfu cosinus and sinus using scalar and vectorial products caution rotation of 90 degres gsinv znpv x zxffv znpv y zyffv zmnpfv gcosv znpv x zyffv znpv y zxffv zmnpfv II Geographic mesh bad where abs glamf shift glamf 0 1 LT 1 e 8 IF bad 0 NE 1 THEN BEGIN gcosu bad 1 gsinu bad 0 ENDIF bad where abs gphif shift gphif 1 0 LT 1 e 8 IF bad 0 NE 1 THEN BEGIN gcosv bad 1 gsinv bad 0 ENDIF III Lateral boundary conditions gcost 0 gcost 1 gsint 0 gsint 1 gcosu 0 gcosu 1 gsinu 0 gsinu 1 gcosv 0 gcosv jpj 2 gsinv 0 gsinv jpj 2 RETURN END"); 35 a[33] = new Array("./Interpolation/clickincell.html", "clickincell.pro", "", " file_comments click on a map and find in which cell the click was categories finding where is a point on a grid examples res clickincell Click with the left button to select a cell Clicking one more time in the same cell remove the cell from the selection Click on the right button to quit keyword CELLTYPE T W U V or F This this the type of point that is located in the center of the cell which the click is located default is T type of cell with corner defined by F points keyword DRAWCELL to draw the cell in which we clicked keyword COLOR the color used to draw the cells Clicking one more time in the same cell will draw the cell with the white color keyword ORIGINAL to get the position of the cell regarding the original grid with no key_shift ixminmesh iyminmesh keyword IJ see outpus keyword _EXTRA to pass extra keywords to inquad and plot when drawcell returns the index of the selected cells regarding to the grid which is in memory in the variable of the common If ij keyword is activated give 2D array 2 n which are the i j position of the n selected cells uses common pro examples IDL plt findgen jpi jpj nodata map 90 0 0 ortho IDL print clickincell draw color 150 xy history Sebastien Masson smasson lodyc jussieu fr August 2003 FUNCTION clickincell CELLTYPE celltype DRAWCELL drawcell COLOR color ORIGINAL original IJ ij _EXTRA extra common initialization cellnum 1L selected 0 Cell list get the grid parameter according to celltype oldgrid vargrid IF NOT keyword_set celltype THEN celltype T CASE strupcase celltype OF T :vargrid F W :vargrid F U :vargrid V V :vargrid U F :vargrid T ENDCASE grille 1 glam gphi 1 nx ny nz firstx firsty firstz lastx lasty lastz vargrid oldgrid define the corner of the cells in the clockwise direction IF keyword_set key_periodic AND nx EQ jpi THEN BEGIN x1 glam 0:ny 2 y1 gphi 0:ny 2 x2 glam 1:ny 1 y2 gphi 1:ny 1 x3 shift glam 1:ny 1 1 0 y3 shift gphi 1:ny 1 1 0 x4 shift glam 0:ny 2 1 0 y4 shift gphi 0:ny 2 1 0 ENDIF ELSE BEGIN x1 glam 0:nx 2 0:ny 2 y1 gphi 0:nx 2 0:ny 2 x2 glam 0:nx 2 1:ny 1 y2 gphi 0:nx 2 1:ny 1 x3 glam 1:nx 1 1:ny 1 y3 gphi 1:nx 1 1:ny 1 x4 glam 1:nx 1 0:ny 2 y4 gphi 1:nx 1 0:ny 2 ENDELSE glam 1 free memory gphi 1 free memory get mousse position on the reference map cursor x y data up while mouse button ne 4 do BEGIN IF finite x finite x EQ 0 THEN GOTO outwhile case mouse button of 1:BEGIN What is the longitude WHILE x GT x range 1 DO x x 360 WHILE x LT x range 0 DO x x 360 IF x GT x range 1 THEN GOTO outwhile IF y GT y range 1 THEN GOTO outwhile IF y LT y range 0 THEN GOTO outwhile cell inquad x y x1 y1 x2 y2 x3 y3 x4 y4 onsphere _extra extra IF cell 0 EQ 1 OR n_elements cell GT 1 THEN GOTO outwhile cell cell 0 already where cellnum EQ cell 0 IF already EQ 1 THEN BEGIN cellnum cellnum cell selected selected 1 already n_elements selected 1 ENDIF ELSE selected already 1 selected already IF keyword_set drawcell THEN BEGIN oplot x1 cell x2 cell x3 cell x4 cell x1 cell y1 cell y2 cell y3 cell y4 cell y1 cell color color selected already d n_colors 255 1 selected already _extra extra ENDIF END 2: middle button ELSE: ENDCASE get mousse position on the reference map outwhile: cursor x y data up ENDWHILE good where selected NE 0 IF good 0 EQ 1 THEN RETURN 1 cellnum cellnum good yy cellnum nx 1 key_periodic nx EQ jpi xx cellnum MOD nx 1 key_periodic nx EQ jpi CASE strupcase celltype OF T :BEGIN xx xx firstx 1 yy yy firsty 1 END W :BEGIN xx xx firstx 1 yy yy firsty 1 END U :BEGIN xx xx firstx yy yy firsty 1 END V :BEGIN xx xx firstx 1 yy yy firsty END F :BEGIN xx xx firstx yy yy firsty END ENDCASE bad where xx GE jpi IF bad 0 NE 1 THEN BEGIN xx bad xx bad jpi yy bad yy bad 1 ENDIF bad where yy GE jpj IF bad 0 NE 1 THEN stop IF keyword_set original THEN BEGIN xx xx key_shift bad where xx LT 0 IF bad 0 NE 1 THEN xx bad xx bad jpi xx xx MOD jpi xx xx ixminmesh yy yy iyminmesh ENDIF ncell n_elements xx IF keyword_set ij THEN RETURN reform xx 1 ncell over reform yy 1 ncell over IF keyword_set original THEN RETURN xx jpiglo yy ELSE RETURN xx jpi yy END "); 36 a[34] = new Array("./Interpolation/compute_fromreg_bilinear_weigaddr.html", "compute_fromreg_bilinear_weigaddr.pro", "", " file_comments compute the weight and address neede to interpolate data from a regular grid to any grid using the bilinear method categories interpolation param alonin in required longitudeof the input data param alatin in required latitude of the input data param olonin in required longitude of the output data param olat in required latitude of the output data keyword NONORTHERNLINE activate if you don t whant to take into account the northen line of the input data when perfoming the keyword NOSOUTHERNLINE activate if you don t whant to take into account the southern line of the input data when perfoming the interpolation returns weig addr: 2D arrays weig and addr are the weight and addresses used to perform the interpolation: dataout total weig datain addr 1 dataout reform dataout jpio jpjo over restrictions the input grid must be a regular grid defined as a grid for which each lontitudes lines have the same latitude and each latitudes columns have the same longitude We supposed the data are located on a sphere with a periodicity along the longitude points located out of the southern and northern boundaries are interpolated using a linear interpolation only along the longitudinal direction history November 2005: Sebastien Masson smasson lodyc jussieu fr PRO compute_fromreg_bilinear_weigaddr alonin alatin olonin olat weig addr NONORTHERNLINE nonorthernline NOSOUTHERNLINE nosouthernline compile_opt strictarr strictarrsubs alon alonin alat alatin olon olonin jpia n_elements alon jpja n_elements alat jpio size olon dimensions 0 jpjo size olon dimensions 1 alon minalon min alon max maxalon IF maxalon minalon GE 360 THEN stop alon must be monotonically increasing IF array_equal sort alon lindgen jpia NE 1 THEN BEGIN shiftx where alon EQ min alon 0 alon shift alon shiftx IF array_equal sort alon lindgen jpia NE 1 THEN stop ENDIF ELSE shiftx 0 for longitude periodic bondary condition we add the fist column on the right side of the array and alon alon alon 0 360 jpia jpia 1L alat revy alat 0 GT alat 1 IF revy THEN alat reverse alat alat must be monotonically increasing IF array_equal sort alat lindgen jpja NE 1 THEN stop if keyword_set nonorthernline then BEGIN jpja jpja 1L alat alat 0: jpja 1L ENDIF if keyword_set nosouthernline then BEGIN alat alat 1: jpja 1L jpja jpja 1L ENDIF olon between minalon et minalon 360 out where olon LT minalon WHILE out 0 NE 1 DO BEGIN olon out olon out 360 out where olon LT minalon ENDWHILE out where olon GE minalon 360 WHILE out 0 NE 1 DO BEGIN olon out olon out 360 out where olon GE minalon 360 ENDWHILE make sure that all values of olon are located within values of alon IF min olon max ma LT minalon THEN stop IF ma GE minalon 360 THEN stop we want to do biliear interpolation for each ocean point we must find in which atm cell it is located if the ocean point is out of the atm grid we use closest neighbor interpolation for each T point of oce grid we find in which armospheric cell it is located As the atmospheric grid is regular we can use inrecgrid instead of inquad pos inrecgrid olon olat alon 0:jpia 2L alat 0:jpja 2L checkout alon jpia 1L alat jpja 1L output2d checks for longitude each ocean points must be located in atm cell IF where pos 0 EQ 1 0 NE 1 THEN stop no ocean point should be located westward of the left bondary of the atm cell in which it is supposed to be located IF total olon LT alon pos 0 NE 0 THEN stop no ocean point should be located eastward of the right bondary of the atm cell in which it is supposed to be located IF total olon GT alon pos 0 1 NE 0 THEN stop we use bilinear interpolation we change the coordinates of each ocean points to fit into a rectangle defined by: y2 y1 x1 x2 X x x1 x2 x1 Y y y1 y2 y1 indx pos 0 indy temporary pos 1 points located out of the atmospheric grid too much northward or southward bad where indy EQ 1 indy 0 indy IF max indx GT jpia 2 THEN stop checks IF max indy GT jpja 2 THEN stop checks x coordinates of the atm cell x1 alon indx x2 alon indx 1 new x coordinates of the ocean points in each cell divi temporary x2 x1 glamnew olon x1 temporary divi x1 1 free memory olon 1 free memory y coordinates of the atm cell y1 alat indy y2 alat indy 1 new y coordinates of the ocean points in each cell divi temporary y2 y1 zero where divi EQ 0 IF zero 0 NE 1 THEN divi zero 1 gphinew olat y1 temporary divi y1 1 free memory checks IF min glamnew LT 0 THEN stop IF max glamnew GT 1 THEN stop weight and address array used for bilinear interpolation xaddr lonarr 4 jpio jpjo xaddr 0 indx xaddr 1 indx 1L xaddr 2 indx 1L xaddr 3 indx yaddr lonarr 4 jpio jpjo yaddr 0 indy yaddr 1 indy yaddr 2 indy 1L yaddr 3 indy 1L compute the weight for the bilinear interpolation weig fltarr 4 jpio jpjo weig 0 1 glamnew 1 gphinew weig 1 glamnew 1 gphinew weig 2 glamnew gphinew weig 3 1 glamnew gphinew free memory gphinew 1 IF bad 0 EQ 1 THEN glamnew 1 ELSE glamnew temporary glamnew bad we work now on the bad points linear interpolation only along the longitudinal direction IF bad 0 NE 1 THEN BEGIN ybad olat bad the ocean points that are not located into an atm cell should be located northward of the northern boudary of the atm grid or southward of the southern boudary of the atm grid IF total ybad GE min alat AND ybad LE max alat GE 1 THEN stop weig 0 bad 1 glamnew weig 1 bad temporary glamnew weig 2 bad 0 weig 3 bad 0 south where ybad LT alat 0 IF south 0 NE 1 THEN yaddr bad temporary south 0L north where ybad GT alat jpja 1 IF north 0 NE 1 THEN yaddr bad temporary north 0L ybad 1 bad 1 free memory ENDIF check totalweight 1 totalweig abs 1 total weig 1 IF where temporary totalweig GE 1 e 5 0 NE 1 THEN stop come back to the original atm grid without longitudinal overlap jpia jpia 1L xaddr temporary xaddr MOD jpia take into account shiftx if needed IF shiftx NE 0 THEN xaddr temporary xaddr shiftx MOD jpia take into account nosouthernline and nonorthernline if keyword_set nosouthernline then BEGIN yaddr temporary yaddr 1L jpja jpja 1L ENDIF if keyword_set nonorthernline then jpja jpja 1L take into account revy if needed IF revy EQ 1 THEN yaddr jpja 1L temporary yaddr addr temporary yaddr jpia temporary xaddr return end "); 37 a[35] = new Array("./Interpolation/compute_fromreg_imoms3_weigaddr.html", "compute_fromreg_imoms3_weigaddr.pro", "", " file_comments compute the weight and address neede to interpolate data from a regular grid to any grid using the imoms3 method categories interpolation PRO compute_fromreg_imoms3_weigaddr alonin alatin olonin olat weig addr param alonin in required longitude of the input data param alatin in required latitude of the input data param olonin in required longitude of the output data param olat in required latitude of the output data keyword NONORTHERNLINE and NOSOUTHERNLINE activate if you don t whant to take into account the northen southern line of the input data when perfoming the interpolation returns weig addr: 2D arrays weig and addr are the weight and addresses used to perform the interpolation: dataout total weig datain addr 1 dataout reform dataout jpio jpjo over restrictions the input grid must be a regular rectangular grid defined as a grid for which each lontitudes lines have the same latitude and each latitudes columns have the same longitude We supposed the data are located on a sphere with a periodicity along the longitude points located between the first last 2 lines are interpolated using a imoms3 interpolation along the longitudinal direction and linear interpolation along the latitudinal direction points located out of the southern and northern boundaries are interpolated using a imoms3 interpolation only along the longitudinal direction history November 2005: Sebastien Masson smasson lodyc jussieu fr March 2006: works for rectangular grids PRO compute_fromreg_imoms3_weigaddr alonin alatin olonin olat weig addr NONORTHERNLINE nonorthernline NOSOUTHERNLINE nosouthernline compile_opt strictarr strictarrsubs alon alonin alat alatin olon olonin jpia n_elements alon jpja n_elements alat jpio size olon dimensions 0 jpjo size olon dimensions 1 alon minalon min alon max maxalon IF maxalon minalon GE 360 THEN stop alon must be monotonically increasing IF array_equal sort alon lindgen jpia NE 1 THEN BEGIN shiftx where alon EQ min alon 0 alon shift alon shiftx IF array_equal sort alon lindgen jpia NE 1 THEN stop ENDIF ELSE shiftx 0 alon is it regularly spaced step alon shift alon 1 step 0 step 0 360 IF total step step 0 GE 1 e 6 NE 0 THEN noregx 1 we extend the longitude range of alon easy interpolation even near minalon et maxalon toadd 10 jpia 360 1 alon alon jpia toadd:jpia 1 360 alon alon 0:toadd 1 360 jpia jpia 2 toadd alat revy alat 0 GT alat 1 IF revy THEN alat reverse alat alat must be monotonically increasing IF array_equal sort alat lindgen jpja NE 1 THEN stop alat is it regularly spaced step alat shift alat 1 step step 1:jpja 1L IF total step step 0 GE 1 e 6 NE 0 THEN noregy 1 if keyword_set nonorthernline then BEGIN jpja jpja 1L alat alat 0: jpja 1L ENDIF if keyword_set nosouthernline then BEGIN alat alat 1: jpja 1L jpja jpja 1L ENDIF olon between minalon et minalon 360 out where olon LT minalon WHILE out 0 NE 1 DO BEGIN olon out olon out 360 out where olon LT minalon ENDWHILE out where olon GE minalon 360 WHILE out 0 NE 1 DO BEGIN olon out olon out 360 out where olon GE minalon 360 ENDWHILE make sure that all values of olon are located within values of alon IF min olon max ma LT minalon THEN stop IF ma GE minalon 360 THEN stop xaddr lonarr 16 jpio jpjo yaddr lonarr 16 jpio jpjo weig fltarr 16 jpio jpjo indexlon value_locate alon olon IF total alon indexlon GT olon NE 0 THEN stop IF total alon indexlon 1L LE olon NE 0 THEN stop IF where indexlon LE 1L 0 NE 1 THEN stop IF where indexlon GE jpia 3L 0 NE 1 THEN stop indexlat value_locate alat olat for the ocean points located below the atm line jpja 2 and above the line 1 for those points we can always find 16 neighbors imoms interpolation along longitude and latitude short where indexlat LT jpja 2L AND indexlat GE 1L ilon indexlon short ilat indexlat short IF NOT keyword_set noregy THEN BEGIN delta alat ilat 1L alat ilat IF max abs delta delta 0 GE 1 e 6 THEN stop delta delta 0 d0 alat ilat 1L olat short delta IF min d0 max ma LE 2 THEN stop IF ma GT 1 THEN stop wy0 imoms3 temporary d0 d1 alat ilat olat short delta IF min d1 max ma LE 1 THEN stop IF ma GT 0 THEN stop wy1 imoms3 temporary d1 d2 alat ilat 1L olat short delta IF min d2 max ma LE 0 THEN stop IF ma GT 1 THEN stop wy2 imoms3 temporary d2 d3 alat ilat 2L olat short delta IF min d3 max ma LE 1 THEN stop IF ma GT 2 THEN stop wy3 imoms3 temporary d3 ENDIF ELSE BEGIN nele n_elements short wy0 fltarr nele wy1 fltarr nele wy2 fltarr nele wy3 fltarr nele FOR i 0L nele 1 DO BEGIN IF i MOD 10000 EQ 0 THEN print i newlat spl_incr alat ilat i 1L:ilat i 2L 1 0 1 2 olat short i IF newlat LE 0 THEN stop IF newlat GT 1 THEN stop wy0 i imoms3 newlat 1 wy1 i imoms3 newlat wy2 i imoms3 1 newlat wy3 i imoms3 2 newlat ENDFOR ENDELSE mi min wy0 wy1 wy2 wy3 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop IF NOT keyword_set noregx THEN BEGIN delta alon ilon alon ilon 1L IF max abs delta delta 0 GE 1 e 6 THEN stop delta delta 0 d0 alon ilon 1L olon short delta IF min d0 max ma LE 2 THEN stop IF ma GT 1 THEN stop wx0 imoms3 temporary d0 d1 alon ilon olon short delta IF min d1 max ma LE 1 THEN stop IF ma GT 0 THEN stop wx1 imoms3 temporary d1 d2 alon ilon 1L olon short delta IF min d2 max ma LE 0 THEN stop IF ma GT 1 THEN stop wx2 imoms3 temporary d2 d3 alon ilon 2L olon short delta IF min d3 max ma LE 1 THEN stop IF ma GT 2 THEN stop wx3 imoms3 temporary d3 ENDIF ELSE BEGIN nele n_elements short wx0 fltarr nele wx1 fltarr nele wx2 fltarr nele wx3 fltarr nele FOR i 0L nele 1 DO BEGIN IF i MOD 10000 EQ 0 THEN print i newlon spl_incr alon ilon i 1L:ilon i 2L 1 0 1 2 olon short i IF newlon LE 0 THEN stop IF newlon GT 1 THEN stop wx0 i imoms3 newlon 1 wx1 i imoms3 newlon wx2 i imoms3 1 newlon wx3 i imoms3 2 newlon ENDFOR ENDELSE mi min wx0 wx1 wx2 wx3 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop line 0 xaddr 0 short ilon 1L xaddr 1 short ilon xaddr 2 short ilon 1L xaddr 3 short ilon 2L yaddr 0 short ilat 1L yaddr 1 short yaddr 0 short yaddr 2 short yaddr 0 short yaddr 3 short yaddr 0 short weig 0 short wx0 wy0 weig 1 short wx1 wy0 weig 2 short wx2 wy0 weig 3 short wx3 wy0 line 1 xaddr 4 short ilon 1L xaddr 5 short ilon xaddr 6 short ilon 1L xaddr 7 short ilon 2L yaddr 4 short ilat yaddr 5 short ilat yaddr 6 short ilat yaddr 7 short ilat weig 4 short wx0 wy1 weig 5 short wx1 wy1 weig 6 short wx2 wy1 weig 7 short wx3 wy1 line 2 xaddr 8 short ilon 1L xaddr 9 short ilon xaddr 10 short ilon 1L xaddr 11 short ilon 2L yaddr 8 short ilat 1L yaddr 9 short yaddr 8 short yaddr 10 short yaddr 8 short yaddr 11 short yaddr 8 short weig 8 short wx0 wy2 weig 9 short wx1 wy2 weig 10 short wx2 wy2 weig 11 short wx3 wy2 line 3 xaddr 12 short ilon 1L xaddr 13 short ilon xaddr 14 short ilon 1L xaddr 15 short ilon 2L yaddr 12 short ilat 2L yaddr 13 short yaddr 12 short yaddr 14 short yaddr 12 short yaddr 15 short yaddr 12 short weig 12 short wx0 wy3 weig 13 short wx1 wy3 weig 14 short wx2 wy3 weig 15 short wx3 wy3 mi min total weig short 1 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop for the ocean points located between the atm lines jpja 2 and jpja 1 or between the atm lines 0 and 1 linear interpolation between line 1 and line 2 short where indexlat EQ jpja 2L OR indexlat EQ 0 IF short 0 NE 1 THEN BEGIN ilon indexlon short ilat indexlat short delta alat ilat 1L alat ilat IF NOT keyword_set noregy THEN BEGIN IF max abs delta delta 0 GE 1 e 6 THEN stop delta delta 0 ENDIF d1 alat ilat olat short delta IF min d1 max ma LE 1 THEN stop IF ma GT 0 THEN stop wy1 1 temporary d1 d2 alat ilat 1L olat short delta IF min d2 max ma LE 0 THEN stop IF ma GT 1 THEN stop wy2 1 temporary d2 mi min wy1 wy2 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop but imoms3 along the longitude IF NOT keyword_set noregx THEN BEGIN delta alon ilon alon ilon 1L IF max abs delta delta 0 GE 1 e 6 THEN stop delta delta 0 d0 alon ilon 1L olon short delta IF min d0 max ma LE 2 THEN stop IF ma GT 1 THEN stop wx0 imoms3 temporary d0 d1 alon ilon olon short delta IF min d1 max ma LE 1 THEN stop IF ma GT 0 THEN stop wx1 imoms3 temporary d1 d2 alon ilon 1L olon short delta IF min d2 max ma LE 0 THEN stop IF ma GT 1 THEN stop wx2 imoms3 temporary d2 d3 alon ilon 2L olon short delta IF min d3 max ma LE 1 THEN stop IF ma GT 2 THEN stop wx3 imoms3 temporary d3 ENDIF ELSE BEGIN nele n_elements short wx0 fltarr nele wx1 fltarr nele wx2 fltarr nele wx3 fltarr nele FOR i 0L nele 1 DO BEGIN IF i MOD 10000 EQ 0 THEN print i newlon spl_incr alon ilon i 1L:ilon i 2L 1 0 1 2 olon short i IF newlon LE 0 THEN stop IF newlon GT 1 THEN stop wx0 i imoms3 newlon 1 wx1 i imoms3 newlon wx2 i imoms3 1 newlon wx3 i imoms3 2 newlon ENDFOR ENDELSE mi min wx0 wx1 wx2 wx3 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop line 1 xaddr 0 short ilon 1L xaddr 1 short ilon xaddr 2 short ilon 1L xaddr 3 short ilon 2L yaddr 0 short ilat yaddr 1 short ilat yaddr 2 short ilat yaddr 3 short ilat weig 0 short wx0 wy1 weig 1 short wx1 wy1 weig 2 short wx2 wy1 weig 3 short wx3 wy1 line 2 xaddr 4 short ilon 1L xaddr 5 short ilon xaddr 6 short ilon 1L xaddr 7 short ilon 2L yaddr 4 short ilat 1L yaddr 5 short yaddr 4 short yaddr 6 short yaddr 4 short yaddr 7 short yaddr 4 short weig 4 short wx0 wy2 weig 5 short wx1 wy2 weig 6 short wx2 wy2 weig 7 short wx3 wy2 mi min total weig short 1 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop ENDIF for the ocean points located below the line 0 Interpolation only along the longitude short where indexlat EQ 1 IF short 0 NE 1 THEN BEGIN ilon indexlon short IF NOT keyword_set noregx THEN BEGIN delta alon ilon alon ilon 1L IF max abs delta delta 0 GE 1 e 6 THEN stop delta delta 0 d0 alon ilon 1L olon short delta IF min d0 max ma LE 2 THEN stop IF ma GT 1 THEN stop wx0 imoms3 temporary d0 d1 alon ilon olon short delta IF min d1 max ma LE 1 THEN stop IF ma GT 0 THEN stop wx1 imoms3 temporary d1 d2 alon ilon 1L olon short delta IF min d2 max ma LE 0 THEN stop IF ma GT 1 THEN stop wx2 imoms3 temporary d2 d3 alon ilon 2L olon short delta IF min d3 max ma LE 1 THEN stop IF ma GT 2 THEN stop wx3 imoms3 temporary d3 ENDIF ELSE BEGIN nele n_elements short wx0 fltarr nele wx1 fltarr nele wx2 fltarr nele wx3 fltarr nele FOR i 0L nele 1 DO BEGIN IF i MOD 10000 EQ 0 THEN print i newlon spl_incr alon ilon i 1L:ilon i 2L 1 0 1 2 olon short i IF newlon LE 0 THEN stop IF newlon GT 1 THEN stop wx0 i imoms3 newlon 1 wx1 i imoms3 newlon wx2 i imoms3 1 newlon wx3 i imoms3 2 newlon ENDFOR ENDELSE mi min wx0 wx1 wx2 wx3 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop line 1 xaddr 0 short ilon 1L xaddr 1 short ilon xaddr 2 short ilon 1L xaddr 3 short ilon 2L yaddr 0:3 short 0 weig 0 short wx0 weig 1 short wx1 weig 2 short wx2 weig 3 short wx3 mi min total weig short 1 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop ENDIF for the ocean points located above jpia 1 Interpolation only along the longitude short where indexlat EQ jpja 1L IF short 0 NE 1 THEN BEGIN ilon indexlon short IF NOT keyword_set noregx THEN BEGIN delta alon ilon alon ilon 1L IF max abs delta delta 0 GE 1 e 6 THEN stop delta delta 0 d0 alon ilon 1L olon short delta IF min d0 max ma LE 2 THEN stop IF ma GT 1 THEN stop wx0 imoms3 temporary d0 d1 alon ilon olon short delta IF min d1 max ma LE 1 THEN stop IF ma GT 0 THEN stop wx1 imoms3 temporary d1 d2 alon ilon 1L olon short delta IF min d2 max ma LE 0 THEN stop IF ma GT 1 THEN stop wx2 imoms3 temporary d2 d3 alon ilon 2L olon short delta IF min d3 max ma LE 1 THEN stop IF ma GT 2 THEN stop wx3 imoms3 temporary d3 ENDIF ELSE BEGIN nele n_elements short wx0 fltarr nele wx1 fltarr nele wx2 fltarr nele wx3 fltarr nele FOR i 0L nele 1 DO BEGIN IF i MOD 10000 EQ 0 THEN print i newlon spl_incr alon ilon i 1L:ilon i 2L 1 0 1 2 olon short i IF newlon LE 0 THEN stop IF newlon GT 1 THEN stop wx0 i imoms3 newlon 1 wx1 i imoms3 newlon wx2 i imoms3 1 newlon wx3 i imoms3 2 newlon ENDFOR ENDELSE mi min wx0 wx1 wx2 wx3 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop line 1 xaddr 0 short ilon 1L xaddr 1 short ilon xaddr 2 short ilon 1L xaddr 3 short ilon 2L yaddr 0:3 short jpja 1L weig 0 short wx0 weig 1 short wx1 weig 2 short wx2 weig 3 short wx3 mi min total weig short 1 max ma IF abs mi 1 GE 1 e 6 THEN stop IF abs ma 1 GE 1 e 6 THEN stop ENDIF Come back to the original index of atm grid without longitudinal overlap xaddr temporary xaddr toadd jpia jpia 2 toadd make sure all values are ge 0 xaddr temporary xaddr jpia range the values between 0 and jpia 1 xaddr temporary xaddr mod jpia take into account shiftx if needed IF shiftx NE 0 THEN xaddr temporary xaddr shiftx MOD jpia take into account nosouthernline and nonorthernline if keyword_set nosouthernline then BEGIN yaddr temporary yaddr 1L jpja jpja 1L ENDIF if keyword_set nonorthernline then jpja jpja 1L take into account revy if needed IF revy EQ 1 THEN yaddr jpja 1L temporary yaddr addr temporary yaddr jpia temporary xaddr RETURN END"); 38 a[36] = new Array("./Interpolation/cutpar.html", "cutpar.pro", "", " file_comments cut p parallelogram s into p n 2 parallelograms categories basic work examples res cutpar x0 y0 x1 y1 x2 y2 x3 y3 n param x0 y0 in required 1d arrays of p elements giving the edge positions The edges must be given as in plot to traw the parallelogram see example param n in required each parallelogram will be cutted in n 2 pieces keyword endpoints see outputs keyword onsphere to specify that the points are located on a sphere In this case x and y corresponds to longitude and latitude in degrees returns defaut: 3d array 2 n 2 p giving the center position of each piece of the parallelograms endpoints: 3d array 2 n 1 2 p giving the edge positions of each piece of the parallelograms uses cutsegment pro examples x0 2 6 2 y0 0 2 6 x1 3 8 4 y1 4 4 6 x2 1 6 4 y2 5 6 8 x3 0 4 2 y3 1 4 8 n 4 splot 0 10 0 10 xstyle 1 ystyle 1 nodata for i 0 2 do oplot x0 i x1 i x2 i x3 i x0 i y0 i y1 i y2 i y3 i y0 i res cutpar x0 y0 x1 y1 x2 y2 x3 y3 n for i 0 2 do oplot res 0 i res 1 i color 20 10 i psym 1 thick 3 history S Masson smasson lodyc jussieu fr July 5th 2002 FUNCTION cutpar x0 y0 x1 y1 x2 y2 x3 y3 n endpoints endpoints onsphere onsphere is it a parallelogram eps 1e 4 IF total abs x0 x2 2 x1 x3 2 GE eps GT 0 OR total abs y0 y2 2 y1 y3 2 GE eps GT 0 THEN stop print NOT a parallelogram x0 npar npar n_elements x0 firstborder 2 n keyword_set endpoints npar firstborder cutsegment x0 y0 x1 y1 n endpoints endpoints onsphere onsphere thirdborder cutsegment x3 y3 x2 y2 n endpoints endpoints onsphere onsphere res 2 n keyword_set endpoints n keyword_set endpoints npar res cutsegment firstborder 0 firstborder 1 thirdborder 0 thirdborder 1 n endpoints endpoints onsphere onsphere free memory firstborder 1 thirdborder 1 reform the result res reform res 2 n keyword_set endpoints 2 npar overwrite RETURN res END"); 39 a[37] = new Array("./Interpolation/cutsegment.html", "cutsegment.pro", "", " file_comments cut p segments into p n equal parts categories basic work examples res cutsegment x0 y0 x1 y1 n param x0 y0 and x1 y1 in required 1d arrays of p elements the coordinates of the endpoints of the p segmements param n in required the number of pieces we want to cut each segment keyword endpoints see ouputs keyword onsphere to specify that the points are located on a sphere In this case x and y corresponds to longitude and latitude in degrees returns defaut: a 3d array 2 n p that gives the coordinates of the middle of the cutted segments if endpoints a 3d array 2 n 1 p that gives the coordinates of the endpoints of the cutted segments examples IDL x0 2 5 IDL y0 5 1 IDL x1 9 3 IDL y1 1 8 IDL res cutsegment x0 y0 x1 y1 10 IDL splot 0 10 0 10 xstyle 1 ystyle 1 nodata IDL oplot x0 0 x1 0 y0 0 y1 0 IDL oplot res 0 0 res 1 0 color 20 psym 1 thick 3 IDL oplot x0 1 x1 1 y0 1 y1 1 IDL oplot res 0 1 res 1 1 color 40 psym 1 thick 3 history S Masson smasson lodyc jussieu fr July 5th 2002 FUNCTION cutsegment x0 y0 x1 y1 n endpoints endpoints onsphere onsphere number of segment nseg n_elements x0 number of point to find on each segment n2find n keyword_set endpoints IF keyword_set onsphere THEN BEGIN save the inputs arrays x0in temporary x0 y0in temporary y0 x1in temporary x1 y1in temporary y1 sp_cood transpose x0in transpose y0in replicate 1 1 nseg rect_coord CV_COORD FROM_SPHERE temporary sp_cood TO_RECT DEGREES x0 rect_coord 0 y0 rect_coord 1 z0 rect_coord 2 rect_coord 1 free memory sp_cood transpose x1in transpose y1in replicate 1 1 nseg rect_coord CV_COORD FROM_SPHERE temporary sp_cood TO_RECT DEGREES x1 rect_coord 0 y1 rect_coord 1 z1 rect_coord 2 rect_coord 1 free memory ENDIF resx replicate 1 n2find x0 resx temporary resx 1 n findgen n2find 5 1 keyword_set endpoints x1 x0 resx temporary resx resy replicate 1 n2find y0 resy temporary resy 1 n findgen n2find 5 1 keyword_set endpoints y1 y0 resy temporary resy IF keyword_set onsphere THEN BEGIN resz replicate 1 n2find z0 resz temporary resz 1 n findgen n2find 5 1 keyword_set endpoints z1 z0 resz temporary resz rec_cood transpose temporary resx transpose temporary resy transpose temporary resz res CV_COORD FROM_RECT temporary rec_cood TO_SPHERE DEGREES restore the input arrays x0 temporary x0in y0 temporary y0in x1 temporary x1in y1 temporary y1in ENDIF ELSE res transpose temporary resx transpose temporary resy res reform res 0:1 2 n2find nseg overwrite RETURN res END"); 40 a[38] = new Array("./Interpolation/extrapolate.html", "extrapolate.pro", "", " file_comments extrapolate data zinput where maskinput eq 0 by filling step by step the coastline points with the mean value of the 8 neighbourgs FUNCTION extrapolate zinput maskinput nb_iteration x_periodic x_periodic MINVAL minval MAXVAL maxval compile_opt strictarr strictarrsubs check the number of iteration used in the extrapolation IF n_elements nb_iteration EQ 0 THEN nb_iteration 10 E20 IF nb_iteration EQ 0 THEN return zinput nx size zinput 1 ny size zinput 2 take care of the boundary conditions for the x direction we put 2 additional columns at the left and right side of the array for the y direction we put 2 additional lines at the bottom and top side of the array These changes allow us to use shift function without taking care of the x and y periodicity ztmp bytarr nx 2 ny 2 ztmp 1:nx 1:ny byte maskinput msk temporary ztmp ztmp replicate 1 e20 nx 2 ny 2 ztmp 1:nx 1:ny zinput if keyword_set x_periodic then begin ztmp 0 1:ny zinput nx 1 ztmp nx 1 1:ny zinput 0 ENDIF remove NaN points if there is some nan where finite ztmp EQ 0 cnt_nan IF cnt_nan NE 0 THEN ztmp temporary nan 1 e20 z temporary ztmp nx2 nx 2 ny2 ny 2 extrapolation sqrtinv 1 sqrt 2 cnt 1 When we look for the coast line we don t whant to select the borderlines of the array we force the value of the mask for those lines msk 0 1b msk nx 1 1b msk 0 1b msk ny 1 1b find the land points land where msk EQ 0 cnt_land WHILE cnt LE nb_iteration AND cnt_land NE 0 DO BEGIN find the coast line points Once the land points list has been found we change back the the mask values for the boundary conditions msk 0 0b msk nx 1 0b msk 0 0b msk ny 1 0b if keyword_set x_periodic then begin msk 0 msk nx msk nx 1 msk 1 endif we compute the weighted number of sea neighbourgs those 4 neighbours have a weight of 1: those 4 neighbours have a weight of 1 sqrt 2 : As we make sure that none of the land points are located on the border of the array we can compute the weight without shift faster weight msk land 1 msk land 1 msk land nx2 msk land nx2 sqrtinv msk land nx2 1 msk land nx2 1 msk land nx2 1 msk land nx2 1 list all the points that have sea neighbourgs ok where weight GT 0 the coastline points coast land ok their weighted number of sea neighbourgs weight weight temporary ok fill the coastine points z temporary z msk zcoast z 1 coast z 1 coast z nx2 coast z nx2 coast 1 sqrt 2 z nx2 1 coast z nx2 1 coast z nx2 1 coast z nx2 1 coast IF n_elements minval NE 0 THEN zcoast minval temporary zcoast IF n_elements maxval NE 0 THEN zcoast temporary zcoast we force the value of the mask for those lines msk 0 1b msk nx 1 1b msk 0 1b msk ny 1 1b find the land points land where msk EQ 0 cnt_land ENDWHILE we return the original size of the array return z 1:nx 1:ny END "); 41 a[39] = new Array("./Interpolation/fromreg.html", "fromreg.pro", "", " file_comments interpolate data from a regular rectangular grid to any grid 2 metods availables: bilinear and imoms3 A regular rectangular grid is defined as a grid for which each lontitudes lines have the same latitude and each latitudes columns have the same longitude categories interpolation examples dataout fromreg method datain lonin latin lonout latout param method in required a string defining the interpolation method must be bilinear or imoms3 param datain in required a 2D array the input data to interpolate param lonin latin in required longitude latitude of the input data optionals if WEIG and ADDR keywords used param lonout latout in required longitude latitude of the output data optionals if WEIG and ADDR keywords used keyword WEIG ADDR 2D arrays weig and addr are the weight and addresses used to perform the interpolation: dataout total weig datain addr 1 dataout reform dataout jpio jpjo over Those keywords can be set to named variables into which the values will be copied when the current routine exits Next they can be used to perform the interpolation whithout computing again those 2 parameters In that case lonin latin lonout and latout are not necessary keyword NONORTHERNLINE and NOSOUTHERNLINE activate if you don t whant to take into account the northen southern line of the input data when perfoming the interpolation returns 2D array: the interpolated data restrictions We supposed the data are located on a sphere with a periodicity along the longitude examples topa fromreg bilinear tncep xncep yncep glamt gphit or t1opa fromreg bilinear t1ncep xncep yncep glamt gphit WEIG a ADDR b help a b t2opa fromreg bilinear t2ncep xncep WEIG a ADDR b history November 2005: Sebastien Masson smasson lodyc jussieu fr FUNCTION fromreg method datain lonin latin lonout latout WEIG weig ADDR addr NONORTHERNLINE nonorthernline NOSOUTHERNLINE nosouthernline compile_opt strictarr strictarrsubs IF NOT keyword_set weig AND keyword_set addr THEN BEGIN atmospheric grid parameters alon lonin alat latin get_gridparams alon alat jpia jpja 1 double Oceanic grid parameters olon lonout olat latout get_gridparams olon olat jpio jpjo 2 double Compute weight and address CASE method OF bilinear :compute_fromreg_bilinear_weigaddr alon alat olon olat weig addr NONORTHERNLINE nonorthernline NOSOUTHERNLINE nosouthernline imoms3 : compute_fromreg_imoms3_weigaddr alon alat olon olat weig addr NONORTHERNLINE nonorthernline NOSOUTHERNLINE nosouthernline ELSE:BEGIN print unknown interpolation method we stop stop ENDELSE ENDCASE ENDIF dataout total weig datain addr 1 dataout reform dataout jpio jpjo over RETURN dataout END"); 42 a[40] = new Array("./Interpolation/get_gridparams.html", "get_gridparams.pro", "", " file_comments 1 extract from a NetCDF file the longitude latidude and their dimensions and make sure it is 1D or 2D arrays or 2 given longitude and latitude arrays get their dimensions and make sure they are 1D or 2D arrays categories interpolation examples 1 get_gridparams file lonname latname lon lat jpi jpj n_dimensions or 2 get_gridparams lon lat jpi jpj n_dimensions 1 param in1 in required the name of the netcdf file param in2 in required the name of the variable that contains the longitude in the NetCDF file param in3 in required the name of the variable that contains the latitude in the NetCDF file param in4 out the number of points in the longitudinal direction param in5 out the number of points in the latitudinal direction param in6 out the variable that will contain the longitudes param in7 out the variable that will contain the latitudes param in8 out 1 or 2 to specify if lon and lat should be 1D jpi or jpj or 2 param lon lat in required 1d or 2D arrays defining longitudes and latitudes Note that these arrays are also outputs and can therefore be modified param in1 out the variable that will contain the longitudes param in2 out the variable that will contain the latitudes param in3 out the number of points in the longitudinal direction param in4 out the number of points in the latitudinal direction param in5 out 1 or 2 to specify if lon and lat should be 1D jpi or jpj arrays or 2D arrays jpi jpj Note that of n_dimensions 1 then the grid must be regular each longitudes must be the same for all latitudes and each latitudes should be the sae for all longitudes examples 1 ncdf_get_gridparams coordinates_ORCA_R05 nc glamt gphit olon olat jpio jpjo 2 2 ncdf_get_gridparams olon olat jpio jpjo 2 history November 2005: Sebastien Masson smasson lodyc jussieu fr PRO get_gridparams in1 in2 in3 in4 in5 in6 in7 in8 DOUBLE double file lonname latname lon lat jpi jpj n_dimensions lon lat jpi jpj n_dimensions CASE n_params OF 8:BEGIN get longitude and latitude IF file_test in1 EQ 0 THEN BEGIN print file in1 does not exist stop ENDIF cdfido ncdf_open in1 ncdf_varget cdfido in2 lon ncdf_varget cdfido in3 lat ncdf_close cdfido n_dimensions in8 END 5:BEGIN lon temporary in1 lat temporary in2 n_dimensions in5 END ELSE:BEGIN print Bad nimber of input parameters stop end ENDCASE sizelon size lon sizelat size lat CASE 1 OF lon and lat are 1D arrays sizelon 0 EQ 1 AND sizelat 0 EQ 1:BEGIN get jpi and jpj jpi sizelon 1 jpj sizelat 1 make sure that lon and lat have the good number of dimensions CASE n_dimensions OF 1: 2:BEGIN make lon and lat 2D arrays lon temporary lon replicate 1 jpj lat replicate 1 jpi temporary lat END ELSE:stop ENDCASE END lon is 2D array and lat is 1D array sizelon 0 EQ 2 AND sizelat 0 EQ 1:BEGIN get jpi and jpj jpi sizelon 1 jpj sizelon 2 IF jpj NE n_elements lat THEN stop make sure that lon and lat have the good number of dimensions CASE n_dimensions OF 1:BEGIN IF array_equal lon lon 0 replicate 1 jpj NE 1 THEN BEGIN print Longitudes are not the same for all latitudes imposible to extract a 1D array of the longitudes stop ENDIF lon lon 0 END 2:lat replicate 1 jpi temporary lat ELSE:stop ENDCASE END lon is 1D array and lat is 2D array sizelon 0 EQ 1 AND sizelat 0 EQ 2:BEGIN get jpi and jpj jpi sizelat 1 jpj sizelat 2 IF jpi NE n_elements lon THEN stop make sure that lon and lat have the good number of dimensions CASE n_dimensions OF 1:BEGIN IF array_equal lat replicate 1 jpi lat 0 NE 1 THEN BEGIN print Latitudes are not the same for all longitudes imposible to extract a 1D array of the latitudes stop ENDIF lat reform lat 0 END 2:lon temporary lon replicate 1 jpj ELSE:stop ENDCASE END lon and lat are 2D arrays sizelon 0 EQ 2 AND sizelat 0 EQ 2:BEGIN get jpi and jpj IF array_equal sizelon 1:2 sizelat 1:2 NE 1 THEN stop jpi sizelon 1 jpj sizelon 2 make sure that lon and lat have the good number of dimensions CASE n_dimensions OF 1:BEGIN IF array_equal lon lon 0 replicate 1 jpj NE 1 THEN BEGIN print Longitudes are not the same for all latitudes imposible to extract a 1D array of the longitudes stop ENDIF lon lon 0 IF array_equal lat replicate 1 jpi reform lat 0 NE 1 THEN BEGIN print Latitudes are not the same for all longitudes imposible to extract a 1D array of the latitudes stop ENDIF lat reform lat 0 END 2: ELSE:stop ENDCASE END lon and lat are not 1D and or 2D arrays ELSE:stop ENDCASE double keyword if keyword_set double then BEGIN lon double temporary lon lat double temporary lat ENDIF give back the right outparameters CASE n_params OF 8:BEGIN in4 temporary lon in5 temporary lat in6 temporary jpi in7 temporary jpj END 5:BEGIN in1 temporary lon in2 temporary lat in3 temporary jpi in4 temporary jpj END ENDCASE return END"); 43 a[41] = new Array("./Interpolation/imoms3.html", "imoms3.pro", "", " FUNCTION imoms3 xin x abs xin y fltarr n_elements x test1 where x LT 1 IF test1 0 NE 1 THEN BEGIN xtmp x test1 y test1 0 5 xtmp xtmp xtmp xtmp xtmp 0 5 xtmp 1 ENDIF test1 where x LT 2 AND x GE 1 IF test1 0 NE 1 THEN BEGIN xtmp x test1 y test1 1 6 xtmp xtmp xtmp xtmp xtmp 11 6 xtmp 1 ENDIF RETURN y END"); 44 a[42] = new Array("./Interpolation/inquad.html", "inquad.pro", "", " file_comments to find if an x y point is in a quadrilateral x1 x2 x3 x4 categories grid manipulation examples res inquad x y x1 y1 x2 y2 x3 y3 x4 y4 param x y in required the coordinates of the point we want to know where it is Must be a scalar if onsphere activated else can be scalar or array param x1 y1 x2 y2 x3 y3 x4 y4 in required the coordinates of the quadrilateral given in the CLOCKWISE order Scalar or array keyword DOUBLE use double precision to perform the computation keyword ONSPHERE to specify that the quadilateral are on a sphere and that teir coordinates are longitude latitude coordinates In this case est west periodicity poles singularity and other pbs related to longitude latitude coordinates are managed automatically keyword ZOOMRADIUS :the zoom circle centred on the x y with a radius of zoomradius degree where we look for the the quadrilateral which contains the x y point used for the satellite projection when onsphere is activated Default is 4 and seems to be the minimum which can be used Can be increase if the cell size is larger than 5 degrees keyword NOPRINT to suppress the print messages returns a n element vector Where n is the number of elements of x res i j means that the point number i is located in the quadrilateral number j with 0 j n_elements x0 1 restrictions I think degenerated quadrilateral e g flat of twisted is not work This has to be tested examples x 1 1 2 6 7 3 y 1 1 3 3 4 7 x1 1 0 4 2 y1 1 1 4 8 x2 1 1 6 4 y2 1 5 6 8 x3 1 3 8 4 y3 1 4 4 6 x4 1 2 6 2 y4 1 0 2 6 splot 0 10 0 10 xstyle 1 ystyle 1 nodata for i 0 2 do oplot x4 i x1 i x2 i x3 i x4 i y4 i y1 i y2 i y3 i y4 i oplot x y color 20 psym 1 thick 2 print inquad x y x1 y1 x2 y2 x3 y3 x4 y4 On a sphere see clickincell pro history Sebastien Masson smasson lodyc jussieu fr August 2003 Based on Convert_clic_ij pro written by Gurvan Madec FUNCTION inquad x y x1 y1 x2 y2 x3 y3 x4 y4 ONSPHERE onsphere DOUBLE double ZOOMRADIUS zoomradius NOPRINT noprint NEWCOORD newcoord ntofind n_elements x nquad n_elements x2 IF keyword_set onsphere THEN BEGIN save the inputs parameters xin x yin y x1in x1 y1in y1 x2in x2 y2in y2 x3in x3 y3in y3 x4in x4 y4in y4 for map_set x x MOD 360 x1 x1 MOD 360 x2 x2 MOD 360 x3 x3 MOD 360 x4 x4 MOD 360 save map save map: map x: x y: y z: z p: p do a satellite projection IF NOT keyword_set zoomradius THEN zoomradius 4 map_set y 0 x 0 0 satellite sat_p 1 zoomradius 20 6371 229 0 0 noerase iso noborder use normal coordinates to reject cells which are out of the projection tmp convert_coord x y DATA TO_NORMAL DOUBLE double tmp1 convert_coord x1 y1 DATA TO_NORMAL DOUBLE double tmp2 convert_coord x2 y2 DATA TO_NORMAL DOUBLE double tmp3 convert_coord x3 y3 DATA TO_NORMAL DOUBLE double tmp4 convert_coord x4 y4 DATA TO_NORMAL DOUBLE double remove cell which have one corner with coordinates equal to NaN test finite tmp1 0 tmp1 1 tmp2 0 tmp2 1 tmp3 0 tmp3 1 tmp4 0 tmp4 1 good where temporary test EQ 1 IF good 0 EQ 1 THEN BEGIN IF NOT keyword_set noprint THEN print The point is out of the cells restore the input parameters x temporary xin y temporary yin x1 temporary x1in y1 temporary y1in x2 temporary x2in y2 temporary y2in x3 temporary x3in y3 temporary y3in x4 temporary x4in y4 temporary y4in restore old map map save map x save x y save y z save z p save p RETURN 1 ENDIF x tmp 0 y tmp 1 x1 tmp1 0 good y1 tmp1 1 good x2 tmp2 0 good y2 tmp2 1 good x3 tmp3 0 good y3 tmp3 1 good x4 tmp4 0 good y4 tmp4 1 good tmp1 1 tmp2 1 tmp3 1 tmp4 1 remove cells which are obviously bad test x1 GT x AND x2 GT x AND x3 GT x AND x4 GT x OR x1 LT x AND x2 LT x AND x3 LT x AND x4 LT x OR y1 GT y AND y2 GT y AND y3 GT y AND y4 GT y OR y1 LT y AND y2 LT y AND y3 LT y AND y4 LT y good2 where temporary test EQ 0 IF good2 0 EQ 1 THEN BEGIN IF NOT keyword_set noprint THEN print The point is out of the cells restore the input parameters x temporary xin y temporary yin x1 temporary x1in y1 temporary y1in x2 temporary x2in y2 temporary y2in x3 temporary x3in y3 temporary y3in x4 temporary x4in y4 temporary y4in restore old map map save map x save x y save y z save z p save p RETURN 1 ENDIF nquad n_elements good2 x1 x1 good2 y1 y1 good2 x2 x2 good2 y2 y2 good2 x3 x3 good2 y3 y3 good2 x4 x4 good2 y4 y4 good2 ENDIF the point is inside the quadilateral if test eq 1 with test equal to: test x x1 y2 y1 GE x2 x1 y y1 x x2 y3 y2 GT x3 x2 y y2 x x3 y4 y3 GT x4 x3 y y3 x x4 y1 y4 GE x1 x4 y y4 computation of test without any do loop for ntofind points x y and nquad quadilateral x1 x2 x3 x4 y1 y2 y3 y4 test dimensions are ntofind nquad column i of test corresponds to the intersection of point i with all quadirlateral row j of test corresponds to all the points localized in cell j test x x1 x replicate 1 nquad replicate 1 ntofind x1 y2 y1 replicate 1 ntofind y2 y1 GE x2 x1 GE replicate 1 ntofind x2 x1 y y1 y replicate 1 nquad replicate 1 ntofind y1 test temporary test x x2 x replicate 1 nquad replicate 1 ntofind x2 y3 y2 replicate 1 ntofind y3 y2 GE x3 x2 GE replicate 1 ntofind x3 x2 y y2 y replicate 1 nquad replicate 1 ntofind y2 test temporary test x x3 x replicate 1 nquad replicate 1 ntofind x3 y4 y3 replicate 1 ntofind y4 y3 GE x4 x3 GE replicate 1 ntofind x4 x3 y y3 y replicate 1 nquad replicate 1 ntofind y3 test temporary test x x4 x replicate 1 nquad replicate 1 ntofind x4 y1 y4 replicate 1 ntofind y1 y4 GE x1 x4 GE replicate 1 ntofind x1 x4 y y4 y replicate 1 nquad replicate 1 ntofind y4 check test if ntofind gt 1 if ntofind gt 1 each point must be localised in one uniq cell IF ntofind GT 1 THEN BEGIN each column of test must have only 1 position equal to one chtest total test 2 points out of the cells IF where chtest EQ 0 0 NE 1 THEN BEGIN IF NOT keyword_set noprint THEN print Points number strjoin strtrim where chtest EQ 0 1 are out of the grid stop ENDIF points in more than one cell IF where chtest GT 1 0 NE 1 THEN BEGIN IF NOT keyword_set noprint THEN print Points number strjoin strtrim where chtest GT 1 1 are in more than one cell stop ENDIF ENDIF find the points for which test eq 1 found where temporary test EQ 1 if ntofind eq 1 the point may be localised in more than one grid cell ou may also be out of the cells IF ntofind EQ 1 THEN BEGIN CASE 1 OF found 0 EQ 1:BEGIN IF NOT keyword_set noprint THEN print The point is out of the cells IF keyword_set onsphere THEN BEGIN restore old map map save map x save x y save y z save z p save p ENDIF return 1 END n_elements found GT ntofind:BEGIN IF NOT keyword_set noprint THEN print The point is in more than one cell END ELSE: ENDCASE ENDIF ELSE BEGIN if ntofind GT 1 found must be sorted i position of found this corresponds to one x y point forsort found MOD ntofind j position of found this corresponds to cell in which is one x y point found temporary found ntofind found must be sorted accordind to forsort found found sort forsort ENDELSE IF keyword_set onsphere THEN BEGIN IF arg_present newcoord THEN BEGIN newcoord x1 found y1 found x2 found y2 found x3 found y3 found x4 found y4 found x y ENDIF found good good2 found restore the input parameters x temporary xin y temporary yin x1 temporary x1in y1 temporary y1in x2 temporary x2in y2 temporary y2in x3 temporary x3in y3 temporary y3in x4 temporary x4in y4 temporary y4in restore old map map save map x save x y save y z save z p save p ENDIF RETURN found END"); 45 a[43] = new Array("./Interpolation/inrecgrid.html", "inrecgrid.pro", "", " file_comments given a list of points x y position the x and y limits of a rectangular grid find in which cell is located each given point categories no DO loop use the wonderfull value_locate function examples res inrecgrid xin yin left bottom param x1d in required a 1d array the x position on the points param y1d in required a 1d array the y position on the points left in required a 1d monotonically increasing array the position of the left border of each cell param bottom in required a 1d monotonically increasing array the position of the bottom border of each cell keyword output2d to get the output as a 2d array 2 n_elements x1d with res 0 the x index accoring to the 1d array defined by left and res 1 the y index accoring to the 1d array defined by bottom keyword checkout rbgrid ubgrid specify the right and upper bondaries of the grid and check if some points are out returns the index on the cell accoring to the 2d array defined by left and bottom examples IDL a indgen 5 IDL b indgen 7 IDL r inrecgrid 0 25 3 25 2 4 25 2 8 1 4 a b IDL print r 20 13 7 IDL r inrecgrid 0 25 3 25 2 4 25 2 8 1 4 a a 1 b b 1 output2d IDL print r 0 00000 4 00000 3 00000 2 00000 2 00000 1 00000 history S Masson smasson lodyc jussieu fr July 3rd 2002 October 3rd 2003: use value_locate FUNCTION inrecgrid x1d y1d left bottom output2d output2d checkout checkout ncellx n_elements left ncelly n_elements bottom xpos value_locate left x1d ypos value_locate bottom y1d IF n_elements checkout EQ 2 THEN BEGIN out where x1d GT checkout 0 IF out 0 NE 1 THEN xpos out 1 out where y1d GT checkout 1 IF out 0 NE 1 THEN ypos out 1 ENDIF IF keyword_set output2d THEN return transpose xpos transpose ypos IF NOT keyword_set checkout THEN RETURN xpos ncellx ypos res xpos ncellx ypos out where xpos EQ 1 OR ypos EQ 1 IF out 0 NE 1 THEN res out 1 RETURN res END"); 46 a[44] = new Array("./Interpolation/ll_narcs_distances.html", "ll_narcs_distances.pro", "", " file_comments This function returns the longitude and latitude lon lat of a point a given arc distance pi lon0 10 20 100 IDL lat0 0 10 45 IDL lon1 10 60 280 IDL lat1 0 10 45 IDL dist map_npoints lon0 lat0 lon1 lat1 azimuth azi two_by_two IDL earthradius 6378206 4d0 IDL res ll_narcs_distances lon0 lat0 dist earthradius azi degrees IDL print reform res 0 10 000000 60 000000 280 00000 IDL print reform res 1 1 1999280e 15 10 000000 45 000000 history Based on the IDL function ll_arc_distance pro v 1 11 2003 02 03 Sebastien Masson smasson lodyc jussieu fr August 2005 file_comments Return the lon lat of the point a given arc distance pi arc_dist pi and azimuth az from lon_lat0 FUNCTION LL_NARCS_DISTANCES lon0 lat0 arc_dist az DEGREES degs IF n_elements lon0 NE n_elements lat0 OR n_elements lon0 NE n_elements arc_dist OR n_elements lon0 NE n_elements az THEN return 1 cdist cos arc_dist Arc_Dist is always in radians sdist sin arc_dist if keyword_set degs then s dpi 180 0 else s 1 0d0 ll lat0 s To radians sinll1 sin ll cosll1 cos ll azs az s phi asin sinll1 cdist cosll1 sdist cos azs ll lon0 s To radians lam ll atan sdist sin azs cosll1 cdist sinll1 sdist cos azs zero where arc_dist eq 0 count IF count NE 0 THEN BEGIN lam zero lon0 zero phi zero lat0 zero ENDIF if keyword_set degs then return transpose lam phi s ELSE return transpose lam phi end "); 47 a[45] = new Array("./Interpolation/map_npoints.html", "map_npoints.pro", "", " file_comments Return the distance in meter between all np0 points P0 and all np1 points P1 on a sphere If keyword TWO_BY_TWO is given then returns the distances between number n of P0 points and number n of P1 points in that case np0 and np1 must be equal Same as map_2points with the meter parameter but for n points without do loop categories Maps examples Result Map_nPoints lon0 lat0 lon1 lat1 param Lon0 Lat0 in required np0 elements vector longitudes and latitudes of np0 points P0 param Lon1 Lat1 in required np1 elements vector longitude and latitude of np1 points P1 keyword AZIMUTH A named variable that will receive the azimuth of the great circle connecting the two points P0 to P1 keyword MIDDLE to get the longitude latitude of the middle point betwen P0 and P1 keyword RADIANS if set inputs and angular outputs are in radians otherwise degrees keyword RADIUS If given return the distance between the two points calculated using the given radius Default value is the earth radius : 6378206 4d0 keyword TWO_BY_TWO:If given then Map_nPoints returns the distances between number n of P0 points and number n of P1 points in that case np0 and np1 must be equal returns An np0 np1 array giving the distance in meter between np0 points P0 and np1 points P1 Element i j of the ouput is the distance between element P0 i and P1 j If keyword TWO_BY_TWO is given then Map_nPoints returns an np element vector giving the distance in meter between P0 i and P1 i in that case we have np0 np1 np if MIDDLE see this keyword examples IDL print map_npoints 105 15 1 40 02 1 0 07 100 50 51 30 20 0 7551369 3 5600334 8 12864354 10921254 14919237 5455558 8 IDL lon0 10 20 100 IDL lat0 0 10 45 IDL lon1 10 60 280 IDL lat1 0 10 45 IDL dist map_npoints lon0 lat0 lon1 lat1 azimuth azi IDL help dist azi DIST DOUBLE Array 3 3 AZI DOUBLE Array 3 3 IDL print dist 4 lindgen 3 azi 4 lindgen 3 2226414 0 4957944 5 10018863 90 000000 64 494450 4 9615627e 15 IDL dist map_npoints lon0 lat0 lon1 lat1 azimuth azi two_by_two IDL help dist azi DIST DOUBLE Array 3 AZI DOUBLE Array 3 IDL print dist azi 2226414 0 4957944 5 10018863 90 000000 64 494450 4 9615627e 15 IDL print map_2points lon0 0 lat0 0 lon1 0 lat1 0 20 000000 90 000000 IDL print map_npoints lon0 0 lat0 0 lon1 0 lat1 0 azi azi 6378206 4d0 dtor azi 20 000000 90 000000 IDL lon0 10 20 100 IDL lat0 0 10 45 IDL lon1 10 60 280 IDL lat1 0 10 45 IDL mid map_npoints lon0 lat0 lon1 lat1 middle two_by_two IDL print reform mid 0 reform mid 1 0 0000000 40 000000 190 00000 0 0000000 1 5902773e 15 90 000000 IDL print map_2points lon0 0 lat0 0 lon1 0 lat1 0 npath 3 1 0 0000000 0 0000000 IDL print map_2points lon0 1 lat0 1 lon1 1 lat1 1 npath 3 1 40 000000 1 5902773e 15 IDL print map_2points lon0 2 lat0 2 lon1 2 lat1 2 npath 3 1 190 00000 90 000000 history Based on the IDL function map_2points pro v 1 6 2001 01 15 Sebastien Masson smasson lodyc jussieu fr October 2003 Function Map_npoints lon0 lat0 lon1 lat1 azimuth azimuth RADIANS radians RADIUS radius MIDDLE middle TWO_BY_TWO two_by_two COMPILE_OPT idl2 ON_ERROR 2 return to caller IF N_PARAMS LT 4 THEN MESSAGE Incorrect number of arguments np0 n_elements lon0 IF n_elements lat0 NE np0 THEN MESSAGE lon0 and lat0 must have the same number of elements np1 n_elements lon1 IF n_elements lat1 NE np1 THEN MESSAGE lon1 and lat1 must have the same number of elements if keyword_set two_by_two AND np0 NE np1 then MESSAGE When using two_by_two keyword P0 and P1 must have the same number of elements mx MAX ABS lat0 lat1 pi2 dpi 2 IF mx GT KEYWORD_SET radians pi2 : 90 THEN MESSAGE Value of Latitude is out of allowed range k KEYWORD_SET radians 1 0d0 : dpi 180 0 Earth equatorial radius meters Clarke 1866 ellipsoid r_sphere n_elements RADIUS NE 0 RADIUS : 6378206 4d0 coslt1 cos k lat1 sinlt1 sin k lat1 coslt0 cos k lat0 sinlt0 sin k lat0 IF np0 EQ np1 AND np1 EQ 1 THEN two_by_two 1 if NOT keyword_set two_by_two THEN BEGIN coslt1 replicate 1 0d0 np0 temporary coslt1 sinlt1 replicate 1 0d0 np0 temporary sinlt1 coslt0 temporary coslt0 replicate 1 0d0 np1 sinlt0 temporary sinlt0 replicate 1 0d0 np1 ENDIF if keyword_set two_by_two THEN BEGIN cosl0l1 cos k lon1 lon0 sinl0l1 sin k lon1 lon0 ENDIF ELSE BEGIN cosl0l1 cos k replicate 1 0d0 np0 lon1 lon0 replicate 1 0d0 np1 sinl0l1 sin k replicate 1 0d0 np0 lon1 lon0 replicate 1 0d0 np1 ENDELSE cosc sinlt0 sinlt1 coslt0 coslt1 cosl0l1 Cos of angle between pnts Avoid roundoff problems by clamping cosine range to 1 1 cosc 1 0d0 cosc 1 0d0 if arg_present azimuth OR keyword_set middle then begin sinc sqrt 1 0d0 cosc cosc bad where abs sinc le 1 0e 7 IF bad 0 NE 1 THEN sinc bad 1 cosaz coslt0 sinlt1 sinlt0 coslt1 cosl0l1 sinc sinaz sinl0l1 coslt1 sinc IF bad 0 NE 1 THEN BEGIN sinc bad 0 0d0 sinaz bad 0 0d0 cosaz bad 1 0d0 ENDIF ENDIF IF keyword_set middle then BEGIN s0 0 5d0 acos cosc coss cos s0 sins sin s0 lats asin sinlt0 coss coslt0 sins cosaz k lons atan sins sinaz coslt0 coss sinlt0 sins cosaz k if keyword_set two_by_two THEN BEGIN return transpose lon0 lons lats ENDIF ELSE BEGIN return lon0 replicate 1 0d0 np1 lons lats ENDELSE ENDIF if arg_present azimuth then begin azimuth atan sinaz cosaz IF k NE 1 0d0 THEN azimuth temporary azimuth k ENDIF return acos cosc r_sphere end"); 48 a[46] = new Array("./Interpolation/neighbor.html", "neighbor.pro", "", " file_comments find the closetest point of P0 within a list of np1 points P1 Which can be on a sphere categories Maps examples IDL Result neighbor lon0 lat0 lon1 lat1 param p0lon in required scalar longitudes of point P0 param p0lat in required scalar latitudes of point P0 keyword RADIANS if set inputs and angular outputs are in radians otherwise degrees keyword DISTANCE dis to get back the distances between P0 and the np1 points P1 in the variable dis keyword SPHERE to activate if points are located on a sphere returns index giving the P1 index point that is the closetest point of P0 examples IDL print neighbor 105 15 40 02 0 07 100 50 51 30 20 0 distance dis 0 IDL print dis 105 684 206 125 160 228 history Sebastien Masson smasson lodyc jussieu fr October 2003 FUNCTION neighbor p0lon p0lat neighlon neighlat sphere sphere distance distance radians radians somme checks IF n_elements p0lon NE 1 THEN MESSAGE Sorry p0lon must be a scalar p0lon p0lon 0 IF n_elements p0lat NE 1 THEN MESSAGE Sorry p0lat must be a scalar p0lat p0lat 0 nneig n_elements neighlon IF n_elements neighlat NE nneig THEN MESSAGE neighlon and neighlat must have the same number of elements distance between P0 and the others points IF keyword_set sphere THEN BEGIN IF sphere NE 1 THEN radius sphere distance Map_nPoints p0lon p0lat neighlon neighlat radius radius radians radians ENDIF ELSE BEGIN distance neighlon p0lon 2 neighlat p0lat 2 IF arg_present distance THEN distance sqrt distance ENDELSE RETURN where distance EQ min distance END"); 49 a[47] = new Array("./Interpolation/quadrilateral2square.html", "quadrilateral2square.pro", "", " file_comments warm or map an arbitrary quadrilateral onto a unit square according to the 4 point correspondences: x0 y0 0 0 x1 y1 1 0 x2 y2 1 1 x3 y3 0 1 This is the inverse function of square2quadrilateral pro The mapping is done using perspective transformation which preserve lines in all orientations and permit quadrilateral to quadrilateral mappings see ref bellow categories image grid manipulation examples res square2quadrilateral x0 y0 x1 y1 x2 y2 x3 y3 xin yin param x0in in required the coordinates of the quadrilateral param y0in in required the coordinates of the quadrilateral param x1in in required the coordinates of the quadrilateral param y1in in required the coordinates of the quadrilateral param x2in in required the coordinates of the quadrilateral param y2in in required the coordinates of the quadrilateral param x3in in required the coordinates of the quadrilateral param y3in in required the coordinates of the quadrilateral see above for correspondance with the unit square Can be scalar or array x0 y0 x1 y1 x2 y2 and x3 y3 are given in the anticlockwise order param xxin in required the coordinates of the point s for which we want to do the mapping Can be scalar or array param yyin in required the coordinates of the point s for which we want to do the mapping Can be scalar or array returns 2 n array: the new coodinates xout yout of the xin yin point s after mapping If xin is a scalar then n is equal to the number of elements of x0 If xin is an array then n is equal to the number of elements of xin restrictions I think degenerated quadrilateral e g flat of twisted is not work This has to be tested examples IDL splot 0 5 0 3 nodata xstyle 1 ystyle 1 IDL tracegrille findgen 11 1 findgen 11 1 color indgen 12 20 IDL xin findgen 11 1 replicate 1 11 IDL yin replicate 1 11 findgen 11 1 IDL out square2quadrilateral 2 1 3 0 5 1 2 3 xin yin IDL tracegrille reform out 0 11 11 reform out 1 11 11 color indgen 12 20 IDL inorg quadrilateral2square 2 1 3 0 5 1 2 3 out 0 out 1 IDL tracegrille reform inorg 0 11 11 reform inorg 1 11 11 color indgen 12 20 history Sebastien Masson smasson lodyc jussieu fr August 2003 Based on Digital Image Warping by G Wolberg IEEE Computer Society Press Los Alamitos California Chapter 3 see p 52 56 FUNCTION quadrilateral2square x0in y0in x1in y1in x2in y2in x3in y3in xxin yyin PERF perf tempsone systime 1 Warning wrong definition of x2 y2 and x3 y3 at the bottom of page 54 of Wolberg s book see figure 3 7 page 56 for the good definition IF keyword_set double THEN BEGIN x0 double x0in x1 double x1in x2 double x2in x3 double x3in y0 double y0in y1 double y1in y2 double y2in y3 double y3in xin double xxin yin double yyin ENDIF ELSE BEGIN x0 float x0in x1 float x1in x2 float x2in x3 float x3in y0 float y0in y1 float y1in y2 float y2in y3 float y3in xin float xxin yin float yyin ENDELSE get the matrix A a square2quadrilateral x0in y0in x1in y1in x2in y2in x3in y3in compute the adjoint matrix IF keyword_set double THEN adj dblarr 9 n_elements x0 ELSE adj fltarr 9 n_elements x0 adj 0 a 4 a 7 a 5 adj 1 a 7 a 2 a 1 adj 2 a 1 a 5 a 4 a 2 adj 3 a 6 a 5 a 3 adj 4 a 0 a 6 a 2 adj 5 a 3 a 2 a 0 a 5 adj 6 a 3 a 7 a 6 a 4 adj 7 a 6 a 1 a 0 a 7 adj 8 a 0 a 4 a 3 a 1 IF n_elements xin EQ 1 THEN BEGIN xin replicate xin n_elements x0 yin replicate yin n_elements x0 ENDIF compute xprime yprime and wprime IF n_elements x0 EQ 1 THEN BEGIN wpr 1 adj 6 xin adj 7 yin adj 8 ENDIF ELSE BEGIN wpr 1 adj 6 xin adj 7 yin adj 8 ENDELSE xpr xin wpr ypr yin wpr IF keyword_set double THEN res dblarr 2 n_elements xin ELSE res fltarr 2 n_elements xin IF n_elements x0 EQ 1 THEN BEGIN res 0 xpr adj 0 ypr adj 1 wpr adj 2 res 1 xpr adj 3 ypr adj 4 wpr adj 5 ENDIF ELSE BEGIN res 0 xpr adj 0 ypr adj 1 wpr adj 2 res 1 xpr adj 3 ypr adj 4 wpr adj 5 ENDELSE IF keyword_set perf THEN print time quadrilateral2square systime 1 tempsone RETURN res END"); 50 a[48] = new Array("./Interpolation/spl_fstdrv.html", "spl_fstdrv.pro", "", " file_comments SPL_FSTDRV returns the values of the first derivative of the interpolating function at the points X2i it is a double precision array Given the arrays X and Y which tabulate a function with the X i AND Y i in ascending order and given an input value X2 the SPL_INCR function returns an interpolated value for the given values of X2 The interpolation method is based on cubic spline corrected in a way that interpolated value are also in ascending order examples y2 spl_fstdrv x y yscd x2 param x in required An n element at least 2 input vector that specifies the tabulate points in ascending order param y in required f x y An n element input vector that specifies the values of the tabulated function F Xi corresponding to Xi param yscd in required The output from SPL_INIT for the specified X and Y param x2 in required The input values for which the first derivative values are desired X can be scalar or an array of values returns y2: f x2 y2 history Sebastien Masson smasson lodyc jussieu fr : May 2005 FUNCTION spl_fstdrv x y yscd x2 compute the first derivative of the spline function nx n_elements x ny n_elements y x must have at least 2 elements IF nx LT 2 THEN stop y must have the same number of elements than x IF nx NE ny THEN stop define loc in a way that if loc i eq 1 : x2 i x nx 1 else : x loc i extrapolation use x nx 2 and x nx 1 even if x2 i x nx 1 extrapolation loc 0 temporary loc nx 2 distance between to consecutive x deltax x loc 1 x loc distance between to consecutive y deltay y loc 1 y loc relative distance between x2 i and x loc i 1 a x loc 1 x2 deltax relative distance between x2 i and x loc i b 1 0d a compute the first derivative on x see numerical recipes Chap 3 3 yfrst temporary deltay deltax 1 0d 6 0d 3 0d a a 1 0d deltax yscd loc 1 0d 6 0d 3 0d b b 1 0d deltax yscd loc 1 beware of the computation precision force near zero values to be exactly 0 0 zero where abs yfrst LT 1 e 10 IF zero 0 NE 1 THEN yfrst zero 0 0d RETURN yfrst END "); 51 a[49] = new Array("./Interpolation/spl_incr.html", "spl_incr.pro", "", " file_comments Given the arrays X and Y which tabulate a function with the X i AND Y i in ascending order and given an input value X2 the SPL_INCR function returns an interpolated value for the given values of X2 The interpolation method is based on cubic spline corrected in a way that interpolated values are also monotonically increasing examples y2 spl_incr x y x2 param x1 in required An n element at least 2 input vector that specifies the tabulate points in a strict ascending order param y1 in required f x y An n element input vector that specifies the values of the tabulated function F Xi corresponding to Xi As f is supposed to be monotonically increasing y values must be monotonically increasing y can have equal consecutive values param x2 in required The input values for which the interpolated values are desired Its values must be strictly monotonically increasing returns y2: f x2 y2 Double precision array restrictions It might be possible that y2 i 1 y2 i has very small negative values amplitude smaller than 1 e 6 examples n 100L x dindgen n 2 y abs randomn 0 n y n 2:n 2 1 0 y n n 3 0 y n n 6:n n 6 5 0 y total y cumulative double x2 dindgen n 1 2 n2 n_elements x2 print min y 1:n 1 y 0:n 2 LT 0 y2 spl_incr x y x2 splot x y xstyle 1 ystyle 1 ysurx 25 petit 1 2 1 land oplot x2 y2 color 100 c y2 1:n2 1 y2 0:n2 2 print min c LT 0 print min c max ma ma splot c xstyle 1 ystyle 1 yrange 01 05 ysurx 25 petit 1 2 2 noerase oplot 0 n_elements c 0 0 linestyle 1 history Sebastien Masson smasson lodyc jussieu fr : May Dec 2005 FUNCTION pure_concave x1 x2 y1 y2 der2 x X n type xx double x double x1 double x2 double x1 f double x2 double x1 double y2 double y1 n der2 temporary f res xx n IF check_math GT 0 THEN BEGIN zero where abs res LT 1 e 10 IF zero 0 NE 1 THEN res zero 0 0d END res temporary res double y2 double y1 y1 IF array_equal sort res lindgen n_elements res NE 1 THEN stop RETURN res END FUNCTION pure_convex x1 x2 y1 y2 der2 x 1 1 X n type xx 1 0d double x double x1 double x2 double x1 f double x2 double x1 double y2 double y1 n der2 temporary f res xx n IF check_math GT 0 THEN BEGIN zero where abs res LT 1 e 10 IF zero 0 NE 1 THEN res zero 0 0d END res 1 0d temporary res res temporary res y2 y1 y1 IF array_equal sort res lindgen n_elements res NE 1 THEN stop RETURN res END keyword YP0 The first derivative of the interpolating function at the point X0 If YP0 is omitted the second derivative at the boundary is set to zero resulting in a natural spline keyword YPN_1 The first derivative of the interpolating function at the point Xn 1 If YPN_1 is omitted the second derivative at the boundary is set to zero resulting in a natural spline FUNCTION spl_incr x y x2 YP0 yp0 YPN_1 ypn_1 check and initialisation nx n_elements x ny n_elements y nx2 n_elements x2 x must have at least 2 elements IF nx LT 2 THEN stop y must have the same number of elements than x IF nx NE ny THEN stop x be monotonically increasing IF min x 1:nx 1 x 0:nx 2 LE 0 THEN stop x2 be monotonically increasing IF N_ELEMENTS X2 GE 2 THEN IF min x2 1:nx2 1 x2 0:nx2 2 LE 0 THEN stop y be monotonically increasing IF min y 1:ny 1 y 0:ny 2 LT 0 THEN stop first check: check if two consecutive values are equal bad where y 1:ny 1 y 0:ny 2 EQ 0 cntbad IF cntbad NE 0 THEN BEGIN define the results: y2 y2 dblarr nx2 define xinx2: see help of value_locate if xinx2 i eq 1 : x bad i x2 nx2 1 else : x2 xinx2 i x2 nx2 1 else : x2 xinx2 i we have middle pieces for which we force yp0 0 0d and ypn_1 0 0d IF cntbad GT 1 THEN BEGIN we take care of the piece located wetween bad ib 1 and bad ib FOR ib 1 cntbad 1 DO BEGIN if there is x2 values smaller that x bad ib then the x2 values located between bad ib 1 and bad ib are xinx2 ib 1 1:xinx2 ib IF xinx2 ib NE 1 THEN begin y2 xinx2 ib 1 1 0 y i 1 y i 2 y reach its minimum value between x i and x i 1 0 y i 1 0 y i we do a first selection by looking for those points loc lindgen nx 1 maybebad where yscd loc LE 0 0d AND yscd loc 1 GE 0 0d cntbad IF cntbad NE 0 THEN BEGIN mbbloc loc maybebad aaa yscd mbbloc 1 yscd mbbloc 6 0d x mbbloc 1 x mbbloc bbb 0 5d yscd mbbloc ccc yifrst mbbloc ddd y mbbloc definitive selection: y can become negative if and only if 2b 2 4 3a c 0 y can become negative if and only if b 2 3a c 0 delta bbb bbb 3 0d aaa ccc bad where delta GT 0 cntbad IF cntbad NE 0 THEN BEGIN delta delta bad aaa aaa bad bbb bbb bad ccc ccc bad ddd ddd bad bad maybebad bad define xinx2_1: see help of value_locate if xinx2_1 i eq 1 : x bad i x2 nx2 1 else : x2 xinx2_1 i x2 nx2 1 else : x2 xinx2_2 i y bad ib 1 then we cannot applay the method we want to apply we use then convex concave case by changing by hand the value of yinfl and xinfl IF yzero GT y bad ib 1 THEN BEGIN yinfl 0 5d y bad ib 1 y bad ib xinfl 0 5d x bad ib 1 x bad ib GOTO convexconcave ENDIF define xinx2_3: see help of value_locate if xinx2_3 ib eq 1 : x bad ib xzero x2 nx2 1 else : x2 xinx2_3 we use then convex concave case by changing by hand the value of yinfl and xinfl IF yzero lt y bad ib THEN BEGIN yinfl 0 5d y bad ib 1 y bad ib xinfl 0 5d x bad ib 1 x bad ib GOTO convexconcave ENDIF define xinx2_3: see help of value_locate if xinx2_3 ib eq 1 : x bad ib xzero x2 nx2 1 else : x2 xinx2_3 x2 nx2 1 else : x2 xinx2_3 x bad ib xzero x2 xinx3_2 1 xinx2_3 value_locate x2 x bad ib xinfl IF xinx2_3 ge xinx2_1 ib 1 THEN BEGIN y2 xinx2_1 ib 1:xinx2_3 pure_convex x bad ib x bad ib xinfl y bad ib yinfl yifrst bad ib x2 xinx2_1 ib 1:xinx2_3 ENDIF IF xinx2_2 ib GE xinx2_3 1 THEN BEGIN y2 xinx2_3 1:xinx2_2 ib pure_concave x bad ib xinfl x bad ib 1 yinfl y bad ib 1 yifrst bad ib 1 x2 xinx2_3 1:xinx2_2 ib ENDIF END ENDCASE END ENDCASE ENDIF ENDFOR ENDIF ENDIF RETURN y2 END"); 52 a[50] = new Array("./Interpolation/spl_keep_mean.html", "spl_keep_mean.pro", "", " file_comments Given the arrays X and Y which tabulate a function with the X i AND Y i in ascending order and given an input value X2 the SPL_INCR function returns an interpolated value for the given values of X2 The interpolation method is based on cubic spline corrected in a way that integral of the interpolated values is the same as the integral of the input values for exemple to build daily data from monthly mean and keep the monthly mean of the computed daily data equa to the original values examples y2 spl_keep_mean x y x2 param x in required An n element at least 2 input vector that specifies the tabulate points in a strict ascending order param yin in required an array with one element less than x y i represents the mean value between x i and x i 1 if GE0 is activated y must have positive values param x2 in required The input values for which the interpolated values are desired Its values must be strictly monotonically increasing keyword GE0 to force that y2 is always GE than 0 In that case y must also be GE than 0 keyword YP0 The first derivative of the interpolating function at the point X0 If YP0 is omitted the second derivative at the boundary is set to zero resulting in a natural spline keyword YPN_1 The first derivative of the interpolating function at the point Xn 1 If YPN_1 is omitted the second derivative at the boundary is set to zero resulting in a natural spline returns y2: the meean value between two consecutive values of x2 This array has one element less than y2 y2 has double precision restrictions It might be possible that y2 has very small negative values amplitude smaller than 1 e 6 examples 12 monthly values of precipitations into daily values: yr1 1990 yr2 1992 nyr yr2 yr1 1 n1 12 nyr 1 x julday 1 findgen n1 replicate 1 n1 replicate yr1 n1 fltarr n1 n2 365 nyr total leapyr yr1 indgen nyr 1 x2 julday replicate 1 n2 1 findgen n2 replicate yr1 n2 fltarr n2 y abs randomn 0 n1 1 y2 spl_keep_mean x y x2 ge0 print min x max ma ma print min x2 max ma ma print vairdate min x max ma ma print total y x 1:n1 1 x 0:n1 2 print total y2 x2 1:n2 1 x2 0:n2 2 history Sebastien Masson smasson lodyc jussieu fr : May 2005 FUNCTION spl_keep_mean x yin x2 YP0 yp0 YPN_1 ypn_1 GE0 ge0 check and initialisation nx n_elements x ny n_elements yin nx2 n_elements x2 x must have at least 2 elements IF nx LT 2 THEN stop x2 must have at least 2 elements IF nx2 LT 2 THEN stop x be monotonically increasing IF min x 1:nx 1 x 0:nx 2 LE 0 THEN stop x2 be monotonically increasing IF min x2 1:nx2 1 x2 0:nx2 2 LE 0 THEN stop compute the integral of y if spl_keep_mean is called by the user and not by itself we must compute the integral of y yin must have one element less than x IF nx NE ny 1 THEN stop y double yin double x 1:nx 1 x 0:nx 2 y 0 0d temporary y y total temporary y cumulative double compute the spline interpolation IF keyword_set ge0 THEN BEGIN if the want that the interpolated values are always 0 we must have yin 0 0d IF min yin LT 0 THEN stop call spl_incr y2 spl_incr x temporary y x2 yp0 yp0 ypn_1 ypn_1 ENDIF ELSE BEGIN yscd spl_init x y yp0 yp0 ypn_1 ypn_1 double y2 spl_interp x y temporary yscd x2 double ENDELSE Compute the derivative of y yfrst y2 1:nx2 1 y2 0:nx2 2 x2 1:nx2 1 x2 0:nx2 2 it can happen that we have very small negative values 1 e 6 for ex yfrst 0 0d temporary yfrst RETURN yfrst END"); 53 a[51] = new Array("./Interpolation/square2quadrilateral.html", "square2quadrilateral.pro", "", " file_comments warm or map a unit square onto an arbitrary quadrilateral according to the 4 point correspondences: 0 0 x0 y0 1 0 x1 y1 1 1 x2 y2 0 1 x3 y3 The mapping is done using perspective transformation which preserve lines in all orientations and permit quadrilateral to quadrilateral mappings see ref bellow categories image grid manipulation examples res square2quadrilateral x0 y0 x1 y1 x2 y2 x3 y3 xin yin FUNCTION square2quadrilateral x0in y0in x1in y1in x2in y2in x3in y3in xxin yyin param x0in in required the coordinates of the quadrilateral see above for correspondance with the unit square Can be scalar or array x0 y0 x1 y1 x2 y2 and x3 y3 are given in the anticlockwise order param y0in in required the coordinates of the quadrilateral see above for correspondance with the unit square Can be scalar or array x0 y0 x1 y1 x2 y2 and x3 y3 are given in the anticlockwise order param x1in in required the coordinates of the quadrilateral see above for correspondance with the unit square Can be scalar or array x0 y0 x1 y1 x2 y2 and x3 y3 are given in the anticlockwise order param y1in in required the coordinates of the quadrilateral see above for correspondance with the unit square Can be scalar or array x0 y0 x1 y1 x2 y2 and x3 y3 are given in the anticlockwise order param x2in in required the coordinates of the quadrilateral see above for correspondance with the unit square Can be scalar or array x0 y0 x1 y1 x2 y2 and x3 y3 are given in the anticlockwise order param y2in in required the coordinates of the quadrilateral see above for correspondance with the unit square Can be scalar or array x0 y0 x1 y1 x2 y2 and x3 y3 are given in the anticlockwise order param x3in in required the coordinates of the quadrilateral see above for correspondance with the unit square Can be scalar or array x0 y0 x1 y1 x2 y2 and x3 y3 are given in the anticlockwise order param y3in in required the coordinates of the quadrilateral see above for correspondance with the unit square Can be scalar or array x0 y0 x1 y1 x2 y2 and x3 y3 are given in the anticlockwise order param xxin in required the coordinates of the point s for which we want to do the mapping Can be scalar or array param yyin in required the coordinates of the point s for which we want to do the mapping Can be scalar or array returns 2 n array: the new coodinates xout yout of the xin yin point s after mapping If xin is a scalar then n is equal to the number of elements of x0 If xin is an array then n is equal to the number of elements of xin If xin and yin are omited square2quadrilateral returns the matrix A which is used for the inverse transformation restrictions I think degenerated quadrilateral e g flat of twisted is not work This has to be tested examples IDL splot 0 5 0 3 nodata xstyle 1 ystyle 1 IDL tracegrille findgen 11 1 findgen 11 1 color indgen 12 20 IDL xin findgen 11 1 replicate 1 11 IDL yin replicate 1 11 findgen 11 1 IDL out square2quadrilateral 2 1 3 0 5 1 2 3 xin yin IDL tracegrille reform out 0 11 11 reform out 1 11 11 color indgen 12 20 history Sebastien Masson smasson lodyc jussieu fr August 2003 Based on Digital Image Warping by G Wolberg IEEE Computer Society Press Los Alamitos California Chapter 3 see p 52 56 FUNCTION square2quadrilateral x0in y0in x1in y1in x2in y2in x3in y3in xxin yyin Warning wrong definition of x2 y2 and x3 y3 at the bottom of page 54 of Wolberg s book see figure 3 7 page 56 for the good definition IF keyword_set double THEN BEGIN x0 double x0in x1 double x1in x2 double x2in x3 double x3in y0 double y0in y1 double y1in y2 double y2in y3 double y3in IF arg_present xxin THEN BEGIN xin double xxin yin double yyin ENDIF ENDIF ELSE BEGIN x0 float x0in x1 float x1in x2 float x2in x3 float x3in y0 float y0in y1 float y1in y2 float y2in y3 float y3in IF arg_present xxin THEN BEGIN xin float xxin yin float yyin ENDIF ENDELSE IF keyword_set double THEN a dlbarr 8 n_elements x0 ELSE a fltarr 8 n_elements x0 delx3 x0 x1 x2 x3 dely3 y0 y1 y2 y3 affinemap where delx3 EQ 0 AND dely3 EQ 0 IF affinemap 0 NE 1 THEN BEGIN xx0 x0 affinemap xx1 x1 affinemap xx2 x2 affinemap yy0 y0 affinemap yy1 y1 affinemap yy2 y2 affinemap a 0 affinemap xx1 xx0 a 1 affinemap xx2 xx1 a 2 affinemap xx0 a 3 affinemap yy1 yy0 a 4 affinemap yy2 yy1 a 5 affinemap yy0 a 6 affinemap 0 a 7 affinemap 0 ENDIF projectivemap where delx3 NE 0 OR dely3 NE 0 IF projectivemap 0 NE 1 THEN BEGIN xx0 x0 projectivemap xx1 x1 projectivemap xx2 x2 projectivemap xx3 x3 projectivemap yy0 y0 projectivemap yy1 y1 projectivemap yy2 y2 projectivemap yy3 y3 projectivemap delx1 xx1 xx2 dely1 yy1 yy2 delx2 xx3 xx2 dely2 yy3 yy2 delx3 delx3 projectivemap dely3 dely3 projectivemap div delx1 dely2 dely1 delx2 zero where div EQ 0 IF zero 0 NE 1 THEN BEGIN stop ENDIF a13 delx3 dely2 dely3 delx2 div a23 delx1 dely3 dely1 delx3 div a 0 projectivemap xx1 xx0 a13 xx1 a 1 projectivemap xx3 xx0 a23 xx3 a 2 projectivemap xx0 a 3 projectivemap yy1 yy0 a13 yy1 a 4 projectivemap yy3 yy0 a23 yy3 a 5 projectivemap yy0 a 6 projectivemap a13 a 7 projectivemap a23 ENDIF IF NOT arg_present xxin THEN return a IF n_elements xin EQ 1 THEN BEGIN xin replicate xin n_elements x0 yin replicate yin n_elements x0 ENDIF IF keyword_set double THEN res dblarr 2 n_elements xin ELSE res fltarr 2 n_elements xin IF n_elements x0 EQ 1 THEN BEGIN div a 6 xin a 7 yin 1 zero where div EQ 0 IF zero 0 NE 1 THEN BEGIN stop ENDIF res 0 a 0 xin a 1 yin a 2 div res 1 a 3 xin a 4 yin a 5 div ENDIF ELSE BEGIN div a 6 xin a 7 yin 1 zero where div EQ 0 IF zero 0 NE 1 THEN BEGIN stop ENDIF res 0 a 0 xin a 1 yin a 2 div res 1 a 3 xin a 4 yin a 5 div ENDELSE RETURN res END"); 54 a[52] = new Array("./Interpolation/testinterp.html", "testinterp.pro", "", " PRO testinterp method bilinear method imoms3 jpia 300L jpja 200L torg findgen jpia jpja xorg 20 d 360 d jpia dindgen jpia yorg 89 d 178 d jpja 1 dindgen jpja jpio 400L jpjo 150L xnew 0 d 360 d jpio dindgen jpio ynew 89 5d 179 d jpjo 1 dindgen jpjo outnorth where ynew GT yorg jpja 2 noutn outsouth where ynew LT yorg 1 nouts t2 fromreg method torg xorg yorg xnew ynew t3 fromreg method reverse torg 2 xorg reverse yorg xnew ynew IF array_equal t2 t3 EQ 0 THEN stop ELSE print ok1 xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift xorg2 0: xshift 1 xorg2 0: xshift 1 360 IF array_equal sort xorg2 lindgen n_elements xorg2 EQ 0 THEN stop t3 fromreg method torg2 xorg2 yorg xnew ynew IF array_equal t2 t3 EQ 0 THEN stop ELSE print ok2 xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift xorg2 0: xshift 1 xorg2 0: xshift 1 360 IF array_equal sort xorg2 lindgen n_elements xorg2 EQ 0 THEN stop t3 fromreg method reverse torg2 2 xorg2 reverse yorg xnew ynew IF array_equal t2 t3 EQ 0 THEN stop ELSE print ok3 xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift t3 fromreg method torg2 xorg2 yorg xnew ynew IF array_equal t2 t3 EQ 0 THEN stop ELSE print ok4 xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift t3 fromreg method reverse torg2 2 xorg2 reverse yorg xnew ynew IF array_equal t2 t3 EQ 0 THEN stop ELSE print ok5 t3 fromreg method torg xorg yorg xnew ynew nonorthernline IF array_equal t2 0:jpjo 1 noutn t3 0:jpjo 1 noutn EQ 0 THEN stop ELSE print ok6 FOR i 1 noutn 1 DO if array_equal t3 jpjo 1 t3 jpjo 1 i EQ 0 THEN stop ELSE print ok7 i t3 fromreg method torg xorg yorg xnew ynew nosouthernline IF array_equal t2 nouts: t3 nouts: EQ 0 THEN stop ELSE print ok8 FOR i 1 nouts 1 DO if array_equal t3 0 t3 i EQ 0 THEN stop ELSE print ok9 i t3 fromreg method reverse torg 2 xorg reverse yorg xnew ynew nonorthernline IF array_equal t2 0:jpjo 1 noutn t3 0:jpjo 1 noutn EQ 0 THEN stop ELSE print ok10 FOR i 1 noutn 1 DO if array_equal t3 jpjo 1 t3 jpjo 1 i EQ 0 THEN stop ELSE print ok11 i t3 fromreg method reverse torg 2 xorg reverse yorg xnew ynew nosouthernline IF array_equal t2 nouts: t3 nouts: EQ 0 THEN stop ELSE print ok12 FOR i 1 nouts 1 DO if array_equal t3 0 t3 i EQ 0 THEN stop ELSE print ok13 i xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift xorg2 0: xshift 1 xorg2 0: xshift 1 360 IF array_equal sort xorg2 lindgen n_elements xorg2 EQ 0 THEN stop t3 fromreg method torg2 xorg2 yorg xnew ynew nonorthernline IF array_equal t2 0:jpjo 1 noutn t3 0:jpjo 1 noutn EQ 0 THEN stop ELSE print ok14 FOR i 1 noutn 1 DO if array_equal t3 jpjo 1 t3 jpjo 1 i EQ 0 THEN stop ELSE print ok15 i xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift xorg2 0: xshift 1 xorg2 0: xshift 1 360 IF array_equal sort xorg2 lindgen n_elements xorg2 EQ 0 THEN stop t3 fromreg method torg2 xorg2 yorg xnew ynew nosouthernline IF array_equal t2 nouts: t3 nouts: EQ 0 THEN stop ELSE print ok16 FOR i 1 nouts 1 DO if array_equal t3 0 t3 i EQ 0 THEN stop ELSE print ok17 i xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift xorg2 0: xshift 1 xorg2 0: xshift 1 360 IF array_equal sort xorg2 lindgen n_elements xorg2 EQ 0 THEN stop t3 fromreg method reverse torg2 2 xorg2 reverse yorg xnew ynew nonorthernline IF array_equal t2 0:jpjo 1 noutn t3 0:jpjo 1 noutn EQ 0 THEN stop ELSE print ok18 FOR i 1 noutn 1 DO if array_equal t3 jpjo 1 t3 jpjo 1 i EQ 0 THEN stop ELSE print ok19 i xshift 20 torg2 shift torg xshift 0 xorg2 shift xorg xshift xorg2 0: xshift 1 xorg2 0: xshift 1 360 IF array_equal sort xorg2 lindgen n_elements xorg2 EQ 0 THEN stop t3 fromreg method reverse torg2 2 xorg2 reverse yorg xnew ynew nosouthernline IF array_equal t2 nouts: t3 nouts: EQ 0 THEN stop ELSE print ok20 FOR i 1 nouts 1 DO if array_equal t3 0 t3 i EQ 0 THEN stop ELSE print ok21 i return end"); 55 55 a[53] = new Array("./Obsolete/common.html", "common.pro", "", ""); 56 56 a[54] = new Array("./Obsolete/cp.html", "cp.pro", "", " file_comments copy files obsolete file_comments file_copy should be used instead history June 2005: Sebastien Masson obsolete routine PRO cp filenamein filenameout _extra ex file_copy filenamein filenameout _extra ex RETURN END"); … … 59 59 a[57] = new Array("./Obsolete/imprime.html", "imprime.pro", "", " file_comments use printps instead obsolete history June 2005: Sebastien Masson english version PRO imprime filename TRANS trans NB nb this is working only with unix linux osX machines thisOS strupcase strmid version os_family 0 3 CASE thisOS OF MAC :return WIN :return ELSE: ENDCASE call printps CASE N_PARAMS OF 0:printps 1:printps filename ELSE: BEGIN ras report imprime accept only one element: psfilename return END ENDCASE return END "); 60 60 a[58] = new Array("./Obsolete/jourdsmois.html", "jourdsmois.pro", "", " file_comments used daysinmonth instead obsolete history Sebastien Masson smasson lodyc jussieu fr June 2005: Sebastien Masson english version function jourdsmois mois annee case n_params OF 0:return daysinmonth 1:return daysinmonth mois 2:return daysinmonth mois annee endcase end"); 61 a[59] = new Array("./Obsolete/juldate.html", "juldate.pro", "", " file_comments you better use date2jul obsolete file_comments gives julian date equivalent of a date in vairmer yymmdd or yyyymmdd format sets month day and year to the corresp values categories calendar param vvdate in date de la forme yymmdd ou yyyymmdd keyword VRAIDATE pour ne pas transformer l annnee 01 en 1901 keyword GRADS if 1 le year le 49 then year 2000 year if 50 le year le 99 then year 1900 year uses common pro vraidate returns date en jour julien l annee 0 n existant pas qd year est nulle on calcule le jour julien de l annee 1 COMPATIBLE AVEC L AN 2000 : une date de la forme yymmdd est donvertit sous la forme yyyymmdd a l aide de vraidate Attention les variables globales year month day sont attribuees examples IDL date juldate 930124 history Jerome Vialard jv lodyc jussieu fr 2 7 98 function juldate vvdate _EXTRA ex vdate vvdate vdate vraidate vdate _EXTRA ex common year vdate 10000 month vdate 100 year 100 day abs vdate year 10000 month 100 month abs month mm month dd day yy year ndate n_elements vdate if total mm EQ 0 EQ ndate then mm 6 if total dd EQ 0 EQ ndate then dd 15 if total yy EQ 0 EQ ndate THEN yy 1 return julday mm dd yy _EXTRA ex return 1 end");61 a[59] = new Array("./Obsolete/juldate.html", "juldate.pro", "", " file_comments you better use date2jul obsolete file_comments gives julian date equivalent of a date in vairmer yymmdd or yyyymmdd format sets month day and year to the corresp values categories calendar param vvdate in date de la forme yymmdd ou yyyymmdd uses common pro vraidate returns date en jour julien l annee 0 n existant pas qd year est nulle on calcule le jour julien de l annee 1 COMPATIBLE AVEC L AN 2000 : une date de la forme yymmdd est donvertit sous la forme yyyymmdd a l aide de vraidate Attention les variables globales year month day sont attribuees examples IDL date juldate 930124 history Jerome Vialard jv lodyc jussieu fr 2 7 98 function juldate vvdate _EXTRA ex vdate vvdate vdate vraidate vdate _EXTRA ex common year vdate 10000 month vdate 100 year 100 day abs vdate year 10000 month 100 month abs month mm month dd day yy year ndate n_elements vdate if total mm EQ 0 EQ ndate then mm 6 if total dd EQ 0 EQ ndate then dd 15 if total yy EQ 0 EQ ndate THEN yy 1 return julday mm dd yy _EXTRA ex return 1 end "); 62 62 a[60] = new Array("./Obsolete/lec.html", "lec.pro", "", " file_comments lit les fichiers Vairmer en sort: un tableau 2d ou 3d en fonction de nomchamp qui est le nom du champ a extaire 2d s il commence par SO et 3d s il commence par VO cette fonction modifie aussi les variables globales: varname: trois lettres: nom de l experience vargrid: nom de la grille vardate: date yy yymmdd varexp: nom Vairmer du champ a tarcer obsolete categories Graphics lecture de fichier Vaimer examples IDL resultat lec nom_Vairmer date nom_experience param nomchamp in required 2 choix possibles: 1 nom de champ Vairmer chaine de 8 caracteres en majuscule ou minuscule commencant par vo ou so Dans cette methode on saute directement d en tete en en tete jusqu a trouver le bon fichier 2 chaine de characteres commencant par vo ou so suivit du numero de champ a aller chercher par ex vo5 Cette methode est un peu plus rapide car elle va directement chercher le fichier qui nous interesse param date in optional nombres de 6 ou 8 chiffres anneemoisjour par ex:19980507 param nomexp in optional trois lettres designant le nom de l experience keyword ANOM in type du fichier vairmer par rapport auquel on doit calculer l anomalie EX AN SE MO keyword ECRIT in permet d imprimer tous les noms vairmer que contient le fichier ds ce cas en input on met seulement vo ou so la fonction retourne le nombre de fichiers lus keyword EXPANOM in si on calcule l anom par rapport a une exper differente keyword FILENAME string pour passer directement le nom du champ sans utiliser les inputs: nom_Vairmer date nom_experience Rq si ces inputs sont qd meme donnes ils ne sont pas modifies par filename keyword GRID lorsque ce mot clef est active lec retourne la liste des types de grilles T U auxquelles se rapportent les variables ds ce cas en input on met seulement vo ou so keyword NAME lorsque ce mot clef est active lec retourne la liste des noms des variables ds ce cas en input on met seulement vo ou so keyword TOUT oblige lec a lire le champ sur tout le domaine qui a etait selectionne pour la cession en cours jpi jpj jpk returns un tableau 2 ou 3d sans le mot cle TOUT sa taille est celle du sous domaine definit par domdef nx ny nz avec TOUT le champ a la taille du domaine qui a etait selectionne pour la cession en cours jpi jpj jpk pour les sous domaines cf: http: www ipsl jussieu fr smlod sousdomaine html Retourne 1 en cas d erreur uses common pro isnumber pro fivardate pro history Sebastien Masson smasson lodyc jussieu fr 26 5 98 Jerome Vialard : adaptation au format vairmer keyword anom et expanom 1 7 98 Sebastien Masson masque des terres 14 8 98 Sebastien Masson decoupe pour les sous domaines 2 99 function lec nomchamp date nomexp ECRIT ecrit ANOM anom BOITE boite EXPANOM expanom TOUT tout GRID grid NAME name filename FILENAME common tempsun systime 1 pour key_performance z 1 if keyword_set filename then BEGIN CASE strupcase strmid version os_family 0 3 of MAC :sep : WIN :sep ELSE:sep ENDCASE fname strmid filename rstrpos filename sep 1 if n_elements nomchamp EQ 0 then nomchamp strmid fname 6 2 if n_elements date EQ 0 then date long strmid fname 8 if n_elements nomexp EQ 0 then nomexp strmid fname 0 3 endif nomchamp strupcase nomchamp dim string format a2 nomchamp print nom de l experience: nomchamp specification de la date et de l experience case n_params OF 0:BEGIN if keyword_set filename then begin rien juldate date prefix nomexp ENDIF ELSE return report Donnez un argument en entree ou utilisez le mot clef FILENAME END 1:date long day long month 100 long year 10000 2:rien juldate date 3:begin rien juldate date prefix nomexp end endcase verification de la dim du fichier if dim ne SO and dim ne VO then return report le nom du champ doit commencer par VO ou SO constitution de l adresse ou aller chercher le fichier s_fichier ficdate date dim ouverture du fichier a l adresse s_fichier openr numlec s_fichier get_lun ERROR err swap_if_little_endian if err ne 0 then begin print err_string return 1 endif taille en octet du fichier infofichier fstat numlec definition de la taille du fichier a aller chercher: jpidta jpjdta jpkdta if n_elements jpidta EQ 0 THEN BEGIN if n_elements ixmindta EQ 0 OR n_elements ixmaxdta EQ 0 then jpidta jpiglo else jpidta ixmaxdta ixmindta 1 endif if n_elements jpjdta EQ 0 THEN BEGIN if n_elements iymindta EQ 0 OR n_elements iymaxdta EQ 0 then jpjdta jpjglo else jpjdta iymaxdta iymindta 1 endif if n_elements jpkdta EQ 0 THEN BEGIN if n_elements izmindta EQ 0 OR n_elements izmaxdta EQ 0 then jpkdta jpkglo else jpkdta izmaxdta izmindta 1 endif lecture des champs directement vers le champ ou l en tete que l on recherche il faut savoir que: le fortran ajoute au debut et a la fin de chaque write 4 octets de controle les reels du model sont codes sur 4 octets un charactere fait 1 octet 4 chaines de 8 characteres un tableau de reels 4 trucs de controle pour les 2 write : if dim eq VO then taillebloc 4 8 long jpidta jpjdta jpkdta 4 4 4 else taillebloc 4 8 long jpidta jpjdta 4 4 4 choix du type de lecture typelec strmid nomchamp 2 strlen nomchamp test isnumber typelec numerochamp if test eq 0 then begin 1 LECTURE DIRECTE D EN TETE en EN TETE numerochamp 1 lecture des noms de champ resname resgrid while numerochamp taillebloc le infofichier size do begin offset numerochamp 1 taillebloc 4 a assoc numlec bytarr 8 nozero offset varname string a 0 if keyword_set ecrit OR keyword_set name OR keyword_set grid then begin vargrid a 1 vargrid string vargrid 7 vardate strtrim long string a 2 2 varexp strtrim a 3 2 if keyword_set ecrit THEN print numerochamp varname vargrid vardate varexp resname resname varname resgrid resgrid vargrid endif if nomchamp eq varname then begin vargrid a 1 vargrid string vargrid 7 vardate strtrim long string a 2 2 varexp strtrim a 3 2 goto sortieboucle endif numerochamp numerochamp 1 ENDWHILE free_lun numlec close numlec case 1 of keyword_set ecrit :return numerochamp 1 keyword_set name :return resname 1:numerochamp 1 keyword_set grid : return strmid resgrid 1:numerochamp 1 0 strlen resgrid 0 2 ELSE:return report Ce nom Vairmer de champ n existe pas ds le fichier: infofichier name endcase endif else begin 2 LECTURE DIRECTEMENT DU CHAMP QUE L ON VEUT test pour savoir si numero de champ est accessible if taillebloc numerochamp gt infofichier size then return report Ce numero de champ n exite pas Le fichier infofichier name ne contient que infofichier size taillebloc champs lecture de l en tete numero numerochamp offset numerochamp 1 taillebloc 4 a assoc numlec bytarr 8 nozero offset varname string a 0 vargrid a 1 vargrid string vargrid 7 vardate string a 2 varexp string a 3 endelse sortieboucle: lecture du champ lui meme offset numerochamp 1 taillebloc 8 4 8 4 if dim eq VO then a assoc numlec fltarr jpidta jpjdta jpkdta nozero offset else a assoc numlec fltarr jpidta jpjdta nozero offset z a 0 on initialise les ixmindta iymindta au besoin if n_elements ixmindta EQ 0 OR n_elements ixmaxdta EQ 0 then BEGIN ixmindta 0 ixmaxdta jpidta 1 endif if n_elements iymindta EQ 0 OR n_elements iymaxdta EQ 0 then BEGIN iymindta 0 iymaxdta jpjdta 1 endif if n_elements izmin EQ 0 OR n_elements izmax EQ 0 then BEGIN izmindta 0 izmaxdta jpkdta 1 endif on reduit z selon les valeurs de ixmindta iymindta if dim EQ SO then z z ixminmesh ixmindta:ixmaxmesh ixmindta iyminmesh iymindta:iymaxmesh iymindta ELSE z z ixminmesh ixmindta:ixmaxmesh ixmindta iyminmesh iymindta:iymaxmesh iymindta izminmesh izmindta:izmaxmesh izmindta on shift z si key_shift est defininit if n_elements key_shift NE 0 THEN BEGIN if dim EQ SO then z shift z key_shift 0 ELSE z shift z key_shift 0 0 endif si TOUT n est pas active on coupe z pour q il soit a la taille du zoom: nx ny nz if NOT keyword_set tout then BEGIN changement de domaine if keyword_set boite then BEGIN Case 1 Of N_Elements Boite Eq 1:bte lon1 lon2 lat1 lat2 0 boite 0 N_Elements Boite Eq 2:bte lon1 lon2 lat1 lat2 boite 0 boite 1 N_Elements Boite Eq 4:bte Boite prof1 prof2 N_Elements Boite Eq 5:bte Boite 0:3 0 Boite 4 N_Elements Boite Eq 6:bte Boite Else: return report Mauvaise Definition de Boite endcase oldboite lon1 lon2 lat1 lat2 prof1 prof2 domdef bte GRILLE vargrid ENDIF grille mask glam gphi gdep nx ny nz premierx premiery premierz dernierx derniery dernierz if nx EQ 1 OR ny EQ 1 OR nz EQ 1 then mask reform mask nx ny nz over if dim EQ SO then z z premierx:dernierx premiery:derniery ELSE z z premierx:dernierx premiery:derniery premierz:dernierz ENDIF ELSE BEGIN case vargrid OF on recupere le mask en entier ds le cas ou TOUT U :mask umask n est pas active et on le choisit en fontion T :mask tmask de la valeur de vargrid W :mask tmask V :mask vmask F :mask fmask ENDCASE ENDELSE calcul d une anomalie si le keyword anom est active if keyword_set anom then begin case anom of EX : adate 0 AN : adate floor date 10000 10000 SE : adate floor date floor date 10000 10000 100 100 MO : adate floor date 100 100 DA : adate date floor date 10000 10000 : adate date floor date 10000 10000 else : return report Anom doit etre egal a EX AN SE MO DA endcase if keyword_set expanom then nomexpa expanom else nomexpa nomexp if keyword_set bavard THEN print nomchamp adate nomexpa z z lec nomchamp adate nomexpa TOUT tout endif on masque les terres par valmask IF n_elements valmask EQ 0 THEN valmask 1e20 if dim EQ SO then BEGIN terre where mask 0 EQ 0 if terre 0 NE 1 then z terre valmask ENDIF ELSE BEGIN terre where mask 0 EQ 0 if terre 0 NE 1 then z where mask EQ 0 valmask ENDELSE free_lun numlec close numlec if n_elements oldboite NE 0 then domdef oldboite IF keyword_set key_performance EQ 1 THEN print temps lec systime 1 tempsun return reform z end "); 63 63 a[61] = new Array("./Obsolete/lect.html", "lect.pro", "", " file_comments lit les fichiers Vairmer de date1 a date2 et en sort un tableau 1D 2D ou 3D qui peut etre reutilise pour une courbe hov animation cette fonction modifie aussi les variables globales: varname: huit lettres: nom Vairmer du champ a tracer vargrid:1 lettre : nom de la grille varexp: trois lettres :nom de l experience obsolete categories Graphics lecture de fichier Vaimer examples IDL resultat lec nom_Vairmer date1 date2 nomexp direc BOITE boite param nomchamp in required nom de champ Vairmer chaine de 8 caracteres commencant par VO ou SO param date1 in required date de depart de la serie temporelle a param date2 in required date de fin date2 de la serie temporelle a extraire param nomexp in required nom de l experience a lire prefix pardefaut param direc in required x y z xy xz yz xyz xt yt zt xyt xzt yzt xyzt directions selon lesquelles effectuer les moyennes si rien n est donne on n effectue pas de moyenne keyword boite in boite sur laquelle integrer par defaut tt le domaine keyword anom in type de fichiers SE AN a relire pour calc une anomalie keyword expanom in experience pour laquelle on veut calculer une anomalie par defaut la meme que nomexp uses common vraidate juldate history Jerome Vialard jv lodyc jussieu fr 2 7 98 1 2 3 4 5 function lect nomchamp date1 date2 nomexp direc BOITE boite ANOM anom EXPANOM expanom REPEAT repeat common tempsun systime 1 pour key_performance nomchamp strupcase nomchamp date1 vraidate date1 date2 vraidate date2 dim string format a2 nomchamp specification de la date et de l experience if fictype date1 ne fictype date2 then return report Les deux dates doivent correspondre au meme type de fic vairmer fictyp fictype date1 creation du nom du fichier if n_elements nomexp EQ 0 then nomexp prefix ficname iodir nomchamp strcompress date1 remove_all ficname ficname fictyp strcompress date2 remove_all nomexp if keyword_set anom then ficname ficname anom if keyword_set expanom then ficname ficname expanom case n_elements boite of 4 : box strcompress string format i4 _ i4 _ i4 _ i4 boite remove_all 6 : box strcompress string format i4 _ i4 _ i4 _ i4 _ i4 _ i4 boite remove_all else: box strcompress string format i4 _ i4 _ i4 _ i4 _ i4 _ i4 lon1 lon2 lat1 lat2 prof1 prof2 remove_all ENDCASE if n_elements direc EQ 0 then direc ficname ficname box direc hovdat Est ce que le fichier de hovmoller existe structure du fichier : jpt valeur de la dim temporelle dimtableau dimension du tableau dimttab 0 dimttab 1 valeur des dim time axe des tps ttab tableau a lire def du domaine lon1 lon2 prof1 prof2 get_lun numlec openr numlec ficname get_lun ERROR err swap_if_little_endian if err eq 0 then begin jpt long 1 dimtableau long 1 readu numlec jpt dimtableau case dimtableau of 1 : begin n1 long 1 readu numlec n1 ttab fltarr n1 end 2 : begin n1 long 1 n2 long 1 readu numlec n1 n2 ttab fltarr n1 n2 end 3 : begin n1 long 1 n2 long 1 n3 long 1 readu numlec n1 n2 n3 ttab fltarr n1 n2 n3 end endcase time lonarr jpt lecture axe des tps et du tableau readu numlec time ttab newboite fltarr 6 lecture du domaine readu numlec newboite domdef newboite lecture info complementaire : nom du champs de l experience varname aaaaaaaa readu numlec varname vargrid a readu numlec vargrid varexp aaa readu numlec varexp close numlec free_lun numlec return ttab ENDIF close numlec free_lun numlec changement de domaine if keyword_set boite then BEGIN Case 1 Of N_Elements Boite Eq 1:bte lon1 lon2 lat1 lat2 0 boite 0 N_Elements Boite Eq 2:bte lon1 lon2 lat1 lat2 boite 0 boite 1 N_Elements Boite Eq 4:bte Boite prof1 prof2 N_Elements Boite Eq 5:bte Boite 0:3 0 Boite 4 N_Elements Boite Eq 6:bte Boite Else: return report Mauvaise Definition de Boite endcase oldboite lon1 lon2 lat1 lat2 prof1 prof2 domdef bte ENDIF Boucle de lecture des fichiers case fictyp of DA : dec 0 MO : dec 14 SE : dec 14 AN : dec 182 endcase initialisation des variables associees au tps time lonarr jptmax jpt 0 vdat date1 debut de la boucle while vdat le date2 do begin lecture du fichier a la date vdat vairmer tab lec nomchamp vdat nomexp ANOM anom EXPANOM expanom attribution du mask et des tableaux de longitude et latitude if jpt EQ 0 THEN grille mask glam gphi gdep nx ny nz premierx premiery premierz dernierx derniery dernierz if n_elements tab eq 1 and tab 0 eq 1 then begin goto incrdate endif else begin jpt jpt 1 if jpt gt jptmax then return report lect : augmenter jptmax endelse Moyenne du champs tab IF n_params EQ 5 THEN if direc NE then BEGIN if nx EQ 1 OR ny EQ 1 OR nz EQ 1 THEN BEGIN if string format a2 nomchamp EQ SO then tab reform tab nx ny over ELSE tab reform tab nx ny nz over ENDIF tab moyenne tab direc endif if jpt eq 1 then begin ttab tab endif else BEGIN ttab colle ttab tab size tab 0 1 endelse time jpt 1 juldate vdat dec Incrementation de la date incrdate : case fictyp of DA : caldat juldate vdat 1 month day year MO : begin caldat julday month 1 year jourdsmois month day year day 0 end SE : month month 1 AN : year year 1 endcase Fin de boucle de lecture des fichiers vdat long 10000 year long 100 month day ENDWHILE if ttab 0 EQ 1 then return report Aucun fichier n a ete lu Ecriture du fichier get_lun numlec openw numlec ficname get_lun swap_if_little_endian taille size ttab writeu numlec long jpt long taille 0 case taille 0 of 1 : writeu numlec long taille 1 2 : writeu numlec long taille 1 long taille 2 3 : writeu numlec long taille 1 long taille 2 long taille 3 endcase writeu numlec long time 0:jpt 1 ttab writeu numlec float lon1 lon2 lat1 lat2 prof1 prof2 ecriture info complementaire : nom du champs de l experience writeu numlec strmid varname 0 8 writeu numlec strmid vargrid 0 1 writeu numlec strmid varexp 0 3 close numlec free_lun numlec if keyword_set repeat then begin jpt jpt repeat if jpt gt jptmax then begin print lect : augmenter jptmax goto fini endif tabadd ttab ti endif if n_elements oldboite NE 0 then domdef oldboite close all IF keyword_set key_performance THEN print temps lect systime 1 tempsun return ttab end "); … … 65 65 a[63] = new Array("./Obsolete/ncdf_meshlec.html", "ncdf_meshlec.pro", "", " file_comments use ncdf_meshread instead obsolete history Aug 2005 Sebastien Masson: switch to ncdf_meshread PRO ncdf_meshlec filename _EXTRA ex CASE n_params OF 0:ncdf_meshread _EXTRA ex 1:ncdf_meshread filename _EXTRA ex ENDCASE return END"); 66 66 a[64] = new Array("./Obsolete/nlec.html", "nlec.pro", "", " file_comments lit les fichiers Net Cdf de l experience TOTEM ECMWF qui sont sur maia: u rech eee reee217 TOTEM REF OUTPUTS obsolete param name in required nom du tableau contenant le champ que l on veut le trouver avec ncdflec fichier var param debut in nombres de 6 ou 8 chiffres anneemoisjour par ex:19980507 param fin in nombres de 6 ou 8 chiffres anneemoisjour par ex:19980507 param nomexperience in optional trois lettres designant le nom de l experience keyword BOITE boite sur laquelle integrer par defaut tt le domaine keyword DIREC: x y z xy xz yz xyz directions selon lesquelles effectuer les moyennes si rien n est donne on n effectue pas de moyenne keyword GRILLE impose la grille a laquelle est rapporte le champ rq permet d aller plus vite ds la lecture keyword TOUT oblige a lire le tableau entier en non pas celui reduit a domdef uses common pro vraidate juldate nlec5j nlecserie history Sebastien Masson smasson lodyc jussieu fr 14 8 98 REF 07 790101 grid T nc REF 07 790101 grid U nc REF 07 790101 grid V nc REF 07 790101 grid W nc function nlec name debut fin nomexperience BOITE boite DIREC direc GRILLE grille TOUT tout STRUCTURE structure SEUILMIN seuilmin SEUILMAX seuilmax NAN nan _EXTRA ex common tempsun systime 1 pour key_performance nom strlowcase name specification de la date et de l experience case n_params of 1:BEGIN year year 1900 year ne 0 and year ne 1 and year lt 100 date day 100 month 10000 year end 2:BEGIN if size debut tname EQ STRING then begin prefix strupcase debut year year 1900 year ne 0 and year ne 1 and year lt 100 date day 100 month 10000 year ENDIF ELSE BEGIN date debut rien juldate date ENDELSE end 3:begin date debut rien juldate date if size fin tname EQ STRING then begin prefix strupcase fin ENDIF ELSE BEGIN date2 vraidate fin year2 date2 10000 month2 date2 100 year2 100 day2 date2 year2 10000 month2 100 ENDELSE end 4:BEGIN date debut rien juldate date if size nomexperience tname EQ STRING then begin prefix strupcase nomexperience date2 fin ENDIF ELSE BEGIN prefix strupcase fin date2 nomexperience ENDELSE date2 vraidate date2 year2 date2 10000 month2 date2 100 year2 100 day2 date2 year2 10000 month2 100 end endcase date long date if n_elements date2 NE 0 then date2 long date2 if n_elements date2 NE 0 then if date2 eq date then tempvar SIZE TEMPORARY date2 verification de la coherence des dates if n_elements date2 ne 0 then begin if day EQ 0 AND day2 NE 0 OR month EQ 0 AND month2 NE 0 OR year EQ 0 AND year2 NE 0 or day2 EQ 0 AND day NE 0 OR month2 EQ 0 AND month NE 0 OR year2 EQ 0 AND year NE 0 then return report verifier la coherence des dates if date2 le date then return report date2 doit etre posterieure a date endif case sur le type de fichiers que l on veut lire determination ds chaque cas de numsortie et nbretps if day NE 0 then begin SORTIES A 5 JOURS numsortie testjour: numsortie 1 julday month day year julday 1 1 year 5 0 if numsortie ne floor numsortie then begin if n_elements date2 ne 0 then begin caldat julday month day 1 year month day year goto testjour endif return 1 ENDIF numsortie long numsortie determination du nombre de pas de tps a extraire pour la serie temporelle entiere: nbretps if n_elements date2 ne 0 then begin testjour2: numsortie2 1 julday month2 day2 year2 julday 1 1 year2 5 if numsortie2 ne floor numsortie2 then begin caldat julday month2 day2 1 year2 month2 day2 year2 goto testjour2 endif if year eq year2 then nbretps numsortie2 numsortie 1 else nbretps 73 numsortie 1 year2 year 1 73 numsortie2 numsortie2 long numsortie2 endif else nbretps 1 nbretps long nbretps si on fait une serie temporelle on cherche a lire plutot un fichier contenant deja une serie temporelle par contre pour une sortie unique on cherche d abord a lire un fichier contenant toutes les variables IF n_elements date2 ne 0 THEN BEGIN serie: IF n_elements dejaserie eq 1 then return 1 datejul 5 numsortie 1 julday 1 1 year if n_elements date2 ne 0 then date2jul 5 numsortie2 1 julday 1 1 year2 ELSE date2jul datejul res nlecserie nom datejul date2jul BOITE boite GRILLE grille TOUT tout _EXTRA ex IF res 0 EQ 1 THEN BEGIN dejaserie 1 GOTO passerie ENDIF ENDIF ELSE BEGIN passerie: IF n_elements dejapasserie eq 1 then return 1 res nlec5j nom numsortie nbretps BOITE boite GRILLE grille TOUT tout _EXTRA ex IF res 0 EQ 1 THEN BEGIN dejapasserie 1 GOTO serie ENDIF endelse ENDIF ELSE BEGIN CASE 1 of month NE 0 AND year NE 0:BEGIN SORTIES MENSUELLES numsortie79 year 1979 12 month if n_elements date2 ne 0 then nbretps month2 month 1 12 year2 year ELSE nbretps 1 res nlecmois nom numsortie79 nbretps BOITE boite GRILLE grille TOUT tout _EXTRA ex end month EQ 0 AND year NE 0:BEGIN SORTIES ANNUELLES numsortie79 year 1978 if n_elements date2 ne 0 then nbretps year2 year 1 ELSE nbretps 1 res nlecan nom numsortie79 nbretps BOITE boite GRILLE grille TOUT tout _EXTRA ex end month NE 0 AND year EQ 0:BEGIN SORTIES SAISONNIERES numsortie79 month if n_elements date2 ne 0 then nbretps month2 month 1 ELSE nbretps 1 res nlecsaison nom numsortie79 nbretps BOITE boite GRILLE grille TOUT tout _EXTRA ex end month EQ 0 AND year EQ 0:BEGIN SORTIES CLIMATOLOGIQUE numsortie79 13 nbretps 1 res nlecsaison nom numsortie79 nbretps BOITE boite GRILLE grille TOUT tout _EXTRA ex end endcase endelse seuil if n_elements seuilmin NE 0 then BEGIN if n_elements valmask EQ 0 then valmask 1e20 terre where res GT valmask 10 res seuilmin res if terre 0 NE 1 then res terre valmask undefine terre endif if n_elements seuilmax NE 0 then begin if n_elements valmask EQ 0 then valmask 1e20 terre where res GT valmask 10 res res seuilmax if terre 0 NE 1 then res terre valmask undefine terre endif points a metre a nan if n_elements nan NE 0 then BEGIN if n_elements valmask EQ 0 then valmask 1e20 if abs valmask LT 1e6 then terre where abs res GT abs valmask 10 ELSE terre where res EQ valmask if abs nan LT 1e6 then notan where res EQ nan ELSE notan where abs res GT abs nan if notan 0 NE 1 then res notan values f_nan notan notan 0 NE 1 if terre 0 NE 1 then res terre valmask undefine terre endif ajustement de niveau pour les tableau 2d simples if jpt EQ 1 then begin taille size res IF taille 0 EQ 2 THEN niveau 1 endif moyenne eventuelle IF keyword_set direc THEN BEGIN IF jpt EQ 1 THEN res moyenne res direc BOITE boite nan notan ELSE res grossemoyenne res direc BOITE boite nan notan ENDIF mise en placer des parametres pour le trace if keyword_set boite then legende_pltt boite ELSE legende_pltt lon1 lon2 lat1 lat2 IF n_elements res NE 1 THEN res reform res over IF NOT keyword_set direc THEN domdef lon1 lon2 lat1 lat2 prof1 prof2 _extra ex grille vargrid ELSE if direc eq t then domdef lon1 lon2 lat1 lat2 prof1 prof2 _extra ex grille vargrid if keyword_set structure then res tab:res grille:vargrid unite:varunit experience:varexp nom:varname if keyword_set key_performance THEN print temps nlec systime 1 tempsun time time 2l return res end "); 67 a[65] = new Array("./Obsolete/nlec5j.html", "nlec5j.pro", "", " file_comments lit les fichiers Net Cdf de l experience TOTEM ECMWF qui contiennent les sorties a 5j regroupees par type de grille par paquets de 6 mois sur maia: u rech eee reee217 TOTEM REF OUTPUTS obsolete categories lecture de NETCDF examples IDL res nlec5j nom numsortie nbretps param nom in required nom du tableau contenant le champ que l on veut le trouver avec ncdflec fichier var param numsortie in required le numero du pas de temps que l on veut sortir du fichier compte a partir de 1 a partir de year param nbretps in required nombre de pas de temps a extraire keyword BOITE boite sur laquelle integrer par defaut tt le domaine keyword GRILLE impose la grille a laquelle est rapporte le champ rq permet d aller plus vite ds la lecture keyword TOUT oblige a lire le tableau entier en non pas celui reduit a domdef returns tableau 2d qd on ne demande pas de serie ou 3d ou 4d ds le cas dune serie uses common pro restriction appele par nlec history Sebastien Masson smasson lodyc jussieu fr function nlec5j nom numsortie nbretps BOITE boite GRILLE grille TOUT tout _EXTRA ex common res 1 anneedepart 1979 gestion du nom du fichier if numsortie le 36 then BEGIN mmdd 0101 numsort numsortie ENDIF else BEGIN if leapyr year then mmdd 0629 else mmdd 0630 numsort numsortie 36 endelse case 1 of year lt 10: s_year 0 string format i1 year year lt 100 and year ge 10 :s_year string format i2 year year ge 100: s_year string format i2 year 1900 year LT 2000 endcase numfich year anneedepart 2 7 mmdd ne 0101 s_date s_year mmdd if numfich lt 10 then numfich 0 string format i1 numfich else numfich string format i2 numfich gestion du nom de la grille en testant les differentes possibilites et ouverture du fichier if keyword_set grille then begin vargrid grille nomfich prefix numfich s_date grid vargrid nc IF version OS_FAMILY EQ unix THEN spawn file iodir nomfich dev null cdfid ncdf_open iodir nomfich varcontient ncdf_varinq cdfid nom endif else begin liste des fichiers pouvant convenir quelsfichiers findfile iodir prefix numfich s_date grid IF quelsfichiers 0 EQ THEN BEGIN liste vide if keyword_set bavard then ras report LES FICHIERS: iodir prefix numfich s_date grid n existe pas return 1 ENDIF for i 0 n_elements quelsfichiers 1 do begin IF version OS_FAMILY EQ unix THEN spawn file quelsfichiers i dev null cdfid ncdf_open quelsfichiers i contient ncdf_inquire cdfid for varid 0 contient nvars 1 do BEGIN ds les fichiers existants on varcontient ncdf_varinq cdfid varid cherche le nom des variables if varcontient name eq nom then BEGIN vargrid strmid quelsfichiers i strpos quelsfichiers i grid 5 1 nom de grille goto grilletrouvee ENDIF endfor ncdf_close cdfid endfor if keyword_set bavard then ras report La variable nom n existe pas ds les fichiers iodir prefix numfich s_date grid return 1 endelse grilletrouvee: lecture de certains attributs ncdf_attget cdfid nom title value varname string value ncdf_attget cdfid nom units value varunit string value if rstrpos varname eq 1 then varname varname varunit if month lt 10 then s_month 0 string format i1 month else s_month string format i2 month if day lt 10 then s_day 0 string format i1 day else s_day string format i2 day vardate s_year s_month s_day ncdf_attget cdfid file_name value global varexp string value 0: where value EQ byte 0 0 1 extraction du tableau qui nous interesse determination du domaine geographique if keyword_set tout then begin nx jpi ny jpj nz jpk premierx 0 premiery 0 premierz 0 endif else BEGIN redefinition eventuelle du domaine ajuste a boite a 6 elements on recupere la dim du no9uveau domaine if keyword_set boite then BEGIN Case N_Elements Boite Of 1:Domdef lon1 lon2 lat1 lat2 0 boite 0 GRILLE vargrid _EXTRA ex 2:Domdef lon1 lon2 lat1 lat2 boite 0 boite 1 GRILLE vargrid _EXTRA ex 4:Domdef Boite prof1 prof2 GRILLE vargrid _EXTRA ex 5:Domdef Boite 0:3 0 Boite 4 GRILLE vargrid _EXTRA ex 6:Domdef Boite GRILLE vargrid _EXTRA ex Else: return report Mauvaise Definition de Boite endcase ENDIF grille mask glam gphi gdep nx ny nz premierx premiery premierz dernierx derniery dernierz ENDELSE determination du nombre de pas de tps a extraire ds ce fichier if nbretps gt 36 1 mmdd ne 0101 numsort 1 then nt 36 1 mmdd ne 0101 numsort 1 else nt nbretps if varcontient ndims eq 3 then ncdf_varget cdfid nom res offset premierx premiery numsort 1 count nx ny nt else ncdf_varget cdfid nom res offset premierx premiery premierz numsort 1 count nx ny nz nt rappel en boucle de nlec si il faut ouvrir de nouveaux fichiers pour constituer la serie temporelle if nbretps gt 36 1 mmdd ne 0101 numsort 1 then begin if mmdd ne 0101 then year year 1 if varcontient ndims eq 3 then res res nlec5j nom 1 36 mmdd eq 0101 nbretps nt tout tout GRILLE vargrid BOITE boite ELSE BEGIN res res nlec5j nom 1 36 mmdd eq 0101 nbretps nt tout tout GRILLE vargrid BOITE boite res reform res nx ny nz nbretps over ENDELSE ncdf_varget cdfid time_counter temps offset numsort 1 count nt time long temps julday 1 5 1979 time jpt nt jpt endif else BEGIN ncdf_varget cdfid time_counter temps offset numsort 1 count nt time long temps julday 1 5 1979 jpt nt endelse ncdf_close cdfid return res end");67 a[65] = new Array("./Obsolete/nlec5j.html", "nlec5j.pro", "", " file_comments lit les fichiers Net Cdf de l experience TOTEM ECMWF qui contiennent les sorties a 5j regroupees par type de grille par paquets de 6 mois sur maia: u rech eee reee217 TOTEM REF OUTPUTS obsolete categories lecture de NETCDF examples IDL res nlec5j nom numsortie nbretps param nom in required nom du tableau contenant le champ que l on veut le trouver avec ncdflec fichier var param numsortie in required le numero du pas de temps que l on veut sortir du fichier compte a partir de 1 a partir de year param nbretps in required nombre de pas de temps a extraire keyword BOITE boite sur laquelle integrer par defaut tt le domaine keyword GRILLE impose la grille a laquelle est rapporte le champ rq permet d aller plus vite ds la lecture keyword TOUT oblige a lire le tableau entier en non pas celui reduit a domdef returns tableau 2d qd on ne demande pas de serie ou 3d ou 4d ds le cas dune serie uses common pro restrictions appele par nlec history Sebastien Masson smasson lodyc jussieu fr function nlec5j nom numsortie nbretps BOITE boite GRILLE grille TOUT tout _EXTRA ex common res 1 anneedepart 1979 gestion du nom du fichier if numsortie le 36 then BEGIN mmdd 0101 numsort numsortie ENDIF else BEGIN if leapyr year then mmdd 0629 else mmdd 0630 numsort numsortie 36 endelse case 1 of year lt 10: s_year 0 string format i1 year year lt 100 and year ge 10 :s_year string format i2 year year ge 100: s_year string format i2 year 1900 year LT 2000 endcase numfich year anneedepart 2 7 mmdd ne 0101 s_date s_year mmdd if numfich lt 10 then numfich 0 string format i1 numfich else numfich string format i2 numfich gestion du nom de la grille en testant les differentes possibilites et ouverture du fichier if keyword_set grille then begin vargrid grille nomfich prefix numfich s_date grid vargrid nc IF version OS_FAMILY EQ unix THEN spawn file iodir nomfich dev null cdfid ncdf_open iodir nomfich varcontient ncdf_varinq cdfid nom endif else begin liste des fichiers pouvant convenir quelsfichiers findfile iodir prefix numfich s_date grid IF quelsfichiers 0 EQ THEN BEGIN liste vide if keyword_set bavard then ras report LES FICHIERS: iodir prefix numfich s_date grid n existe pas return 1 ENDIF for i 0 n_elements quelsfichiers 1 do begin IF version OS_FAMILY EQ unix THEN spawn file quelsfichiers i dev null cdfid ncdf_open quelsfichiers i contient ncdf_inquire cdfid for varid 0 contient nvars 1 do BEGIN ds les fichiers existants on varcontient ncdf_varinq cdfid varid cherche le nom des variables if varcontient name eq nom then BEGIN vargrid strmid quelsfichiers i strpos quelsfichiers i grid 5 1 nom de grille goto grilletrouvee ENDIF endfor ncdf_close cdfid endfor if keyword_set bavard then ras report La variable nom n existe pas ds les fichiers iodir prefix numfich s_date grid return 1 endelse grilletrouvee: lecture de certains attributs ncdf_attget cdfid nom title value varname string value ncdf_attget cdfid nom units value varunit string value if rstrpos varname eq 1 then varname varname varunit if month lt 10 then s_month 0 string format i1 month else s_month string format i2 month if day lt 10 then s_day 0 string format i1 day else s_day string format i2 day vardate s_year s_month s_day ncdf_attget cdfid file_name value global varexp string value 0: where value EQ byte 0 0 1 extraction du tableau qui nous interesse determination du domaine geographique if keyword_set tout then begin nx jpi ny jpj nz jpk premierx 0 premiery 0 premierz 0 endif else BEGIN redefinition eventuelle du domaine ajuste a boite a 6 elements on recupere la dim du no9uveau domaine if keyword_set boite then BEGIN Case N_Elements Boite Of 1:Domdef lon1 lon2 lat1 lat2 0 boite 0 GRILLE vargrid _EXTRA ex 2:Domdef lon1 lon2 lat1 lat2 boite 0 boite 1 GRILLE vargrid _EXTRA ex 4:Domdef Boite prof1 prof2 GRILLE vargrid _EXTRA ex 5:Domdef Boite 0:3 0 Boite 4 GRILLE vargrid _EXTRA ex 6:Domdef Boite GRILLE vargrid _EXTRA ex Else: return report Mauvaise Definition de Boite endcase ENDIF grille mask glam gphi gdep nx ny nz premierx premiery premierz dernierx derniery dernierz ENDELSE determination du nombre de pas de tps a extraire ds ce fichier if nbretps gt 36 1 mmdd ne 0101 numsort 1 then nt 36 1 mmdd ne 0101 numsort 1 else nt nbretps if varcontient ndims eq 3 then ncdf_varget cdfid nom res offset premierx premiery numsort 1 count nx ny nt else ncdf_varget cdfid nom res offset premierx premiery premierz numsort 1 count nx ny nz nt rappel en boucle de nlec si il faut ouvrir de nouveaux fichiers pour constituer la serie temporelle if nbretps gt 36 1 mmdd ne 0101 numsort 1 then begin if mmdd ne 0101 then year year 1 if varcontient ndims eq 3 then res res nlec5j nom 1 36 mmdd eq 0101 nbretps nt tout tout GRILLE vargrid BOITE boite ELSE BEGIN res res nlec5j nom 1 36 mmdd eq 0101 nbretps nt tout tout GRILLE vargrid BOITE boite res reform res nx ny nz nbretps over ENDELSE ncdf_varget cdfid time_counter temps offset numsort 1 count nt time long temps julday 1 5 1979 time jpt nt jpt endif else BEGIN ncdf_varget cdfid time_counter temps offset numsort 1 count nt time long temps julday 1 5 1979 jpt nt endelse ncdf_close cdfid return res end"); 68 68 a[66] = new Array("./Obsolete/nlecan.html", "nlecan.pro", "", " file_comments lit les moyennes annuelles sur maia: u rech eee reee217 TOTEM REF OUTPUTS obsolete categories lecture de NETCDF examples IDL res nlecan nom numsortie79 nbretps param nom in required nom du tableau contenant le champ que l on veut le trouver avec ncdflec fichier var param numsortie79 in required le numero du pas de temps que l on veut sortir du fichier compte a partir de 1 a partir de 79 param nbretps in required nombre de pas de temps a extraire keyword BOITE boite sur laquelle integrer par defaut tt le domaine keyword GRILLE impose la grille a laquelle est rapporte le champ rq permet d aller plus vite ds la lecture keyword TOUT oblige a lire le tableau entier en non pas celui reduit a domdef returns tableau 2d qd la serie ne fait que 1 pas de temps ou 3d valable ds 1 premier tps que pour les tableaux 2d uses common pro restrictions appele par nlec history Sebastien Masson smasson lodyc jussieu fr REF moyenne annuelle grid T nc function nlecan nom numsortie79 nbretps BOITE boite GRILLE grille TOUT tout _EXTRA ex common res 1 anneedepart 1979 gestion du nom de la grille en testant les differentes possibilites et ouverture du fichier if keyword_set grille then begin vargrid grille nomfich prefix moyenne annuelle grid vargrid nc IF version OS_FAMILY EQ unix THEN spawn file iodir nomfich dev null cdfid ncdf_open iodir nomfich varcontient ncdf_varinq cdfid nom endif else begin liste des fichiers pouvant convenir quelsfichiers findfile iodir prefix moyenne annuelle grid IF quelsfichiers 0 EQ THEN liste vide return report LES FICHIERS: iodir prefix moyenne annuelle grid n existe pas for i 0 n_elements quelsfichiers 1 do begin IF version OS_FAMILY EQ unix THEN spawn file quelsfichiers i dev null cdfid ncdf_open quelsfichiers i contient ncdf_inquire cdfid for varid 0 contient nvars 1 do BEGIN ds les fichiers existants on varcontient ncdf_varinq cdfid varid cherche le nom des variables if varcontient name eq nom then BEGIN vargrid strmid quelsfichiers i strpos quelsfichiers i grid 5 1 nom de grille goto grilletrouvee ENDIF endfor ncdf_close cdfid endfor return report La variable nom n existe pas ds les fichiers iodir prefix moyenne annuelle grid endelse grilletrouvee: lecture de certains attributs et de l axe des temps ncdf_attget cdfid nom title value varname string value ncdf_attget cdfid nom units value varunit string value if rstrpos varname eq 1 then varname varname varunit varexp prefix lecture de l axe des temps ncdf_varget cdfid time_counter time offset numsortie79 1 count nbretps time long time julday 12 31 1978 jpt nbretps IF jpt EQ 1 THEN BEGIN caldat time 0 month day year case 1 of year lt 10: s_year 0 string format i1 year year lt 100 and year ge 10 :s_year string format i2 year year ge 100: s_year string format i2 year 1900 endcase vardate annee: s_year endif extraction du tableau qui nous interesse determination du domaine geographique if keyword_set tout then begin nx jpi ny jpj nz jpk glam 1 gphi 1 gdep 1 premierx 0 premiery 0 premierz 0 endif else BEGIN redefinition eventuelle du domaine ajuste a boite a 6 elements on recupere la dim du no9uveau domaine if keyword_set boite then BEGIN Case N_Elements Boite Of 1:Domdef lon1 lon2 lat1 lat2 0 boite 0 GRILLE vargrid _EXTRA ex 2:Domdef lon1 lon2 lat1 lat2 boite 0 boite 1 GRILLE vargrid _EXTRA ex 4:Domdef Boite prof1 prof2 GRILLE vargrid _EXTRA ex 5:Domdef Boite 0:3 0 Boite 4 GRILLE vargrid _EXTRA ex 6:Domdef Boite GRILLE vargrid _EXTRA ex Else:return report Mauvaise Definition de Boite endcase ENDIF grille mask glam gphi gdep nx ny nz premierx premiery premierz ENDELSE if varcontient ndims eq 3 then ncdf_varget cdfid nom res offset premierx premiery numsortie79 1 count nx ny nbretps else ncdf_varget cdfid nom res offset premierx premiery premierz numsortie79 1 count nx ny nz nbretps ncdf_close cdfid return res end"); 69 69 a[67] = new Array("./Obsolete/nlecmois.html", "nlecmois.pro", "", " file_comments lit les fichiers Net Cdf de moyenne mensuel de l experience TOTEM ECMWF qui sont sur maia: u rech eee reee217 TOTEM REF OUTPUTS obsolete keyword BOITE boite sur laquelle integrer par defaut tt le domaine keyword GRILLE impose la grille a laquelle est rapporte le champ rq permet d aller plus vite ds la lecture keyword TOUT oblige a lire le tableau entier en non pas celui reduit a domdef uses common pro history Sebastien Masson smasson lodyc jussieu fr REF moyenne mensuelle 79 81 grid T nc function nlecmois nom numsortie79 nbretps BOITE boite GRILLE grille TOUT tout _EXTRA ex common res 1 annee du nom du 1er fichier annee floor floor numsortie79 1 12 3 3 79 gestion du nom de la grille en testant les differentes possibilites et ouverture du fichier if keyword_set grille then begin vargrid grille nomfich prefix moyenne mensuelle strtrim annee 1 strtrim annee 2 1 grid vargrid nc IF version OS_FAMILY EQ unix THEN spawn file iodir nomfich dev null cdfid ncdf_open iodir nomfich varcontient ncdf_varinq cdfid nom endif else begin liste des fichiers pouvant convenir quelsfichiers findfile iodir prefix moyenne mensuelle strtrim annee 1 strtrim annee 2 1 grid IF quelsfichiers 0 EQ THEN liste vide return report LES FICHIERS: iodir prefix moyenne mensuelle strtrim annee 1 strtrim annee 2 1 grid n existe pas for i 0 n_elements quelsfichiers 1 do begin IF version OS_FAMILY EQ unix THEN spawn file quelsfichiers i dev null cdfid ncdf_open quelsfichiers i contient ncdf_inquire cdfid for varid 0 contient nvars 1 do BEGIN ds les fichiers existants on varcontient ncdf_varinq cdfid varid cherche le nom des variables if varcontient name eq nom then BEGIN vargrid strmid quelsfichiers i strpos quelsfichiers i grid 5 1 nom de grille goto grilletrouvee ENDIF endfor ncdf_close cdfid endfor return report La variable nom n existe pas ds les fichiers iodir prefix moyenne mensuelle strtrim annee 1 strtrim annee 2 1 grid endelse grilletrouvee: lecture de certains attributs et de l axe des temps ncdf_attget cdfid nom title value varname string value ncdf_attget cdfid nom units value varunit string value if rstrpos varname eq 1 then varname varname varunit varexp prefix determination du domaine geographique if keyword_set tout then begin nx jpi ny jpj nz jpk premierx 0 premiery 0 premierz 0 endif else BEGIN redefinition eventuelle du domaine ajuste a boite a 6 elements on recupere la dim du no9uveau domaine if keyword_set boite then BEGIN Case N_Elements Boite Of 1:Domdef lon1 lon2 lat1 lat2 0 boite 0 GRILLE vargrid _EXTRA ex 2:Domdef lon1 lon2 lat1 lat2 boite 0 boite 1 GRILLE vargrid _EXTRA ex 4:Domdef Boite prof1 prof2 GRILLE vargrid _EXTRA ex 5:Domdef Boite 0:3 0 Boite 4 GRILLE vargrid _EXTRA ex 6:Domdef Boite GRILLE vargrid _EXTRA ex Else:return report Mauvaise Definition de Boite endcase ENDIF grille mask glam gphi gdep nx ny nz premierx premiery premierz ENDELSE determination du nombre de pas de tps a extraire ds ce fichier numsortie numsortie79 12 annee 79 if nbretps numsortie 1 gt 36 then nt 36 numsortie 1 else nt nbretps numsortie numsortie79 12 annee 79 if varcontient ndims eq 3 then ncdf_varget cdfid nom res offset premierx premiery numsortie 1 count nx ny nt else ncdf_varget cdfid nom res offset premierx premiery premierz numsortie 1 count nx ny nz nt rappel en boucle de nlec si il faut ouvrir de nouveaux fichiers pour constituer la serie temporelle if nbretps gt 36 numsortie 1 then begin if varcontient ndims eq 3 then res res nlecmois nom numsortie79 nt nbretps nt tout tout GRILLE vargrid BOITE boite else BEGIN res res nlecmois nom numsortie79 nt nbretps nt tout tout GRILLE vargrid BOITE boite res reform res nx ny nz nbretps over ENDELSE ncdf_varget cdfid time_counter temps offset numsortie 1 count nt time long temps julday 12 31 1978 time jpt nt jpt endif else BEGIN ncdf_varget cdfid time_counter temps offset numsortie 1 count nt time long temps julday 12 31 1978 jpt nt endelse ncdf_close cdfid IF n_elements time EQ 1 THEN BEGIN caldat time m d y if m lt 10 then m 0 string format i1 m else m string format i2 m if n_elements langage EQ 0 then langage non definit if langage EQ gb then vardate strtrim y 1 string format C CMoA 31 m 1 ELSE vardate string format C CMoA 31 m 1 strtrim y 1 endif return res end"); … … 243 243 a[241] = new Array("./ToBeReviewed/MATRICE/union.html", "union.pro", "", " NAME:union PURPOSE:calcule l union de 2 matrices D ENTIERS POSITIFS CATEGORY:calcule sur les matrices CALLING SEQUENCE:res union a b INPUTS:a et b:arrays of positive integers which need not be sorted Duplicate elements are ignored as they have no effect on the result KEYWORD PARAMETERS: OUTPUTS:tableau COMMON BLOCKS: SIDE EFFECTS: The empty set is denoted by an array with the first element equal to 1 RESTRICTIONS: These functions will not be efficient on sparse sets with wide ranges as they trade memory for efficiency The HISTOGRAM function is used which creates arrays of size equal to the range of the resulting set EXAMPLE: a 2 4 6 8 b 6 1 3 2 union a b 1 2 3 4 6 8 Elements in either set MODIFICATION HISTORY: http: www dfanning com tips set_operations html FUNCTION union a b IF a 0 LT 0 THEN RETURN b A union NULL a IF b 0 LT 0 THEN RETURN a B union NULL b RETURN Where Histogram a b OMin omin omin Return combined set END"); 244 244 a[242] = new Array("./ToBeReviewed/MATRICE/zeroun.html", "zeroun.pro", "", " NAME:zeroun PURPOSE:renvoie un vecteur ou une matrice constitue de o et de 1 en alternance CATEGORY:function matrices CALLING SEQUENCE:resultat zeroun n1 n2 INPUTS: n1 nombre d elements dans la premiere dimension n2 nombre d elements dans la deuxieme dimension KEYWORD PARAMETERS: OUTPUTS:resultat COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY: Sebastien Masson smasson lodyc jussieu fr 1 12 98 function zeroun n1 n2 CASE N_PARAMS OF 1:return findgen n1 mod 2 2:BEGIN if fix n1 2 EQ n1 2 then BEGIN nombre pair de colonnes res findgen n1 1 n2 mod 2 return res 0:n1 1 ENDIF ELSE return findgen n1 n2 mod 2 nombre impair de colonnes END else: return report Mauvais nombre de parametre dans l appel de ZEROUN endcase end"); 245 a[243] = new Array("./ToBeReviewed/PLOTS/DESSINE/bar_plot.html", "bar_plot.pro", "", " Id: bar_plot pro 35 2006 05 02 14:44:47Z pinsard Copyright c 1990 2000 Research Systems Inc All rights reserved Unauthorized reproduction prohibited PURPOSE: Create a bar graph or overplot on an existing one CATEGORY: Graphics CALLING SEQUENCE: BAR_PLOT Values INPUTS: Values: A vector containing the values to be represented by the bars Each element in VALUES corresponds to a single bar in the output KEYWORD PARAMETERS: BASELINES: A vector the same size as VALUES that contains the base value associated with each bar If not specified a base value of zero is used for all bars COLORS: A vector the same size as VALUES containing the color index to be used for each bar If not specified the colors are selected based on spacing the color indices as widely as possible within the available colors specified by D N_COLORS BARNAMES: A string array containing one string label per bar If the bars are vertical the labels are placed beneath them If horizontal rotated bars are specified the labels are placed to the left of the bars TITLE: A string containing the main title to for the bar plot XTITLE: A string containing the title for the X axis YTITLE: A string containing the title for the Y axis BASERANGE: A floating point scalar in the range 0 0 to 1 0 that determines the fraction of the total available plotting area in the direction perpendicular to the bars to be used If not specified the full available area is used BARWIDTH: A floating point value that specifies the width of the bars in units of nominal bar width The nominal bar width is computed so that all the bars and the space between them set by default to 20 of the width of the bars will fill the available space optionally controlled with the BASERANGE keyword BARSPACE: A scalar that specifies in units of nominal bar width the spacing between bars For example if BARSPACE is 1 0 then all bars will have one bar width of space between them If not specified the bars are spaced apart by 20 of the bar width BAROFFSET: A scalar that specifies the offset to be applied to the first bar in units of nominal bar width This keyword allows for example different groups of bars to be overplotted on the same graph If not specified the default offset is equal to BARSPACE OUTLINE: If set this keyword specifies that an outline should be drawn around each bar OVERPLOT: If set this keyword specifies that the bar plot should be overplotted on an existing graph BACKGROUND: A scalar that specifies the color index to be used for the background color By default the normal IDL background color is used ROTATE: If set this keyword indicates that horizontal rather than vertical bars should be drawn The bases of horizontal bars are on the left Y axis and the bars extend to the right OUTPUTS: A bar plot is created or an existing one is overplotted EXAMPLE: By using the overplotting capability it is relatively easy to create stacked bar charts or different groups of bars on the same graph For example if ARRAY is a two dimensional array of 5 columns and 8 rows it is natural to make a plot with 5 bars each of which is a stacked composite of 8 sections First create a 2D COLORS array equal in size to ARRAY that has identical color index values across each row to ensure that the same item is represented by the same color in all bars With ARRAYS and COLORS defined the following code fragment illustrates the creation of stacked bars note that the number of rows and columns is arbitrary : Y RANGE 0 ymax Scale range to accommodate the total bar lengths BASE INTARR NROWS FOR I 0 NROWS 1 DO BEGIN BAR_PLOT ARRAY I COLORS COLORS I BASELINES BASE BARWIDTH 0 75 BARSPACE 0 25 OVER I GT 0 BASE BASE ARRAY I ENDFOR To plot each row of ARRAY as a clustered group of bars within the same graph use the BASERANGE keyword to restrict the available plotting region for each set of bars The sample code fragment below illustrates this method: FOR I 0 NROWS 1 DO BAR_PLOT ARRAY I COLORS COLORVECT BARWIDTH 0 8 BARSPACE 0 2 BAROFFSET I 1 0 BARSPACE NCOLS OVER I GT 0 BASERANGE 0 19 where NCOLS is the number of columns in ARRAY and COLORVECT is a vector containing the color indices to be used for each group of bars In this example each group uses the same set of colors but this could easily be changed MODIFICATION HISTORY: August 1990 T J Armitage RSI initial programming Replacement for PLOTBAR and OPLOTBAR routines written by William Thompson September 1990 Steve Richards RSI changed defaults to improve the appearance of the bar plots in the default mode Included spacing the bars slightly pro bar_plot values baselines baselines colors colors barnames barnames title title xtitle xtitle ytitle ytitle baserange baserange barwidth barwidth barspace barspace baroffset baroffset outline outline overplot overplot background background rotate rotate _EXTRA ex if n_params d eq 0 then begin Print call return if no parameters print bar_test values baselines baselines colors colors barnames barnames print title title xtitle xtitle ytitle ytitle baserange baserange print barwidth barwidth barspace barspace baroffset baroffset print outline outline overplot overplot background background print rotate rotate return endif nbars n_elements values Determine number of bars Baselines bars extend from baselines through values default 0 if not keyword_set baselines then baselines intarr nbars Default colors spaced evenly in current color table if not keyword_set colors then colors fix d n_colors float nbars indgen nbars 0 5 Labels for the individual bars none by default if not keyword_set barnames then barnames strarr nbars Main title if not keyword_set title then title Centered title under X axis if not keyword_set xtitle then xtitle Title for Y axis if not keyword_set ytitle then ytitle Fraction 0 1 of full X range to use if not keyword_set baserange then baserange 1 0 Space betw bars taken from nominal bar widths default is none If not keyword_set barspace then barspace 0 2 Bar width scaling factor relative to nominal if not keyword_set barwidth then barwidth 1 0 barspace barspace nbars Initial X offset in scaled bar widths default is none if not keyword_set baroffset then baroffset barspace barwidth Outline of bars default is none outline keyword_set outline Overplot do not erase the existing display default is to create new plot overplot keyword_set overplot Background color index defaults to 0 usually black if not specified if not keyword_set background then background 0 Rotate make horizontal bars default is vertical bars rotate keyword_set rotate mnB MIN baselines MAX mxB NAN mnV MIN values MAX mxV NAN range mnB mxV Maximum of bases values if rotate then begin Horizontal bars if x range 0 eq 0 and x range 1 eq 0 Determine range for X axis then xrange range else xrange x range Or use range specified if y range 0 eq 0 and y range 1 eq 0 Plot will calculate then defaults for X but not yrange 0 n_elements values for Ys so fill in here else yrange y range Axis perpend to bars yticks 1 Suppress ticks in plot ytickname strarr 2 xticks 0 xtickname strarr 1 endif else begin Vertical bars if y range 0 eq 0 and y range 1 eq 0 Determine range for Y axis then yrange range else yrange y range Or use range specified xrange x range Axis perpend to bars xticks 1 Suppress ticks in plot xtickname strarr 2 yticks 0 ytickname strarr 1 endelse if overplot eq 0 then Create new plot no data plot values nodata title title xtitle xtitle ytitle ytitle noerase overplot xrange xrange yrange yrange xticks xticks xtickname xtickname yticks yticks ytickname ytickname xstyle 1 ystyle 1 data background background _EXTRA ex if rotate then begin Horizontal bars base_win y window Window range in Y scal_fact x s Scaling factors tick_scal_fact y s Tick scaling factors endif else begin Vertical bars base_win x window Window range in X scal_fact y s Scaling factors tick_scal_fact x s Tick scaling factors endelse winrange baserange base_win 1 base_win 0 Normal window range barsize barwidth winrange nbars Normal bar width winoffset base_win 0 baroffset barsize Normal first offset bases scal_fact 0 scal_fact 1 baselines Baselines in normal coor normal scal_fact 0 scal_fact 1 values Values in normal coor barstart indgen nbars barsize barspace winrange nbars Coor at left edges tickv winoffset barstart 0 5 barsize Tick coor centered for i 0 nbars 1 do begin Draw the bars width winoffset barstart i barstart i Compute bar width barstart i barsize barstart i barsize length bases i normal i normal i bases i Compute bar length if rotate then begin Horizontal bars x length X axis is length axis y width Y axis is width axis endif else begin Vertical bars x width X axis is width axis y length Y axis is length axis endelse polyfill x y color colors i normal Polyfill with color if outline then plots x y normal Outline using p color endfor tickv tickv tick_scal_fact 0 tick_scal_fact 1 Locations of the ticks if rotate then Label the bars Y axis axis yaxis 0 ystyle 1 yticks nbars 1 ytickv tickv ytickname barnames yticklen 0 0 else Label the bars X axis axis xaxis 0 xstyle 1 xticks nbars 1 xtickv tickv xtickname barnames xticklen 0 0 return end");245 a[243] = new Array("./ToBeReviewed/PLOTS/DESSINE/bar_plot.html", "bar_plot.pro", "", " Id: bar_plot pro 97 2006 06 09 15:18:59Z pinsard Copyright c 1990 2000 Research Systems Inc All rights reserved Unauthorized reproduction prohibited PURPOSE: Create a bar graph or overplot on an existing one CATEGORY: Graphics CALLING SEQUENCE: BAR_PLOT Values INPUTS: Values: A vector containing the values to be represented by the bars Each element in VALUES corresponds to a single bar in the output KEYWORD PARAMETERS: BASELINES: A vector the same size as VALUES that contains the base value associated with each bar If not specified a base value of zero is used for all bars COLORS: A vector the same size as VALUES containing the color index to be used for each bar If not specified the colors are selected based on spacing the color indices as widely as possible within the available colors specified by D N_COLORS BARNAMES: A string array containing one string label per bar If the bars are vertical the labels are placed beneath them If horizontal rotated bars are specified the labels are placed to the left of the bars TITLE: A string containing the main title to for the bar plot XTITLE: A string containing the title for the X axis YTITLE: A string containing the title for the Y axis BASERANGE: A floating point scalar in the range 0 0 to 1 0 that determines the fraction of the total available plotting area in the direction perpendicular to the bars to be used If not specified the full available area is used BARWIDTH: A floating point value that specifies the width of the bars in units of nominal bar width The nominal bar width is computed so that all the bars and the space between them set by default to 20 of the width of the bars will fill the available space optionally controlled with the BASERANGE keyword BARSPACE: A scalar that specifies in units of nominal bar width the spacing between bars For example if BARSPACE is 1 0 then all bars will have one bar width of space between them If not specified the bars are spaced apart by 20 of the bar width BAROFFSET: A scalar that specifies the offset to be applied to the first bar in units of nominal bar width This keyword allows for example different groups of bars to be overplotted on the same graph If not specified the default offset is equal to BARSPACE OUTLINE: If set this keyword specifies that an outline should be drawn around each bar OVERPLOT: If set this keyword specifies that the bar plot should be overplotted on an existing graph BACKGROUND: A scalar that specifies the color index to be used for the background color By default the normal IDL background color is used ROTATE: If set this keyword indicates that horizontal rather than vertical bars should be drawn The bases of horizontal bars are on the left Y axis and the bars extend to the right OUTPUTS: A bar plot is created or an existing one is overplotted EXAMPLE: By using the overplotting capability it is relatively easy to create stacked bar charts or different groups of bars on the same graph For example if ARRAY is a two dimensional array of 5 columns and 8 rows it is natural to make a plot with 5 bars each of which is a stacked composite of 8 sections First create a 2D COLORS array equal in size to ARRAY that has identical color index values across each row to ensure that the same item is represented by the same color in all bars With ARRAYS and COLORS defined the following code fragment illustrates the creation of stacked bars note that the number of rows and columns is arbitrary : Y RANGE 0 ymax Scale range to accommodate the total bar lengths BASE INTARR NROWS FOR I 0 NROWS 1 DO BEGIN BAR_PLOT ARRAY I COLORS COLORS I BASELINES BASE BARWIDTH 0 75 BARSPACE 0 25 OVER I GT 0 BASE BASE ARRAY I ENDFOR To plot each row of ARRAY as a clustered group of bars within the same graph use the BASERANGE keyword to restrict the available plotting region for each set of bars The sample code fragment below illustrates this method: FOR I 0 NROWS 1 DO BAR_PLOT ARRAY I COLORS COLORVECT BARWIDTH 0 8 BARSPACE 0 2 BAROFFSET I 1 0 BARSPACE NCOLS OVER I GT 0 BASERANGE 0 19 where NCOLS is the number of columns in ARRAY and COLORVECT is a vector containing the color indices to be used for each group of bars In this example each group uses the same set of colors but this could easily be changed MODIFICATION HISTORY: August 1990 T J Armitage RSI initial programming Replacement for PLOTBAR and OPLOTBAR routines written by William Thompson September 1990 Steve Richards RSI changed defaults to improve the appearance of the bar plots in the default mode Included spacing the bars slightly pro bar_plot values baselines baselines colors colors barnames barnames title title xtitle xtitle ytitle ytitle baserange baserange barwidth barwidth barspace barspace baroffset baroffset outline outline overplot overplot background background rotate rotate _EXTRA ex if n_params d eq 0 then begin Print call return if no parameters print bar_test values baselines baselines colors colors barnames barnames print title title xtitle xtitle ytitle ytitle baserange baserange print barwidth barwidth barspace barspace baroffset baroffset print outline outline overplot overplot background background print rotate rotate return endif nbars n_elements values Determine number of bars Baselines bars extend from baselines through values default 0 if not keyword_set baselines then baselines intarr nbars Default colors spaced evenly in current color table if not keyword_set colors then colors fix d n_colors float nbars indgen nbars 0 5 Labels for the individual bars none by default if not keyword_set barnames then barnames strarr nbars Main title if not keyword_set title then title Centered title under X axis if not keyword_set xtitle then xtitle Title for Y axis if not keyword_set ytitle then ytitle Fraction 0 1 of full X range to use if not keyword_set baserange then baserange 1 0 Space betw bars taken from nominal bar widths default is none If not keyword_set barspace then barspace 0 2 Bar width scaling factor relative to nominal if not keyword_set barwidth then barwidth 1 0 barspace barspace nbars Initial X offset in scaled bar widths default is none if not keyword_set baroffset then baroffset barspace barwidth Outline of bars default is none outline keyword_set outline Overplot do not erase the existing display default is to create new plot overplot keyword_set overplot Background color index defaults to 0 usually black if not specified if not keyword_set background then background 0 Rotate make horizontal bars default is vertical bars rotate keyword_set rotate mnB MIN baselines MAX mxB NAN mnV MIN values MAX mxV NAN range mnB mxV Maximum of bases values if rotate then begin Horizontal bars if x range 0 eq 0 and x range 1 eq 0 Determine range for X axis then xrange range else xrange x range Or use range specified if y range 0 eq 0 and y range 1 eq 0 Plot will calculate then defaults for X but not yrange 0 n_elements values for Ys so fill in here else yrange y range Axis perpend to bars yticks 1 Suppress ticks in plot ytickname strarr 2 xticks 0 xtickname strarr 1 endif else begin Vertical bars if y range 0 eq 0 and y range 1 eq 0 Determine range for Y axis then yrange range else yrange y range Or use range specified xrange x range Axis perpend to bars xticks 1 Suppress ticks in plot xtickname strarr 2 yticks 0 ytickname strarr 1 endelse if overplot eq 0 then Create new plot no data plot values nodata title title xtitle xtitle ytitle ytitle noerase overplot xrange xrange yrange yrange xticks xticks xtickname xtickname yticks yticks ytickname ytickname xstyle 1 ystyle 1 data background background _EXTRA ex if rotate then begin Horizontal bars base_win y window Window range in Y scal_fact x s Scaling factors tick_scal_fact y s Tick scaling factors endif else begin Vertical bars base_win x window Window range in X scal_fact y s Scaling factors tick_scal_fact x s Tick scaling factors endelse winrange baserange base_win 1 base_win 0 Normal window range barsize barwidth winrange nbars Normal bar width winoffset base_win 0 baroffset barsize Normal first offset bases scal_fact 0 scal_fact 1 baselines Baselines in normal coor normal scal_fact 0 scal_fact 1 values Values in normal coor barstart indgen nbars barsize barspace winrange nbars Coor at left edges tickv winoffset barstart 0 5 barsize Tick coor centered for i 0 nbars 1 do begin Draw the bars width winoffset barstart i barstart i Compute bar width barstart i barsize barstart i barsize length bases i normal i normal i bases i Compute bar length if rotate then begin Horizontal bars x length X axis is length axis y width Y axis is width axis endif else begin Vertical bars x width X axis is width axis y length Y axis is length axis endelse polyfill x y color colors i normal Polyfill with color if outline then plots x y normal Outline using p color endfor tickv tickv tick_scal_fact 0 tick_scal_fact 1 Locations of the ticks if rotate then Label the bars Y axis axis yaxis 0 ystyle 1 yticks nbars 1 ytickv tickv ytickname barnames yticklen 0 0 else Label the bars X axis axis xaxis 0 xstyle 1 xticks nbars 1 xtickv tickv xtickname barnames xticklen 0 0 return end"); 246 246 a[244] = new Array("./ToBeReviewed/PLOTS/DESSINE/plt.html", "plt.pro", "", " NAME: PLT PURPOSE: trace des graphes horizontaux cartes CATEGORY: Graphics trace des graphes horizontaux CALLING SEQUENCE: plt champ min max INPUTS: champ: le champ dont on veut faire la carte horizontale champ peut etre de 2 types: 1 an array if needed its mean along the z and t direction will be automatically performed 2 une structure repondant aux critaire specifies par litchamp pro cf IDL xhelp litchamp ces ARGUMENTS ne sont pas obligatoires: MAX: valeur maximum que l on veut prendre en compte dans le trace des contours Par defaut on prend le max de tab1 sur les pts mer MIN: valeur minimum que l on veut prendre en compte dans le trace des contours Par defaut on prend le min de tab1 sur les pts mer KEYWORD PARAMETERS: BOXZOOM:vecteur indiquant la zone geographique sur laquelle doit etre faite la coupe Si BOXZOOM a : 1 element : l extraction est faite sur lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: l extraction est faite sur lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: l extraction est faite sur Boxzoom 0 max gdept gdepw 5 elements: l extraction est faite sur Boxzoom 0:3 0 Boxzoom 4 6 elements: l extraction est faite sur Boxzoom Ou lon1 lon2 lat1 lat2 sont les variables globales definies lors du dernier domdef REALCONT:Permet de dessiner les continents definits ds IDL REALCONT peut prendre deux formes: REALCONT: on dessine les continents a la place du mask REALCONT 2 on dessine le contours des continents par dessus le dessin masque ceci permet de voir si le masque correspond bien aux continents reels CB_TITLE: le titre de la colorbar CB_SUBTITLE: le soustitre de la colorbar CB_CHARSIZE: The character size of the color bar annotations CMREF: la longeur en cm sur le papier que doit faire la fleche de norme normeref par defaut ajuste au dessin et compris entre 5 et 1 5 cm COAST_COLOR: the color of the coastline defaut value is 0 black COAST_THICK: the thickness of the coastline defaut value is 1 CONT_NOFILL: activer pour ne pas remplir les points masques pour les laisser en transparent Rq: on trace qd meme le contour du mask CONT_COLOR: the color of the continent defaut value is d n_colors 1 white CONTINTERVALLE: lorsque CONTOUR est active valeur d un intervalle entre deux isolignes traces par un trait Il peut ainsi etre different de celui specifie par INTERVALLE qui cas ce cas ne controle que les isolignes coloriees en couleurs Si aucun min n est specifie on choisit un contour min qui va bien avec l intervalle specifie Si ce mot cle n est pas specifie on trace 20 isolignes du min au max CONTLABEL: un entier n lorsque CONTOUR est active si n different de 0 choisit le type de label correspondant aux cas n pour les isolignes tracees par un trait Pour specifier le type de label du contour en couleur utiliser LABEL CONTMAX: lorsque CONTOUR est active valeur maximum que l on veut prendre en compte dans le trace des isolignes traces par un trait Par defaut on prend le max sur les pts mer du tableau passe ds le mot cle CONTOUR CONTMIN: lorsque CONTOUR est active valeur minimum que l on veut prendre en compte dans le trace des isolignes traces par un trait Par defaut on prend le max sur les pts mer du tableau passe ds le mot cle CONTOUR CONTNLEVEL: lorsque CONTOUR est active nombre de contours trace par un trait a dessiner actif si CONTLABEL 0 par defaut 20 CONTOUR: si on veut tracer les contours d un champ different que celui que l on dessin en couleur par ex E P en couleur et QSR en contours Doit etre un champ repondant aux meme caracteristiques que l argument numero 1 de plt GRIDTYPE: U T V W ou F pour specifer eventuellement la grille a laquelle est rattache le champ Rq: il afaut mieux utiliser ds ce cas une structure comme champ INTERVALLE: valeur d un intervalle entre deux isolignes Si aucun min n est specifie on choisit un contour min qui va bien avec l intervalle specifie Si ce mot cle n est pas specifie on trace 20 isolignes du min au max Rq: Qd CONTOUR est active INTERVALLE ne specifie que intervalle entre 2 isolignes coloriees en couleur Pour specifier l intervalle entre 2 isolignes traces par un trait utiliser CONTINTERVALLE INV: inverse le vecteur couleur utilise pour colorier le graphe sans toucher au noir au blanc et a la palette utilisee LABEL: un entier n si n different de 0 choisit le type de label correspondant aux cas n cf label pro Rq: Qd CONTOUR est active ne specifie le type de label que pour les isolignes coloriees en couleur Pour celles tracees par un trait utiliser CONTLABEL LANDSCAPE: oblige la feuille ou le fenetre a l ecran a etre en position allongee LCT: entier designant le numero de la palette de couleur que l on veut utiliser pour le plot MAP:Mot cle a actine losque l on veut faire une projection Ce mot cle peut etre de 2 formes: MAP P0lat P0lon Rot Pour la description de ces 3 valeurs cf l aide en ligne de MAP_SET MAP: dans ce cas map est calcule tout seul et vaut: map 0 lon1 lon2 2 0 Rq: Un bon moyen de choisir sa projection est la valeur du vecteur MAP est d utiliser la demo d IDL5 2: IDL demo Puis choisir earth sciences et mapping Rq2: Par defaut c est une projection cylindrique qui est effectuee avec ou sans le mot cle map Si on veut une autre projection MAP doit etre active et il faut rajouter le mot cle: nom_projection par ex pour une projection polaire centree sur le pole sud: IDL domdef 180 180 90 45 IDL plt tab stereo map 90 0 0 labmap: corresponds to label keywords of map_set Defaut definition is labmap 1 MAXIN: permet de specifier la valeur maximum que l on veut prendre en compte dans le trace des contours a l aide d un mot cle plutot que par l argument max Si l argument et le mot cle sont specifies en meme temps c est la valeur specifiee par le mot cle qui est retenue MININ: permet de specifier la valeur minimum que l on veut prendre en compte dans le trace des contours a l aide d un mot cle plutot que par l argument min Si l argument et le mot cle sont specifies en meme temps c est la valeur specifiee par le mot cle qui est retenue NLEVEL: nombre de contours a dessiner par defaut 20 actif si LABEL 0 ou n est pas specifie NOCOLORBAR: activer si on ne veut pas de colorbar NOCONTOUR: activer si on ne veut pas de contour mais juste les couleurs NOFILL: activer si on veut juste les contours en noir et blanc sur fond blanc NOERASE: activer pour faire un dessin a l ecran sans creer une nouvelle fenetre NORMEREF: la norme de la fleche de reference par defaut on essaie de faire qqch qui colle pas trop mal NOTRI: pour forcer a ne pas utiliser de triangulation Attention dans ce cas le trace ne marchera que si la grille est non deformee cad chaque pts d une longitude donnee a la meme latitude et chaque pts d une latitude donnee a la meme longitude sauf si on utilise le mot clef CELL_FILL 2 Rq si le champ contient des points a values f_nan alors on fait qd meme une triangulation OVERPLOT: pour faire un plt par dessus un autre Rq: contrairemnet a l utilisation de CONTOUR ou de VECTEUR l utilisation de ce mot clef ne modifie pas la legende ou et la barre de couleur PETITDESSIN: vecteur de 3 ou 4 elements applique pour faire un dessin sur une petite portion de feuille ou d ecran il delimite la zone ds laquelle va etre fait le dessin si il a 4 elements: il est alors constitute des coordonnees exprime en cm reperes par rapport au coin en bas a gauche de la feuille ou de la fenetre en portrait comme en landscape du coin en bas a gauche et du coin en haut a droite de la zone de dessin si il a 3 elements: Ds ce cas on divise la fenetre ou l ecran en PETITDESSIN 0 colonnes en PETITDESSIN 1 lignes le dessin se faisant ds la case numero PETITDESSIN 2 La numerotation commencant en haut a gauche par le numero 1 et suivant apres dans le sens de l ecriture Par defaut on fait un dessin occupant la plus grande place possible tout en concervant le rapport d aspect sauf qd REMPLI est active PORTRAIT: oblige la feuille ou la fenetre a etre en position debout POST: faire une sortie postscript Ne marche que si on fait un seul dessin sur la feuille Si on fait plusieurs dessins utiliser ps ou plein2dessins REMPLI:oblige le dessin a occuper l espace maximum definit par petitdessin REVERSE_X: pour inverser l axe des x et aussi le dessin REVERSE_Y: pour inverser l axe des y et aussi le dessin STRICTFILL: activer ce mot clef pour que le remplissage des contours ce fasse precisement entre le min et le max specifie en laissant en banc les valeurs inferieurs au min specifie et superieurs au max specifie STYLE: style de tracer a adopter pour dessiner les isolignes par defaut style 0 cf style pro UNLABSUR: entier n specifant qu on ne labelle qu un contour sur n Par defaut unlabsur 2 UNSUR2: si on veut tracer un countour sur deux par defaut trace tous les contours UNVECTSUR:un scalaire n on un tableau a 2 elements n1 n2 dans le premier cas on tracera un vecteur sur n suivant les x et les y dans le second cas on tracera un vecteur sur n1 suivant x et un vecteur sur n2 suivant y Rq pour tracer tous les vecteurs suivant y et 1 sur 2 suivant x mettre unvectsur 2 1 Rq: ce mot cle est passe ds _extra VECTCOLOR: la couleur de la fleche Par defaut noir couleur 0 VECTEUR: une structure a 2 elements contenant les 2 champs U et V des valeurs de la composante zonale et meridienne du champ de vecteurs a tracer Ces champs peuvent etre un tableau ou une structure par ex: vecteur matriceu:lec unsurface matricev:lec vnsurface rq:le nom des elements de vecteur n a aucune importance vecteur u:lec unsurface v:lec vnsurface convient aussi VECTMIN norme minimum des vecteurs a tracer VECTMAX norme maximum des vecteurs a tracer VECTTHICK l epaissuer de la fleche par defaut 1 WINDOW: numero de la fenetre ou l on veut faire le graphe permet d ouvrir plusieurs fenetres par defaut on ouvre IDL0 YXASPECT: rapport d echelle entre y et x par ex: 1 pour un repere orthonorme 2 si l axe des y est deux fois plus dilate que celui des x Par defaut on adapte pour occupe une grande partie de la feuille en sortie postScript ou pour cree une fenetre pas trop etiree ZEROMIDDLE: fo force the middle of the colorbar to be equal to 0 force max max abs min max and min max COMMON BLOCKS: common pro SIDE EFFECTS: RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY: Sebastien Masson smasson lodyc jussieu fr 7 1999 Sebastien Masson 08 02 2000 checkfield and notri keyword or triangule 1 pro plt tab1 giventype givenmin givenmax REALCONT realcont CONTOUR contour INTERVALLE intervalle INV inv GRIDTYPE gridtype BOXZOOM boxzoom CONTINTERVALLE contintervalle LABEL label CONTLABEL contlabel STYLE style CONTMAX contmax CONTMIN contmin NLEVEL nlevel CONTNLEVEL contnlevel VECTEUR vecteur MAP map MININ minin MAXIN maxin CONT_NOFILL cont_nofill USETRI usetri NOTRI notri MASKFILL maskfill DUPLICATE duplicate STRICTFILL strictfill OVERPLOT overplot DECIMATETRI decimatetri LABMAP labmap _extra ex include common cm_4mesh cm_4data IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 pour key_performance I preparation de l environnement graphique et petites verifications I1 verification du type de grille associe a tab1 if keyword_set gridtype then vargrid gridtype if keyword_set vecteur AND NOT keyword_set gridtype then BEGIN vargrid litchamp tab1 grid if vargrid eq then BEGIN vargrid xquestion What is the grid associated to the data to contour T chkwidget vargrid strupcase vargrid endif ENDIF I2 lecture du champ et checkup if keyword_set boxzoom AND n_elements contour ne 4 then BEGIN savedbox 1b saveboxparam boxparam4plt dat END if n_elements giventype NE 0 then type giventype if n_elements givenmin NE 0 then min givenmin if n_elements givenmax NE 0 then max givenmax if n_elements minin NE 0 then min minin if n_elements maxin NE 0 then max maxin checktypeminmax plt TYPE type MIN min MAX max _extra ex z2d checkfield tab1 plt TYPE type BOXZOOM boxzoom DIREC direc VECTEUR vecteur _extra ex if z2d 0 EQ 1 then BEGIN IF keyword_set savedbox THEN restoreboxparam boxparam4plt dat return ENDIF IF n_elements usetri EQ 0 THEN BEGIN do we have holes in the triangulation holeintri n_elements triangles_list 3 LT jpi 1 keyword_set key_periodic jpj 1 2 the triangulation must be used to draw the data do we have a triangulation wehavetri triangles_list 0 NE 1 the triangulation must be used to draw the continents if we make a map are we periodic and nx jpi CASE strupcase vargrid OF T :nx nxt W :nx nxt U :nx nxu V :nx nxv F :nx nxf ENDCASE mapperio keyword_set map keyword_set key_periodic nx eq jpi usetri wehavetri wehavetri holeintri mapperio keyword_set key_irregular 2 notri ENDIF I3 reinitialisation p x y Rq: on ne reinitialise pas qd on rapelle plt en boucle pour utiliser contour if n_elements contour ne 4 AND NOT keyword_set overplot then reinitplt z invert I4 attribution du mask et des tableaux de longitude et latitude IF strupcase vargrid EQ W THEN profond firstzw NE 0 ELSE profond firstzt NE 0 do we need to extract now the triangulation that will be use for contouring the data if keyword_set profond OR usetri EQ 0 AND vargrid EQ T OR vargrid EQ W OR usetri NE 2 AND vargrid NE T AND vargrid NE W THEN BEGIN grille mask glam gphi gdep nx ny nz firstx firsty firstz lastx lasty lastz forplt _extra ex ENDIF ELSE BEGIN grille mask glam gphi gdep nx ny nz firstx firsty firstz lastx lasty lastz TRI trifield forplt _extra ex ENDELSE I5 determination du mi:min et du ma:max de z2d ainsi que de max: max et min: min pour le dessin masknan finite z2d nan total masknan NE n_elements z2d faudra t il faire un autoscale autoscale testvar var min EQ testvar var max AND NOT keyword_set intervalle determineminmax z2d mask mi ma glam gphi MININ min MAXIN max nan nan INTERVALLE intervalle usetri usetri _extra ex if z2d 0 EQ 1 THEN GOTO sortie on fait un autoscale si besoin if autoscale then autoscale min max intervalle II mise en place du dessin sur la fenetre ou la page et ouverture eventuelle de la fenetre et de la page if n_elements contour NE 4 AND NOT keyword_set overplot THEN placedessin plt posfenetre posbar CONTOUR contour VECTEUR vecteur MAP map DIREC direc _extra ex III habillage du dessin labels style axe III1 choix des labels if keyword_set intervalle AND NOT keyword_set label then label 1 if keyword_set label eq 0 then cas 0 else cas label label cas min max ncontour level_z2d colnumb NLEVEL nlevel INTERVALLE intervalle strictfill strictfill III2 choix de style if not keyword_set style then style 0 style style level_z2d linestyle thick if keyword_set inv then colnumb reverse colnumb III3 definition des axes if NOT keyword_set overplot THEN axe xy _EXTRA ex IV dessin extrapolation des donnees sur les terres et seuillage if keyword_set nan then begin z2d where masknan EQ 0 max ENDIF ELSE masknan 1 filling the mask values we fill only masknan or we fill mask masknan IF keyword_set nan AND keyword_set cont_nofill THEN z2d remplit z2d nite 1 vargrid NE T AND vargrid NE W mask masknan _extra ex ELSE z2d remplit z2d nite 1 vargrid NE T AND vargrid NE W keyword_set nan 1 keyword_set cont_nofill 1 n_elements maskfill NE 0 mask mask masknan _extra ex IF keyword_set strictfill EQ 0 AND n_elements maskfill EQ 0 then z2d min z2d max if n_elements maskfill NE 0 then BEGIN z2d temporary z2d mask masknan if maskfill NE 0 then z2d temporary z2d maskfill 1 mask masknan ENDIF check the mask and the triangulation according to the grid type and nan values si on fait un dessin en profondeur on redefinit une triangulation sur le zoom cette triangulation sera utilisee pour tracer le champ on utilise tmask pour que les trous de cette triangulation soient bien les memes que ceux utilises pour tracer le masque et correspondent bien au trous qu il y a a cette nouvelle profondeur if keyword_set profond OR keyword_set cont_nofill AND usetri GE 1 AND vargrid EQ T OR vargrid EQ W OR usetri EQ 2 AND vargrid NE T AND vargrid NE W then BEGIN trifield triangule tmask firstx:lastx firsty:lasty firstz coinmonte coinmontemask coindescend coindescendmask keep_cont cont_nofill _extra ex indicezoommask lindgen jpi jpj firstx:lastx firsty:lasty ENDIF triangulation for nan mask if keyword_set nan then BEGIN trinan triangule masknan keep_cont coinmonte coinmontenan coindescend coindescendnan indicezoomnan lindgen jpi jpj firstx:lastx firsty:lasty ENDIF IF n_elements twin_corners_up EQ 0 THEN coinmontemask 1 ELSE coinmontemask twin_corners_up IF n_elements twin_corners_dn EQ 0 THEN coindescendmask 1 ELSE coindescendmask twin_corners_dn if vargrid EQ T OR vargrid EQ W then BEGIN glammsk glam gphimsk gphi ENDIF ELSE begin decoupe terre: pour que le trace des cotes soit propre on essaye de prendre des points en pour la terre comme ca on ne voit pas le decalage des grilles c est ce que fait decoupeterre au passage on redefinit trimsk decoupeterre mask glammsk gphimsk type xy TRI trimsk usetri usetri indicezoom indicezoommask coinmonte coinmontemask coindescend coindescendmask _EXTRA ex ENDELSE IV1 choix du type de dessin typetrace classique if keyword_set map AND key_onearth then BEGIN appelle de mapset qd on veut faire des projections IF n_elements map NE 3 THEN map 0 lon1 lon2 2 MOD 360 0 typetrace projection map_lat map 0 map_lon map 1 map_rot map 2 if chkstru ex TITLE then begin maptitre ex title ex title endif map_set map_lat map_lon map_rot _extra ex position posfenetre iso limit lat1 lon1 lat2 lon2 noborder if n_elements maptitre ne 0 then ex title maptitre if n_elements trifield GE 2 then trifield ciseauxtri trifield glam gphi _EXTRA ex if n_elements trimsk GE 2 then trimsk ciseauxtri trimsk glammsk gphimsk _EXTRA ex if n_elements trinan GE 2 then BEGIN trinan ciseauxtri trinan glam gphi _EXTRA ex if trinan 0 EQ 1 then undefine trinan endif ENDIF ELSE BEGIN pour que les axes de coordonees soient pris en compte if x type EQ 0 AND n_elements contour LE 4 then plot 0 0 nodata xstyle 5 ystyle 5 title subtitle noerase if keyword_set key_periodic then BEGIN ds ce cas la triangulation est refermee en x et couvre toute la sphere il faut dont la couper au niveau ou l on coupe la sphere pour faire le dessin if n_elements trifield GE 2 then trifield ciseauxtri trifield glam gphi _EXTRA ex if n_elements trimsk GE 2 then trimsk ciseauxtri trimsk glammsk gphimsk _EXTRA ex if n_elements trinan GE 2 then trinan ciseauxtri trinan glam gphi _EXTRA ex ENDIF endelse IV2 coutours et coloriages if keyword_set duplicate then BEGIN pour marina uniquement ATTENTION C EST TRES MAL CODE lon glam 0 decalage max lon min lon lon shift lon 1 n_elements lon 1 x range 1 x range 1 duplicate 1 decalage for i 1 duplicate 1 do BEGIN z2d z2d z2d gphi gphi gphi mask mask mask gphimsk gphimsk gphimsk glam glam glam i decalage glammsk glammsk glammsk ENDFOR endif save glam gphi trifield file tri dat if keyword_set decimatetri then BEGIN tempsdeux systime 1 pour key_performance IF n_elements trimsk EQ 0 THEN trimsk trifield Verts transpose temporary glam temporary gphi temporary z2d Conn replicate 3 1 n_elements trifield 3 trifield Result mesh_decimate temporary verts temporary Conn Connout vertices Vertsout percent_vertices decimatetri connout reform connout 4 n_elements connout 4 over trifield temporary connout 1:3 glam reform Vertsout 0 gphi reform Vertsout 1 z2d reform Vertsout 2 undefine Vertsout print temps decimatetri systime 1 tempsdeux ENDIF pltbase z2d glam gphi mask glammsk gphimsk trichamp trifield trimsk trimsk forplt level_z2d colnumb contour contour usetri usetri realcont realcont overplot keyword_set overplot keyword_set map c_linestyle linestyle c_labels 1 indgen n_elements level_z2d MOD 2 c_thick thick cont_nofill cont_nofill nan nan coinmontemask coinmontemask coindescendmask coindescendmask coinmontenan coinmontenan coindescendnan coindescendnan indicezoommask indicezoommask indicezoomnan indicezoomnan masknan masknan trinan trinan _extra ex IV3 rappelle de plt en boucle qd contour est active if n_elements contour eq 4 then BEGIN c est la 2eme fois que je passe ds pltt contour mietma: mi ma unit:varunit inter:intervalle je renvoie le min le max et l unite return endif if keyword_set contour THEN BEGIN pourlegende 1 1 1 1 oldattributs saveatt oldcolnumb colnumb plt contour contmin contmax CONTOUR pourlegende NOERASE USETRI usetri INTERVALLE contintervalle LABEL contlabel STYLE style NLEVEL contnlevel DUPLICATE duplicate STRICTFILL strictfill MASKFILL maskfill _extra ex restoreatt oldattributs colnumb oldcolnumb ENDIF V petites finitions V1 ajout eventuel de vecteurs en surimpression if keyword_set vecteur then BEGIN oldattributs saveatt ajoutvect vecteur vectlegende _extra ex restoreatt oldattributs ENDIF if keyword_set overplot then GOTO fini V2 Trace de la ligne de changement de date l equateur et le meridien de greenwich if NOT keyword_set map AND key_onearth then meridienparallele xy V3 pour tracer les continents d IDL if keyword_set realcont then BEGIN si noease est passe de _extra on s assure qu il est a 1 if chkstru ex NOERASE then begin oldnoerase ex noerase ex noerase 1 ENDIF if chkstru ex coast_thick then mlinethick ex coast_thick ELSE mlinethick 1 if chkstru ex coast_color then mcolor ex coast_color ELSE mcolor 0 IF NOT keyword_set map THEN map_set 0 lon1 lon2 2 MOD 360 0 position posfenetre limit lat1 lon1 lat2 lon2 NOERASE noborder color 0 _extra ex if realcont NE 2 AND NOT keyword_set cont_nofill then BEGIN if chkstru ex cont_color then cntcol ex coast_color ELSE cntcol d n_colors 1 255 map_continents fill_continents color cntcol _extra ex noerase ENDIF map_continents continents color mcolor MLINETHICK mlinethick noerase _extra ex if chkstru ex NOERASE THEN ex noerase oldnoerase ENDIF V4 legendes affichage de celles ci legende mi ma xy CONTOUR pourlegende VECTLEGENDE vectlegende INTERVALLE intervalle DIREC direc _EXTRA ex if n_elements ex NE 0 then BEGIN pour garder les axes du cadre en noir if where tag_names ex EQ COLOR 0 NE 1 then ex COLOR coast_color endif case typetrace of classique : plot 0 0 nodata noerase color 0 xstyle 1 ystyle 1 _extra ex projection : BEGIN if chkstru ex NOERASE then begin oldnoerase ex noerase ex noerase 1 endif if chkstru ex SUBTITLE then p subtitle ex SUBTITLE if n_elements maptitre ne 0 then ex title maptitre map_set map_lat map_lon map_rot _extra ex iso limit lat1 lon1 lat2 lon2 NOERASE noborder title p title color 0 map_proj_info numproj current map_proj_info numproj name nomproj if nomproj EQ Mercator OR nomproj EQ Cylindrical OR nomproj EQ LambertConic OR nomproj EQ Gnomic OR nomproj EQ AlbersEqualAreaConic OR nomproj EQ TransverseMercator OR nomproj EQ MillerCylindrical OR nomproj EQ LambertConicEllipsoid then map_grid box_axes 1 latdel 10 londel 10 ELSE map_grid charsize 0 75 label latalign 1 lonalign 1 latdel 10 londel 30 IF n_elements labmap EQ 0 THEN labmap 1 map_grid charsize 0 75 label labmap latalign 1 lonalign 1 latdel 10 londel 30 color 0 _extra ex if chkstru ex NOERASE THEN ex noerase oldnoerase end endcase V5 barre de couleur colnumb colnumb 0:ncontour 1 keyword_set strictfill barrecouleur colnumb min max ncontour keyword_set strictfill 2 position posbar _extra ex VI impression eventuelle fini: terminedessin _extra ex sortie: if keyword_set savedbox THEN restoreboxparam boxparam4plt dat if keyword_set key_performance NE 0 THEN print temps plt systime 1 tempsun return end "); 247 247 a[245] = new Array("./ToBeReviewed/PLOTS/DESSINE/plt1d.html", "plt1d.pro", "", " NAME: PLT1D PURPOSE: trace des graphes 1d CATEGORY: Graphics trace des graphes 1d: x y z ou t mais ds ce cas on rapelle directement pltt CALLING SEQUENCE: plt1d champ type min max INPUTS: champ: le champ dont on veut faire le hovmoller champ peut etre de 2 types: 1 un tableu qui peut etre: 2d 3d ou 4d: tableau xy xyz xyt ou xyzt dans ce cas le tableau va passer dans moyenne ou grossemoyenne pour etre moyennee et devenir un tableau 1 1d 1d:type doit qd meme etre specifie pour qu on sache de quel trace il sagit Pour avoir une legende correcte respecifier la zone d extraction via BOXZOOM 2 une structure repondant aux critaires specifies par litchamp pro cf IDL xhelp litchamp Le tableau contennu ds la structure repondant aux criteres du cas 1 cf ci dessus TYPE: un string: type de plot 1d que l on veut faire: trace suivant: x y z ces arguments ne sont pas obligatoires: MAX: valeur maximum que l on veut prendre en compte dans le trace du plot Par defaut on prend le max de tableau sur les pts mer MIN: valeur minimum que l on veut prendre en compte dans le trace du plot Par defaut on prend le min de tableau sur les pts mer KEYWORD PARAMETERS: BOXZOOM:vecteur indiquant la zone geographique 3d sur laquelle doit etre fait l extraction du champ pour faire le hovmoeller Si BOXZOOM a : 1 element : l extraction est faite sur lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: l extraction est faite sur lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: l extraction est faite sur Boxzoom vert1 vert2 5 elements: l extraction est faite sur Boxzoom 0:3 0 Boxzoom 4 6 elements: l extraction est faite sur Boxzoom Ou lon1 lon2 lat1 lat2 vert1 vert2 sont les variables globales definies lors du dernier domdef COL1d: OBSOLETE numero de la couleur qd on fait un trace 1d par defaut 0 il faut mieux utiliser le mot cle COLOR utilise par plot ENDPOINTS: mot clef specifiant que l on veut faire une coupe verticale en diagonale les coordonnees des extremites de celle ci sont alors definies les 4 elements du vecteur ENDPOINTS: x1 y1 x2 y2 qui sont les coordonnees LANDSCAPE: oblige la feuille ou le fenetre a l ecran a etre en position allongee MAXIN: permet de specifier la valeur maximum que l on veut prendre en compte dans le trace des contours a l aide d un mot cle plutot que par l argument max Si l argument et le mot cle sont specifies en meme temps c est la valeur specifiee par le mot cle qui est retenue MININ: permet de specifier la valeur minimum que l on veut prendre en compte dans le trace des contours a l aide d un mot cle plutot que par l argument min Si l argument et le mot cle sont specifies en meme temps c est la valeur specifiee par le mot cle qui est retenue NOERASE: activer pour faire un dessin a l ecran sans creer une nouvelle fenetre Rq: activer ds le cas d un Postscript de plusieurs traces de type t pour ne pas faire un Postscript de plusieurs pages OV1D:permet de surimprimer un courbe 1d a un precedent trace 1d PETITDESSIN: vecteur de 3 ou 4 elements applique pour faire un dessin sur une petite portion de feuille ou d ecran il delimite la zone ds laquelle va etre fait le dessin si il a 4 elements: il est alors constitute des coordonnees exprime en cm reperes par rapport au coin en bas a gauche de la feuille ou de la fenetre en portrait comme en landscape du coin en bas a gauche et du coin en haut a droite de la zone de dessin si il a 3 elements: Ds ce cas on divise la fenetre ou l ecran en PETITDESSIN 0 colonnes en PETITDESSIN 1 lignes le dessin se faisant ds la case numero PETITDESSIN 2 La numerotation commencant en haut a gauche par le numero 1 et suivant apres dans le sens de l ecriture Par defaut on fait un dessin occupant la plus grande place possible tout en concervant le rapport d aspect sauf qd REMPLI est active PORTRAIT: oblige la feuille ou la fenetre a etre en position debout POST: faire une sortie postscript Ne marche que si on fait un seul dessin sur la feuille Si on fait plusieurs dessins utiliser ps ou plein2dessins REMPLI:oblige le dessin a occuper l espace maximum definit par petitdessin REVERSE_X: pour inverser l axe des x et aussi le dessin REVERSE_Y: pour inverser l axe des y et aussi le dessin SIN: activer ce mot cle si l on veut que l axe des x soit trace en sinus de la latitude qd on fait un frace f y STY1D: OBSOLETE numero du style utilise lors d un trace 1d Il faut mieux utiliser le mot cle LINESTYLE qui est celui de plot Attention ce mot cle est encore utile si on veut faire des barres plutot qu un courbe mettre sty1d bar TRANS: fait un postscript active post automatiquement et l imprime si on le desire sur un transparant WINDOW: nimero de la fenetre ou l on veut faire le graphe permet d ouvrir plusieurs fenetres par defaut on ouvre IDL0 YXASPECT: rapport d echelle entre y et x Par defaut 1 Par defaut on adapte pour occupe une grande partie de la feuille en sortie postScript ou pour cree une fenetre pas trop etiree ZEROMIDDLE: fo force the middle of the colorbar to be equal to 0 force max max abs min max and min max COMMON BLOCKS: common pro SIDE EFFECTS: RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY: creation 24 6 99 Eric Guilyardi a partir routine pltt de Sebastien Masson 8 7 1999 Sebastien Masson smasson lodyc jussieu fr inspection des travaux finis 8 2 2000 Sebastien Masson: checkfield pro plt1d tab giventype givenmin givenmax BOXZOOM boxzoom SIN sin MININ minin MAXIN maxin TYPEIN typein ENDPOINTS endpoints COL1D col1d STY1D sty1d OV1D ov1d X x Y y Z z TT tt REVERSE_X reverse_x REVERSE_Y reverse_y SWITCHXY switchxy _extra ex include common cm_4mesh cm_4data IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 pour key_performance 1ere partie: initialisation et petits calculs verification de la valeur de type if n_elements giventype NE 0 then type giventype if n_elements givenmin NE 0 then min givenmin if n_elements givenmax NE 0 then max givenmax if n_elements minin NE 0 then min minin if n_elements maxin NE 0 then max maxin if keyword_set tt then typein t if keyword_set typein then BEGIN if size type type NE 7 AND size type type NE 0 then begin if n_elements min NE 0 then max min min type endif type typein endif checktypeminmax plt1d TYPE type MIN min MAX max ENDPOINTS endpoints XX keyword_set x YY keyword_set y ZZ keyword_set z if type EQ t then BEGIN pltt tab type min max BOXZOOM boxzoom SIN sin TYPEIN typein COL1D col1d STY1D sty1d OV1D ov1d ENDPOINTS endpoints _extra ex return endif I2 reinitialisation p x y Rq: on ne reinitialise pas qd on rapelle plt1d if NOT keyword_set ov1d then reinitplt I1 lecture du champ if keyword_set boxzoom OR keyword_set endpoints THEN BEGIN savedbox 1b saveboxparam boxparam4plt1d dat ENDIF if keyword_set endpoints then begin section tab z1d glam gphi ENDPOINTS endpoints TYPE type BOXZOOM boxzoom DIREC direc nx n_elements glam ny nx if strupcase vargrid EQ W then begin z gdepw firstzw:lastzw nz nzw ENDIF ELSE BEGIN z gdept firstzt:lastzt nz nzt ENDELSE ENDIF ELSE BEGIN z1d checkfield tab plt1d TYPE type BOXZOOM boxzoom direc direc _extra ex grille mask glam gphi gdep nx ny nz ENDELSE if z1d 0 EQ 1 then BEGIN IF keyword_set savedbox THEN restoreboxparam boxparam4plt1d dat return endif on construit le mask pour cela le tableau doit etre masque fait automatiquement a la valeure valmask si on passe ds moyenne ou grossemoyenne mask fltarr n_elements z1d if n_elements valmask EQ 0 then valmask 1e20 nan total finite z1d nan 1 if keyword_set nan then begin notanum where finite z1d EQ 0 z1d notanum 0 mask where z1d LT valmask 10 1 z1d notanum values f_nan ENDIF ELSE mask where z1d LT valmask 10 1 determination du min et du max apres la moyenne nan total finite z1d nan 1 determineminmax z1d mask mi ma MININ min MAXIN max nan nan INTERVALLE intervalle _extra ex if z1d 0 EQ 1 THEN return if NOT keyword_set ov1d THEN placedessin autre posfenetre posbar contour contour DIREC direc endpoints endpoints _extra ex 2eme partie: dessin definition des vecteurs abscisse et ordonee la triangulation est definie pour que le trace soit effectue du bas a gauche vers le haut a droite il faut donc la matrice e contourer se presente de cette maniere d ou certains transpose et reverse case type of y : begin yy z1d IF size gphi 0 EQ 1 then xx gphi ELSE BEGIN IF keyword_set key_irregular THEN BEGIN cln where gphi EQ max gphi 0 xx reform gphi cln MOD nx ENDIF ELSE xx reform gphi 0 ENDELSE if keyword_set sin then xx sin pi 180 xx min0 lat1 max0 lat2 END x :begin yy z1d xx glam 0 min0 lon1 max0 lon2 END z :begin yy reverse gdep 1 xx reverse z1d 1 min0 0 max0 0 case n_elements boxzoom of 0: y range vert1 vert2 1: y range 0 boxzoom 2: y range boxzoom 4: y range vert1 vert2 5: y range 0 boxzoom 4 6: y range boxzoom 4:5 endcase if NOT keyword_set ov1d then y range reverse y range END ENDCASE definition des axes if keyword_set integrationtps then axe type time 0 time jpt 1 SIN sin _extra ex ELSE axe type SIN sin if NOT keyword_set ov1d then axe type SIN sin dessin if type EQ z then begin idx where xx NE valmask if NOT keyword_set ov1d then BEGIN if min EQ mi then x range min abs max min 5 max abs max min 5 ELSE x range min max ENDIF ENDIF ELSE BEGIN idx where yy NE valmask if NOT keyword_set ov1d then BEGIN if min EQ mi then y range min abs max min 5 max abs max min 5 ELSE y range min max ENDIF ENDELSE if NOT keyword_set ov1d then BEGIN legende mi ma type CONTOUR contour DIREC direc ENDPOINTS endpoints _EXTRA ex ENDIF IF keyword_set switchxy THEN BEGIN tmp xx xx yy yy temporary tmp if NOT keyword_set ov1d then BEGIN tmp x x y y temporary tmp ENDIF ENDIF if NOT keyword_set ov1d then BEGIN if keyword_set reverse_x then x range reverse x range if keyword_set reverse_y then y range reverse y range ENDIF xx xx idx yy yy idx if not keyword_set col1d then col1d 0 if keyword_set sty1d then BEGIN si on veut faire des barres IF strlowcase strtrim sty1d EQ bar then begin y range y range 0 y range 1 y range 0 05 y range 1 bar_plot yy background d n_colors 1 255 baselines replicate y range 0 n_elements yy barnames colors replicate col1d n_elements yy outline if n_elements ex NE 0 then BEGIN pour avoir un cadre de la couleur noire if where tag_names ex EQ COLOR 0 NE 1 then ex COLOR 0 ENDIF plot 0 0 noerase nodata _extra ex GOTO fini ENDIF ENDIF if NOT keyword_set ov1d then BEGIN plot xx yy color col1d linestyle sty1d thick 2 title subtitle _extra ex if n_elements ex NE 0 then BEGIN pour avoir un cadre de la couleur 0 et trace une ligne a y 0 if where tag_names ex EQ COLOR 0 NE 1 then ex COLOR 0 if where tag_names ex EQ LINESTYLE 0 NE 1 then ex LINESTYLE 0 if where tag_names ex EQ THICK 0 NE 1 then ex THICK 0 ENDIF plot x range 0 0 noerase nodata xstyle 1 4 keyword_set endpoints AND type EQ x AND lat1 NE lat2 OR type EQ y AND lon1 NE lon2 ystyle 1 _extra ex ajout d un axe ds le cas ou l on utilise endpoints if keyword_set endpoints then addaxe endpoints type posfenetre _EXTRA ex trace une ligne a x 0 plot 0 0 y range noerase nodata title subtitle _extra ex ENDIF ELSE oplot xx yy color col1d linestyle sty1d thick 2 _extra ex 3eme partie: impression eventuelle fini: terminedessin _extra ex if keyword_set savedbox THEN restoreboxparam boxparam4plt1d dat if n_elements key_performance NE 0 then IF key_performance EQ 1 THEN print temps plt1d systime 1 tempsun return end "); … … 271 271 a[269] = new Array("./ToBeReviewed/PLOTS/DIVERS/terminedessin.html", "terminedessin.pro", "", " NAME:terminedessin PURPOSE:termnine le dessin si besion est qd c est un postcsript CATEGORY:mise en forme et allegement de l ecrityre de plt pltz et pltt CALLING SEQUENCE:terminedessin INPUTS: KEYWORD PARAMETERS:POST et SMALL cf l aide de plt OUTPUTS: COMMON BLOCKS: common pro SIDE EFFECTS: RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY: Sebastien Masson smasson lodyc jussieu fr 3 6 1999 PRO terminedessin POST post SMALL small _extra ex cm_4ps IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF if keyword_set post then BEGIN if keyword_set small then if total small NE page_margins 2 page_margins 0 total page_size page_margins 1 page_margins 3 then return closeps printps endif return end"); 272 272 a[270] = new Array("./ToBeReviewed/PLOTS/LABEL/label.html", "label.pro", "", " NAME:label PURPOSE:permet de choisir le stype de label que l on veut utiliser lors d un contour CATEGORY:graphique CALLING SEQUENCE:pro label cas min max ncontour level_z2d INPUTS: cas numero du type de label que l on veut tracer min et max valeures min et max entre lesquelles on veut faire des contours KEYWORD PARAMETERS: INTERVALLE: valeur d un intervalle entre deux isolignes par defaut est calcule pour tracer 20 isolighnes Dans tous les cas ce not cle doit etre retourne pour pouvoir avoir une belle legende Si les niveaux ne comportent pas d intevalle regulier le mettre a 1 NLEVEL: nombre de contours a dessiner par defaut 20 actif si LABEL 0 ou nest pas specifie OUTPUTS: ncontour nombre de contour a tracer level_z2d vecteur contenant les valeurs des contours que l on trace colnumb: un vecteur contenant le numero des couleurs qui serviront a remplir entre les contours COMMON BLOCKS: common pro SIDE EFFECTS: RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY: Sebastien Masson smasson lodyc jussieu fr 7 5 98 pro label cas min max ncontour level_z2d colnumb NLEVEL nlevel INTERVALLE intervalle STRICTFILL strictfill common if d name EQ PS OR d name EQ Z then BEGIN old_dname d name thisOS VERSION OS_FAMILY thisOS STRMID thisOS 0 3 thisOS STRUPCASE thisOS CASE thisOS of MAC : SET_PLOT thisOS WIN : SET_PLOT thisOS ELSE: SET_PLOT X ENDCASE p BACKGROUND d n_colors 1 ncontour level_z2d min max min findgen Ncontour Ncontour colnumb ncoul findgen Ncontour Ncontour ncoul 2 ncontour intervalle level_z2d 1 level_z2d 0 end 1: begin un certain nombre de label en partant du min jusqu au plus pres de max avec un pas fixe par intervalle ncontour fix max min intervalle ncontour 1 ncontour level_z2d min intervalle findgen Ncontour colnumb ncoul findgen Ncontour Ncontour ncoul 2 ncontour max level_z2d Ncontour 1 intervalle end label pour faire les memes sss que dessier 2: begin lct 63 file palette tbl level_z2d 20 25 30 31 32 33 33 5 34 25 findgen 16 ncontour 23 colnumb findgen 23 1 masx 37 75 intervalle 1 return end 3: begin lecture intervalles palette dans fichier GMT label_gmt min max intervalle ncoul ncontour level_z2d colnumb end else: begin ras report Le numero de label demande n existe pas end ENDCASE if keyword_set strictfill then begin ncontour ncontour 1 level_z2d level_z2d max colnumb colnumb ncoul 1 endif return end"); 273 a[271] = new Array("./ToBeReviewed/PLOTS/LABEL/label_date.html", "label_date.pro", "", " Id: label_date pro 39 2006 05 02 15:05:06Z pinsard Copyright c 1993 1998 Research Systems Inc All rights reserved Unauthorized reproduction prohibited NAME: LABEL_DATE PURPOSE: This function labels axes with dates and times CATEGORY: Plotting CALLING SEQUENCE: To set up: dummy LABEL_DATE DATE_FORMAT string To use: PLOT x y XTICKFORMAT LABEL_DATE INPUTS: No explicit user defined inputs When called from the plotting routines the input parameters are Axis Index Value KEYWORD PARAMETERS: DATE_FORMAT: a format string which may contain the following: M for month 3 character abbr N for month 2 digit abbr D for day of month Y for 4 digit year Z for last two digits of year For time: H for Hours 2 digits I for mInutes 2 digits S for Seconds 2 digits is Other characters are passed directly thru For example M D Y prints DEC 11 1993 M 2Y yields DEC 93 D M yields 11 DEC D N Y yields 11 12 1993 M C Y yields DEC on the top line 1993 on the bottom C is the new line graphic command MONTHS: The names of the months a twelve element string array If omitted use Jan Feb Dec OFFSET: An optional starting offset of the plot Unfortunately single precision floating point is not accurate enough to properly represent Julian times This offset which may be double precision contains an offset that is added to all x values before conversion to Julian date and time OUTPUTS: The date string to be plotted COMMON BLOCKS: LABEL_DATE_COM RESTRICTIONS: Only one date axis may be simultaneously active PROCEDURE: Straightforward For an alternative way to label a plot axis with dates refer to the C format code accepted within format strings applicable via the XYZ TICKFORMAT keywords This new format code was introduced in IDL 5 2 EXAMPLE: For example to plot from Jan 1 1993 to July 12 1994: Start_date julday 1 1 1993 End_date julday 7 12 1994 Dummy LABEL_DATE DATE_FORMAT N D Simple mm dd x findgen end_date 1 start_date start_date Time axis PLOT x sqrt x XTICKFORMAT LABEL_DATE XSTYLE 1 Plot with X axis style set to exact Example with times: For example to plot from 3PM Jan 1 1993 to 5AM Jan 3 1993: Start_date Julday 1 1 1993 Also starting offset Start_time 3 12 24 Starting_time less offset End_time Julday 1 3 1993 Start_date 5 24 Ending date time offset note that the order of operations is important to avoid loss of precision Dummy LABEL_DATE DATE_FORMAT D M C H: I offset Start_date MMM NN HH:MM format x findgen 20 End_time Start_time 19 start_time Time axis PLOT x sqrt x XTICKFORMAT LABEL_DATE XSTYLE 1 MODIFICATION HISTORY: DMS RSI April 1993 Written DMS RSI March 1997 Added Time format FUNCTION LABEL_DATE axis index x DATE_FORMAT format MONTHS months OFFSET offs _EXTRA ex COMMON label_date_com fmt month_chr offset if keyword_set format then begin Save format string if n_elements offs ne 0 then offset double offs else offset 0 0d0 if keyword_set months then month_chr months else month_chr Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec fmt format return 0 endif if n_elements month_chr ne 12 or n_elements fmt le 0 or n_elements offset eq 0 then message Not initialized x1 x offset caldat long x1 month day year _EXTRA ex Get the calendar date from julian frac x1 long x1 time of day from 0 to 1 n strlen fmt out for i 0 n 1 do begin Each format character c strmid fmt i 1 The character if c eq then begin i i 1 c strmid fmt i 1 The function case c of format character M : out out month_chr month 1 N : out out string format i2 2 month D : out out string format i2 2 day Y : out out string format i4 year Z : out out string format i2 2 year mod 100 H : out out string format i2 2 floor 24 frac I : out out string format i2 2 floor 1440 frac mod 60 S : out out string format i2 2 86400L frac mod 60 : out out else : message Illegal character in date format string: fmt endcase endif else out out c endfor return out end");273 a[271] = new Array("./ToBeReviewed/PLOTS/LABEL/label_date.html", "label_date.pro", "", " Id: label_date pro 97 2006 06 09 15:18:59Z pinsard Copyright c 1993 1998 Research Systems Inc All rights reserved Unauthorized reproduction prohibited NAME: LABEL_DATE PURPOSE: This function labels axes with dates and times CATEGORY: Plotting CALLING SEQUENCE: To set up: dummy LABEL_DATE DATE_FORMAT string To use: PLOT x y XTICKFORMAT LABEL_DATE INPUTS: No explicit user defined inputs When called from the plotting routines the input parameters are Axis Index Value KEYWORD PARAMETERS: DATE_FORMAT: a format string which may contain the following: M for month 3 character abbr N for month 2 digit abbr D for day of month Y for 4 digit year Z for last two digits of year For time: H for Hours 2 digits I for mInutes 2 digits S for Seconds 2 digits is Other characters are passed directly thru For example M D Y prints DEC 11 1993 M 2Y yields DEC 93 D M yields 11 DEC D N Y yields 11 12 1993 M C Y yields DEC on the top line 1993 on the bottom C is the new line graphic command MONTHS: The names of the months a twelve element string array If omitted use Jan Feb Dec OFFSET: An optional starting offset of the plot Unfortunately single precision floating point is not accurate enough to properly represent Julian times This offset which may be double precision contains an offset that is added to all x values before conversion to Julian date and time OUTPUTS: The date string to be plotted COMMON BLOCKS: LABEL_DATE_COM RESTRICTIONS: Only one date axis may be simultaneously active PROCEDURE: Straightforward For an alternative way to label a plot axis with dates refer to the C format code accepted within format strings applicable via the XYZ TICKFORMAT keywords This new format code was introduced in IDL 5 2 EXAMPLE: For example to plot from Jan 1 1993 to July 12 1994: Start_date julday 1 1 1993 End_date julday 7 12 1994 Dummy LABEL_DATE DATE_FORMAT N D Simple mm dd x findgen end_date 1 start_date start_date Time axis PLOT x sqrt x XTICKFORMAT LABEL_DATE XSTYLE 1 Plot with X axis style set to exact Example with times: For example to plot from 3PM Jan 1 1993 to 5AM Jan 3 1993: Start_date Julday 1 1 1993 Also starting offset Start_time 3 12 24 Starting_time less offset End_time Julday 1 3 1993 Start_date 5 24 Ending date time offset note that the order of operations is important to avoid loss of precision Dummy LABEL_DATE DATE_FORMAT D M C H: I offset Start_date MMM NN HH:MM format x findgen 20 End_time Start_time 19 start_time Time axis PLOT x sqrt x XTICKFORMAT LABEL_DATE XSTYLE 1 MODIFICATION HISTORY: DMS RSI April 1993 Written DMS RSI March 1997 Added Time format FUNCTION LABEL_DATE axis index x DATE_FORMAT format MONTHS months OFFSET offs _EXTRA ex COMMON label_date_com fmt month_chr offset if keyword_set format then begin Save format string if n_elements offs ne 0 then offset double offs else offset 0 0d0 if keyword_set months then month_chr months else month_chr Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec fmt format return 0 endif if n_elements month_chr ne 12 or n_elements fmt le 0 or n_elements offset eq 0 then message Not initialized x1 x offset caldat long x1 month day year _EXTRA ex Get the calendar date from julian frac x1 long x1 time of day from 0 to 1 n strlen fmt out for i 0 n 1 do begin Each format character c strmid fmt i 1 The character if c eq then begin i i 1 c strmid fmt i 1 The function case c of format character M : out out month_chr month 1 N : out out string format i2 2 month D : out out string format i2 2 day Y : out out string format i4 year Z : out out string format i2 2 year mod 100 H : out out string format i2 2 floor 24 frac I : out out string format i2 2 floor 1440 frac mod 60 S : out out string format i2 2 86400L frac mod 60 : out out else : message Illegal character in date format string: fmt endcase endif else out out c endfor return out end"); 274 274 a[272] = new Array("./ToBeReviewed/PLOTS/LABEL/label_gmt.html", "label_gmt.pro", "", " Apply GMT palette into IDL color intervals system PRO label_gmt min max intervalle ncoul ncontour level_z2d coul common com_eg IF pal_type NE 2dom THEN BEGIN color defined in lec_pal_gmt pro ncontour ncont_gmt level_z2d levels_gmt coul coul_gmt max max_gmt intervalle 1 ENDIF ELSE BEGIN grey_shade palette case 1 in label IF finite min EQ 0 THEN read Grey shade needs a min max : min max ncontour fix max min intervalle level_z2d min intervalle findgen Ncontour max level_z2d Ncontour 1 intervalle print Number of contour intervals plotting min max ncontour min max print color index IF idx_pal EQ 0 THEN BEGIN build palette red lonarr 99 red 255 red 50:98 long 100 float grey_shade 100 255 IF field origin EQ diff THEN BEGIN difference plot : lighter below first negative interval red 51:98 long 100 float grey_shade_2 100 255 red 1:48 long 100 float grey_shade 100 255 red 50 255 ENDIF first color black last white red 0 red red 99 255 gray scale green red blue red tvlct red green blue ENDIF mid_index max where level_z2d LE fldatt mid coul findgen Ncontour 49 mid_index 2 ENDELSE END "); 275 275 a[273] = new Array("./ToBeReviewed/PLOTS/LABEL/lataxe.html", "lataxe.pro", "", " NAME:LATAXE PURPOSE:fonction appelee par XYZ TICKFORMAT cf l help pour voir comment l utiliser pour labeller les axes en latitude CATEGORY:graphe CALLING SEQUENCE: XYZ TICKFORMAT lataxe INPUTS:fournis et imposes automatiquement par IDL: axis index value: Axis is the axis number: 0 for X axis 1 for Y axis 2 for Z axis Index is the tick mark index which starts at 0 Value is the default tick mark value a floating point number KEYWORD PARAMETERS: OUTPUTS:un string utilise automatiquement pour labeller COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY: Sebastien Masson smasson lodyc jussieu fr 14 10 1999 format des labels FUNCTION lataxe axis index value on ramenne value ds le segment 0 180 lat value mod 360 if lat lt 0 then lat lat 360 if lat gt 180 then lat lat 180 format des labels: case 1 of lat EQ round lat :fmt i4 10 lat EQ round 10 lat :fmt f6 1 ELSE:fmt f7 2 endcase on ecrit le label if lat le 90 and lat ne 0 then nom string lat format fmt N if lat gt 90 then nom string 180 lat format fmt S if lat eq 0 then nom string lat format fmt return nom end "); … … 277 277 a[275] = new Array("./ToBeReviewed/PLOTS/VECTEUR/ajoutvect.html", "ajoutvect.pro", "", " NAME:ajoutvect PURPOSE:surimprimme des vecteur sur un champ tarce par plt CATEGORY:grafique CALLING SEQUENCE:ajoutvect vecteur INPUTS: vecteur: une structure a 2 elements contenant les 2 matrices U et V des valeurs de la composante zonale et meridienne du champ de vecteurs a tracer par ex: vecteur matriceu:lec unsurface matricev:lec vnsurface rq:le nom des elements de vecteur n a aucune importance vecteur u:lec unsurface v:lec vnsurface convient aussi KEYWORD PARAMETERS: UNVECTSUR:un scalaire n on un tableau a 2 elements n1 n2 dans le premier cas on tracera un vecteur sur n suivant les x et les y dans le second cas on tracera un vecteur sur n1 suivant x et un vecteur sur n2 suivant y Rq pour tracer tous les vecteurs suivant y et 1 sur 2 suivant x mettre unvectsur 2 1 VECTMIN norme minimun des vecteurs a tracer VECTMAX norme minimun des vecteurs a tracer OUTPUTS: COMMON BLOCKS: common pro SIDE EFFECTS: RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY: Sebastien Masson smasson lodyc jussieu fr 10 3 1999 11 6 1999 compatibilite avec NAN et la lecture des structures pro ajoutvect vecteur vectlegende UNVECTSUR unvectsur VECTMIN vectmin VECTMAX vectmax _EXTRA ex common tempsun systime 1 pour key_performance u litchamp vecteur 0 u checkfield u plt TYPE xy NOQUESTION v litchamp vecteur 1 v checkfield v plt TYPE xy NOQUESTION on recupere les eventuelles info sur les champs grilleu litchamp vecteur 0 grid if grilleu EQ then grilleu U grillev litchamp vecteur 1 grid if grillev EQ then grillev V IF grilleu EQ V AND grillev EQ U THEN inverse 1 IF grilleu EQ grillev THEN interpolle 0 ELSE interpolle 1 if keyword_set inverse then begin rien u u v v rien endif on trouve les points que u et v ont en communs if interpolle then begin indicexu lindgen jpi firstxu:firstxu nxu 1 indicexv lindgen jpi firstxv:firstxv nxv 1 indicex inter indicexu indicexv indiceyu lindgen jpj firstyu:firstyu nyu 1 indiceyv lindgen jpj firstyv:firstyv nyv 1 indicey inter indiceyu indiceyv nx n_elements indicex ny n_elements indicey indice2d lindgen jpi jpj indice2d indice2d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1 extraction de u et v sur le domaine qui convient case 1 of size u 0 NE 2 OR size v 0 NE 2: return size u 1 EQ nxu AND size u 2 EQ nyu AND size v 1 EQ nxv AND size v 2 EQ nyv:BEGIN if nxu NE nx then if indicex 0 EQ firstxu then u u 0:nx 1 ELSE u u 1: nx IF nxv NE nx THEN if indicex 0 EQ firstxv then v v 0:nx 1 ELSE v v 1: nx IF nyu NE ny THEN if indicey 0 EQ firstyu then u u 0:ny 1 ELSE u u 1: ny IF nyv NE ny THEN if indicey 0 EQ firstyv then v v 0:ny 1 ELSE v v 1: ny END size u 1 EQ jpi AND size u 2 EQ jpj AND size v 1 EQ jpi AND size v 2 EQ jpj:BEGIN u u indice2d v v indice2d END ELSE:BEGIN ras report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs return end endcase on reform u et v pour s assurer qu aucune dimension n a ete ecrasee if ny EQ 1 then begin u reform u nx ny v reform v nx ny endif construction de u et v aux pts T a u 0 u u shift u 1 0 2 if NOT keyword_set key_periodic OR nx NE jpi then u 0 a a v 0 v v shift v 0 1 2 if NOT keyword_set key_periodic OR nx NE jpi then v 0 a attribution du mask et des tableau de longitude et latitude on recupere la grille complette pour etablir un grand mask etendu ds les 4 directions pour couvrir les points pour lesquels un pt terre a ete pris en compte faire un petit dessin vargrid T msku umask indice2d jpi jpj firstzt mskv vmask indice2d jpi jpj firstzt glam glamt indice2d gphi gphit indice2d if ny EQ 1 then begin msku reform msku nx ny mskv reform mskv nx ny glam reform glam nx ny gphi reform gphi nx ny endif on masque u et v le long des cotes la on l on ne peut pas calculer la moyenne extention du mask u u msku shift msku 1 0 v v mskv shift mskv 0 1 ENDIF ELSE BEGIN u u tmask firstxt:lastxt firstyt:lastyt firstzt v v tmask firstxt:lastxt firstyt:lastyt firstzt indice2d lindgen jpi jpj indice2d indice2d firstxt:lastxt firstyt:lastyt nx nxt ny nyt endelse tabnorme sqrt u 2 v 2 nan where finite u nan EQ 1 if nan 0 NE 1 then u nan 1e5 nan where finite v nan EQ 1 if nan 0 NE 1 then v nan 1e5 if keyword_set vectmin then BEGIN toosmall where tabnorme lt vectmin if toosmall 0 NE 1 then begin u toosmall 1e5 v toosmall 1e5 ENDIF endif if keyword_set vectmax then BEGIN toobig where tabnorme gt vectmax if toobig 0 NE 1 then begin u toobig 1e5 v toobig 1e5 ENDIF ENDIF remise d une grande valeur sur tous les points pour lesquelles on ne put faire le calcul if interpolle then t2 msku shift msku 1 0 mskv shift mskv 0 1 ELSE t2 tmask firstxt:lastxt firstyt:lastyt firstzt if NOT keyword_set key_periodic OR nx NE jpi then t2 0 0 t2 0 0 terre where t2 eq 0 if terre 0 ne 1 then begin u terre 1e5 v terre 1e5 ENDIF tracer qu un vecteur sur if keyword_set unvectsur then BEGIN indx est un vecteur contenant les numero des colonnes a selectionner indy est un vecteur contenant les numero des lignes a selectionner if n_elements unvectsur EQ 1 then begin indx where lindgen nx MOD unvectsur 0 eq 0 indy where lindgen ny MOD unvectsur 0 eq 0 ENDIF ELSE BEGIN indx where lindgen nx MOD unvectsur 0 eq 0 indy where lindgen ny MOD unvectsur 1 eq 0 ENDELSE a partir de indx et indy on va construire un tableau d indices 2d qui donnera les indices des points intersections des colonnes specifiee par indx indicereduit indx replicate 1 n_elements indy nx replicate 1 n_elements indx indy on reduit les tableaux qui vont etre passes a vecteur u u indicereduit v v indicereduit tabnorme tabnorme indicereduit endif if keyword_set inverse then begin rien u u v v rien endif trace des vecteurs vecteur u v tabnorme indice2d indicereduit missing 1e5 _extra ex on complete la legende if terre 0 ne 1 then mini min tabnorme where t2 eq 1 max maxi nan ELSE mini min tabnorme max maxi nan if litchamp vecteur 0 u NE then vectlegende minmax: mini maxi unite:litchamp vecteur 0 u ELSE vectlegende minmax: mini maxi unite:varunit sortie: if keyword_set key_performance NE 0 THEN print temps ajoutvect systime 1 tempsun return end "); 278 278 a[276] = new Array("./ToBeReviewed/PLOTS/VECTEUR/vecteur.html", "vecteur.pro", "", " NAME:vecteur PURPOSE: trace des vecteurs meme situees sur une grille tordue sur n importe quelle projection de telle sorte que tous les vecteurs aient une norme comparable sur le dessin en clair un vecteur qui doit faire 1cm le fait quelque soit la projection et sa position sur la sphere CATEGORY:trace de vecteur CALLING SEQUENCE:vecteur composanteu composantev normevecteur indice2d reduitindice2d INPUTS: COMPOSANTEU et COMPOSANTEV: ce sont les composantes des vecteurs a tracer Ces tableaux 2d ont la meme dimension que reduitindice2d cf apres INDICE2D: indice permettant de passer d un tableau jpi jpj au zoom surlequel on fait le dessin REDUITINDICE2D: indice permettant de passer d un tableau definit par indice2d au tableau pourlequel on a reelement des vecteurs a tracer en clair: c est par ex qd on ne trace par exemple que un vecteur sur 2 KEYWORD PARAMETERS: CMREF: la longeur en cm sur le papier que diot faire la fleche de norme normeref par defaut ajuste au dessin et compris entre 5 et 1 5 cm MISSING: la valeur d une missing value ne pas utilisder ce mot cle fixe a 1e5 par ajoutvect pro NORMEREF: la norme de la fleche de reference par defaut on essaie de faire qqch qui colle pas trop mal VECTCOLOR: la couleur de la fleche Par defaut noir couleur 0 VECTTHICK l epaissuer de la fleche par defaut 1 VECTREFPOS: vecteur de 2 elements specifiant la position en coordonnees DATA du debut du vecteur de reference Par defaut en bas a droite du dessin VECTREFFORMAT: format a utiliser pour specifier la norme du vecteur de reference NOVECTREF: pour supprimer l affichage du vecteur de reference OUTPUTS: COMMON BLOCKS:common pro SIDE EFFECTS: RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY: Creation : 13 02 98 G Roullet grlod lodyc jussieu fr Modification : 14 01 99 realise la transformation spheriquecartesien G Roullet 12 03 99 verification de la routine G Roullet 8 11 1999: G Roullet et Sebastien Masson smasson lodyc jussieu fr adaptation pour les zoom reverification traitement separe de la direction et de la norme des vecteurs mots cles NORMEREF et CMREF FUNCTION cv_cm2normal angle donne la longeur en coordonnes normales d un trait ortiente de angle par rapport a l axe des x et qui doit faire 1 cm sur le dessin angle peut etre un tableau common quelle est la longeur en coordonnees normales d un trait qui fera 1 cm sur le parier et qui est parallele a x mipgsz min page_size max mapgsz sizexfeuille mipgsz key_portrait mapgsz 1 key_portrait sizeyfeuille mapgsz key_portrait mipgsz 1 key_portrait cm_en_normal 1 sizexfeuille si le rapport d aspect de la fenetre n est pas egale a 1 la longeur en coordonees normalise d un trait de 1cm varie suivant l angle polaire de ce trait aspect sizexfeuille sizeyfeuille cm_en_normal cm_en_normal sqrt 1 aspect 2 1 sin angle 2 return cm_en_normal END PRO normalise u v w normalise le vecteur IF n_elements w NE 0 THEN BEGIN norme sqrt u 2 v 2 w 2 ind where norme NE 0 u ind u ind norme ind v ind v ind norme ind w ind w ind norme ind ENDIF ELSE BEGIN norme sqrt u 2 v 2 ind where norme NE 0 u ind u ind norme ind v ind v ind norme ind ENDELSE END PRO vecteur composanteu composantev normevecteur indice2d reduitindice2d CMREF cmref MISSING missing NORMEREF normeref VECTCOLOR vectcolor VECTTHICK vectthick VECTREFPOS vectrefpos VECTREFFORMAT vectrefformat NOVECTREF novectref _extra extra common tempsun systime 1 pour key_performance taille size composanteu nx taille 1 ny taille 2 if n_elements reduitindice2d EQ 0 then reduitindice2d lindgen nx ny zu composanteu zv composantev norme normevecteur taille size indice2d nxgd taille 1 nygd taille 2 msk replicate 1 nx ny if keyword_set missing then terre where abs zu GE missing 10 ELSE terre 1 if terre 0 NE 1 then BEGIN msk terre 0 zu terre 0 zv terre 0 norme terre 0 ENDIF Etape 1: etant donne la direction et le sens que le vecteur a sur la sphere il faut se debrouiller pour determiner cette direction et le sens qu aura le vecteur sur l ecran ou la feuille une fois qu il aura ete projete En theorie: sur la sphere un vecteur en un point donne a pour direction la tangente au cercle qui passe par le centre de la terre et par le vecteur Donc trouver la direction une fois la projection faite ds le plan 2d c est trouver la tangente a la courbe representant la projection du cercle sur le plan 2d au point representant la projection du point de depart de la shere sur le plan 2d En pratique on ne connait pas la definition de la courbe que donne la projection d un cercle alors trouver sa tangente en un point Ce que l on fait: Ds un repere cartesien 3d a on trouve les coordonnees du point T debut de la fleche situe sur la shere b pour chaque point T on determine les directions locales definies par la grille en ce point et auxquelles se rapportent les coordonnes u v du vecteur Ces directions locales sont definies par les gradiants des glam et gphi Une fois ces directions obtenues on les considere comme orthogonales et en les normant on construit un repere orthonormal nu nv auquel se rapporte les coordonnes u v du vecteur Ds le repere cartesien 3d de depart le vecteur est definit par: V u nu v nv ou V nu et nv sont des vecteurs 3d et u et v des scalaires c pour approximer la tangente au cercle par la corde definie par le debut et la fin de la fleche on va normaliser V puis le diviser par 100 d ceci nous permet de determiner les coordonnees ds le repere cartesien 3d des extremites de la corde on les passe en coordonnes sphereriques de facon a recuperer les positions en latitude longitude de ces points sur la sphere e on passe les coordonnees de ces points en coordonnees normalise puis en corrdonnes polaire de facon a trouver l angle et la direction qu ils determinent sur le dessin etape 1 a coordonnes du point T debut de la fleche en coordonnes sheriques glam glamt indice2d reduitindice2d gphi gphit indice2d reduitindice2d coordonnes du point T debut de la fleche dans le repere cartesien on utilise comme shere une shere de rayon 1 radius replicate 1 nx ny coord_sphe transpose glam gphi radius r cv_coord from_sphere coord_sphe to_rect degrees x0 reform r 0 nx ny y0 reform r 1 nx ny z0 reform r 2 nx ny etape 1 b Construction du vecteur nu resp nv vecteur norme porte par l axe des points u i j et u i 1 j resp v i j et v i j 1 qui definissent pour chaque point sur la shere les directions locales associee a u et v ces vecteurs definissent un repere orthonorme local ces vecteurs sont construits dans un repere cartesien cv_coord on a choisit un rayon de la terre unite unit definition de nu radius replicate 1 nxgd nygd IF finite glamu 0 gphiu 0 NE 0 THEN coord_sphe transpose glamu indice2d gphiu indice2d radius ELSE coord_sphe transpose glamf indice2d gphit indice2d radius r cv_coord from_sphere coord_sphe to_rect degrees coordonnes de points de la grille u en cartesien ux reform r 0 nxgd nygd uy reform r 1 nxgd nygd uz reform r 2 nxgd nygd calcul de nu nux ux shift ux 1 0 nuy uy shift uy 1 0 nuz uz shift uz 1 0 conditions aux limites if NOT keyword_set key_periodic OR nxgd NE jpi then begin nux 0 nux 1 nuy 0 nuy 1 nuz 0 nuz 1 ENDIF reduction de la grille nux nux reduitindice2d nuy nuy reduitindice2d nuz nuz reduitindice2d definition de nv IF finite glamv 0 gphiv 0 NE 0 THEN coord_sphe transpose glamv indice2d gphiv indice2d radius ELSE coord_sphe transpose glamt indice2d gphif indice2d radius r cv_coord from_sphere coord_sphe to_rect degrees coordonnes de points de la grille v en cartesien vx reform r 0 nxgd nygd vy reform r 1 nxgd nygd vz reform r 2 nxgd nygd calcul de nv nvx vx shift vx 0 1 nvy vy shift vy 0 1 nvz vz shift vz 0 1 conditions aux limites nvx 0 nvx 1 nvy 0 nvy 1 nvz 0 nvz 1 reduction de la grille nvx nvx reduitindice2d nvy nvy reduitindice2d nvz nvz reduitindice2d normalisation normalise nux nuy nuz normalise nvx nvy nvz etape 1 c coordonnes du vecteur V ds le repere cartesion direcx zu nux zv nvx direcy zu nuy zv nvy direcz zu nuz zv nvz normalisation du vecteur v normalise direcx direcy direcz on divise par 100 direcx direcx 100 direcy direcy 100 direcz direcz 100 etape 1 d coordonnees de la pointe de la fleche dans le repere cartesien x1 x0 direcx y1 y0 direcy z1 z0 direcz coordonnees de la pointe en spherique coord_rect transpose x1 y1 z1 r cv_coord from_rect coord_rect to_sphere degrees glam1 reform r 0 nx ny gphi1 reform r 1 nx ny modif des glam tout se passe bien au niveau de la ligne de changement de date attention il ne faut pas couper les fleches qui sortent de la fenetre test: si il sort du cadre mais qu avec un 360 il y rentre on le modifie ind where glam1 LT x range 0 AND glam1 360 LE x range 1 if ind 0 NE 1 then glam1 ind glam1 ind 360 ind where glam1 GT x range 1 AND glam1 360 GE x range 0 if ind 0 NE 1 then glam1 ind glam1 ind 360 ind where glam LT x range 0 AND glam 360 LE x range 1 if ind 0 NE 1 then glam ind glam ind 360 ind where glam GT x range 1 AND glam 360 GE x range 0 if ind 0 NE 1 then glam ind glam ind 360 etape 1 e r convert_coord glam gphi data to_normal x0 r 0 coordonnes normales du debut de la fleche y0 r 1 r convert_coord glam1 gphi1 data to_normal x1 r 0 coordonnes normales de la fin de la fleche avant scaling y1 r 1 tests pour eviter que des fleches soient dessineees hors du domaine out where x0 LT p position 0 OR x0 GT p position 2 OR y0 LT p position 1 OR y0 GT p position 3 if out 0 NE 1 THEN x0 out values f_nan suivant les projections il peu y a voir des points a nan qd on passe en coordonnes normales on supprime ces points nan finite x0 y0 x1 y1 number where nan EQ 1 x0 x0 number x1 x1 number y0 y0 number y1 y1 number msk msk number norme norme number on definit le vecteur direction dans le repere normalise dirx x1 x0 diry y1 y0 on passe en polaire pour recuperer l angle qui etait le but de toute la partie 1 dirpol cv_coord from_rect transpose dirx diry to_polar dirpol msk dirpol 0 2eme etape maintenant on s occupe de la norme Mise a l echelle automatique if NOT keyword_set cmref then BEGIN mipgsz min page_size max mapgsz sizexfeuille mipgsz key_portrait mapgsz 1 key_portrait sizexfeuille 10 sizexfeuille cmref 5 floor sizexfeuille 10 15 cmref cmref 10 ENDIF if NOT keyword_set normeref then BEGIN value max norme puissance10 10 floor alog10 value normeref puissance10 floor value puissance10 endif cm 1 normeref cmref on modifie le tableau norme de facon a ce que un element qui a la valeur cm soit represente par un trait de longueur 1cm sur le papier norme contient la norme des vecteur que l on veut dessiner norme 1 1 cm norme cv_cm2normal dirpol 3eme etape maintenant qu on a l angle et la norme et bien on recupere les coordonnes en rectangulaire et on dessine les fleches r cv_coord from_polar transpose dirpol norme to_rect composantex r 0 composantey r 1 x1 x0 composantex y1 y0 composantey c est parti pour le trace if NOT KEYWORD_SET vectcolor then vectcolor 0 points where msk EQ 1 IF points 0 NE 1 THEN arrow x0 points y0 points x1 points y1 points norm hsize 2 COLOR vectcolor THICK vectthick Dessine une fleche en bas a droite de la figure en guise de legende if NOT keyword_set novectref then BEGIN dx cmref cv_cm2normal 0 longuer du vecteur de reference en coordonnes normalisees if keyword_set vectrefformat then normelegende strtrim string normeref format vectrefformat 1 ELSE normelegende strtrim normeref 1 if keyword_set vectrefpos then begin r convert_coord vectrefpos data to_normal x0 r 0 y0 r 1 ENDIF ELSE BEGIN x0 x window 1 dx r convert_coord d x_ch_size d y_ch_size device to_normal dy 3 r 1 p charsize y0 y window 0 dy ENDELSE arrow x0 y0 x0 dx y0 norm hsize 2 color 0 xyouts x0 y0 normelegende norm align 1 charsize p charsize color 0 endif if keyword_set key_performance NE 0 THEN print temps vecteur systime 1 tempsun return END "); 279 a[277] = new Array("./ToBeReviewed/PLOTS/VECTEUR/velovect.html", "velovect.pro", "", " Id: velovect pro 41 2006 05 02 15:12:07Z pinsard Copyright c 1983 1998 Research Systems Inc All rights reserved Unauthorized reproduction prohibited PRO VELOVECT U V X Y Missing Missing Length length Dots dots Color color CLIP clip NOCLIP noclip OVERPLOT overplot _EXTRA extra NAME: VELOVECT PURPOSE: Produce a two dimensional velocity field plot A directed arrow is drawn at each point showing the direction and magnitude of the field CATEGORY: Plotting two dimensional CALLING SEQUENCE: VELOVECT U V X Y INPUTS: U: The X component of the two dimensional field U must be a two dimensional array V: The Y component of the two dimensional field Y must have the same dimensions as X The vector at point i j has a magnitude of: U i j 2 V i j 2 0 5 and a direction of: ATAN2 V i j U i j OPTIONAL INPUT PARAMETERS: X: Optional abcissae values X must be a vector with a length equal to the first dimension of U and V Y: Optional ordinate values Y must be a vector with a length equal to the first dimension of U and V KEYWORD INPUT PARAMETERS: COLOR: The color index used for the plot DOTS: Set this keyword to 1 to place a dot at each missing point Set this keyword to 0 or omit it to draw nothing for missing points Has effect only if MISSING is specified LENGTH: Length factor The default of 1 0 makes the longest U V vector the length of a cell MISSING: Missing data value Vectors with a LENGTH greater than MISSING are ignored OVERPLOT: Set this keyword to make VELOVECT overplot That is the current graphics screen is not erased no axes are drawn and the previously established scaling remains in effect Note: All other keywords are passed directly to the PLOT procedure and may be used to set option such as TITLE POSITION NOERASE etc OUTPUTS: None COMMON BLOCKS: None SIDE EFFECTS: Plotting on the selected device is performed System variables concerning plotting are changed RESTRICTIONS: None PROCEDURE: Straightforward Unrecognized keywords are passed to the PLOT procedure MODIFICATION HISTORY: DMS RSI Oct 1983 For Sun DMS RSI April 1989 Added TITLE Oct 1990 Added POSITION NOERASE COLOR Feb 91 RES August 1993 Vince Patrick Adv Visualization Lab U of Maryland fixed errors in math August 1993 DMS Added _EXTRA keyword inheritance January 1994 KDB Fixed integer math which produced 0 and caused divide by zero errors December 1994 MWR Added _EXTRA inheritance for PLOTS and OPLOT June 1995 MWR Removed _EXTRA inheritance for PLOTS and changed OPLOT to PLOTS September 1996 GGS Changed denominator of x_step and y_step vars February 1998 DLD Add support for CLIP and NO_CLIP keywords June 1998 DLD Add support for OVERPLOT keywordon_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");279 a[277] = new Array("./ToBeReviewed/PLOTS/VECTEUR/velovect.html", "velovect.pro", "", " Id: velovect pro 97 2006 06 09 15:18:59Z pinsard Copyright c 1983 1998 Research Systems Inc All rights reserved Unauthorized reproduction prohibited NAME: VELOVECT PURPOSE: Produce a two dimensional velocity field plot A directed arrow is drawn at each point showing the direction and magnitude of the field CATEGORY: Plotting two dimensional CALLING SEQUENCE: VELOVECT U V X Y INPUTS: U: The X component of the two dimensional field U must be a two dimensional array V: The Y component of the two dimensional field Y must have the same dimensions as X The vector at point i j has a magnitude of: U i j 2 V i j 2 0 5 and a direction of: ATAN2 V i j U i j OPTIONAL INPUT PARAMETERS: X: Optional abcissae values X must be a vector with a length equal to the first dimension of U and V Y: Optional ordinate values Y must be a vector with a length equal to the first dimension of U and V KEYWORD INPUT PARAMETERS: COLOR: The color index used for the plot DOTS: Set this keyword to 1 to place a dot at each missing point Set this keyword to 0 or omit it to draw nothing for missing points Has effect only if MISSING is specified LENGTH: Length factor The default of 1 0 makes the longest U V vector the length of a cell MISSING: Missing data value Vectors with a LENGTH greater than MISSING are ignored OVERPLOT: Set this keyword to make VELOVECT overplot That is the current graphics screen is not erased no axes are drawn and the previously established scaling remains in effect Note: All other keywords are passed directly to the PLOT procedure and may be used to set option such as TITLE POSITION NOERASE etc OUTPUTS: None COMMON BLOCKS: None SIDE EFFECTS: Plotting on the selected device is performed System variables concerning plotting are changed RESTRICTIONS: None PROCEDURE: Straightforward Unrecognized keywords are passed to the PLOT procedure MODIFICATION HISTORY: DMS RSI Oct 1983 For Sun DMS RSI April 1989 Added TITLE Oct 1990 Added POSITION NOERASE COLOR Feb 91 RES August 1993 Vince Patrick Adv Visualization Lab U of Maryland fixed errors in math August 1993 DMS Added _EXTRA keyword inheritance January 1994 KDB Fixed integer math which produced 0 and caused divide by zero errors December 1994 MWR Added _EXTRA inheritance for PLOTS and OPLOT June 1995 MWR Removed _EXTRA inheritance for PLOTS and changed OPLOT to PLOTS September 1996 GGS Changed denominator of x_step and y_step vars February 1998 DLD Add support for CLIP and NO_CLIP keywords June 1998 DLD Add support for OVERPLOT keyword PRO VELOVECT U V X Y Missing Missing Length length Dots dots Color color CLIP clip NOCLIP noclip OVERPLOT overplot _EXTRA extra on_error 2 Return to caller if an error occurs s size u t size v if s 0 ne 2 then begin baduv: message U and V parameters must be 2D and same size endif if total abs s 0:2 t 0:2 ne 0 then goto baduv if n_params 0 lt 3 then x findgen s 1 else if n_elements x ne s 1 then begin badxy: message X and Y arrays have incorrect size endif if n_params 1 lt 4 then y findgen s 2 else if n_elements y ne s 2 then goto badxy if n_elements missing le 0 then missing 1 0e30 if n_elements length le 0 then length 1 0 mag sqrt u 2 v 2 magnitude Subscripts of good elements nbad 0 of missing points if n_elements missing gt 0 then begin good where mag lt missing if keyword_set dots then bad where mag ge missing nbad endif else begin good lindgen n_elements mag endelse ugood u good vgood v good x0 min x get scaling x1 max x y0 min y y1 max y x_step x1 x0 s 1 1 0 Convert to float Integer math y_step y1 y0 s 2 1 0 could result in divide by 0 maxmag max max abs ugood x_step max abs vgood y_step sina length ugood maxmag cosa length vgood maxmag if n_elements title le 0 then title plot to get axes if n_elements color eq 0 then color p color if n_elements noclip eq 0 then noclip 1 x_b0 x0 x_step x_b1 x1 x_step y_b0 y0 y_step y_b1 y1 y_step if not keyword_set overplot then begin if n_elements position eq 0 then begin plot x_b0 x_b1 y_b1 y_b0 nodata xst yst color color _EXTRA extra endif else begin plot x_b0 x_b1 y_b1 y_b0 nodata xst yst color color _EXTRA extra endelse endif if n_elements clip eq 0 then clip x crange 0 y crange 0 x crange 1 y crange 1 r 3 len of arrow head angle 22 5 dtor Angle of arrowhead st r sin angle sin 22 5 degs length of head ct r cos angle for i 0 n_elements good 1 do begin Each point x0 x good i mod s 1 get coords of start end dx sina i x1 x0 dx y0 y good i s 1 dy cosa i y1 y0 dy xd x_step yd y_step plots x0 x1 x1 ct dx xd st dy yd xd x1 x1 ct dx xd st dy yd xd y0 y1 y1 ct dy yd st dx xd yd y1 y1 ct dy yd st dx xd yd color color clip clip noclip noclip _EXTRA extra endfor if nbad gt 0 then Dots for missing PLOTS x bad mod s 1 y bad s 1 psym 3 color color clip clip noclip noclip _EXTRA extra end"); 280 280 a[278] = new Array("./ToBeReviewed/PLOTS/axe.html", "axe.pro", "", " NAME:axe PURPOSE:gerre les axes pour les differents dessins crees par plt pltz et pltt CATEGORY:environnement graphique CALLING SEQUENCE:axe coupe tempsmin tempsmax INPUTS: coupe: un string qui designe le type de coupe auquel doit de raporter les axes que l on cree par ex: xy xt tempsmin et tempsmax: ds le cas ou l on fait une coupe contenant la dimension temps il faut specifier le debut et la fin de l axe des temps en jours julien KEYWORD PARAMETERS: SIN active qd on trace en sinus de la latitude SEPDATE: string separant les differents constituants de la date Par defaut c est un retour a la ligne qd on fait un yt zt ou t dans les autres cas c est un blanc DIGITSYEAR 2 to use Z format 2 digits to code years instead of Y format See help of label_date for more informations on Z and Y OUTPUTS:les variables globales d environnement graphique: x et y COMMON BLOCKS: common pro SIDE EFFECTS:modifie x et y RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY: Sebastien Masson smasson lodyc jussieu fr 11 12 98 Eric Guilyardi types x y z amelioration de l axe temporel PRO axe coupe tempsmin tempsmax REVERSE_X reverse_x REVERSE_Y reverse_y SIN sin SEPDATE sepdate DIGITSYEAR digitsyear _EXTRA ex common tempsun systime 1 pour key_performance gestion des ticks de l axe des temps ds le ces ou tempsmin et tempsmax sont definits divday 0 if n_params EQ 3 then BEGIN if keyword_set sepdate then sep sepdate ELSE if coupe EQ yt OR coupe EQ zt OR coupe EQ t then sep C ELSE sep caldat tempsmin mmin dmin ymin hmin mnmin smin _EXTRA ex caldat tempsmax mmax dmax ymax hmax mnmax smax _EXTRA ex format used for the year 2 or 4 5 digits IF NOT keyword_set digitsyear THEN digitsyear 4 IF digitsyear EQ 2 THEN fmtyr Z ELSE fmtyr Y if ymax EQ ymin then BEGIN if mmin ne mmax then BEGIN meme annee mais plusieurs mois nticks mmax mmin 1 ticknom lonarr nticks for m 0 nticks 1 do ticknom m julday m mmin 1 ymin _EXTRA ex tminor 6 datfmt M sep fmtyr on verifie que les labels rentrent bien entre tempsmin et tempsmax ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom cas particulier ou l on est a cheval sur 2 mois if nticks LE 1 then begin nticks dmax jourdsmois mmin ymin 0 dmin 1 2 ticknom lonarr nticks for d 0 nticks 1 do ticknom d julday mmin d 2 dmin ymin _EXTRA ex ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom tminor 2 datfmt D sep M endif ENDIF ELSE BEGIN meme annee et meme mois IF dmax dmin 1 GT 4 THEN BEGIN more than 4 days nticks dmax dmin 1 ticknom lonarr nticks for d 0 nticks 1 do ticknom d julday mmin d dmin ymin _EXTRA ex ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom tminor 2 datfmt D sep M ENDIF ELSE BEGIN less than 4 days : divday ticks per day divday 4 nticks dmax dmin divday 1 ticknom fltarr nticks for d 0 nticks 1 do ticknom d julday mmin d divday dmin ymin _EXTRA ex d MOD divday float divday tminor 2 datfmt H:00 ENDELSE ENDELSE ENDIF ELSE BEGIN plusieurs annees CASE 1 OF ymax ymin 1 LE 10: BEGIN freq 1 tminor 12 datfmt M sep fmtyr end ymax ymin 1 LE 20: BEGIN freq 2 tminor 6 datfmt M sep fmtyr end ymax ymin 1 LE 50: BEGIN freq 5 tminor 5 datfmt M sep fmtyr end ymax ymin 1 LE 100: BEGIN freq 10 tminor 10 datfmt fmtyr end ymax ymin 1 LE 1000: BEGIN freq 50 tminor 5 datfmt fmtyr end ELSE : BEGIN freq 100 tminor 50 datfmt Y end ENDCASE nticks floor ymax ymin freq 1 IF floor ymin freq NE ymin freq THEN yminf floor ymin freq 1 freq ELSE yminf floor ymin freq freq ticknom lonarr nticks for y 0 nticks 1 do ticknom y julday 1 1 yminf y freq _EXTRA ex on verifie que les labels rentrent bien entre tempsmin et tempsmax ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom cas particulier ou l on est a cheval sur 2 annees if nticks LE 1 then begin nticks mmax 12 mmin 1 ticknom lonarr nticks for m 0 nticks 1 do ticknom m julday m mmin 1 ymin _EXTRA ex ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom tminor 6 datfmt M sep fmtyr cas particulier ou l on est a cheval sur 2 mois if nticks LE 1 then begin nticks dmax jourdsmois mmin ymin 0 dmin 1 2 ticknom lonarr nticks for d 0 nticks 1 do ticknom d julday mmin d 2 dmin ymin _EXTRA ex ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom tminor 2 datfmt D sep M endif endif ENDELSE toto label_date 0 0 0 DATE_FORMAT datfmt _EXTRA ex if chkstru ex DATE_FORMAT then ex DATE_FORMAT ENDIF definition des parametres des axes au cas par cas case coupe of xy :BEGIN if keyword_set reverse_x then x range lon2 lon1 ELSE x range lon1 lon2 if keyword_set reverse_y then y range lat2 lat1 ELSE y range lat1 lat2 IF key_onearth THEN x tickformat lonaxe IF key_onearth THEN y tickformat lataxe END yz :BEGIN if keyword_set reverse_x then x range lat2 lat1 ELSE x range lat1 lat2 if keyword_set reverse_y then y range 0 1 ELSE y range 1 0 if keyword_set sin then BEGIN nombre de ticks par defaut plot 0 0 noerase nodata xtick_get xaxe on augmente ce nombre pour qu il soit autour de 10 ticks n_elements xaxe 1 ticks ticks 1 2 4 8 ticks ticks sort abs ticks 10 0 on recupere l axex pour ce nouveau nombre de ticks plot 0 0 xticks ticks noerase nodata xtick_get xaxe x ticks ticks x tickv sin pi 180 xaxe tickname strarr ticks 1 for i 0 ticks do tickname i lataxe 0 0 xaxe i x tickname tickname x range sin pi 180 x range endif end xz :BEGIN if keyword_set reverse_x then x range lon2 lon1 ELSE x range lon1 lon2 if keyword_set reverse_y then y range 0 1 ELSE y range 1 0 end xt : begin if keyword_set reverse_x then x range lon2 lon1 ELSE x range lon1 lon2 if keyword_set reverse_y then y range tempsmax tempsmin tempsmin ELSE y range tempsmin tempsmax tempsmin IF key_onearth THEN x tickformat lonaxe result LABEL_DATE DATE_FORMAT M sep fmtyr y tickformat LABEL_DATE y tickname LABEL_DATE 1 0 ticknom _EXTRA ex y ticklen 1 y gridstyle 2 y ticks nticks 1 y tickv ticknom tempsmin y minor tminor IF divday GT 0 THEN y title Time from strtrim dmin 1 def_month 1m strtrim mmin 1 strtrim ymin 1 end yt : begin if keyword_set reverse_x then x range tempsmax tempsmin tempsmin ELSE x range tempsmin tempsmax tempsmin if keyword_set reverse_y then y range lat2 lat1 ELSE y range lat1 lat2 IF key_onearth THEN y tickformat lataxe x tickname LABEL_DATE 0 0 ticknom _EXTRA ex x ticklen 1 x gridstyle 2 x ticks nticks 1 x tickv ticknom tempsmin x minor tminor IF divday GT 0 THEN y title Time from strtrim dmin 1 def_month 1m strtrim mmin 1 strtrim ymin 1 end zt : begin if keyword_set reverse_x then x range tempsmax tempsmin tempsmin ELSE x range tempsmin tempsmax tempsmin if vargrid EQ W then gdep gdepw 0:nzw 1 ELSE gdep gdept 0:nzt 1 x tickname LABEL_DATE 0 0 ticknom _EXTRA ex x ticklen 1 x gridstyle 2 x ticks nticks 1 x tickv ticknom tempsmin x minor tminor IF divday GT 0 THEN y title Time from strtrim dmin 1 def_month 1m strtrim mmin 1 strtrim ymin 1 end t : BEGIN if keyword_set reverse_x then x range tempsmax tempsmin tempsmin ELSE x range tempsmin tempsmax tempsmin x tickname LABEL_DATE 0 0 ticknom _EXTRA ex x ticklen 1 x gridstyle 2 x ticks nticks 1 x tickv ticknom tempsmin x minor tminor IF divday GT 0 THEN y title Time from strtrim dmin 1 def_month 1m strtrim mmin 1 strtrim ymin 1 end x : begin x range lon1 lon2 IF key_onearth THEN x tickformat lonaxe END y : begin if keyword_set sin then BEGIN nombre de ticks par defaut plot 0 0 nodata noerase xstyle 5 ystyle 5 xtick_get xaxe on augmente ce nombre pour qu il soit autour de 10 ticks n_elements xaxe 1 ticks ticks 1 2 4 8 ticks ticks sort abs ticks 10 0 on recupere l axex pour ce nouveau nombre de ticks plot 0 0 xticks ticks nodata noerase xstyle 5 ystyle 5 xtick_get xaxe x ticks ticks x tickv sin pi 180 xaxe tickname strarr ticks 1 for i 0 ticks do tickname i lataxe 0 0 xaxe i x tickname tickname x range sin pi 180 x range ENDIF ELSE x range lat1 lat2 IF key_onearth THEN x tickformat lataxe END z : begin if vargrid EQ W then gdep gdepw 0:nzw 1 ELSE gdep gdept 0:nzt 1 if keyword_set reverse_y then y range gdep 0 gdep n_elements gdep 1 ELSE y range gdep n_elements gdep 1 gdep 0 END endcase if keyword_set key_performance THEN print temps axe systime 1 tempsun return end"); 281 281 a[279] = new Array("./ToBeReviewed/PLOTS/legende.html", "legende.pro", "", " NAME:legende pro PURPOSE:fournit les legendes CATEGORY:graph annexe CALLING SEQUENCE:legende mi ma coupe title subtitle xtitle ytitle INPUTS:mi et ma: le max et le min du dessin cf plt pro et pltz pro coupe caractere de 2 lettres donnant le type de coupe par ex: xz KEYWORD PARAMETERS: TITRE: chaine de caracteres qui doit etre le titre du dessin Par defaut le titre est le nom vairmer du champ ENDPOINTS:utilise qd on fait des coupes veticales en diagonale OUTPUTS:le titre sous titre titre de x et titre de y COMMON BLOCKS: common pro SIDE EFFECTS: l utilisation de la variable globale langage permet de changer de langue ou de facon de legender facilement On peut facilement personnaliser la chose en rajoutant un cas au case sur la valeur de langage RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY: Sebastien Masson smasson lodyc jussieu fr 14 8 98 Eric Guilyardi ericg lodyc jussieu fr GB version 11 6 99 pro legende mi ma coupe CONTOUR contour ENDPOINTS endpoints DIREC direc VECTLEGENDE vectlegende INTERVALLE intervalle TYPE_YZ type_yz VARNAME2 varname2 NPTS npts _EXTRA ex common tempsun systime 1 pour key_performance grille 1 1 1 gdep nx ny nz English legends fmt_mm f12 2 fmt_bt f7 1 colorf contourf Contour plot vecteurf Vector norm expf datef fieldf depthf endpointsf Diag Section zonalf IF key_onearth THEN latintf latitudes in ELSE latintf j index in timintf time in onf depthf2 Depth m Meridf Zonal Mean IF key_onearth THEN lonintf longitudes in ELSE lonintf i in hovxt XT plot diaghovxt Diag XT plot depintf depths in timef Time hovyt YT plot diaghovyt Diag YT plot hovzt ZT plot hovt IF key_onearth THEN lontitle Longitude ELSE lontitle i index IF key_onearth THEN lattitle Latitude ELSE lattitle j index vertz depthf2 legniv m IF keyword_set TYPE_YZ THEN BEGIN IF type_yz EQ hPa THEN vertz hPa IF type_yz EQ hPa THEN legniv hPa ENDIF Start legende definition et complement eventuelle de p subtitle if n_elements varunit ne 0 then unite varunit else unite p subtitle colorf unite : Min strtrim string format fmt_mm mi 2 Max strtrim string format fmt_mm ma 2 if keyword_set intervalle then BEGIN if intervalle NE 1 then p subtitle p subtitle Int strtrim string format fmt_mm intervalle 2 endif if size contour type EQ 8 then BEGIN c est une structure unite contour 1 p subtitle p subtitle C contourf unite : Min strtrim string format fmt_mm contour 0 0 2 Max strtrim string format fmt_mm contour 0 1 2 if contour inter NE 1 then p subtitle p subtitle Int strtrim string format fmt_mm contour inter 2 ENDIF if size vectlegende type EQ 8 then begin unite vectlegende 1 p subtitle p subtitle C vecteurf unite : Min strtrim string format fmt_mm vectlegende 0 0 2 Max strtrim string format fmt_mm vectlegende 0 1 2 endif mise en forme des dimensions du sous domaine la1 strtrim string format fmt_bt lat1 2 la2 strtrim string format fmt_bt lat2 2 lo1 strtrim string format fmt_bt lon1 2 lo2 strtrim string format fmt_bt lon2 2 pr1 strtrim string format fmt_bt vert1 2 pr2 strtrim string format fmt_bt vert2 2 gestion de la date if n_elements vardate EQ 0 then vardate if NOT keyword_set direc then direc if strpos direc t NE 1 then begin svardate strtrim vairdate time 0 1 strtrim vairdate time jpt 1 1 ENDIF ELSE svardate vardate case sur le cas auquel s applique la legende case coupe of xy :begin if strupcase vargrid EQ W then firstz firstzw ELSE firstz firstzt if strpos direc z EQ 1 AND firstz NE 0 then BEGIN prof strtrim round gdep 0 1 p title expf varexp datef svardate fieldf varname depthf prof legniv ENDIF ELSE p title expf varexp datef svardate fieldf varname x title lontitle y title lattitle end xz :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim ny 1 IF long n LE 3 THEN zonalf Section if keyword_set endpoints AND lat1 NE lat2 then p title endpointsf varexp datef svardate fieldf varname ELSE p title zonalf varexp datef svardate fieldf varname x title lontitle if keyword_set endpoints AND lat1 EQ lat2 then BEGIN IF key_onearth THEN x title x title at strtrim lataxe 0 0 lat1 1 ELSE x title x title at j index strtrim lat1 1 ENDIF y title depthf2 end yz :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx 1 IF long n LE 3 THEN meridf if keyword_set endpoints AND lon1 NE lon2 then p title endpointsf varexp datef svardate fieldf varname ELSE p title meridf varexp datef svardate fieldf varname y title vertz x title lattitle if keyword_set endpoints AND lon1 EQ lon2 then BEGIN IF key_onearth THEN x title x title at strtrim lonaxe 0 0 lon1 1 ELSE x title x title at i index strtrim lon1 1 ENDIF end xt :begin IF keyword_set npts THEN n strtrim npts 1 if keyword_set endpoints AND lat1 NE lat2 then p title diaghovxt varexp fieldf varname ELSE p title hovxt varexp fieldf varname IF time size time 0 1 time 0 GE 10 THEN y title timef x title lontitle if keyword_set endpoints AND lat1 EQ lat2 then BEGIN IF key_onearth THEN x title x title at strtrim lataxe 0 0 lat1 1 ELSE x title x title at j index strtrim lat1 1 ENDIF end yt :begin IF keyword_set npts THEN n strtrim npts 1 if keyword_set endpoints AND lon1 NE lon2 then p title diaghovyt varexp fieldf varname ELSE p title hovyt varexp fieldf varname IF time size time 0 1 time 0 GE 10 THEN x title timef y title lattitle if keyword_set endpoints AND lon1 EQ lon2 then BEGIN IF key_onearth THEN x title x title at strtrim lonaxe 0 0 lon1 1 ELSE x title x title at i index strtrim lon1 1 ENDIF end zt :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx ny 1 p title hovzt varexp fieldf varname y title depthf2 IF time size time 0 1 time 0 GE 10 THEN x title timef end t :begin IF keyword_set npts THEN n strtrim npts 1 ELSE BEGIN if keyword_set integration3d then n strtrim nx ny nz 1 ELSE n strtrim nx ny 1 ENDELSE p title hovt varexp fieldf varname y title varname IF time size time 0 1 time 0 GE 10 THEN x title timef end x :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim ny nz 1 if keyword_set endpoints AND lat1 NE lat2 then p title endpointsf varexp datef svardate fieldf varname ELSE p title varexp datef svardate fieldf varname x title lontitle if keyword_set endpoints AND lat1 EQ lat2 then BEGIN IF key_onearth THEN x title x title at strtrim lataxe 0 0 lat1 1 ELSE x title x title at j index strtrim lat1 1 ENDIF y title varname end y :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx nz 1 if keyword_set endpoints AND lon1 NE lon2 then p title endpointsf varexp datef svardate fieldf varname ELSE p title varexp datef svardate fieldf varname x title lattitle if keyword_set endpoints AND lon1 EQ lon2 then BEGIN IF key_onearth THEN x title x title at strtrim lonaxe 0 0 lon1 1 ELSE x title x title at i index strtrim lon1 1 ENDIF y title varname end z :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx ny 1 p title varexp datef svardate fieldf varname y title depthf2 x title varname end yfx : BEGIN IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx ny nz 1 p title varexp datef svardate varunit x title varname2 y title varname END else: ENDCASE if keyword_set direc then BEGIN if strpos direc x NE 1 then p subtitle lonintf lo1 lo2 onf strtrim nx 1 points C p subtitle if strpos direc y NE 1 then BEGIN if strpos p subtitle EQ 1 then p subtitle latintf la1 la2 onf strtrim ny 1 points C p subtitle ELSE p subtitle latintf la1 la2 onf strtrim ny 1 points p subtitle ENDIF if strpos direc z NE 1 AND nz NE 1 OR coupe NE xy then BEGIN if strpos p subtitle EQ 1 then p subtitle depintf pr1 pr2 onf strtrim nz 1 points C p subtitle ELSE p subtitle depintf pr1 pr2 onf strtrim nz 1 points p subtitle ENDIF ENDIF if keyword_set endpoints AND coupe NE yt AND lat1 NE lat2 then p title p title C C if keyword_set key_performance THEN print temps legende systime 1 tempsun return end"); -
trunk/SRC/Interpolation/angle.pro
r59 r101 1 1 ;--------- 2 2 ;+ 3 ; NAME:angle.pro (fom angle.F,v 2.2 in OPA8.2)3 ; @file_comments north stereographic polar projection 4 4 ; 5 ; PURPOSE:Compute angles between grid lines and direction of the North5 ; @keyword /DOUBLE use double precision (default is float) 6 6 ; 7 ; CALLING SEQUENCE: 8 ; angle, fileocemesh, gcosu, gsinu, gcosv, gsinv, gcost, gsint 9 ; 10 ; INPUTS: 11 ; fileocemesh a netcdf file that contains (at least): 12 ; glamu, gphiu: longitudes and latitudes at U-points 13 ; glamv, gphiv: longitudes and latitudes at V-points 14 ; glamf, gphif: longitudes and latitudes at F-points 15 ; 16 ; KEYWORD PARAMETERS: 17 ; 18 ; IODIRECTORY: the directory path where is located fileocemesh 19 ; 20 ; /DOUBLE: use double precision (default is float) 21 ; 22 ; OUTPUTS: 7 ; @returns 23 8 ; gsinu,gcosu : sinus and cosinus of the angle 24 9 ; gsinv,gcosv between north-south direction 25 10 ; gsint,gcost and the j-direction of the mesh 26 ;27 11 ; 28 ; RESTRICTIONS:to compute the lateral boundary conditions, we assume12 ; @restrictions to compute the lateral boundary conditions, we assume 29 13 ; that: 30 14 ; (1) the first line is similar to the second line … … 37 21 ; 38 22 ; 39 ; MODIFICATION HISTORY:23 ; @history 40 24 ; -------------- 41 25 ; Original : 96-07 (O. Marti) … … 45 29 ;--------- 46 30 ; 47 ; fsnspp: north stereographic polar projection48 31 FUNCTION fsnspp, plam, pphi, DOUBLE = double 49 32 IF keyword_set(double) THEN BEGIN … … 59 42 END 60 43 ;--------- 44 ;+ 45 ; @file_comments Compute angles between grid lines and direction of the North 46 ;(fom angle.F,v 2.2 in OPA8.2) 47 ; 48 ; @param fileocemesh {in}{required} a netcdf file that contains (at least): 49 ; glamu, gphiu: longitudes and latitudes at U-points 50 ; glamv, gphiv: longitudes and latitudes at V-points 51 ; glamf, gphif: longitudes and latitudes at F-points 52 ; 53 ; @keyword IODIRECTORY the directory path where is located fileocemesh 54 ; @keyword /DOUBLE use double precision (default is float) 55 ;- 61 56 ;--------- 62 57 ; -
trunk/SRC/Interpolation/clickincell.pro
r69 r101 1 1 ;+ 2 ; NAME:clickincell2 ; @file_comments click on a map and find in which cell the click was 3 3 ; 4 ; PURPOSE: click on a map and find in which cell the click was4 ; @categories finding where is a point on a grid 5 5 ; 6 ; CATEGORY:finding where is a point on a grid 7 ; 8 ; CALLING SEQUENCE: 6 ; @examples 9 7 ; 10 8 ; res = clickincell() … … 13 11 ; Click on the right button to quit. 14 12 ; 15 ; INPUTS:None 16 ; 17 ; KEYWORD PARAMETERS: 18 ; 19 ; CELLTYPE = 'T', 'W', 'U', 'V' or 'F': This this the type of point 13 ; @keyword CELLTYPE = 'T', 'W', 'U', 'V' or 'F' This this the type of point 20 14 ; that is located in the center of the cell which the click is 21 15 ; located. default is T type of cell (with corner defined by F 22 16 ; points). 23 17 ; 24 ; /DRAWCELL:to draw the cell in which we clicked18 ; @keyword /DRAWCELL to draw the cell in which we clicked 25 19 ; 26 ; COLOR =the color used to draw the cells (Clicking one more20 ; @keyword COLOR the color used to draw the cells (Clicking one more 27 21 ; time in the same cell will draw the cell with the white color) 28 22 ; 29 ; /ORIGINAL:to get the position of the cell regarding the original23 ; @keyword /ORIGINAL to get the position of the cell regarding the original 30 24 ; grid (with no key_shift, ixminmesh, iyminmesh...) 31 25 ; 32 ; /IJ:see outpus26 ; @keyword /IJ see outpus 33 27 ; 34 ; _EXTRA:to pass extra keywords to inquad and plot (when /drawcell)28 ; @keyword _EXTRA to pass extra keywords to inquad and plot (when /drawcell) 35 29 ; 36 ; OUTPUTS:37 ; the theindex of the selected cells regarding to the grid which30 ; @returns 31 ; the index of the selected cells regarding to the grid which 38 32 ; is in memory in the variable of the common. If /ij keyword is 39 33 ; activated give 2D array (2, n) which are the i,j position of the 40 34 ; n selected cells. 41 35 ; 42 ; COMMON BLOCKS:common.pro36 ; @uses common.pro 43 37 ; 44 ; SIDE EFFECTS: 45 ; 46 ; RESTRICTIONS: 47 ; 48 ; EXAMPLE: 38 ; @examples 49 39 ; 50 40 ; IDL> plt, findgen(jpi,jpj),/nodata,map=[90,0,0],/ortho 51 41 ; IDL> print, clickincell(/draw,color=150,/xy) 52 42 ; 53 ; MODIFICATION HISTORY:54 ; Sebastien Masson (smasson @lodyc.jussieu.fr)43 ; @history 44 ; Sebastien Masson (smasson\@lodyc.jussieu.fr) 55 45 ; August 2003 56 46 ; -
trunk/SRC/Interpolation/compute_fromreg_bilinear_weigaddr.pro
r98 r101 1 1 ;+ 2 ; NAME: compute_fromreg_bilinear_weigaddr 3 ; 4 ; PURPOSE: compute the weight and address neede to interpolate data from a 2 ; @file_comments compute the weight and address neede to interpolate data from a 5 3 ; "regular grid" to any grid using the bilinear method 6 4 ; 7 ; CATEGORY:interpolation 8 ; 9 ; CALLING SEQUENCE: 10 ; compute_fromreg_bilinear_weigaddr, alon, alat, olon, olat, weig, addr 11 ; 12 ; INPUTS: 13 ; lonin and latin: longitude/latitude of the input data. Must be 1D arrays 14 ; lonout and latout: longitude/latitude of the output data. Must be 2D arrays 15 ; 16 ; KEYWORD PARAMETERS: 17 ; 18 ; /NONORTHERNLINE and /NOSOUTHERNLINE: activate if you don't whant to take into 19 ; account the northen/southern line of the input data when perfoming the 5 ; @categories interpolation 6 ; 7 ; @param alonin {in}{required} longitudeof the input data 8 ; @param alatin {in}{required} latitude of the input data 9 ; @param olonin {in}{required} longitude of the output data 10 ; @param olat {in}{required} latitude of the output data 11 ; 12 ; @keyword /NONORTHERNLINE activate if you don't whant to take into 13 ; account the northen line of the input data when perfoming the 14 ; @keyword /NOSOUTHERNLINE activate if you don't whant to take into 15 ; account the southern line of the input data when perfoming the 20 16 ; interpolation. 21 17 ; 22 ; OUTPUTS:18 ; @returns 23 19 ; weig, addr: 2D arrays, weig and addr are the weight and addresses used to 24 20 ; perform the interpolation: … … 26 22 ; dataout = reform(dataout, jpio, jpjo, /over) 27 23 ; 28 ; COMMON BLOCKS: none 29 ; 30 ; SIDE EFFECTS: ? 31 ; 32 ; RESTRICTIONS: 24 ; @restrictions 33 25 ; - the input grid must be a "regular grid", defined as a grid for which each 34 26 ; lontitudes lines have the same latitude and each latitudes columns have the … … 39 31 ; using a linear interpolation only along the longitudinal direction. 40 32 ; 41 ; EXAMPLE: 42 ; 43 ; MODIFICATION HISTORY: 33 ; @history 44 34 ; November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr) 45 35 ; -
trunk/SRC/Interpolation/compute_fromreg_imoms3_weigaddr.pro
r69 r101 1 1 ;+ 2 ; NAME: compute_fromreg_imoms3_weigaddr 3 ; 4 ; PURPOSE: compute the weight and address neede to interpolate data from a 2 ; 3 ; @file_comments compute the weight and address neede to interpolate data from a 5 4 ; "regular grid" to any grid using the imoms3 method 6 5 ; 7 ; CATEGORY:interpolation 8 ; 9 ; CALLING SEQUENCE: 10 ; compute_fromreg_imoms3_weigaddr, alon, alat, olon, olat, weig, addr 11 ; 12 ; INPUTS: 13 ; lonin and latin: longitude/latitude of the input data 14 ; lonout and latout: longitude/latitude of the output data 15 ; 16 ; KEYWORD PARAMETERS: 17 ; 18 ; /NONORTHERNLINE and /NOSOUTHERNLINE: activate if you don't whant to take into 6 ; @categories interpolation 7 PRO compute_fromreg_imoms3_weigaddr, alonin, alatin, olonin, olat, weig, addr $ 8 ; 9 ; @param alonin {in}{required} longitude of the input data 10 ; @param alatin {in}{required} latitude of the input data 11 ; @param olonin {in}{required} longitude of the output data 12 ; @param olat {in}{required} latitude of the output data 13 ; 14 ; @keyword /NONORTHERNLINE and /NOSOUTHERNLINE activate if you don't whant to take into 19 15 ; account the northen/southern line of the input data when perfoming the 20 16 ; interpolation. 21 17 ; 22 ; OUTPUTS:18 ; @returns 23 19 ; weig, addr: 2D arrays, weig and addr are the weight and addresses used to 24 20 ; perform the interpolation: … … 26 22 ; dataout = reform(dataout, jpio, jpjo, /over) 27 23 ; 28 ; COMMON BLOCKS: none 29 ; 30 ; SIDE EFFECTS: ? 31 ; 32 ; RESTRICTIONS: 24 ; @restrictions 33 25 ; - the input grid must be a "regular/rectangular grid", defined as a grid for 34 26 ; which each lontitudes lines have the same latitude and each latitudes columns … … 42 34 ; using a imoms3 interpolation only along the longitudinal direction. 43 35 ; 44 ; EXAMPLE: 45 ; 46 ; MODIFICATION HISTORY: 47 ; November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr) 36 ; @history 37 ; November 2005: Sebastien Masson (smasson\@lodyc.jussieu.fr) 48 38 ; March 2006: works for rectangular grids 49 39 ;- -
trunk/SRC/Interpolation/cutpar.pro
r59 r101 1 1 ;+ 2 ; NAME: cutpar3 2 ; 4 ; PURPOSE:cut p parallelogram(s) into p*n^2 parallelograms3 ; @file_comments cut p parallelogram(s) into p*n^2 parallelograms 5 4 ; 6 ; CATEGORY:basic work5 ; @categories basic work 7 6 ; 8 ; CALLING SEQUENCE:res = cutpar(x0, y0, x1, y1, x2, y2, x3, y3, n) 7 ; @examples 8 ; res = cutpar(x0, y0, x1, y1, x2, y2, x3, y3, n) 9 9 ; 10 ; INPUTS: 11 ; x0,y0 1d arrays of p elements, giving the edge positions. The 10 ; @param x0,y0 {in}{required} 1d arrays of p elements, giving the edge positions. The 12 11 ; edges must be given as in plot to traw the parallelogram. (see 13 12 ; example). 14 ; n:each parallelogram will be cutted in n^2 pieces13 ; @param n {in}{required} each parallelogram will be cutted in n^2 pieces 15 14 ; 16 ; KEYWORD PARAMETERS:15 ; @keyword /endpoints see outputs 17 16 ; 18 ; /endpoints: see outputs 19 ; 20 ; /onsphere: to specify that the points are located on a 17 ; @keyword /onsphere to specify that the points are located on a 21 18 ; sphere. In this case, x and y corresponds to longitude and 22 19 ; latitude in degrees. 23 20 ; 24 ; OUTPUTS:21 ; @returns 25 22 ; -defaut: 3d array(2,n^2,p) giving the center position of each 26 23 ; piece of the parallelograms … … 28 25 ; of each piece of the parallelograms 29 26 ; 30 ; COMMON BLOCKS: no27 ; @uses cutsegment.pro 31 28 ; 32 ; SIDE EFFECTS: need cutsegment.pro 33 ; 34 ; RESTRICTIONS: ? 35 ; 36 ; EXAMPLE: 29 ; @examples 37 30 ; 38 31 ; x0 = [2,6,2] … … 50 43 ; for i=0,2 do oplot, [res[0,*,i]], [res[1,*,i]], color = 20+10*i, psym = 1, thick = 3 51 44 ; 52 ; MODIFICATION HISTORY:53 ; S. Masson (smasson @lodyc.jussieu.fr)45 ; @history 46 ; S. Masson (smasson\@lodyc.jussieu.fr) 54 47 ; July 5th, 2002 55 48 ;- -
trunk/SRC/Interpolation/cutsegment.pro
r59 r101 1 1 ;+ 2 ; NAME: cutsegment3 2 ; 4 ; PURPOSE:cut p segments into p*n equal parts3 ; @file_comments cut p segments into p*n equal parts 5 4 ; 6 ; CATEGORY:basic work5 ; @categories basic work 7 6 ; 8 ; CALLING SEQUENCE: res = cutsegment(x0, y0, x1, y1, n) 7 ; @examples 8 ; res = cutsegment(x0, y0, x1, y1, n) 9 9 ; 10 ; INPUTS: 11 ; x0,y0 and x1,y1, 1d arrays of p elements, the coordinates of 10 ; @param x0,y0 and x1,y1 {in}{required} 1d arrays of p elements, the coordinates of 12 11 ; the endpoints of the p segmements 13 ; n:the number of pieces we want to cut each segment12 ; @param n {in}{required} the number of pieces we want to cut each segment 14 13 ; 15 ; KEYWORD PARAMETERS:16 14 ; 17 ; /endpoints:see ouputs15 ; @keyword /endpoints see ouputs 18 16 ; 19 ; /onsphere:to specify that the points are located on a17 ; @keyword /onsphere to specify that the points are located on a 20 18 ; sphere. In this case, x and y corresponds to longitude and 21 19 ; latitude in degrees. 22 20 ; 23 ; OUTPUTS:21 ; @returns 24 22 ; defaut: a 3d array (2,n,p) that gives the coordinates of the 25 23 ; middle of the cutted segments. … … 27 25 ; coordinates of the endpoints of the cutted segments. 28 26 ; 29 ; COMMON BLOCKS: no 30 ; 31 ; SIDE EFFECTS: no 32 ; 33 ; RESTRICTIONS: ? 34 ; 35 ; EXAMPLE: 27 ; @examples 36 28 ; 37 29 ; IDL> x0=[2,5] … … 46 38 ; IDL> oplot, [res[0,*,1]], [res[1,*,1]], color = 40, psym = 1, thick = 3 47 39 ; 48 ; MODIFICATION HISTORY:49 ; S. Masson (smasson @lodyc.jussieu.fr)40 ; @history 41 ; S. Masson (smasson\@lodyc.jussieu.fr) 50 42 ; July 5th, 2002 51 43 ;- -
trunk/SRC/Interpolation/extrapolate.pro
r69 r101 1 ;+ 2 ; @file_comments extrapolate data (zinput) where maskinput eq 0 by filling step by 3 ; step the coastline points with the mean value of the 8 neighbourgs. 4 ; 5 ;- 1 6 FUNCTION extrapolate, zinput, maskinput, nb_iteration, x_periodic = x_periodic, MINVAL = minval, MAXVAL = maxval 2 7 ; 3 8 compile_opt strictarr, strictarrsubs 4 ;5 ; extrapolate data (zinput) where maskinput eq 0 by filling step by6 ; step the coastline points with the mean value of the 8 neighbourgs.7 9 ; 8 10 ; check the number of iteration used in the extrapolation. -
trunk/SRC/Interpolation/fromreg.pro
r69 r101 1 1 ;+ 2 ; NAME: fromreg3 2 ; 4 ; PURPOSE:interpolate data from a "regular/rectangular grid" to any grid.3 ; @file_comments interpolate data from a "regular/rectangular grid" to any grid. 5 4 ; 2 metods availables: bilinear and imoms3 6 5 ; A "regular/rectangular grid" is defined as a grid for which each lontitudes lines have 7 6 ; the same latitude and each latitudes columns have the same longitude. 8 7 ; 9 ; CATEGORY:interpolation8 ; @categories interpolation 10 9 ; 11 ; CALLING SEQUENCE: dataout = fromreg(method, datain [, lonin, latin, lonout, latout]) 10 ; @examples 11 ; dataout = fromreg(method, datain [, lonin, latin, lonout, latout]) 12 12 ; 13 ; INPUTS: 14 ; method: a string defining the interpolation method. 13 ; @param method {in}{required} a string defining the interpolation method. 15 14 ; must be 'bilinear' or 'imoms3' 16 ; datain:a 2D array the input data to interpolate17 ; lonin and latin:longitude/latitude of the input data. optionals if15 ; @param datain {in}{required} a 2D array the input data to interpolate 16 ; @param lonin latin {in}{required} longitude/latitude of the input data. optionals if 18 17 ; WEIG and ADDR keywords used. 19 ; lonout and latout:longitude/latitude of the output data. optionals if18 ; @param lonout latout {in}{required} longitude/latitude of the output data. optionals if 20 19 ; WEIG and ADDR keywords used. 21 20 ; 22 ; KEYWORD PARAMETERS: 23 ; 24 ; WEIG, ADDR: 2D arrays, weig and addr are the weight and addresses used to 21 ; @keyword WEIG, ADDR 2D arrays, weig and addr are the weight and addresses used to 25 22 ; perform the interpolation: 26 23 ; dataout = total(weig*datain[addr], 1) … … 31 28 ; case, lonin, latin, lonout and latout are not necessary. 32 29 ; 33 ; /NONORTHERNLINE and /NOSOUTHERNLINE:activate if you don't whant to take into30 ; @keyword /NONORTHERNLINE and /NOSOUTHERNLINE activate if you don't whant to take into 34 31 ; account the northen/southern line of the input data when perfoming the 35 32 ; interpolation. 36 33 ; 37 ; OUTPUTS:2D array: the interpolated data34 ; @returns 2D array: the interpolated data 38 35 ; 39 ; COMMON BLOCKS: none 36 ; @restrictions We supposed the data are located on a sphere, with a 37 ; periodicity along the longitude. 40 38 ; 41 ; SIDE EFFECTS: ? 42 ; 43 ; RESTRICTIONS:We supposed the data are located on a sphere, with a periodicity along 44 ; the longitude. 45 ; 46 ; EXAMPLE: 39 ; @examples 47 40 ; 48 41 ; topa = fromreg('bilinear', tncep, xncep, yncep, glamt, gphit) … … 54 47 ; t2opa = fromreg('bilinear', t2ncep, xncep, WEIG = a, ADDR = b) 55 48 ; 56 ; MODIFICATION HISTORY:57 ; November 2005: Sebastien Masson (smasson @lodyc.jussieu.fr)49 ; @history 50 ; November 2005: Sebastien Masson (smasson\@lodyc.jussieu.fr) 58 51 ; 59 52 ;- -
trunk/SRC/Interpolation/get_gridparams.pro
r69 r101 1 1 ;+ 2 ; NAME: get_gridparams 3 ; 4 ; PURPOSE: 2 ; 3 ; @file_comments 5 4 ; 1) extract from a NetCDF file the longitude, latidude, and their dimensions 6 5 ; and make sure it is 1D or 2D arrays … … 9 8 ; they are 1D or 2D arrays 10 9 ; 11 ; CATEGORY:for interpolations tools12 ; 13 ; CALLING SEQUENCE:10 ; @categories interpolation 11 ; 12 ; @examples 14 13 ; 15 14 ; 1) get_gridparams, file, lonname, latname, lon, lat, jpi, jpj, n_dimensions … … 19 18 ; 2) get_gridparams, lon, lat, jpi, jpj, n_dimensions 20 19 ; 21 ; INPUTS:22 ;23 20 ; 1) 24 ; file: the name of the netcdf file 25 ; loname: the name of the variable that contains the longitude in the NetCDF file 26 ; latname: the name of the variable that contains the latitude in the NetCDF file 21 ; @param in1 {in}{required} the name of the netcdf file 22 ; @param in2 {in}{required} the name of the variable that contains the longitude in the NetCDF file 23 ; @param in3 {in}{required} the name of the variable that contains the latitude in the NetCDF file 24 ; @param in4 {out} the number of points in the longitudinal direction 25 ; @param in5 {out} the number of points in the latitudinal direction 26 ; @param in6 {out} the variable that will contain the longitudes 27 ; @param in7 {out} the variable that will contain the latitudes 28 ; @param in8 {out} 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 27 29 ; 28 30 ; or 29 31 ; 30 ; 2) lon and lat: 1d or 2D arrays defining longitudes and latitudes. 32 ; 2) 33 ; @param lon lat {in}{required} 1d or 2D arrays defining longitudes and latitudes. 31 34 ; Note that these arrays are also outputs and can therefore be modified. 32 35 33 ; KEYWORD PARAMETERS: none 34 ; 35 ; OUTPUTS: 36 ; lon the variable that will contain the longitudes 37 ; lat the variable that will contain the latitudes 38 ; jpi the number of points in the longitudinal direction 39 ; jpj the number of points in the latitudinal direction 40 ; n_dimensions: 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 36 ; @param in1 {out} the variable that will contain the longitudes 37 ; @param in2 {out} the variable that will contain the latitudes 38 ; @param in3 {out} the number of points in the longitudinal direction 39 ; @param in4 {out} the number of points in the latitudinal direction 40 ; @param in5 {out} 1 or 2 to specify if lon and lat should be 1D (jpi or jpj) 41 41 ; arrays or 2D arrays (jpi,jpj). Note that of n_dimensions = 1, then the 42 42 ; grid must be regular (each longitudes must be the same for all latitudes 43 43 ; and each latitudes should be the sae for all longitudes). 44 44 ; 45 ; COMMON BLOCKS: none 46 ; 47 ; SIDE EFFECTS: ? 48 ; 49 ; RESTRICTIONS: ? 50 ; 51 ; EXAMPLE: 45 ; @examples 52 46 ; 53 47 ; 1) ncdf_get_gridparams, 'coordinates_ORCA_R05.nc', 'glamt', 'gphit' $ … … 56 50 ; 2) ncdf_get_gridparams, olon, olat, jpio, jpjo, 2 57 51 ; 58 ; MODIFICATION HISTORY:59 ; November 2005: Sebastien Masson (smasson @lodyc.jussieu.fr)52 ; @history 53 ; November 2005: Sebastien Masson (smasson\@lodyc.jussieu.fr) 60 54 ; 61 55 ;- -
trunk/SRC/Interpolation/imoms3.pro
r69 r101 1 ;+ 2 ; 3 ;- 1 4 FUNCTION imoms3, xin 2 5 -
trunk/SRC/Interpolation/inquad.pro
r59 r101 1 1 ;+ 2 ; NAME:inquad 3 ; 4 ; PURPOSE: to find if an (x,y) point is in a quadrilateral (x1,x2,x3,x4) 5 ; 6 ; CATEGORY:grid manipulation 7 ; 8 ; CALLING SEQUENCE: 2 ; @file_comments to find if an (x,y) point is in a quadrilateral (x1,x2,x3,x4) 3 ; 4 ; @categories grid manipulation 5 ; 6 ; @examples 9 7 ; 10 8 ; res = inquad(x, y, x1, y1, x2, y2, x3, y3, x4, y4) 11 9 ; 12 ; INPUTS: 13 ; 14 ; x,y: the coordinates of the point we want to know where it 10 ; @param x y {in}{required} the coordinates of the point we want to know where it 15 11 ; is. Must be a scalar if /onsphere activated else can be scalar 16 12 ; or array. 17 13 ; 18 ; x1, y1, x2, y2, x3, y3, x4, y4:the coordinates of the14 ; @param x1 y1 x2 y2 x3 y3 x4 y4 {in}{required} the coordinates of the 19 15 ; quadrilateral given in the CLOCKWISE order. Scalar or array. 20 16 ; 21 ; KEYWORD PARAMETERS: 22 ; 23 ; /DOUBLE: use double precision to perform the computation 24 ; 25 ; /ONSPHERE: to specify that the quadilateral are on a sphere and 17 ; 18 ; @keyword /DOUBLE use double precision to perform the computation 19 ; 20 ; @keyword /ONSPHERE to specify that the quadilateral are on a sphere and 26 21 ; that teir coordinates are longitude-latitude coordinates. In this 27 22 ; case, est-west periodicity, poles singularity and other pbs … … 29 24 ; automatically. 30 25 ; 31 ; ZOOMRADIUS:the zoom (circle centred on the (x,y) with a radius of26 ; @keyword ZOOMRADIUS :the zoom (circle centred on the (x,y) with a radius of 32 27 ; zoomradius degree where we look for the the quadrilateral which; contains the (x,y) point) used for the satellite projection 33 28 ; when /onsphere is activated. Default is 4 and seems to be the … … 35 30 ; larger than 5 degrees. 36 31 ; 37 ; /NOPRINT: to suppress the print messages. 38 ; 39 ; OUTPUTS: 40 ; 41 ; res, a n element vector. Where n is the number of elements of 32 ; @keyword /NOPRINT to suppress the print messages. 33 ; 34 ; @returns 35 ; a n element vector. Where n is the number of elements of 42 36 ; x. res[i]=j means that the point number i is located in the 43 37 ; quadrilateral number j with (0 <= j <= n_elements(x0)-1) 44 38 ; 45 ; COMMON BLOCKS:none 46 ; 47 ; SIDE EFFECTS: 48 ; 49 ; RESTRICTIONS: I think degenerated quadrilateral (e.g. flat of 39 ; @restrictions I think degenerated quadrilateral (e.g. flat of 50 40 ; twisted) is not work. This has to be tested. 51 41 ; 52 ; EXAMPLE:42 ; @examples 53 43 ; 54 44 ; x = 1.*[1, 2, 6, 7, 3] … … 69 59 ; On a sphere see clickincell.pro... 70 60 ; 71 ; MODIFICATION HISTORY:72 ; Sebastien Masson (smasson @lodyc.jussieu.fr)61 ; @history 62 ; Sebastien Masson (smasson\@lodyc.jussieu.fr) 73 63 ; August 2003 74 64 ; Based on Convert_clic_ij.pro written by Gurvan Madec … … 192 182 ; the point is inside the quadilateral if test eq 1 193 183 ; with test equal to: 194 ; test = ((x-x1)*(y2-y1) GE (x2-x1)*(y-y1)) $ 184 ; test = ((x-x1)*(y2-y1) GE (x2-x1)*(y-y1)) $ 195 185 ; *((x-x2)*(y3-y2) GT (x3-x2)*(y-y2)) $ 196 186 ; *((x-x3)*(y4-y3) GT (x4-x3)*(y-y3)) $ -
trunk/SRC/Interpolation/inrecgrid.pro
r59 r101 1 1 ;+ 2 ; NAME: inrecgrid3 2 ; 4 ; PURPOSE:given - a list of points, (x,y) position3 ; @file_comments given - a list of points, (x,y) position 5 4 ; - the x and y limits of a rectangular grid 6 5 ; find in which cell is located each given point. 7 6 ; 8 ; CATEGORY:no DO loop, use the wonderfull value_locate function!7 ; @categories no DO loop, use the wonderfull value_locate function! 9 8 ; 10 ; CALLING SEQUENCE:res = inrecgrid(xin, yin, left, bottom) 9 ; @examples 10 ; res = inrecgrid(xin, yin, left, bottom) 11 11 ; 12 ; INPUTS: 13 ; 14 ; x1d: a 1d array, the x position on the points 15 ; y1d: a 1d array, the y position on the points 16 ; left: a 1d, monotonically increasing array, the position of the 12 ; @param x1d {in}{required} a 1d array, the x position on the points 13 ; @param y1d {in}{required} a 1d array, the y position on the points 14 ; left {in}{required} a 1d, monotonically increasing array, the position of the 17 15 ; "left" border of each cell. 18 ; bottom:a 1d, monotonically increasing array, the position of the16 ; @param bottom {in}{required} a 1d, monotonically increasing array, the position of the 19 17 ; "bottom" border of each cell. 20 18 ; 21 ; OPTIONAL INPUTS:22 19 ; 23 ; KEYWORD PARAMETERS:; 24 ; 25 ; /output2d: to get the output as a 2d array (2,n_elements(x1d)), 20 ; @keyword /output2d to get the output as a 2d array (2,n_elements(x1d)), 26 21 ; with res[0,*] the x index accoring to the 1d array defined by 27 22 ; left and res[1,*] the y index accoring to the 1d array defined by 28 23 ; bottom. 29 24 ; 30 ; checkout=[rbgrid,ubgrid] specify the right and upper bondaries of25 ; @keyword checkout=[rbgrid,ubgrid] specify the right and upper bondaries of 31 26 ; the grid and check if some points are out. 32 27 ; 33 ; OUTPUTS:the index on the cell accoring to the 2d array defined by28 ; @returns the index on the cell accoring to the 2d array defined by 34 29 ; left and bottom. 35 30 ; 36 ; OPTIONAL OUTPUTS: 37 ; 38 ; COMMON BLOCKS: no 39 ; 40 ; SIDE EFFECTS: 41 ; 42 ; RESTRICTIONS: 43 ; 44 ; PROCEDURE: 45 ; 46 ; EXAMPLE: 31 ; @examples 47 32 ; 48 33 ; IDL> a=indgen(5) … … 57 42 ; 2.00000 1.00000 58 43 ; 59 ; MODIFICATION HISTORY:60 ; S. Masson (smasson @lodyc.jussieu.fr)44 ; @history 45 ; S. Masson (smasson\@lodyc.jussieu.fr) 61 46 ; July 3rd, 2002 62 47 ; October 3rd, 2003: use value_locate -
trunk/SRC/Interpolation/ll_narcs_distances.pro
r59 r101 1 1 ;+ 2 ; NAME:3 ; LL_NARCS_DISTANCES4 2 ; 5 ; PURPOSE:6 ; 7 ; 8 ; 3 ; @file_comments 4 ; This function returns the longitude and latitude [lon, lat] of 5 ;a point a given arc distance (-pi <= Arc_Dist <= pi), and azimuth (Az), 6 ;from a specified location Lon0, lat0. 9 7 ; Same as LL_ARC_DISTANCE but for n points without do loop. 10 8 ; 11 ; CATEGORY: 12 ; Mapping, geography. 9 ; @categories Mapping, geography 13 10 ; 14 ; CALLING SEQUENCE:15 ; 11 ; @examples 12 ;Result = LL_NARCS_DISTANCES(Lon, lat0, Arc_Dist, Az) 16 13 ; 17 ; INPUTS: 18 ; Lon0: An array containing the longitude of the starting point. 14 ; @param Lon0 {in}{required} An array containing the longitude of the starting point. 19 15 ; Values are assumed to be in radians unless the keyword 20 16 ; DEGREES is set. 21 ; Lat0:An array containing the latitude of the starting point.17 ; @param Lat0 {in}{required} An array containing the latitude of the starting point. 22 18 ; Values are assumed to be in radians unless the keyword 23 19 ; DEGREES is set. 24 ; Arc_Dist:The arc distance from Lon_lat0. The value must be between25 ; 26 ; 27 ; 28 ; 29 ; Az:The azimuth from Lon_lat0. The value is assumed to be in30 ; 20 ; @param Arc_Dist {in}{required} The arc distance from Lon_lat0. The value must be between 21 ; -!PI and +!PI. To express distances in arc units, divide 22 ; by the radius of the globe expressed in the original units. 23 ; For example, if the radius of the earth is 6371 km, divide 24 ; the distance in km by 6371 to obtain the arc distance. 25 ; @param Az {in}{required} The azimuth from Lon_lat0. The value is assumed to be in 26 ; radians unless the keyword DEGREES is set. 31 27 ; 32 ; KEYWORD PARAMETERS: 33 ; DEGREES: Set this keyword to express all measurements and 34 ; results in degrees. 28 ; @keyword DEGREES Set this keyword to express all measurements and 29 ; results in degrees. 35 30 ; 36 ; OUTPUTS:37 ; This function returnsa (2, n) array containing the31 ; @returns 32 ; a (2, n) array containing the 38 33 ; longitude / latitude of the resultings points. Values are in radians 39 34 ; unless the keyword DEGREES is set. 40 35 ; 41 ; PROCEDURE:42 ; 43 ; 36 ; @file_comments 37 ;Formula from Map Projections - a working manual. USGS paper 38 ;1395. Equations (5-5) and (5-6). 44 39 ; 45 ; EXAMPLE:46 ; Lon_lat0 = [1.0, 2.0] ; Initial point specified in radians47 ; Arc_Dist = 2.0; Arc distance in radians48 ; Az = 1.0; Azimuth in radians49 ; 50 ; 51 ; 40 ; @examples 41 ;Lon_lat0 = [1.0, 2.0]; Initial point specified in radians 42 ;Arc_Dist = 2.0; Arc distance in radians 43 ;Az = 1.0; Azimuth in radians 44 ;Result = LL_ARC_DISTANCE(Lon_lat0, Arc_Dist, Az) 45 ;PRINT, Result 46 ; 2.91415 -0.622234 52 47 ; 53 ; 54 ; 55 ; 56 ; 57 ; 58 ; 59 ; 60 ; 61 ; 62 ; 48 ;IDL> lon0 = [-10, 20, 100] 49 ;IDL> lat0 = [0, -10, 45] 50 ;IDL> lon1 = [10, 60, 280] 51 ;IDL> lat1 = [0, 10, 45] 52 ;IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 53 ;IDL> earthradius = 6378206.4d0 54 ;IDL> res = ll_narcs_distances(lon0, lat0, dist/earthradius, azi, /degrees) 55 ;IDL> print, reform(res[0, *]) 56 ; 10.000000 60.000000 280.00000 57 ;IDL> print, reform(res[1, *]) 63 58 ; 1.1999280e-15 10.000000 45.000000 64 59 ; 65 ; MODIFICATION HISTORY:60 ; @history 66 61 ; Based on the IDL function ll_arc_distance.pro,v 1.11 2003/02/03 67 ; Sebastien Masson (smasson@lodyc.jussieu.fr)62 ; Sebastien Masson (smasson\@lodyc.jussieu.fr) 68 63 ; August 2005 69 64 ;- 70 65 71 ; Return the [lon, lat] of the point a given arc distance 72 ; (-pi <= arc_dist <= pi), 66 ;+ 67 ; @file_comments Return the [lon, lat] of the point a given arc distance 68 ;(-pi <= arc_dist <= pi), 73 69 ; and azimuth (az), from lon_lat0. 70 ;- 74 71 ; 75 72 FUNCTION LL_NARCS_DISTANCES, lon0, lat0, arc_dist, az, DEGREES = degs -
trunk/SRC/Interpolation/map_npoints.pro
r59 r101 1 1 ;+ 2 ; NAME:3 ; Map_nPoints4 2 ; 5 ; PURPOSE:6 ; 3 ; @file_comments 4 ;Return the distance in meter between all np0 points P0 and all 7 5 ; np1 points P1 on a sphere. If keyword /TWO_BY_TWO is given then 8 6 ; returns the distances between number n of P0 points and number … … 11 9 ; without do loop. 12 10 ; 13 ; CATEGORY: 14 ; Maps. 11 ; @categories Maps 15 12 ; 16 ; CALLING SEQUENCE:17 ; 13 ; @examples 14 ;Result = Map_nPoints(lon0, lat0, lon1, lat1) 18 15 ; 19 ; INPUTS: 20 ; Lon0, Lat0 = np0 elements vector. longitudes and latitudes of 21 ; np0 points P0 22 ; Lon1, Lat1 = np1 elements vector. longitude and latitude of 23 ; np1 points P1 16 ;@param Lon0 Lat0 {in}{required} np0 elements vector. longitudes and latitudes of np0 points P0 17 ;@param Lon1 Lat1 {in}{required} np1 elements vector. longitude and latitude of np1 points P1 24 18 ; 25 ; KEYWORD PARAMETERS: 26 ; 27 ; AZIMUTH: A named variable that will receive the azimuth of the great 19 ; @keyword AZIMUTH A named variable that will receive the azimuth of the great 28 20 ; circle connecting the two points, P0 to P1 29 ; /MIDDLE:to get the longitude/latitude of the middle point betwen P0 and P1.30 ; RADIANS = if set, inputs and angular outputs are in radians, otherwise31 ; 32 ; RADIUS:If given, return the distance between the two points33 ; 21 ; @keyword /MIDDLE to get the longitude/latitude of the middle point betwen P0 and P1. 22 ; @keyword RADIANS = if set, inputs and angular outputs are in radians, otherwise 23 ;degrees. 24 ; @keyword RADIUS If given, return the distance between the two points 25 ;calculated using the given radius. 34 26 ; Default value is the earth radius : 6378206.4d0 35 ; TWO_BY_TWO:If given,then Map_nPoints returns the distances between27 ; @keyword TWO_BY_TWO:If given,then Map_nPoints returns the distances between 36 28 ; number n of P0 points and number n of P1 points (in that case, 37 29 ; np0 and np1 must be equal). 38 30 ; 39 ; OUTPUTS:31 ; @returns 40 32 ; An (np0,np1) array giving the distance in meter between np0 41 33 ; points P0 and np1 points P1. Element (i,j) of the ouput is the … … 46 38 ; if /MIDDLE see this keyword. 47 39 ; 48 ; EXAMPLES: 49 ; IDL> print, $ 50 ; map_npoints([-105.15,1],[40.02,1],[-0.07,100,50],[51.30,20,0]) 51 ; 7551369.3 5600334.8 52 ; 12864354. 10921254. 53 ; 14919237. 5455558.8 54 ; 55 ; IDL> lon0 = [-10, 20, 100] 56 ; IDL> lat0 = [0, -10, 45] 57 ; IDL> lon1 = [10, 60, 280] 58 ; IDL> lat1 = [0, 10, 45] 59 ; IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi) 60 ; IDL> help, dist, azi 61 ; DIST DOUBLE = Array[3, 3] 62 ; AZI DOUBLE = Array[3, 3] 63 ; IDL> print, dist[4*lindgen(3)], azi[4*lindgen(3)] 64 ; 2226414.0 4957944.5 10018863. 65 ; 90.000000 64.494450 4.9615627e-15 66 ; IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 67 ; IDL> help, dist, azi 68 ; DIST DOUBLE = Array[3] 69 ; AZI DOUBLE = Array[3] 70 ; IDL> print, dist, azi 71 ; 2226414.0 4957944.5 10018863. 72 ; 90.000000 64.494450 4.9615627e-15 73 ; IDL> print, map_2points(lon0[0], lat0[0], lon1[0], lat1[0]) 74 ; 20.000000 90.000000 75 ; IDL> print, map_npoints(lon0[0], lat0[0], lon1[0], lat1[0], azi=azi)/6378206.4d0 / !dtor, azi 76 ; 20.000000 77 ; 90.000000 40 ; @examples 41 ;IDL> print, $ 42 ;map_npoints([-105.15,1],[40.02,1],[-0.07,100,50],[51.30,20,0]) 43 ; 7551369.3 5600334.8 44 ; 12864354. 10921254. 45 ; 14919237. 5455558.8 78 46 ; 79 ; IDL> lon0 = [-10, 20, 100] 80 ; IDL> lat0 = [0, -10, 45] 81 ; IDL> lon1 = [10, 60, 280] 82 ; IDL> lat1 = [0, 10, 45] 83 ; IDL> mid = map_npoints(lon0, lat0, lon1, lat1, /middle, /two_by_two) 84 ; IDL> print, reform(mid[0,*]), reform(mid[1,*]) 85 ; 0.0000000 40.000000 190.00000 86 ; 0.0000000 -1.5902773e-15 90.000000 87 ; IDL> print, (map_2points(lon0[0], lat0[0], lon1[0], lat1[0], npath = 3))[*, 1] 88 ; 0.0000000 0.0000000 89 ; IDL> print, (map_2points(lon0[1], lat0[1], lon1[1], lat1[1], npath = 3))[*, 1] 90 ; 40.000000 -1.5902773e-15 91 ; IDL> print, (map_2points(lon0[2], lat0[2], lon1[2], lat1[2], npath = 3))[*, 1] 92 ; 190.00000 90.000000 93 ; 94 ; MODIFICATION HISTORY: 47 ;IDL> lon0 = [-10, 20, 100] 48 ;IDL> lat0 = [0, -10, 45] 49 ;IDL> lon1 = [10, 60, 280] 50 ;IDL> lat1 = [0, 10, 45] 51 ;IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi) 52 ;IDL> help, dist, azi 53 ;DIST DOUBLE = Array[3, 3] 54 ;AZI DOUBLE = Array[3, 3] 55 ;IDL> print, dist[4*lindgen(3)], azi[4*lindgen(3)] 56 ; 2226414.0 4957944.5 10018863. 57 ; 90.000000 64.494450 4.9615627e-15 58 ;IDL> dist = map_npoints(lon0, lat0, lon1, lat1, azimuth = azi, /two_by_two) 59 ;IDL> help, dist, azi 60 ;DIST DOUBLE = Array[3] 61 ;AZI DOUBLE = Array[3] 62 ;IDL> print, dist, azi 63 ; 2226414.0 4957944.5 10018863. 64 ; 90.000000 64.494450 4.9615627e-15 65 ;IDL> print, map_2points(lon0[0], lat0[0], lon1[0], lat1[0]) 66 ; 20.000000 90.000000 67 ;IDL> print, map_npoints(lon0[0], lat0[0], lon1[0], lat1[0], azi=azi)/6378206.4d0 / !dtor, azi 68 ; 20.000000 69 ; 90.000000 70 ; 71 ;IDL> lon0 = [-10, 20, 100] 72 ;IDL> lat0 = [0, -10, 45] 73 ;IDL> lon1 = [10, 60, 280] 74 ;IDL> lat1 = [0, 10, 45] 75 ;IDL> mid = map_npoints(lon0, lat0, lon1, lat1, /middle, /two_by_two) 76 ;IDL> print, reform(mid[0,*]), reform(mid[1,*]) 77 ; 0.0000000 40.000000 190.00000 78 ; 0.0000000 -1.5902773e-15 90.000000 79 ;IDL> print, (map_2points(lon0[0], lat0[0], lon1[0], lat1[0], npath = 3))[*, 1] 80 ; 0.0000000 0.0000000 81 ;IDL> print, (map_2points(lon0[1], lat0[1], lon1[1], lat1[1], npath = 3))[*, 1] 82 ; 40.000000 -1.5902773e-15 83 ;IDL> print, (map_2points(lon0[2], lat0[2], lon1[2], lat1[2], npath = 3))[*, 1] 84 ; 190.00000 90.000000 85 ; 86 ; @history 95 87 ; Based on the IDL function map_2points.pro,v 1.6 2001/01/15 96 ; Sebastien Masson (smasson@lodyc.jussieu.fr)88 ; Sebastien Masson (smasson\@lodyc.jussieu.fr) 97 89 ; October 2003 98 90 ;- -
trunk/SRC/Interpolation/neighbor.pro
r74 r101 1 1 ;+ 2 ; NAME:3 ; neighbor4 2 ; 5 ; PURPOSE:6 ; 7 ; 3 ; @file_comments 4 ;find the closetest point of (P0) within a list of np1 points 5 ;P1 Which can be on a sphere 8 6 ; 9 ; CATEGORY: 10 ; Maps. 7 ; @categories Maps 11 8 ; 12 ; CALLING SEQUENCE:13 ; 9 ; @examples 10 ; IDL> Result = neighbor(lon0, lat0, lon1, lat1) 14 11 ; 15 ; INPUTS: 16 ; Lon0, Lat0 = scalar. longitudes and latitudes of point P0. 17 ; Lon1, Lat1 = np1 elements vector. longitude and latitude of 18 ; np1 points P1 12 ;@param p0lon {in}{required} scalar. longitudes of point P0. 13 ;@param p0lat {in}{required} scalar. latitudes of point P0. 19 14 ; 20 ; KEYWORD PARAMETERS: 21 ; RADIANS = if set, inputs and angular outputs are in radians, otherwise 22 ; degrees. 23 ; DISTANCE = dis, to get back the distances between P0 and the np1 15 ; @keyword RADIANS if set, inputs and angular outputs are in radians, otherwise 16 ;degrees. 17 ; @keyword DISTANCE dis, to get back the distances between P0 and the np1 24 18 ; points P1 in the variable dis. 25 ; /SPHERE to activate if points are located on a sphere.19 ; @keyword /SPHERE to activate if points are located on a sphere. 26 20 ; 27 ; OUTPUTS:21 ; @returns 28 22 ; index giving the P1[index] point that is the closetest point 29 23 ; of (P0) 30 24 ; 31 ; EXAMPLES:25 ; @examples 32 26 ; IDL> print, neighbor(-105.15,40.02,[-0.07,100,50],[51.30,20,0], $ 33 27 ; distance=dis) … … 36 30 ; 105.684 206.125 160.228 37 31 ; 38 ; MODIFICATION HISTORY:39 ; Sebastien Masson (smasson@lodyc.jussieu.fr)32 ; @history 33 ; Sebastien Masson (smasson\@lodyc.jussieu.fr) 40 34 ; October 2003 41 35 ;- -
trunk/SRC/Interpolation/quadrilateral2square.pro
r59 r101 1 1 ;+ 2 ; NAME:quadrilateral2square3 2 ; 4 ; PURPOSE:warm (or map) an arbitrary quadrilateral onto a unit square3 ; @file_comments warm (or map) an arbitrary quadrilateral onto a unit square 5 4 ; according to the 4-point correspondences: 6 5 ; (x0,y0) -> (0,0) … … 13 12 ; mappings. see ref. bellow. 14 13 ; 15 ; CATEGORY:image/grid manipulation14 ; @categories image, grid manipulation 16 15 ; 17 ; CALLING SEQUENCE:16 ; @examples 18 17 ; 19 18 ; res = square2quadrilateral(x0,y0,x1,y1,x2,y2,x3,y3,xin,yin) 20 19 ; 21 ; INPUTS: 22 ; 23 ; x0,y0,x1,y1,x2,y2,x3,y3 the coordinates of the quadrilateral 20 ; @param x0in {in}{required} the coordinates of the quadrilateral 21 ; @param y0in {in}{required} the coordinates of the quadrilateral 22 ; @param x1in {in}{required} the coordinates of the quadrilateral 23 ; @param y1in {in}{required} the coordinates of the quadrilateral 24 ; @param x2in {in}{required} the coordinates of the quadrilateral 25 ; @param y2in {in}{required} the coordinates of the quadrilateral 26 ; @param x3in {in}{required} the coordinates of the quadrilateral 27 ; @param y3in {in}{required} the coordinates of the quadrilateral 24 28 ; (see above for correspondance with the unit square). Can be 25 29 ; scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 26 30 ; given in the anticlockwise order. 27 31 ; 28 ; xin,yin:the coordinates of the point(s) for which we want to do the 32 ; @param xxin {in}{required} the coordinates of the point(s) for which we want to do the 33 ; mapping. Can be scalar or array. 34 ; @param yyin {in}{required} the coordinates of the point(s) for which we want to do the 29 35 ; mapping. Can be scalar or array. 30 36 ; 31 ; KEYWORD PARAMETERS: 32 ; 33 ; /DOUBLE: use double precision to perform the computation 34 ; 35 ; OUTPUTS: 37 ; @returns 36 38 ; 37 39 ; (2,n) array: the new coodinates (xout, yout) of the (xin,yin) … … 41 43 ; elements of xin. 42 44 ; 43 ; COMMON BLOCKS:none 44 ; 45 ; SIDE EFFECTS: 46 ; 47 ; RESTRICTIONS: I think degenerated quadrilateral (e.g. flat of 45 ; @restrictions I think degenerated quadrilateral (e.g. flat of 48 46 ; twisted) is not work. This has to be tested. 49 47 ; 50 ; EXAMPLE:48 ; @examples 51 49 ; 52 50 ; IDL> splot,[0,5],[0,3],/nodata,xstyle=1,ystyle=1 … … 60 58 ; IDL> tracegrille, reform(inorg[0,*],11,11), reform(inorg[1,*],11,11),color=indgen(12)*20 61 59 ; 62 ; MODIFICATION HISTORY:63 ; Sebastien Masson (smasson @lodyc.jussieu.fr)60 ; @history 61 ; Sebastien Masson (smasson\@lodyc.jussieu.fr) 64 62 ; August 2003 65 63 ; Based on "Digital Image Warping" by G. Wolberg -
trunk/SRC/Interpolation/spl_fstdrv.pro
r69 r101 3 3 ;------------------------------------------------------------ 4 4 ;+ 5 ; NAME:spl_fstdrv6 5 ; 7 ; PURPOSE:SPL_FSTDRV returns the values of the first derivative of6 ; @file_comments SPL_FSTDRV returns the values of the first derivative of 8 7 ; the interpolating function at the points X2i. it is a double 9 8 ; precision array. … … 15 14 ; in a way that interpolated value are also in ascending order 16 15 ; 17 ; CATEGORY:16 ; @examples y2 = spl_fstdrv(x, y, yscd, x2) 18 17 ; 19 ; CALLING SEQUENCE: y2 = spl_fstdrv(x, y, yscd, x2) 20 ; 21 ; INPUTS: 22 ; 23 ; x: An n-element (at least 2) input vector that specifies the 18 ; @param x {in}{required} An n-element (at least 2) input vector that specifies the 24 19 ; tabulate points in ascending order. 25 20 ; 26 ; y:f(x) = y. An n-element input vector that specifies the values21 ; @param y {in}{required} f(x) = y. An n-element input vector that specifies the values 27 22 ; of the tabulated function F(Xi) corresponding to Xi. 28 23 ; 29 ; yscd:The output from SPL_INIT for the specified X and Y.24 ; @param yscd {in}{required} The output from SPL_INIT for the specified X and Y. 30 25 ; 31 ; x2:The input values for which the first derivative values are26 ; @param x2 {in}{required} The input values for which the first derivative values are 32 27 ; desired. X can be scalar or an array of values. 33 28 34 ; KEYWORD PARAMETERS: none 35 ; 36 ; OUTPUTS: 29 ; @returns 37 30 ; 38 31 ; y2: f'(x2) = y2. 39 32 ; 40 ; COMMON BLOCKS: none41 33 ; 42 ; SIDE EFFECTS: ? 43 ; 44 ; RESTRICTIONS: ? 45 ; 46 ; EXAMPLE: 47 ; 48 ; MODIFICATION HISTORY: 49 ; Sebastien Masson (smasson@lodyc.jussieu.fr): May 2005 34 ; @history 35 ; Sebastien Masson (smasson\@lodyc.jussieu.fr): May 2005 50 36 ;- 51 37 ;------------------------------------------------------------ -
trunk/SRC/Interpolation/spl_incr.pro
r69 r101 3 3 ;------------------------------------------------------------ 4 4 ;+ 5 ; NAME:spl_incr 6 ; 7 ; PURPOSE: 5 ; 6 ; @file_comments 8 7 ; 9 8 ; Given the arrays X and Y, which tabulate a function (with the X[i] … … 13 12 ; in a way that interpolated values are also monotonically increasing. 14 13 ; 15 ; CATEGORY: 16 ; 17 ; CALLING SEQUENCE: y2 = spl_incr(x, y, x2) 18 ; 19 ; INPUTS: 20 ; 21 ; x: An n-element (at least 2) input vector that specifies the 14 ; @examples y2 = spl_incr(x, y, x2) 15 ; 16 ; @param x1 {in}{required} An n-element (at least 2) input vector that specifies the 22 17 ; tabulate points in a strict ascending order. 23 18 ; 24 ; y:f(x) = y. An n-element input vector that specifies the values19 ; @param y1 {in}{required} f(x) = y. An n-element input vector that specifies the values 25 20 ; of the tabulated function F(Xi) corresponding to Xi. As f is 26 21 ; supposed to be monotonically increasing, y values must be 27 22 ; monotonically increasing. y can have equal consecutive values. 28 23 ; 29 ; x2:The input values for which the interpolated values are24 ; @param x2 {in}{required} The input values for which the interpolated values are 30 25 ; desired. Its values must be strictly monotonically increasing. 31 26 ; 32 ; KEYWORD PARAMETERS: 33 ; 34 ; YP0: The first derivative of the interpolating function at the 35 ; point X0. If YP0 is omitted, the second derivative at the 36 ; boundary is set to zero, resulting in a "natural spline." 37 ; 38 ; YPN_1: The first derivative of the interpolating function at the 39 ; point Xn-1. If YPN_1 is omitted, the second derivative at the 40 ; boundary is set to zero, resulting in a "natural spline." 41 ; 42 ; OUTPUTS: 27 ; 28 ; 29 ; 30 ; @returns 43 31 ; 44 32 ; y2: f(x2) = y2. Double precision array 45 33 ; 46 ; COMMON BLOCKS: none 47 ; 48 ; SIDE EFFECTS: ? 49 ; 50 ; RESTRICTIONS: 34 ; @restrictions 51 35 ; It might be possible that y2[i+1]-y2[i] has very small negative 52 36 ; values (amplitude smaller than 1.e-6)... 53 37 ; 54 ; EXAMPLE:38 ; @examples 55 39 ; 56 40 ; n = 100L … … 73 57 ; oplot,[0, n_elements(c)], [0, 0], linestyle = 1 74 58 ; 75 ; MODIFICATION HISTORY:76 ; Sebastien Masson (smasson @lodyc.jussieu.fr): May-Dec 200559 ; @history 60 ; Sebastien Masson (smasson\@lodyc.jussieu.fr): May-Dec 2005 77 61 ;- 78 62 ;------------------------------------------------------------ … … 112 96 END 113 97 98 ;+ 99 ; @keyword YP0 The first derivative of the interpolating function at the 100 ; point X0. If YP0 is omitted, the second derivative at the 101 ; boundary is set to zero, resulting in a "natural spline." 102 ; @keyword YPN_1 The first derivative of the interpolating function at the 103 ; point Xn-1. If YPN_1 is omitted, the second derivative at the 104 ; boundary is set to zero, resulting in a "natural spline." 105 ;- 114 106 FUNCTION spl_incr, x, y, x2, YP0 = yp0, YPN_1 = ypn_1 115 107 ; -
trunk/SRC/Interpolation/spl_keep_mean.pro
r69 r101 3 3 ;------------------------------------------------------------ 4 4 ;+ 5 ; NAME:spl_keep_mean 6 ; 7 ; PURPOSE: 5 ; @file_comments 8 6 ; 9 7 ; Given the arrays X and Y, which tabulate a function (with the X[i] … … 16 14 ; data equa to the original values) 17 15 ; 18 ; CATEGORY:16 ; @examples y2 = spl_keep_mean(x, y, x2) 19 17 ; 20 ; CALLING SEQUENCE: y2 = spl_keep_mean(x, y, x2) 21 ; 22 ; INPUTS: 23 ; 24 ; x: An n-element (at least 2) input vector that specifies the 18 ; @param x {in}{required} An n-element (at least 2) input vector that specifies the 25 19 ; tabulate points in a strict ascending order. 26 20 ; 27 ; y:an array with one element less than x. y[i] represents the21 ; @param yin {in}{required} an array with one element less than x. y[i] represents the 28 22 ; mean value between x[i] and x[i+1]. if /GE0 is activated, y must 29 23 ; have positive values. 30 24 ; 31 ; x2:The input values for which the interpolated values are25 ; @param x2 {in}{required} The input values for which the interpolated values are 32 26 ; desired. Its values must be strictly monotonically increasing. 33 27 ; 34 ; KEYWORD PARAMETERS:35 28 ; 36 ; /GE0:to force that y2 is always GE than 0. In that case, y must29 ; @keyword /GE0 to force that y2 is always GE than 0. In that case, y must 37 30 ; also be GE than 0. 38 31 ; 39 ; YP0:The first derivative of the interpolating function at the32 ; @keyword YP0 The first derivative of the interpolating function at the 40 33 ; point X0. If YP0 is omitted, the second derivative at the 41 34 ; boundary is set to zero, resulting in a "natural spline." 42 35 ; 43 ; YPN_1:The first derivative of the interpolating function at the36 ; @keyword YPN_1 The first derivative of the interpolating function at the 44 37 ; point Xn-1. If YPN_1 is omitted, the second derivative at the 45 38 ; boundary is set to zero, resulting in a "natural spline." 46 39 ; 47 ; OUTPUTS:40 ; @returns 48 41 ; 49 42 ; y2: the meean value between two consecutive values of x2. This 50 43 ; array has one element less than y2. y2 has double precision. 51 44 ; 52 ; COMMON BLOCKS: none 53 ; 54 ; SIDE EFFECTS: ? 55 ; 56 ; RESTRICTIONS: 45 ; @restrictions 57 46 ; It might be possible that y2 has very small negative values 58 47 ; (amplitude smaller than 1.e-6)... 59 48 ; 60 49 ; 61 ; EXAMPLE:50 ; @examples 62 51 ; 63 52 ; 12 monthly values of precipitations into daily values: … … 81 70 ; print, total(y2*(x2[1:n2-1]-x2[0:n2-2])) 82 71 ; 83 ; MODIFICATION HISTORY:84 ; Sebastien Masson (smasson @lodyc.jussieu.fr): May 200572 ; @history 73 ; Sebastien Masson (smasson\@lodyc.jussieu.fr): May 2005 85 74 ;- 86 75 ;------------------------------------------------------------ -
trunk/SRC/Interpolation/square2quadrilateral.pro
r59 r101 1 1 ;+ 2 ; NAME:square2quadrilateral 3 ; 4 ; PURPOSE:warm (or map) a unit square onto an arbitrary quadrilateral 2 ; 3 ; @file_comments warm (or map) a unit square onto an arbitrary quadrilateral 5 4 ; according to the 4-point correspondences: 6 5 ; (0,0) -> (x0,y0) … … 12 11 ; mappings. see ref. bellow. 13 12 ; 14 ; CATEGORY:image/grid manipulation15 ; 16 ; CALLING SEQUENCE:13 ; @categories image, grid manipulation 14 ; 15 ; @examples 17 16 ; 18 17 ; res = square2quadrilateral(x0,y0,x1,y1,x2,y2,x3,y3[,xin,yin]) 19 18 ; 20 ; INPUTS: 21 ; 22 ; x0,y0,x1,y1,x2,y2,x3,y3 the coordinates of the quadrilateral 23 ; (see above for correspondance with the unit square). Can be 24 ; scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 25 ; given in the anticlockwise order. 26 ; 27 ; xin,yin:the coordinates of the point(s) for which we want to do the 19 FUNCTION square2quadrilateral, x0in, y0in, x1in, y1in, x2in, y2in, x3in, y3in, xxin, yyin 20 ; @param x0in {in}{required} the coordinates of the quadrilateral 21 ; (see above for correspondance with the unit square). Can be 22 ; scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 23 ; given in the anticlockwise order. 24 ; @param y0in {in}{required} the coordinates of the quadrilateral 25 ; (see above for correspondance with the unit square). Can be 26 ; scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 27 ; given in the anticlockwise order. 28 ; @param x1in {in}{required} the coordinates of the quadrilateral 29 ; (see above for correspondance with the unit square). Can be 30 ; scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 31 ; given in the anticlockwise order. 32 ; @param y1in {in}{required} the coordinates of the quadrilateral 33 ; (see above for correspondance with the unit square). Can be 34 ; scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 35 ; given in the anticlockwise order. 36 ; @param x2in {in}{required} the coordinates of the quadrilateral 37 ; (see above for correspondance with the unit square). Can be 38 ; scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 39 ; given in the anticlockwise order. 40 ; @param y2in {in}{required} the coordinates of the quadrilateral 41 ; (see above for correspondance with the unit square). Can be 42 ; scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 43 ; given in the anticlockwise order. 44 ; @param x3in {in}{required} the coordinates of the quadrilateral 45 ; (see above for correspondance with the unit square). Can be 46 ; scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 47 ; given in the anticlockwise order. 48 ; @param y3in {in}{required} the coordinates of the quadrilateral 49 ; (see above for correspondance with the unit square). Can be 50 ; scalar or array. (x0,y0), (x1,y1), (x2,y2) and (x3,y3) are 51 ; given in the anticlockwise order. 52 ; 53 ; @param xxin {in}{required} the coordinates of the point(s) for which we want to do the 28 54 ; mapping. Can be scalar or array. 29 ; 30 ; KEYWORD PARAMETERS: 31 ; 32 ; /DOUBLE: use double precision to perform the computation 33 ; 34 ; OUTPUTS: 55 ; @param yyin {in}{required} the coordinates of the point(s) for which we want to do the 56 ; mapping. Can be scalar or array. 57 ; 58 ; @returns 35 59 ; 36 60 ; (2,n) array: the new coodinates (xout, yout) of the (xin,yin) … … 42 66 ; matrix A which is used for the inverse transformation. 43 67 ; 44 ; COMMON BLOCKS:none 45 ; 46 ; SIDE EFFECTS: 47 ; 48 ; RESTRICTIONS: I think degenerated quadrilateral (e.g. flat of 68 ; 69 ; @restrictions I think degenerated quadrilateral (e.g. flat of 49 70 ; twisted) is not work. This has to be tested. 50 71 ; 51 ; EXAMPLE:72 ; @examples 52 73 ; 53 74 ; IDL> splot,[0,5],[0,3],/nodata,xstyle=1,ystyle=1 … … 58 79 ; IDL> tracegrille, reform(out[0,*],11,11), reform(out[1,*],11,11),color=indgen(12)*20 59 80 ; 60 ; MODIFICATION HISTORY:61 ; Sebastien Masson (smasson @lodyc.jussieu.fr)81 ; @history 82 ; Sebastien Masson (smasson\@lodyc.jussieu.fr) 62 83 ; August 2003 63 84 ; Based on "Digital Image Warping" by G. Wolberg -
trunk/SRC/Interpolation/testinterp.pro
r59 r101 1 ;+ 2 ;- 1 3 PRO testinterp 2 4
Note: See TracChangeset
for help on using the changeset viewer.