- Timestamp:
- 06/12/06 14:12:53 (18 years ago)
- Location:
- trunk/SRC
- Files:
-
- 36 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SRC/Documentation/idldoc_html_output/Grid/computegrid.html
r89 r103 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="_computegrid"> 103 104 <h2><a class="top" href="#container">top</a>computegrid </h2> 105 106 <p class="header"> 107 computegrid<span class="result">, <a href="#_computegrid_param_startx">startx</a>, <a href="#_computegrid_param_starty">starty</a>, <a href="#_computegrid_param_stepxin">stepxin</a>, <a href="#_computegrid_param_stepyin">stepyin</a>, <a href="#_computegrid_param_nxin">nxin</a>, <a href="#_computegrid_param_nyin">nyin</a></span>, <a href="#_computegrid_keyword_XAXIS">XAXIS</a>=<span class="result">XAXIS</span>, <a href="#_computegrid_keyword_YAXIS">YAXIS</a>=<span class="result">YAXIS</span>, <a href="#_computegrid_keyword_ZAXIS">ZAXIS</a>=<span class="result">ZAXIS</span>, <a href="#_computegrid_keyword_MASK">MASK</a>=<span class="result">MASK</span>, <a href="#_computegrid_keyword_GLAMBOUNDARY">GLAMBOUNDARY</a>=<span class="result">GLAMBOUNDARY</span>, <a href="#_computegrid_keyword_XMINMESH">XMINMESH</a>=<span class="result">XMINMESH</span>, <a href="#_computegrid_keyword_XMAXMESH">XMAXMESH</a>=<span class="result">XMAXMESH</span>, <a href="#_computegrid_keyword_YMINMESH">YMINMESH</a>=<span class="result">YMINMESH</span>, <a href="#_computegrid_keyword_YMAXMESH">YMAXMESH</a>=<span class="result">YMAXMESH</span>, <a href="#_computegrid_keyword_ZMINMESH">ZMINMESH</a>=<span class="result">ZMINMESH</span>, <a href="#_computegrid_keyword_ZMAXMESH">ZMAXMESH</a>=<span class="result">ZMAXMESH</span>, <a href="#_computegrid_keyword_ONEARTH">ONEARTH</a>=<span class="result">ONEARTH</span>, <a href="#_computegrid_keyword_PERIODIC">PERIODIC</a>=<span class="result">PERIODIC</span>, <a href="#_computegrid_keyword_PLAIN">PLAIN</a>=<span class="result">PLAIN</span>, <a href="#_computegrid_keyword_SHIFT">SHIFT</a>=<span class="result">SHIFT</span>, <a href="#_computegrid_keyword_STRIDE">STRIDE</a>=<span class="result">STRIDE</span>, <a href="#_computegrid_keyword_FULLCGRID">FULLCGRID</a>=<span class="result">FULLCGRID</span>, <a href="#_computegrid_keyword_XYINDEX">XYINDEX</a>=<span class="result">XYINDEX</span>, <a href="#_computegrid_keyword_FBASE2TBASE">FBASE2TBASE</a>=<span class="result">FBASE2TBASE</span>, <a href="#_computegrid_keyword_STRCALLING">STRCALLING</a>=<span class="result">STRCALLING</span>, <a href="#_computegrid_keyword__extra">_extra</a>=<span class="result">_extra</span></p> 108 109 <div class="comments"> 110 NAME:computegrid 111 112 PURPOSE:compute the grid parameters from cm_4mesh common: 89 <div id="file_comments"> compute the grid parameters from cm_4mesh common: 90 91 computegrid, startx, starty, stepx, stepy, nx, ny 92 computegrid, startx, starty, stepx, stepy 93 computegrid, xaxis = xaxis, yaxis = yaxis 94 or a suitable mix... 113 95 114 96 horizontal parameters: … … 128 110 key_shift, key_periodic, key_zreverse, key_yreverse, 129 111 key_stride, key_onearth, key_partialstep 130 131 CATEGORY:grid 132 133 CALLING SEQUENCE: 134 135 computegrid, startx, starty, stepx, stepy, nx, ny 136 computegrid, startx, starty, stepx, stepy 137 computegrid, xaxis = xaxis, yaxis = yaxis 138 or a suitable mix... 139 140 INPUTS: 141 startx:scalar, x starting point 142 starty:scalar, y starting point 143 stepx:scalar or vector: x direction step, must be > 0 144 if vector nx is not used 145 stepy:scalar or vector: y direction step, 112 </div> 113 114 115 116 117 118 119 120 121 122 <div id="routine_details"> 123 124 125 <div class="routine_details" id="_computegrid"> 126 127 <h2><a class="top" href="#container">top</a>computegrid <span class="categories"> grid 128 </span></h2> 129 130 <p class="header"> 131 computegrid<span class="result">, <a href="#_computegrid_param_startx">startx</a>, <a href="#_computegrid_param_starty">starty</a>, <a href="#_computegrid_param_stepxin">stepxin</a>, <a href="#_computegrid_param_stepyin">stepyin</a>, <a href="#_computegrid_param_nxin">nxin</a>, <a href="#_computegrid_param_nyin">nyin</a></span>, <a href="#_computegrid_keyword_XAXIS">XAXIS</a>=<span class="result">XAXIS</span>, <a href="#_computegrid_keyword_YAXIS">YAXIS</a>=<span class="result">YAXIS</span>, <a href="#_computegrid_keyword_ZAXIS">ZAXIS</a>=<span class="result">ZAXIS</span>, <a href="#_computegrid_keyword_MASK">MASK</a>=<span class="result">MASK</span>, <a href="#_computegrid_keyword_GLAMBOUNDARY">GLAMBOUNDARY</a>=<span class="result">GLAMBOUNDARY</span>, <a href="#_computegrid_keyword_XMINMESH">XMINMESH</a>=<span class="result">XMINMESH</span>, <a href="#_computegrid_keyword_XMAXMESH">XMAXMESH</a>=<span class="result">XMAXMESH</span>, <a href="#_computegrid_keyword_YMINMESH">YMINMESH</a>=<span class="result">YMINMESH</span>, <a href="#_computegrid_keyword_YMAXMESH">YMAXMESH</a>=<span class="result">YMAXMESH</span>, <a href="#_computegrid_keyword_ZMINMESH">ZMINMESH</a>=<span class="result">ZMINMESH</span>, <a href="#_computegrid_keyword_ZMAXMESH">ZMAXMESH</a>=<span class="result">ZMAXMESH</span>, <a href="#_computegrid_keyword_ONEARTH">ONEARTH</a>=<span class="result">ONEARTH</span>, <a href="#_computegrid_keyword_PERIODIC">PERIODIC</a>=<span class="result">PERIODIC</span>, <a href="#_computegrid_keyword_PLAIN">PLAIN</a>=<span class="result">PLAIN</span>, <a href="#_computegrid_keyword_SHIFT">SHIFT</a>=<span class="result">SHIFT</span>, <a href="#_computegrid_keyword_STRIDE">STRIDE</a>=<span class="result">STRIDE</span>, <a href="#_computegrid_keyword_FULLCGRID">FULLCGRID</a>=<span class="result">FULLCGRID</span>, <a href="#_computegrid_keyword_XYINDEX">XYINDEX</a>=<span class="result">XYINDEX</span>, <a href="#_computegrid_keyword_FBASE2TBASE">FBASE2TBASE</a>=<span class="result">FBASE2TBASE</span>, <a href="#_computegrid_keyword_STRCALLING">STRCALLING</a>=<span class="result">STRCALLING</span>, <a href="#_computegrid_keyword__extra">_extra</a>=<span class="result">_extra</span></p> 132 133 <div class="comments"> 134 </div> 135 136 137 138 139 <h3>Parameters</h3> 140 141 142 <h4 id="_computegrid_param_startx">startx 143 <span class="attr">in</span> 144 145 146 <span class="attr">required</span> 147 148 149 150 151 </h4> 152 153 <div class="comments"> scalar, x starting point</div> 154 155 <h4 id="_computegrid_param_starty">starty 156 <span class="attr">in</span> 157 158 159 <span class="attr">required</span> 160 161 162 163 164 </h4> 165 166 <div class="comments"> scalar, y starting point</div> 167 168 <h4 id="_computegrid_param_stepxin">stepxin 169 <span class="attr">in</span> 170 171 172 <span class="attr">required</span> 173 174 175 176 177 </h4> 178 179 <div class="comments"> scalar or vector: x direction step, must be > 0 180 if vector nx is not used</div> 181 182 <h4 id="_computegrid_param_stepyin">stepyin 183 <span class="attr">in</span> 184 185 186 <span class="attr">required</span> 187 188 189 190 191 </h4> 192 193 <div class="comments"> scalar or vector: y direction step, 146 194 could be > 0 (south to north) or < 0 (north to south) 147 if vector ny is not used 148 nx:scalar, number of points in x direction 149 ny:scalar, number of points in y direction 150 151 KEYWORD PARAMETERS: 152 153 /FULLCGRID: activate to specify that you want to compute 154 all the paremeters of a C grid. Computation of glam[uv], 155 gphi[uv], e1[uvf], e2[uvf], [uv]maskred and fmaskred[xy] 156 will be add to the default computations 157 158 GLAMBOUNDARY: a 2 elements vector, [lon1,lon2], the longitute 195 if vector ny is not used</div> 196 197 <h4 id="_computegrid_param_nxin">nxin 198 <span class="attr">in</span> 199 200 201 <span class="attr">required</span> 202 203 204 205 206 </h4> 207 208 <div class="comments"> scalar, number of points in x direction </div> 209 210 <h4 id="_computegrid_param_nyin">nyin 211 <span class="attr">in</span> 212 213 214 <span class="attr">required</span> 215 216 217 218 219 </h4> 220 221 <div class="comments"> scalar, number of points in y direction 222 </div> 223 224 225 226 227 228 229 <h3>Keywords</h3> 230 231 <h4 id="_computegrid_keyword_XAXIS">XAXIS 232 233 234 235 236 237 238 239 240 </h4> 241 242 <div class="comments"> to specify longitude1 with a 1 or 2 dimension array, in 243 this case startx, stepx and nx are not used but could be 244 necessary if the y axis is not defined with yaxis. It must be 245 possible to sort the first line of xaxis in the increasing 246 order by shifting its elements. 247 </div> 248 249 <h4 id="_computegrid_keyword_YAXIS">YAXIS 250 251 252 253 254 255 256 257 258 </h4> 259 260 <div class="comments"> to specify latitudes with a 1 or 2 dimension array, in 261 this case starty, stepy and ny are not used but starty and 262 stepy could be necessary if the x axis is not defined with xaxis. 263 It must be sorted in the increasing or deceasing order 264 (along each column if 2d array). 265 </div> 266 267 <h4 id="_computegrid_keyword_ZAXIS">ZAXIS 268 269 270 271 272 273 274 275 276 </h4> 277 278 <div class="comments"> to specify the vertical axis with a 1 dimension 279 array. Must be sorted in the increasing or deceasing order 280 </div> 281 282 <h4 id="_computegrid_keyword_MASK">MASK 283 284 285 286 287 288 289 290 291 </h4> 292 293 <div class="comments"> to specify the mask with a 2 or 3 dimension array 294 </div> 295 296 <h4 id="_computegrid_keyword_GLAMBOUNDARY">GLAMBOUNDARY 297 298 299 300 301 302 303 304 305 </h4> 306 307 <div class="comments"> a 2 elements vector, [lon1,lon2], the longitute 159 308 boundaries that should be used to visualize the data. 160 309 we must have lon2 > lon1 and lon2 - lon1 le 360 … … 162 311 glamboundary by using the FIRST LINE of glamt but 163 312 key_shift will /= 0 only if key_periodic = 1 164 165 MASK: to specify the mask with a 2 or 3 dimension array 166 167 ONEARTH = 0 or 1: to force the manual definition of 168 key_onearth (to specify if the data are on earth -> use longitude 169 /latitude etc...). By default, key_onearth = 1. 170 note that ONEARTH = 0 forces PERIODIC = 0, SHIFT = 0, 171 and is cancelling GLAMBOUNDARY 172 173 PERIODIC = 0 or 1: to force the manual definition of 174 key_periodic. By default, key_periodic is automaticaly 175 computed by using the first line of glamt. 176 177 /PLAIN: force PERIODIC = 0, SHIFT = 0, STRIDE = [1, 1, 1] and 178 suppress the automatic redefinition of the domain in case of 179 x periodicity overlap, y periodicity overlap (ORCA type only) 180 and mask border to 0. 181 182 SHIFT = scalar to force the manual definition of key_shift. By 183 debault, key_shift is automaticaly computed according to 184 glamboundary (when defined) by using the FIRST LINE of glamt. if 185 key_periodic=0 then in any case key_shift = 0. 186 187 STRCALLING: a string containing the calling command used to 188 call computegrid (this is used by xxx.pro) 189 190 STRIDE = : a 3 elements vector to specify the stride in x, y, z 191 direction. Default definition is [1, 1, 1]. The resulting value 192 will be stored in the common (cm_4mesh) variable key_stride 193 194 XAXIS: to specify longitude1 with a 1 or 2 dimension array, in 195 this case startx, stepx and nx are not used but could be 196 necessary if the y axis is not defined with yaxis. It must be 197 possible to sort the first line of xaxis in the increasing 198 order by shifting its elements. 199 200 YAXIS: to specify latitudes with a 1 or 2 dimension array, in 201 this case starty, stepy and ny are not used but starty and 202 stepy could be necessary if the x axis is not defined with xaxis. 203 It must be sorted in the increasing or deceasing order 204 (along each column if 2d array). 205 206 /XYINDEX: activate to specify that the horizontal grid should 207 be simply defined by using the index of the points 208 (xaxis = findgen(nx) and yaxis = findgen(ny)) 209 using this keyword forces key_onearth=0 210 211 [XYZ]MINMESH: to define the common variables i[xyz]minmesh 313 </div> 314 315 <h4 id="_computegrid_keyword_XMINMESH">XMINMESH 316 317 318 319 320 321 322 323 324 </h4> 325 326 <div class="comments"> </div> 327 328 <h4 id="_computegrid_keyword_XMAXMESH">XMAXMESH 329 330 331 332 333 334 335 336 337 </h4> 338 339 <div class="comments"> </div> 340 341 <h4 id="_computegrid_keyword_YMINMESH">YMINMESH 342 343 344 345 346 347 348 349 350 </h4> 351 352 <div class="comments"> </div> 353 354 <h4 id="_computegrid_keyword_YMAXMESH">YMAXMESH 355 356 357 358 359 360 361 362 363 </h4> 364 365 <div class="comments"> </div> 366 367 <h4 id="_computegrid_keyword_ZMINMESH">ZMINMESH 368 369 370 371 372 373 374 375 376 </h4> 377 378 <div class="comments"> 379 to define the common variables i[xyz]minmesh 212 380 used to define the grid only in a zoomed part of the original 213 381 grid. Defaut values are 0L, max value is [XYZ]MAXMESH 214 215 [XYZ]MAXMESH: to define the common variables i[xyz]maxmesh 382 </div> 383 384 <h4 id="_computegrid_keyword_ZMAXMESH">ZMAXMESH 385 386 387 388 389 390 391 392 393 </h4> 394 395 <div class="comments"> 396 to define the common variables i[xyz]maxmesh 216 397 used to define the grid only in a zoomed part of the original 217 398 grid. Defaut values are jp[ijk]glo-1, max value is … … 219 400 i[xyz]maxmesh as jp[ijk]glo - 1 + [XYZ]MAXMESH instead of 220 401 [XYZ]MAXMESH 221 222 ZAXIS: to specify the vertical axis with a 1 dimension 223 array. Must be sorted in the increasing or deceasing order 224 225 OUTPUTS: 226 227 COMMON BLOCKS: cm_4mesh cm_4data cm_4cal 228 229 SIDE EFFECTS: if the grid has x/y periodicity orverlap and/or if 402 </div> 403 404 <h4 id="_computegrid_keyword_ONEARTH">ONEARTH 405 406 407 408 409 410 411 412 413 </h4> 414 415 <div class="comments"> = 0 or 1 to force the manual definition of 416 key_onearth (to specify if the data are on earth -> use longitude 417 /latitude etc...). By default, key_onearth = 1. 418 note that ONEARTH = 0 forces PERIODIC = 0, SHIFT = 0, 419 and is cancelling GLAMBOUNDARY 420 </div> 421 422 <h4 id="_computegrid_keyword_PERIODIC">PERIODIC 423 424 425 426 427 428 429 430 431 </h4> 432 433 <div class="comments"> = 0 or 1 to force the manual definition of 434 key_periodic. By default, key_periodic is automaticaly 435 computed by using the first line of glamt. 436 </div> 437 438 <h4 id="_computegrid_keyword_PLAIN">PLAIN 439 440 441 442 443 444 445 446 447 </h4> 448 449 <div class="comments"> force PERIODIC = 0, SHIFT = 0, STRIDE = [1, 1, 1] and 450 suppress the automatic redefinition of the domain in case of 451 x periodicity overlap, y periodicity overlap (ORCA type only) 452 and mask border to 0. 453 </div> 454 455 <h4 id="_computegrid_keyword_SHIFT">SHIFT 456 457 458 459 460 461 462 463 464 </h4> 465 466 <div class="comments"> = scalar to force the manual definition of key_shift. By 467 debault, key_shift is automaticaly computed according to 468 glamboundary (when defined) by using the FIRST LINE of glamt. if 469 key_periodic=0 then in any case key_shift = 0. 470 </div> 471 472 <h4 id="_computegrid_keyword_STRIDE">STRIDE 473 474 475 476 477 478 479 480 481 </h4> 482 483 <div class="comments"> a 3 elements vector to specify the stride in x, y, z 484 direction. Default definition is [1, 1, 1]. The resulting value 485 will be stored in the common (cm_4mesh) variable key_stride 486 </div> 487 488 <h4 id="_computegrid_keyword_FULLCGRID">FULLCGRID 489 490 491 492 493 494 495 496 497 </h4> 498 499 <div class="comments"> activate to specify that you want to compute 500 all the paremeters of a C grid. Computation of glam[uv], 501 gphi[uv], e1[uvf], e2[uvf], [uv]maskred and fmaskred[xy] 502 will be add to the default computations 503 </div> 504 505 <h4 id="_computegrid_keyword_XYINDEX">XYINDEX 506 507 508 509 510 511 512 513 514 </h4> 515 516 <div class="comments"> activate to specify that the horizontal grid should 517 be simply defined by using the index of the points 518 (xaxis = findgen(nx) and yaxis = findgen(ny)) 519 using this keyword forces key_onearth=0 520 </div> 521 522 <h4 id="_computegrid_keyword_FBASE2TBASE">FBASE2TBASE 523 524 525 526 527 528 529 530 531 </h4> 532 533 <div class="comments"></div> 534 535 <h4 id="_computegrid_keyword_STRCALLING">STRCALLING 536 537 538 539 540 541 542 543 544 </h4> 545 546 <div class="comments"> a string containing the calling command used to 547 call computegrid (this is used by xxx.pro) 548 </div> 549 550 <h4 id="_computegrid_keyword__extra">_extra 551 552 553 554 555 556 557 558 559 </h4> 560 561 <div class="comments"></div> 562 563 564 565 566 <h3>Version history</h3> 567 568 569 <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 570 2000-04-20 571 Sept 2004, several bug fixs to suit C grid type... 572 Aug 2005, rewritte almost everything...</div> 573 574 575 <h3>Known issues</h3> 576 577 578 579 <h4>Restrictions</h4><div class="value"> if the grid has x/y periodicity orverlap and/or if 230 580 the mask has 0 everywhere at the border (like a close sea) and 231 581 if (we did not activate /plain and xminmesh, xmaxmesh, yminmesh, … … 235 585 to use cell_fill = 1). 236 586 237 RESTRICTIONS:FUV points definition... 238 239 EXAMPLE: 240 </div> 241 242 243 244 245 <h3>Parameters</h3> 246 247 248 <h4 id="_computegrid_param_startx">startx 249 250 251 252 253 254 255 256 257 </h4> 258 259 <div class="comments"></div> 260 261 <h4 id="_computegrid_param_starty">starty 262 263 264 265 266 267 268 269 270 </h4> 271 272 <div class="comments"></div> 273 274 <h4 id="_computegrid_param_stepxin">stepxin 275 276 277 278 279 280 281 282 283 </h4> 284 285 <div class="comments"></div> 286 287 <h4 id="_computegrid_param_stepyin">stepyin 288 289 290 291 292 293 294 295 296 </h4> 297 298 <div class="comments"></div> 299 300 <h4 id="_computegrid_param_nxin">nxin 301 302 303 304 305 306 307 308 309 </h4> 310 311 <div class="comments"></div> 312 313 <h4 id="_computegrid_param_nyin">nyin 314 315 316 317 318 319 320 321 322 </h4> 323 324 <div class="comments"></div> 325 326 327 328 329 330 331 <h3>Keywords</h3> 332 333 <h4 id="_computegrid_keyword_XAXIS">XAXIS 334 335 336 337 338 339 340 341 342 </h4> 343 344 <div class="comments"></div> 345 346 <h4 id="_computegrid_keyword_YAXIS">YAXIS 347 348 349 350 351 352 353 354 355 </h4> 356 357 <div class="comments"></div> 358 359 <h4 id="_computegrid_keyword_ZAXIS">ZAXIS 360 361 362 363 364 365 366 367 368 </h4> 369 370 <div class="comments"></div> 371 372 <h4 id="_computegrid_keyword_MASK">MASK 373 374 375 376 377 378 379 380 381 </h4> 382 383 <div class="comments"></div> 384 385 <h4 id="_computegrid_keyword_GLAMBOUNDARY">GLAMBOUNDARY 386 387 388 389 390 391 392 393 394 </h4> 395 396 <div class="comments"></div> 397 398 <h4 id="_computegrid_keyword_XMINMESH">XMINMESH 399 400 401 402 403 404 405 406 407 </h4> 408 409 <div class="comments"></div> 410 411 <h4 id="_computegrid_keyword_XMAXMESH">XMAXMESH 412 413 414 415 416 417 418 419 420 </h4> 421 422 <div class="comments"></div> 423 424 <h4 id="_computegrid_keyword_YMINMESH">YMINMESH 425 426 427 428 429 430 431 432 433 </h4> 434 435 <div class="comments"></div> 436 437 <h4 id="_computegrid_keyword_YMAXMESH">YMAXMESH 438 439 440 441 442 443 444 445 446 </h4> 447 448 <div class="comments"></div> 449 450 <h4 id="_computegrid_keyword_ZMINMESH">ZMINMESH 451 452 453 454 455 456 457 458 459 </h4> 460 461 <div class="comments"></div> 462 463 <h4 id="_computegrid_keyword_ZMAXMESH">ZMAXMESH 464 465 466 467 468 469 470 471 472 </h4> 473 474 <div class="comments"></div> 475 476 <h4 id="_computegrid_keyword_ONEARTH">ONEARTH 477 478 479 480 481 482 483 484 485 </h4> 486 487 <div class="comments"></div> 488 489 <h4 id="_computegrid_keyword_PERIODIC">PERIODIC 490 491 492 493 494 495 496 497 498 </h4> 499 500 <div class="comments"></div> 501 502 <h4 id="_computegrid_keyword_PLAIN">PLAIN 503 504 505 506 507 508 509 510 511 </h4> 512 513 <div class="comments"></div> 514 515 <h4 id="_computegrid_keyword_SHIFT">SHIFT 516 517 518 519 520 521 522 523 524 </h4> 525 526 <div class="comments"></div> 527 528 <h4 id="_computegrid_keyword_STRIDE">STRIDE 529 530 531 532 533 534 535 536 537 </h4> 538 539 <div class="comments"></div> 540 541 <h4 id="_computegrid_keyword_FULLCGRID">FULLCGRID 542 543 544 545 546 547 548 549 550 </h4> 551 552 <div class="comments"></div> 553 554 <h4 id="_computegrid_keyword_XYINDEX">XYINDEX 555 556 557 558 559 560 561 562 563 </h4> 564 565 <div class="comments"></div> 566 567 <h4 id="_computegrid_keyword_FBASE2TBASE">FBASE2TBASE 568 569 570 571 572 573 574 575 576 </h4> 577 578 <div class="comments"></div> 579 580 <h4 id="_computegrid_keyword_STRCALLING">STRCALLING 581 582 583 584 585 586 587 588 589 </h4> 590 591 <div class="comments"></div> 592 593 <h4 id="_computegrid_keyword__extra">_extra 594 595 596 597 598 599 600 601 602 </h4> 603 604 <div class="comments"></div> 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 587 FUV points definition... 588 </div> 589 590 <h3>Other attributes</h3> 591 592 593 <h4>Uses routines</h4><div class="value"> cm_4mesh cm_4data cm_4cal 594 </div> 625 595 626 596 -
trunk/SRC/Documentation/idldoc_html_output/Grid/directory-overview.html
r89 r103 90 90 91 91 <dt><a href="computegrid.html?format=raw">computegrid.pro</a></dt> 92 <dd> </dd>92 <dd> compute the grid parameters from cm_4mesh common: computegrid, startx, starty, stepx, stepy, nx, ny computegrid, startx, starty, stepx, stepy computegrid, xaxis = xaxis, yaxis = yaxis or a suitable mix.</dd> 93 93 94 94 <dt><a href="micromeshmask.html?format=raw">micromeshmask.pro</a></dt> 95 <dd> </dd>95 <dd> reduce the size of the NetCDF meshmask created by OPA by using bit (and not byte) format for the masks and the foat format for the other fields.</dd> 96 96 97 97 <dt><a href="n128gaussian.html?format=raw">n128gaussian.pro</a></dt> 98 <dd> </dd>98 <dd> compute the latitudes of the n128 gaussian grid.</dd> 99 99 100 100 <dt><a href="n160gaussian.html?format=raw">n160gaussian.pro</a></dt> 101 <dd> </dd>101 <dd> compute the latitudes of the n160 gaussian grid.</dd> 102 102 103 103 <dt><a href="n256gaussian.html?format=raw">n256gaussian.pro</a></dt> 104 <dd> </dd>104 <dd> compute the latitudes of the n256 gaussian grid.</dd> 105 105 106 106 <dt><a href="n48gaussian.html?format=raw">n48gaussian.pro</a></dt> 107 <dd> </dd>107 <dd> compute the latitudes of the n48 gaussian grid.</dd> 108 108 109 109 <dt><a href="n80gaussian.html?format=raw">n80gaussian.pro</a></dt> 110 <dd> </dd>110 <dd> compute the latitudes of the n80 gaussian grid.</dd> 111 111 112 112 <dt><a href="ncdf_meshread.html?format=raw">ncdf_meshread.pro</a></dt> 113 <dd> </dd>113 <dd> read NetCDF meshmask file created by OPA </dd> 114 114 115 115 <dt><a href="restoreboxparam.html?format=raw">restoreboxparam.pro</a></dt> 116 <dd> </dd>116 <dd> restore all the zoom parameters (defined by calling domdef) perviously defined by saveboxparam </dd> 117 117 118 118 <dt><a href="saveboxparam.html?format=raw">saveboxparam.pro</a></dt> 119 <dd> </dd>119 <dd> save all the zoom parameters (defined by calling domdef) in a file (using save command) located in myuniquetmpdir (common variable defined by def_myuniquetmpdir) </dd> 120 120 121 121 <dt><a href="smallmeshmask.html?format=raw">smallmeshmask.pro</a></dt> 122 <dd> </dd>122 <dd> reduce the size of the NetCDF meshmask created by OPA by using byte format for the masks and the foat format for the other fields.</dd> 123 123 124 124 </dl> -
trunk/SRC/Documentation/idldoc_html_output/Grid/micromeshmask.html
r89 r103 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> reduce the size of the NetCDF meshmask created by OPA by 90 using bit (and not byte) format for the masks and the foat format 91 for the other fields. 92 </div> 90 93 91 94 … … 102 105 103 106 <dt><p><a href="#_ncdf_transfer">ncdf_transfer<span class="result">, inid, outid, inname, outname</span></a></p><dt> 104 <dd> NAME: micromeshmask.</dd>107 <dd> </dd> 105 108 106 109 <dt><p><a href="#_micromeshmask">micromeshmask<span class="result">, ncfilein, ncfileout</span>, IODIR=<span class="result">IODIR</span></a></p><dt> … … 116 119 <div class="routine_details" id="_ncdf_transfer"> 117 120 118 <h2><a class="top" href="#container">top</a>ncdf_transfer </h2> 121 <h2><a class="top" href="#container">top</a>ncdf_transfer <span class="categories"> for OPA meshmask files 122 </span></h2> 119 123 120 124 <p class="header"> … … 122 126 123 127 <div class="comments"> 124 NAME: micromeshmask.pro 125 126 PURPOSE: reduce the size of the NetCDF meshmask created by OPA by 127 using bit (and not byte) format for the masks and the foat format 128 for the other fields. 129 130 CATEGORY:for OPA meshmask files 131 132 CALLING SEQUENCE: reducencmeshmask, ncfilein[, ncfileout] 133 134 INPUTS: 135 ncfilein: 128 </div> 129 130 131 132 133 <h3>Parameters</h3> 134 135 136 <h4 id="_ncdf_transfer_param_inid">inid 137 138 139 140 141 142 143 144 145 </h4> 146 147 <div class="comments"></div> 148 149 <h4 id="_ncdf_transfer_param_outid">outid 150 151 152 153 154 155 156 157 158 </h4> 159 160 <div class="comments"></div> 161 162 <h4 id="_ncdf_transfer_param_inname">inname 163 164 165 166 167 168 169 170 171 </h4> 172 173 <div class="comments"></div> 174 175 <h4 id="_ncdf_transfer_param_outname">outname 176 177 178 179 180 181 182 183 184 </h4> 185 186 <div class="comments"></div> 187 188 189 190 191 192 193 <h3>Examples</h3><div class="value"> 194 IDL> reducencmeshmask, ncfilein[, ncfileout] 195 196 197 IDL> meshdir='/d1fes2-raid2/smasson/DATA/ORCA05/' 198 IDL> micromeshmask, 'meshmask_ORCA_R05.nc',iodir=meshdir 199 </div> 200 <h3>Version history</h3> 201 202 203 <h4>History</h4><div class="value"> 204 July 2004 Sebastien Masson (smasson@lodyc.jussieu.fr)</div> 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 </div> 224 225 226 <div class="routine_details" id="_micromeshmask"> 227 228 <h2><a class="top" href="#container">top</a>micromeshmask </h2> 229 230 <p class="header"> 231 micromeshmask<span class="result">, <a href="#_micromeshmask_param_ncfilein">ncfilein</a>, <a href="#_micromeshmask_param_ncfileout">ncfileout</a></span>, <a href="#_micromeshmask_keyword_IODIR">IODIR</a>=<span class="result">IODIR</span></p> 232 233 <div class="comments"></div> 234 235 236 237 238 <h3>Parameters</h3> 239 240 241 <h4 id="_micromeshmask_param_ncfilein">ncfilein 242 <span class="attr">in</span> 243 244 245 <span class="attr">required</span> 246 247 248 249 250 </h4> 251 252 <div class="comments"> 136 253 1) the name of the meshmask file to be reduced. In that case, 137 254 there is only one meshmask file … … 141 258 2) the xxx part in the names: xxx.mesh_hgr.nc xxx.mesh_zgr.nc 142 259 xxx.mask.nc. In that case, the meshmask is split into 3 files. 143 144 ncfileout: the name of the uniq reduced meshmask file. default 260 </div> 261 262 <h4 id="_micromeshmask_param_ncfileout">ncfileout 263 <span class="attr">in</span> 264 265 266 <span class="attr">required</span> 267 268 269 270 271 </h4> 272 273 <div class="comments"> the name of the uniq reduced meshmask file. default 145 274 definition is micromeshmask.nc 146 147 KEYWORD PARAMETERSSAT: 148 149 IODIR:to define the files path. 150 151 OUTPUTS: no 152 153 COMMON BLOCKS: no 154 155 EXAMPLE: 156 IDL> meshdir='/d1fes2-raid2/smasson/DATA/ORCA05/' 157 IDL> micromeshmask, 'meshmask_ORCA_R05.nc',iodir=meshdir 158 159 MODIFICATION HISTORY:</div> 160 161 162 163 164 <h3>Parameters</h3> 165 166 167 <h4 id="_ncdf_transfer_param_inid">inid 168 169 170 171 172 173 174 175 176 </h4> 177 178 <div class="comments"></div> 179 180 <h4 id="_ncdf_transfer_param_outid">outid 181 182 183 184 185 186 187 188 189 </h4> 190 191 <div class="comments"></div> 192 193 <h4 id="_ncdf_transfer_param_inname">inname 194 195 196 197 198 199 200 201 202 </h4> 203 204 <div class="comments"></div> 205 206 <h4 id="_ncdf_transfer_param_outname">outname 207 208 209 210 211 212 213 214 215 </h4> 216 217 <div class="comments"></div> 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 </div> 248 249 250 <div class="routine_details" id="_micromeshmask"> 251 252 <h2><a class="top" href="#container">top</a>micromeshmask </h2> 253 254 <p class="header"> 255 micromeshmask<span class="result">, <a href="#_micromeshmask_param_ncfilein">ncfilein</a>, <a href="#_micromeshmask_param_ncfileout">ncfileout</a></span>, <a href="#_micromeshmask_keyword_IODIR">IODIR</a>=<span class="result">IODIR</span></p> 256 257 <div class="comments"></div> 258 259 260 261 262 <h3>Parameters</h3> 263 264 265 <h4 id="_micromeshmask_param_ncfilein">ncfilein 266 267 268 269 270 271 272 273 274 </h4> 275 276 <div class="comments"></div> 277 278 <h4 id="_micromeshmask_param_ncfileout">ncfileout 279 280 281 282 283 284 285 286 287 </h4> 288 289 <div class="comments"></div> 275 </div> 290 276 291 277 … … 307 293 </h4> 308 294 309 <div class="comments"> </div>295 <div class="comments"> to define the files path.</div> 310 296 311 297 -
trunk/SRC/Documentation/idldoc_html_output/Grid/n128gaussian.html
r89 r103 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> compute the latitudes of the n128 gaussian grid. See: 90 http://www.ecmwf.int/products/data/technical/gaussian/n128FIS.html 91 </div> 90 92 91 93 … … 102 104 <div class="routine_details" id="_n128gaussian"> 103 105 104 <h2><a class="top" href="#container">top</a>n128gaussian </h2> 106 <h2><a class="top" href="#container">top</a>n128gaussian <span class="categories"> grid 107 </span></h2> 105 108 106 109 <p class="header"> 107 110 <span class="result">result = </span>n128gaussian()</p> 108 111 109 <div class="comments"> 110 NAME:n128gaussian 112 <div class="comments"></div> 111 113 112 PURPOSE:compute the latitudes of the n128 gaussian grid. See: 113 http://www.ecmwf.int/products/data/technical/gaussian/n128FIS.html 114 115 CATEGORY:grid 116 117 CALLING SEQUENCE:lat=n128gaussian() 118 119 INPUTS:None 120 121 KEYWORD PARAMETERS:None 122 123 OUTPUTS:a 1d array 124 125 COMMON BLOCKS:None 126 127 SIDE EFFECTS:None 128 129 RESTRICTIONS:None 130 131 EXAMPLE: 132 133 MODIFICATION HISTORY:</div> 114 <h3>Return value</h3><div class="value"> a 1d array 115 </div> 134 116 135 117 … … 137 119 138 120 139 140 121 <h3>Examples</h3><div class="value"> 122 IDL> lat=n128gaussian() 123 </div> 124 <h3>Version history</h3> 141 125 142 126 143 144 145 127 <h4>History</h4><div class="value"> 128 Sebastien Masson (smasson@lodyc.jussieu.fr) 129 June 2004</div> 146 130 147 131 -
trunk/SRC/Documentation/idldoc_html_output/Grid/n160gaussian.html
r89 r103 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> compute the latitudes of the n160 gaussian grid. See: 90 http://www.ecmwf.int/products/data/technical/gaussian/n160FIS.html 91 </div> 90 92 91 93 … … 102 104 <div class="routine_details" id="_n160gaussian"> 103 105 104 <h2><a class="top" href="#container">top</a>n160gaussian </h2> 106 <h2><a class="top" href="#container">top</a>n160gaussian <span class="categories"> grid 107 </span></h2> 105 108 106 109 <p class="header"> … … 108 111 109 112 <div class="comments"> 110 NAME:n160gaussian 113 </div> 111 114 112 PURPOSE:compute the latitudes of the n160 gaussian grid. See: 113 http://www.ecmwf.int/products/data/technical/gaussian/n160FIS.html 114 115 CATEGORY:grid 116 117 CALLING SEQUENCE:lat=n160gaussian() 118 119 INPUTS:None 120 121 KEYWORD PARAMETERS:None 122 123 OUTPUTS:a 1d array 124 125 COMMON BLOCKS:None 126 127 SIDE EFFECTS:None 128 129 RESTRICTIONS:None 130 131 EXAMPLE: 132 133 MODIFICATION HISTORY:</div> 115 <h3>Return value</h3><div class="value"> a 1d array 116 </div> 134 117 135 118 … … 137 120 138 121 139 140 122 <h3>Examples</h3><div class="value"> 123 IDL>lat=n160gaussian() 124 </div> 125 <h3>Version history</h3> 141 126 142 127 143 144 145 128 <h4>History</h4><div class="value"> 129 Sebastien Masson (smasson@lodyc.jussieu.fr) 130 June 2004</div> 146 131 147 132 -
trunk/SRC/Documentation/idldoc_html_output/Grid/n256gaussian.html
r89 r103 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> compute the latitudes of the n256 gaussian grid. See: 90 http://www.ecmwf.int/products/data/technical/gaussian/n256FIS.html 91 </div> 90 92 91 93 … … 102 104 <div class="routine_details" id="_n256gaussian"> 103 105 104 <h2><a class="top" href="#container">top</a>n256gaussian </h2> 106 <h2><a class="top" href="#container">top</a>n256gaussian <span class="categories"> grid 107 </span></h2> 105 108 106 109 <p class="header"> … … 108 111 109 112 <div class="comments"> 110 NAME:n256gaussian 113 </div> 111 114 112 PURPOSE:compute the latitudes of the n256 gaussian grid. See: 113 http://www.ecmwf.int/products/data/technical/gaussian/n256FIS.html 114 115 CATEGORY:grid 116 117 CALLING SEQUENCE:lat=n256gaussian() 118 119 INPUTS:None 120 121 KEYWORD PARAMETERS:None 122 123 OUTPUTS:a 1d array 124 125 COMMON BLOCKS:None 126 127 SIDE EFFECTS:None 128 129 RESTRICTIONS:None 130 131 EXAMPLE: 132 133 MODIFICATION HISTORY:</div> 115 <h3>Return value</h3><div class="value"> a 1d array 116 </div> 134 117 135 118 … … 137 120 138 121 139 140 122 <h3>Examples</h3><div class="value"> 123 IDL> lat=n256gaussian() 124 </div> 125 <h3>Version history</h3> 141 126 142 127 143 144 145 128 <h4>History</h4><div class="value"> 129 Sebastien Masson (smasson@lodyc.jussieu.fr) 130 June 2004</div> 146 131 147 132 -
trunk/SRC/Documentation/idldoc_html_output/Grid/n48gaussian.html
r89 r103 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> compute the latitudes of the n48 gaussian grid. See: 90 http://www.ecmwf.int/products/data/technical/gaussian/n48FIS.html 91 </div> 90 92 91 93 … … 102 104 <div class="routine_details" id="_n48gaussian"> 103 105 104 <h2><a class="top" href="#container">top</a>n48gaussian </h2> 106 <h2><a class="top" href="#container">top</a>n48gaussian <span class="categories"> grid 107 </span></h2> 105 108 106 109 <p class="header"> … … 108 111 109 112 <div class="comments"> 110 NAME:n48gaussian 113 </div> 111 114 112 PURPOSE:compute the latitudes of the n48 gaussian grid. See: 113 http://www.ecmwf.int/products/data/technical/gaussian/n48FIS.html 114 115 CATEGORY:grid 116 117 CALLING SEQUENCE:lat=n48gaussian() 118 119 INPUTS:None 120 121 KEYWORD PARAMETERS:None 122 123 OUTPUTS:a 1d array 124 125 COMMON BLOCKS:None 126 127 SIDE EFFECTS:None 128 129 RESTRICTIONS:None 130 131 EXAMPLE: 132 133 MODIFICATION HISTORY:</div> 115 <h3>Return value</h3><div class="value"> a 1d array 116 </div> 134 117 135 118 … … 137 120 138 121 139 140 122 <h3>Examples</h3><div class="value"> 123 IDL> lat=n48gaussian() 124 </div> 125 <h3>Version history</h3> 141 126 142 127 143 144 145 128 <h4>History</h4><div class="value"> 129 Sebastien Masson (smasson@lodyc.jussieu.fr) 130 June 2004</div> 146 131 147 132 -
trunk/SRC/Documentation/idldoc_html_output/Grid/n80gaussian.html
r89 r103 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> compute the latitudes of the n80 gaussian grid. See: 90 http://www.ecmwf.int/products/data/technical/gaussian/n80FIS.html 91 </div> 90 92 91 93 … … 102 104 <div class="routine_details" id="_n80gaussian"> 103 105 104 <h2><a class="top" href="#container">top</a>n80gaussian </h2> 106 <h2><a class="top" href="#container">top</a>n80gaussian <span class="categories"> grid 107 </span></h2> 105 108 106 109 <p class="header"> … … 108 111 109 112 <div class="comments"> 110 NAME:n80gaussian 113 </div> 111 114 112 PURPOSE:compute the latitudes of the n80 gaussian grid. See: 113 http://www.ecmwf.int/products/data/technical/gaussian/n80FIS.html 114 115 CATEGORY:grid 116 117 CALLING SEQUENCE:lat=n80gaussian() 118 119 INPUTS:None 120 121 KEYWORD PARAMETERS:None 122 123 OUTPUTS:a 1d array 124 125 COMMON BLOCKS:None 126 127 SIDE EFFECTS:None 128 129 RESTRICTIONS:None 130 131 EXAMPLE: 132 133 MODIFICATION HISTORY:</div> 115 <h3>Return value</h3><div class="value"> a 1d array 116 </div> 134 117 135 118 … … 137 120 138 121 139 140 122 <h3>Examples</h3><div class="value"> 123 IDL> lat=n80gaussian() 124 </div> 125 <h3>Version history</h3> 141 126 142 127 143 144 145 128 <h4>History</h4><div class="value"> 129 Sebastien Masson (smasson@lodyc.jussieu.fr) 130 June 2004</div> 146 131 147 132 -
trunk/SRC/Documentation/idldoc_html_output/Grid/ncdf_meshread.html
r89 r103 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> read NetCDF meshmask file created by OPA 90 </div> 90 91 91 92 … … 102 103 <div class="routine_details" id="_ncdf_meshread"> 103 104 104 <h2><a class="top" href="#container">top</a>ncdf_meshread </h2> 105 <h2><a class="top" href="#container">top</a>ncdf_meshread <span class="categories"> grid reading 106 </span></h2> 105 107 106 108 <p class="header"> 107 ncdf_meshread<span class="result"> , <a href="#_ncdf_meshread_param_filename">filename</a></span>, <a href="#_ncdf_meshread_keyword_GLAMBOUNDARY">GLAMBOUNDARY</a>=<span class="result">GLAMBOUNDARY</span>, <a href="#_ncdf_meshread_keyword_CHECKDAT">CHECKDAT</a>=<span class="result">CHECKDAT</span>, <a href="#_ncdf_meshread_keyword_ONEARTH">ONEARTH</a>=<span class="result">ONEARTH</span>, <a href="#_ncdf_meshread_keyword_GETDIMENSIONS">GETDIMENSIONS</a>=<span class="result">GETDIMENSIONS</span>, <a href="#_ncdf_meshread_keyword_PERIODIC">PERIODIC</a>=<span class="result">PERIODIC</span>, <a href="#_ncdf_meshread_keyword_SHIFT">SHIFT</a>=<span class="result">SHIFT</span>, <a href="#_ncdf_meshread_keyword_STRIDE">STRIDE</a>=<span class="result">STRIDE</span>, <a href="#_ncdf_meshread_keyword_STRCALLING">STRCALLING</a>=<span class="result">STRCALLING</span>, <a href="#_ncdf_meshread_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span></p>109 ncdf_meshread<span class="result">[, <a href="#_ncdf_meshread_param_filename">filename</a>]</span>, <a href="#_ncdf_meshread_keyword_GLAMBOUNDARY">GLAMBOUNDARY</a>=<span class="result">GLAMBOUNDARY</span>, <a href="#_ncdf_meshread_keyword_CHECKDAT">CHECKDAT</a>=<span class="result">CHECKDAT</span>, <a href="#_ncdf_meshread_keyword_ONEARTH">ONEARTH</a>=<span class="result">ONEARTH</span>, <a href="#_ncdf_meshread_keyword_GETDIMENSIONS">GETDIMENSIONS</a>=<span class="result">GETDIMENSIONS</span>, <a href="#_ncdf_meshread_keyword_PERIODIC">PERIODIC</a>=<span class="result">PERIODIC</span>, <a href="#_ncdf_meshread_keyword_SHIFT">SHIFT</a>=<span class="result">SHIFT</span>, <a href="#_ncdf_meshread_keyword_STRIDE">STRIDE</a>=<span class="result">STRIDE</span>, <a href="#_ncdf_meshread_keyword_STRCALLING">STRCALLING</a>=<span class="result">STRCALLING</span>, <a href="#_ncdf_meshread_keyword__EXTRA">_EXTRA</a>=<span class="result">_EXTRA</span></p> 108 110 109 111 <div class="comments"> 110 NAME:ncdf_meshread 111 112 PURPOSE:read NetCDF meshmask file created by OPA 113 114 CATEGORY:grid reading 115 116 CALLING SEQUENCE:ncdf_meshread [,' filename'] 117 118 INPUTS: 119 120 filename: the name of the meshmask file to read. Default is 112 </div> 113 114 115 116 117 <h3>Parameters</h3> 118 119 120 <h4 id="_ncdf_meshread_param_filename">filename 121 <span class="attr">in</span> 122 123 <span class="attr">optional</span> 124 125 126 127 128 129 </h4> 130 131 <div class="comments"> the name of the meshmask file to read. Default is 121 132 meshmask.nc. if this name does not contain any / and if 122 133 iodirectory keyword is not specify, then the common variable 123 134 iodir will be use to define the mesh file path. 124 125 KEYWORD PARAMETERS: 126 127 GLAMBOUNDARY:a 2 elements vector, {lon1,lon2], the longitute 135 </div> 136 137 138 139 140 141 142 <h3>Keywords</h3> 143 144 <h4 id="_ncdf_meshread_keyword_GLAMBOUNDARY">GLAMBOUNDARY 145 146 147 148 149 150 151 152 153 </h4> 154 155 <div class="comments"> a 2 elements vector, {lon1,lon2], the longitute 128 156 boundaries that should be used to visualize the data. 129 157 lon2 > lon1 130 158 lon2 - lon1 le 360 131 159 key_shift will be automaticaly defined according to GLAMBOUNDARY. 132 133 /CHECKDAT: Suppressed. Use micromeshmask.pro to create an 160 </div> 161 162 <h4 id="_ncdf_meshread_keyword_CHECKDAT">CHECKDAT 163 164 165 166 167 168 169 170 171 </h4> 172 173 <div class="comments"> Suppressed. Use micromeshmask.pro to create an 134 174 appropriate meshmask. 135 136 ONEARTH = 0 or 1: to force the manual definition of 175 </div> 176 177 <h4 id="_ncdf_meshread_keyword_ONEARTH">ONEARTH 178 179 180 181 182 183 184 185 186 </h4> 187 188 <div class="comments"> = 0 or 1 to force the manual definition of 137 189 key_onearth (to specify if the data are on earth -> use longitude 138 190 /latitude etc...). By default, key_onearth = 1. 139 191 note that ONEARTH = 0 forces PERIODIC = 0, SHIFT = 0 and is 140 192 cancelling GLAMBOUNDARY 141 142 PERIODIC = 0 or 1: to force the manual definition of 193 </div> 194 195 <h4 id="_ncdf_meshread_keyword_GETDIMENSIONS">GETDIMENSIONS 196 197 198 199 200 201 202 203 204 </h4> 205 206 <div class="comments"></div> 207 208 <h4 id="_ncdf_meshread_keyword_PERIODIC">PERIODIC 209 210 211 212 213 214 215 216 217 </h4> 218 219 <div class="comments"> = 0 or 1 to force the manual definition of 143 220 key_periodic. By default, key_periodic is automaticaly 144 221 computed by using the first line of glamt. 145 146 SHIFT = : to force the manual definition of key_shift. By 222 </div> 223 224 <h4 id="_ncdf_meshread_keyword_SHIFT">SHIFT 225 226 227 228 229 230 231 232 233 </h4> 234 235 <div class="comments"> to force the manual definition of key_shift. By 147 236 debault, key_shift is automaticaly computed according to the 148 237 glamboundary (when defined) by using the first line of glamt. if 149 238 key_periodic=0 then in any case key_shift = 0. 150 151 STRCALLING: a string containing the calling command used to call 152 computegrid (this is used by xxx.pro) 153 154 STRIDE = : a 3 elements vector to specify the stride in x, y, z 239 </div> 240 241 <h4 id="_ncdf_meshread_keyword_STRIDE">STRIDE 242 243 244 245 246 247 248 249 250 </h4> 251 252 <div class="comments"> a 3 elements vector to specify the stride in x, y, z 155 253 direction. Default definition is key_stride. The resulting value 156 254 will be stored in the common (cm_4mesh) variable key_stride 157 158 159 OUTPUTS:none 160 161 COMMON BLOCKS: cm_4mesh, cm_4data, cm_4cal 162 163 SIDE EFFECTS: define and/or use common variables from 255 </div> 256 257 <h4 id="_ncdf_meshread_keyword_STRCALLING">STRCALLING 258 259 260 261 262 263 264 265 266 </h4> 267 268 <div class="comments"> a string containing the calling command used to call 269 computegrid (this is used by xxx.pro) 270 </div> 271 272 <h4 id="_ncdf_meshread_keyword__EXTRA">_EXTRA 273 274 275 276 277 278 279 280 281 </h4> 282 283 <div class="comments"></div> 284 285 286 287 <h3>Examples</h3><div class="value"> 288 IDL> ncdf_meshread [,' filename'] 289 </div> 290 <h3>Version history</h3> 291 292 293 <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 294 12/1999 295 July 2004, Sebastien Masson: Several modifications (micromeshmask, 296 clean partial steps, clean use of key_stride, automatic definition 297 of key_shift, ...) 298 Oct. 2004, Sebastien Masson: add PERIODIC and SHIFT 299 Aug. 2005, Sebastien Masson: some cleaning + english </div> 300 301 302 <h3>Known issues</h3> 303 304 305 306 <h4>Restrictions</h4><div class="value"> define and/or use common variables from 164 307 cm_4mesh, cm_4data, cm_4cal 165 308 166 RESTRICTIONS: 309 167 310 168 311 ixminmesh,ixmaxmesh,iyminmesh,iymaxmesh,izminmesh,izmaxmesh must 169 312 be defined febore calling ncdf_meshread. if some of those value 170 313 are equal to -1 they will be automatically defined 171 172 EXAMPLE: 173 </div> 174 175 176 177 178 <h3>Parameters</h3> 179 180 181 <h4 id="_ncdf_meshread_param_filename">filename 182 183 184 185 186 187 188 189 190 </h4> 191 192 <div class="comments"></div> 193 194 195 196 197 198 199 <h3>Keywords</h3> 200 201 <h4 id="_ncdf_meshread_keyword_GLAMBOUNDARY">GLAMBOUNDARY 202 203 204 205 206 207 208 209 210 </h4> 211 212 <div class="comments"></div> 213 214 <h4 id="_ncdf_meshread_keyword_CHECKDAT">CHECKDAT 215 216 217 218 219 220 221 222 223 </h4> 224 225 <div class="comments"></div> 226 227 <h4 id="_ncdf_meshread_keyword_ONEARTH">ONEARTH 228 229 230 231 232 233 234 235 236 </h4> 237 238 <div class="comments"></div> 239 240 <h4 id="_ncdf_meshread_keyword_GETDIMENSIONS">GETDIMENSIONS 241 242 243 244 245 246 247 248 249 </h4> 250 251 <div class="comments"></div> 252 253 <h4 id="_ncdf_meshread_keyword_PERIODIC">PERIODIC 254 255 256 257 258 259 260 261 262 </h4> 263 264 <div class="comments"></div> 265 266 <h4 id="_ncdf_meshread_keyword_SHIFT">SHIFT 267 268 269 270 271 272 273 274 275 </h4> 276 277 <div class="comments"></div> 278 279 <h4 id="_ncdf_meshread_keyword_STRIDE">STRIDE 280 281 282 283 284 285 286 287 288 </h4> 289 290 <div class="comments"></div> 291 292 <h4 id="_ncdf_meshread_keyword_STRCALLING">STRCALLING 293 294 295 296 297 298 299 300 301 </h4> 302 303 <div class="comments"></div> 304 305 <h4 id="_ncdf_meshread_keyword__EXTRA">_EXTRA 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 314 </div> 315 316 <h3>Other attributes</h3> 317 318 319 <h4>Uses routines</h4><div class="value"> cm_4mesh cm_4data cm_4cal 320 </div> 337 321 338 322 -
trunk/SRC/Documentation/idldoc_html_output/Grid/restoreboxparam.html
r89 r103 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> restore all the zoom parameters (defined by calling domdef) 90 perviously defined by saveboxparam 91 </div> 90 92 91 93 … … 108 110 109 111 <div class="comments"> 110 NAME: restoreboxparam111 112 PURPOSE: restore all the zoom parameters (defined by calling domdef)113 perviously defined by saveboxparam114 115 CATEGORY:116 117 CALLING SEQUENCE: restoreboxparam, filename118 119 INPUTS: filename a scalar string defining the file name120 121 KEYWORD PARAMETERS: none122 123 OUTPUTS:none124 112 </div> 125 113 … … 131 119 132 120 <h4 id="_restoreboxparam_param_filename">filename 121 <span class="attr">in</span> 133 122 134 123 135 136 124 <span class="attr">required</span> 137 125 138 126 … … 141 129 </h4> 142 130 143 <div class="comments"></div> 131 <div class="comments"> a scalar string defining the file name 132 </div> 144 133 145 134 … … 148 137 149 138 139 <h3>Examples</h3><div class="value"> 140 IDL> restoreboxparam, filename 141 </div> 142 <h3>Version history</h3> 143 144 145 <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 146 July 2005</div> 147 148 149 <h3>Known issues</h3> 150 150 151 151 152 152 153 <h4>Restrictions</h4><div class="value"> all def_myuniquetmpdir, if myuniquetmpdir is undefined: 154 => define, create and add it to !path 155 </div> 156 157 <h3>Other attributes</h3> 153 158 154 159 155 156 157 158 159 160 161 162 163 164 165 166 160 <h4>Uses routines</h4><div class="value"> cm_4mesh and cm_demomode_used if we are in demo mode 161 </div> 167 162 168 163 -
trunk/SRC/Documentation/idldoc_html_output/Grid/saveboxparam.html
r89 r103 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> save all the zoom parameters (defined by calling domdef) 90 in a file (using save command) located in myuniquetmpdir 91 (common variable defined by def_myuniquetmpdir) 92 </div> 90 93 91 94 … … 108 111 109 112 <div class="comments"> 110 NAME: saveboxparam111 112 PURPOSE: save all the zoom parameters (defined by calling domdef)113 in a file (using save command) located in myuniquetmpdir114 (common variable defined by def_myuniquetmpdir)115 116 CATEGORY:117 118 CALLING SEQUENCE: saveboxparam, filename119 120 INPUTS: filename a scalar string defining the file name121 122 KEYWORD PARAMETERS: none123 124 OUTPUTS:none125 113 </div> 126 114 … … 132 120 133 121 <h4 id="_saveboxparam_param_filename">filename 122 <span class="attr">in</span> 134 123 135 124 136 137 125 <span class="attr">required</span> 138 126 139 127 … … 142 130 </h4> 143 131 144 <div class="comments"></div> 132 <div class="comments"> a scalar string defining the file name 133 </div> 145 134 146 135 … … 149 138 150 139 140 <h3>Examples</h3><div class="value"> 141 IDL> saveboxparam, filename 142 </div> 143 <h3>Version history</h3> 144 145 146 <h4>History</h4><div class="value"> Sebastien Masson (smasson@lodyc.jussieu.fr) 147 June 2005</div> 148 149 150 <h3>Known issues</h3> 151 151 152 152 153 153 154 <h4>Restrictions</h4><div class="value"> call def_myuniquetmpdir, if myuniquetmpdir is undefined: 155 => define, create and add it to !path 156 </div> 157 158 <h3>Other attributes</h3> 154 159 155 160 156 157 158 159 160 161 162 163 164 165 166 167 161 <h4>Uses routines</h4><div class="value"> cm_4mesh and cm_demomode_used if we are in demo mode 162 </div> 168 163 169 164 -
trunk/SRC/Documentation/idldoc_html_output/Grid/smallmeshmask.html
r89 r103 87 87 </div> 88 88 89 <div id="file_comments"></div> 89 <div id="file_comments"> reduce the size of the NetCDF meshmask created by OPA by 90 using byte format for the masks and the foat format for the other 91 fields. 92 </div> 90 93 91 94 … … 102 105 103 106 <dt><p><a href="#_ncdf_transfer">ncdf_transfer<span class="result">, inid, outid, inname, outname</span></a></p><dt> 104 <dd> NAME: smallmeshmask.</dd>105 106 <dt><p><a href="#_smallmeshmask">smallmeshmask<span class="result">, ncfilein , ncfileout</span>, IODIR=<span class="result">IODIR</span></a></p><dt>107 <dd> </dd> 108 109 <dt><p><a href="#_smallmeshmask">smallmeshmask<span class="result">, ncfilein[, ncfileout]</span>, IODIR=<span class="result">IODIR</span></a></p><dt> 107 110 <dd></dd> 108 111 … … 116 119 <div class="routine_details" id="_ncdf_transfer"> 117 120 118 <h2><a class="top" href="#container">top</a>ncdf_transfer </h2> 121 <h2><a class="top" href="#container">top</a>ncdf_transfer <span class="categories"> for OPA meshmask files 122 </span></h2> 119 123 120 124 <p class="header"> … … 122 126 123 127 <div class="comments"> 124 NAME: smallmeshmask.pro 125 126 PURPOSE: reduce the size of the NetCDF meshmask created by OPA by 127 using byte format for the masks and the foat format for the other 128 fields. 129 130 CATEGORY:for OPA meshmask files 131 132 CALLING SEQUENCE: smallmeshmask, ncfilein[, ncfileout] 133 134 INPUTS: 135 ncfilein: 128 129 </div> 130 131 132 133 134 <h3>Parameters</h3> 135 136 137 <h4 id="_ncdf_transfer_param_inid">inid 138 139 140 141 142 143 144 145 146 </h4> 147 148 <div class="comments"></div> 149 150 <h4 id="_ncdf_transfer_param_outid">outid 151 152 153 154 155 156 157 158 159 </h4> 160 161 <div class="comments"></div> 162 163 <h4 id="_ncdf_transfer_param_inname">inname 164 165 166 167 168 169 170 171 172 </h4> 173 174 <div class="comments"></div> 175 176 <h4 id="_ncdf_transfer_param_outname">outname 177 178 179 180 181 182 183 184 185 </h4> 186 187 <div class="comments"></div> 188 189 190 191 192 193 194 195 <h3>Version history</h3> 196 197 198 <h4>History</h4><div class="value"> 199 July 2004 Sebastien Masson (smasson@lodyc.jussieu.fr)</div> 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 </div> 219 220 221 <div class="routine_details" id="_smallmeshmask"> 222 223 <h2><a class="top" href="#container">top</a>smallmeshmask <span class="categories"> for OPA meshmask files 224 </span></h2> 225 226 <p class="header"> 227 smallmeshmask<span class="result">, <a href="#_smallmeshmask_param_ncfilein">ncfilein</a>[, <a href="#_smallmeshmask_param_ncfileout">ncfileout</a>]</span>, <a href="#_smallmeshmask_keyword_IODIR">IODIR</a>=<span class="result">IODIR</span></p> 228 229 <div class="comments"></div> 230 231 232 233 234 <h3>Parameters</h3> 235 236 237 <h4 id="_smallmeshmask_param_ncfilein">ncfilein 238 <span class="attr">in</span> 239 240 241 <span class="attr">required</span> 242 243 244 245 246 </h4> 247 248 <div class="comments"> 136 249 1) the name of the meshmask file to be reduced. In that case, 137 250 there is only one meshmask file … … 141 254 2) the xxx part in the names: xxx.mesh_hgr.nc xxx.mesh_zgr.nc 142 255 xxx.mask.nc. In that case, the meshmask is split into 3 files. 143 144 ncfileout: the name of the reduced meshmask file. default 256 </div> 257 258 <h4 id="_smallmeshmask_param_ncfileout">ncfileout 259 <span class="attr">in</span> 260 261 <span class="attr">optional</span> 262 263 264 265 266 267 </h4> 268 269 <div class="comments"> the name of the reduced meshmask file. default 145 270 definition is smallmeshmask.nc 146 147 KEYWORD PARAMETERS: 148 149 IODIR:to define the files path. 150 151 OUTPUTS: no 152 153 COMMON BLOCKS: no 154 155 EXAMPLE: 271 </div> 272 273 274 275 276 277 278 <h3>Keywords</h3> 279 280 <h4 id="_smallmeshmask_keyword_IODIR">IODIR 281 282 283 284 285 286 287 288 289 </h4> 290 291 <div class="comments"> to define the files path.</div> 292 293 294 295 <h3>Examples</h3><div class="value"> 156 296 IDL> meshdir='/d1fes2-raid2/smasson/DATA/ORCA05/' 157 297 IDL> smallmeshmask, 'meshmask_ORCA_R05.nc',iodir=meshdir 158 159 MODIFICATION HISTORY:</div> 160 161 162 163 164 <h3>Parameters</h3> 165 166 167 <h4 id="_ncdf_transfer_param_inid">inid 168 169 170 171 172 173 174 175 176 </h4> 177 178 <div class="comments"></div> 179 180 <h4 id="_ncdf_transfer_param_outid">outid 181 182 183 184 185 186 187 188 189 </h4> 190 191 <div class="comments"></div> 192 193 <h4 id="_ncdf_transfer_param_inname">inname 194 195 196 197 198 199 200 201 202 </h4> 203 204 <div class="comments"></div> 205 206 <h4 id="_ncdf_transfer_param_outname">outname 207 208 209 210 211 212 213 214 215 </h4> 216 217 <div class="comments"></div> 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 </div> 248 249 250 <div class="routine_details" id="_smallmeshmask"> 251 252 <h2><a class="top" href="#container">top</a>smallmeshmask </h2> 253 254 <p class="header"> 255 smallmeshmask<span class="result">, <a href="#_smallmeshmask_param_ncfilein">ncfilein</a>, <a href="#_smallmeshmask_param_ncfileout">ncfileout</a></span>, <a href="#_smallmeshmask_keyword_IODIR">IODIR</a>=<span class="result">IODIR</span></p> 256 257 <div class="comments"></div> 258 259 260 261 262 <h3>Parameters</h3> 263 264 265 <h4 id="_smallmeshmask_param_ncfilein">ncfilein 266 267 268 269 270 271 272 273 274 </h4> 275 276 <div class="comments"></div> 277 278 <h4 id="_smallmeshmask_param_ncfileout">ncfileout 279 280 281 282 283 284 285 286 287 </h4> 288 289 <div class="comments"></div> 290 291 292 293 294 295 296 <h3>Keywords</h3> 297 298 <h4 id="_smallmeshmask_keyword_IODIR">IODIR 299 300 301 302 303 304 305 306 307 </h4> 308 309 <div class="comments"></div> 310 311 312 313 314 315 316 317 298 </div> 299 <h3>Version history</h3> 300 301 302 <h4>History</h4><div class="value"> 303 July 2004 Sebastien Masson (smasson@lodyc.jussieu.fr)</div> 318 304 319 305 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/compute_fromreg_bilinear_weigaddr.html
r101 r103 245 245 246 246 247 <h4>History</h4><div class="value"></div> 247 <h4>History</h4><div class="value"> 248 November 2005: Sebastien Masson (smasson@lodyc.jussieu.fr) 249 </div> 248 250 249 251 -
trunk/SRC/Documentation/idldoc_html_output/Interpolation/get_gridparams.html
r101 r103 135 135 136 136 <div class="comments"> the name of the netcdf file 137 1d or 2D arrays defining longitudes and latitudes. 137 138 the variable that will contain the longitudes</div> 138 139 … … 149 150 150 151 <div class="comments"> the name of the variable that contains the longitude in the NetCDF file 152 1d or 2D arrays defining longitudes and latitudes. 153 Note that these arrays are also outputs and can therefore be modified. 154 151 155 the variable that will contain the latitudes</div> 152 156 153 157 <h4 id="_get_gridparams_param_in3">in3 154 158 <span class="attr">in</span> 155 <span class="attr">out</span>159 156 160 157 161 <span class="attr">required</span> … … 166 170 167 171 <h4 id="_get_gridparams_param_in4">in4 168 172 <span class="attr">in</span> 169 173 <span class="attr">out</span> 170 174 … … 180 184 181 185 <h4 id="_get_gridparams_param_in5">in5 182 186 <span class="attr">in</span> 183 187 <span class="attr">out</span> 184 188 -
trunk/SRC/Documentation/idldoc_html_output/Obsolete/ficdate.html
r97 r103 163 163 164 164 165 165 <h3>Examples</h3><div class="value"> 166 IDL> fic = ficdate(930124) 167 </div> 166 168 <h3>Version history</h3> 167 169 -
trunk/SRC/Documentation/idldoc_html_output/Obsolete/fictype.html
r97 r103 147 147 148 148 149 149 <h3>Examples</h3><div class="value"> 150 IDL> fictype = fictype(930124) 151 </div> 150 152 <h3>Version history</h3> 151 153 -
trunk/SRC/Documentation/idldoc_html_output/Obsolete/vairdate.html
r97 r103 198 198 199 199 <h4>History</h4><div class="value"> Jerome Vialard (jv@lodyc.jussieu.fr) 200 2/7/98</div> 200 2/7/98 201 13/9/1999, Sebastien Masson (smasson@lodyc.jussieu.fr) 202 ANNUEL,MENSUEL,_EXTRA et possibilite 203 d''utiliser vairdate avec des scalaire ou des 204 tableaux</div> 201 205 202 206 … … 210 214 211 215 212 <h4>Uses routines</h4><div class="value"> common .pro216 <h4>Uses routines</h4><div class="value"> common 213 217 214 218 </div> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-categories.html
r102 r103 174 174 175 175 </ul> 176 </li> <li id="idldoc-for_OPA_meshmask_files">for OPA meshmask files <span class="result">(3 routines)</span> 177 <ul> 178 179 <li><a href="./Grid/micromeshmask.html?format=raw#_ncdf_transfer">ncdf_transfer</a></li> 180 181 <li><a href="./Grid/smallmeshmask.html?format=raw#_ncdf_transfer">ncdf_transfer</a></li> 182 183 <li><a href="./Grid/smallmeshmask.html?format=raw#_smallmeshmask">smallmeshmask</a></li> 184 185 </ul> 176 186 </li> <li id="idldoc-geography">geography <span class="result">(1 routine)</span> 177 187 <ul> … … 180 190 181 191 </ul> 192 </li> <li id="idldoc-grid">grid <span class="result">(6 routines)</span> 193 <ul> 194 195 <li><a href="./Grid/computegrid.html?format=raw#_computegrid">computegrid</a></li> 196 197 <li><a href="./Grid/n128gaussian.html?format=raw#_n128gaussian">n128gaussian</a></li> 198 199 <li><a href="./Grid/n160gaussian.html?format=raw#_n160gaussian">n160gaussian</a></li> 200 201 <li><a href="./Grid/n256gaussian.html?format=raw#_n256gaussian">n256gaussian</a></li> 202 203 <li><a href="./Grid/n48gaussian.html?format=raw#_n48gaussian">n48gaussian</a></li> 204 205 <li><a href="./Grid/n80gaussian.html?format=raw#_n80gaussian">n80gaussian</a></li> 206 207 </ul> 182 208 </li> <li id="idldoc-grid_manipulation">grid manipulation <span class="result">(3 routines)</span> 183 209 <ul> … … 188 214 189 215 <li><a href="./Interpolation/square2quadrilateral.html?format=raw#_square2quadrilateral">square2quadrilateral</a></li> 216 217 </ul> 218 </li> <li id="idldoc-grid_reading">grid reading <span class="result">(1 routine)</span> 219 <ul> 220 221 <li><a href="./Grid/ncdf_meshread.html?format=raw#_ncdf_meshread">ncdf_meshread</a></li> 190 222 191 223 </ul> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-warnings.html
r102 r103 165 165 </tr> 166 166 167 <tr>168 <td class="docroutine"><a href="./Grid/micromeshmask.html?format=raw#_micromeshmask">micromeshmask</a></td>169 <td class="docstat notdoc">not documented</td>170 </tr>171 172 </table><a href="./Grid/n128gaussian.html?format=raw">./Grid/n128gaussian.pro</a>173 <table>174 175 <tr>176 <td class="docroutine"><a href="./Grid/n128gaussian.html?format=raw#_n128gaussian">n128gaussian</a></td>177 <td class="docstat partialdoc">partially documented</td>178 </tr>179 180 </table><a href="./Grid/n160gaussian.html?format=raw">./Grid/n160gaussian.pro</a>181 <table>182 183 <tr>184 <td class="docroutine"><a href="./Grid/n160gaussian.html?format=raw#_n160gaussian">n160gaussian</a></td>185 <td class="docstat partialdoc">partially documented</td>186 </tr>187 188 </table><a href="./Grid/n256gaussian.html?format=raw">./Grid/n256gaussian.pro</a>189 <table>190 191 <tr>192 <td class="docroutine"><a href="./Grid/n256gaussian.html?format=raw#_n256gaussian">n256gaussian</a></td>193 <td class="docstat partialdoc">partially documented</td>194 </tr>195 196 </table><a href="./Grid/n48gaussian.html?format=raw">./Grid/n48gaussian.pro</a>197 <table>198 199 <tr>200 <td class="docroutine"><a href="./Grid/n48gaussian.html?format=raw#_n48gaussian">n48gaussian</a></td>201 <td class="docstat partialdoc">partially documented</td>202 </tr>203 204 </table><a href="./Grid/n80gaussian.html?format=raw">./Grid/n80gaussian.pro</a>205 <table>206 207 <tr>208 <td class="docroutine"><a href="./Grid/n80gaussian.html?format=raw#_n80gaussian">n80gaussian</a></td>209 <td class="docstat partialdoc">partially documented</td>210 </tr>211 212 167 </table><a href="./Grid/ncdf_meshread.html?format=raw">./Grid/ncdf_meshread.pro</a> 213 168 <table> … … 218 173 </tr> 219 174 220 </table><a href="./Grid/restoreboxparam.html?format=raw">./Grid/restoreboxparam.pro</a>221 <table>222 223 <tr>224 <td class="docroutine"><a href="./Grid/restoreboxparam.html?format=raw#_restoreboxparam">restoreboxparam</a></td>225 <td class="docstat partialdoc">partially documented</td>226 </tr>227 228 </table><a href="./Grid/saveboxparam.html?format=raw">./Grid/saveboxparam.pro</a>229 <table>230 231 <tr>232 <td class="docroutine"><a href="./Grid/saveboxparam.html?format=raw#_saveboxparam">saveboxparam</a></td>233 <td class="docstat partialdoc">partially documented</td>234 </tr>235 236 175 </table><a href="./Grid/smallmeshmask.html?format=raw">./Grid/smallmeshmask.pro</a> 237 176 <table> … … 240 179 <td class="docroutine"><a href="./Grid/smallmeshmask.html?format=raw#_ncdf_transfer">ncdf_transfer</a></td> 241 180 <td class="docstat partialdoc">partially documented</td> 242 </tr>243 244 <tr>245 <td class="docroutine"><a href="./Grid/smallmeshmask.html?format=raw#_smallmeshmask">smallmeshmask</a></td>246 <td class="docstat notdoc">not documented</td>247 181 </tr> 248 182 -
trunk/SRC/Documentation/idldoc_html_output/overview.html
r102 r103 360 360 <tr> 361 361 <td>Lines of code</td> 362 <td class="value"> 55 655</td>362 <td class="value"> 55552</td> 363 363 </tr> 364 364 </table> -
trunk/SRC/Documentation/idldoc_html_output/search.js
r102 r103 21 21 a[19] = new Array("./ForOldVersion/updatenew.html", "updatenew.pro", "", ""); 22 22 a[20] = new Array("./ForOldVersion/updateold.html", "updateold.pro", "", ""); 23 a[21] = new Array("./Grid/computegrid.html", "computegrid.pro", "", " NAME:computegrid PURPOSE:compute the grid parameters from cm_4mesh common: horizontal parameters: glam tf gphi tf e1t and e2t and if FULLCGRID keyword is defined: glam uv gphi uv e1 uvf and e2 uvf verticals parameters: gdep tw e3 tw masks: tmask and if FULLCGRID keyword is defined: uv maskred fmaskred xy triangulation: triangles_list key_ parameters: key_shift key_periodic key_zreverse key_yreverse key_stride key_onearth key_partialstep CATEGORY:grid CALLING SEQUENCE: computegrid startx starty stepx stepy nx ny computegrid startx starty stepx stepy computegrid xaxis xaxis yaxis yaxis or a suitable mix INPUTS: startx:scalar x starting point starty:scalar y starting point stepx:scalar or vector: x direction step must be 0 if vector nx is not used stepy:scalar or vector: y direction step could be 0 south to north or lon1 and lon2 lon1 le 360 key_shift will be defined automaticaly computed according to glamboundary by using the FIRST LINE of glamt but key_shift will 0 only if key_periodic 1 MASK: to specify the mask with a 2 or 3 dimension array 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 PLAIN: force PERIODIC 0 SHIFT 0 STRIDE 1 1 1 and suppress the automatic redefinition of the domain in case of x periodicity overlap y periodicity overlap ORCA type only and mask border to 0 SHIFT scalar to force the manual definition of key_shift By debault key_shift is automaticaly computed according to glamboundary when defined by using the FIRST LINE of glamt if key_periodic 0 then in any case key_shift 0 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 1 1 1 The resulting value will be stored in the common cm_4mesh variable key_stride XAXIS: to specify longitude1 with a 1 or 2 dimension array in this case startx stepx and nx are not used but could be necessary if the y axis is not defined with yaxis It must be possible to sort the first line of xaxis in the increasing order by shifting its elements YAXIS: to specify latitudes with a 1 or 2 dimension array in this case starty stepy and ny are not used but starty and stepy could be necessary if the x axis is not defined with xaxis It must be sorted in the increasing or deceasing order along each column if 2d array XYINDEX: activate to specify that the horizontal grid should be simply defined by using the index of the points xaxis findgen nx and yaxis findgen ny using this keyword forces key_onearth 0 XYZ MINMESH: to define the common variables i xyz minmesh used to define the grid only in a zoomed part of the original grid Defaut values are 0L max value is XYZ MAXMESH XYZ MAXMESH: to define the common variables i xyz maxmesh used to define the grid only in a zoomed part of the original grid Defaut values are jp ijk glo 1 max value is jp ijk glo 1 if XYZ MAXMESH is negative then we define i xyz maxmesh as jp ijk glo 1 XYZ MAXMESH instead of XYZ MAXMESH ZAXIS: to specify the vertical axis with a 1 dimension array Must be sorted in the increasing or deceasing order OUTPUTS: COMMON BLOCKS: cm_4mesh cm_4data cm_4cal SIDE EFFECTS: if the grid has x y periodicity orverlap and or if the mask has 0 everywhere at the border like a close sea and if we did not activate plain and xminmesh xmaxmesh yminmesh ymaxmesh keywords are defined to their default values we redefine xminmesh xmaxmesh yminmesh ymaxmesh in order to reove the overlapping part and or to open the domain avoid ti be forced to use cell_fill 1 RESTRICTIONS:FUV points definition EXAMPLE: MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr 2000 04 20 Sept 2004 several bug fixs to suit C grid type Aug 2005 rewritte almost everything PRO computegrid startx starty stepxin stepyin nxin nyin XAXIS xaxis YAXIS yaxis ZAXIS zaxis MASK mask GLAMBOUNDARY glamboundary XMINMESH xminmesh XMAXMESH xmaxmesh YMINMESH yminmesh YMAXMESH ymaxmesh ZMINMESH zminmesh ZMAXMESH zmaxmesh ONEARTH onearth PERIODIC periodic PLAIN plain SHIFT shift STRIDE stride FULLCGRID fullcgrid XYINDEX xyindex FBASE2TBASE fbase2tbase STRCALLING strcalling _extra ex cm_4mesh cm_4data cm_4cal IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF time1 systime 1 for key_performance Check input parameters xaxis related parameters if n_elements xaxis NE 0 then BEGIN CASE size xaxis 0 OF 0:nx 1L 1:nx size xaxis 1 2:nx size xaxis 1 ENDCASE ENDIF ELSE BEGIN IF n_elements startx EQ 0 THEN BEGIN dummy report If xaxis is not given startx must be defined return ENDIF CASE n_elements stepxin OF 0:BEGIN dummy report If xaxis is not given stepxin must be defined return END 1:BEGIN IF n_elements nxin EQ 0 THEN BEGIN dummy report If xaxis is not given and stepxin has only one element nx must be defined return ENDIF ELSE nx nxin END ELSE:nx n_elements stepxin ENDCASE ENDELSE yaxis related parameters if n_elements yaxis NE 0 then BEGIN CASE size yaxis 0 OF 0:ny 1L 1:ny size yaxis 1 2:ny size yaxis 2 ENDCASE ENDIF ELSE BEGIN IF n_elements starty EQ 0 THEN BEGIN dummy report If yaxis is not given starty must be defined return ENDIF CASE n_elements stepyin OF 0:BEGIN dummy report If yaxis is not given stepyin must be defined return END 1:BEGIN IF n_elements nyin EQ 0 THEN BEGIN dummy report If yaxis is not given and stepyin has only one element ny must be defined return ENDIF ELSE ny nyin END ELSE:ny n_elements stepyin ENDCASE ENDELSE zaxis related parameters if n_elements zaxis NE 0 then BEGIN CASE size zaxis 0 OF 0:nz 1L 1:nz size zaxis 1 ELSE:BEGIN print not coded stop END ENDCASE ENDIF ELSE nz 1L Others automatic definitions jpiglo long nx jpjglo long ny jpkglo long nz impact of plain keyword: IF keyword_set plain THEN BEGIN periodic 0 shift 0 stride 1 1 1 ENDIF IF n_elements xminmesh NE 0 THEN ixminmesh long xminmesh 0 ELSE ixminmesh 0l IF n_elements xmaxmesh NE 0 THEN ixmaxmesh long xmaxmesh 0 ELSE ixmaxmesh jpiglo 1 IF n_elements yminmesh NE 0 THEN iyminmesh long yminmesh 0 ELSE iyminmesh 0l IF n_elements ymaxmesh NE 0 THEN iymaxmesh long ymaxmesh 0 ELSE iymaxmesh jpjglo 1 IF n_elements zminmesh NE 0 THEN izminmesh long zminmesh 0 ELSE izminmesh 0l IF n_elements zmaxmesh NE 0 THEN izmaxmesh long zmaxmesh 0 ELSE izmaxmesh jpkglo 1 iymaxmesh iymaxmesh keyword_set fbase2tbase IF ixmaxmesh LT 0 THEN ixmaxmesh jpiglo 1 ixmaxmesh IF iymaxmesh LT 0 THEN iymaxmesh jpjglo 1 iymaxmesh IF izmaxmesh LT 0 THEN izmaxmesh jpkglo 1 izmaxmesh avoid basics errors ixmaxmesh 0 ixmaxmesh ixminmesh iymaxmesh iyminmesh izmaxmesh izminmesh temporary glamf gphif temporary glamu gphiu temporary glamv gphiv gdept stepz 2 ENDIF ELSE BEGIN stepz 1 gdepw gdept ENDELSE e3 tw : e3t stepz IF n_elements stepz GT 1 THEN BEGIN e3w 0 5 stepz shift stepz 1 e3w 0 0 5 e3t 0 ENDIF ELSE e3w e3t Mask defaut mask eq 1 if NOT keyword_set mask then mask 1 if mask 0 NE 1 then BEGIN tmask byte mask ixminmesh:ixmaxmesh iyminmesh:iymaxmesh izminmesh:izmaxmesh tmask reform tmask jpi jpj jpk over if key_shift NE 0 then tmask shift tmask key_shift 0 0 because tmask reverse tmask 2 is not working if the 3rd dimension of tmask 1 we call reform IF jpk EQ 1 THEN tmask reform tmask over IF key_yreverse EQ 1 THEN tmask reverse tmask 2 IF jpk EQ 1 THEN tmask reform tmask jpi jpj jpk over IF key_zreverse EQ 1 THEN tmask reverse tmask 3 IF jpk EQ 1 THEN tmask reform tmask jpi jpj jpk over IF keyword_set fullcgrid THEN BEGIN IF keyword_set key_periodic THEN BEGIN msk tmask shift tmask 1 0 0 umaskred msk jpi 1 ENDIF ELSE umaskred tmask jpi 1 vmaskred tmask jpj 1 fmaskredy tmask jpi 1 fmaskredx tmask jpj 1 ENDIF ENDIF ELSE BEGIN tmask replicate 1b jpi jpj jpk IF keyword_set fullcgrid THEN BEGIN umaskred replicate 1b jpj jpk vmaskred replicate 1b jpi jpk fmaskredy replicate 1b jpj jpk fmaskredx replicate 1b jpi jpk ENDIF ENDELSE IF jpi GT 2 AND jpj GT 2 AND NOT keyword_set plain AND ixminmesh EQ 0l AND ixmaxmesh eq jpiglo 1 AND iyminmesh EQ 0l AND iymaxmesh eq jpjglo 1 AND total tmask 0 EQ 0 AND total tmask jpj 1 EQ 0 AND total tmask 0 EQ 0 AND total tmask jpi 1 EQ 0 THEN BEGIN xminmesh 1 xmaxmesh 1 yminmesh 1 ymaxmesh 1 computegrid XAXIS glamt YAXIS gphit ZAXIS zaxis MASK mask GLAMBOUNDARY glamboundary XMINMESH xminmesh XMAXMESH xmaxmesh YMINMESH yminmesh YMAXMESH ymaxmesh ZMINMESH zminmesh ZMAXMESH zmaxmesh ONEARTH onearth PERIODIC periodic PLAIN plain SHIFT shift STRIDE stride FULLCGRID fullcgrid XYINDEX xyindex FBASE2TBASE fbase2tbase STRCALLING strcalling _extra ex return ENDIF IF NOT keyword_set fullcgrid THEN BEGIN umaskred values f_nan vmaskred values f_nan fmaskredy values f_nan fmaskredx values f_nan ENDIF stride IF total key_stride GT 3 THEN BEGIN IF key_shift NE 0 THEN BEGIN for explanation see header of read_ncdf_varget pro jpiright key_shift jpileft jpi key_shift key_stride 0 1 key_shift 1 MOD key_stride 0 jpi jpiright 1 key_stride 0 1 jpileft 1 key_stride 0 1 ENDIF ELSE jpi jpi 1 key_stride 0 1 jpj jpj 1 key_stride 1 1 jpk jpk 1 key_stride 2 1 glamt temporary glamt 0: :stride 0 0: :stride 1 gphit temporary gphit 0: :stride 0 0: :stride 1 e1t temporary e1t 0: :stride 0 0: :stride 1 e2t temporary e2t 0: :stride 0 0: :stride 1 tmask temporary tmask 0: :stride 0 0: :stride 1 0: :stride 2 gdept gdept 0: :stride 2 gdepw gdepw 0: :stride 2 e3t e3t 0: :stride 2 e3w e3w 0: :stride 2 we must recompute glamf and gphif IF jpi GT 1 THEN BEGIN if keyword_set key_onearth AND keyword_set xnotsorted OR keyword_set key_periodic AND key_irregular then BEGIN stepxf glamt 720 MOD 360 stepxf shift stepxf 1 1 stepxf stepxf stepxf stepxf 360 stepxf 360 stepxf min abs stepxf dimension 3 IF NOT keyword_set key_periodic THEN stepxf jpi 1 stepxf jpi 2 ENDIF ELSE BEGIN stepxf shift glamt 1 1 glamt IF keyword_set key_periodic THEN stepxf jpi 1 360 stepxf jpi 1 ELSE stepxf jpi 1 stepxf jpi 2 ENDELSE IF jpj GT 1 THEN BEGIN stepxf jpj 1 stepxf jpj 2 stepxf jpi 1 jpj 1 stepxf jpi 2 jpj 2 ENDIF glamf glamt 0 5 stepxf ENDIF ELSE glamf glamt 0 5 IF jpj GT 1 THEN BEGIN we must compute stepyf: y distance between T i j T i 1 j 1 stepyf shift gphit 1 1 gphit stepyf jpj 1 stepyf jpj 2 IF jpi GT 1 THEN BEGIN if NOT keyword_set key_periodic THEN stepyf jpi 1 stepyf jpi 2 stepyf jpi 1 jpj 1 stepyf jpi 2 jpj 2 ENDIF gphif gphit 0 5 stepyf ENDIF ELSE gphif gphit 0 5 IF jpj EQ 1 THEN BEGIN glamt reform glamt jpi jpj over gphit reform gphit jpi jpj over glamf reform glamf jpi jpj over gphif reform gphif jpi jpj over e1t reform e1t jpi jpj over e2t reform e2t jpi jpj over ENDIF IF keyword_set fullcgrid THEN BEGIN glamu temporary glamu 0: :stride 0 0: :stride 1 gphiu temporary gphiu 0: :stride 0 0: :stride 1 e1u temporary e1u 0: :stride 0 0: :stride 1 e2u temporary e2u 0: :stride 0 0: :stride 1 glamv temporary glamv 0: :stride 0 0: :stride 1 gphiv temporary gphiv 0: :stride 0 0: :stride 1 e1v temporary e1v 0: :stride 0 0: :stride 1 e2v temporary e2v 0: :stride 0 0: :stride 1 e1f temporary e1f 0: :stride 0 0: :stride 1 e2f temporary e2f 0: :stride 0 0: :stride 1 umaskred temporary umaskred 0 0: :stride 1 0: :stride 2 vmaskred temporary vmaskred 0: :stride 0 0 0: :stride 2 fmaskredy temporary fmaskredy 0 0: :stride 1 0: :stride 2 fmaskredx temporary fmaskredx 0: :stride 0 0 0: :stride 2 IF jpj EQ 1 THEN BEGIN glamu reform glamu jpi jpj over gphiu reform gphiu jpi jpj over e1u reform e1u jpi jpj over e2u reform e2u jpi jpj over glamv reform glamv jpi jpj over gphiv reform gphiv jpi jpj over e1v reform e1v jpi jpj over e2v reform e2v jpi jpj over e1f reform e1f jpi jpj over e2f reform e2f jpi jpj over ENDIF ENDIF ENDIF apply all the grid parameters updateold domdef Triangulation IF total tmask EQ jpi jpj jpk AND NOT keyword_set key_irregular THEN triangles_list 1 ELSE BEGIN are we using ORCA2 IF jpiglo EQ 182 AND jpi EQ 181 AND jpjglo EQ 149 AND jpj EQ 148 THEN triangles_list triangule ELSE triangles_list triangule keep_cont ENDELSE time axis default definition IF n_elements time EQ 0 OR n_elements jpt EQ 0 THEN BEGIN jpt 1 time 0 ENDIF IF NOT keyword_set key_forgetold THEN BEGIN updateold ENDIF grid parameters used by xxx IF NOT keyword_set strcalling THEN BEGIN IF n_elements ccmeshparameters EQ 0 THEN strcalling computegrid ELSE strcalling ccmeshparameters filename ENDIF IF n_elements glamt GE 2 THEN BEGIN glaminfo moment glamt IF finite glaminfo 2 EQ 0 THEN glaminfo glaminfo 0:1 gphiinfo moment gphit IF finite gphiinfo 2 EQ 0 THEN gphiinfo gphiinfo 0:1 ENDIF ELSE BEGIN glaminfo glamt gphiinfo gphit ENDELSE ccmeshparameters filename:strcalling glaminfo:float string glaminfo format E11 4 gphiinfo:float string gphiinfo format E11 4 jpiglo:jpiglo jpjglo:jpjglo jpkglo:jpkglo jpi:jpi jpj:jpj jpk:jpk ixminmesh:ixminmesh ixmaxmesh:ixmaxmesh iyminmesh:iyminmesh iymaxmesh:iymaxmesh izminmesh:izminmesh izmaxmesh:izmaxmesh key_shift:key_shift key_periodic:key_periodic key_stride:key_stride key_gridtype:key_gridtype key_yreverse:key_yreverse key_zreverse:key_zreverse key_partialstep:key_partialstep key_onearth:key_onearth ccreadparameters funclec_name: read_ncdf jpidta:jpidta jpjdta:jpjdta jpkdta:jpkdta ixmindta:ixmindta ixmaxdta:ixmaxdta iymindta:iymindta iymaxdta:iymaxdta izmindta:izmindta izmaxdta:izmaxdta IF keyword_set key_performance EQ 1 THEN print time computegrid systime 1 time1 return end ");24 a[22] = new Array("./Grid/micromeshmask.html", "micromeshmask.pro", "", " NAME: micromeshmask pro PURPOSE: reduce the size of the NetCDF meshmask created by OPA by using bit and not byte format for the masks and the foat format for the other fields CATEGORY:for OPA meshmask files CALLING SEQUENCE: reducencmeshmask 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 uniq reduced meshmask file default definition is micromeshmask nc KEYWORD PARAMETERSSAT: IODIR:to define the files path OUTPUTS: no COMMON BLOCKS: no EXAMPLE: IDL meshdir d1fes2 raid2 smasson DATA ORCA05 IDL micromeshmask 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 ENDPRO micromeshmask 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 for the mask we use its byte representation its y dimension will be extended to be a multiple of 8 then it will be divided by 8 if jpj mod 8 eq 0 the jpj_m jpi 8 else jpj_m jpi 8 1 jpj_m jpj 7 8 get the vertical dimensions IF n_elements filein_zgr NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_zgr ENDIF listdims strlowcase ncdf_listdims cdfid IF where listdims EQ z 0 NE 1 THEN ncdf_diminq cdfid z name jpk ELSE BEGIN dimid where strmid listdims 0 5 EQ depth 0 IF dimid NE 1 THEN ncdf_diminq cdfid dimid name jpk ELSE BEGIN report We could not find the vertical dimension its name must be z or start with depth return ENDELSE ENDELSE get the variables list related to the partial steps varlist_ps ncdf_listvars cdfid varlist_ps strtrim strlowcase varlist_ps 2 define the output file IF n_elements ncfileout EQ 0 THEN ncfileout micromeshmask nc cdfidout ncdf_create isafile FILE ncfileout IODIR iodir NEW clobber ncdf_control cdfidout nofill dimension dimidx ncdf_dimdef cdfidout x jpi dimidy ncdf_dimdef cdfidout y jpj dimidy_m ncdf_dimdef cdfidout y_m jpj_m dimidz ncdf_dimdef cdfidout z jpk global attributs ncdf_attput cdfidout IDL_Program_Name micromeshmask pro GLOBAL ncdf_attput cdfidout Creation_Date systime GLOBAL declaration des variables varid lonarr 20 horizontal variables hgrlist glamt glamu glamv glamf gphit gphiu gphiv gphif e1t e1u e1v e1f e2t e2u e2v e2f FOR h 0 n_elements hgrlist 1 DO varid h ncdf_vardef cdfidout hgrlist h dimidx dimidy float vertical variables zgrlist e3t e3w gdept gdepw FOR z 0 n_elements zgrlist 1 DO varid 16 z ncdf_vardef cdfidout zgrlist z dimidz float variables related to the partial steps IF where varlist_ps EQ hdept 0 NE 1 THEN varid varid ncdf_vardef cdfidout hdept dimidx dimidy float IF where varlist_ps EQ hdepw 0 NE 1 THEN varid varid ncdf_vardef cdfidout hdepw dimidx dimidy float old variable name keep for compatibility with old run Change e3tp to e3t_ps IF where varlist_ps EQ e3tp 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3t_ps dimidx dimidy float old variable name keep for compatibility with old run Change e3wp to e3w_ps IF where varlist_ps EQ e3wp 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3w_ps dimidx dimidy float IF where varlist_ps EQ e3t_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3t_ps dimidx dimidy float IF where varlist_ps EQ e3w_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3w_ps dimidx dimidy float IF where varlist_ps EQ e3u_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3u_ps dimidx dimidy float IF where varlist_ps EQ e3v_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3v_ps dimidx dimidy float mask variable msklist tmask umask vmask fmask FOR m 0 n_elements msklist 1 DO BEGIN varid varid ncdf_vardef cdfidout msklist m dimidx dimidy_m dimidz byte ncdf_attput cdfidout varid n_elements varid 1 Comment the mask is stored as bit You must use the binary representation of the byte to get back the data ENDFOR ncdf_control cdfidout endef get the horizontal variables IF n_elements filein_hgr NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_hgr ENDIF FOR h 0 n_elements hgrlist 1 DO ncdf_transfer cdfid cdfidout hgrlist h get the vertical variables IF n_elements filein_zgr NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_zgr ENDIF FOR z 0 n_elements zgrlist 1 DO ncdf_transfer cdfid cdfidout zgrlist z partial step variables IF where varlist_ps EQ hdept 0 NE 1 THEN ncdf_transfer cdfid cdfidout hdept IF where varlist_ps EQ hdepw 0 NE 1 THEN ncdf_transfer cdfid cdfidout hdepw IF where varlist_ps EQ e3tp 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3tp e3t_ps IF where varlist_ps EQ e3wp 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3wp e3w_ps IF where varlist_ps EQ e3t_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3t_ps IF where varlist_ps EQ e3w_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3w_ps IF where varlist_ps EQ e3u_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3u_ps IF where varlist_ps EQ e3v_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3v_ps mask IF n_elements filein_msk NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_msk ENDIF loop on the vertical levels to limit the memory use FOR k 0 jpk 1 DO BEGIN FOR m 0 3 DO BEGIN CASE ncdf_varinq cdfid msklist m ndims OF 3:ncdf_varget cdfid msklist m zzz offset 0 0 k count jpi jpj 1 4:ncdf_varget cdfid msklist m zzz offset 0 0 k 0 count jpi jpj 1 1 ENDCASE zzz byte temporary zzz zzz must contain only 0 or 1 zzz temporary zzz MOD 2 we transpose zzz because we need to work with the y dimension as the first dimension zzz transpose temporary zzz extend jpj to be a multiple of 8 jpjadd jpj_m 8 jpj IF jpjadd NE 0 THEN zzz temporary zzz bytarr jpjadd jpi reform zzz to look like output of binary pro zzz reform zzz 8 1 jpj_m jpi over convert into its byte form zzz inverse_binary temporary zzz ncdf_varput cdfidout msklist m transpose temporary zzz offset 0 0 k count jpi jpj_m 1 ENDFOR ENDFOR ncdf_close cdfid ncdf_close cdfidout RETURN END");25 a[23] = new Array("./Grid/n128gaussian.html", "n128gaussian.pro", "", " NAME:n128gaussian PURPOSE:compute the latitudes of the n128 gaussian grid See: http: www ecmwf int products data technical gaussian n128FIS html CATEGORY:grid CALLING SEQUENCE:lat n128gaussian 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 n128gaussian latitude reduced regular latitude number points points n128 1 18 512 89 46282 2 25 512 88 76695 3 36 512 88 06697 4 40 512 87 36606 5 45 512 86 66480 6 50 512 85 96337 7 60 512 85 26184 8 64 512 84 56026 9 72 512 83 85863 10 72 512 83 15698 11 80 512 82 45531 12 90 512 81 75363 13 90 512 81 05194 14 100 512 80 35023 15 108 512 79 64852 16 120 512 78 94681 17 120 512 78 24509 18 125 512 77 54336 19 128 512 76 84163 20 144 512 76 13990 21 144 512 75 43817 22 150 512 74 73644 23 160 512 74 03470 24 160 512 73 33296 25 180 512 72 63123 26 180 512 71 92949 27 180 512 71 22774 28 192 512 70 52600 29 192 512 69 82426 30 200 512 69 12252 31 216 512 68 42077 32 216 512 67 71903 33 216 512 67 01728 34 225 512 66 31554 35 240 512 65 61379 36 240 512 64 91204 37 240 512 64 21030 38 250 512 63 50855 39 250 512 62 80680 40 256 512 62 10505 41 270 512 61 40330 42 270 512 60 70156 43 288 512 59 99981 44 288 512 59 29806 45 288 512 58 59631 46 300 512 57 89456 47 300 512 57 19281 48 320 512 56 49106 49 320 512 55 78931 50 320 512 55 08756 51 320 512 54 38581 52 324 512 53 68406 53 360 512 52 98231 54 360 512 52 28056 55 360 512 51 57881 56 360 512 50 87705 57 360 512 50 17530 58 360 512 49 47355 59 360 512 48 77180 60 375 512 48 07005 61 375 512 47 36830 62 375 512 46 66655 63 375 512 45 96479 64 384 512 45 26304 65 384 512 44 56129 66 400 512 43 85954 67 400 512 43 15779 68 400 512 42 45604 69 400 512 41 75428 70 405 512 41 05253 71 432 512 40 35078 72 432 512 39 64903 73 432 512 38 94728 74 432 512 38 24552 75 432 512 37 54377 76 432 512 36 84202 77 432 512 36 14027 78 450 512 35 43851 79 450 512 34 73676 80 450 512 34 03501 n128 n128 81 450 512 33 33326 82 450 512 32 63150 83 480 512 31 92975 84 480 512 31 22800 85 480 512 30 52625 86 480 512 29 82449 87 480 512 29 12274 88 480 512 28 42099 89 480 512 27 71924 90 480 512 27 01748 91 480 512 26 31573 92 480 512 25 61398 93 486 512 24 91223 94 486 512 24 21047 95 486 512 23 50872 96 500 512 22 80697 97 500 512 22 10521 98 500 512 21 40346 99 500 512 20 70171 100 500 512 19 99996 101 500 512 19 29820 102 500 512 18 59645 103 512 512 17 89470 104 512 512 17 19294 105 512 512 16 49119 106 512 512 15 78944 107 512 512 15 08768 108 512 512 14 38593 109 512 512 13 68418 110 512 512 12 98243 111 512 512 12 28067 112 512 512 11 57892 113 512 512 10 87717 114 512 512 10 17541 115 512 512 9 47366 116 512 512 8 77191 117 512 512 8 07016 118 512 512 7 36840 119 512 512 6 66665 120 512 512 5 96490 121 512 512 5 26314 122 512 512 4 56139 123 512 512 3 85964 124 512 512 3 15788 125 512 512 2 45613 126 512 512 1 75438 127 512 512 1 05262 128 512 512 0 35087 n128 reform n128 4 128 over n128 reform n128 3 over n128 n128 reverse n128 return n128 end");26 a[24] = new Array("./Grid/n160gaussian.html", "n160gaussian.pro", "", " NAME:n160gaussian PURPOSE:compute the latitudes of the n160 gaussian grid See: http: www ecmwf int products data technical gaussian n160FIS html CATEGORY:grid CALLING SEQUENCE:lat n160gaussian 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 n160gaussian latitude reduced regular latitude number points points n160 1 18 640 89 57009 2 25 640 89 01318 3 36 640 88 45297 4 40 640 87 89203 5 45 640 87 33080 6 50 640 86 76944 7 60 640 86 20800 8 64 640 85 64651 9 72 640 85 08499 10 72 640 84 52345 11 80 640 83 96190 12 90 640 83 40033 13 90 640 82 83876 14 96 640 82 27718 15 108 640 81 71559 16 120 640 81 15400 17 120 640 80 59240 18 125 640 80 03080 19 128 640 79 46920 20 135 640 78 90760 21 144 640 78 34600 22 150 640 77 78439 23 160 640 77 22278 24 160 640 76 66117 25 180 640 76 09956 26 180 640 75 53795 27 180 640 74 97634 28 192 640 74 41473 29 192 640 73 85311 30 200 640 73 29150 31 216 640 72 72988 32 216 640 72 16827 33 225 640 71 60665 34 225 640 71 04504 35 240 640 70 48342 36 240 640 69 92181 37 243 640 69 36019 38 250 640 68 79857 39 256 640 68 23695 40 270 640 67 67534 41 270 640 67 11372 42 288 640 66 55210 43 288 640 65 99048 44 288 640 65 42886 45 300 640 64 86725 46 300 640 64 30563 47 320 640 63 74401 48 320 640 63 18239 49 320 640 62 62077 50 320 640 62 05915 51 324 640 61 49753 52 360 640 60 93591 53 360 640 60 37429 54 360 640 59 81267 55 360 640 59 25105 56 360 640 58 68943 57 360 640 58 12781 58 375 640 57 56619 59 375 640 57 00457 60 375 640 56 44295 61 384 640 55 88133 62 384 640 55 31971 63 400 640 54 75809 64 400 640 54 19647 65 400 640 53 63485 66 405 640 53 07323 67 432 640 52 51161 68 432 640 51 94999 69 432 640 51 38837 70 432 640 50 82675 71 432 640 50 26513 72 450 640 49 70351 73 450 640 49 14189 74 450 640 48 58026 75 450 640 48 01864 76 480 640 47 45702 77 480 640 46 89540 78 480 640 46 33378 79 480 640 45 77216 80 480 640 45 21054 n160 n160 81 480 640 44 64892 82 480 640 44 08730 83 500 640 43 52567 84 500 640 42 96405 85 500 640 42 40243 86 500 640 41 84081 87 500 640 41 27919 88 512 640 40 71757 89 512 640 40 15595 90 540 640 39 59433 91 540 640 39 03270 92 540 640 38 47108 93 540 640 37 90946 94 540 640 37 34784 95 540 640 36 78622 96 540 640 36 22460 97 540 640 35 66298 98 576 640 35 10136 99 576 640 34 53973 100 576 640 33 97811 101 576 640 33 41649 102 576 640 32 85487 103 576 640 32 29325 104 576 640 31 73163 105 576 640 31 17000 106 576 640 30 60838 107 576 640 30 04676 108 600 640 29 48514 109 600 640 28 92352 110 600 640 28 36190 111 600 640 27 80028 112 600 640 27 23865 113 600 640 26 67703 114 600 640 26 11541 115 600 640 25 55379 116 600 640 24 99217 117 640 640 24 43055 118 640 640 23 86892 119 640 640 23 30730 120 640 640 22 74568 121 640 640 22 18406 122 640 640 21 62244 123 640 640 21 06082 124 640 640 20 49919 125 640 640 19 93757 126 640 640 19 37595 127 640 640 18 81433 128 640 640 18 25271 129 640 640 17 69109 130 640 640 17 12946 131 640 640 16 56784 132 640 640 16 00622 133 640 640 15 44460 134 640 640 14 88298 135 640 640 14 32136 136 640 640 13 75973 137 640 640 13 19811 138 640 640 12 63649 139 640 640 12 07487 140 640 640 11 51325 141 640 640 10 95162 142 640 640 10 39000 143 640 640 9 82838 144 640 640 9 26676 145 640 640 8 70514 146 640 640 8 14352 147 640 640 7 58189 148 640 640 7 02027 149 640 640 6 45865 150 640 640 5 89703 151 640 640 5 33541 152 640 640 4 77379 153 640 640 4 21216 154 640 640 3 65054 155 640 640 3 08892 156 640 640 2 52730 157 640 640 1 96568 158 640 640 1 40405 159 640 640 0 84243 160 640 640 0 28081 n160 reform n160 4 160 over n160 reform n160 3 over n160 n160 reverse n160 return n160 end");27 a[25] = new Array("./Grid/n256gaussian.html", "n256gaussian.pro", "", " NAME:n256gaussian PURPOSE:compute the latitudes of the n256 gaussian grid See: http: www ecmwf int products data technical gaussian n256FIS html CATEGORY:grid CALLING SEQUENCE:lat n256gaussian 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 n256gaussian latitude reduced regular latitude number points points n256 1 18 1024 89 73115 2 25 1024 89 38287 3 32 1024 89 03254 4 40 1024 88 68175 5 45 1024 88 33077 6 50 1024 87 97972 7 60 1024 87 62861 8 64 1024 87 27748 9 72 1024 86 92632 10 72 1024 86 57515 11 75 1024 86 22398 12 81 1024 85 87279 13 90 1024 85 52160 14 96 1024 85 17041 15 100 1024 84 81921 16 108 1024 84 46801 17 120 1024 84 11681 18 120 1024 83 76560 19 125 1024 83 41440 20 135 1024 83 06319 21 144 1024 82 71198 22 150 1024 82 36077 23 160 1024 82 00956 24 160 1024 81 65835 25 180 1024 81 30714 26 180 1024 80 95593 27 180 1024 80 60471 28 192 1024 80 25350 29 192 1024 79 90229 30 200 1024 79 55107 31 216 1024 79 19986 32 216 1024 78 84864 33 216 1024 78 49743 34 225 1024 78 14621 35 240 1024 77 79500 36 240 1024 77 44378 37 243 1024 77 09256 38 250 1024 76 74135 39 256 1024 76 39013 40 270 1024 76 03891 41 270 1024 75 68770 42 288 1024 75 33648 43 288 1024 74 98526 44 288 1024 74 63405 45 300 1024 74 28283 46 300 1024 73 93161 47 320 1024 73 58040 48 320 1024 73 22918 49 320 1024 72 87796 50 324 1024 72 52674 51 360 1024 72 17552 52 360 1024 71 82431 53 360 1024 71 47309 54 360 1024 71 12187 55 360 1024 70 77065 56 360 1024 70 41944 57 375 1024 70 06822 58 375 1024 69 71700 59 384 1024 69 36578 60 384 1024 69 01456 61 400 1024 68 66334 62 400 1024 68 31213 63 400 1024 67 96091 64 432 1024 67 60969 65 432 1024 67 25847 66 432 1024 66 90725 67 432 1024 66 55603 68 432 1024 66 20482 69 450 1024 65 85360 70 450 1024 65 50238 71 450 1024 65 15116 72 480 1024 64 79994 73 480 1024 64 44872 74 480 1024 64 09750 75 480 1024 63 74629 76 480 1024 63 39507 77 486 1024 63 04385 78 500 1024 62 69263 79 500 1024 62 34141 80 500 1024 61 99019 n256 n256 81 512 1024 61 63897 82 512 1024 61 28776 83 540 1024 60 93654 84 540 1024 60 58532 85 540 1024 60 23410 86 540 1024 59 88288 87 540 1024 59 53166 88 576 1024 59 18044 89 576 1024 58 82922 90 576 1024 58 47800 91 576 1024 58 12679 92 576 1024 57 77557 93 576 1024 57 42435 94 600 1024 57 07313 95 600 1024 56 72191 96 600 1024 56 37069 97 600 1024 56 01947 98 600 1024 55 66825 99 640 1024 55 31703 100 640 1024 54 96581 101 640 1024 54 61460 102 640 1024 54 26338 103 640 1024 53 91216 104 640 1024 53 56094 105 640 1024 53 20972 106 640 1024 52 85850 107 648 1024 52 50728 108 675 1024 52 15606 109 675 1024 51 80484 110 675 1024 51 45362 111 675 1024 51 10241 112 675 1024 50 75119 113 675 1024 50 39997 114 720 1024 50 04875 115 720 1024 49 69753 116 720 1024 49 34631 117 720 1024 48 99509 118 720 1024 48 64387 119 720 1024 48 29265 120 720 1024 47 94143 121 720 1024 47 59021 122 720 1024 47 23899 123 729 1024 46 88778 124 729 1024 46 53656 125 750 1024 46 18534 126 750 1024 45 83412 127 750 1024 45 48290 128 750 1024 45 13168 129 750 1024 44 78046 130 768 1024 44 42924 131 768 1024 44 07802 132 768 1024 43 72680 133 768 1024 43 37558 134 800 1024 43 02436 135 800 1024 42 67315 136 800 1024 42 32193 137 800 1024 41 97071 138 800 1024 41 61949 139 800 1024 41 26827 140 800 1024 40 91705 141 800 1024 40 56583 142 810 1024 40 21461 143 810 1024 39 86339 144 864 1024 39 51217 145 864 1024 39 16095 146 864 1024 38 80973 147 864 1024 38 45851 148 864 1024 38 10730 149 864 1024 37 75608 150 864 1024 37 40486 151 864 1024 37 05364 152 864 1024 36 70242 153 864 1024 36 35120 154 864 1024 35 99998 155 864 1024 35 64876 156 864 1024 35 29754 157 864 1024 34 94632 158 900 1024 34 59510 159 900 1024 34 24388 160 900 1024 33 89266 n256 n256 161 900 1024 33 54145 162 900 1024 33 19023 163 900 1024 32 83901 164 900 1024 32 48779 165 900 1024 32 13657 166 900 1024 31 78535 167 900 1024 31 43413 168 900 1024 31 08291 169 960 1024 30 73169 170 960 1024 30 38047 171 960 1024 30 02925 172 960 1024 29 67803 173 960 1024 29 32681 174 960 1024 28 97559 175 960 1024 28 62438 176 960 1024 28 27316 177 960 1024 27 92194 178 960 1024 27 57072 179 960 1024 27 21950 180 960 1024 26 86828 181 960 1024 26 51706 182 960 1024 26 16584 183 960 1024 25 81462 184 960 1024 25 46340 185 960 1024 25 11218 186 960 1024 24 76096 187 960 1024 24 40974 188 960 1024 24 05852 189 960 1024 23 70731 190 960 1024 23 35609 191 972 1024 23 00487 192 972 1024 22 65365 193 972 1024 22 30243 194 972 1024 21 95121 195 972 1024 21 59999 196 1000 1024 21 24877 197 1000 1024 20 89755 198 1000 1024 20 54633 199 1000 1024 20 19511 200 1000 1024 19 84389 201 1000 1024 19 49267 202 1000 1024 19 14145 203 1000 1024 18 79023 204 1000 1024 18 43902 205 1000 1024 18 08780 206 1000 1024 17 73658 207 1000 1024 17 38536 208 1000 1024 17 03414 209 1000 1024 16 68292 210 1000 1024 16 33170 211 1000 1024 15 98048 212 1024 1024 15 62926 213 1024 1024 15 27804 214 1024 1024 14 92682 215 1024 1024 14 57560 216 1024 1024 14 22438 217 1024 1024 13 87316 218 1024 1024 13 52194 219 1024 1024 13 17073 220 1024 1024 12 81951 221 1024 1024 12 46829 222 1024 1024 12 11707 223 1024 1024 11 76585 224 1024 1024 11 41463 225 1024 1024 11 06341 226 1024 1024 10 71219 227 1024 1024 10 36097 228 1024 1024 10 00975 229 1024 1024 9 65853 230 1024 1024 9 30731 231 1024 1024 8 95609 232 1024 1024 8 60487 233 1024 1024 8 25365 234 1024 1024 7 90244 235 1024 1024 7 55122 236 1024 1024 7 20000 237 1024 1024 6 84878 238 1024 1024 6 49756 239 1024 1024 6 14634 240 1024 1024 5 79512 n256 n256 241 1024 1024 5 44390 242 1024 1024 5 09268 243 1024 1024 4 74146 244 1024 1024 4 39024 245 1024 1024 4 03902 246 1024 1024 3 68780 247 1024 1024 3 33658 248 1024 1024 2 98536 249 1024 1024 2 63415 250 1024 1024 2 28293 251 1024 1024 1 93171 252 1024 1024 1 58049 253 1024 1024 1 22927 254 1024 1024 0 87805 255 1024 1024 0 52683 256 1024 1024 0 17561 n256 reform n256 4 256 over n256 reform n256 3 over n256 n256 reverse n256 return n256 end");28 a[26] = new Array("./Grid/n48gaussian.html", "n48gaussian.pro", "", " 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 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 IF jpk EQ 1 THEN res reform res jpi 1 jpk over vmaskred transpose temporary res 1 0 2 vmaskred reform binary vmaskred 8 ny nx nz over vmaskred transpose temporary vmaskred 1 0 2 vmaskred reform vmaskred yyy1 MOD 8: 8 ny 8 yyy2 MOD 8 ENDIF ELSE BEGIN read_ncdf_varget vmaskred reform byte res over ENDELSE boudary conditions used to compute fmask 2 varcontient ncdf_varinq cdfid fmask name varcontient name IF micromask NE 1 THEN BEGIN read_ncdf_varget IF jpk EQ 1 THEN res reform res jpi 1 jpk over fmaskredx transpose temporary res 1 0 2 fmaskredx reform binary fmaskredx 8 ny nx nz over fmaskredx transpose temporary fmaskredx 1 0 2 fmaskredx reform fmaskredx yyy1 MOD 8: 8 ny 8 yyy2 MOD 8 iyminmesh iyminmeshtrue key_stride key_stridetrue ENDIF ELSE BEGIN read_ncdf_varget fmaskredx reform byte res over fmaskredx fmaskredx MOD 2 ENDELSE 1d arrays namevar e3t e3w gdept gdepw for i 0 n_elements namevar 1 do begin varcontient ncdf_varinq cdfid namevar i CASE n_elements varcontient dim OF 4:BEGIN commande ncdf_varget cdfid namevar i namevar i offset 0 0 izminmesh 0 count 1 1 jpk 1 if key_stride 2 NE 1 then commande commande stride 1 1 key_stride 2 1 END 2:BEGIN commande ncdf_varget cdfid namevar i namevar i offset izminmesh 0 count jpk 1 if key_stride 2 NE 1 then commande commande stride key_stride 2 END 1:BEGIN commande ncdf_varget cdfid namevar i namevar i offset izminmesh count jpk if key_stride 2 NE 1 then commande commande stride key_stride 2 END ENDCASE rien execute commande commande namevar i float namevar i rien execute commande commande if size namevar i n_dimension gt 0 then namevar i reform namevar i over rien execute commande ENDFOR ncdf_close cdfid Apply Glamboudary if keyword_set glamboundary AND key_onearth then BEGIN if glamboundary 0 NE glamboundary 1 then BEGIN glamt glamt MOD 360 smaller where glamt LT glamboundary 0 if smaller 0 NE 1 then glamt smaller glamt smaller 360 bigger where glamt GE glamboundary 1 if bigger 0 NE 1 then glamt bigger glamt bigger 360 glamu glamu MOD 360 smaller where glamu LT glamboundary 0 if smaller 0 NE 1 then glamu smaller glamu smaller 360 bigger where glamu GE glamboundary 1 if bigger 0 NE 1 then glamu bigger glamu bigger 360 glamv glamv MOD 360 smaller where glamv LT glamboundary 0 if smaller 0 NE 1 then glamv smaller glamv smaller 360 bigger where glamv GE glamboundary 1 if bigger 0 NE 1 then glamv bigger glamv bigger 360 glamf glamf MOD 360 smaller where glamf LT glamboundary 0 if smaller 0 NE 1 then glamf smaller glamf smaller 360 bigger where glamf GE glamboundary 1 if bigger 0 NE 1 then glamf bigger glamf bigger 360 toosmall where glamu EQ glamboundary 0 IF toosmall 0 NE 1 THEN glamu toosmall glamu toosmall 360 toosmall where glamf EQ glamboundary 0 IF toosmall 0 NE 1 THEN glamf toosmall glamf toosmall 360 endif endif make sure we do have 2d arrays when jpj eq 1 IF jpj EQ 1 THEN BEGIN glamt reform glamt jpi jpj over gphit reform gphit jpi jpj over e1t reform e1t jpi jpj over e2t reform e2t jpi jpj over glamu reform glamu jpi jpj over gphiu reform gphiu jpi jpj over e1u reform e1u jpi jpj over e2u reform e2u jpi jpj over glamv reform glamv jpi jpj over gphiv reform gphiv jpi jpj over e1v reform e1v jpi jpj over e2v reform e2v jpi jpj over glamf reform glamf jpi jpj over gphif reform gphif jpi jpj over e1f reform e1f jpi jpj over e2f reform e2f jpi jpj over IF keyword_set key_partialstep THEN BEGIN hdept reform hdept jpi jpj over hdepw reform hdepw jpi jpj over e3t_ps reform e3t_ps jpi jpj over e3w_ps reform e3w_ps jpi jpj over ENDIF ENDIF ixmindta ixmindtasauve iymindta iymindtasauve izmindta izmindtasauve widget_control noticebase bad_id nothing destroy key_yreverse 0 key_zreverse 0 key_gridtype c grid parameters used by xxx IF NOT keyword_set strcalling THEN BEGIN IF n_elements ccmeshparameters EQ 0 THEN strcalling ncdf_meshread ELSE strcalling ccmeshparameters filename ENDIF IF n_elements glamt GE 2 THEN BEGIN glaminfo moment glamt IF finite glaminfo 2 EQ 0 THEN glaminfo glaminfo 0:1 gphiinfo moment gphit IF finite gphiinfo 2 EQ 0 THEN gphiinfo gphiinfo 0:1 ENDIF ELSE BEGIN glaminfo glamt gphiinfo gphit ENDELSE ccmeshparameters filename:strcalling glaminfo:float string glaminfo format E11 4 gphiinfo:float string gphiinfo format E11 4 jpiglo:jpiglo jpjglo:jpjglo jpkglo:jpkglo jpi:jpi jpj:jpj jpk:jpk ixminmesh:ixminmesh ixmaxmesh:ixmaxmesh iyminmesh:iyminmesh iymaxmesh:iymaxmesh izminmesh:izminmesh izmaxmesh:izmaxmesh key_shift:key_shift key_periodic:key_periodic key_stride:key_stride key_gridtype:key_gridtype key_yreverse:key_yreverse key_zreverse:key_zreverse key_partialstep:key_partialstep key_onearth:key_onearth if keyword_set key_performance THEN print time ncdf_meshread systime 1 tempsun updateold return end");31 a[29] = new Array("./Grid/restoreboxparam.html", "restoreboxparam.pro", "", " 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 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 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 ENDPRO 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");23 a[21] = new Array("./Grid/computegrid.html", "computegrid.pro", "", " file_comments compute the grid parameters from cm_4mesh common: computegrid startx starty stepx stepy nx ny computegrid startx starty stepx stepy computegrid xaxis xaxis yaxis yaxis or a suitable mix horizontal parameters: glam tf gphi tf e1t and e2t and if FULLCGRID keyword is defined: glam uv gphi uv e1 uvf and e2 uvf verticals parameters: gdep tw e3 tw masks: tmask and if FULLCGRID keyword is defined: uv maskred fmaskred xy triangulation: triangles_list key_ parameters: key_shift key_periodic key_zreverse key_yreverse key_stride key_onearth key_partialstep categories grid param startx in required scalar x starting point param starty in required scalar y starting point param stepxin in required scalar or vector: x direction step must be 0 if vector nx is not used param stepyin in required scalar or vector: y direction step could be 0 south to north or lon1 and lon2 lon1 le 360 key_shift will be defined automaticaly computed according to glamboundary by using the FIRST LINE of glamt but key_shift will 0 only if key_periodic 1 keyword MASK to specify the mask with a 2 or 3 dimension array keyword ONEARTH 0 or 1 to force the manual definition of key_onearth to specify if the data are on earth use longitude latitude etc By default key_onearth 1 note that ONEARTH 0 forces PERIODIC 0 SHIFT 0 and is cancelling GLAMBOUNDARY keyword PERIODIC 0 or 1 to force the manual definition of key_periodic By default key_periodic is automaticaly computed by using the first line of glamt keyword PLAIN force PERIODIC 0 SHIFT 0 STRIDE 1 1 1 and suppress the automatic redefinition of the domain in case of x periodicity overlap y periodicity overlap ORCA type only and mask border to 0 keyword SHIFT scalar to force the manual definition of key_shift By debault key_shift is automaticaly computed according to glamboundary when defined by using the FIRST LINE of glamt if key_periodic 0 then in any case key_shift 0 keyword STRCALLING a string containing the calling command used to call computegrid this is used by xxx pro keyword STRIDE a 3 elements vector to specify the stride in x y z direction Default definition is 1 1 1 The resulting value will be stored in the common cm_4mesh variable key_stride keyword XAXIS to specify longitude1 with a 1 or 2 dimension array in this case startx stepx and nx are not used but could be necessary if the y axis is not defined with yaxis It must be possible to sort the first line of xaxis in the increasing order by shifting its elements keyword YAXIS to specify latitudes with a 1 or 2 dimension array in this case starty stepy and ny are not used but starty and stepy could be necessary if the x axis is not defined with xaxis It must be sorted in the increasing or deceasing order along each column if 2d array keyword XYINDEX activate to specify that the horizontal grid should be simply defined by using the index of the points xaxis findgen nx and yaxis findgen ny using this keyword forces key_onearth 0 keyword XMINMESH keyword YMINMESH keyword ZMINMESH to define the common variables i xyz minmesh used to define the grid only in a zoomed part of the original grid Defaut values are 0L max value is XYZ MAXMESH keyword XMAXMESH keyword YMAXMESH keyword ZMAXMESH to define the common variables i xyz maxmesh used to define the grid only in a zoomed part of the original grid Defaut values are jp ijk glo 1 max value is jp ijk glo 1 if XYZ MAXMESH is negative then we define i xyz maxmesh as jp ijk glo 1 XYZ MAXMESH instead of XYZ MAXMESH keyword ZAXIS to specify the vertical axis with a 1 dimension array Must be sorted in the increasing or deceasing order uses cm_4mesh cm_4data cm_4cal restrictions if the grid has x y periodicity orverlap and or if the mask has 0 everywhere at the border like a close sea and if we did not activate plain and xminmesh xmaxmesh yminmesh ymaxmesh keywords are defined to their default values we redefine xminmesh xmaxmesh yminmesh ymaxmesh in order to reove the overlapping part and or to open the domain avoid ti be forced to use cell_fill 1 restrictions FUV points definition history Sebastien Masson smasson lodyc jussieu fr 2000 04 20 Sept 2004 several bug fixs to suit C grid type Aug 2005 rewritte almost everything PRO computegrid startx starty stepxin stepyin nxin nyin XAXIS xaxis YAXIS yaxis ZAXIS zaxis MASK mask GLAMBOUNDARY glamboundary XMINMESH xminmesh XMAXMESH xmaxmesh YMINMESH yminmesh YMAXMESH ymaxmesh ZMINMESH zminmesh ZMAXMESH zmaxmesh ONEARTH onearth PERIODIC periodic PLAIN plain SHIFT shift STRIDE stride FULLCGRID fullcgrid XYINDEX xyindex FBASE2TBASE fbase2tbase STRCALLING strcalling _extra ex cm_4mesh cm_4data cm_4cal IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF time1 systime 1 for key_performance Check input parameters xaxis related parameters if n_elements xaxis NE 0 then BEGIN CASE size xaxis 0 OF 0:nx 1L 1:nx size xaxis 1 2:nx size xaxis 1 ENDCASE ENDIF ELSE BEGIN IF n_elements startx EQ 0 THEN BEGIN dummy report If xaxis is not given startx must be defined return ENDIF CASE n_elements stepxin OF 0:BEGIN dummy report If xaxis is not given stepxin must be defined return END 1:BEGIN IF n_elements nxin EQ 0 THEN BEGIN dummy report If xaxis is not given and stepxin has only one element nx must be defined return ENDIF ELSE nx nxin END ELSE:nx n_elements stepxin ENDCASE ENDELSE yaxis related parameters if n_elements yaxis NE 0 then BEGIN CASE size yaxis 0 OF 0:ny 1L 1:ny size yaxis 1 2:ny size yaxis 2 ENDCASE ENDIF ELSE BEGIN IF n_elements starty EQ 0 THEN BEGIN dummy report If yaxis is not given starty must be defined return ENDIF CASE n_elements stepyin OF 0:BEGIN dummy report If yaxis is not given stepyin must be defined return END 1:BEGIN IF n_elements nyin EQ 0 THEN BEGIN dummy report If yaxis is not given and stepyin has only one element ny must be defined return ENDIF ELSE ny nyin END ELSE:ny n_elements stepyin ENDCASE ENDELSE zaxis related parameters if n_elements zaxis NE 0 then BEGIN CASE size zaxis 0 OF 0:nz 1L 1:nz size zaxis 1 ELSE:BEGIN print not coded stop END ENDCASE ENDIF ELSE nz 1L Others automatic definitions jpiglo long nx jpjglo long ny jpkglo long nz impact of plain keyword: IF keyword_set plain THEN BEGIN periodic 0 shift 0 stride 1 1 1 ENDIF IF n_elements xminmesh NE 0 THEN ixminmesh long xminmesh 0 ELSE ixminmesh 0l IF n_elements xmaxmesh NE 0 THEN ixmaxmesh long xmaxmesh 0 ELSE ixmaxmesh jpiglo 1 IF n_elements yminmesh NE 0 THEN iyminmesh long yminmesh 0 ELSE iyminmesh 0l IF n_elements ymaxmesh NE 0 THEN iymaxmesh long ymaxmesh 0 ELSE iymaxmesh jpjglo 1 IF n_elements zminmesh NE 0 THEN izminmesh long zminmesh 0 ELSE izminmesh 0l IF n_elements zmaxmesh NE 0 THEN izmaxmesh long zmaxmesh 0 ELSE izmaxmesh jpkglo 1 iymaxmesh iymaxmesh keyword_set fbase2tbase IF ixmaxmesh LT 0 THEN ixmaxmesh jpiglo 1 ixmaxmesh IF iymaxmesh LT 0 THEN iymaxmesh jpjglo 1 iymaxmesh IF izmaxmesh LT 0 THEN izmaxmesh jpkglo 1 izmaxmesh avoid basics errors ixmaxmesh 0 ixmaxmesh ixminmesh iymaxmesh iyminmesh izmaxmesh izminmesh temporary glamf gphif temporary glamu gphiu temporary glamv gphiv gdept stepz 2 ENDIF ELSE BEGIN stepz 1 gdepw gdept ENDELSE e3 tw : e3t stepz IF n_elements stepz GT 1 THEN BEGIN e3w 0 5 stepz shift stepz 1 e3w 0 0 5 e3t 0 ENDIF ELSE e3w e3t Mask defaut mask eq 1 if NOT keyword_set mask then mask 1 if mask 0 NE 1 then BEGIN tmask byte mask ixminmesh:ixmaxmesh iyminmesh:iymaxmesh izminmesh:izmaxmesh tmask reform tmask jpi jpj jpk over if key_shift NE 0 then tmask shift tmask key_shift 0 0 because tmask reverse tmask 2 is not working if the 3rd dimension of tmask 1 we call reform IF jpk EQ 1 THEN tmask reform tmask over IF key_yreverse EQ 1 THEN tmask reverse tmask 2 IF jpk EQ 1 THEN tmask reform tmask jpi jpj jpk over IF key_zreverse EQ 1 THEN tmask reverse tmask 3 IF jpk EQ 1 THEN tmask reform tmask jpi jpj jpk over IF keyword_set fullcgrid THEN BEGIN IF keyword_set key_periodic THEN BEGIN msk tmask shift tmask 1 0 0 umaskred msk jpi 1 ENDIF ELSE umaskred tmask jpi 1 vmaskred tmask jpj 1 fmaskredy tmask jpi 1 fmaskredx tmask jpj 1 ENDIF ENDIF ELSE BEGIN tmask replicate 1b jpi jpj jpk IF keyword_set fullcgrid THEN BEGIN umaskred replicate 1b jpj jpk vmaskred replicate 1b jpi jpk fmaskredy replicate 1b jpj jpk fmaskredx replicate 1b jpi jpk ENDIF ENDELSE IF jpi GT 2 AND jpj GT 2 AND NOT keyword_set plain AND ixminmesh EQ 0l AND ixmaxmesh eq jpiglo 1 AND iyminmesh EQ 0l AND iymaxmesh eq jpjglo 1 AND total tmask 0 EQ 0 AND total tmask jpj 1 EQ 0 AND total tmask 0 EQ 0 AND total tmask jpi 1 EQ 0 THEN BEGIN xminmesh 1 xmaxmesh 1 yminmesh 1 ymaxmesh 1 computegrid XAXIS glamt YAXIS gphit ZAXIS zaxis MASK mask GLAMBOUNDARY glamboundary XMINMESH xminmesh XMAXMESH xmaxmesh YMINMESH yminmesh YMAXMESH ymaxmesh ZMINMESH zminmesh ZMAXMESH zmaxmesh ONEARTH onearth PERIODIC periodic PLAIN plain SHIFT shift STRIDE stride FULLCGRID fullcgrid XYINDEX xyindex FBASE2TBASE fbase2tbase STRCALLING strcalling _extra ex return ENDIF IF NOT keyword_set fullcgrid THEN BEGIN umaskred values f_nan vmaskred values f_nan fmaskredy values f_nan fmaskredx values f_nan ENDIF stride IF total key_stride GT 3 THEN BEGIN IF key_shift NE 0 THEN BEGIN for explanation see header of read_ncdf_varget pro jpiright key_shift jpileft jpi key_shift key_stride 0 1 key_shift 1 MOD key_stride 0 jpi jpiright 1 key_stride 0 1 jpileft 1 key_stride 0 1 ENDIF ELSE jpi jpi 1 key_stride 0 1 jpj jpj 1 key_stride 1 1 jpk jpk 1 key_stride 2 1 glamt temporary glamt 0: :stride 0 0: :stride 1 gphit temporary gphit 0: :stride 0 0: :stride 1 e1t temporary e1t 0: :stride 0 0: :stride 1 e2t temporary e2t 0: :stride 0 0: :stride 1 tmask temporary tmask 0: :stride 0 0: :stride 1 0: :stride 2 gdept gdept 0: :stride 2 gdepw gdepw 0: :stride 2 e3t e3t 0: :stride 2 e3w e3w 0: :stride 2 we must recompute glamf and gphif IF jpi GT 1 THEN BEGIN if keyword_set key_onearth AND keyword_set xnotsorted OR keyword_set key_periodic AND key_irregular then BEGIN stepxf glamt 720 MOD 360 stepxf shift stepxf 1 1 stepxf stepxf stepxf stepxf 360 stepxf 360 stepxf min abs stepxf dimension 3 IF NOT keyword_set key_periodic THEN stepxf jpi 1 stepxf jpi 2 ENDIF ELSE BEGIN stepxf shift glamt 1 1 glamt IF keyword_set key_periodic THEN stepxf jpi 1 360 stepxf jpi 1 ELSE stepxf jpi 1 stepxf jpi 2 ENDELSE IF jpj GT 1 THEN BEGIN stepxf jpj 1 stepxf jpj 2 stepxf jpi 1 jpj 1 stepxf jpi 2 jpj 2 ENDIF glamf glamt 0 5 stepxf ENDIF ELSE glamf glamt 0 5 IF jpj GT 1 THEN BEGIN we must compute stepyf: y distance between T i j T i 1 j 1 stepyf shift gphit 1 1 gphit stepyf jpj 1 stepyf jpj 2 IF jpi GT 1 THEN BEGIN if NOT keyword_set key_periodic THEN stepyf jpi 1 stepyf jpi 2 stepyf jpi 1 jpj 1 stepyf jpi 2 jpj 2 ENDIF gphif gphit 0 5 stepyf ENDIF ELSE gphif gphit 0 5 IF jpj EQ 1 THEN BEGIN glamt reform glamt jpi jpj over gphit reform gphit jpi jpj over glamf reform glamf jpi jpj over gphif reform gphif jpi jpj over e1t reform e1t jpi jpj over e2t reform e2t jpi jpj over ENDIF IF keyword_set fullcgrid THEN BEGIN glamu temporary glamu 0: :stride 0 0: :stride 1 gphiu temporary gphiu 0: :stride 0 0: :stride 1 e1u temporary e1u 0: :stride 0 0: :stride 1 e2u temporary e2u 0: :stride 0 0: :stride 1 glamv temporary glamv 0: :stride 0 0: :stride 1 gphiv temporary gphiv 0: :stride 0 0: :stride 1 e1v temporary e1v 0: :stride 0 0: :stride 1 e2v temporary e2v 0: :stride 0 0: :stride 1 e1f temporary e1f 0: :stride 0 0: :stride 1 e2f temporary e2f 0: :stride 0 0: :stride 1 umaskred temporary umaskred 0 0: :stride 1 0: :stride 2 vmaskred temporary vmaskred 0: :stride 0 0 0: :stride 2 fmaskredy temporary fmaskredy 0 0: :stride 1 0: :stride 2 fmaskredx temporary fmaskredx 0: :stride 0 0 0: :stride 2 IF jpj EQ 1 THEN BEGIN glamu reform glamu jpi jpj over gphiu reform gphiu jpi jpj over e1u reform e1u jpi jpj over e2u reform e2u jpi jpj over glamv reform glamv jpi jpj over gphiv reform gphiv jpi jpj over e1v reform e1v jpi jpj over e2v reform e2v jpi jpj over e1f reform e1f jpi jpj over e2f reform e2f jpi jpj over ENDIF ENDIF ENDIF apply all the grid parameters updateold domdef Triangulation IF total tmask EQ jpi jpj jpk AND NOT keyword_set key_irregular THEN triangles_list 1 ELSE BEGIN are we using ORCA2 IF jpiglo EQ 182 AND jpi EQ 181 AND jpjglo EQ 149 AND jpj EQ 148 THEN triangles_list triangule ELSE triangles_list triangule keep_cont ENDELSE time axis default definition IF n_elements time EQ 0 OR n_elements jpt EQ 0 THEN BEGIN jpt 1 time 0 ENDIF IF NOT keyword_set key_forgetold THEN BEGIN updateold ENDIF grid parameters used by xxx IF NOT keyword_set strcalling THEN BEGIN IF n_elements ccmeshparameters EQ 0 THEN strcalling computegrid ELSE strcalling ccmeshparameters filename ENDIF IF n_elements glamt GE 2 THEN BEGIN glaminfo moment glamt IF finite glaminfo 2 EQ 0 THEN glaminfo glaminfo 0:1 gphiinfo moment gphit IF finite gphiinfo 2 EQ 0 THEN gphiinfo gphiinfo 0:1 ENDIF ELSE BEGIN glaminfo glamt gphiinfo gphit ENDELSE ccmeshparameters filename:strcalling glaminfo:float string glaminfo format E11 4 gphiinfo:float string gphiinfo format E11 4 jpiglo:jpiglo jpjglo:jpjglo jpkglo:jpkglo jpi:jpi jpj:jpj jpk:jpk ixminmesh:ixminmesh ixmaxmesh:ixmaxmesh iyminmesh:iyminmesh iymaxmesh:iymaxmesh izminmesh:izminmesh izmaxmesh:izmaxmesh key_shift:key_shift key_periodic:key_periodic key_stride:key_stride key_gridtype:key_gridtype key_yreverse:key_yreverse key_zreverse:key_zreverse key_partialstep:key_partialstep key_onearth:key_onearth ccreadparameters funclec_name: read_ncdf jpidta:jpidta jpjdta:jpjdta jpkdta:jpkdta ixmindta:ixmindta ixmaxdta:ixmaxdta iymindta:iymindta iymaxdta:iymaxdta izmindta:izmindta izmaxdta:izmaxdta IF keyword_set key_performance EQ 1 THEN print time computegrid systime 1 time1 return end "); 24 a[22] = new Array("./Grid/micromeshmask.html", "micromeshmask.pro", "", " file_comments reduce the size of the NetCDF meshmask created by OPA by using bit and not byte format for the masks and the foat format for the other fields categories for OPA meshmask files examples IDL reducencmeshmask ncfilein ncfileout examples IDL meshdir d1fes2 raid2 smasson DATA ORCA05 IDL micromeshmask meshmask_ORCA_R05 nc iodir meshdir history July 2004 Sebastien Masson smasson lodyc jussieu fr PRO ncdf_transfer inid outid inname outname IF n_elements outname EQ 0 THEN outname inname ncdf_varget inid inname zzz ncdf_varput outid outname float reform zzz over RETURN END keyword IODIR to define the files path param ncfilein in required 1 the name of the meshmask file to be reduced In that case there is only one meshmask file OR 2 the xxx part in the names: xxx mesh_hgr nc xxx mesh_zgr nc xxx mask nc In that case the meshmask is split into 3 files param ncfileout in required the name of the uniq reduced meshmask file default definition is micromeshmask nc PRO micromeshmask ncfilein ncfileout IODIR iodir filein isafile FILE ncfilein IODIR iodir NEW test findfile filein 0 IF test EQ THEN BEGIN filein_hgr findfile filein mesh_hgr nc 0 filein_zgr findfile filein mesh_zgr nc 0 filein_msk findfile filein mask nc 0 IF filein_hgr EQ OR filein_zgr EQ OR filein_msk EQ THEN BEGIN print meshmask file s not found print filein does not exist print filein mesh_hgr nc does not exist print filein mesh_zgr nc does not exist print filein mask nc does not exist return ENDIF ENDIF ELSE filein test get the horizontal dimensions IF n_elements filein_hgr NE 0 THEN cdfid ncdf_open filein_hgr ELSE cdfid ncdf_open filein ncdf_diminq cdfid x name jpi ncdf_diminq cdfid y name jpj for the mask we use its byte representation its y dimension will be extended to be a multiple of 8 then it will be divided by 8 if jpj mod 8 eq 0 the jpj_m jpi 8 else jpj_m jpi 8 1 jpj_m jpj 7 8 get the vertical dimensions IF n_elements filein_zgr NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_zgr ENDIF listdims strlowcase ncdf_listdims cdfid IF where listdims EQ z 0 NE 1 THEN ncdf_diminq cdfid z name jpk ELSE BEGIN dimid where strmid listdims 0 5 EQ depth 0 IF dimid NE 1 THEN ncdf_diminq cdfid dimid name jpk ELSE BEGIN report We could not find the vertical dimension its name must be z or start with depth return ENDELSE ENDELSE get the variables list related to the partial steps varlist_ps ncdf_listvars cdfid varlist_ps strtrim strlowcase varlist_ps 2 define the output file IF n_elements ncfileout EQ 0 THEN ncfileout micromeshmask nc cdfidout ncdf_create isafile FILE ncfileout IODIR iodir NEW clobber ncdf_control cdfidout nofill dimension dimidx ncdf_dimdef cdfidout x jpi dimidy ncdf_dimdef cdfidout y jpj dimidy_m ncdf_dimdef cdfidout y_m jpj_m dimidz ncdf_dimdef cdfidout z jpk global attributs ncdf_attput cdfidout IDL_Program_Name micromeshmask pro GLOBAL ncdf_attput cdfidout Creation_Date systime GLOBAL declaration des variables varid lonarr 20 horizontal variables hgrlist glamt glamu glamv glamf gphit gphiu gphiv gphif e1t e1u e1v e1f e2t e2u e2v e2f FOR h 0 n_elements hgrlist 1 DO varid h ncdf_vardef cdfidout hgrlist h dimidx dimidy float vertical variables zgrlist e3t e3w gdept gdepw FOR z 0 n_elements zgrlist 1 DO varid 16 z ncdf_vardef cdfidout zgrlist z dimidz float variables related to the partial steps IF where varlist_ps EQ hdept 0 NE 1 THEN varid varid ncdf_vardef cdfidout hdept dimidx dimidy float IF where varlist_ps EQ hdepw 0 NE 1 THEN varid varid ncdf_vardef cdfidout hdepw dimidx dimidy float old variable name keep for compatibility with old run Change e3tp to e3t_ps IF where varlist_ps EQ e3tp 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3t_ps dimidx dimidy float old variable name keep for compatibility with old run Change e3wp to e3w_ps IF where varlist_ps EQ e3wp 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3w_ps dimidx dimidy float IF where varlist_ps EQ e3t_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3t_ps dimidx dimidy float IF where varlist_ps EQ e3w_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3w_ps dimidx dimidy float IF where varlist_ps EQ e3u_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3u_ps dimidx dimidy float IF where varlist_ps EQ e3v_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3v_ps dimidx dimidy float mask variable msklist tmask umask vmask fmask FOR m 0 n_elements msklist 1 DO BEGIN varid varid ncdf_vardef cdfidout msklist m dimidx dimidy_m dimidz byte ncdf_attput cdfidout varid n_elements varid 1 Comment the mask is stored as bit You must use the binary representation of the byte to get back the data ENDFOR ncdf_control cdfidout endef get the horizontal variables IF n_elements filein_hgr NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_hgr ENDIF FOR h 0 n_elements hgrlist 1 DO ncdf_transfer cdfid cdfidout hgrlist h get the vertical variables IF n_elements filein_zgr NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_zgr ENDIF FOR z 0 n_elements zgrlist 1 DO ncdf_transfer cdfid cdfidout zgrlist z partial step variables IF where varlist_ps EQ hdept 0 NE 1 THEN ncdf_transfer cdfid cdfidout hdept IF where varlist_ps EQ hdepw 0 NE 1 THEN ncdf_transfer cdfid cdfidout hdepw IF where varlist_ps EQ e3tp 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3tp e3t_ps IF where varlist_ps EQ e3wp 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3wp e3w_ps IF where varlist_ps EQ e3t_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3t_ps IF where varlist_ps EQ e3w_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3w_ps IF where varlist_ps EQ e3u_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3u_ps IF where varlist_ps EQ e3v_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3v_ps mask IF n_elements filein_msk NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_msk ENDIF loop on the vertical levels to limit the memory use FOR k 0 jpk 1 DO BEGIN FOR m 0 3 DO BEGIN CASE ncdf_varinq cdfid msklist m ndims OF 3:ncdf_varget cdfid msklist m zzz offset 0 0 k count jpi jpj 1 4:ncdf_varget cdfid msklist m zzz offset 0 0 k 0 count jpi jpj 1 1 ENDCASE zzz byte temporary zzz zzz must contain only 0 or 1 zzz temporary zzz MOD 2 we transpose zzz because we need to work with the y dimension as the first dimension zzz transpose temporary zzz extend jpj to be a multiple of 8 jpjadd jpj_m 8 jpj IF jpjadd NE 0 THEN zzz temporary zzz bytarr jpjadd jpi reform zzz to look like output of binary pro zzz reform zzz 8 1 jpj_m jpi over convert into its byte form zzz inverse_binary temporary zzz ncdf_varput cdfidout msklist m transpose temporary zzz offset 0 0 k count jpi jpj_m 1 ENDFOR ENDFOR ncdf_close cdfid ncdf_close cdfidout RETURN END"); 25 a[23] = new Array("./Grid/n128gaussian.html", "n128gaussian.pro", "", " file_comments compute the latitudes of the n128 gaussian grid See: http: www ecmwf int products data technical gaussian n128FIS html categories grid examples IDL lat n128gaussian returns a 1d array history Sebastien Masson smasson lodyc jussieu fr June 2004 FUNCTION n128gaussian latitude reduced regular latitude number points points n128 1 18 512 89 46282 2 25 512 88 76695 3 36 512 88 06697 4 40 512 87 36606 5 45 512 86 66480 6 50 512 85 96337 7 60 512 85 26184 8 64 512 84 56026 9 72 512 83 85863 10 72 512 83 15698 11 80 512 82 45531 12 90 512 81 75363 13 90 512 81 05194 14 100 512 80 35023 15 108 512 79 64852 16 120 512 78 94681 17 120 512 78 24509 18 125 512 77 54336 19 128 512 76 84163 20 144 512 76 13990 21 144 512 75 43817 22 150 512 74 73644 23 160 512 74 03470 24 160 512 73 33296 25 180 512 72 63123 26 180 512 71 92949 27 180 512 71 22774 28 192 512 70 52600 29 192 512 69 82426 30 200 512 69 12252 31 216 512 68 42077 32 216 512 67 71903 33 216 512 67 01728 34 225 512 66 31554 35 240 512 65 61379 36 240 512 64 91204 37 240 512 64 21030 38 250 512 63 50855 39 250 512 62 80680 40 256 512 62 10505 41 270 512 61 40330 42 270 512 60 70156 43 288 512 59 99981 44 288 512 59 29806 45 288 512 58 59631 46 300 512 57 89456 47 300 512 57 19281 48 320 512 56 49106 49 320 512 55 78931 50 320 512 55 08756 51 320 512 54 38581 52 324 512 53 68406 53 360 512 52 98231 54 360 512 52 28056 55 360 512 51 57881 56 360 512 50 87705 57 360 512 50 17530 58 360 512 49 47355 59 360 512 48 77180 60 375 512 48 07005 61 375 512 47 36830 62 375 512 46 66655 63 375 512 45 96479 64 384 512 45 26304 65 384 512 44 56129 66 400 512 43 85954 67 400 512 43 15779 68 400 512 42 45604 69 400 512 41 75428 70 405 512 41 05253 71 432 512 40 35078 72 432 512 39 64903 73 432 512 38 94728 74 432 512 38 24552 75 432 512 37 54377 76 432 512 36 84202 77 432 512 36 14027 78 450 512 35 43851 79 450 512 34 73676 80 450 512 34 03501 n128 n128 81 450 512 33 33326 82 450 512 32 63150 83 480 512 31 92975 84 480 512 31 22800 85 480 512 30 52625 86 480 512 29 82449 87 480 512 29 12274 88 480 512 28 42099 89 480 512 27 71924 90 480 512 27 01748 91 480 512 26 31573 92 480 512 25 61398 93 486 512 24 91223 94 486 512 24 21047 95 486 512 23 50872 96 500 512 22 80697 97 500 512 22 10521 98 500 512 21 40346 99 500 512 20 70171 100 500 512 19 99996 101 500 512 19 29820 102 500 512 18 59645 103 512 512 17 89470 104 512 512 17 19294 105 512 512 16 49119 106 512 512 15 78944 107 512 512 15 08768 108 512 512 14 38593 109 512 512 13 68418 110 512 512 12 98243 111 512 512 12 28067 112 512 512 11 57892 113 512 512 10 87717 114 512 512 10 17541 115 512 512 9 47366 116 512 512 8 77191 117 512 512 8 07016 118 512 512 7 36840 119 512 512 6 66665 120 512 512 5 96490 121 512 512 5 26314 122 512 512 4 56139 123 512 512 3 85964 124 512 512 3 15788 125 512 512 2 45613 126 512 512 1 75438 127 512 512 1 05262 128 512 512 0 35087 n128 reform n128 4 128 over n128 reform n128 3 over n128 n128 reverse n128 return n128 end"); 26 a[24] = new Array("./Grid/n160gaussian.html", "n160gaussian.pro", "", " file_comments compute the latitudes of the n160 gaussian grid See: http: www ecmwf int products data technical gaussian n160FIS html categories grid examples IDL lat n160gaussian returns a 1d array history Sebastien Masson smasson lodyc jussieu fr June 2004 FUNCTION n160gaussian latitude reduced regular latitude number points points n160 1 18 640 89 57009 2 25 640 89 01318 3 36 640 88 45297 4 40 640 87 89203 5 45 640 87 33080 6 50 640 86 76944 7 60 640 86 20800 8 64 640 85 64651 9 72 640 85 08499 10 72 640 84 52345 11 80 640 83 96190 12 90 640 83 40033 13 90 640 82 83876 14 96 640 82 27718 15 108 640 81 71559 16 120 640 81 15400 17 120 640 80 59240 18 125 640 80 03080 19 128 640 79 46920 20 135 640 78 90760 21 144 640 78 34600 22 150 640 77 78439 23 160 640 77 22278 24 160 640 76 66117 25 180 640 76 09956 26 180 640 75 53795 27 180 640 74 97634 28 192 640 74 41473 29 192 640 73 85311 30 200 640 73 29150 31 216 640 72 72988 32 216 640 72 16827 33 225 640 71 60665 34 225 640 71 04504 35 240 640 70 48342 36 240 640 69 92181 37 243 640 69 36019 38 250 640 68 79857 39 256 640 68 23695 40 270 640 67 67534 41 270 640 67 11372 42 288 640 66 55210 43 288 640 65 99048 44 288 640 65 42886 45 300 640 64 86725 46 300 640 64 30563 47 320 640 63 74401 48 320 640 63 18239 49 320 640 62 62077 50 320 640 62 05915 51 324 640 61 49753 52 360 640 60 93591 53 360 640 60 37429 54 360 640 59 81267 55 360 640 59 25105 56 360 640 58 68943 57 360 640 58 12781 58 375 640 57 56619 59 375 640 57 00457 60 375 640 56 44295 61 384 640 55 88133 62 384 640 55 31971 63 400 640 54 75809 64 400 640 54 19647 65 400 640 53 63485 66 405 640 53 07323 67 432 640 52 51161 68 432 640 51 94999 69 432 640 51 38837 70 432 640 50 82675 71 432 640 50 26513 72 450 640 49 70351 73 450 640 49 14189 74 450 640 48 58026 75 450 640 48 01864 76 480 640 47 45702 77 480 640 46 89540 78 480 640 46 33378 79 480 640 45 77216 80 480 640 45 21054 n160 n160 81 480 640 44 64892 82 480 640 44 08730 83 500 640 43 52567 84 500 640 42 96405 85 500 640 42 40243 86 500 640 41 84081 87 500 640 41 27919 88 512 640 40 71757 89 512 640 40 15595 90 540 640 39 59433 91 540 640 39 03270 92 540 640 38 47108 93 540 640 37 90946 94 540 640 37 34784 95 540 640 36 78622 96 540 640 36 22460 97 540 640 35 66298 98 576 640 35 10136 99 576 640 34 53973 100 576 640 33 97811 101 576 640 33 41649 102 576 640 32 85487 103 576 640 32 29325 104 576 640 31 73163 105 576 640 31 17000 106 576 640 30 60838 107 576 640 30 04676 108 600 640 29 48514 109 600 640 28 92352 110 600 640 28 36190 111 600 640 27 80028 112 600 640 27 23865 113 600 640 26 67703 114 600 640 26 11541 115 600 640 25 55379 116 600 640 24 99217 117 640 640 24 43055 118 640 640 23 86892 119 640 640 23 30730 120 640 640 22 74568 121 640 640 22 18406 122 640 640 21 62244 123 640 640 21 06082 124 640 640 20 49919 125 640 640 19 93757 126 640 640 19 37595 127 640 640 18 81433 128 640 640 18 25271 129 640 640 17 69109 130 640 640 17 12946 131 640 640 16 56784 132 640 640 16 00622 133 640 640 15 44460 134 640 640 14 88298 135 640 640 14 32136 136 640 640 13 75973 137 640 640 13 19811 138 640 640 12 63649 139 640 640 12 07487 140 640 640 11 51325 141 640 640 10 95162 142 640 640 10 39000 143 640 640 9 82838 144 640 640 9 26676 145 640 640 8 70514 146 640 640 8 14352 147 640 640 7 58189 148 640 640 7 02027 149 640 640 6 45865 150 640 640 5 89703 151 640 640 5 33541 152 640 640 4 77379 153 640 640 4 21216 154 640 640 3 65054 155 640 640 3 08892 156 640 640 2 52730 157 640 640 1 96568 158 640 640 1 40405 159 640 640 0 84243 160 640 640 0 28081 n160 reform n160 4 160 over n160 reform n160 3 over n160 n160 reverse n160 return n160 end"); 27 a[25] = new Array("./Grid/n256gaussian.html", "n256gaussian.pro", "", " file_comments compute the latitudes of the n256 gaussian grid See: http: www ecmwf int products data technical gaussian n256FIS html categories grid examples IDL lat n256gaussian returns a 1d array history Sebastien Masson smasson lodyc jussieu fr June 2004 FUNCTION n256gaussian latitude reduced regular latitude number points points n256 1 18 1024 89 73115 2 25 1024 89 38287 3 32 1024 89 03254 4 40 1024 88 68175 5 45 1024 88 33077 6 50 1024 87 97972 7 60 1024 87 62861 8 64 1024 87 27748 9 72 1024 86 92632 10 72 1024 86 57515 11 75 1024 86 22398 12 81 1024 85 87279 13 90 1024 85 52160 14 96 1024 85 17041 15 100 1024 84 81921 16 108 1024 84 46801 17 120 1024 84 11681 18 120 1024 83 76560 19 125 1024 83 41440 20 135 1024 83 06319 21 144 1024 82 71198 22 150 1024 82 36077 23 160 1024 82 00956 24 160 1024 81 65835 25 180 1024 81 30714 26 180 1024 80 95593 27 180 1024 80 60471 28 192 1024 80 25350 29 192 1024 79 90229 30 200 1024 79 55107 31 216 1024 79 19986 32 216 1024 78 84864 33 216 1024 78 49743 34 225 1024 78 14621 35 240 1024 77 79500 36 240 1024 77 44378 37 243 1024 77 09256 38 250 1024 76 74135 39 256 1024 76 39013 40 270 1024 76 03891 41 270 1024 75 68770 42 288 1024 75 33648 43 288 1024 74 98526 44 288 1024 74 63405 45 300 1024 74 28283 46 300 1024 73 93161 47 320 1024 73 58040 48 320 1024 73 22918 49 320 1024 72 87796 50 324 1024 72 52674 51 360 1024 72 17552 52 360 1024 71 82431 53 360 1024 71 47309 54 360 1024 71 12187 55 360 1024 70 77065 56 360 1024 70 41944 57 375 1024 70 06822 58 375 1024 69 71700 59 384 1024 69 36578 60 384 1024 69 01456 61 400 1024 68 66334 62 400 1024 68 31213 63 400 1024 67 96091 64 432 1024 67 60969 65 432 1024 67 25847 66 432 1024 66 90725 67 432 1024 66 55603 68 432 1024 66 20482 69 450 1024 65 85360 70 450 1024 65 50238 71 450 1024 65 15116 72 480 1024 64 79994 73 480 1024 64 44872 74 480 1024 64 09750 75 480 1024 63 74629 76 480 1024 63 39507 77 486 1024 63 04385 78 500 1024 62 69263 79 500 1024 62 34141 80 500 1024 61 99019 n256 n256 81 512 1024 61 63897 82 512 1024 61 28776 83 540 1024 60 93654 84 540 1024 60 58532 85 540 1024 60 23410 86 540 1024 59 88288 87 540 1024 59 53166 88 576 1024 59 18044 89 576 1024 58 82922 90 576 1024 58 47800 91 576 1024 58 12679 92 576 1024 57 77557 93 576 1024 57 42435 94 600 1024 57 07313 95 600 1024 56 72191 96 600 1024 56 37069 97 600 1024 56 01947 98 600 1024 55 66825 99 640 1024 55 31703 100 640 1024 54 96581 101 640 1024 54 61460 102 640 1024 54 26338 103 640 1024 53 91216 104 640 1024 53 56094 105 640 1024 53 20972 106 640 1024 52 85850 107 648 1024 52 50728 108 675 1024 52 15606 109 675 1024 51 80484 110 675 1024 51 45362 111 675 1024 51 10241 112 675 1024 50 75119 113 675 1024 50 39997 114 720 1024 50 04875 115 720 1024 49 69753 116 720 1024 49 34631 117 720 1024 48 99509 118 720 1024 48 64387 119 720 1024 48 29265 120 720 1024 47 94143 121 720 1024 47 59021 122 720 1024 47 23899 123 729 1024 46 88778 124 729 1024 46 53656 125 750 1024 46 18534 126 750 1024 45 83412 127 750 1024 45 48290 128 750 1024 45 13168 129 750 1024 44 78046 130 768 1024 44 42924 131 768 1024 44 07802 132 768 1024 43 72680 133 768 1024 43 37558 134 800 1024 43 02436 135 800 1024 42 67315 136 800 1024 42 32193 137 800 1024 41 97071 138 800 1024 41 61949 139 800 1024 41 26827 140 800 1024 40 91705 141 800 1024 40 56583 142 810 1024 40 21461 143 810 1024 39 86339 144 864 1024 39 51217 145 864 1024 39 16095 146 864 1024 38 80973 147 864 1024 38 45851 148 864 1024 38 10730 149 864 1024 37 75608 150 864 1024 37 40486 151 864 1024 37 05364 152 864 1024 36 70242 153 864 1024 36 35120 154 864 1024 35 99998 155 864 1024 35 64876 156 864 1024 35 29754 157 864 1024 34 94632 158 900 1024 34 59510 159 900 1024 34 24388 160 900 1024 33 89266 n256 n256 161 900 1024 33 54145 162 900 1024 33 19023 163 900 1024 32 83901 164 900 1024 32 48779 165 900 1024 32 13657 166 900 1024 31 78535 167 900 1024 31 43413 168 900 1024 31 08291 169 960 1024 30 73169 170 960 1024 30 38047 171 960 1024 30 02925 172 960 1024 29 67803 173 960 1024 29 32681 174 960 1024 28 97559 175 960 1024 28 62438 176 960 1024 28 27316 177 960 1024 27 92194 178 960 1024 27 57072 179 960 1024 27 21950 180 960 1024 26 86828 181 960 1024 26 51706 182 960 1024 26 16584 183 960 1024 25 81462 184 960 1024 25 46340 185 960 1024 25 11218 186 960 1024 24 76096 187 960 1024 24 40974 188 960 1024 24 05852 189 960 1024 23 70731 190 960 1024 23 35609 191 972 1024 23 00487 192 972 1024 22 65365 193 972 1024 22 30243 194 972 1024 21 95121 195 972 1024 21 59999 196 1000 1024 21 24877 197 1000 1024 20 89755 198 1000 1024 20 54633 199 1000 1024 20 19511 200 1000 1024 19 84389 201 1000 1024 19 49267 202 1000 1024 19 14145 203 1000 1024 18 79023 204 1000 1024 18 43902 205 1000 1024 18 08780 206 1000 1024 17 73658 207 1000 1024 17 38536 208 1000 1024 17 03414 209 1000 1024 16 68292 210 1000 1024 16 33170 211 1000 1024 15 98048 212 1024 1024 15 62926 213 1024 1024 15 27804 214 1024 1024 14 92682 215 1024 1024 14 57560 216 1024 1024 14 22438 217 1024 1024 13 87316 218 1024 1024 13 52194 219 1024 1024 13 17073 220 1024 1024 12 81951 221 1024 1024 12 46829 222 1024 1024 12 11707 223 1024 1024 11 76585 224 1024 1024 11 41463 225 1024 1024 11 06341 226 1024 1024 10 71219 227 1024 1024 10 36097 228 1024 1024 10 00975 229 1024 1024 9 65853 230 1024 1024 9 30731 231 1024 1024 8 95609 232 1024 1024 8 60487 233 1024 1024 8 25365 234 1024 1024 7 90244 235 1024 1024 7 55122 236 1024 1024 7 20000 237 1024 1024 6 84878 238 1024 1024 6 49756 239 1024 1024 6 14634 240 1024 1024 5 79512 n256 n256 241 1024 1024 5 44390 242 1024 1024 5 09268 243 1024 1024 4 74146 244 1024 1024 4 39024 245 1024 1024 4 03902 246 1024 1024 3 68780 247 1024 1024 3 33658 248 1024 1024 2 98536 249 1024 1024 2 63415 250 1024 1024 2 28293 251 1024 1024 1 93171 252 1024 1024 1 58049 253 1024 1024 1 22927 254 1024 1024 0 87805 255 1024 1024 0 52683 256 1024 1024 0 17561 n256 reform n256 4 256 over n256 reform n256 3 over n256 n256 reverse n256 return n256 end"); 28 a[26] = new Array("./Grid/n48gaussian.html", "n48gaussian.pro", "", " file_comments compute the latitudes of the n48 gaussian grid See: http: www ecmwf int products data technical gaussian n48FIS html categories grid examples IDL lat n48gaussian returns a 1d array history Sebastien Masson smasson lodyc jussieu fr June 2004 FUNCTION n48gaussian latitude reduced regular latitude number points points n48 1 20 192 88 57216 2 25 192 86 72253 3 36 192 84 86197 4 40 192 82 99894 5 45 192 81 13497 6 50 192 79 27055 7 60 192 77 40588 8 60 192 75 54106 9 72 192 73 67613 10 75 192 71 81113 11 80 192 69 94608 12 90 192 68 08099 13 96 192 66 21587 14 100 192 64 35073 15 108 192 62 48557 16 120 192 60 62039 17 120 192 58 75520 18 120 192 56 89001 19 128 192 55 02480 20 135 192 53 15959 21 144 192 51 29437 22 144 192 49 42915 23 160 192 47 56392 24 160 192 45 69869 25 160 192 43 83345 26 160 192 41 96822 27 160 192 40 10297 28 180 192 38 23773 29 180 192 36 37249 30 180 192 34 50724 31 180 192 32 64199 32 180 192 30 77674 33 192 192 28 91149 34 192 192 27 04623 35 192 192 25 18098 36 192 192 23 31573 37 192 192 21 45047 38 192 192 19 58521 39 192 192 17 71996 40 192 192 15 85470 41 192 192 13 98944 42 192 192 12 12418 43 192 192 10 25892 44 192 192 8 39366 45 192 192 6 52840 46 192 192 4 66314 47 192 192 2 79788 48 192 192 0 93262 n48 reform n48 4 48 over n48 reform n48 3 over n48 n48 reverse n48 return n48 end"); 29 a[27] = new Array("./Grid/n80gaussian.html", "n80gaussian.pro", "", " file_comments compute the latitudes of the n80 gaussian grid See: http: www ecmwf int products data technical gaussian n80FIS html categories grid examples IDL lat n80gaussian returns a 1d array history Sebastien Masson smasson lodyc jussieu fr June 2004 FUNCTION n80gaussian latitude reduced regular latitude number points points n80 1 18 320 89 14152 2 25 320 88 02943 3 36 320 86 91077 4 40 320 85 79063 5 45 320 84 66992 6 54 320 83 54895 7 60 320 82 42782 8 64 320 81 30659 9 72 320 80 18531 10 72 320 79 06398 11 80 320 77 94262 12 90 320 76 82124 13 96 320 75 69984 14 100 320 74 57843 15 108 320 73 45701 16 120 320 72 33558 17 120 320 71 21414 18 128 320 70 09269 19 135 320 68 97124 20 144 320 67 84978 21 144 320 66 72833 22 150 320 65 60686 23 160 320 64 48540 24 160 320 63 36393 25 180 320 62 24246 26 180 320 61 12099 27 180 320 59 99952 28 192 320 58 87804 29 192 320 57 75657 30 200 320 56 63509 31 200 320 55 51361 32 216 320 54 39214 33 216 320 53 27066 34 216 320 52 14917 35 225 320 51 02769 36 225 320 49 90621 37 240 320 48 78473 38 240 320 47 66325 39 240 320 46 54176 40 256 320 45 42028 41 256 320 44 29879 42 256 320 43 17731 43 256 320 42 05582 44 288 320 40 93434 45 288 320 39 81285 46 288 320 38 69137 47 288 320 37 56988 48 288 320 36 44839 49 288 320 35 32691 50 288 320 34 20542 51 288 320 33 08393 52 288 320 31 96244 53 300 320 30 84096 54 300 320 29 71947 55 300 320 28 59798 56 300 320 27 47649 57 320 320 26 35500 58 320 320 25 23351 59 320 320 24 11203 60 320 320 22 99054 61 320 320 21 86905 62 320 320 20 74756 63 320 320 19 62607 64 320 320 18 50458 65 320 320 17 38309 66 320 320 16 26160 67 320 320 15 14011 68 320 320 14 01862 69 320 320 12 89713 70 320 320 11 77564 71 320 320 10 65415 72 320 320 9 53266 73 320 320 8 41117 74 320 320 7 28968 75 320 320 6 16819 76 320 320 5 04670 77 320 320 3 92521 78 320 320 2 80372 79 320 320 1 68223 80 320 320 0 56074 n80 reform n80 4 80 over n80 reform n80 3 over n80 n80 reverse n80 return n80 end"); 30 a[28] = new Array("./Grid/ncdf_meshread.html", "ncdf_meshread.pro", "", " file_comments read NetCDF meshmask file created by OPA categories grid reading examples IDL ncdf_meshread filename param filename in optional the name of the meshmask file to read Default is meshmask nc if this name does not contain any and if iodirectory keyword is not specify then the common variable iodir will be use to define the mesh file path keyword GLAMBOUNDARY a 2 elements vector lon1 lon2 the longitute boundaries that should be used to visualize the data lon2 lon1 lon2 lon1 le 360 key_shift will be automaticaly defined according to GLAMBOUNDARY keyword CHECKDAT Suppressed Use micromeshmask pro to create an appropriate meshmask keyword ONEARTH 0 or 1 to force the manual definition of key_onearth to specify if the data are on earth use longitude latitude etc By default key_onearth 1 note that ONEARTH 0 forces PERIODIC 0 SHIFT 0 and is cancelling GLAMBOUNDARY keyword PERIODIC 0 or 1 to force the manual definition of key_periodic By default key_periodic is automaticaly computed by using the first line of glamt keyword SHIFT to force the manual definition of key_shift By debault key_shift is automaticaly computed according to the glamboundary when defined by using the first line of glamt if key_periodic 0 then in any case key_shift 0 keyword STRCALLING a string containing the calling command used to call computegrid this is used by xxx pro keyword STRIDE a 3 elements vector to specify the stride in x y z direction Default definition is key_stride The resulting value will be stored in the common cm_4mesh variable key_stride uses cm_4mesh cm_4data cm_4cal restrictions define and or use common variables from cm_4mesh cm_4data cm_4cal restrictions ixminmesh ixmaxmesh iyminmesh iymaxmesh izminmesh izmaxmesh must be defined febore calling ncdf_meshread if some of those value are equal to 1 they will be automatically defined history Sebastien Masson smasson lodyc jussieu fr 12 1999 July 2004 Sebastien Masson: Several modifications micromeshmask clean partial steps clean use of key_stride automatic definition of key_shift Oct 2004 Sebastien Masson: add PERIODIC and SHIFT Aug 2005 Sebastien Masson: some cleaning english PRO ncdf_meshread filename GLAMBOUNDARY glamboundary CHECKDAT checkdat ONEARTH onearth GETDIMENSIONS getdimensions PERIODIC periodic SHIFT shift STRIDE stride STRCALLING strcalling _EXTRA ex 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 a[29] = new Array("./Grid/restoreboxparam.html", "restoreboxparam.pro", "", " file_comments restore all the zoom parameters defined by calling domdef perviously defined by saveboxparam examples IDL restoreboxparam filename param filename in required a scalar string defining the file name uses cm_4mesh and cm_demomode_used if we are in demo mode restrictions all def_myuniquetmpdir if myuniquetmpdir is undefined: define create and add it to path history Sebastien Masson smasson lodyc jussieu fr July 2005 PRO restoreboxparam filename cm_4mesh IF lmgr demo EQ 1 THEN BEGIN if we are in demo mode we cannot save the parameters in a temporary file cm_demomode_used lon1 boxzoomparam bound 0 lon2 boxzoomparam bound 1 lat1 boxzoomparam bound 2 lat2 boxzoomparam bound 3 vert1 boxzoomparam bound 4 vert2 boxzoomparam bound 5 firstxt boxzoomparam indexes 0 lastxt boxzoomparam indexes 1 firstyt boxzoomparam indexes 2 lastyt boxzoomparam indexes 3 firstxu boxzoomparam indexes 4 lastxu boxzoomparam indexes 5 firstyu boxzoomparam indexes 6 lastyu boxzoomparam indexes 7 firstxv boxzoomparam indexes 8 lastxv boxzoomparam indexes 9 firstyv boxzoomparam indexes 10 lastyv boxzoomparam indexes 11 firstxf boxzoomparam indexes 12 lastxf boxzoomparam indexes 13 firstyf boxzoomparam indexes 14 lastyf boxzoomparam indexes 15 firstzt boxzoomparam indexes 16 lastzt boxzoomparam indexes 17 firstzw boxzoomparam indexes 18 lastzw boxzoomparam indexes 19 nxt boxzoomparam indexes 20 nyt boxzoomparam indexes 21 nxu boxzoomparam indexes 22 nyu boxzoomparam indexes 23 nxv boxzoomparam indexes 24 nyv boxzoomparam indexes 25 nxf boxzoomparam indexes 26 nyf boxzoomparam indexes 27 nzt boxzoomparam indexes 28 nzw boxzoomparam indexes 29 key_irregular boxzoomparam key boxzoomparam 1 ENDIF ELSE BEGIN restore myuniquetmpdir filename file_delete myuniquetmpdir filename ENDELSE updateold return end "); 32 a[30] = new Array("./Grid/saveboxparam.html", "saveboxparam.pro", "", " file_comments save all the zoom parameters defined by calling domdef in a file using save command located in myuniquetmpdir common variable defined by def_myuniquetmpdir examples IDL saveboxparam filename param filename in required a scalar string defining the file name uses cm_4mesh and cm_demomode_used if we are in demo mode restrictions call def_myuniquetmpdir if myuniquetmpdir is undefined: define create and add it to path history Sebastien Masson smasson lodyc jussieu fr June 2005 PRO saveboxparam filename cm_4mesh def_myuniquetmpdir IF lmgr demo EQ 1 THEN BEGIN if we are in demo mode we cannot save the parameters in a temporary file cm_demomode_used boxzoomparam bound: lon1 lon2 lat1 lat2 vert1 vert2 indexes: firstxt lastxt firstyt lastyt firstxu lastxu firstyu lastyu firstxv lastxv firstyv lastyv firstxf lastxf firstyf lastyf firstzt lastzt firstzw lastzw nxt nyt nxu nyu nxv nyv nxf nyf nzt nzw key:key_irregular ENDIF ELSE BEGIN save lon1 lon2 lat1 lat2 vert1 vert2 firstxt lastxt firstyt lastyt firstxu lastxu firstyu lastyu firstxv lastxv firstyv lastyv firstxf lastxf firstyf lastyf firstzt lastzt firstzw lastzw nxt nyt nxu nyu nxv nyv nxf nyf nzt nzw key_irregular filename myuniquetmpdir filename ENDELSE return end"); 33 a[31] = new Array("./Grid/smallmeshmask.html", "smallmeshmask.pro", "", " categories for OPA meshmask files history July 2004 Sebastien Masson smasson lodyc jussieu fr PRO ncdf_transfer inid outid inname outname IF n_elements outname EQ 0 THEN outname inname ncdf_varget inid inname zzz ncdf_varput outid outname float reform zzz over RETURN END file_comments reduce the size of the NetCDF meshmask created by OPA by using byte format for the masks and the foat format for the other fields keyword IODIR to define the files path param ncfilein in required 1 the name of the meshmask file to be reduced In that case there is only one meshmask file OR 2 the xxx part in the names: xxx mesh_hgr nc xxx mesh_zgr nc xxx mask nc In that case the meshmask is split into 3 files param ncfileout in optional the name of the reduced meshmask file default definition is smallmeshmask nc examples IDL meshdir d1fes2 raid2 smasson DATA ORCA05 IDL smallmeshmask meshmask_ORCA_R05 nc iodir meshdir categories for OPA meshmask files history July 2004 Sebastien Masson smasson lodyc jussieu fr PRO smallmeshmask ncfilein ncfileout IODIR iodir 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 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 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 "); … … 40 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 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 out1 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");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 in1 in required 1d or 2D arrays defining longitudes and latitudes param in2 in required 1d or 2D arrays defining longitudes and latitudes Note that these arrays are also outputs and can therefore be modified param in1 out the variable that will contain the longitudes param in2 out the variable that will contain the latitudes param in3 in the number of points in the longitudinal direction param in4 in the number of points in the latitudinal direction param in5 in 1 or 2 to specify if lon and lat should be 1D jpi or jpj arrays or 2D arrays jpi jpj Note that of n_dimensions 1 then the grid must be regular each longitudes must be the same for all latitudes and each latitudes should be the sae for all longitudes examples 1 ncdf_get_gridparams coordinates_ORCA_R05 nc glamt gphit olon olat jpio jpjo 2 2 ncdf_get_gridparams olon olat jpio jpjo 2 history November 2005: Sebastien Masson smasson lodyc jussieu fr PRO get_gridparams in1 in2 in3 in4 in5 in6 in7 in8 DOUBLE double file lonname latname lon lat jpi jpj n_dimensions lon lat jpi jpj n_dimensions 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 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 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"); … … 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"); 57 a[55] = new Array("./Obsolete/ficdate.html", "ficdate.pro", "", " file_comments sets s_fichier to name of the vairmer file associated to the given date in vairmer format yymmdd obsolete param vdate in date vairmer ex:930124 param dim in so ou vo par defaut so est choisi param nomexp in nom de l experience en trois lettres par defaut prefix returns le nom du fichier vairmer depuis iodir uses common pro example IDL fic ficdate 930124 history Jerome Vialard jv lodyc jussieu fr 1 7 98 function ficdate vdate dim nomexp common case n_params of 1: dim SO 2: dim strupcase dim 3: begin prefix nomexp dim strupcase dim end endcase constitution de l adresse ou aller chercher le fichier date yymmdd vdate sets month year and day to the good value : rien juldate vdate constitution de la date yymmdd case 1 of year lt 10: s_year 0 string format i1 year year ge 10 and year lt 100:s_year string format i2 year year ge 100:BEGIN year year 1900 if year LT 10 then s_year 0 string format i1 year ELSE s_year string format i2 year end endcase if month lt 10 then s_month 0 string format i1 month else s_month string format i2 month if day lt 10 then s_day 0 string format i1 day else s_day string format i2 day case dim of SO : begin case 1 of year eq 0 and month eq 0 : s_fichier iodir prefix O EX SO year eq 0 and month ne 0 and day eq 0 : s_fichier iodir prefix O SE SO s_month year ne 0 and month eq 0 : s_fichier iodir prefix O AN SO s_year year ne 0 and day eq 0 : s_fichier iodir prefix O MO SO s_year s_month else: s_fichier iodir prefix O SO s_year s_month s_day endcase end VO : begin case 1 of year eq 0 and month eq 0 : s_fichier iodir prefix O EX VO year eq 0 and month ne 0 and day eq 0 : s_fichier iodir prefix O SE VO s_month year ne 0 and month eq 0 : s_fichier iodir prefix O AN VO s_year year ne 0 and day eq 0 : s_fichier iodir prefix O MO VO s_year s_month else: s_fichier iodir prefix O VO s_year s_month s_day endcase end else: return report le fichier doit etre VO ou SO endcase print print adresse du fichier: fichier return s_fichier end ");58 a[56] = new Array("./Obsolete/fictype.html", "fictype.pro", "", " file_comments gives fictype DA MO AN SE EX corresponding to the given date in vairmer format yymmdd uses common pro exam mples IDL fictype fictype 930124 history Jerome Vialard jv lodyc jussieu fr 2 7 98 function fictype vdate dim common constitution de l adresse ou aller chercher le fichier date yymmdd vdate jul juldate vdate case 1 of year eq 0 and month eq 0 : return EX year eq 0 and month ne 0 and day eq 0 : return SE year ne 0 and month eq 0 : return AN year ne 0 and day eq 0 : return MO else : return DA endcase fini: return 1 end ");57 a[55] = new Array("./Obsolete/ficdate.html", "ficdate.pro", "", " file_comments sets s_fichier to name of the vairmer file associated to the given date in vairmer format yymmdd obsolete param vdate in date vairmer ex:930124 param dim in so ou vo par defaut so est choisi param nomexp in nom de l experience en trois lettres par defaut prefix returns le nom du fichier vairmer depuis iodir uses common pro examples IDL fic ficdate 930124 history Jerome Vialard jv lodyc jussieu fr 1 7 98 function ficdate vdate dim nomexp common case n_params of 1: dim SO 2: dim strupcase dim 3: begin prefix nomexp dim strupcase dim end endcase constitution de l adresse ou aller chercher le fichier date yymmdd vdate sets month year and day to the good value : rien juldate vdate constitution de la date yymmdd case 1 of year lt 10: s_year 0 string format i1 year year ge 10 and year lt 100:s_year string format i2 year year ge 100:BEGIN year year 1900 if year LT 10 then s_year 0 string format i1 year ELSE s_year string format i2 year end endcase if month lt 10 then s_month 0 string format i1 month else s_month string format i2 month if day lt 10 then s_day 0 string format i1 day else s_day string format i2 day case dim of SO : begin case 1 of year eq 0 and month eq 0 : s_fichier iodir prefix O EX SO year eq 0 and month ne 0 and day eq 0 : s_fichier iodir prefix O SE SO s_month year ne 0 and month eq 0 : s_fichier iodir prefix O AN SO s_year year ne 0 and day eq 0 : s_fichier iodir prefix O MO SO s_year s_month else: s_fichier iodir prefix O SO s_year s_month s_day endcase end VO : begin case 1 of year eq 0 and month eq 0 : s_fichier iodir prefix O EX VO year eq 0 and month ne 0 and day eq 0 : s_fichier iodir prefix O SE VO s_month year ne 0 and month eq 0 : s_fichier iodir prefix O AN VO s_year year ne 0 and day eq 0 : s_fichier iodir prefix O MO VO s_year s_month else: s_fichier iodir prefix O VO s_year s_month s_day endcase end else: return report le fichier doit etre VO ou SO endcase print print adresse du fichier: fichier return s_fichier end "); 58 a[56] = new Array("./Obsolete/fictype.html", "fictype.pro", "", " file_comments gives fictype DA MO AN SE EX corresponding to the given date in vairmer format yymmdd uses common pro examples IDL fictype fictype 930124 history Jerome Vialard jv lodyc jussieu fr 2 7 98 function fictype vdate dim common constitution de l adresse ou aller chercher le fichier date yymmdd vdate jul juldate vdate case 1 of year eq 0 and month eq 0 : return EX year eq 0 and month ne 0 and day eq 0 : return SE year ne 0 and month eq 0 : return AN year ne 0 and day eq 0 : return MO else : return DA endcase fini: return 1 end "); 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"); … … 70 70 a[68] = new Array("./Obsolete/nlecsaison.html", "nlecsaison.pro", "", " file_comments lit les moyennes annuelles sur maia: u rech eee reee217 TOTEM REF OUTPUTS obsolete categories lecture de NETCDF examples IDL res nlecsaison nom numsortie79 nbretps param nom in required nom du tableau contenant le champ que l on veut le trouver avec ncdflec fichier var param numsortie79 in required le numero du pas de temps que l on veut sortir du fichier compte a partir de 1 a partir de 79 param nbretps in required nombre de pas de temps a extraire keyword BOITE boite sur laquelle integrer par defaut tt le domaine keyword GRILLE impose la grille a laquelle est rapporte le champ rq permet d aller plus vite ds la lecture keyword TOUT oblige a lire le tableau entier en non pas celui reduit a domdef returns tableau 2d qd la serie ne fait que 1 pas de temps ou 3d valable ds 1 premier tps que pour les tableaux 2d uses common pro restrictions appele par nlec history Sebastien Masson smasson lodyc jussieu fr REF saisonnier climato grid T nc function nlecsaison nom numsortie79 nbretps BOITE boite GRILLE grille TOUT tout _EXTRA ex common res 1 anneedepart 1979 gestion du nom de la grille en testant les differentes possibilites et ouverture du fichier if keyword_set grille then begin vargrid grille nomfich prefix saisonnier climato grid vargrid nc IF version OS_FAMILY EQ unix THEN spawn file iodir nomfich dev null cdfid ncdf_open iodir nomfich varcontient ncdf_varinq cdfid nom endif else begin liste des fichiers pouvant convenir quelsfichiers findfile iodir prefix saisonnier climato grid IF quelsfichiers 0 EQ THEN liste vide return report LES FICHIERS: iodir prefix saisonnier climato grid n existe pas for i 0 n_elements quelsfichiers 1 do begin IF version OS_FAMILY EQ unix THEN spawn file quelsfichiers i dev null cdfid ncdf_open quelsfichiers i contient ncdf_inquire cdfid for varid 0 contient nvars 1 do BEGIN ds les fichiers existants on varcontient ncdf_varinq cdfid varid cherche le nom des variables if varcontient name eq nom then BEGIN vargrid strmid quelsfichiers i strpos quelsfichiers i grid 5 1 nom de grille goto grilletrouvee ENDIF endfor ncdf_close cdfid endfor return report La variable nom n existe pas ds les fichiers iodir prefix saisonnier climato grid endelse grilletrouvee: lecture de certains attributs et de l axe des temps ncdf_attget cdfid nom title value varname string value ncdf_attget cdfid nom units value varunit string value if rstrpos varname eq 1 then varname varname varunit varexp prefix lecture de l axe des temps ncdf_varget cdfid time_counter time offset numsortie79 1 count nbretps time long time julday 12 31 1978 jpt nbretps IF jpt EQ 1 THEN BEGIN IF numsortie79 EQ 13 THEN vardate CLIMATOLOGIE prefix ELSE begin vardate climato mensuelle strtrim numsortie79 1 endelse endif extraction du tableau qui nous interesse determination du domaine geographique if keyword_set tout then begin nx jpi ny jpj nz jpk glam 1 gphi 1 gdep 1 premierx 0 premiery 0 premierz 0 endif else BEGIN redefinition eventuelle du domaine ajuste a boite a 6 elements on recupere la dim du no9uveau domaine if keyword_set boite then BEGIN CASE N_Elements Boite Of 1:Domdef lon1 lon2 lat1 lat2 0 boite 0 GRILLE vargrid _EXTRA ex 2:Domdef lon1 lon2 lat1 lat2 boite 0 boite 1 GRILLE vargrid _EXTRA ex 4:Domdef Boite prof1 prof2 GRILLE vargrid _EXTRA ex 5:Domdef Boite 0:3 0 Boite 4 GRILLE vargrid _EXTRA ex 6:Domdef Boite GRILLE vargrid _EXTRA ex Else:return report Mauvaise Definition de Boite endcase ENDIF grille mask glam gphi gdep nx ny nz premierx premiery premierz ENDELSE if varcontient ndims eq 3 then ncdf_varget cdfid nom res offset premierx premiery numsortie79 1 count nx ny nbretps else ncdf_varget cdfid nom res offset premierx premiery premierz numsortie79 1 count nx ny nz nbretps ncdf_close cdfid return res end"); 71 71 a[69] = new Array("./Obsolete/nlecserie.html", "nlecserie.pro", "", " file_comments lit les series temporelles se rapportant a une variable sur maia: u rech eee reee217 TOTEM REF OUTPUTS obsolete categories lecture de NETCDF examples IDL res nlecserie nom date1 date2 param nom in required nom du tableau contenant le champ que l on veut le trouver avec ncdflec fichier var param date1 date2 in required les dates vermairs qui delimitent la serie temporelle keyword BOITE boite sur laquelle integrer par defaut tt le domaine keyword GRILLE impose la grille a laquelle est rapporte le champ rq permet d aller plus vite ds la lecture keyword TOUT oblige a lire le tableau entier en non pas celui reduit a domdef returns tableau 2d qd la serie ne fait que 1 pas de temps ou 3d valable ds 1 premier tps que pour les tableaux 2d uses common pro restrictions appele par nlec history Sebastien Masson smasson lodyc jussieu fr REF sss grid T nc function nlecserie nom date1 date2 BOITE boite GRILLE grille TOUT tout _EXTRA ex common res 1 anneedepart 1979 gestion du nom de la grille et ouverture du fichier liste des fichiers pouvant convenir quelsfichiers findfile iodir prefix nom grid IF quelsfichiers 0 EQ THEN BEGIN liste vide print LES FICHIERS: iodir prefix nom grid n existe pas return 1 ENDIF ELSE BEGIN vargrid strmid quelsfichiers 0 strpos quelsfichiers 0 grid 5 1 nom de grille IF version OS_FAMILY EQ unix THEN spawn file quelsfichiers 0 dev null cdfid ncdf_open quelsfichiers 0 ENDELSE lecture de certains attributs et de l axe des temps ncdf_attget cdfid nom title value varname string value ncdf_attget cdfid nom units value varunit string value if rstrpos varname eq 1 then varname varname varunit ncdf_attget cdfid file_name value global varexp string value varexp strmid varexp 0 strpos varexp lecture de l axe des temps en entier on ja reperer la place des dates debut et fin pour faire l extraction temporelle ncdf_varget cdfid time_counter time time long time julday 1 5 1979 debut where time EQ juldate date1 fin where time EQ juldate date2 debut where time EQ date1 fin where time EQ date2 if debut 0 EQ 1 then return report l axe des temps ne contient pas la date de debut strtrim date1 1 if fin 0 EQ 1 then return report l axe des temps ne contient pas la date de fin strtrim date2 1 time time debut 0 :fin 0 jpt fin 0 debut 0 1 IF jpt EQ 1 THEN BEGIN caldat time 0 month day year case 1 of year lt 10: s_year 0 string format i1 year year lt 100 and year ge 10 :s_year string format i2 year year ge 100: s_year string format i2 year 1900 endcase if month lt 10 then s_month 0 string format i1 month else s_month string format i2 month if day lt 10 then s_day 0 string format i1 day else s_day string format i2 day vardate s_year s_month s_day endif extraction du tableau qui nous interesse determination du domaine geographique if keyword_set tout then begin nx jpi ny jpj nz jpk premierx 0 premiery 0 premierz 0 endif else BEGIN redefinition eventuelle du domaine ajuste a boite a 6 elements on recupere la dim du no9uveau domaine if keyword_set boite then BEGIN Case N_Elements Boite Of 1:Domdef lon1 lon2 lat1 lat2 0 boite 0 GRILLE vargrid _EXTRA ex 2:Domdef lon1 lon2 lat1 lat2 boite 0 boite 1 GRILLE vargrid _EXTRA ex 4:Domdef Boite prof1 prof2 GRILLE vargrid _EXTRA ex 5:Domdef Boite 0:3 0 Boite 4 GRILLE vargrid _EXTRA ex 6:Domdef Boite GRILLE vargrid _EXTRA ex Else:return report Mauvaise Definition de Boite endcase ENDIF grille mask glam gphi gdep nx ny nz premierx premiery ENDELSE ncdf_varget cdfid nom res offset premierx premiery debut 0 count nx ny fin 0 debut 0 1 ncdf_close cdfid return res end"); 72 a[70] = new Array("./Obsolete/vairdate.html", "vairdate.pro", "", " file_comments gives vairmer date equivalent of a date in julian format sets month day and year to the corresp values obsolete file_comments you better use jul2date examples IDL vdate vairdate 1755087 param jdate in required date en jours juliens keyword MENSUEL a activer si on veut pour que les dates dont le jour est 15 deviennent avec un jour egale a 0 par ex: 19990115 19990100 keyword ANNUEL a activer si on veut pour que les dates dont le mois est 6 et dont le jour est 1 deviennent avec un mois et jour egale a 0 par ex: 19990601 19990000 returns vdate date vairmer plus year month et day uses common prohistory Jerome Vialard jv lodyc jussieu fr 2 7 98 13 9 1999 Sebastien Masson smasson lodyc jussieu fr ANNUEL MENSUEL _EXTRA et possibilite d utiliser vairdate avec des scalaire ou des tableaux function vairdate jdate ANNUEL annuel MENSUEL mensuel _EXTRA ex common caldat jdate month day year _EXTRA ex index where year eq 1 if index 0 NE 1 then year index 0 if keyword_set mensuel THEN BEGIN index where day EQ 15 if index 0 NE 1 then day index 0 endif if keyword_set annuel THEN BEGIN index where day EQ 1 AND month EQ 6 if index 0 NE 1 then BEGIN day index 0 month index 0 endif endif return 10000L year 100L month day end ");72 a[70] = new Array("./Obsolete/vairdate.html", "vairdate.pro", "", " file_comments gives vairmer date equivalent of a date in julian format sets month day and year to the corresp values obsolete file_comments you better use jul2date examples IDL vdate vairdate 1755087 param jdate in required date en jours juliens keyword MENSUEL a activer si on veut pour que les dates dont le jour est 15 deviennent avec un jour egale a 0 par ex: 19990115 19990100 keyword ANNUEL a activer si on veut pour que les dates dont le mois est 6 et dont le jour est 1 deviennent avec un mois et jour egale a 0 par ex: 19990601 19990000 returns vdate date vairmer plus year month et day uses common history Jerome Vialard jv lodyc jussieu fr 2 7 98 13 9 1999 Sebastien Masson smasson lodyc jussieu fr ANNUEL MENSUEL _EXTRA et possibilite d utiliser vairdate avec des scalaire ou des tableaux function vairdate jdate ANNUEL annuel MENSUEL mensuel _EXTRA ex common caldat jdate month day year _EXTRA ex index where year eq 1 if index 0 NE 1 then year index 0 if keyword_set mensuel THEN BEGIN index where day EQ 15 if index 0 NE 1 then day index 0 endif if keyword_set annuel THEN BEGIN index where day EQ 1 AND month EQ 6 if index 0 NE 1 then BEGIN day index 0 month index 0 endif endif return 10000L year 100L month day end "); 73 73 a[71] = new Array("./Obsolete/vraidate.html", "vraidate.pro", "", " file_comments donne la date en long obsolete param date in required une date du type yyyymmdd keyword GRADS if 1 le year le 49 then year 2000 year if 50 le year le 99 then year 1900 year returns une date vairmer du type yyyymmdd si year est nulle ou egale a 1 ne change rien examples IDL res vraidate date IDL vraidate 980703 donne 19980703 qui est un long history Sebastien Masson smasson lodyc jussieu fr 3 7 98 remove automatic change from year 1 to 1901 Aug 2004 function vraidate date GRADS grads _EXTRA ex IF NOT keyword_set GRADS THEN return long date date long date annee date 10000 return date 19000000L annee GE 50 and date lt 1000000 20000000L annee LT 50 and date lt 1000000 end"); 74 74 a[72] = new Array("./Postscript/closeps.html", "closeps.pro", "", " NAME: closeps PURPOSE: Close the Postscript mode CALLING SEQUENCE: closeps KEYWORD PARAMETERS: INFOWIDGET: A long integer giving the id of the information widget created by openps that we have de destroy at the end of closeps when the postscript is done COMMON BLOCKS: cm_4ps SIDE EFFECTS: when archive_ps ne 0 we add the name and the date at the bottom left corner of the postcript page If the postscript is called idl ps we change its name to number ps number automatically found to be 1 larger that any of the existing ps file MODIFICATION HISTORY: Sebastien Masson smasson lodyc jussieu fr 21 12 98 June 2005: Sebastien Masson english version with new commons PRO closeps INFOWIDGET infowidget IF lmgr demo EQ 1 THEN return include commons cm_4ps IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF IF d name NE PS THEN GOTO last_part if archive_ps 0 we will add its name and the date at the bottom left corner of the page in case if the postscript will be archived in printps IF keyword_set archive_ps THEN BEGIN we get the name of the latest created postscript psdir isadirectory psdir title Select psdir nameps file_search psdir ps test_regular test_write nosort dates file_info nameps mtime lastdate reverse sort temporary dates 0 nameps nameps lastdate nameps file_basename nameps ps If this name is idl ps then we change it to the number ps IF nameps EQ idl then BEGIN get the name of all the ps or ps gz files available in psdir allps file_search psdir ps ps gz pdf test_regular nosort allps file_basename file_basename allps gz ps allps file_basename allps pdf find which of these names corresponds to numbers get ascii codes of the names testnumb byte allps longest name maxstrlen size testnumb dimensions 0 ascii codes can be 0 or between byte 0 and byte 9 testnumb testnumb EQ 0 OR testnumb GE byte 0 0 AND testnumb LE byte 9 0 testnumb where total testnumb 1 EQ maxstrlen count IF count NE 0 THEN BEGIN get the largest number psnumber fix allps testnumb psnumber psnumber reverse sort psnumber 0 1 ENDIF ELSE psnumber 0 nameps strtrim psnumber 2 ENDIF we annote the postscript date byte systime 0 we get the date xyouts d x_px_cm d y_px_cm nameps string date 4:10 string date 20:23 device charsize 75 ENDIF close the postcript mode device close last_part: thisOS strupcase strmid version os_family 0 3 CASE thisOS of MAC : SET_PLOT thisOS WIN : SET_PLOT thisOS ELSE: SET_PLOT X ENDCASE def_myuniquetmpdir colorfile myuniquetmpdir original_colors dat IF file_test colorfile regular THEN BEGIN restore colorfile file_delete colorfile quiet reload the original colors tvlct red green blue ENDIF p font 1 force background color to the last color white p BACKGROUND d n_colors 1 255 p color 0 if d n_colors gt 256 then p background ffffff x if keyword_set infowidget then widget_control long infowidget bad_id toto destroy return end"); -
trunk/SRC/Grid/computegrid.pro
r74 r103 3 3 ;------------------------------------------------------------ 4 4 ;+ 5 ; NAME:computegrid 6 ; 7 ; PURPOSE:compute the grid parameters from cm_4mesh common: 5 ; 6 ; @file_comments compute the grid parameters from cm_4mesh common: 7 ; 8 ; computegrid, startx, starty, stepx, stepy, nx, ny 9 ; computegrid, startx, starty, stepx, stepy 10 ; computegrid, xaxis = xaxis, yaxis = yaxis 11 ; or a suitable mix... 8 12 ; 9 13 ; horizontal parameters: … … 24 28 ; key_stride, key_onearth, key_partialstep 25 29 ; 26 ; CATEGORY:grid 27 ; 28 ; CALLING SEQUENCE: 29 ; 30 ; computegrid, startx, starty, stepx, stepy, nx, ny 31 ; computegrid, startx, starty, stepx, stepy 32 ; computegrid, xaxis = xaxis, yaxis = yaxis 33 ; or a suitable mix... 34 ; 35 ; INPUTS: 36 ; startx:scalar, x starting point 37 ; starty:scalar, y starting point 38 ; stepx:scalar or vector: x direction step, must be > 0 30 ; @categories grid 31 ; 32 ; @param startx {in}{required} scalar, x starting point 33 ; @param starty {in}{required} scalar, y starting point 34 ; @param stepxin {in}{required} scalar or vector: x direction step, must be > 0 39 35 ; if vector nx is not used 40 ; stepy:scalar or vector: y direction step,36 ; @param stepyin {in}{required} scalar or vector: y direction step, 41 37 ; could be > 0 (south to north) or < 0 (north to south) 42 38 ; if vector ny is not used 43 ; nx:scalar, number of points in x direction 44 ; ny:scalar, number of points in y direction 45 ; 46 ; KEYWORD PARAMETERS: 47 ; 48 ; /FULLCGRID: activate to specify that you want to compute 39 ; @param nxin {in}{required} scalar, number of points in x direction 40 ; @param nyin {in}{required} scalar, number of points in y direction 41 ; 42 ; @keyword /FULLCGRID activate to specify that you want to compute 49 43 ; all the paremeters of a C grid. Computation of glam[uv], 50 44 ; gphi[uv], e1[uvf], e2[uvf], [uv]maskred and fmaskred[xy] 51 45 ; will be add to the default computations 52 46 ; 53 ; GLAMBOUNDARY:a 2 elements vector, [lon1,lon2], the longitute47 ; @keyword GLAMBOUNDARY a 2 elements vector, [lon1,lon2], the longitute 54 48 ; boundaries that should be used to visualize the data. 55 49 ; we must have lon2 > lon1 and lon2 - lon1 le 360 … … 58 52 ; key_shift will /= 0 only if key_periodic = 1 59 53 ; 60 ; MASK:to specify the mask with a 2 or 3 dimension array61 ; 62 ; ONEARTH = 0 or 1:to force the manual definition of54 ; @keyword MASK to specify the mask with a 2 or 3 dimension array 55 ; 56 ; @keyword ONEARTH = 0 or 1 to force the manual definition of 63 57 ; key_onearth (to specify if the data are on earth -> use longitude 64 58 ; /latitude etc...). By default, key_onearth = 1. … … 66 60 ; and is cancelling GLAMBOUNDARY 67 61 ; 68 ; PERIODIC = 0 or 1:to force the manual definition of62 ; @keyword PERIODIC = 0 or 1 to force the manual definition of 69 63 ; key_periodic. By default, key_periodic is automaticaly 70 64 ; computed by using the first line of glamt. 71 65 ; 72 ; /PLAIN:force PERIODIC = 0, SHIFT = 0, STRIDE = [1, 1, 1] and66 ; @keyword /PLAIN force PERIODIC = 0, SHIFT = 0, STRIDE = [1, 1, 1] and 73 67 ; suppress the automatic redefinition of the domain in case of 74 68 ; x periodicity overlap, y periodicity overlap (ORCA type only) 75 69 ; and mask border to 0. 76 70 ; 77 ; SHIFT = scalar to force the manual definition of key_shift. By71 ; @keyword SHIFT = scalar to force the manual definition of key_shift. By 78 72 ; debault, key_shift is automaticaly computed according to 79 73 ; glamboundary (when defined) by using the FIRST LINE of glamt. if 80 74 ; key_periodic=0 then in any case key_shift = 0. 81 75 ; 82 ; STRCALLING:a string containing the calling command used to76 ; @keyword STRCALLING a string containing the calling command used to 83 77 ; call computegrid (this is used by xxx.pro) 84 78 ; 85 ; STRIDE = :a 3 elements vector to specify the stride in x, y, z79 ; @keyword STRIDE a 3 elements vector to specify the stride in x, y, z 86 80 ; direction. Default definition is [1, 1, 1]. The resulting value 87 81 ; will be stored in the common (cm_4mesh) variable key_stride 88 82 ; 89 ; XAXIS:to specify longitude1 with a 1 or 2 dimension array, in83 ; @keyword XAXIS to specify longitude1 with a 1 or 2 dimension array, in 90 84 ; this case startx, stepx and nx are not used but could be 91 85 ; necessary if the y axis is not defined with yaxis. It must be … … 93 87 ; order by shifting its elements. 94 88 ; 95 ; YAXIS:to specify latitudes with a 1 or 2 dimension array, in89 ; @keyword YAXIS to specify latitudes with a 1 or 2 dimension array, in 96 90 ; this case starty, stepy and ny are not used but starty and 97 91 ; stepy could be necessary if the x axis is not defined with xaxis. … … 99 93 ; (along each column if 2d array). 100 94 ; 101 ; /XYINDEX:activate to specify that the horizontal grid should95 ; @keyword /XYINDEX activate to specify that the horizontal grid should 102 96 ; be simply defined by using the index of the points 103 97 ; (xaxis = findgen(nx) and yaxis = findgen(ny)) 104 98 ; using this keyword forces key_onearth=0 105 99 ; 106 ; [XYZ]MINMESH: to define the common variables i[xyz]minmesh 100 ; @keyword XMINMESH 101 ; @keyword YMINMESH 102 ; @keyword ZMINMESH 103 ; to define the common variables i[xyz]minmesh 107 104 ; used to define the grid only in a zoomed part of the original 108 105 ; grid. Defaut values are 0L, max value is [XYZ]MAXMESH 109 106 ; 110 ; [XYZ]MAXMESH: to define the common variables i[xyz]maxmesh 107 ; @keyword XMAXMESH 108 ; @keyword YMAXMESH 109 ; @keyword ZMAXMESH 110 ; to define the common variables i[xyz]maxmesh 111 111 ; used to define the grid only in a zoomed part of the original 112 112 ; grid. Defaut values are jp[ijk]glo-1, max value is … … 115 115 ; [XYZ]MAXMESH 116 116 ; 117 ; ZAXIS:to specify the vertical axis with a 1 dimension117 ; @keyword ZAXIS to specify the vertical axis with a 1 dimension 118 118 ; array. Must be sorted in the increasing or deceasing order 119 119 ; 120 ; OUTPUTS: 121 ; 122 ; COMMON BLOCKS: cm_4mesh cm_4data cm_4cal 123 ; 124 ; SIDE EFFECTS: if the grid has x/y periodicity orverlap and/or if 120 ; @uses cm_4mesh cm_4data cm_4cal 121 ; 122 ; @restrictions if the grid has x/y periodicity orverlap and/or if 125 123 ; the mask has 0 everywhere at the border (like a close sea) and 126 124 ; if (we did not activate /plain and xminmesh, xmaxmesh, yminmesh, … … 130 128 ; to use cell_fill = 1). 131 129 ; 132 ; RESTRICTIONS:FUV points definition... 133 ; 134 ; EXAMPLE: 135 ; 136 ; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr) 130 ; @restrictions FUV points definition... 131 ; 132 ; @history Sebastien Masson (smasson\@lodyc.jussieu.fr) 137 133 ; 2000-04-20 138 134 ; Sept 2004, several bug fixs to suit C grid type... -
trunk/SRC/Grid/micromeshmask.pro
r13 r103 1 1 ;+ 2 ; NAME: micromeshmask.pro 3 ; 4 ; PURPOSE: reduce the size of the NetCDF meshmask created by OPA by 2 ; 3 ; @file_comments reduce the size of the NetCDF meshmask created by OPA by 5 4 ; using bit (and not byte) format for the masks and the foat format 6 5 ; for the other fields. 7 6 ; 8 ; CATEGORY:for OPA meshmask files 9 ; 10 ; CALLING SEQUENCE: reducencmeshmask, ncfilein[, ncfileout] 11 ; 12 ; INPUTS: 13 ; ncfilein: 14 ; 1) the name of the meshmask file to be reduced. In that case, 15 ; there is only one meshmask file 16 ; 17 ; OR 18 ; 19 ; 2) the xxx part in the names: xxx.mesh_hgr.nc xxx.mesh_zgr.nc 20 ; xxx.mask.nc. In that case, the meshmask is split into 3 files. 21 ; 22 ; ncfileout: the name of the uniq reduced meshmask file. default 23 ; definition is micromeshmask.nc 24 ; 25 ; KEYWORD PARAMETERSSAT: 26 ; 27 ; IODIR:to define the files path. 28 ; 29 ; OUTPUTS: no 30 ; 31 ; COMMON BLOCKS: no 32 ; 33 ; EXAMPLE: 7 ; @categories for OPA meshmask files 8 ; 9 ; @examples 10 ; IDL> reducencmeshmask, ncfilein[, ncfileout] 11 ; 12 ; @examples 34 13 ; IDL> meshdir='/d1fes2-raid2/smasson/DATA/ORCA05/' 35 14 ; IDL> micromeshmask, 'meshmask_ORCA_R05.nc',iodir=meshdir 36 15 ; 37 ; MODIFICATION HISTORY:38 ; July 2004 Sebastien Masson (smasson @lodyc.jussieu.fr)16 ; @history 17 ; July 2004 Sebastien Masson (smasson\@lodyc.jussieu.fr) 39 18 ;- 40 19 ;------------------------------------------------------ … … 47 26 END 48 27 ; 28 ;+ 29 ; @keyword IODIR to define the files path. 30 ; @param ncfilein {in}{required} 31 ; 1) the name of the meshmask file to be reduced. In that case, 32 ; there is only one meshmask file 33 ; 34 ; OR 35 ; 36 ; 2) the xxx part in the names: xxx.mesh_hgr.nc xxx.mesh_zgr.nc 37 ; xxx.mask.nc. In that case, the meshmask is split into 3 files. 38 ; 39 ; @param ncfileout {in}{required} the name of the uniq reduced meshmask file. default 40 ; definition is micromeshmask.nc 41 ; 42 ;- 49 43 PRO micromeshmask, ncfilein, ncfileout, IODIR = iodir 50 44 ; -
trunk/SRC/Grid/n128gaussian.pro
r13 r103 1 1 ;+ 2 ; NAME:n128gaussian 3 ; 4 ; PURPOSE:compute the latitudes of the n128 gaussian grid. See: 2 ; @file_comments compute the latitudes of the n128 gaussian grid. See: 5 3 ; http://www.ecmwf.int/products/data/technical/gaussian/n128FIS.html 6 4 ; 7 ; CATEGORY:grid5 ; @categories grid 8 6 ; 9 ; CALLING SEQUENCE:lat=n128gaussian() 7 ; @examples 8 ; IDL> lat=n128gaussian() 10 9 ; 11 ; INPUTS:None10 ; @returns a 1d array 12 11 ; 13 ; KEYWORD PARAMETERS:None 14 ; 15 ; OUTPUTS:a 1d array 16 ; 17 ; COMMON BLOCKS:None 18 ; 19 ; SIDE EFFECTS:None 20 ; 21 ; RESTRICTIONS:None 22 ; 23 ; EXAMPLE: 24 ; 25 ; MODIFICATION HISTORY: 26 ; Sebastien Masson (smasson@lodyc.jussieu.fr) 12 ; @history 13 ; Sebastien Masson (smasson\@lodyc.jussieu.fr) 27 14 ; June 2004 28 15 ;- -
trunk/SRC/Grid/n160gaussian.pro
r13 r103 1 1 ;+ 2 ; NAME:n160gaussian3 2 ; 4 ; PURPOSE:compute the latitudes of the n160 gaussian grid. See:3 ; @file_comments compute the latitudes of the n160 gaussian grid. See: 5 4 ; http://www.ecmwf.int/products/data/technical/gaussian/n160FIS.html 6 5 ; 7 ; CATEGORY:grid6 ; @categories grid 8 7 ; 9 ; CALLING SEQUENCE:lat=n160gaussian() 8 ; @examples 9 ; IDL>lat=n160gaussian() 10 10 ; 11 ; INPUTS:None11 ; @returns a 1d array 12 12 ; 13 ; KEYWORD PARAMETERS:None 14 ; 15 ; OUTPUTS:a 1d array 16 ; 17 ; COMMON BLOCKS:None 18 ; 19 ; SIDE EFFECTS:None 20 ; 21 ; RESTRICTIONS:None 22 ; 23 ; EXAMPLE: 24 ; 25 ; MODIFICATION HISTORY: 26 ; Sebastien Masson (smasson@lodyc.jussieu.fr) 13 ; @history 14 ; Sebastien Masson (smasson\@lodyc.jussieu.fr) 27 15 ; June 2004 28 16 ;- -
trunk/SRC/Grid/n256gaussian.pro
r13 r103 1 1 ;+ 2 ; NAME:n256gaussian 3 ; 4 ; PURPOSE:compute the latitudes of the n256 gaussian grid. See: 2 ; 3 ; @file_comments compute the latitudes of the n256 gaussian grid. See: 5 4 ; http://www.ecmwf.int/products/data/technical/gaussian/n256FIS.html 6 5 ; 7 ; CATEGORY:grid 8 ; 9 ; CALLING SEQUENCE:lat=n256gaussian() 10 ; 11 ; INPUTS:None 12 ; 13 ; KEYWORD PARAMETERS:None 14 ; 15 ; OUTPUTS:a 1d array 16 ; 17 ; COMMON BLOCKS:None 18 ; 19 ; SIDE EFFECTS:None 20 ; 21 ; RESTRICTIONS:None 22 ; 23 ; EXAMPLE: 24 ; 25 ; MODIFICATION HISTORY: 26 ; Sebastien Masson (smasson@lodyc.jussieu.fr) 6 ; @categories grid 7 ; 8 ; @examples 9 ; IDL> lat=n256gaussian() 10 ; 11 ; @returns a 1d array 12 ; 13 ; @history 14 ; Sebastien Masson (smasson\@lodyc.jussieu.fr) 27 15 ; June 2004 28 16 ;- -
trunk/SRC/Grid/n48gaussian.pro
r13 r103 1 1 ;+ 2 ; NAME:n48gaussian3 2 ; 4 ; PURPOSE:compute the latitudes of the n48 gaussian grid. See:3 ; @file_comments compute the latitudes of the n48 gaussian grid. See: 5 4 ; http://www.ecmwf.int/products/data/technical/gaussian/n48FIS.html 6 5 ; 7 ; CATEGORY:grid6 ; @categories grid 8 7 ; 9 ; CALLING SEQUENCE:lat=n48gaussian() 8 ; @examples 9 ; IDL> lat=n48gaussian() 10 10 ; 11 ; INPUTS:None11 ; @returns a 1d array 12 12 ; 13 ; KEYWORD PARAMETERS:None 14 ; 15 ; OUTPUTS:a 1d array 16 ; 17 ; COMMON BLOCKS:None 18 ; 19 ; SIDE EFFECTS:None 20 ; 21 ; RESTRICTIONS:None 22 ; 23 ; EXAMPLE: 24 ; 25 ; MODIFICATION HISTORY: 26 ; Sebastien Masson (smasson@lodyc.jussieu.fr) 13 ; @history 14 ; Sebastien Masson (smasson\@lodyc.jussieu.fr) 27 15 ; June 2004 28 16 ;- -
trunk/SRC/Grid/n80gaussian.pro
r13 r103 1 1 ;+ 2 ; NAME:n80gaussian3 2 ; 4 ; PURPOSE:compute the latitudes of the n80 gaussian grid. See:3 ; @file_comments compute the latitudes of the n80 gaussian grid. See: 5 4 ; http://www.ecmwf.int/products/data/technical/gaussian/n80FIS.html 6 5 ; 7 ; CATEGORY:grid6 ; @categories grid 8 7 ; 9 ; CALLING SEQUENCE:lat=n80gaussian() 8 ; @examples 9 ; IDL> lat=n80gaussian() 10 10 ; 11 ; INPUTS:None11 ; @returns a 1d array 12 12 ; 13 ; KEYWORD PARAMETERS:None 14 ; 15 ; OUTPUTS:a 1d array 16 ; 17 ; COMMON BLOCKS:None 18 ; 19 ; SIDE EFFECTS:None 20 ; 21 ; RESTRICTIONS:None 22 ; 23 ; EXAMPLE: 24 ; 25 ; MODIFICATION HISTORY: 26 ; Sebastien Masson (smasson@lodyc.jussieu.fr) 13 ; @history 14 ; Sebastien Masson (smasson\@lodyc.jussieu.fr) 27 15 ; June 2004 28 16 ;- -
trunk/SRC/Grid/ncdf_meshread.pro
r98 r103 3 3 ;------------------------------------------------------------ 4 4 ;+ 5 ; NAME:ncdf_meshread6 ; 7 ; PURPOSE:read NetCDF meshmask file created by OPA8 ; 9 ; CATEGORY:grid reading10 ; 11 ; CALLING SEQUENCE:ncdf_meshread [,' filename']5 ; 6 ; @file_comments read NetCDF meshmask file created by OPA 7 ; 8 ; @categories grid reading 9 ; 10 ; @examples 11 ; IDL> ncdf_meshread [,' filename'] 12 12 ; 13 ; INPUTS: 14 ; 15 ; filename: the name of the meshmask file to read. Default is 13 ; @param filename {in}{optional} the name of the meshmask file to read. Default is 16 14 ; meshmask.nc. if this name does not contain any / and if 17 15 ; iodirectory keyword is not specify, then the common variable 18 16 ; iodir will be use to define the mesh file path. 19 20 ; KEYWORD PARAMETERS: 21 ; 22 ; GLAMBOUNDARY:a 2 elements vector, {lon1,lon2], the longitute 17 ; 18 ; @keyword GLAMBOUNDARY a 2 elements vector, {lon1,lon2], the longitute 23 19 ; boundaries that should be used to visualize the data. 24 20 ; lon2 > lon1 … … 26 22 ; key_shift will be automaticaly defined according to GLAMBOUNDARY. 27 23 ; 28 ; /CHECKDAT:Suppressed. Use micromeshmask.pro to create an24 ; @keyword /CHECKDAT Suppressed. Use micromeshmask.pro to create an 29 25 ; appropriate meshmask. 30 26 ; 31 ; ONEARTH = 0 or 1:to force the manual definition of27 ; @keyword ONEARTH = 0 or 1 to force the manual definition of 32 28 ; key_onearth (to specify if the data are on earth -> use longitude 33 29 ; /latitude etc...). By default, key_onearth = 1. … … 35 31 ; cancelling GLAMBOUNDARY 36 32 ; 37 ; PERIODIC = 0 or 1:to force the manual definition of33 ; @keyword PERIODIC = 0 or 1 to force the manual definition of 38 34 ; key_periodic. By default, key_periodic is automaticaly 39 35 ; computed by using the first line of glamt. 40 36 ; 41 ; SHIFT = :to force the manual definition of key_shift. By37 ; @keyword SHIFT to force the manual definition of key_shift. By 42 38 ; debault, key_shift is automaticaly computed according to the 43 39 ; glamboundary (when defined) by using the first line of glamt. if 44 40 ; key_periodic=0 then in any case key_shift = 0. 45 41 ; 46 ; STRCALLING:a string containing the calling command used to call42 ; @keyword STRCALLING a string containing the calling command used to call 47 43 ; computegrid (this is used by xxx.pro) 48 44 ; 49 ; STRIDE = :a 3 elements vector to specify the stride in x, y, z45 ; @keyword STRIDE a 3 elements vector to specify the stride in x, y, z 50 46 ; direction. Default definition is key_stride. The resulting value 51 47 ; will be stored in the common (cm_4mesh) variable key_stride 52 48 ; 53 ; 54 ; OUTPUTS:none 55 ; 56 ; COMMON BLOCKS: cm_4mesh, cm_4data, cm_4cal 57 ; 58 ; SIDE EFFECTS: define and/or use common variables from 49 ; @uses cm_4mesh cm_4data cm_4cal 50 ; 51 ; @restrictions define and/or use common variables from 59 52 ; cm_4mesh, cm_4data, cm_4cal 60 53 ; 61 ; RESTRICTIONS:54 ; @restrictions 62 55 ; 63 56 ; ixminmesh,ixmaxmesh,iyminmesh,iymaxmesh,izminmesh,izmaxmesh must … … 65 58 ; are equal to -1 they will be automatically defined 66 59 ; 67 ; EXAMPLE: 68 ; 69 ; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr) 60 ; @history Sebastien Masson (smasson\@lodyc.jussieu.fr) 70 61 ; 12/1999 71 62 ; July 2004, Sebastien Masson: Several modifications (micromeshmask, -
trunk/SRC/Grid/restoreboxparam.pro
r13 r103 3 3 ;------------------------------------------------------------ 4 4 ;+ 5 ; NAME: restoreboxparam6 5 ; 7 ; PURPOSE:restore all the zoom parameters (defined by calling domdef)6 ; @file_comments restore all the zoom parameters (defined by calling domdef) 8 7 ; perviously defined by saveboxparam 9 8 ; 10 ; CATEGORY: 9 ; @examples 10 ; IDL> restoreboxparam, filename 11 ; 12 ; @param filename {in}{required} a scalar string defining the file name 11 13 ; 12 ; CALLING SEQUENCE: restoreboxparam, filename 13 ; 14 ; INPUTS: filename a scalar string defining the file name 14 ; @uses cm_4mesh and cm_demomode_used if we are in demo mode 15 15 ; 16 ; KEYWORD PARAMETERS: none 17 ; 18 ; OUTPUTS:none 19 ; 20 ; COMMON BLOCKS: @cm_4mesh and @cm_demomode_used if we are in demo mode 21 ; 22 ; SIDE EFFECTS: call def_myuniquetmpdir, if myuniquetmpdir is undefined: 16 ; @restrictions all def_myuniquetmpdir, if myuniquetmpdir is undefined: 23 17 ; => define, create and add it to !path 24 18 ; 25 ; RESTRICTIONS: 26 ; 27 ; EXAMPLE: 28 ; 29 ; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr) 19 ; @history Sebastien Masson (smasson\@lodyc.jussieu.fr) 30 20 ; July 2005 31 21 ;- -
trunk/SRC/Grid/saveboxparam.pro
r13 r103 3 3 ;------------------------------------------------------------ 4 4 ;+ 5 ; NAME: saveboxparam6 5 ; 7 ; PURPOSE:save all the zoom parameters (defined by calling domdef)6 ; @file_comments save all the zoom parameters (defined by calling domdef) 8 7 ; in a file (using save command) located in myuniquetmpdir 9 8 ; (common variable defined by def_myuniquetmpdir) 10 9 ; 11 ; CATEGORY: 10 ; @examples 11 ; IDL> saveboxparam, filename 12 ; 13 ; @param filename {in}{required} a scalar string defining the file name 12 14 ; 13 ; CALLING SEQUENCE: saveboxparam, filename 14 ; 15 ; INPUTS: filename a scalar string defining the file name 15 ; @uses cm_4mesh and cm_demomode_used if we are in demo mode 16 16 ; 17 ; KEYWORD PARAMETERS: none 18 ; 19 ; OUTPUTS:none 20 ; 21 ; COMMON BLOCKS: @cm_4mesh and @cm_demomode_used if we are in demo mode 22 ; 23 ; SIDE EFFECTS: call def_myuniquetmpdir, if myuniquetmpdir is undefined: 17 ; @restrictions call def_myuniquetmpdir, if myuniquetmpdir is undefined: 24 18 ; => define, create and add it to !path 25 19 ; 26 ; RESTRICTIONS: 27 ; 28 ; EXAMPLE: 29 ; 30 ; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr) 20 ; @history Sebastien Masson (smasson\@lodyc.jussieu.fr) 31 21 ; June 2005 32 22 ;- -
trunk/SRC/Grid/smallmeshmask.pro
r13 r103 1 1 ;+ 2 ; NAME: smallmeshmask.pro 3 ; 4 ; PURPOSE: reduce the size of the NetCDF meshmask created by OPA by 5 ; using byte format for the masks and the foat format for the other 6 ; fields. 7 ; 8 ; CATEGORY:for OPA meshmask files 9 ; 10 ; CALLING SEQUENCE: smallmeshmask, ncfilein[, ncfileout] 11 ; 12 ; INPUTS: 13 ; ncfilein: 14 ; 1) the name of the meshmask file to be reduced. In that case, 15 ; there is only one meshmask file 16 ; 17 ; OR 18 ; 19 ; 2) the xxx part in the names: xxx.mesh_hgr.nc xxx.mesh_zgr.nc 20 ; xxx.mask.nc. In that case, the meshmask is split into 3 files. 21 ; 22 ; ncfileout: the name of the reduced meshmask file. default 23 ; definition is smallmeshmask.nc 24 ; 25 ; KEYWORD PARAMETERS: 26 ; 27 ; IODIR:to define the files path. 28 ; 29 ; OUTPUTS: no 30 ; 31 ; COMMON BLOCKS: no 32 ; 33 ; EXAMPLE: 34 ; IDL> meshdir='/d1fes2-raid2/smasson/DATA/ORCA05/' 35 ; IDL> smallmeshmask, 'meshmask_ORCA_R05.nc',iodir=meshdir 36 ; 37 ; MODIFICATION HISTORY: 38 ; July 2004 Sebastien Masson (smasson@lodyc.jussieu.fr) 2 ; 3 ; 4 ; @categories for OPA meshmask files 5 ; 6 ; @history 7 ; July 2004 Sebastien Masson (smasson\@lodyc.jussieu.fr) 39 8 ;- 40 9 ;------------------------------------------------------ … … 47 16 END 48 17 ; 18 ;+ 19 ; @file_comments reduce the size of the NetCDF meshmask created by OPA by 20 ; using byte format for the masks and the foat format for the other 21 ; fields. 22 ; 23 ; @keyword IODIR to define the files path. 24 ; @param ncfilein {in}{required} 25 ; 1) the name of the meshmask file to be reduced. In that case, 26 ; there is only one meshmask file 27 ; 28 ; OR 29 ; 30 ; 2) the xxx part in the names: xxx.mesh_hgr.nc xxx.mesh_zgr.nc 31 ; xxx.mask.nc. In that case, the meshmask is split into 3 files. 32 ; 33 ; @param ncfileout {in}{optional} the name of the reduced meshmask file. default 34 ; definition is smallmeshmask.nc 35 ; 36 ; @examples 37 ; IDL> meshdir='/d1fes2-raid2/smasson/DATA/ORCA05/' 38 ; IDL> smallmeshmask, 'meshmask_ORCA_R05.nc',iodir=meshdir 39 ; 40 ; @categories for OPA meshmask files 41 ; 42 ; @history 43 ; July 2004 Sebastien Masson (smasson\@lodyc.jussieu.fr) 44 ;- 49 45 PRO smallmeshmask, ncfilein, ncfileout, IODIR = iodir 50 46 ; -
trunk/SRC/Interpolation/compute_fromreg_bilinear_weigaddr.pro
r101 r103 32 32 ; 33 33 ; @history 34 ; November 2005: Sebastien Masson (smasson @lodyc.jussieu.fr)34 ; November 2005: Sebastien Masson (smasson\@lodyc.jussieu.fr) 35 35 ; 36 36 ;- -
trunk/SRC/Obsolete/ficdate.pro
r97 r103 16 16 ; @uses common.pro 17 17 ; 18 ; @example 18 ; @examples 19 19 ; IDL> fic = ficdate(930124) 20 20 ; -
trunk/SRC/Obsolete/fictype.pro
r97 r103 7 7 ; @uses common.pro 8 8 ; 9 ; @exam mples9 ; @examples 10 10 ; IDL> fictype = fictype(930124) 11 11 ; -
trunk/SRC/Obsolete/vairdate.pro
r97 r103 27 27 ; plus year, month et day 28 28 ; 29 ; @uses common .pro29 ; @uses common 30 30 ; 31 31 ; 32 32 ; @history Jerome Vialard (jv\@lodyc.jussieu.fr) 33 33 ; 2/7/98 34 ; 13/9/1999, Sebastien Masson (smasson @lodyc.jussieu.fr)34 ; 13/9/1999, Sebastien Masson (smasson\@lodyc.jussieu.fr) 35 35 ; ANNUEL,MENSUEL,_EXTRA et possibilite 36 36 ; d''utiliser vairdate avec des scalaire ou des
Note: See TracChangeset
for help on using the changeset viewer.