From 359fb47ebcfd62fbdc763f3336956baa4a3fdc20 Mon Sep 17 00:00:00 2001 From: Ansley Manke Date: Wed, 15 Sep 2021 16:06:44 -0700 Subject: [PATCH 1/3] change error message for PLOT/THICK errors --- fer/plt/equal_thick.F | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fer/plt/equal_thick.F b/fer/plt/equal_thick.F index 6b19a816a..3167ac949 100644 --- a/fer/plt/equal_thick.F +++ b/fer/plt/equal_thick.F @@ -43,6 +43,7 @@ SUBROUTINE EQUAL_THICK(strng, dfltthick, icolor, ipen, istat) * only a thickness of 1.0, 2.0, or 3.0 (or no "=value", which becomes * 2.0) is accepted. In these cases, ipen = icolor, icolor-10, or icolor-20 * +* 9/15/2021 *ACM* clarify error message for /thick setting IMPLICIT NONE @@ -164,7 +165,7 @@ SUBROUTINE EQUAL_THICK(strng, dfltthick, icolor, ipen, istat) 5030 risc_buff = strng CALL ERRMSG(ferr_out_of_range, istat, . risc_buff(:TM_LENSTR1(risc_buff))// - . pCR//'When color is not specified, '// + . pCR//'When color is not specified or for ribbon plot '// . 'only 1, 2, or 3 is acceptable', . *5000) From e663b8dddcfa480d798154951724be8d1496ee26 Mon Sep 17 00:00:00 2001 From: Ansley Manke Date: Wed, 15 Sep 2021 16:07:20 -0700 Subject: [PATCH 2/3] Fix: RIBBON/THICK was not changing the thickness of the lines --- bench/run_all_logs.pyferret_dunkel_err | 8005 - bench/run_all_logs.pyferret_dunkel_log | 133616 --------------- bench/test_results/dsg_points_plot.png | Bin 52326 -> 52333 bytes bench/test_results/dsg_traj_1.png | Bin 105162 -> 108279 bytes bench/test_results/dsg_traj_2.png | Bin 86043 -> 89148 bytes bench/test_results/dsg_traj_3.png | Bin 75513 -> 76690 bytes bench/test_results/dsg_traj_4.png | Bin 92835 -> 96831 bytes bench/test_results/dsg_trajprof_traj.png | Bin 77455 -> 81266 bytes bench/test_results/dsg_tseries_plot_2.png | Bin 78966 -> 80726 bytes bench/test_results/dsg_use_feature.png | Bin 88514 -> 89493 bytes bench/test_results/plot_alongxy_dsg.png | Bin 128259 -> 128964 bytes bench/test_results/pyferret_run_tests_err | 2 +- bench/test_results/pyferret_run_tests_log | 16 +- bench/test_results/regrid_to_dsg_traj.png | Bin 165213 -> 170239 bytes bench/test_results/ribbon_set_ppl_plot.png | Bin 67788 -> 71642 bytes bench/test_results/symbolcolors.pdf | Bin 13186 -> 13190 bytes bench/test_results/symbolcolors.png | Bin 100471 -> 100931 bytes bench/test_results_noremote/dsg_traj_1.png | Bin 104279 -> 108279 bytes bench/test_results_noremote/dsg_traj_2.png | Bin 90172 -> 89148 bytes bench/test_results_noremote/dsg_traj_3.png | Bin 75715 -> 76690 bytes .../dsg_trajprof_traj.png | Bin 77455 -> 81266 bytes .../plot_alongxy_dsg.png | Bin 128259 -> 128964 bytes .../ribbon_set_ppl_plot.png | Bin 72616 -> 71642 bytes bench/test_results_noremote/symbolcolors.png | Bin 100471 -> 100931 bytes fer/xeq/xeq_plot.F | 3 +- 25 files changed, 13 insertions(+), 141629 deletions(-) delete mode 100644 bench/run_all_logs.pyferret_dunkel_err delete mode 100644 bench/run_all_logs.pyferret_dunkel_log diff --git a/bench/run_all_logs.pyferret_dunkel_err b/bench/run_all_logs.pyferret_dunkel_err deleted file mode 100644 index faa1eaafd..000000000 --- a/bench/run_all_logs.pyferret_dunkel_err +++ /dev/null @@ -1,8005 +0,0 @@ -Procedure run_all to run all FERRET benchmarks -Running FERRET version /home/users/ansley/PyFerret/bin/pyferret --rwxr-xr-x. 1 ansley tmap 1858 Aug 20 12:11 /home/users/ansley/PyFerret/bin/pyferret -Using external functions from /home/users/ansley/PyFerret/ext_func/pylibs -Running the tests of external functions y -Benchmark run by ansley -Note: update from the trunk -ncdump output will be in all_ncdump.out, and appended to this log file -***** Restricting Ferret paths to bench directory ***** -FER_DATA=. ./data -FER_DATA_THREDDS= http://ferret.pmel.noaa.gov/geoide/geoIDECleanCatalog.xml /home/users/tmap/ferret/linux/fer_dsets -FER_DAT=/home/users/tmap/ferret/rhel6-x86_64-linux -FER_DESCR=. ./data -FER_DIR=. -FER_DSETS=. ./data -FER_EXTERNAL_FUNCTIONS=/home/users/ansley/PyFerret/ext_func/pylibs -FER_FONTS=/home/users/ansley/PyFerret/ppl/fonts -FER_GO=. ./v4jnls ./v5jnls ./v6jnls ./v7jnls ./pyjnls ./genjnls . /home/users/ansley/PyFerret/go /home/users/ansley/PyFerret/examples /home/users/ansley/PyFerret/contrib -FER_GRIDS=. ./data -FER_LIBS=/home/users/tmap/ferret/rhel6-x86_64-linux/lib -FER_PALETTE=. /home/users/ansley/PyFerret/ppl -FER_WEB_BROWSER=firefox -PYFER_EXTERNAL_FUNCTIONS=/home/users/ansley/PyFerret/ext_func/pylibs -Beginning at Tue Aug 20 12:13:27 PDT 2019 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_syntax - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - SET EXPRESSION has not been given or implied - **ERROR: unknown command qualifier: notaqualifier -MESSAGE/CONTINUE/notaqualifier - **ERROR: unknown command: that -that - **ERROR: command syntax: \! -\! ignore (err cuz bang gets escaped) - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dollar - **ERROR: invalid command: Value needed for argument 3 in command - GO bn_dollar hello -message/cont $3 - **ERROR: my error message -message/cont $3"greetings|hello|goodbye" - *** NOTE: Argument $3 was missing or empty. - *** NOTE: Valid argument $3 choices are: hello|goodbye - **ERROR: my error message -message/cont $3">greetings|hello|goodbyegreetings|hello>replacement text|goodbye": < -message/cont $3"<" - **ERROR: invalid command: Valid value needed for argument $3 -message/cont $3"||" - *** NOTE: Argument $3 was missing or empty. - *** NOTE: Valid argument $3 choices are: | - **ERROR: invalid command: Valid value needed for argument $3 -message/cont $3"|>|" - *** NOTE: Argument $3 was missing or empty. - *** NOTE: Valid argument $3 choices are: >| - **ERROR: command syntax: empty text string provided with ">": >| -message/cont $3">|" - **ERROR: command syntax: empty text string provided with ">": |< -message/cont $3"|<" - **ERROR: invalid command: Valid value needed for argument $3 -message/cont $3"|>" - *** NOTE: Argument $3 was missing or empty. - *** NOTE: Valid argument $3 choices are: > - **ERROR: command syntax: arg number not in 1-99 range: $100 -say $100 - **ERROR: command syntax: arg number not in 1-99 range: $100) -say ($100) - **ERROR: invalid command: Value needed for argument 10 in command - GO bn_dollar hello -say ($10)0 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_grave - **ERROR: command syntax: unpaired grave accents: message/continue "2+2=`2+2" -message/continue "2+2=`2+2" - **ERROR: variable unknown or not in data set: GARBAGE -message/continue "2+2=`garbage`" - **ERROR: invalid command: grave accent doesnt evaluate to scalar - I[i=3:5] -message/continue "3 numbers: `I[i=3:5]`" - **ERROR: command syntax: options: "P=prec","B=bad","W=width","ZW=zero-width" or "R=return-item" - message/continue "1/3=`1/3BAD=-999`" -message/continue "1/3=`1/3BAD=-999`" - **ERROR: command syntax: options: "P=prec","B=bad","W=width","ZW=zero-width" or "R=return-item" - message/continue "1/3=`1/3,qBAD=-999`" -message/continue "1/3=`1/3,qBAD=-999`" - **ERROR: command syntax: unpaired quotation marks, grave accent or brackets -MESSAGE/CONTINUE \`2+2` - **ERROR: command syntax: unpaired quotation marks, grave accent or brackets -MESSAGE/CONTINUE `2+2\` - **ERROR: command syntax: 2+2\ - illegal character: \ -MESSAGE/CONTINUE `2+2\`+1` - **ERROR: command syntax: unpaired quotation marks, grave accent or brackets -MESSAGE/CONTINUE \`2+2`+1\` - **ERROR: command syntax: 1*/3 - * before / is illegal -MESSAGE/CONTINUE `1*/3` - **ERROR: command syntax: sst*/3 - * before / is illegal -MESSAGE/CONTINUE `sst*/3,return=lunits` - **ERROR: invalid command: use RETURN= shape,size,grid,title,bad,t0,f0,units,dset, - dsetnum,dsetpath,dsettitle,*size,*start,*end, - *units,*axis,nc_scale,nc_offset,user_scale,user_offset, - calendar,dtype,xmod,tmod,status,isDepth,isReady,defined - sst,return=Xsize -MESSAGE/CONTINUE `sst,return=Xsize` - **ERROR: invalid command: use RETURN= shape,size,grid,title,bad,t0,f0,units,dset, - dsetnum,dsetpath,dsettitle,*size,*start,*end, - *units,*axis,nc_scale,nc_offset,user_scale,user_offset, - calendar,dtype,xmod,tmod,status,isDepth,isReady,defined - sst,return=trash -MESSAGE/CONTINUE `sst,return=trash` - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_letd - **ERROR: unknown data set: NOEXIST -DEFINE VARIABLE/d=noexist a = b - **ERROR: variable unknown or not in data set: AIRT[D=GT4D011] -list/l=1/x=180/y=0 airt[d=gt4d011] - **ERROR: invalid command: CANCEL what? -can var - LISTing to file v12file.nc - LISTing to file v1file.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_if - **ERROR: invalid command: ENDIF can only be used in an IF clause -ENDIF - **ERROR: command syntax: ELIF cannot be used in single line IF - IF 0 THEN say ERROR ELIF 1 THEN say "CORRECT if you see this" -IF 0 THEN say ERROR ELIF 1 THEN say "CORRECT if you see this" - **ERROR: command syntax: Trash after ENDIF - IF 0 THEN say ERROR ELSE say "CORRECT if you see this" ENDIF say trash -IF 0 THEN say ERROR ELSE say "CORRECT if you see this" ENDIF say trash - *** NOTE: Unclosed IF statement ... assuming ENDIF, in script ./v4jnls/bn_if.sub - **ERROR: invalid command: ELSE can only be used between IF and ENDIF -else - **ERROR: invalid command: ENDIF can only be used in an IF clause -endif - **ERROR: invalid command: ELIF can only be used between IF and ENDIF -elif - *** NOTE: Unclosed IF statement ... assuming ENDIF, in script ./v4jnls/bn_if.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_expressions - **ERROR: command syntax: IF I GT 3 THEN ( IF I LT 5 THEN I ELSE -9 ) ELSE .333 - Cannot use multiple IFs in an expression -LIST/ORDER=X IF I GT 3 THEN ( IF I LT 5 THEN I ELSE -9 ) ELSE .333 - **ERROR: command syntax: IF I LT 5 THEN I ELSE -9 - ELSE before - is illegal - negative constants need to be enclosed in parentheses -DEFINE VARIABLE A = IF I LT 5 THEN I ELSE -9 - **ERROR: variable unknown or not in data set: A1 -load a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_geometry - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - *** NOTE: Ambiguous coordinates on X axis: X[I=1:5] - X[I=6:9] - **ERROR: inconsistent sizes of data regions: X axis - X[I=6:9] has 4 points (I=6:9) - expression has 5 points (I=1:5) -LIST X[I=1:5] - X[I=6:9] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_output - LISTing to file WV.J34K56L7 - LISTing to file test.dat - LISTing to file test.dat - LISTing to file test.unf - **ERROR: invalid subcommand: File type no longer supported TMA -LIST/FILE=test.gt/FORMAT=TMAP/L=1:3 v,v^0.5 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_in_plane - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_compress - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_interpolate - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -Replacing definition of axis XFINE -Replacing definition of axis XCOARSE -Replacing definition of axis YFINE -Replacing definition of axis YCOARSE -Replacing definition of grid G24 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ez - LISTing to file test.unf - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot - **ERROR: dimensions improperly specified: specified data is not a line - - its a 2D region: "plot/i=1:10/j=1:20/nolabel i+j" -plot/i=1:10/j=1:20/nolabel i+j - **ERROR: dimensions improperly specified: specified data is not a line - - its a 2D region: "plot/i=1:10/j=1:20/nolabel i,i+j" -plot/i=1:10/j=1:20/nolabel i,i+j - **ERROR: dimensions improperly specified: specified data is not a line - - its a 2D region: "plot/i=1:10/j=1:20/nolabel i+j,i" -plot/i=1:10/j=1:20/nolabel i+j,i - **ERROR: dimensions improperly specified: differing axes: - first line is on Y axis - line 2 is on X axis -plot/i=1:10/j=1:20/nolabel j,i - **ERROR: dimensions improperly specified: unequal line lengths: - First expression has 20 points. - Expression 2 has 10 points: - "plot/i=1:10/j=1:20/vs/line/nolabel j,i" -plot/i=1:10/j=1:20/vs/line/nolabel j,i - **ERROR: dimensions improperly specified: must be a 2D region - contour/i=1:10/j=1:20/nolabel i -contour/i=1:10/j=1:20/nolabel i - **ERROR: invalid command: can only CONTOUR single fields - Use /OVERLAY for multiple variables -contour/i=1:10/j=1:20/nolabel i/j,j/i - **ERROR: invalid command: VECTOR requires paired components -vector/i=1:10/j=1:20/nolabel i/j - **ERROR: invalid command: VECTOR requires paired components -vector/i=1:10/j=1:20/nolabel i/j,j/i,i+j -Re-defining viewport LM6 -Re-defining viewport UM6 - Using every 2th vector in the X direction - Using every 2th vector in the Y direction -Re-defining viewport LM6 - Using every 2th vector in the X direction - Using every 2th vector in the Y direction - Using every 2th vector in the X direction - Using every 2th vector in the Y direction -Re-defining viewport UM6 - Using every 2th vector in the X direction - Using every 2th vector in the Y direction - *** NOTE: /XLIMITS and /YLIMITS are deprecated. - *** NOTE: Use /HLIMITS and /VLIMITS instead. - **ERROR: invalid command: color=noexist - Colors are Black, Red, Green, Blue, LightBlue, Purple, and White -plot/over/i=1:10/color=noexist i - **ERROR: value out of legal range: thick=4 - When color is not specified, only 1, 2, or 3 is acceptable -plot/over/i=1:10/thick=4 i - **ERROR: value out of legal range: size=-1 - Symbol size must be positive -plot/over/i=1:10/size=-1 i - Using every 2th vector in the Y direction - **ERROR: invalid command: color=noexist - Colors are Black, Red, Green, Blue, LightBlue, Purple, and White -cont/over/i=1:10/color=noexist i - *** NOTE: /THICKNESS ignored unless /COLOR (or /PEN) given - **ERROR: dimensions improperly specified: overlay not valid in plane of plot - cont/over/i=1:10/thick=4 i -cont/over/i=1:10/thick=4 i - **ERROR: value out of legal range: sigdig=-1 - Value must be positive -cont/over/i=1:10/sigdig=-1 i - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_curv - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." -Replacing definition of axis LON_FIELD_I_AXIS -Replacing definition of axis LON_FIELD_J_AXIS -Replacing definition of axis LAT_FIELD_I_AXIS -Replacing definition of axis LAT_FIELD_J_AXIS - **ERROR: inconsistent sizes of data regions: Y coord field lies - in different plane from data to be plotted -shade/nolabel sst, x_page, y_page - **ERROR: all data have same value: X coordinate field -shade/nolabel sst, 0*x_page, y_page - **ERROR: all data have same value: Y coordinate field -shade/nolabel sst, x_page, 0*y_page - **ERROR: inconsistent sizes of data regions: Y axis of X position array -shade/nolabel sst, x_page[j=1:12], y_page - **ERROR: inconsistent sizes of data regions: Y axis of X position array -shade/nolabel sst, x_page[j=1:12], y_page - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_symbols - **ERROR: command syntax: illegal name: TEST* -define symbol test* = hello - **ERROR: invalid command: Value needed for argument 5 in command - GO bn_symbols -define symbol t$5 = hi - **ERROR: error message -message/continue ($test2"really hello|bye|") - *** NOTE: symbol t2 received was: hello - *** NOTE: Valid symbol t2 choices are: solong>really hello|bye| - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_comma_delimited - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dynamic_grids - **ERROR: unknown defining grid: GX=NOEXIST -list temp[gx=noexist] - **ERROR: command syntax: P=NOEXIST -list temp[gx=u,p=noexist] - **ERROR: command syntax: multiple specifications on X axis - X=160E:160W -list temp[gx=130e:80w:10,x=160e:160w] - **ERROR: command syntax: multiple specifications on X axis - I=2:5 -list temp[gx=130e:80w:10,i=2:5] - **ERROR: command syntax: used GX=lo:hi:delta with X=lo:hi (ditto for Y,Z, or T) - GX=130E:80W:10 -list temp[i=2:5,gx=130e:80w:10] - **ERROR: command syntax: GX=lo:hi:delta with no delta (or ditto for Y,Z, or T) - GX=130E:80W -list temp[gx=130e:80w] - **ERROR: variable unknown or not in data set: NOEXIST -list temp[gx=u] + noexist - **ERROR: illegal limits: TEMP on grid (G004) does not exist at K=30 - Axis extremes are K=1:27 -list temp[gx=u,k=30] - **ERROR: illegal limits: TEMP does not contain K=20 - Data are available in K = 1:2 -list temp[gx=u,k=20] - **ERROR: regridding: Axis orientation not matching request:GX=PSYU -list temp[gx=psyu] - **ERROR: regridding: Axis orientation not matching request:GX=PSYT -list/i=3:6 X[gx=PSYT] - **ERROR: unknown defining grid: GX=NOEXIST -list tu - **ERROR: command syntax: P=NOEXIST -list tu - **ERROR: variable unknown or not in data set: NOEXIST -list tu - **ERROR: illegal limits: TEMP on grid (G004) does not exist at K=30 - Axis extremes are K=1:27 -list tu - **ERROR: illegal limits: TEMP does not contain K=20 - Data are available in K = 1:2 -list tu - **ERROR: regridding: Axis orientation not matching request:GX=PSYU -list tu - **ERROR: request exceeds memory setting -list temp[gz=z999999,z=5:15] - *** NOTE: Ambiguous coordinates on X axis: X[X=0.1:10:1.5] + X[X=1.1:11:1.5] - *** NOTE: Ambiguous coordinates on X axis: X[X=0.1:10:1.5] + X[X=1.1:11:1.5] - *** NOTE: Ambiguous coordinates on X axis: TEMP[I=101:120:4]+X[I=101:120:4] - **ERROR: invalid command: non-positive delta value: X[I=1:5:-1] -list x[i=1:5:-1] - **ERROR: invalid command: non-positive delta value: X[I=1:5:0] -list x[i=1:5:0] - **ERROR: invalid command: non-positive delta value: X[X=1:5:-1] -list x[x=1:5:-1] - **ERROR: invalid command: non-positive delta value: X[X=1:5:0] -list x[x=1:5:0] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cdf - LISTing to file test0a.cdf - LISTing to file test0b.cdf - LISTing to file test0c.cdf - LISTing to file test0d.cdf - LISTing to file test0e.cdf - LISTing to file test0f.cdf - LISTing to file test0g.cdf - LISTing to file test0h.cdf - LISTing to file test0i.cdf - LISTing to file test0j.cdf - LISTing to file test0k.cdf - LISTing to file test0l.cdf - LISTing to file test0m.cdf - LISTing to file test0n.cdf - LISTing to file test0o.cdf - LISTing to file test0p.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - *** NOTE: Appending to NetCDF record axis which has no bounds attribute. - *** NOTE: This will result in incorrect box sizes on record axis: TCENTURY - *** NOTE: Write the data initially with the /BOUNDS qualifier - LISTing to file test2.cdf - LISTing to file FL.nc - LISTing to file FTLON.nc - **ERROR: invalid command: /CLOBBER not specified and file exists: test_abs.cdf -list/format=cdf/l=1:10/file=test_abs.cdf l - LISTing to file test_abs.cdf - **TMAP ERR: Requested data range is outside of data set limits - inconsistent I axis length for IL -list/format=cdf/i=5:15/l=5:10/append/file=test_abs.cdf il - LISTing to file test_abs.cdf - **TMAP ERR: Requested data range is outside of data set limits - Expected: IJ[J= 20 : 25 ] Found: IJ[J= 1 : 20 ] -list/format=cdf/i=1:10/j=20:25/append/file=test_abs.cdf ij - LISTing to file test_abs.cdf - **TMAP ERR: attempt to redefine line - # of dims in variable IJL2 is inconsist. w/ CDF file -list/format=cdf/append/file=test_abs.cdf ijl2 - **ERROR: variable unknown or not in data set: IJKL[K=@AVE] -list/format=cdf/append/file=test_abs.cdf ijkl[k=@ave] - LISTing to file test_abs.cdf - **TMAP ERR: error in line definition - disordered output coordinate value: 363 Axis: TCENTURY -list/format=cdf/l=13/append/file=test_abs.cdf l1 - LISTing to file FI.nc - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil0.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis Y1010_REV - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_transforms - **ERROR: regridding: G=W - more than 1 target grid -load temp[g=u,g=w] - **ERROR: unknown defining grid: G=X --> g=user-or-pseudo-var not allowed -load temp[g=x] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_limits - **ERROR: command syntax: xlimits -plot/xlimits i - **ERROR: command syntax: xlimits= i -plot/xlimits= i - **ERROR: command syntax: xlimits=text -plot/xlimits=text i - **ERROR: command syntax: xlimits=1 -plot/xlimits=1 i - **ERROR: command syntax: i -plot/xlimits=1: i - **ERROR: command syntax: xlimits=1:: i -plot/xlimits=1:: i - **ERROR: command syntax: i -plot/xlimits=1:2: i - **ERROR: invalid command: Must give a range: xlimits=5:5 -plot/xlimits=5:5 i - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_movie - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ez_order - LISTing to file test_perm10.dat - LISTing to file test_perm24.dat - LISTing to file test_perm48.dat - LISTing to file test_perm48_10.dat -Replacing definition of grid G12 -Replacing definition of grid G24 - LISTing to file test_stream.unf - LISTing to file test_stream.unf - LISTing to file test_stream.unf - LISTing to file test_stream.unf - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_user - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_stream - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_mc - **TMAP ERR: Attempt to access unsupported feature - Descriptor requests delta of 0, please use 1 - Data set: ./data/coads_clim_bad_delta.des -set data coads_clim_bad_delta.des - **TMAP ERR: error in line definition - A gap or overlap exists in time axis -set data coads_clim_step_order.des - **TMAP ERR: non-existent or not on line - coads_clim.001b -list sst - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_negative_t -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_xact_regrid - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_gc_functions -Replacing definition of axis TIME - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn491_bug_fixes.jnl - LISTing to file test.cdf - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_odd_variable_name - **ERROR: command syntax: v2-and-minus - - before and is illegal -list v2-and-minus - **ERROR: illegal limits: Limits must be provided for pseudo-variable. -list x - **ERROR: illegal limits: Limits must be provided for pseudo-variable. -list i - **ERROR: command syntax: v2-and-minus[i=5:15@ddc] - - before and is illegal -list v2-and-minus[i=5:15@ddc] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_test_stream - LISTing to file permutedBinaryTest.dat - LISTing to file junk.dat -Replacing definition of axis XAX -Replacing definition of axis YAX -Replacing definition of axis ZAX -Replacing definition of axis TAX - **ERROR: request exceeds memory setting -load num -Replacing definition of axis YAX -Replacing definition of axis ZAX -Replacing definition of axis TAX - **ERROR: request exceeds memory setting -load num -Replacing definition of axis XAX -Replacing definition of axis YAX -Replacing definition of axis ZAX -Replacing definition of axis TAX - **TMAP ERR: non-existent or not on line - NoSuchFile.dat -SET DATA/EZ/format=stream/var=num/grid=mygrid NoSuchFile.dat - **ERROR: Size of file ./junk.dat doesn't match size specified by variables/grid -load num - *** NOTE: Binary file reading: Insufficient memory reading variable 2 - **ERROR: invalid command: variable permutations only allowed for STREAM format -SET DATA/EZ/var=num/order=vxyzt/grid=mygrid junk.dat - **ERROR: invalid command: invalid argument for /TYPE -SET DATA/EZ/var=num/type=i3/grid=mygrid/form=stream junk.dat - LISTing to file permutedBinaryTest_r4.dat - LISTing to file permutedBinaryTest_int.dat - LISTing to file permutedBinaryTest_short.dat - LISTing to file permutedBinaryTest_byte.dat - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_define_axes -Replacing definition of axis XAX -Replacing definition of axis XAX -Replacing definition of axis XAX -Replacing definition of axis XAX - **ERROR: improper grid or axis definition: NPOINTS=1 incompatible with limits given -define axis/x=1:5/npoints=1 xax -Replacing definition of axis XAX - **ERROR: improper grid or axis definition: error in start,end,delta -define axis/x=5/npoints=1/edges xax -Replacing definition of axis XAX -Replacing definition of axis TAX -Replacing definition of axis TAX -Replacing definition of axis TAX -Replacing definition of axis TAX - **ERROR: improper grid or axis definition: NPOINTS=1 incompatible with limits given -define axis/t=15-jan-1980:25-jan-1980/npoints=1/unit=days tax -Replacing definition of axis TAX - **ERROR: improper grid or axis definition: error in start,end,delta -define axis/t=15-jan-1980/npoints=1/unit=days/edges tax -Replacing definition of axis TAX -Replacing definition of axis XAX -Replacing definition of axis XAX -Replacing definition of axis TAX -Replacing definition of axis TAX -Replacing definition of axis TAX -Replacing definition of axis TAX - *** NOTE: Axis has repeated values -- micro-adjusting ... -Replacing definition of axis XAX - *** NOTE: Axis has repeated values -- micro-adjusting ... -Replacing definition of axis XAX - *** NOTE: Axis has repeated values -- micro-adjusting ... -Replacing definition of axis XAX - *** NOTE: Axis has repeated values -- micro-adjusting ... -Replacing definition of axis XAX - *** NOTE: Axis has repeated values -- micro-adjusting ... -Replacing definition of axis XAX - *** NOTE: Axis has repeated values -- micro-adjusting ... -Replacing definition of axis XAX - *** NOTE: Axis has repeated values -- micro-adjusting ... -Replacing definition of axis XAX - *** NOTE: Axis has repeated values -- micro-adjusting ... -Replacing definition of axis XAX - **ERROR: improper grid or axis definition: unrepairable repeated axis coords -define axis/from/x/name=xax {6,6} - **ERROR: improper grid or axis definition: unrepairable repeated axis coords -define axis/from/x/name=xax/edges {6,6} - **ERROR: improper grid or axis definition: unrepairable repeated axis coords -define axis/from/x/name=xax/edges {6,6,6} - *** NOTE: Axis has repeated values -- micro-adjusting ... -Replacing definition of axis XAX - *** NOTE: Axis has repeated values -- micro-adjusting ... -Replacing definition of axis XAX -Replacing definition of axis XAX2 - *** NOTE: (fyi) units are not subject to auto-conversion: BLAHS -Replacing definition of axis XAX2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_pattern - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - **ERROR: invalid command: PATTERN style is not available in PyFerret -shade/pal=black/lev=(10,30,5,-3)/line/key/pattern=4patterns/nolabel sst - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - **ERROR: invalid command: PATTERN style is not available in PyFerret -CONTOUR/FILL/lev=(25,27,1)/over/nolab/pal=black/pat=angled_grid/nolabel airt[l=@ave] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_polygon - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn500_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TCAL - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file out.cdf - LISTing to file out.cdf - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: /UNIT=MONTHS is ambiguous ... using 1/12 of 365.2425 days - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: command syntax: noname(i) - unknown function "noname" -stat i, noname(i) - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_sample - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_strides_revs_perms - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - *** NOTE: Not using NetCDF strides for multi-cycle modulo - *** NOTE: Stride value not a factor of axis length - **ERROR: invalid command: delta values may only modify variable names -LIST/i=2:4:2 VAR - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - *** NOTE: Not using NetCDF strides for multi-cycle modulo - *** NOTE: Stride value not a factor of axis length - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_non_COARDS_netCDF - *** NOTE: Coordinates out of order or missing on axis UNORDERED_AXIS at subscript 4 - *** NOTE: A dummy axis of subscripts will be used - *** NOTE: Coordinates out of order or missing on axis GAPPY_AXIS at subscript 3 - *** NOTE: A dummy axis of subscripts will be used - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis BACKWARDS_AXIS - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cache_hits -Replacing definition of grid GX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_to_user -Replacing definition of axis YAX -Replacing definition of grid GG2 - **ERROR: unknown defining grid: G=NO_EXIST -load/x=160e/y=5s temp[d=2,k=1,g=no_exist] - **ERROR: unknown defining grid: GX=A[D=1] -load/x=160e/y=5s v2 -Replacing definition of axis Y1 -Replacing definition of axis Y2 -Replacing definition of grid MYGRID - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_calendar -Replacing definition of axis TDAYS -Replacing definition of axis TDAYS -Replacing definition of axis TDAYS -Replacing definition of grid TGRID -Replacing definition of axis TWEEKS -Replacing definition of axis TWEEKS -Replacing definition of axis TWEEKS - LISTing to file calsst.cdf - -Bailing out of external function "ffta": - Time axis must be a regular axis - -Bailing out of external function "eof_space": - Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE - -Bailing out of external function "eof_stat": - Function EOF_STAT not available in this version of Ferret. Use EOFSVD_STAT - -Bailing out of external function "eof_tfunc": - Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC - *** NOTE: /UNIT=MONTHS ... using 1/12 of 360.00 days -Replacing definition of grid TGRID -Replacing definition of axis TDAYS -Replacing definition of grid TGRID - *** NOTE: /UNIT=MONTHS ... using 1/12 of 365.25 days - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dash_dot - **ERROR: command syntax: dash=(1., 2.) - DASH[=(dn1,up1,dn2,up2)] takes 4 arguments or no argument -plot/dash=(1., 2.)/color=red/thick/i=1:1000 sin(62.8*(i+10) ) - **ERROR: value out of legal range: dash=(-1., 2., 3., 4.) - DASH arguments must be positive -plot/dash=(-1., 2., 3., 4.)/i=1:1000 sin(62.8*(i+20) ) - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_flowlines - Using every 2th vector in the Y direction - Using every 2th vector in the Y direction - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - Using every 2th vector in the X direction - Using every 2th vector in the Y direction - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_logaxes -Replacing definition of axis DLOG -Replacing definition of axis DLOG - **ERROR: value out of legal range: Limits for log axis negative or too small: -9.00 : 0.00 -plot/hlog fcn - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_internal_external_functions - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis DAYT -Replacing definition of grid TGRID - **ERROR: error in external function -LIST vw_fft -Replacing definition of grid TGRID - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis X10 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - *** NOTE: Not deleted: X10 - *** NOTE: Axis is in use by grid G10X5 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAXS -Replacing definition of axis YAXS -Replacing definition of axis ZAXS -Replacing definition of axis TAXS -Replacing definition of grid MYGRD - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: illegal limits: VWND does not contain L=102:150 - Data are available in L = 1:60 -list tsorted_indices, tsorted_wnd - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: error in external function -list/l=1:2 eofxyfcn - **ERROR: error in external function -list/i=1:3/j=1:3 eofstat - **ERROR: error in external function -list/i=1:2 eoftime - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: command syntax: strindex("Ferret is fun for the whole family - real family fun") - The strindex function has an incorrect number of arguments -list strindex("Ferret is fun for the whole family - real family fun") - **ERROR: command syntax: strrindex("Ferret is fun for the whole family - real family fun") - The strrindex function has an incorrect number of arguments -list strrindex("Ferret is fun for the whole family - real family fun") - **ERROR: command syntax: substring("Have you fed your ferret today", 19) - The substring function has an incorrect number of arguments -list substring("Have you fed your ferret today", 19) - **ERROR: command syntax: substring("Have you fed your ferret today") - The substring function has an incorrect number of arguments -list substring("Have you fed your ferret today") - **ERROR: command syntax: strcat ("All work and no play") - The strcat function has an incorrect number of arguments -list strcat ("All work and no play") - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_modulo_strides - LISTing to file test_modulo.cdf - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - *** NOTE: Not using NetCDF strides for multi-cycle modulo - *** NOTE: Stride value not a factor of axis length - *** NOTE: Not using NetCDF strides for multi-cycle modulo - *** NOTE: Stride value not a factor of axis length - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_viewports -Re-defining viewport MID -Re-defining viewport MID2 -Re-defining viewport LLAX -Re-defining viewport LRAX -Re-defining viewport ULAX -Re-defining viewport URAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_strings - **ERROR: command syntax: "string2"} -list e - **ERROR: command syntax: 5, "string2"} -list e - **ERROR: illegal data type (float,string,...) for operation: D -plot d - **ERROR: illegal data type (float,string,...) for operation: D -define axis/x xax = d - LISTing to file test_string.cdf - LISTing to file test_string.cdf - LISTing to file test_string.cdf - LISTing to file test_string.cdf - LISTing to file test_string.cdf - LISTing to file test_string2.cdf - **ERROR: invalid command: cant use this regrid transform on strings: @LIN -list a[gx=xnrst] - **ERROR: invalid command: cant use this regrid transform on strings: @AVE -list a[gx=xnrst@ave] - **ERROR: invalid command: cant use this regrid transform on strings: @VAR -list a[gx=xnrst@var] - **ERROR: invalid command: cant use this regrid transform on strings: @NGD -list a[gx=xnrst@ngd] - **ERROR: invalid command: cant use this regrid transform on strings: @MAX -list a[gx=xnrst@max] - **ERROR: invalid command: cant use this regrid transform on strings: @SUM -list a[gx=xnrst@sum] - **ERROR: invalid command: cant use this regrid transform on strings: @MOD -list a[gx=xnrst@mod] - LISTing to file foo.cdf - **ERROR: invalid command: cannot use strings in numerical expression -list/nohead "b" - {"a","b"} - **ERROR: invalid command: cannot use strings in numerical expression -list/nohead "b" * {"a","b"} - **ERROR: invalid command: cannot use strings in numerical expression -list/nohead "b" / {"a","b"} - **ERROR: invalid command: cannot use strings in numerical expression -list/nohead "b" ^ {"a","b"} - **ERROR: invalid command: cannot use strings in numerical expression -list/nohead SIN({"a","b","c"}) - **ERROR: invalid command: cannot use strings in numerical expression -list/nohead MAX("a",{"a","b","c"}) - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axcontrol - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_vec_curv - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_delimited_read -Replacing definition of axis X1 -Replacing definition of grid G1 -Replacing definition of axis TAX -Replacing definition of axis TAX -Replacing definition of axis Z1 -Replacing definition of grid G1 - **TMAP ERR: syntax error in string - Unrecognized field type: DA2 - Data set: ./data/bn_delimited_read_date_time.dat - *** NOTE: Valid types are: -,NUMERIC,TEXT,LATITUDE,LONGITUDE,DATE,EURODATE,TIME,DATIME,EDATIME -SET DATA/FORM=delimited/type="d, da2,date2" bn_delimited_read_date_time.dat - **TMAP ERR: syntax error in string - Unrecognized field type: DATE2 - Data set: ./data/bn_delimited_read_date_time.dat - *** NOTE: Valid types are: -,NUMERIC,TEXT,LATITUDE,LONGITUDE,DATE,EURODATE,TIME,DATIME,EDATIME -SET DATA/FORM=delimited/type="da,da, date2" bn_delimited_read_date_time.dat - **ERROR: command syntax: ,,: -SET DATA/EZ/form=delim/delim="/,,,:" bn_delimited_read_date_time.dat - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn541_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file test_good_order.cdf - LISTing to file test_bad_order.cdf - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis T2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Re-defining viewport LL6 -Re-defining viewport UL6 -Re-defining viewport LM6 -Re-defining viewport UM6 -Re-defining viewport LR6 -Re-defining viewport UR6 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis YAX -Replacing definition of axis ZAX -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file profiles.nc - LISTing to file profiles.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file test_100x100.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis YAX -Replacing definition of grid MYGRID - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cancel_axes - LISTing to file longax.dat - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis has repeated values -- micro-adjusting ... - *** NOTE: Axis has repeated values -- micro-adjusting ... - *** NOTE: Axis has repeated values -- micro-adjusting ... - *** NOTE: Axis has repeated values -- micro-adjusting ... - *** NOTE: Axis has repeated values -- micro-adjusting ... - *** NOTE: Axis has repeated values -- micro-adjusting ... - *** NOTE: Axis has repeated values -- micro-adjusting ... - *** NOTE: Axis has repeated values -- micro-adjusting ... - *** NOTE: Axis has repeated values -- micro-adjusting ... - *** NOTE: Axis has repeated values -- micro-adjusting ... - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: regarding ./data/test_axes.nc ... - *** NOTE: Climatological axes test_irreg, test_seas defined - LISTing to file longaxspace.dat -Replacing definition of axis XAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn542_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: /UNIT=MONTHS is ambiguous ... using 1/12 of 365.2425 days - *** NOTE: /UNIT=MONTHS ... using 1/12 of 365.25 days -Replacing definition of axis TAX2 - *** NOTE: /UNIT=MONTHS ... using 1/12 of 365.25 days - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file string4d.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: regarding ./data/test_axes.nc ... - *** NOTE: Climatological axes test_irreg, test_seas defined - *** NOTE: Not deleted: TEST_IRREG - *** NOTE: Axis is in use by grid (G015) - *** NOTE: Not deleted: XEVEN - *** NOTE: Axis is in use by grid EVEN - *** NOTE: Not deleted: XODD - *** NOTE: Axis is in use by grid G13 - *** NOTE: Not deleted: YEVEN - *** NOTE: Axis is in use by grid EVEN - *** NOTE: Not deleted: YODD - *** NOTE: Axis is in use by grid G2 - *** NOTE: Not deleted: ZEVEN - *** NOTE: Axis is in use by grid EVEN - *** NOTE: Not deleted: ZODD - *** NOTE: Axis is in use by grid G3 - *** NOTE: Not deleted: TEVEN - *** NOTE: Axis is in use by grid EVEN - *** NOTE: Not deleted: TODD - *** NOTE: Axis is in use by grid G4 - *** NOTE: Not deleted: XCOARSE - *** NOTE: Axis is in use by grid GCOARSE - *** NOTE: Not deleted: YFINE - *** NOTE: Axis is in use by grid GFINE - *** NOTE: Not deleted: YCOARSE - *** NOTE: Axis is in use by grid GCOARSE - *** NOTE: Not deleted: XFINE - *** NOTE: Axis is in use by grid GFINE - *** NOTE: Not deleted: TAX48 - *** NOTE: Axis is in use by grid G48 - *** NOTE: Not deleted: XEZ1 - *** NOTE: Axis is in use by grid GEZ1 - *** NOTE: Not deleted: XEZ2 - *** NOTE: Axis is in use by grid GEZ2 - *** NOTE: Not deleted: YEZ - *** NOTE: Axis is in use by grid GEZ2 - *** NOTE: Not deleted: ZEZ - *** NOTE: Axis is in use by grid GEZ2 - *** NOTE: Not deleted: XEZ3 - *** NOTE: Axis is in use by grid GEZ3 - *** NOTE: Not deleted: LON_FIELD_J_AXIS - *** NOTE: Axis is in use by grid LON_FIELD_GRID - *** NOTE: Not deleted: LAT_FIELD_I_AXIS - *** NOTE: Axis is in use by grid LAT_FIELD_GRID - *** NOTE: Not deleted: LAT_FIELD_J_AXIS - *** NOTE: Axis is in use by grid LAT_FIELD_GRID - *** NOTE: Not deleted: LON_FIELD_I_AXIS - *** NOTE: Axis is in use by grid LON_FIELD_GRID - *** NOTE: Not deleted: XIRREG - *** NOTE: Axis is in use by grid GIRREG - *** NOTE: Not deleted: TCENTURY - *** NOTE: Axis is in use by grid GCENTURY - *** NOTE: Not deleted: TAX5DAY - *** NOTE: Axis is in use by grid G5DAY - *** NOTE: Not deleted: XAX10 - *** NOTE: Axis is in use by grid G5_10 - *** NOTE: Not deleted: X5 - *** NOTE: Axis is in use by grid GSRC - *** NOTE: Not deleted: XAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Not deleted: Y5 - *** NOTE: Axis is in use by grid G10X5 - *** NOTE: Not deleted: TIME1 - *** NOTE: Axis is in use by grid GHB1 - *** NOTE: Not deleted: TIME2 - *** NOTE: Axis is in use by grid GJR1 - *** NOTE: Not deleted: TIME5 - *** NOTE: Axis is in use by grid GQO1 - *** NOTE: Not deleted: TIME6 - *** NOTE: Axis is in use by grid GCQ1 - *** NOTE: Not deleted: TAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Not deleted: X4 - *** NOTE: Axis is in use by grid G4D - *** NOTE: Not deleted: Y4 - *** NOTE: Axis is in use by grid G4D - *** NOTE: Not deleted: Z4 - *** NOTE: Axis is in use by grid G4D - *** NOTE: Not deleted: T4 - *** NOTE: Axis is in use by grid G4D - *** NOTE: Not deleted: XCHANNEL - *** NOTE: Axis is in use by grid GSIGMA - *** NOTE: Not deleted: YRISE - *** NOTE: Axis is in use by grid GSIGMA - *** NOTE: Not deleted: ZLAYER - *** NOTE: Axis is in use by grid GSIGMA - *** NOTE: Not deleted: TIME - *** NOTE: Axis is in use by grid GSIGMA - *** NOTE: Not deleted: Z1 - *** NOTE: Axis is in use by grid G1 - *** NOTE: Not deleted: TCAL - *** NOTE: Axis is in use by grid GSRC - *** NOTE: Not deleted: XTROP - *** NOTE: Axis is in use by grid GXYT - *** NOTE: Not deleted: YTROP - *** NOTE: Axis is in use by grid GXYT - *** NOTE: Not deleted: ZAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Not deleted: Y1 - *** NOTE: Axis is in use by grid GSRC - *** NOTE: Not deleted: Y2 - *** NOTE: Axis is in use by grid G10X2 - *** NOTE: Not deleted: JMONTHS - *** NOTE: Axis is in use by grid JGRID - *** NOTE: Not deleted: MONTHT - *** NOTE: Axis is in use by grid TGRID - *** NOTE: Not deleted: X10 - *** NOTE: Axis is in use by grid G10X5 - *** NOTE: Not deleted: YAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Not deleted: TIME3 - *** NOTE: Axis is in use by grid GLB1 - *** NOTE: Not deleted: COADSX - *** NOTE: Axis is in use by grid GG - *** NOTE: Not deleted: YAXLEVITR1_90 - *** NOTE: Axis is in use by grid GG2 - *** NOTE: Not deleted: XAXLEVITR1_160 - *** NOTE: Axis is in use by grid GG1 - *** NOTE: Not deleted: PSYT - *** NOTE: Axis is in use by grid GY - *** NOTE: Not deleted: PSXU - *** NOTE: Axis is in use by grid G5DAY - *** NOTE: Not deleted: COADSY - *** NOTE: Axis is in use by grid GG1 - *** NOTE: Not deleted: (AX009) - *** NOTE: Axis is in use by grid GG3 - *** NOTE: Not deleted: PSZT - *** NOTE: Axis is in use by grid G5DAY - *** NOTE: Not deleted: PSYU - *** NOTE: Axis is in use by grid G5DAY - *** NOTE: Not deleted: TIME7 - *** NOTE: Axis is in use by grid GXYT - *** NOTE: Not deleted: TEST_IRREG - *** NOTE: Axis is in use by grid (G015) - *** NOTE: Not deleted: PSZW - *** NOTE: Axis is in use by grid G5_10 - *** NOTE: Not deleted: ZAXLEVITR1_1 - *** NOTE: Axis is in use by grid GG2 - *** NOTE: Not deleted: XEVEN - *** NOTE: Axis is in use by grid EVEN - *** NOTE: Not deleted: XODD - *** NOTE: Axis is in use by grid G13 - *** NOTE: Not deleted: YEVEN - *** NOTE: Axis is in use by grid EVEN - *** NOTE: Not deleted: YODD - *** NOTE: Axis is in use by grid G2 - *** NOTE: Not deleted: ZEVEN - *** NOTE: Axis is in use by grid EVEN - *** NOTE: Not deleted: ZODD - *** NOTE: Axis is in use by grid G3 - *** NOTE: Not deleted: TEVEN - *** NOTE: Axis is in use by grid EVEN - *** NOTE: Not deleted: TODD - *** NOTE: Axis is in use by grid G4 - *** NOTE: Not deleted: XCOARSE - *** NOTE: Axis is in use by grid GCOARSE - *** NOTE: Not deleted: YFINE - *** NOTE: Axis is in use by grid GFINE - *** NOTE: Not deleted: YCOARSE - *** NOTE: Axis is in use by grid GCOARSE - *** NOTE: Not deleted: XFINE - *** NOTE: Axis is in use by grid GFINE - *** NOTE: Not deleted: TAX48 - *** NOTE: Axis is in use by grid G48 - *** NOTE: Not deleted: XEZ1 - *** NOTE: Axis is in use by grid GEZ1 - *** NOTE: Not deleted: XEZ2 - *** NOTE: Axis is in use by grid GEZ2 - *** NOTE: Not deleted: YEZ - *** NOTE: Axis is in use by grid GEZ2 - *** NOTE: Not deleted: ZEZ - *** NOTE: Axis is in use by grid GEZ2 - *** NOTE: Not deleted: XEZ3 - *** NOTE: Axis is in use by grid GEZ3 - *** NOTE: Not deleted: LON_FIELD_J_AXIS - *** NOTE: Axis is in use by grid LON_FIELD_GRID - *** NOTE: Not deleted: LAT_FIELD_I_AXIS - *** NOTE: Axis is in use by grid LAT_FIELD_GRID - *** NOTE: Not deleted: LAT_FIELD_J_AXIS - *** NOTE: Axis is in use by grid LAT_FIELD_GRID - *** NOTE: Not deleted: LON_FIELD_I_AXIS - *** NOTE: Axis is in use by grid LON_FIELD_GRID - *** NOTE: Not deleted: XIRREG - *** NOTE: Axis is in use by grid GIRREG - *** NOTE: Not deleted: TCENTURY - *** NOTE: Axis is in use by grid GCENTURY - *** NOTE: Not deleted: TAX5DAY - *** NOTE: Axis is in use by grid G5DAY - *** NOTE: Not deleted: XAX10 - *** NOTE: Axis is in use by grid G5_10 - *** NOTE: Not deleted: X5 - *** NOTE: Axis is in use by grid GSRC - *** NOTE: Not deleted: XAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Not deleted: Y5 - *** NOTE: Axis is in use by grid G10X5 - *** NOTE: Not deleted: TIME1 - *** NOTE: Axis is in use by grid GHB1 - *** NOTE: Not deleted: TIME2 - *** NOTE: Axis is in use by grid GJR1 - *** NOTE: Not deleted: TIME5 - *** NOTE: Axis is in use by grid GQO1 - *** NOTE: Not deleted: TIME6 - *** NOTE: Axis is in use by grid GCQ1 - *** NOTE: Not deleted: TAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Not deleted: X4 - *** NOTE: Axis is in use by grid G4D - *** NOTE: Not deleted: Y4 - *** NOTE: Axis is in use by grid G4D - *** NOTE: Not deleted: Z4 - *** NOTE: Axis is in use by grid G4D - *** NOTE: Not deleted: T4 - *** NOTE: Axis is in use by grid G4D - *** NOTE: Not deleted: XCHANNEL - *** NOTE: Axis is in use by grid GSIGMA - *** NOTE: Not deleted: YRISE - *** NOTE: Axis is in use by grid GSIGMA - *** NOTE: Not deleted: ZLAYER - *** NOTE: Axis is in use by grid GSIGMA - *** NOTE: Not deleted: TIME - *** NOTE: Axis is in use by grid GSIGMA - *** NOTE: Not deleted: Z1 - *** NOTE: Axis is in use by grid G1 - *** NOTE: Not deleted: TCAL - *** NOTE: Axis is in use by grid GSRC - *** NOTE: Not deleted: XTROP - *** NOTE: Axis is in use by grid GXYT - *** NOTE: Not deleted: YTROP - *** NOTE: Axis is in use by grid GXYT - *** NOTE: Not deleted: ZAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Not deleted: Y1 - *** NOTE: Axis is in use by grid GSRC - *** NOTE: Not deleted: Y2 - *** NOTE: Axis is in use by grid G10X2 - *** NOTE: Not deleted: JMONTHS - *** NOTE: Axis is in use by grid JGRID - *** NOTE: Not deleted: MONTHT - *** NOTE: Axis is in use by grid TGRID - *** NOTE: Not deleted: X10 - *** NOTE: Axis is in use by grid G10X5 - *** NOTE: Not deleted: YAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Not deleted: TIME3 - *** NOTE: Axis is in use by grid GLB1 - *** NOTE: Not deleted: COADSX - *** NOTE: Axis is in use by grid GG - *** NOTE: Not deleted: YAXLEVITR1_90 - *** NOTE: Axis is in use by grid GG2 - *** NOTE: Not deleted: XAXLEVITR1_160 - *** NOTE: Axis is in use by grid GG1 - *** NOTE: Not deleted: PSYT - *** NOTE: Axis is in use by grid GY - *** NOTE: Not deleted: PSXU - *** NOTE: Axis is in use by grid G5DAY - *** NOTE: Not deleted: COADSY - *** NOTE: Axis is in use by grid GG1 - *** NOTE: Not deleted: (AX009) - *** NOTE: Axis is in use by grid GG3 - *** NOTE: Not deleted: PSZT - *** NOTE: Axis is in use by grid G5DAY - *** NOTE: Not deleted: PSYU - *** NOTE: Axis is in use by grid G5DAY - *** NOTE: Not deleted: TIME7 - *** NOTE: Axis is in use by grid GXYT - *** NOTE: Not deleted: PSZW - *** NOTE: Axis is in use by grid G5_10 - *** NOTE: Not deleted: ZAXLEVITR1_1 - *** NOTE: Axis is in use by grid GG2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_subspan_modulo - LISTing to file test_mod.cdf - LISTing to file test_mod.cdf - LISTing to file test_mod.cdf - **ERROR: improper grid or axis definition: Axis length exceeds modulo length -define axis/x=130e:500:10/modulo=360 xsub - LISTing to file test_mod.cdf - LISTing to file test_mod.cdf - LISTing to file test_mod.cdf - LISTing to file test_mod.cdf - LISTing to file test_mod.cdf - LISTing to file test_mod.cdf - LISTing to file test_mod.cdf - LISTing to file test_subspan_modulo.nc - LISTing to file test_subspan_modulo.nc - LISTing to file test_subspan_modulo.nc - LISTing to file test_subspan_modulo.nc - LISTing to file test_subspan_modulo.nc - LISTing to file test_subspan_modulo.nc - LISTing to file test_subspan_modulo.nc - *** NOTE: Not using NetCDF strides for multi-cycle modulo - *** NOTE: Stride value not a factor of axis length - *** NOTE: Not using NetCDF strides for multi-cycle modulo - *** NOTE: Stride value not a factor of axis length - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dots - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_lev_symbols - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_mode_logo_lab - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_modulo_attribute - *** NOTE: Undecipherable value of netCDF attribute modulo on variable lon_moderr - *** NOTE: modulo = "j" - *** NOTE: Undecipherable value of netCDF attribute modulo on variable time_moderr - *** NOTE: modulo = "j" - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn550_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn551_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Re-defining viewport MID - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Re-defining viewport MID1 -Re-defining viewport MID2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn552_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: value out of legal range: # of contour levels > 500 (3283) -CONTOUR/L=1/LEV=0.01d sst - **ERROR: value out of legal range: # of contour levels > 500 (3283) -CONTOUR/FILL/L=1/LEV=0.01d sst - **ERROR: value out of legal range: # of shade levels > 500 (3283) -SHADE/L=1/LEV=0.01d sst - **ERROR: value out of legal range: # of levels > 500 (4094) -POLYGON/KEY/LEV=0.01d/coord_ax=Z PLMxpoly+PLMxpolymark, PLMypoly+PLMypolymark, PLMpolydata - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Valid calendars are GREGORIAN,NOLEAP,JULIAN,360_DAY,ALL_LEAP,PROLEPTIC_GREGORIAN - *** NOTE: calendar attribute on axis "TIME" is not recognized: BADNAME - *** NOTE: A dummy axis of subscripts will be used - *** NOTE: Valid calendars are GREGORIAN,NOLEAP,JULIAN,360_DAY,ALL_LEAP,PROLEPTIC_GREGORIAN - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -rm: cannot remove `input.txt': No such file or directory -ls: cannot access input.txt: No such file or directory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis YAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: invalid command: use RETURN= shape,size,grid,title,bad,t0,f0,units,dset, - dsetnum,dsetpath,dsettitle,*size,*start,*end, - *units,*axis,nc_scale,nc_offset,user_scale,user_offset, - calendar,dtype,xmod,tmod,status,isDepth,isReady,defined - axy, return=xx -MESSAGE/CONTINUE `axy, return=xx` - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX - LISTing to file a.dat - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis YAX -Replacing definition of axis Z1 - *** NOTE: /UNIT=MONTHS is ambiguous ... using 1/12 of 365.2425 days - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file clim.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis "LONGITUDE" is irregular. Ignoring erroneous point_spacing=even attribute. - *** NOTE: Axis has repeated values -- micro-adjusting LONGITUDE - *** NOTE: Axis "LATITUDE" is irregular. Ignoring erroneous point_spacing=even attribute. - *** NOTE: Axis has repeated values -- micro-adjusting LATITUDE - *** NOTE: Axis has repeated values -- micro-adjusting TIME - **ERROR: illegal limits: "DUMMY" does not exist at T=01-JAN-1990 00:00 - Axis extremes are T=31-DEC-1997 12:00:30-JAN-1998 12:00 -list/t=1-jan-1990 dummy - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_set_var_scale_off.jnl - **ERROR: invalid command: Can SET VARIABLE/OFFSET= only with NetCDF datasets -SET VAR/OFFSET=1 x1 - **ERROR: invalid command: Can SET VARIABLE/SCALEFAC= only with NetCDF datasets -SET VAR/SCALE=10 x2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_longvarnames.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file longvname.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file longvname.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_shakey.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_eof_4d.jnl - LISTing to file eofsp.cdf - LISTing to file eofti.cdf - LISTing to file eofst.cdf - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_abstract_axis_names.jnl - LISTing to file confuse_xz.nc - LISTing to file confuse_yz.nc - LISTing to file confuse_yt.nc - LISTing to file confuse_yzt.nc - LISTing to file confuse_xz.nc - LISTing to file confuse_yz.nc - LISTing to file confuse_yt.nc - LISTing to file confuse_yzt.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_many_polygons.jnl -Replacing definition of axis YQ - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_fill_irregular.jnl -Replacing definition of axis TAX -Replacing definition of axis XAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_xml_output.jnl - LISTing to file a.nc - LISTing to file b.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -SHO VAR/XML -SHO VAR/XML -SHO VAR/XML -SHO VAR/XML -SHO VAR/XML -SHOW VAR/XML -SHOW VAR/XML -SHOW VAR/XML - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_test_nan.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn553_bug_fixes.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_graticules.jnl - Using every 5th vector in the X direction - Using every 3th vector in the Y direction - Using every 2th vector in the X direction - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: /UNIT=MONTHS is ambiguous ... using 1/12 of 365.2425 days -Replacing definition of axis TAX -Replacing definition of axis TAX -Replacing definition of axis TAX -Replacing definition of axis TAX -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_repeat_range.jnl - TEMPORARY data cleared from memory - **ERROR: invalid command: REPEAT/NAME requires /RANGE -rep/name=a say `a` - **ERROR: command syntax: L is a pseudo-variable; cannot use with REPEAT/RANGE/NAME. Instead use REPEAT/L= -rep/range=1:3/name=L (use coads_climatology; list/nohead [sst=I=1,j=1]) - **ERROR: command syntax: I is a pseudo-variable; cannot use with REPEAT/RANGE/NAME. Instead use REPEAT/I= -rep/range=1:3/name=I (use coads_climatology; list/nohead [sst]) - **ERROR: command syntax: j is a pseudo-variable; cannot use with REPEAT/RANGE/NAME. Instead use REPEAT/j= -rep/range=1:3/name=j (use coads_climatology; list/nohead [sst]) - **ERROR: command syntax: k is a pseudo-variable; cannot use with REPEAT/RANGE/NAME. Instead use REPEAT/k= -rep/range=1:3/name=k (use coads_climatology; list/nohead [sst]) - **ERROR: command syntax: X is a pseudo-variable; cannot use with REPEAT/RANGE/NAME. Instead use REPEAT/X= -rep/range=1:3/name=X (use coads_climatology; list/nohead [sst]) - **ERROR: command syntax: y is a pseudo-variable; cannot use with REPEAT/RANGE/NAME. Instead use REPEAT/y= -rep/range=1:3/name=y (use coads_climatology; list/nohead [sst]) - **ERROR: command syntax: z is a pseudo-variable; cannot use with REPEAT/RANGE/NAME. Instead use REPEAT/z= -rep/range=1:3/name=z (use coads_climatology; list/nohead [sst]) - **ERROR: command syntax: tbox is a pseudo-variable; cannot use with REPEAT/RANGE/NAME= -rep/range=1:3/name=tbox (use coads_climatology; list/nohead[sst,x=181,y=0,t=`tbox`]) - **ERROR: command syntax: xboxlo is a pseudo-variable; cannot use with REPEAT/RANGE/NAME= -rep/range=1:3/name=xboxlo (list/nohead xboxlo) - **ERROR: command syntax: nested REPEAT loops with the same counter name a -repeat/range=3:1:-1/name=a list a - **ERROR: command syntax: nested REPEAT loops with the same counter name a -repeat/range=3:1:-1/name=a list a - **ERROR: command syntax: nested REPEAT loops with the same counter name a -repeat/range=3:1:-1/name=a list a - **ERROR: command syntax: nested REPEAT loops with the same counter name a -repeat/range=3:1:-1/name=a list a - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn554_bug_fixes.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: illegal limits: "TEMP" does not exist at T=01-AUG-1980 00:00:01-JAN-1982 00:00 - Axis extremes are T=14-AUG-1982 11:00:13-JAN-1983 13:00 -list/t=1-aug-1980:1-jan-1982/i=92/j=35 temp - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis YAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX1 -Replacing definition of axis TAX2 -Replacing definition of axis TAX1 -Replacing definition of axis TAX2 -Replacing definition of axis TAX1 -Replacing definition of axis TAX2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -Replacing definition of grid AGRID - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - *** NOTE: Not using NetCDF strides for multi-cycle modulo - *** NOTE: Stride value not a factor of axis length - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis X_AX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - TEMPORARY data cleared from memory - TEMPORARY data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis YAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_bounds.jnl - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc -Replacing definition of axis TAX -Replacing definition of axis TAX - *** NOTE: Axis definition error on axis: TAX - *** NOTE: Bounds given describe non-contiguous axis cells - *** NOTE: Using the LOWER bound specified for each axis cell -Replacing definition of axis TAX - **ERROR: improper grid or axis definition: BOUNDS specified do not correctly enclose coordinate points -def axis/t/bounds tax={1.2,2,3.2,5,7,8.8,9}, {0.5,1.5,1.5,2.5,2.5,3.5,3.5,6.5,6.5,7.5,7.5,8.5,8.5,9.5} - **ERROR: improper grid or axis definition: BOUNDS specified do not correctly enclose coordinate points -def axis/t/bounds tax={0.1,2,3.2,5,7,8,9}, {0.5,1.5,1.5,2.5,2.5,3.5,3.5,6.5,6.5,7.5,7.5,8.5,8.5,9.5} - **ERROR: improper grid or axis definition: BOUNDS specified do not correctly enclose coordinate points -def axis/t/bounds tax={0,2,3.2,5,7,8,9.9}, {0.5,1.5,1.5,2.5,2.5,3.5,3.5,6.5,6.5,7.5,7.5,8.5,8.5,9.5} - **ERROR: improper grid or axis definition: BOUNDS specified do not correctly enclose coordinate points -def axis/t/bounds tax={0,2,3.2,5,7,8,9.9}, {0.5,1.5,2.5,3.5,6.5,7.5,8.5,9.5} - **ERROR: improper grid or axis definition: dimension of bounds (15) must be 2*N or N+1, N=number of axis coordinates (7) -def axis/t/bounds tax={1.2,2,3.2,5,7,8.4,9}, {0.5,1.5,1.5,2.5,2.5,3.5,3.5,6.5,6.5,7.5,7.5,8.5,8.5,9.5,10.5} - *** NOTE: Axis definition error on axis: TAX. Bounds describe cells that overlap one another - **ERROR: improper grid or axis definition: BOUNDS specified do not correctly enclose coordinate points -def axis/t/bounds tax= {12, 12.2, 36, 36.2, 60, 60.2, 84, 84.2, 108} , {0,24, 0,24, 24,48, 24,48, 48,72, 48,72, 72,96, 72,96, 96,120} - *** NOTE: Not deleted: TAX - *** NOTE: Axis is in use by grid GFORMAT - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - *** NOTE: Cannot have both /BOUNDS and /EDGES Ignoring /EDGES - LISTing to file a.nc -Replacing definition of axis XAX -Replacing definition of axis ZAX -Replacing definition of axis TAX - LISTing to file irrxzt.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - *** NOTE: Appending to NetCDF record axis which has no bounds attribute. - *** NOTE: This will result in incorrect box sizes on record axis: MONTH_REG - *** NOTE: Write the data initially with the /BOUNDS qualifier - LISTing to file a.nc - LISTing to file a.nc - *** NOTE: Axis definition error on axis: TGAP - *** NOTE: Bounds given describe non-contiguous axis cells - *** NOTE: Using the LOWER bound specified for each axis cell - *** NOTE: Error in bounds "TAX_bnds" or bounds do not enclose point on axis TAX - *** NOTE: Substituting coordinate midpoints - *** NOTE: Axis definition error on axis: TAX. Bounds describe cells that overlap one another - *** NOTE: Error in bounds "TAX_bnds" or bounds do not enclose point on axis TAX - *** NOTE: Substituting coordinate midpoints - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_all_leap.jnl -Replacing definition of grid TGRID - **ERROR: command syntax: Invalid calendar name. Names are GREGORIAN, NOLEAP, JULIAN, 360_DAY, ALL_LEAP, PROLEPTIC_GREGORIAN -def axis/t/cal=nogood/t=1-jan-2000:1-jan-2010:1/units=months tax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_reset_attributes.jnl - *** NOTE: Units not recognized: something - *** NOTE: They will not be convertible: - *** NOTE: Units not recognized: something - *** NOTE: They will not be convertible: - *** NOTE: Units not recognized: zorro - *** NOTE: They will not be convertible: - *** NOTE: Units not recognized for T axis: meters - *** NOTE: They will not be convertible - *** NOTE: Units not recognized for Y axis: seconds - *** NOTE: They will not be convertible -Replacing definition of axis TAX -Replacing definition of axis XAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn570_bug_fixes.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: /UNIT=MONTHS ... using 1/12 of 365.00 days -Replacing definition of axis TAX -Replacing definition of axis ZAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX - LISTing to file xlong.nc - LISTing to file xlongshift.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_modstats.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_mc_vary_scale.jnl - TEMPORARY data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot_nokey.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn580_bug_fixes.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis YAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis YAX -Replacing definition of axis ZAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis YAX -Replacing definition of axis XAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XFINE -Replacing definition of axis YFINE - LISTing to file fine.dat - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: /UNIT=MONTHS ... using 1/12 of 365.00 days -Replacing definition of axis TAX - LISTing to file aa.nc - LISTing to file cc.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: First argument is a letter of the alphabet -query/ignore $1%q|a|b|c|d|greetings|hello|goodbye" - *** NOTE: Argument $3 was missing or empty. - *** NOTE: Valid argument $3 choices are: hello|goodbye - **ERROR: my error message -message/continue ($test2"really hello|bye|") - *** NOTE: symbol t2 was missing or empty. - *** NOTE: Valid symbol t2 choices are: solong>really hello|bye| - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: invalid command: delta non-positive on X axis of EX#1 -list/l=1/j=40/i=0:300:0 sst - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file 10a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_inf_levels.jnl -Replacing definition of axis XQ -Replacing definition of axis YQ - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regulart.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_labwid.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_redefine_taxis_mc.jnl -Replacing definition of axis TIME14 - *** NOTE: grid GHB2 used by data set coads_clim - *** NOTE: Redefinition may alter apparent contents of data set -Replacing definition of axis TIME14 - *** NOTE: grid GHB2 used by data set coads_clim - *** NOTE: Redefinition may alter apparent contents of data set - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_illegal_axisname.jnl -Replacing definition of axis COADSX.ILLEGAL - *** NOTE: grid GEX1 used by data set illeg_axname - *** NOTE: Redefinition may alter apparent contents of data set - *** NOTE: grid GEX2 used by data set illeg_axname - *** NOTE: Redefinition may alter apparent contents of data set -Replacing definition of axis COADSY.ILLEGAL - *** NOTE: grid GEX3 used by data set illeg_axname - *** NOTE: Redefinition may alter apparent contents of data set - *** NOTE: grid GEX1 used by data set illeg_axname - *** NOTE: Redefinition may alter apparent contents of data set - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_exit_script.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_exit_cycle.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_curv_mod.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_shade_keycont.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn581_bug_fixes.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TIME - LISTing to file a.nc - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file longtitle.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file longtitle.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: /UNIT=MONTHS is ambiguous ... using 1/12 of 365.2425 days - **ERROR: improper grid or axis definition: error in start,end,delta -DEFINE AXIS/T0="1-JAN-1861"/UNITS=months/t myt - *** NOTE: /UNIT=MONTHS ... using 1/12 of 365.00 days - **ERROR: improper grid or axis definition: error in start,end,delta -DEFINE AXIS/T0="1-JAN-1861"/UNITS=months/T/CALENDAR=noleap myt - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file t0_cdc.nc - LISTing to file my_cdc_timeaxis.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TGREG - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_tab_comma_multivar.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_element_functions.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_long_revision_num.jnl - LISTing to file revision.nc - -Bailing out of external function "ffta": - Time axis must be a regular axis - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_window_title.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_last_error.jnl - **ERROR: command syntax: IF I GT 3 THEN ( IF I LT 5 THEN I ELSE -9 ) ELSE .333 - Cannot use multiple IFs in an expression -LIST/ORDER=X IF I GT 3 THEN ( IF I LT 5 THEN I ELSE -9 ) ELSE .333 - **ERROR: command syntax: IF I LT 5 THEN I ELSE -9 - ELSE before - is illegal - negative constants need to be enclosed in parentheses -DEFINE VARIABLE A = IF I LT 5 THEN I ELSE -9 - **ERROR: variable unknown or not in data set: A1 -load a1,a2,a3 - **TMAP ERR: non-existent or not on line - nofile.nc -set data nofile.nc - **ERROR: invalid command: REPEAT/NAME requires /RANGE -repeat/name=a (say `a`) - **ERROR: command syntax: L is a pseudo-variable; cannot use with REPEAT/RANGE/NAME. Instead use REPEAT/L= -repeat/range=1:3/name=L (use coads_climatology; list/nohead [sst=I=1,j=1]) - **ERROR: error in external function -LOAD vw_fft - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_deg_min.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dp_readscale.jnl - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_bounds_defineax.jnl -Replacing definition of axis TAX -Replacing definition of axis XAX -Replacing definition of axis ZAX -Replacing definition of axis TAX - LISTing to file irrxzt.nc -Replacing definition of axis ZAX -Replacing definition of axis ZAX2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_attributes.jnl - **ERROR: invalid command: SHOW ATTRIBUTE given with no argument -sho att/all - **ERROR: unknown data set: d=2 -show att/all temp[d=2] - **ERROR: attribute undefined or invalid attribute name: salt.nonsense - attribute nonsense not found for variable SALT -sho att salt.nonsense - **ERROR: invalid command: dataset not found for varname.attname . -sho att/all . - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis l - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis l - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Changing the value of attribute temp.pp - *** NOTE: Changing the length of attribute temp.pp - *** NOTE: Changing the value of attribute temp.some_text - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Changing the value of attribute temp.long_name - *** NOTE: Changing the value of attribute temp.units - *** NOTE: Changing the value of attribute temp.missing_value - *** NOTE: Changing the value of attribute temp.missing_value - LISTing to file a.nc - LISTing to file a.nc - *** NOTE: Changing the value of attribute (PSZT1).positive - *** NOTE: Changing the type of attribute (coadsx).modulo - *** NOTE: Changing the value of attribute (coadsx).modulo - *** NOTE: Changing the value of attribute (TIME7).time_origin - **ERROR: command syntax: enclose coordinate variable name in parentheses -list coadsx.units - **ERROR: variable unknown or not in data set: COADSX.UNITS -list coadsx.units - **ERROR: invalid command: Cannot change attribute for direction of axis. -set att (COADSX81_81).axis = "Z" - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Changing the value of attribute temp.pp - *** NOTE: Changing the length of attribute temp.pp - *** NOTE: Changing the value of attribute temp.some_text - *** NOTE: Changing the type of attribute temp.pp - *** NOTE: Changing the value of attribute temp.pp - *** NOTE: Changing the type of attribute temp.some_text - *** NOTE: Changing the value of attribute temp.some_text - *** NOTE: Changing the value of attribute temp.long_name - *** NOTE: Changing the value of attribute temp.units - *** NOTE: Changing the type of attribute temp.pp - *** NOTE: Changing the value of attribute temp.pp - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc -Replacing definition of axis XAX -Replacing definition of axis YAX -Replacing definition of axis ZAX -Replacing definition of axis TAX -Replacing definition of grid MYGRID - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - *** NOTE: Converting data type of missing_value NC_FLOAT to match output type of variable NC_INT - LISTing to file a.nc - *** NOTE: Converting data type of missing_value NC_FLOAT to match output type of variable NC_DOUBLE - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis l - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - *** NOTE: Changing the value of attribute (COADSX).point_spacing - *** NOTE: Changing the value of attribute (COADSY).point_spacing - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - *** NOTE: Converting data type of missing_value NC_FLOAT to match output type of variable NC_INT -NetCDF: Numeric conversion not representable (OPeNDAP/netCDF Error code -60) - data in attribute missing_value not representable in output type NC_INT -LIST/FORMAT=CDF/file=a.nc/clobber/x=132w/k=1 temp - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis l - **ERROR: unknown or invalid argument: Can SET VARIABLE/OUTTYPE=INPUT, DOUBLE, FLOAT, INT, SHORT, BYTE -set var/outtype=char broiled - **ERROR: unknown or invalid argument: Can SET VARIABLE/OUTTYPE=INPUT, DOUBLE, FLOAT, INT, SHORT, BYTE -set var/outtype=garbage broiled - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Changing the value of attribute (PSXT).units - LISTing to file a.nc - LISTing to file a.nc - *** NOTE: Changing the value of attribute (PSXT).units - *** NOTE: Changing the value of attribute (PSYT1).units - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis X2AX - *** NOTE: Changing the value of attribute (z4ax).positive - LISTing to file string4d.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Changing the value of attribute (TIME17).units - *** NOTE: Changing the value of attribute (TIME17).units - *** NOTE: Changing the value of attribute (TIME17).time_origin - *** NOTE: Changing the value of attribute (TIME17).time_origin - *** NOTE: /UNIT=MONTHS is ambiguous ... using 1/12 of 365.2425 days -Replacing definition of axis TIME - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis l - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc -curl error details: - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_transforms.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_variance.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_linecolors.jnl - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: New # of line colors will take effect on next new window: SET WIN/NEW then define pen colors - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - Using every 3th vector in the X direction - Using every 4th vector in the Y direction - *** NOTE: New number of line colors will take effect on next new window: SET WIN/NEW or SET WIN/CLEAR - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cdf_errmsg.jnl - **TMAP ERR: non-existent or not on line - this_is_not_a_file.nc -SET DAT/FORM=CDF this_is_not_a_file.nc - **Internet Data error - NetCDF: file not found (OPeNDAP/netCDF Error code -90) - Data set: http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_nothing.cdf -SET DAT/FORM=CDF "http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_nothing.cdf" - **Internet Data error - NetCDF: I/O failure (OPeNDAP/netCDF Error code -68) - Data set: http://noserver/a/nofile.cdf -SET DAT/FORM=CDF "http://noserver/a/nofile.cdf" - LISTing to file asc.dat - **netCDF error - NetCDF: Unknown file format (OPeNDAP/netCDF Error code -51) - Data set: ./asc.nc -SET DAT/FORM=CDF asc.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn600_bug_fixes.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file err581_subspanx_fill_bug.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XIR - LISTing to file xyir.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: /UNIT=MONTHS ... using 1/12 of 360.00 days - LISTing to file t3file.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file 0000_a.nc - LISTing to file subdir/a.nc - LISTing to file subdir/0000_a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: /UNIT=MONTHS is ambiguous ... using 1/12 of 365.2425 days -Replacing definition of axis TAX - LISTing to file a.nc - *** NOTE: Not deleted: TAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: cannot parse "units since date", date= "event"; leaving units string - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - *** NOTE: Invalid I axis limits ignored: TEMP - **ERROR: dimensions improperly specified: specified data is not a line - - its a 2D region: "plot/i=100/k=1 temp[x=122.5W]" -plot/i=100/k=1 temp[x=122.5W] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis XAX -Replacing definition of axis XAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn601_bug_fixes.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file b.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file b.nc - LISTing to file b.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: /UNIT=MONTHS is ambiguous ... using 1/12 of 365.2425 days -Replacing definition of axis TIME21 - *** NOTE: grid GSQ1 used by data set coads_climatology - *** NOTE: Redefinition may alter apparent contents of data set - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TIME - LISTing to file a.nc - LISTing to file t2.nc - LISTing to file t12.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file out.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_set_strides.jnl - **ERROR: invalid command: it is a child axis already -set axis/stride=2/offset=1 (AX052) - **ERROR: invalid command: not a strided axis: COADSX -cancel axis/stride COADSX - **ERROR: invalid command: offset must be less than stride value -set axis/stride=2/offset=4 COADSX - **ERROR: invalid command: not a strided axis: COADSX -cancel axis/stride COADSX - *** NOTE: Stride value not an integer factor of axis length: Axis loses modulo property - LISTing to file d2.nc - *** NOTE: Stride value not an integer factor of axis length: Axis loses modulo property - **ERROR: invalid command: unknown axis: NORMAL -set axis/stride=2 NORMAL - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_lsl_lowpass.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_return_xmod_tmod.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn602_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file noleap.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Units on axis "ALTITUDE" are not recognized: Pa - *** NOTE: They will not be convertible: - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file tripolar_missing_lon.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -curl error details: - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_modnbd.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_fifty_files.jnl - *** NOTE: Axis "LONGITUDE" is irregular. Ignoring erroneous point_spacing=even attribute. - *** NOTE: Axis has repeated values -- micro-adjusting LONGITUDE - *** NOTE: Axis "LATITUDE" is irregular. Ignoring erroneous point_spacing=even attribute. - *** NOTE: Axis has repeated values -- micro-adjusting LATITUDE - *** NOTE: Axis has repeated values -- micro-adjusting TIME - *** NOTE: Error in bounds "TAX_bnds" or bounds do not enclose point on axis TAX - *** NOTE: Substituting coordinate midpoints - *** NOTE: Valid calendars are GREGORIAN,NOLEAP,JULIAN,360_DAY,ALL_LEAP,PROLEPTIC_GREGORIAN - *** NOTE: calendar attribute on axis "TIME" is not recognized: BADNAME - *** NOTE: A dummy axis of subscripts will be used - *** NOTE: Valid calendars are GREGORIAN,NOLEAP,JULIAN,360_DAY,ALL_LEAP,PROLEPTIC_GREGORIAN - *** NOTE: Axis definition error on axis: TGAP - *** NOTE: Bounds given describe non-contiguous axis cells - *** NOTE: Using the LOWER bound specified for each axis cell - *** NOTE: Undecipherable value of netCDF attribute modulo on variable lon_moderr - *** NOTE: modulo = "j" - *** NOTE: Undecipherable value of netCDF attribute modulo on variable time_moderr - *** NOTE: modulo = "j" - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis l - *** NOTE: Units on axis "ALTITUDE" are not recognized: Pa - *** NOTE: They will not be convertible: - *** NOTE: regarding ./data/climatological_axes.cdf ... - *** NOTE: Climatological axes SEASONAL_REG, MONTH_REG, and MONTH_IRREG defined - *** NOTE: Coordinates out of order or missing on axis UNORDERED_AXIS at subscript 4 - *** NOTE: A dummy axis of subscripts will be used - *** NOTE: Coordinates out of order or missing on axis GAPPY_AXIS at subscript 3 - *** NOTE: A dummy axis of subscripts will be used - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis BACKWARDS_AXIS - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis Y1010_REV - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn603_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_set_var_name.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_memory_symbol - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn605_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn608_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file b.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis YAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: invalid command: "300": Number of contour levels must be between 1 and 250 -SHADE/LEV=300/I=1:100/J=1:100 i+j - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_shade_trim - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_mode_nlevels - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn61_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_test_opendap - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn611_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX - LISTing to file a.nc - LISTing to file b.nc - LISTing to file b.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file z1.nc - LISTing to file z2.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TIME -Replacing definition of axis TIME - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TIME - LISTing to file a.nc - LISTing to file b.nc - LISTing to file b.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_no_valid_on_plot - Using every 5th vector in the X direction - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_median -Replacing definition of axis ZAX - **ERROR: value out of legal range: Median smoother length must be odd -plot/trans var, var[z=@med:4] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn614_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TIME -Replacing definition of axis TIME - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TIME - LISTing to file a.nc - LISTing to file b.nc - LISTing to file b.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Units on axis "ENS" are not recognized: count - *** NOTE: They will not be convertible: - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file 1a.dat - LISTing to file 3a.dat - LISTing to file 5a.dat - LISTing to file 7a.dat - LISTing to file 9a.dat - LISTing to file 11a.dat - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: variable unknown or not in data set: A_REGRID[D=1,GT=B[D=2]@MOD] -LIST a_regrid[D=1,GT=b[D=2]@MOD] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file dat.dat - LISTing to file a.nc - LISTing to file unf.dat - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file lonlat.dat - LISTing to file lonlat.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX -Replacing definition of grid GG - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file b.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_mode_nodata_lab - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_proleptic_gregorian_calendar - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_string_ngd_nbd - *** NOTE: @NGD of string variable, counting null strings as missing - *** NOTE: @NBD of string variable, counting null strings as missing -Replacing definition of axis XAX -Replacing definition of axis YAX - *** NOTE: @NGD of string variable, counting null strings as missing - *** NOTE: @NGD of string variable, counting null strings as missing - *** NOTE: @NGD of string variable, counting null strings as missing -Replacing definition of axis ZAX - *** NOTE: @NBD of string variable, counting null strings as missing - *** NOTE: @NBD of string variable, counting null strings as missing - *** NOTE: @NBD of string variable, counting null strings as missing -Replacing definition of axis TAX - *** NOTE: @NGD of string variable, counting null strings as missing - *** NOTE: @NGD of string variable, counting null strings as missing - *** NOTE: @NGD of string variable, counting null strings as missing -Replacing definition of axis XAX -Replacing definition of axis YAX -Replacing definition of axis ZAX -Replacing definition of axis TAX - *** NOTE: @NBD of string variable, counting null strings as missing - *** NOTE: @NBD of string variable, counting null strings as missing - *** NOTE: @NGD of string variable, counting null strings as missing - *** NOTE: @NGD of string variable, counting null strings as missing - *** NOTE: @NBD of string variable, counting null strings as missing - *** NOTE: @NGD of string variable, counting null strings as missing - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cat_string - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_sort_strings - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_samplexyt -Replacing definition of axis X1 -Replacing definition of axis Y1 -Replacing definition of grid G1 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_last_go_file.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cancel_upcase_uservar.jnl - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cdf_keepax.jnl - LISTing to file test0a.cdf - LISTing to file test0b.cdf - LISTing to file test0c.cdf - LISTing to file test0d.cdf - LISTing to file test0e.cdf - LISTing to file test0f.cdf - LISTing to file test0g.cdf - LISTing to file test0h.cdf - LISTing to file test0i.cdf - LISTing to file test0j.cdf - LISTing to file test0k.cdf - LISTing to file test0l.cdf - LISTing to file test0m.cdf - LISTing to file test0n.cdf - LISTing to file test0o.cdf - LISTing to file test0p.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - LISTing to file test_abs.cdf - *** NOTE: Appending to NetCDF record axis which has no bounds attribute. - *** NOTE: This will result in incorrect box sizes on record axis: TCENTURY - *** NOTE: Write the data initially with the /BOUNDS qualifier - LISTing to file test2.cdf - LISTing to file FL.nc - LISTing to file FTLON.nc - **ERROR: invalid command: /CLOBBER not specified and file exists: test_abs.cdf -list/format=cdf/keep_axnames/l=1:10/file=test_abs.cdf l - LISTing to file test_abs.cdf - **TMAP ERR: Requested data range is outside of data set limits - inconsistent I axis length for IL -list/format=cdf/keep_axnames/i=5:15/l=5:10/append/file=test_abs.cdf il - LISTing to file test_abs.cdf - **TMAP ERR: Requested data range is outside of data set limits - Expected: IJ[J= 20 : 25 ] Found: IJ[J= 1 : 20 ] -list/format=cdf/keep_axnames/i=1:10/j=20:25/append/file=test_abs.cdf ij - LISTing to file test_abs.cdf - **TMAP ERR: attempt to redefine line - # of dims in variable IJL2 is inconsist. w/ CDF file -list/format=cdf/keep_axnames/append/file=test_abs.cdf ijl2 - **ERROR: variable unknown or not in data set: IJKL[K=@AVE] -list/format=cdf/keep_axnames/append/file=test_abs.cdf ijkl[k=@ave] - LISTing to file test_abs.cdf - **TMAP ERR: error in line definition - disordered output coordinate value: 363 Axis: TCENTURY -list/format=cdf/keep_axnames/l=13/append/file=test_abs.cdf l1 - LISTing to file FI.nc - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - *** NOTE: /KEEP_AXISNAMES ignored. Inconsistent w/ enhanced heading. - LISTing to file test_fil0.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - LISTing to file test_fil.cdf - *** NOTE: Writing a subset of data with original axis names - *** NOTE: Axis was already written with a different set of coordinates - **TMAP ERR: attempt to redefine line - axis PSXT doesnt match CDF file -list/format=cdf/keep_axnames/append/file=test_fil.cdf ijk - LISTing to file test_fil.cdf - *** NOTE: Writing a subset of data with original axis names - *** NOTE: Axis was already written with a different set of coordinates - **TMAP ERR: attempt to redefine line - axis PSXT doesnt match CDF file -list/format=cdf/keep_axnames/append/file=test_fil.cdf ikl - LISTing to file test_fil.cdf - *** NOTE: Writing a subset of data with original axis names - *** NOTE: Axis was already written with a different set of coordinates - **TMAP ERR: attempt to redefine line - axis PSXT doesnt match CDF file -list/format=cdf/keep_axnames/append/file=test_fil.cdf ijl - LISTing to file test_fil.cdf - *** NOTE: Writing a subset of data with original axis names - *** NOTE: Axis was already written with a different set of coordinates - **TMAP ERR: attempt to redefine line - axis PSYT doesnt match CDF file -list/format=cdf/keep_axnames/append/file=test_fil.cdf jkl - LISTing to file test_fil.cdf - *** NOTE: Writing a subset of data with original axis names - *** NOTE: Axis was already written with a different set of coordinates - **TMAP ERR: attempt to redefine line - axis PSXU doesnt match CDF file -list/format=cdf/keep_axnames/append/file=test_fil.cdf ijkl - LISTing to file test_fil.cdf - *** NOTE: Writing a subset of data with original axis names - *** NOTE: Axis was already written with a different set of coordinates - **TMAP ERR: attempt to redefine line - axis PSXT doesnt match CDF file -list/format=cdf/keep_axnames/append/file=test_fil.cdf/j=1:50/l=2:3 ijl - LISTing to file test_fil.cdf - *** NOTE: Writing a subset of data with original axis names - *** NOTE: Axis was already written with a different set of coordinates - **TMAP ERR: attempt to redefine line - axis PSXT doesnt match CDF file -list/format=cdf/keep_axnames/append/file=test_fil.cdf/j=51:100/l=2:3 ijl - LISTing to file test_fil.cdf - *** NOTE: Writing a subset of data with original axis names - *** NOTE: Axis was already written with a different set of coordinates - **TMAP ERR: attempt to redefine line - axis PSXU doesnt match CDF file -list/format=cdf/keep_axnames/append/file=test_fil.cdf/j=30:40/k=5/l=1:3 ijkl - LISTing to file test_fil.cdf - *** NOTE: Writing a subset of data with original axis names - *** NOTE: Axis was already written with a different set of coordinates - **TMAP ERR: attempt to redefine line - axis PSZT doesnt match CDF file -list/format=cdf/keep_axnames/append/file=test_fil.cdf iavejkl - LISTing to file test_fil.cdf - *** NOTE: Writing a subset of data with original axis names - *** NOTE: Axis was already written with a different set of coordinates - **TMAP ERR: attempt to redefine line - axis PSXU doesnt match CDF file -list/format=cdf/keep_axnames/append/file=test_fil.cdf ijavekl - LISTing to file test_fil.cdf - *** NOTE: Writing a subset of data with original axis names - *** NOTE: Axis was already written with a different set of coordinates - **TMAP ERR: attempt to redefine line - axis PSXU doesnt match CDF file -list/format=cdf/keep_axnames/append/file=test_fil.cdf ijkavel - LISTing to file test_fil.cdf - *** NOTE: Writing a subset of data with original axis names - *** NOTE: Axis was already written with a different set of coordinates - **TMAP ERR: attempt to redefine line - axis PSXU doesnt match CDF file -list/format=cdf/keep_axnames/append/file=test_fil.cdf ijklave - **ERROR: variable unknown or not in data set: IJKL -show grid ijkl - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis Y1010_REV - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_keep_axisnames.jnl - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_key_label_minmax.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn62_bug_fixes.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX -Replacing definition of grid TGRID - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_convolve.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_tax_tstep.jnl - LISTing to file a.nc -Replacing definition of axis TSEC - *** NOTE: grid GSI1 used by data set a - *** NOTE: Redefinition may alter apparent contents of data set - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_grads_z.jnl -Replacing definition of axis CAXIS - *** NOTE: grid GMY1 used by data set grads_bug_file - *** NOTE: Redefinition may alter apparent contents of data set - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_clock_syms - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn63_bug_fixes.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: /UNIT=MONTHS is ambiguous ... using 1/12 of 365.2425 days -Replacing definition of axis TAX - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: New # of line colors will take effect on next new window: SET WIN/NEW then define pen colors - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: New number of line colors will take effect on next new window: SET WIN/NEW or SET WIN/CLEAR - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis ZAXLEVITR - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file xz.nc - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file t_bug.nc -Replacing definition of axis T_AXIS - LISTing to file t_bug.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: invalid command: offset must be greater than or equal to zero -SET AXIS/STRIDE=12/OFFSET=-1 truemonth - **ERROR: invalid command: stride must be greater than zero -SET AXIS/STRIDE=-1/OFFSET=1 truemonth - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_reversed_syms - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_isdepth - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_var_hist_levels.jnl - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn64_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_long_grid_names - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis YAX -Replacing definition of grid GG123456789012345678902 - **ERROR: unknown defining grid: G=NO_EXIST12345678901234567890 -load/x=160e/y=5s temp[d=2,k=1,g=no_exist12345678901234567890] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_xml_repl - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn65_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis "LON" is irregular. Ignoring erroneous point_spacing=even attribute. - *** NOTE: Units on axis "ENS" are not recognized: count - *** NOTE: They will not be convertible: - LISTing to file mypack.nc - *** NOTE: LON1_15: Writing scaled coordinates not implemented. Suggest using nco operators on output file to pack coord values - *** NOTE: LAT1800_1800: Writing scaled coordinates not implemented. Suggest using nco operators on output file to pack coord values - *** NOTE: ENS: Writing scaled coordinates not implemented. Suggest using nco operators on output file to pack coord values - *** NOTE: TIME27: Writing scaled coordinates not implemented. Suggest using nco operators on output file to pack coord values - *** NOTE: Units on axis "ENS" are not recognized: count - *** NOTE: They will not be convertible: - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_txtype_dmy - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_n_open_dsets_sym - LISTing to file list_of_numbers.dat - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_multi_decade -Re-defining viewport V1 -Re-defining viewport V1 -Re-defining viewport V2 -Re-defining viewport V3 -Re-defining viewport V4 -Re-defining viewport V5 -Re-defining viewport V6 -Re-defining viewport V7 -Re-defining viewport V8 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_show_xml_file - LISTing to file b.nc - LISTing to file dummy.dat - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn66_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_netcdf4 - Restoring default chunk cache settings - Restoring default chunk cache settings - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - LISTing to file nc4_deflate4.nc - *** NOTE: NetCDF Classic style cannot set compression, ignoring /DEFLATE - *** NOTE: NetCDF Classic style cannot set chunking, ignoring /*CHUNK - LISTing to file nc4_nodeflate3.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - LISTing to file nc4_deflate4bigchunk.nc - LISTing to file nc4_nodeflate3.nc - LISTing to file nc4_deflate4_xyt.nc - LISTing to file nc4_deflate4_defaultchunk.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - LISTing to file nc4_inttemp_classic.nc - *** NOTE: Converting data type of missing_value NC_FLOAT to match output type of variable NC_INT - LISTing to file nc4_inttemp_set_list_deflate_chunk.nc - *** NOTE: Converting data type of missing_value NC_FLOAT to match output type of variable NC_INT - LISTing to file nc4_inttemp_shuffle_set_list_deflate_chunk.nc - *** NOTE: Converting data type of missing_value NC_FLOAT to match output type of variable NC_INT - LISTing to file nc4_inttemp_set_classic.nc - *** NOTE: Converting data type of missing_value NC_FLOAT to match output type of variable NC_INT - LISTing to file nc4_deflate4_t1.nc - **TMAP ERR: syntax error in string - If ChunkSize is set for any dimension of var, must set for all its dimensions -LIST/FORMAT=CDF/file=nc4_deflate4_t1.nc/clobber/ncformat=4/deflate/shuffle/tchunk=1 sst - LISTing to file nc4_deflate4chunktoobig.nc - **TMAP ERR: error specifying chunk sizes - TChunkSize 0 is larger than dimension length 3 -LIST/FORMAT=CDF/file=nc4_deflate4chunktoobig.nc/clobber/ncformat=4/deflate=1/xchunk=6/ychunk=18/tchunk=15 sst - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_scat2grid_bin.jnl - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - *** NOTE: Not deleted: X10 - *** NOTE: Axis is in use by grid G10X5 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_dir_symbols - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn663_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_set_axis_regular -Replacing definition of grid MYGRID - *** NOTE: Axis reset to be regular (evenly-spaced): MYX - *** NOTE: Axis is already regular: MYX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis reset to be regular (evenly-spaced): MYX1 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_set_cancel_redirect - Use the GO command to name a file of FERRET commands to be executed. - e.g. yes? GO filename - - Use "GO/HELP filename" to read documentation in the file to be executed. - Use the GO command to name a file of FERRET commands to be executed. - e.g. yes? GO filename - - Use "GO/HELP filename" to read documentation in the file to be executed. - Use the GO command to name a file of FERRET commands to be executed. - e.g. yes? GO filename - - Use "GO/HELP filename" to read documentation in the file to be executed. - Use the GO command to name a file of FERRET commands to be executed. - e.g. yes? GO filename - - Use "GO/HELP filename" to read documentation in the file to be executed. - Use the GO command to name a file of FERRET commands to be executed. - e.g. yes? GO filename - - Use "GO/HELP filename" to read documentation in the file to be executed. - Use the GO command to name a file of FERRET commands to be executed. - e.g. yes? GO filename - - Use "GO/HELP filename" to read documentation in the file to be executed. - Use the GO command to name a file of FERRET commands to be executed. - e.g. yes? GO filename - - Use "GO/HELP filename" to read documentation in the file to be executed. - Use the GO command to name a file of FERRET commands to be executed. - e.g. yes? GO filename - - Use "GO/HELP filename" to read documentation in the file to be executed. - *** NOTE: Axis is already regular: MYAXIS - **ERROR: variable unknown or not in data set: GARBAGE -show grid garbage - Use the GO command to name a file of FERRET commands to be executed. - e.g. yes? GO filename - - Use "GO/HELP filename" to read documentation in the file to be executed. - *** NOTE: stderr is not redirected - Use the GO command to name a file of FERRET commands to be executed. - e.g. yes? GO filename - - Use "GO/HELP filename" to read documentation in the file to be executed. - Use the GO command to name a file of FERRET commands to be executed. - e.g. yes? GO filename - - Use "GO/HELP filename" to read documentation in the file to be executed. - Use the GO command to name a file of FERRET commands to be executed. - e.g. yes? GO filename - - Use "GO/HELP filename" to read documentation in the file to be executed. - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_min_max_smoothers - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_vector_symbols - Using every 8th vector in the X direction - Using every 7th vector in the Y direction - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_variance_large - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_labnum_calendar - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn665_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - -Bailing out of external function "tax_year": - Function not valid for modulo time axis - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_floatstr - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn67_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis YAX -Replacing definition of axis ZAX -Replacing definition of axis YAX -Replacing definition of axis YAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file aa.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file g.nc -Replacing definition of axis YAX_DUP_AXNAMES - LISTing to file h.nc - LISTing to file gh.nc - LISTing to file justh.nc - LISTing to file justg.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_NaN_note - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis l - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: No missing_value or _FillValue attribute. Using NaN for variable: broiled - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis l - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn671_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: error in external function -list/L=15:20 tax_year(t[gt=tvar],tvar) - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file cc.nc - LISTing to file c1.nc - TEMPORARY data cleared from memory - LISTing to file c2.nc - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis lev - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn68_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAXIS - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX - *** NOTE: Adjusting Y-axis label size from 0.100 to 0.089, to avoid running off page. - *** NOTE: Adjusting Y-axis label size from 0.100 to 0.089, to avoid running off page. - *** NOTE: Adjusting Y-axis label size from 0.100 to 0.030, to avoid running off page. - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis RLATU79_961_9 - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis RLATU79_961_9 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Adjusting Y-axis label size from 0.100 to 0.089, to avoid running off page. - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: command syntax: illegal name, matches an operator: AND -DEFINE VARIABLE AND = 5 - **ERROR: command syntax: illegal name, matches an operator: OR -DEFINE VARIABLE OR = 5 - **ERROR: command syntax: illegal name, matches an operator: GT -DEFINE VARIABLE GT = 5 - **ERROR: command syntax: illegal name, matches an operator: GE -DEFINE VARIABLE GE = 5 - **ERROR: command syntax: illegal name, matches an operator: LT -DEFINE VARIABLE LT = 5 - **ERROR: command syntax: illegal name, matches an operator: LE -DEFINE VARIABLE LE = 5 - **ERROR: command syntax: illegal name, matches an operator: EQ -DEFINE VARIABLE EQ = 5 - **ERROR: command syntax: illegal name, matches an operator: NE -DEFINE VARIABLE NE = 5 - **ERROR: command syntax: illegal name, matches an operator: IF -DEFINE VARIABLE IF = 5 - **ERROR: command syntax: illegal name, matches an operator: ELSE -DEFINE VARIABLE ELSE = 5 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a1.nc - LISTing to file a2.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ifv - **ERROR: command syntax: IFV I GT 3 THEN ( IFV I LT 5 THEN I ELSE -9 ) ELSE .333 - Cannot use multiple IFs in an expression -LIST/ORDER=X IFV I GT 3 THEN ( IFV I LT 5 THEN I ELSE -9 ) ELSE .333 - **ERROR: command syntax: ifv I LT 5 THEN I ELSE -9 - ELSE before - is illegal - negative constants need to be enclosed in parentheses -DEFINE VARIABLE A = ifv I LT 5 THEN I ELSE -9 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_randu2_randn2 - TEMPORARY data cleared from memory - TEMPORARY data cleared from memory - TEMPORARY data cleared from memory - TEMPORARY data cleared from memory - TEMPORARY data cleared from memory - TEMPORARY data cleared from memory -Replacing definition of axis ZAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_cf -Replacing definition of axis XAX - LISTing to file a.nc -Replacing definition of axis YAX - LISTing to file a.nc -Replacing definition of axis TAXIS - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_repeated_coords - *** NOTE: Axis has repeated values -- micro-adjusting TMIN - *** NOTE: Coordinates out of order or missing on axis TMIN at subscript 4 - *** NOTE: A dummy axis of subscripts will be used - *** NOTE: Axis has repeated values -- micro-adjusting ... -Replacing definition of axis TNEW - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_xml_header - -Bailing out of external function "eofsvd_stat": - There are no spatial locations having complete time series. - -Bailing out of external function "eofsvd_space": - There are no spatial locations having complete time series. - -Bailing out of external function "eofsvd_tfunc": - There are no spatial locations having complete time series. - -Bailing out of external function "eof_stat": - Function EOF_STAT not available in this version of Ferret. Use EOFSVD_STAT - -Bailing out of external function "eof_space": - Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE - -Bailing out of external function "eof_space": - Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE - -Bailing out of external function "eof_space": - Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE - -Bailing out of external function "eof_space": - Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE - -Bailing out of external function "eof_space": - Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE - -Bailing out of external function "eof_tfunc": - Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC - -Bailing out of external function "eof_tfunc": - Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC - -Bailing out of external function "eof_tfunc": - Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC - -Bailing out of external function "eof_tfunc": - Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC - -Bailing out of external function "eof_tfunc": - Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC - -Bailing out of external function "eof_stat": - Function EOF_STAT not available in this version of Ferret. Use EOFSVD_STAT - -Bailing out of external function "eof_space": - Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE - -Bailing out of external function "eof_space": - Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE - -Bailing out of external function "eof_space": - Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE - -Bailing out of external function "eof_space": - Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE - -Bailing out of external function "eof_space": - Function EOF_SPACE not available in this version of Ferret. Use EOFSVD_SPACE - -Bailing out of external function "eof_tfunc": - Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC - -Bailing out of external function "eof_tfunc": - Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC - -Bailing out of external function "eof_tfunc": - Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC - -Bailing out of external function "eof_tfunc": - Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC - -Bailing out of external function "eof_tfunc": - Function EOF_TFUNC not available in this version of Ferret. Use EOFSVD_TFUNC - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_eof_simple -Replacing definition of axis YAXIS -Replacing definition of axis TAXIS -Replacing definition of axis XAXIS - **ERROR: error in external function -list eofsvd_stat(spacegap) - **ERROR: error in external function -list eofsvd_space(spacegap) - **ERROR: error in external function -list eofsvd_tfunc(spacegap) -Replacing definition of axis XAXIS - **ERROR: error in external function -list eof_stat(spacetime, 1.0) - **ERROR: error in external function -load eofs - **ERROR: error in external function -list dot_t(v1, v1) - **ERROR: error in external function -list dot_t(v1, v2) - **ERROR: error in external function -list dot_t(v2, v1) - **ERROR: error in external function -list dot_t(v2, v2) - **ERROR: error in external function -load tafs - **ERROR: error in external function -list dot_t(v1, v1) - **ERROR: error in external function -list dot_t(v1, v2) - **ERROR: error in external function -list dot_t(v2, v1) - **ERROR: error in external function -list dot_t(v2, v2) - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_eof_simple2 -Replacing definition of axis YAXIS -Replacing definition of axis TAXIS - **ERROR: error in external function -list eof_stat(spacetime, 1.0) - **ERROR: error in external function -load eofs - **ERROR: error in external function -list dot_t(v1, v1) - **ERROR: error in external function -list dot_t(v1, v2) - **ERROR: error in external function -list dot_t(v2, v1) - **ERROR: error in external function -list dot_t(v2, v2) - **ERROR: error in external function -load tafs - **ERROR: error in external function -list dot_t(v1, v1) - **ERROR: error in external function -list dot_t(v1, v2) - **ERROR: error in external function -list dot_t(v2, v1) - **ERROR: error in external function -list dot_t(v2, v2) - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_interpolate_6d - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_6d -Replacing definition of grid EVEN -Replacing definition of grid G1 -Replacing definition of grid G2 -Replacing definition of grid G3 -Replacing definition of grid G4 -Replacing definition of grid G13 -Replacing definition of grid G14 -Replacing definition of grid G23 -Replacing definition of grid G33 -Replacing definition of grid G234 -Replacing definition of grid G134 -Replacing definition of grid G124 -Replacing definition of grid G123 -Replacing definition of grid G1234 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -Replacing definition of axis XFINE -Replacing definition of axis XCOARSE -Replacing definition of axis YFINE -Replacing definition of axis YCOARSE -Replacing definition of axis XFINE -Replacing definition of axis XCOARSE -Replacing definition of axis YFINE -Replacing definition of axis YCOARSE -Replacing definition of grid G24 -Replacing definition of grid G48 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_syntax_6d - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_expressions_6d - **ERROR: command syntax: IF _m GT 3 THEN ( IF _m LT 5 THEN _m ELSE -9 ) ELSE .333 - Cannot use multiple IFs in an expression -LIST/order=e IF _m GT 3 THEN ( IF _m LT 5 THEN _m ELSE -9 ) ELSE .333 - **ERROR: command syntax: IF _m LT 5 THEN _m ELSE -9 - ELSE before - is illegal - negative constants need to be enclosed in parentheses -DEFINE VARIABLE A = IF _m LT 5 THEN _m ELSE -9 - **ERROR: variable unknown or not in data set: A1 -load a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_direction_fcns_6d - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_transforms_6d -Replacing definition of grid G5DAY -Replacing definition of axis FAX4DAY - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_aggregate_e - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - *** NOTE: /FILES is deprecated. Use /MEMBERS - **ERROR: unknown data set: dset 3 -DEFINE DATA/AGGREGAT/E windy = 1,2,3 - *** NOTE: Variable "UWND" excluded from aggregate: T axis differs among members - *** NOTE: Variable "VWND" excluded from aggregate: T axis differs among members - *** NOTE: Variable "SPEH" excluded from aggregate: Not found in all member datasets - **ERROR: error defining aggregate dataset: No valid datasets or datasets share no variables that can be aggregated. -DEFINE DATA/AGGREGAT/E windy = 1,2 - *** NOTE: Variable "SPEH" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "UIN" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "VIN" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - *** NOTE: Dataset used in aggregation. Canceling aggregation, my_ens - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - *** NOTE: /FILES is deprecated. Use /MEMBERS - *** NOTE: Dataset used in aggregation. Canceling aggregation, fourfiles - *** NOTE: Dataset used in aggregation. Canceling aggregation, some - *** NOTE: Dataset used in aggregation. Canceling aggregation, more - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_6d_lab_mode - *** NOTE: MODE 6D_lab is deprecated. Leave the mode set; output automatically adjusts to 4D or 6D grids - *** NOTE: MODE 6D_lab is deprecated. Leave the mode set; output automatically adjusts to 4D or 6D grids - *** NOTE: MODE 6D_lab is deprecated. Leave the mode set; output automatically adjusts to 4D or 6D grids - *** NOTE: MODE 6D_lab is deprecated. Leave the mode set; output automatically adjusts to 4D or 6D grids - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn682_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn683_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Adjusting Y-axis label size from 0.100 to 0.001, to avoid running off page. - *** NOTE: Adjusting Y-axis label size from 0.100 to 0.001, to avoid running off page. - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_outtype - LISTing to file mytype.nc - LISTing to file mytype.nc - *** NOTE: Converting data type of missing_value NC_FLOAT to match output type of variable NC_DOUBLE - LISTing to file mytype.nc - LISTing to file mytype.nc - LISTing to file mytype.nc - LISTing to file mytype.nc - LISTing to file mytype.nc - LISTing to file mytype.nc - LISTing to file mytype.nc - LISTing to file mytype.nc - LISTing to file mytype.nc - LISTing to file mytype.nc - LISTing to file mytype.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ribbon_plot - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_descr_4digit - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_outtype - LISTing to file mytype.nc - LISTing to file mytype.nc - *** NOTE: Converting data type of missing_value NC_FLOAT to match output type of variable NC_DOUBLE - LISTing to file mytype.nc - LISTing to file mytype.nc - LISTing to file mytype.nc - LISTing to file mytype.nc - LISTing to file mytype.nc -NetCDF: Numeric conversion not representable (OPeNDAP/netCDF Error code -60) - failure writing to CDF output file -LIST/FORMAT=CDF/L=32875000:32875201/clobber/file=mytype.nc tt - LISTing to file mytype.nc -NetCDF: Numeric conversion not representable (OPeNDAP/netCDF Error code -60) - failure writing to CDF output file -LIST/FORMAT=CDF/clobber/file=mytype.nc my_data - LISTing to file mytype.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_nonmonotonic - **ERROR: improper grid or axis definition: data for DEFINE AXIS/FROM_VARIABLE is not monotonically increasing at index 12 -define axis/t/units=days tax = tvar - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_vec_mod - Using every 9th vector in the X direction - Using every 9th vector in the X direction - Using every 9th vector in the X direction - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn685_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TDAY - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis "X1_20" is irregular. Ignoring erroneous point_spacing=even attribute. - LISTing to file aa.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis "X1_20" is irregular. Ignoring erroneous point_spacing=even attribute. - LISTing to file aa.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file aa.nc - LISTing to file aa.nc - LISTing to file aa.nc - LISTing to file aa.nc - LISTing to file aa.nc -NetCDF: Numeric conversion not representable (OPeNDAP/netCDF Error code -60) - data in attribute missing_value not representable in output type NC_INT -NetCDF: Numeric conversion not representable (OPeNDAP/netCDF Error code -60) - data in attribute _FillValue not representable in output type NC_INT - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: command syntax: .HELLO -list .hello - **ERROR: variable unknown or not in data set: A.UNITS - -list a.units - **ERROR: variable unknown or not in data set: A.UNITS -list a.units - **ERROR: attribute undefined or invalid attribute name: ..HISTORY - attribute HISTORY not found for dataset -list ..history - **ERROR: variable unknown or not in data set: ..HISTORY -list ..history - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis AXI -Replacing definition of axis AXI_COARSE -Replacing definition of axis AXI -Replacing definition of axis AXI_COARSE -Replacing definition of axis AXI -Replacing definition of axis AXI_COARSE -Replacing definition of axis AXI -Replacing definition of axis AXI_COARSE -Replacing definition of axis AXI -Replacing definition of axis AXI_COARSE - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file sst_new.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis ZAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_e_x - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_nco_append - LISTing to file append_to_this.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_nobounds -Replacing definition of axis XIRREG - LISTing to file a.nc - LISTing to file a.nc - *** NOTE: Axis definition error on axis: TGAP - *** NOTE: Bounds given describe non-contiguous axis cells - *** NOTE: Using the LOWER bound specified for each axis cell - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_write_integer_att - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_descriptor_mc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot_color_only - *** NOTE: New # of line colors will take effect on next new window: SET WIN/NEW then define pen colors - *** NOTE: New number of line colors will take effect on next new window: SET WIN/NEW or SET WIN/CLEAR - **ERROR: command syntax: COLOR - /COLOR must have an argument for PLOT/OVERLAY -plot/i=1:100/over/COLOR 0.6*sin(i/7) - **ERROR: command syntax: COLOR - /COLOR not valid for PLOT/LEVELS ribbon plot -plot/i=1:100/ribbon/COLOR sin(i/6),0.6*sin(i/7) - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_vtree -Replacing definition of axis ZAX - *** NOTE: Variable "FVX" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "FVZ" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "FVZ" excluded from aggregate: Not found in all member datasets - **ERROR: unknown defining grid: G=NOEXIST -list b - **ERROR: command syntax: 45S -list c - **ERROR: command syntax: , -list d - **ERROR: command syntax: P=1 -list e - **ERROR: illegal limits: X axis limits don't match variable def'n: A - Are you giving explicit limits when SET REGION would suffice ? -list f -Replacing definition of axis X1 -Replacing definition of axis Y1 -Replacing definition of axis ZAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn686_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Changing the type of attribute a.ival - *** NOTE: Changing the value of attribute a.ival - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **TMAP ERR: non-existent or not on line - nosuchfile.nc -SET DAT/FORM=CDF nosuchfile.nc - **TMAP ERR: non-existent or not on line - Searched $FER_DESCR and $FER_DATA for nosuchfile(.nc ,.cdf,.des,.agg) -SET DAT/FORM=CDF nosuchfile - **TMAP ERR: non-existent or not on line - Searched $FER_DESCR and $FER_DATA for snoopy(.nc ,.cdf,.des,.agg) -SET DAT/FORM=CDF snoopy - **netCDF error - NetCDF: Unknown file format (OPeNDAP/netCDF Error code -51) - Data set: ./snoopy.dat -SET DAT/FORM=CDF snoopy.dat - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: regarding ./data/climatological_axes.cdf ... - *** NOTE: Climatological axes SEASONAL_REG, MONTH_REG, and MONTH_IRREG defined - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_long_symnames - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_strdim - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_single_colorlev - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn69_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc -Replacing definition of axis XAXIS_TEST - LISTing to file b.nc - LISTing to file c.nc - LISTing to file c.nc - LISTing to file c.nc - LISTing to file c.nc - LISTing to file c.nc - LISTing to file nc - **TMAP ERR: error in line definition - file coords dont match variable coords on axis XAXIS_TEST -LIST/FORMAT=CDF/clobber/keep/file=nc b,a[d=1] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Changing the value of attribute v1.long_name - *** NOTE: Changing the value of attribute v1.units - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: attribute undefined or invalid attribute name: temp.noexist[d=levitus_climatology] - attribute noexist not found for variable TEMP -show att temp.noexist[d=levitus_climatology] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: invalid command: illegal new name. Variable b already defined -set var/name=b a - **ERROR: invalid command: illegal new name. Variable b already defined -set var/name=b a - **ERROR: invalid command: illegal new name. Variable temp exists in dataset -set var/name=temp salt - **ERROR: invalid command: illegal new name. Variable psi exists in dataset -set var/name=psi myvar - **ERROR: invalid command: illegal new name. Variable diff already defined -set var/name=diff w - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_bad_axis_bounds - *** NOTE: Axis definition error on axis: MONTH_IRREG. Bounds describe cells that overlap one another - *** NOTE: Error in bounds "MONTH_IRREG_bnds" or bounds do not enclose point on axis MONTH_IRREG - *** NOTE: Substituting coordinate midpoints - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_enter_exit_GO -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_stddev - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_set_axis_name - LISTing to file a.nc - LISTing to file a.nc - LISTing to file b.nc - LISTing to file c.nc - **ERROR: invalid command: illegal new name. Axis days2000 is already defined -set axis/name=days2000 x_in_meters - **ERROR: invalid command: illegal new name given for axis -set axis/name x_in_meters - **ERROR: invalid command: illegal new name given for axis 45 -set axis/name=45 x_in_meters - **ERROR: invalid command: illegal new name given for axis .fr -set axis/name=.fr x_in_meters - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_let_remote - *** NOTE: netCDF bounds variable definition error - *** NOTE: Bounds definition "time_bnds" points to no existing axis - *** NOTE: Ignoring BOUNDS attribute - *** NOTE: netCDF bounds variable definition error - *** NOTE: Bounds definition "depth_bnds" points to no existing axis - *** NOTE: Ignoring BOUNDS attribute - *** NOTE: netCDF bounds variable definition error - *** NOTE: Bounds definition "lat_bnds" points to no existing axis - *** NOTE: Ignoring BOUNDS attribute - *** NOTE: netCDF bounds variable definition error - *** NOTE: Bounds definition "lon_bnds" points to no existing axis - *** NOTE: Ignoring BOUNDS attribute - *** NOTE: netCDF bounds variable definition error - *** NOTE: Bounds definition "time_bnds" points to no existing axis - *** NOTE: Ignoring BOUNDS attribute - *** NOTE: netCDF bounds variable definition error - *** NOTE: Bounds definition "depth_bnds" points to no existing axis - *** NOTE: Ignoring BOUNDS attribute - *** NOTE: netCDF bounds variable definition error - *** NOTE: Bounds definition "lat_bnds" points to no existing axis - *** NOTE: Ignoring BOUNDS attribute - *** NOTE: netCDF bounds variable definition error - *** NOTE: Bounds definition "lon_bnds" points to no existing axis - *** NOTE: Ignoring BOUNDS attribute - *** NOTE: netCDF bounds variable definition error - *** NOTE: Bounds definition "time_bnds" points to no existing axis - *** NOTE: Ignoring BOUNDS attribute - *** NOTE: netCDF bounds variable definition error - *** NOTE: Bounds definition "depth_bnds" points to no existing axis - *** NOTE: Ignoring BOUNDS attribute - *** NOTE: netCDF bounds variable definition error - *** NOTE: Bounds definition "lat_bnds" points to no existing axis - *** NOTE: Ignoring BOUNDS attribute - *** NOTE: netCDF bounds variable definition error - *** NOTE: Bounds definition "lon_bnds" points to no existing axis - *** NOTE: Ignoring BOUNDS attribute - **ERROR: command syntax: /REMOTE variable expression may not contain [d= -DEFINE VARIABLE/D=1/remote rvar = t00an1[d=1,z=1:100@ave] - **ERROR: command syntax: /REMOTE variable definition must also specify /D= -DEFINE VARIABLE/remote rvar = t00an1[d=1,z=1:100@ave] - **netCDF error - Unable to open URL with REMOTE variable definitions: - Data set: http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/woa05_annual/data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl - **TMAP ERR: attribute reading error - Unable to get varid for LET/REMOTE variable: NetCDF: Variable not found (OPeNDAP/netCDF Error code -49) - Data set: http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/woa05_annual/data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl - **TMAP ERR: attribute reading error - Unable to get bad-value for LET/REMOTE variable: NetCDF: Attribute not found (OPeNDAP/netCDF Error code -43) - Data set: http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/woa05_annual/data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl - **netCDF error - NetCDF: Variable not found (OPeNDAP/netCDF Error code -49) - Data set: http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/woa05_annual/data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl -list/x=300/y=15 avar - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn691_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: invalid command: string/numeric data type mix-up. Argument 3 : TAX_DATESTRING -list tax_datestring (tt[L=3], tt, 5) - **ERROR: invalid command: string/numeric data type mix-up. Argument 2 : TAX_DATESTRING -list tax_datestring (tt[L=3], "my_tax", "minutes") - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Error in bounds "TAX_BB_PTSPAC_bnds" or bounds do not enclose point on axis TAX_BB_PTSPAC - *** NOTE: Substituting coordinate midpoints - *** NOTE: Error in bounds "TAX_BB_EVEN_NOENC_bnds" or bounds do not enclose point on axis TAX_BB_EVEN_NOENC - *** NOTE: Substituting coordinate midpoints - *** NOTE: Error in bounds "TAX_BB_IRR_bnds" or bounds do not enclose point on axis TAX_BB_IRR - *** NOTE: Substituting coordinate midpoints - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: command syntax: must be a constant COS(1) -list {cos(1), sin(0)} - **ERROR: command syntax: must be a constant 0-180 -list {0-180, 180} - **ERROR: command syntax: must be a constant 1./5. -list {0.1, 0.2, 1./5.} - **ERROR: command syntax: must be a constant 5*3+1 -list {5*3+1, 2+3} - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - LISTing to file tval.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file out.xml - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAXIS - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAXIS -Replacing definition of axis YAXIS - **ERROR: request exceeds memory setting -load bigvar -Replacing definition of axis LONGTIME - **ERROR: request exceeds memory setting -load bigvar - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Ambiguous coordinates on X axis: TEMP[X=@AVE,Y=@AVE,L=1,D=1] + SST[X=@AVE,Y=@AVE,T=@AVE,D=2] - *** NOTE: Ambiguous coordinates on Y axis: TEMP[X=@AVE,Y=@AVE,L=1,D=1] + SST[X=@AVE,Y=@AVE,T=@AVE,D=2] - LISTing to file aa.nc - LISTing to file bb.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: variable unknown or not in data set: A -list a - **ERROR: variable unknown or not in data set: A -list a - **ERROR: variable unknown or not in data set: B -list b - **ERROR: variable unknown or not in data set: A -shade a - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: variable unknown or not in data set: A -list a - **ERROR: variable unknown or not in data set: A -list a - **ERROR: variable unknown or not in data set: B -list b - **ERROR: variable unknown or not in data set: A -shade a - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: value out of legal range: Negative argument to function. Argument 3 : SUBSTRING -list substring("hello",1,-2) - **ERROR: value out of legal range: Negative argument to function. Argument 3 : SUBSTRING -list substring("hello",1,-3) - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_append_dsg -rm: cannot remove `test_save_dsg.nc': No such file or directory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_global_atts - LISTing to file anew_global.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_conventions_history - LISTing to file conventions_history.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_center_key_labels - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_wgt_transform -Replacing definition of axis X2 -Replacing definition of axis Y2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_show_outfile -Replacing definition of axis ZAX - *** NOTE: Variable "FVX" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "FVZ" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "FVZ" excluded from aggregate: Not found in all member datasets - **ERROR: unknown defining grid: G=NOEXIST -list b - **ERROR: command syntax: 45S -list c - **ERROR: command syntax: , -list d - **ERROR: command syntax: P=1 -list e - **ERROR: illegal limits: X axis limits don't match variable def'n: A - Are you giving explicit limits when SET REGION would suffice ? -list f - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_date1900_array -Replacing definition of axis TAXIS - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_spawn_size - LISTing to file bn_spawn_size1.cdf - LISTing to file bn_spawn_size2.cdf - LISTing to file bn_spawn_size3.cdf - LISTing to file bn_spawn_size4.cdf - LISTing to file bn_spawn_size5.cdf - LISTing to file bn_spawn_size02.dat - LISTing to file bn_spawn_size04.dat - LISTing to file bn_spawn_size06.dat - LISTing to file bn_spawn_size08.dat - LISTing to file bn_spawn_size10.dat - LISTing to file bn_spawn_size12.dat - LISTing to file bn_spawn_size14.dat - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_polygon_log - **ERROR: value out of legal range: coordinates on log axis negative or too small : -0.850 -poly/i=1:100/vlog xbad+xsqr,ybad+ysqr,x*x/10 - **ERROR: value out of legal range: coordinates on log axis negative or too small : -0.689E-02 -poly/i=1:100/hlog xbad+xsqr,ybad+ysqr,x*x/10 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn694_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file aa.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TIME - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: unknown data set: BAD_D -stat/l=1/x=180/y=0 a - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: invalid command: REPEAT what ? -repeat/range=1:2/name=row - **ERROR: invalid command: REPEAT what ? -repeat/range=1:2/name=row - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis YAX - LISTing to file a.nc - *** NOTE: Not deleted: XAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Not deleted: YAX - *** NOTE: Axis is in use by grid GFORMAT -Replacing definition of axis TREDEF - *** NOTE: grid GSI1 used by data set a - *** NOTE: Redefinition may alter apparent contents of data set - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -rm: cannot remove `a.gif': No such file or directory - - -**ERROR : Unable to save the plot as a.hdf - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis FAXIS -Replacing definition of axis EAXIS - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - TEMPORARY data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_permute_ascii -Replacing definition of grid GRID3D - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_lon_lat_time_string -Replacing definition of axis TAXIS - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_save_justdim - LISTing to file a.nc - *** NOTE: Saving E or F axis with time axis uses /RIGID in time - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_time2d - *** NOTE: /UNIT=MONTHS is ambiguous ... using 1/12 of 365.2425 days -Replacing definition of axis TAXIS - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_legend_labels - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_DQ - *** NOTE: Changing the value of attribute foobar.some_text - *** NOTE: Changing the value of attribute foobar.some_text -Replacing definition of grid GG - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn695_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -rm: cannot remove `WestCoastCarbon_9d9c_f562_77b5_5.nc': No such file or directory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_f_tax_fcns - LISTing to file a.nc -Replacing definition of axis FSEC - *** NOTE: grid GSI1 used by data set a - *** NOTE: Redefinition may alter apparent contents of data set - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_fmrc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_return_defined - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_can_var_noerr - **ERROR: variable unknown or not in data set: B -cancel var b,a - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_annotate - **ERROR: command syntax: xpos=a2 -annotate/nouser/xpos=a2/ypos=0/halign=1/valign=0/angle=-45/siz=0.15 "My Lab" - **ERROR: command syntax: ypos=b -annotate/nouser/xpos=0/ypos=b/halign=1/valign=0/angle=-45/siz=0.15 "My Lab" - **ERROR: command syntax: halign=c -annotate/nouser/xpos=0/ypos=0/halign=c/valign=0/angle=-45/siz=0.15 "My Lab" - **ERROR: command syntax: valign=d -annotate/nouser/xpos=0/ypos=0/halign=1/valign=d/angle=ee/siz=0.15 "My Lab" - **ERROR: command syntax: siz=f -annotate/nouser/xpos=0/ypos=0/halign=1/valign=0/angle=-45/siz=f "My Lab" - **ERROR: invalid command: /XPOS and /YPOS are required for ANNOTATE -annotate/nouser/ypos=0 "My Lab" - **ERROR: invalid command: /XPOS and /YPOS are required for ANNOTATE -annotate/nouser/xpos=0/halign=1/valign=0/angle=-45/siz=0.15 "My Lab" - **ERROR: invalid command: Specify only one of /USER /NOUSER /NORM -annotate/nouser/user/ypos=0/halign=1/valign=0/angle=-45/siz=0.15 "My Lab" - **ERROR: command syntax: xpos=a2 -def anno/nou/xpos=a2/ypos=0/hal=1/val=0/ang=-45/siz=0.15 "My Lab" - **ERROR: command syntax: ypos=b -def anno/nou/xpos=0,3/ypos=b/hal=1/val=0/ang=-45/siz=0.15 "My Lab" - **ERROR: command syntax: hal=c -def anno/nou/xpos=0/ypos=0/hal=c/val=0/ang=-45/siz=0.15 "My Lab" - **ERROR: command syntax: val=d -def anno/nou/xpos=0/ypos=0/hal=1/val=d/ang=ee/siz=0.15 "My Lab" - **ERROR: command syntax: siz=f -def anno/nou/xpos=0/ypos=0/hal=1/val=0/ang=-45/siz=f "My Lab" - **ERROR: invalid command: /XPOS and /YPOS are required for ANNOTATE -def anno/nou/ypos=0 "My Lab" - **ERROR: invalid command: /XPOS and /YPOS are required for ANNOTATE -def anno/nou/xpos=0/hal=1/val=0 "My Lab" - **ERROR: invalid command: Specify only one of /USER /NOUSER /NORM -def anno/nou/user/xpos=0/ypos=0 "My Lab" - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_auxiliary -rm: cannot remove `layerz_test_data.txt': No such file or directory -Replacing definition of axis ZAX - LISTing to file layerz_test_data.txt - **ERROR: variable unknown or not in data set: (data set ok ?): noexist -SET VAR/layerz=depth noexist - *** NOTE: Ambiguous coordinates on Z axis: TEMP6D-TEMPZ6D - **ERROR: invalid command: auxiliary variable DEPTH6D has a T axis not found on variable TEMP -LIST/PREC=7 tempz6d_unmatch -Replacing definition of axis XAX -Replacing definition of axis ZAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot_ribbon_gaploc - **ERROR: command syntax: PLOT/VS/RIBBON/GAPLOC plot needs 4 arguments -plot/vs/thick/line/sym=21/siz=.3/ribbon/gap xpts, 10*ypts, color - **ERROR: command syntax: PLOT/GAPLOC applies only to PLOT/VS/RIBBON -plot/vs/thick/line/sym=21/siz=0.3/gap xpts, 10*ypts, 10.1*ypts, 9.93*ypts, gvar - **ERROR: command syntax: PLOT/GAPLOC applies only to PLOT/VS/RIBBON -plot/ov/nolab/vs/thick/line/sym=21/siz=.3/gapl xpts, color, gvar - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_time_short_axes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_floatstr_extended - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn696_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Units on axis "pfull1_1" are not recognized: hpa - *** NOTE: They will not be convertible: - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: unknown data set: noexist -SHOW DATA noexist - **ERROR: unknown data set: 2 -SHOW DATA 2 - **ERROR: unknown data set: noexist -SHOW DATA/ATT noexist - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_bin_regrid -Replacing definition of axis DCOARSE -Replacing definition of axis IRR -Replacing definition of axis DCOARSE -Replacing definition of axis IRR -Replacing definition of axis DCOARSE -Replacing definition of axis IRR -Replacing definition of axis DCOARSE -Replacing definition of axis IRR -Replacing definition of axis DCOARSE -Replacing definition of axis IRR - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn697_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **TMAP ERR: error in axis attributes - Calendar definitions on T and F axes must match - Data file: ./data/ft_cal_one.nc -SET DAT/FORM=CDF ft_cal_mixed.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis tday -Replacing definition of axis xax - LISTing to file myfile.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis LONGTIME - **ERROR: request exceeds memory setting -load/l=1:5 bigvar - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX - *** NOTE: Not deleted: XAX - *** NOTE: Axis is in use by grid GFORMAT - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX1 -Replacing definition of axis TAX2 -Replacing definition of axis TAX2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - Using every 4th vector in the Y direction -Replacing definition of axis XAX -Replacing definition of axis YAX - Using every 4th vector in the Y direction - Using every 4th vector in the Y direction - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis F_AX -Replacing definition of axis AAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis T_AXIS -Replacing definition of axis T_AXIS -Replacing definition of axis F_AXIS - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis XAX -Replacing definition of axis XAX -Replacing definition of axis XAX -Replacing definition of axis XAX -Replacing definition of axis XAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAXIS - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - LISTing to file a.nc - *** NOTE: Not deleted: TAX - *** NOTE: Axis is in use by grid TGRID - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - *** NOTE: Changing the type of attribute sst.newch - *** NOTE: Changing the value of attribute sst.newch - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_aggregate_t -Replacing definition of axis TDAY - LISTing to file tmp/tagg_reg_1.nc - LISTing to file tmp/tagg_reg_2.nc - LISTing to file tmp/tagg_reg_3.nc - LISTing to file tmp/tagg_reg_4.nc - LISTing to file tmp/tagg_reg_5.nc - LISTing to file tmp/tagg_reg_6.nc - LISTing to file tmp/tagg_reg_7.nc - LISTing to file tmp/tagg_reg_8.nc - LISTing to file tmp/tagg_reg_9.nc - LISTing to file tmp/tagg_reg_10.nc - LISTing to file tmp/tagg_reg_1.nc - LISTing to file tmp/tagg_reg_1_duplicate.nc - LISTing to file tmp/tagg_reg_no_T.nc - LISTing to file tmp/tagg_reg_2_overlarge.nc - *** NOTE: Not deleted: TDAY - *** NOTE: Axis is in use by grid (G097) - LISTing to file tmp/tagg_irreg_1.nc - LISTing to file tmp/tagg_irreg_2.nc - LISTing to file tmp/tagg_irreg_3.nc - LISTing to file tmp/tagg_irreg_4.nc - LISTing to file tmp/tagg_irreg_5.nc - LISTing to file tmp/tagg_irreg_6.nc - LISTing to file tmp/tagg_irreg_7.nc - LISTing to file tmp/tagg_irreg_8.nc - LISTing to file tmp/tagg_irreg_9.nc - LISTing to file tmp/tagg_irreg_10.nc - LISTing to file tmp/tagg_irreg_1.nc - LISTing to file tmp/tagg_irreg_1.nc -Replacing definition of axis TDAY_IR - LISTing to file tmp/tagg_irreg_2_reg.nc - *** NOTE: Not deleted: TDAY_IR - *** NOTE: Axis is in use by grid (G097) - LISTing to file tmp/tagg_T0varying_1.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_T0varying_2.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_T0varying_3.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_T0varying_4.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_T0varying_5.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_disjoint_T0varying_1.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_disjoint_T0varying_2.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_disjoint_T0varying_3.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_disjoint_T0varying_4.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_disjoint_T0varying_5.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_disjoint_T0varying_6.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_disjoint_T0varying_7.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_disjoint_T0varying_8.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_disjoint_T0varying_9.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_disjoint_T0varying_10.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_disjoint_T0varying_1.nc -Replacing definition of axis TDAY_TVAR - LISTing to file tmp/tagg_disjoint_T0varying_3.nc - LISTing to file tmp/tagg_disjoint_T0varying_4_wrong.nc - *** NOTE: Not deleted: TDAY_WRONG - *** NOTE: Axis is in use by grid (G097) - LISTing to file tmp/tagg_single_1.nc - LISTing to file tmp/tagg_single_2.nc - LISTing to file tmp/tagg_single_3.nc - LISTing to file tmp/tagg_single_4.nc - LISTing to file tmp/tagg_single_5.nc - LISTing to file tmp/tagg_single_6.nc - *** NOTE: Not deleted: TDAY - *** NOTE: Axis is in use by grid (G097) - *** NOTE: /FILES is deprecated. Use /MEMBERS - *** NOTE: /FILES is deprecated. Use /MEMBERS - **ERROR: invalid command: given aggregation dataset name already in use: myagg2 -define data/agg/t myagg2 = tmp/tagg_reg_1.nc, tmp/tagg_reg_2.nc, tmp/tagg_reg_2.nc - **TMAP ERR: non-existent or not on line - tmp/tagg_no_exist.nc -define data/agg/t myaggbad = tmp/tagg_no_exist.nc, tmp/tagg_reg_2.nc - **TMAP ERR: non-existent or not on line - tmp/tagg_no_exist.nc -define data/agg/t myaggbad = tmp/tagg_reg_1.nc, tmp/tagg_no_exist.nc - **ERROR: improper grid or axis definition: first file of aggregation has no time axis tmp/tagg_reg_no_T.nc -DEFINE DATA/AGGREGAT/T myTindepagg = tmp/tagg_reg_no_T.nc - **ERROR: improper grid or axis definition: time axis is not monotonic at L=1 of file tmp/tagg_reg_3.nc -define data/agg/t myagg3 = tmp/tagg_reg_1.nc, tmp/tagg_reg_2_overlarge.nc,tmp/tagg_reg_3.nc - **TMAP ERR: non-existent or not on line - Searched $FER_DESCR and $FER_DATA for 1(.nc ,.cdf,.des). For a Timeseries aggregation, specify the NetCDF file/path names or OPeNDAP dataset names. -define data/agg/t myagg2num = 1,2 - *** NOTE: /FILES is deprecated. Use /MEMBERS - *** NOTE: /FILES is deprecated. Use /MEMBERS - *** NOTE: /FILES is deprecated. Use /MEMBERS - **TMAP ERR: Unknown variable code - in file tmp/tagg_disjoint_T0varying_4_wrong.nc time axis variable is missing: TDAY_TVAR -define data/agg/t myagg5_bad = tmp/tagg_disjoint_T0varying_1.nc, tmp/tagg_disjoint_T0varying_2.nc,tmp/tagg_disjoint_T0varying_3.nc, tmp/tagg_disjoint_T0varying_4_wrong.nc,tmp/tagg_disjoint_T0varying_5.nc - *** NOTE: /FILES is deprecated. Use /MEMBERS - **ERROR: unknown command: garbage -garbage command syntax - **ERROR: improper grid or axis definition: time axis is not monotonic at L=1 of file tmp/tagg_single_1.nc -define data/agg/t MYsing_irreg_agg4 = tmp/tagg_single_1.nc, tmp/tagg_single_1.nc, tmp/tagg_single_2.nc,tmp/tagg_single_4.nc, tmp/tagg_single_5.nc - **ERROR: improper grid or axis definition: time axis is not monotonic at L=1 of file tmp/tagg_single_5.nc -define data/agg/t MYsing_irreg_agg4 = tmp/tagg_single_1.nc, tmp/tagg_single_2.nc,tmp/tagg_single_4.nc, tmp/tagg_single_5.nc, tmp/tagg_single_5.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_unquoted_args - LISTing to file tmp/test1.nc - LISTing to file tmp/test2.nc - LISTing to file tmp/test3.nc - **ERROR: unknown command qualifier: erroneous -set data/erroneous tmp/test1.nc - **ERROR: unknown command qualifier: erroneous -set data /erroneous tmp/test1.nc - **TMAP ERR: non-existent or not on line - /erroneous(.nc ,.cdf,.nc) -set data /erroneous, tmp/test1.nc - **ERROR: unknown command qualifier: garbage -go/garbage tmp/testMe - **ERROR: unknown command qualifier: garbage -go/garbage "tmp/testMe" - **ERROR: unknown command qualifier: garbage -go/garbage /home/users/ansley/build/pyferret/bench/tmp/testMe.jnl - **ERROR: unknown command qualifier: garbage -go/garbage "/home/users/ansley/build/pyferret/bench/tmp/testMe.jnl" - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_long_lists - **ERROR: command syntax: command line too long -- exceeds 2048 -DEFINE VARIABLE a={1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5... - **ERROR: variable unknown or not in data set: A -load a - **ERROR: command syntax: command line too long -- exceeds 2048 -"/arch - **ERROR: command syntax: "/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0020.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0021.t_surf... -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0020.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0021.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0022.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0023.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0024.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0025.t_surf.nc",\} - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_show_uvar_grid -Replacing definition of axis DAYT -Replacing definition of axis ZAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_aggregate_f -Replacing definition of axis XAX -Replacing definition of axis YAX - LISTing to file tmp/fcst_1.nc - LISTing to file tmp/fcst_2.nc - LISTing to file tmp/fcst_3.nc - LISTing to file tmp/fcst_4.nc - LISTing to file tmp/fcst_5.nc - LISTing to file tmp/fcst_6.nc - LISTing to file tmp/fcst_7.nc - LISTing to file tmp/fcst_8.nc - LISTing to file tmp/fcst_9.nc - LISTing to file tmp/fcst_10.nc - LISTing to file tmp/fcst_11.nc - LISTing to file tmp/long_fcst_1.nc - LISTing to file tmp/long_fcst_6.nc - LISTing to file tmp/one_var_fcst_1.nc - LISTing to file tmp/one_var_fcst_6.nc - LISTing to file tmp/consecutive_month_fcst.nc -Replacing definition of axis MONTHLY - LISTing to file tmp/irregular_start_time_fcst.nc - *** NOTE: Variable "FCST_2" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "FCST_2" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "FCST_2" excluded from aggregate: Not found in all member datasets - *** NOTE: Dataset used in aggregation. Canceling aggregation, bn_aggregate_f.jnl - *** NOTE: Dataset used in aggregation. Canceling aggregation, my_fmrc - *** NOTE: Variable "FCST_2" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "FCST_2" excluded from aggregate: Not found in all member datasets - **ERROR: error defining aggregate dataset: some files have duplicate forecast start times -DEFINE DATA/AGGREGAT/F my_fmrc = tmp/fcst_1.nc, tmp/fcst_2.nc,tmp/fcst_2.nc,tmp/fcst_3.nc - **TMAP ERR: non-existent or not on line - tmp/no_exist.nc -DEFINE DATA/AGGREGAT/F my_fmrc = XCAT(files,"tmp/no_exist.nc") - **ERROR: error defining aggregate dataset: forecast start times are irregular or too gappy -DEFINE DATA/AGGREGAT/F my_fmrc = XCAT(files,"tmp/consecutive_month_fcst.nc") - **ERROR: error defining aggregate dataset: forecast start times are irregular or too gappy -DEFINE DATA/AGGREGAT/F my_fmrc = XCAT(files,"tmp/irregular_start_time_fcst.nc") - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_aggregate_tef -ls: cannot access tmp/f04_e3_t3_1v.nc: No such file or directory -Replacing definition of axis YAX -Replacing definition of axis ZAX -Replacing definition of axis MONTHLY - LISTing to file tmp/f01_e1_t1.nc - LISTing to file tmp/f01_e1_t1.nc - LISTing to file tmp/f01_e1_t1.nc - LISTing to file tmp/f01_e1_t2.nc - LISTing to file tmp/f01_e1_t3.nc - LISTing to file tmp/f01_e2_t1.nc - LISTing to file tmp/f01_e2_t1.nc - LISTing to file tmp/f01_e2_t1.nc - LISTing to file tmp/f01_e2_t2.nc - LISTing to file tmp/f01_e2_t3.nc - LISTing to file tmp/f01_e3_t1.nc - LISTing to file tmp/f01_e3_t1.nc - LISTing to file tmp/f01_e3_t1.nc - LISTing to file tmp/f01_e3_t2.nc - LISTing to file tmp/f01_e3_t3.nc - LISTing to file tmp/f01_e4_t1.nc - LISTing to file tmp/f01_e4_t1.nc - LISTing to file tmp/f01_e4_t1.nc - LISTing to file tmp/f01_e4_t2.nc - LISTing to file tmp/f01_e4_t3.nc - LISTing to file tmp/f01_e5_t1.nc - LISTing to file tmp/f01_e5_t1.nc - LISTing to file tmp/f01_e5_t1.nc - LISTing to file tmp/f01_e5_t2.nc - LISTing to file tmp/f01_e5_t3.nc - LISTing to file tmp/f02_e1_t1.nc - LISTing to file tmp/f02_e1_t1.nc - LISTing to file tmp/f02_e1_t1.nc - LISTing to file tmp/f02_e1_t2.nc - LISTing to file tmp/f02_e1_t3.nc - LISTing to file tmp/f02_e2_t1.nc - LISTing to file tmp/f02_e2_t1.nc - LISTing to file tmp/f02_e2_t1.nc - LISTing to file tmp/f02_e2_t2.nc - LISTing to file tmp/f02_e2_t3.nc - LISTing to file tmp/f02_e3_t1.nc - LISTing to file tmp/f02_e3_t1.nc - LISTing to file tmp/f02_e3_t1.nc - LISTing to file tmp/f02_e3_t2.nc - LISTing to file tmp/f02_e3_t3.nc - LISTing to file tmp/f02_e4_t1.nc - LISTing to file tmp/f02_e4_t1.nc - LISTing to file tmp/f02_e4_t1.nc - LISTing to file tmp/f02_e4_t2.nc - LISTing to file tmp/f02_e4_t3.nc - LISTing to file tmp/f02_e5_t1.nc - LISTing to file tmp/f02_e5_t1.nc - LISTing to file tmp/f02_e5_t1.nc - LISTing to file tmp/f02_e5_t2.nc - LISTing to file tmp/f02_e5_t3.nc - LISTing to file tmp/f03_e1_t1.nc - LISTing to file tmp/f03_e1_t1.nc - LISTing to file tmp/f03_e1_t1.nc - LISTing to file tmp/f03_e1_t2.nc - LISTing to file tmp/f03_e1_t3.nc - LISTing to file tmp/f03_e2_t1.nc - LISTing to file tmp/f03_e2_t1.nc - LISTing to file tmp/f03_e2_t1.nc - LISTing to file tmp/f03_e2_t2.nc - LISTing to file tmp/f03_e2_t3.nc - LISTing to file tmp/f03_e3_t1.nc - LISTing to file tmp/f03_e3_t1.nc - LISTing to file tmp/f03_e3_t1.nc - LISTing to file tmp/f03_e3_t2.nc - LISTing to file tmp/f03_e3_t3.nc - LISTing to file tmp/f03_e4_t1.nc - LISTing to file tmp/f03_e4_t1.nc - LISTing to file tmp/f03_e4_t1.nc - LISTing to file tmp/f03_e4_t2.nc - LISTing to file tmp/f03_e4_t3.nc - LISTing to file tmp/f03_e5_t1.nc - LISTing to file tmp/f03_e5_t1.nc - LISTing to file tmp/f03_e5_t1.nc - LISTing to file tmp/f03_e5_t2.nc - LISTing to file tmp/f03_e5_t3.nc - LISTing to file tmp/f04_e1_t1.nc - LISTing to file tmp/f04_e1_t1.nc - LISTing to file tmp/f04_e1_t1.nc - LISTing to file tmp/f04_e1_t2.nc - LISTing to file tmp/f04_e1_t3.nc - LISTing to file tmp/f04_e2_t1.nc - LISTing to file tmp/f04_e2_t1.nc - LISTing to file tmp/f04_e2_t1.nc - LISTing to file tmp/f04_e2_t2.nc - LISTing to file tmp/f04_e2_t3.nc - LISTing to file tmp/f04_e3_t1.nc - LISTing to file tmp/f04_e3_t1.nc - LISTing to file tmp/f04_e3_t1.nc - LISTing to file tmp/f04_e3_t2.nc - LISTing to file tmp/f04_e3_t3.nc - LISTing to file tmp/f04_e4_t1.nc - LISTing to file tmp/f04_e4_t1.nc - LISTing to file tmp/f04_e4_t1.nc - LISTing to file tmp/f04_e4_t2.nc - LISTing to file tmp/f04_e4_t3.nc - LISTing to file tmp/f04_e5_t1.nc - LISTing to file tmp/f04_e5_t1.nc - LISTing to file tmp/f04_e5_t1.nc - LISTing to file tmp/f04_e5_t2.nc - LISTing to file tmp/f04_e5_t3.nc - LISTing to file tmp/f05_e1_t1.nc - LISTing to file tmp/f05_e1_t1.nc - LISTing to file tmp/f05_e1_t1.nc - LISTing to file tmp/f05_e1_t2.nc - LISTing to file tmp/f05_e1_t3.nc - LISTing to file tmp/f05_e2_t1.nc - LISTing to file tmp/f05_e2_t1.nc - LISTing to file tmp/f05_e2_t1.nc - LISTing to file tmp/f05_e2_t2.nc - LISTing to file tmp/f05_e2_t3.nc - LISTing to file tmp/f05_e3_t1.nc - LISTing to file tmp/f05_e3_t1.nc - LISTing to file tmp/f05_e3_t1.nc - LISTing to file tmp/f05_e3_t2.nc - LISTing to file tmp/f05_e3_t3.nc - LISTing to file tmp/f05_e4_t1.nc - LISTing to file tmp/f05_e4_t1.nc - LISTing to file tmp/f05_e4_t1.nc - LISTing to file tmp/f05_e4_t2.nc - LISTing to file tmp/f05_e4_t3.nc - LISTing to file tmp/f05_e5_t1.nc - LISTing to file tmp/f05_e5_t1.nc - LISTing to file tmp/f05_e5_t1.nc - LISTing to file tmp/f05_e5_t2.nc - LISTing to file tmp/f05_e5_t3.nc - LISTing to file tmp/f06_e1_t1.nc - LISTing to file tmp/f06_e1_t1.nc - LISTing to file tmp/f06_e1_t1.nc - LISTing to file tmp/f06_e1_t2.nc - LISTing to file tmp/f06_e1_t3.nc - LISTing to file tmp/f06_e2_t1.nc - LISTing to file tmp/f06_e2_t1.nc - LISTing to file tmp/f06_e2_t1.nc - LISTing to file tmp/f06_e2_t2.nc - LISTing to file tmp/f06_e2_t3.nc - LISTing to file tmp/f06_e3_t1.nc - LISTing to file tmp/f06_e3_t1.nc - LISTing to file tmp/f06_e3_t1.nc - LISTing to file tmp/f06_e3_t2.nc - LISTing to file tmp/f06_e3_t3.nc - LISTing to file tmp/f06_e4_t1.nc - LISTing to file tmp/f06_e4_t1.nc - LISTing to file tmp/f06_e4_t1.nc - LISTing to file tmp/f06_e4_t2.nc - LISTing to file tmp/f06_e4_t3.nc - LISTing to file tmp/f06_e5_t1.nc - LISTing to file tmp/f06_e5_t1.nc - LISTing to file tmp/f06_e5_t1.nc - LISTing to file tmp/f06_e5_t2.nc - LISTing to file tmp/f06_e5_t3.nc - LISTing to file tmp/f07_e1_t1.nc - LISTing to file tmp/f07_e1_t1.nc - LISTing to file tmp/f07_e1_t1.nc - LISTing to file tmp/f07_e1_t2.nc - LISTing to file tmp/f07_e1_t3.nc - LISTing to file tmp/f07_e2_t1.nc - LISTing to file tmp/f07_e2_t1.nc - LISTing to file tmp/f07_e2_t1.nc - LISTing to file tmp/f07_e2_t2.nc - LISTing to file tmp/f07_e2_t3.nc - LISTing to file tmp/f07_e3_t1.nc - LISTing to file tmp/f07_e3_t1.nc - LISTing to file tmp/f07_e3_t1.nc - LISTing to file tmp/f07_e3_t2.nc - LISTing to file tmp/f07_e3_t3.nc - LISTing to file tmp/f07_e4_t1.nc - LISTing to file tmp/f07_e4_t1.nc - LISTing to file tmp/f07_e4_t1.nc - LISTing to file tmp/f07_e4_t2.nc - LISTing to file tmp/f07_e4_t3.nc - LISTing to file tmp/f07_e5_t1.nc - LISTing to file tmp/f07_e5_t1.nc - LISTing to file tmp/f07_e5_t1.nc - LISTing to file tmp/f07_e5_t2.nc - LISTing to file tmp/f07_e5_t3.nc - LISTing to file tmp/f08_e1_t1.nc - LISTing to file tmp/f08_e1_t1.nc - LISTing to file tmp/f08_e1_t1.nc - LISTing to file tmp/f08_e1_t2.nc - LISTing to file tmp/f08_e1_t3.nc - LISTing to file tmp/f08_e2_t1.nc - LISTing to file tmp/f08_e2_t1.nc - LISTing to file tmp/f08_e2_t1.nc - LISTing to file tmp/f08_e2_t2.nc - LISTing to file tmp/f08_e2_t3.nc - LISTing to file tmp/f08_e3_t1.nc - LISTing to file tmp/f08_e3_t1.nc - LISTing to file tmp/f08_e3_t1.nc - LISTing to file tmp/f08_e3_t2.nc - LISTing to file tmp/f08_e3_t3.nc - LISTing to file tmp/f08_e4_t1.nc - LISTing to file tmp/f08_e4_t1.nc - LISTing to file tmp/f08_e4_t1.nc - LISTing to file tmp/f08_e4_t2.nc - LISTing to file tmp/f08_e4_t3.nc - LISTing to file tmp/f08_e5_t1.nc - LISTing to file tmp/f08_e5_t1.nc - LISTing to file tmp/f08_e5_t1.nc - LISTing to file tmp/f08_e5_t2.nc - LISTing to file tmp/f08_e5_t3.nc - LISTing to file tmp/f09_e1_t1.nc - LISTing to file tmp/f09_e1_t1.nc - LISTing to file tmp/f09_e1_t1.nc - LISTing to file tmp/f09_e1_t2.nc - LISTing to file tmp/f09_e1_t3.nc - LISTing to file tmp/f09_e2_t1.nc - LISTing to file tmp/f09_e2_t1.nc - LISTing to file tmp/f09_e2_t1.nc - LISTing to file tmp/f09_e2_t2.nc - LISTing to file tmp/f09_e2_t3.nc - LISTing to file tmp/f09_e3_t1.nc - LISTing to file tmp/f09_e3_t1.nc - LISTing to file tmp/f09_e3_t1.nc - LISTing to file tmp/f09_e3_t2.nc - LISTing to file tmp/f09_e3_t3.nc - LISTing to file tmp/f09_e4_t1.nc - LISTing to file tmp/f09_e4_t1.nc - LISTing to file tmp/f09_e4_t1.nc - LISTing to file tmp/f09_e4_t2.nc - LISTing to file tmp/f09_e4_t3.nc - LISTing to file tmp/f09_e5_t1.nc - LISTing to file tmp/f09_e5_t1.nc - LISTing to file tmp/f09_e5_t1.nc - LISTing to file tmp/f09_e5_t2.nc - LISTing to file tmp/f09_e5_t3.nc - LISTing to file tmp/f10_e1_t1.nc - LISTing to file tmp/f10_e1_t1.nc - LISTing to file tmp/f10_e1_t1.nc - LISTing to file tmp/f10_e1_t2.nc - LISTing to file tmp/f10_e1_t3.nc - LISTing to file tmp/f10_e2_t1.nc - LISTing to file tmp/f10_e2_t1.nc - LISTing to file tmp/f10_e2_t1.nc - LISTing to file tmp/f10_e2_t2.nc - LISTing to file tmp/f10_e2_t3.nc - LISTing to file tmp/f10_e3_t1.nc - LISTing to file tmp/f10_e3_t1.nc - LISTing to file tmp/f10_e3_t1.nc - LISTing to file tmp/f10_e3_t2.nc - LISTing to file tmp/f10_e3_t3.nc - LISTing to file tmp/f10_e4_t1.nc - LISTing to file tmp/f10_e4_t1.nc - LISTing to file tmp/f10_e4_t1.nc - LISTing to file tmp/f10_e4_t2.nc - LISTing to file tmp/f10_e4_t3.nc - LISTing to file tmp/f10_e5_t1.nc - LISTing to file tmp/f10_e5_t1.nc - LISTing to file tmp/f10_e5_t1.nc - LISTing to file tmp/f10_e5_t2.nc - LISTing to file tmp/f10_e5_t3.nc - LISTing to file tmp/f11_e1_t1.nc - LISTing to file tmp/f11_e1_t1.nc - LISTing to file tmp/f11_e1_t1.nc - LISTing to file tmp/f11_e1_t2.nc - LISTing to file tmp/f11_e1_t3.nc - LISTing to file tmp/f11_e2_t1.nc - LISTing to file tmp/f11_e2_t1.nc - LISTing to file tmp/f11_e2_t1.nc - LISTing to file tmp/f11_e2_t2.nc - LISTing to file tmp/f11_e2_t3.nc - LISTing to file tmp/f11_e3_t1.nc - LISTing to file tmp/f11_e3_t1.nc - LISTing to file tmp/f11_e3_t1.nc - LISTing to file tmp/f11_e3_t2.nc - LISTing to file tmp/f11_e3_t3.nc - LISTing to file tmp/f11_e4_t1.nc - LISTing to file tmp/f11_e4_t1.nc - LISTing to file tmp/f11_e4_t1.nc - LISTing to file tmp/f11_e4_t2.nc - LISTing to file tmp/f11_e4_t3.nc - LISTing to file tmp/f11_e5_t1.nc - LISTing to file tmp/f11_e5_t1.nc - LISTing to file tmp/f11_e5_t1.nc - LISTing to file tmp/f11_e5_t2.nc - LISTing to file tmp/f11_e5_t3.nc - LISTing to file tmp/f04_e3_t1_1v.nc - LISTing to file tmp/f04_e3_t2_1v.nc - LISTing to file tmp/f04_e3_t3_1v.nc - *** NOTE: Variable "FCST_2" excluded from aggregate: Not found in all member datasets - **ERROR: error defining aggregate dataset: grid definition of FCST_2 has changed on axis X of agg member 3 -list/x=150E/y=15n/L=10 fcst_2 - **ERROR: error defining aggregate dataset: grid definition of FCST_2 has changed on axis T of agg member 3 -list/x=150E/y=15n/L=10 fcst_2 - **ERROR: error defining aggregate dataset: grid definition of FCST_2 has changed on axis X of agg member 3 -list/x=150E/y=15n/L=10 fcst_2 - *** NOTE: Variable "FCST" excluded from aggregate: E axis differs among members - *** NOTE: Variable "FCST_2" excluded from aggregate: E axis differs among members - **ERROR: error defining aggregate dataset: No valid datasets or datasets share no variables that can be aggregated. -DEFINE DATA/AGGREGAT/F tef_short = te_f01, te_f02_short, te_f03, te_f04, te_f05, te_f06, te_f07, te_f08, te_f09, te_f10, te_f11 - *** NOTE: Variable "FCST" excluded from aggregate: F axis differs among members - *** NOTE: Variable "TF_TIMES" excluded from aggregate: F axis differs among members - *** NOTE: Variable "FCST_2" excluded from aggregate: F axis differs among members - **ERROR: error defining aggregate dataset: No valid datasets or datasets share no variables that can be aggregated. -DEFINE DATA/AGGREGAT/E tfe_short = tf_e1, tf_e2_short, tf_e3, tf_e4, tf_e5 - *** NOTE: Variable "FCST" excluded from aggregate: Already has E axis - *** NOTE: Variable "FCST_2" excluded from aggregate: Already has E axis - *** NOTE: Variable "REALIZATION" excluded from aggregate: Already has E axis - *** NOTE: Variable "MEMBER_DSET" excluded from aggregate: Already has E axis - *** NOTE: Variable "HISTORY" excluded from aggregate: Already has E axis - *** NOTE: Variable "CONVENTIONS" excluded from aggregate: Already has E axis - *** NOTE: Variable "INVESTIGATOR" excluded from aggregate: Already has E axis - *** NOTE: Variable "DESCRIPTION" excluded from aggregate: Already has E axis - **ERROR: error defining aggregate dataset: No valid datasets or datasets share no variables that can be aggregated. -DEFINE DATA/AGGREGAT/E bad_ens = te_f01, te_f03, te_f04 - **ERROR: error defining aggregate dataset: some files have duplicate forecast start times -DEFINE DATA/AGGREGAT/F bad_fmrc = tf_e1, tf_e3, tf_e4 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dataset_qualifier - LISTing to file a.nc - LISTing to file a.nc -Replacing definition of axis XAX10 - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_speedtest - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_show_noupcase -Replacing definition of axis tday - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -SHO VAR/XML -SHO VAR/XML - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_letd_attributes - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_list_clim_axes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_climatology_attr -Replacing definition of axis TAX - LISTing to file a.nc - LISTing to file a.nc -Replacing definition of axis TAX - LISTing to file a.nc - LISTing to file a.nc -Replacing definition of axis TAX - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot_along - *** NOTE: Decimating PLOT/ALONG lines to /KEY limit of 40 - *** NOTE: Decimating PLOT/ALONG lines to /NOKEY limit of 200 - *** NOTE: Decimating PLOT/ALONG lines to /KEY limit of 40 - *** NOTE: Decimating PLOT/ALONG lines to /NOKEY limit of 200 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_show_commands - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot_decimate - *** NOTE: Decimating PLOT/ALONG lines to /KEY limit of 40 - *** NOTE: Decimating PLOT/ALONG lines to /NOKEY limit of 200 - *** NOTE: Decimating PLOT/ALONG lines to /KEY limit of 40 - *** NOTE: Decimating PLOT/ALONG lines to /NOKEY limit of 200 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_auto_tprec -Replacing definition of axis TAX -Replacing definition of axis TAX -Replacing definition of axis TAX -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_coordvars_atts - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn710_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: unrepairable repeated axis coords on axis xax at subscript 2 - *** NOTE: A dummy axis of subscripts will be used - *** NOTE: Axis "yax" is irregular. Ignoring erroneous point_spacing=even attribute. - *** NOTE: Coordinates out of order or missing on axis yax at subscript 3 - *** NOTE: A dummy axis of subscripts will be used - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Unclosed IF statement ... assuming ENDIF, in script ./v7jnls/unclosed_if.sub - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis YAXIS - LISTing to file a.nc -Replacing definition of axis TAX - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX -Replacing definition of axis ZAX -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAXIS -Replacing definition of axis XAXIS -Replacing definition of axis YAXIS -Replacing definition of axis TAXIS - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX -Replacing definition of axis YAXIS - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XLON -Replacing definition of axis YLAT - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis has repeated values -- micro-adjusting ... - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - LISTing to file a.nc - *** NOTE: Not deleted: TAX - *** NOTE: Axis is in use by grid TGRID - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Ignoring non-DSG FeatureType: GRID - *** NOTE: Ignoring non-DSG FeatureType: GRID - *** NOTE: Ignoring non-DSG FeatureType: GRID - **TMAP ERR: attribute already defined - coordinates for variable ZETA - Data set: testdata - **TMAP ERR: attribute already defined - coordinates for variable U - Data set: testdata - **TMAP ERR: attribute already defined - coordinates for variable V - Data set: testdata - **TMAP ERR: attribute already defined - coordinates for variable TEMP - Data set: testdata - **TMAP ERR: attribute already defined - coordinates for variable SALT - Data set: testdata - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX -Replacing definition of axis XAX -Replacing definition of axis TAX2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XLON - LISTing to file a1.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - *** NOTE: Requested region on modulo axis XLONN7_141 is larger than modulo length. Modulo attribute not written. - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TDAYS -Replacing definition of axis YAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a1.nc - LISTing to file a2.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_delim_datetime -Replacing definition of axis TIMAX -Replacing definition of axis TIMAX -Replacing definition of axis TIMAX -Replacing definition of axis TIMAX -Replacing definition of axis TIMAX - **ERROR: Error reading file: Check Date or Time fields. -list index,edtim,udtim,udate,edate - **ERROR: Error reading file: Check Date or Time fields. -list index,edtim,udtim,udate,edate - **ERROR: Error reading file: Check Date or Time fields. -list index,edtim,udtim,udate,edate - **ERROR: Error reading file: Check Date or Time fields. -list index,edtim,udtim,udate,edate - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_aggregate_u -Replacing definition of axis TAX - LISTing to file tmp/uagg_1.nc - LISTing to file tmp/uagg_2.nc - LISTing to file tmp/uagg_3.nc - LISTing to file tmp/uagg_4.nc - LISTing to file tmp/uagg_1_t1.nc - LISTing to file tmp/uagg_1_t2.nc - LISTing to file tmp/uagg_1_t3.nc - LISTing to file tmp/uagg_5.nc - *** NOTE: Skipping variable SST from set 2, already in the Union dataset. -Replacing definition of axis XAX -Replacing definition of axis YAX -Replacing definition of axis ZAX - LISTing to file tmp/f01_e1_tu1.nc - LISTing to file tmp/f01_e1_tu2.nc - LISTing to file tmp/f01_e1_tu3.nc - LISTing to file tmp/f01_e2_tu1.nc - LISTing to file tmp/f01_e2_tu2.nc - LISTing to file tmp/f01_e2_tu3.nc - LISTing to file tmp/f02_e1_tu1.nc - LISTing to file tmp/f02_e1_tu2.nc - LISTing to file tmp/f02_e1_tu3.nc - LISTing to file tmp/f02_e2_tu1.nc - LISTing to file tmp/f02_e2_tu2.nc - LISTing to file tmp/f02_e2_tu3.nc - LISTing to file tmp/f03_e1_tu1.nc - LISTing to file tmp/f03_e1_tu2.nc - LISTing to file tmp/f03_e1_tu3.nc - LISTing to file tmp/f03_e2_tu1.nc - LISTing to file tmp/f03_e2_tu2.nc - LISTing to file tmp/f03_e2_tu3.nc - *** NOTE: /FILES is deprecated. Use /MEMBERS - *** NOTE: Skipping variable REALIZATION from set 1, already in the Union dataset. - *** NOTE: Skipping variable REALIZATION from set 8, already in the Union dataset. - *** NOTE: /FILES is deprecated. Use /MEMBERS - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ez_noupcase - LISTing to file abc.dat - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_spawn_fail -ls: cannot access notafile.nowhere: No such file or directory -rm: cannot remove `nothing.dat': No such file or directory -cp: cannot stat `nofile.dat': No such file or directory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ave_of_ave - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_agg_member_syntax - **ERROR: unknown data set: D=5.3 -stat/br fcst[d=5.3] - **ERROR: unknown data set: D=12.30 -stat/br fcst[d=12.30] - **ERROR: unknown data set: D=12.300000 -stat/br fcst[d=12.300000] - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - **ERROR: unknown data set: D=4.1 -stat/br sst[d=4.1] - **ERROR: unknown data set: D=5.30 -stat/br sst[d=5.30] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_true_monthly - *** NOTE: /UNIT=MONTHS is ambiguous ... using 1/12 of 365.2425 days - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier - *** NOTE: True monthly axis, T0 not specified. Using start of first year of axis -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier - *** NOTE: True monthly axis, T0 not specified. Using start of first year of axis -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - LISTing to file a.nc - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - LISTing to file a.nc - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - LISTing to file a.nc - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier - *** NOTE: True monthly axis, T0 not specified. Using 01-jan-0000 -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis TAXIS - LISTing to file a.nc - *** NOTE: True monthly axis -Replacing definition of axis TAXIS - *** NOTE: True monthly axis has an implicit /EDGES qualifier - *** NOTE: True monthly axis has an implicit /EDGES qualifier - *** NOTE: True monthly axis, T0 not specified. Using start of first year of axis -Replacing definition of axis TAXIS - **ERROR: improper grid or axis definition: DEFINE AXIS/MONTHLY specify /UNITS=month or omit /UNITS (MONTH is default) -define axis/t=1-jan-2010:31-jul-2011:30/t0=1-jan-2000/monthly/units=days taxis - **ERROR: improper grid or axis definition: DEFINE AXIS/MONTHLY True-month axis: /NPOINTS not allowed. Use /T=lo:hi:del -define axis/t=1-jan-2010:31-dec-2012:1/t0=1-jan-2000/monthly/npoints=13 taxis - **ERROR: improper grid or axis definition: DEFINE AXIS/MONTHLY True-month axis delta-t must be 1 -define axis/t=1-jan-2010:31-dec-2012/t0=1-jan-2000/monthly taxis - *** NOTE: True monthly axis has an implicit /EDGES qualifier - **ERROR: improper grid or axis definition: DEFINE AXIS/MONTHLY True-month axis delta-t must be 1 -define axis/t=1-jan-2010:31-dec-2012:2/t0=1-jan-2000/monthly taxis - **ERROR: improper grid or axis definition: DEFINE AXIS/MONTHLY True-month axis: Definition /FROMDATA not allowed. Use /T=LO:HI:DEL -define axis/t/t0=1-jan-2000/monthly taxis = {123,124,126} - **ERROR: improper grid or axis definition: DEFINE AXIS/MONTHLY True-month axis: Definition /FROMDATA not allowed. Use /T=LO:HI:DEL -define axis/from/t/t0=1-jan-2001/monthly/edges taxis = {5,6,6,6,7} - **ERROR: improper grid or axis definition: DEFINE AXIS/MONTHLY True-month axis: /BOUNDS not allowed. Use /T=lo:hi:del -def axis/t/t0=1-jan-2000/monthly/bounds tax={1.2, 2, 3.2, 5, 7, 8.4, 9}, {0.5,1.5, 1.5,2.5, 2.5,3.5, 3.5,6.5, 6.5,7.5, 7.5,8.5, 8.5,9.5} - **ERROR: improper grid or axis definition: DEFINE AXIS/MONTHLY True-month axis: needs /T=lo:hi:del -define axis/x=1:5:1/monthly aaxis - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn720_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TIME - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: PPLUS command syntax error: Symbol not found PPLUS show nosymbol -pplus show nosymbol - **ERROR: PPLUS command syntax error: Symbol not found PPLUS show -ppl show - **ERROR: PPLUS command syntax error: Command not recognized: PPLUS NONSENSE -PPL nonsense - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis tax - *** NOTE: Ambiguous coordinates on T axis: S1*A - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: invalid command: Mismatched parentheses within REPEAT loop -repeat/range=1:3:1/name=count (def sym count = `count`; say 3; message/continue)) - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_compressed_gather -Replacing definition of axis xax -Replacing definition of axis yax -Replacing definition of axis tax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -Replacing definition of axis xax -Replacing definition of axis yax -Replacing definition of axis zax -Replacing definition of axis tax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -Replacing definition of axis xax -Replacing definition of axis tax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -Replacing definition of axis xax -Replacing definition of axis zax -Replacing definition of axis tax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dynamic_gather -ls: cannot access tmp/test_dyn_mem.nc: No such file or directory -Replacing definition of axis z2 -Replacing definition of grid GG - LISTing to file tmp/test_dyn_mem.nc -Replacing definition of axis x10 -Replacing definition of axis z4 - LISTing to file tmp/test_dyn_mem.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - **ERROR: request exceeds memory setting: Requested result is larger than the available memory -stat/brief v[i=101:200,j=101:200,k=1,l=1:10@ave], v[i=101:200,j=101:200,k=2,l=1:10@ave], v[l=1:10@ave] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - **ERROR: request exceeds memory setting: Requested result is larger than the available memory -stat/brief a[l=1:10@ave], b[l=1:10@ave], c[l=1:10@ave], d[l=1:10@ave] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - **ERROR: request exceeds memory setting: Requested result is larger than the available memory -stat/brief v[i=101:200,j=101:200,k=1,l=1:10@ave], v[i=101:200,j=101:200,k=2,l=1:10@ave], v[l=1:10@ave] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - **ERROR: request exceeds memory setting: Requested result is larger than the available memory -stat/brief a[l=1:10@ave], b[l=1:10@ave], c[l=1:10@ave], d[l=1:10@ave] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - **ERROR: request exceeds memory setting: Requested result is larger than the available memory -stat/brief v[i=101:200,j=101:200,k=1,l=1:10@ave], v[i=101:200,j=101:200,k=2,l=1:10@ave], v[l=1:10@ave] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - **ERROR: request exceeds memory setting: Requested result is larger than the available memory -stat/brief a[l=1:10@ave], b[l=1:10@ave], c[l=1:10@ave], d[l=1:10@ave] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - **ERROR: request exceeds memory setting: Requested result is larger than the available memory -stat/brief v[i=101:200,j=101:200,k=1,l=1:10@ave], v[i=101:200,j=101:200,k=2,l=1:10@ave], v[l=1:10@ave] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - **ERROR: request exceeds memory setting: Requested result is larger than the available memory -stat/brief a[l=1:10@ave], b[l=1:10@ave], c[l=1:10@ave], d[l=1:10@ave] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - **ERROR: value out of legal range: illegal mode argument. Must be 0 to 90 percent 95 -SET MODE FRUGAL:95 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_stat_precision - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot_vs_with_time -Replacing definition of axis tax -Replacing definition of axis time -Replacing definition of axis zaxis -Replacing definition of axis time -Replacing definition of axis time - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dot_product - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cache_management - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ls: cannot access tmp/test_auto_cache_20.nc: No such file or directory -Replacing definition of axis x10 - LISTing to file tmp/test_auto_cache_1.nc - LISTing to file tmp/test_auto_cache_2.nc - LISTing to file tmp/test_auto_cache_3.nc - LISTing to file tmp/test_auto_cache_4.nc - LISTing to file tmp/test_auto_cache_5.nc - LISTing to file tmp/test_auto_cache_6.nc - LISTing to file tmp/test_auto_cache_7.nc - LISTing to file tmp/test_auto_cache_8.nc - LISTing to file tmp/test_auto_cache_9.nc - LISTing to file tmp/test_auto_cache_10.nc - LISTing to file tmp/test_auto_cache_11.nc - LISTing to file tmp/test_auto_cache_12.nc - LISTing to file tmp/test_auto_cache_13.nc - LISTing to file tmp/test_auto_cache_14.nc - LISTing to file tmp/test_auto_cache_15.nc - LISTing to file tmp/test_auto_cache_16.nc - LISTing to file tmp/test_auto_cache_17.nc - LISTing to file tmp/test_auto_cache_18.nc - LISTing to file tmp/test_auto_cache_19.nc - LISTing to file tmp/test_auto_cache_20.nc - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - LISTing to file test_auto_cache.out - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_transp_choose - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_iin_regrid -Replacing definition of axis alinenew -Replacing definition of axis alinenew -Replacing definition of axis taxis -Replacing definition of axis aline -Replacing definition of axis aline_edges - **ERROR: invalid command: Units of source and destination axis must match: @IIN -list c - **ERROR: regridding: only @ASN regridding between calendar and - non-calendar axes: A -list c -Replacing definition of axis aline -Replacing definition of axis aline_edges - **ERROR: invalid command: Units of source and destination axis must match: @IIN -list c -Replacing definition of axis aline - *** NOTE: (fyi) units are not subject to auto-conversion: NOTHING -Replacing definition of axis aline_edges - **ERROR: invalid command: Units of source and destination axis must match: @IIN -list c - TEMPORARY data cleared from memory -Replacing definition of axis aline -Replacing definition of axis aline_edges -Replacing definition of axis aline -Replacing definition of axis aline_edges -Replacing definition of axis aline -Replacing definition of axis aline_edges -Replacing definition of axis otheraxis -Replacing definition of axis aline -Replacing definition of axis aline_edges -Replacing definition of axis otheraxis -Replacing definition of axis aline -Replacing definition of axis aline_edges -Replacing definition of axis aline -Replacing definition of axis aline_edges -Replacing definition of axis aline -Replacing definition of axis aline_edges -Replacing definition of axis aline_edges -Replacing definition of axis aline -Replacing definition of axis aline_edges -Replacing definition of axis aline -Replacing definition of axis aline_edges -Replacing definition of axis tax -Replacing definition of axis tax2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn721_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn722_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - TEMPORARY data cleared from memory - TEMPORARY data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis xaxis - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_tseries_modulo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_huge_axis - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_save_as_global - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - **ERROR: invalid command: Multi-valued Global string attributes not implemented - Variable: multistring -LIST/FORMAT=CDF/asglobal/append/file=a.nc multistring -LIST/FORMAT=CDF/asglobal/append/file=a.nc multistring - LISTing to file a.nc - **ERROR: invalid command: Global attribute must be a 1D variable length < 100 - Variable: SST -LIST/FORMAT=CDF/append/asglobal/x=150/outtype=float/file=a.nc sst -LIST/FORMAT=CDF/append/asglobal/x=150/outtype=float/file=a.nc sst -LIST/FORMAT=CDF/append/asglobal/x=150/outtype=float/file=a.nc sst - LISTing to file a.nc - **ERROR: invalid command: Global attribute must be a 1D variable length < 100 - Variable: SST -LIST/FORMAT=CDF/append/asglobal/y=10/L=2/outtype=float/file=a.nc sst -LIST/FORMAT=CDF/append/asglobal/y=10/L=2/outtype=float/file=a.nc sst - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn74_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - **ERROR: command syntax: Defining scale_factor or add_offset attributes not allowed on file variables: sst.scale_factor -define attribute/output sst.scale_factor = 0.001 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis tax_c -Replacing definition of axis tax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis zaxis -Replacing definition of axis yaxis - Using every 2th vector in the X direction - Using every 2th vector in the Y direction - Using every 2th vector in the X direction -Replacing definition of axis tax2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis tax - LISTing to file a.nc - *** NOTE: Not deleted: TAX - *** NOTE: Axis is in use by grid TGRID - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis xax -Replacing definition of axis yax -Replacing definition of axis zax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis xax -Replacing definition of axis tax - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - **ERROR: invalid command: /LIST/APPEND to netCDF file requires /FORMAT=cdf -list/append/file=a.nc/l=3 xyvar - **ERROR: invalid command: /LIST/APPEND to netCDF file requires /FORMAT=cdf -list/append/file=a.nc/l=4 xyvar - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - *** NOTE: (fyi) units are not subject to auto-conversion: COUNT -Replacing definition of axis xax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_clim_special - *** NOTE: regarding ./data/clim_axes_gregorian.nc ... - *** NOTE: GREGORIAN climatological axes defined - *** NOTE: regarding ./data/clim_axes_julian.nc ... - *** NOTE: JULIAN climatological axes defined - *** NOTE: regarding ./data/clim_axes_noleap.nc ... - *** NOTE: NOLEAP climatological axes defined - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_let_like - LISTing to file a.nc - -Bailing out of external function "box_edges": - Argument must be 1-dimensional - -Bailing out of external function "box_edges": - Argument has no axes - -Bailing out of external function "box_edges": - Argument has no axes -**ERROR: (4i6): Success - LISTing to file a.nc - **ERROR: variable unknown or not in data set: VAR_UNDEFINED -DEFINE VARIABLE/like=var_undefined myvar = 7 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_def_axis_like -Replacing definition of axis myx - **ERROR: improper grid or axis definition: DEFINE AXIS/LIKE= Axis not found AXIS_UNDEFINED -define axis/like=axis_undefined/x=1:8:1 myx - **ERROR: improper grid or axis definition: DEFINE AXIS/LIKE= Direction must match original axis -define axis/like=XAX_LEV9421_380/y=-10:10:10 myy - *** NOTE: Orientation not specified via /X,/Y,/Z,.... X assumed. - *** NOTE: Units appear to conflict with orientation: no conversions possible - **ERROR: improper grid or axis definition: error in start,end,delta -define axis/like=timesec/units=minutes timemin - **ERROR: improper grid or axis definition: error in start,end,delta -define axis/like=timesec/units=minutes/t timemin -Replacing definition of axis tax -Replacing definition of axis tax -Replacing definition of axis tax -Replacing definition of axis tax -Replacing definition of axis tax -Replacing definition of axis tax2 -Replacing definition of axis tax2 - **ERROR: variable unknown or not in data set: TAX -define axis/t/like=tax tax3 = tax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_box_edges_fcn - *** NOTE: Ambiguous argument, grid has only 1-point axes. Returning edges from X axis - **ERROR: -list box_edges(temp[z=100]) - **ERROR: -list box_edges (12) - **ERROR: -list box_edges (a) - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_hi_res_time -Replacing definition of axis lonax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_A_I_format -Replacing definition of axis TIME1 - *** NOTE: grid GGT1 used by data set clim_airt_lev - *** NOTE: Redefinition may alter apparent contents of data set - **ERROR: invalid command: Fortran format for list as Integer or with strings - must have one specifier per variable -list/nohead/l=1:0/format=(a,2x,f6.2,a5) TAX_DATESTRING(t[g=airt],t[g=airt],"month"), airt[x=-135,y=0], TAX_DATESTRING(t[g=airt],t[g=airt],"year") - **ERROR: command syntax: Unknown format or format need parentheses - Valid formats are CDF, UNFORMATTED, STREAM, COMMA, TAB or limited Fortran formats - xxx -LIST/nohead/l=1:0/format=xxx airt[x=-135,y=0] - **ERROR: command syntax: Unknown format or format need parentheses - Valid formats are CDF, UNFORMATTED, STREAM, COMMA, TAB or limited Fortran formats - a7 -list/nohead/format=a7 {"Abcde"} -list/nohead/l=1:10/j=20:23/format=(4i6) 10*airt[x=180] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_center_keylab -Replacing definition of axis xax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn741_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: invalid command: Fortran format for list as Integer or with strings - must have one specifier per variable -list/nohead/format=("This header ", I5, F8.2) size, var - **ERROR: invalid command: Fortran format for list as Integer or with strings - must have one specifier per variable -list/nohead/format=("This header ", F8.2, A) avar, var - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file tmp0.nc - LISTing to file tmp1.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - **TMAP ERR: Requested data range is outside of data set limits - Expected: etemp[M= 4 : 4 ] Found: etemp[M= 1 : 3 ] -LIST/FORMAT=CDF/append/file=a.nc/m=4 etemp - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - **TMAP ERR: Requested data range is outside of data set limits - Expected: avar[I= 41 : 46 ] Found: avar[I= 21 : 29 ] -LIST/FORMAT=CDF/append/file=a.nc/i=41:46 avar - LISTing to file a.nc - **TMAP ERR: Requested data range is outside of data set limits - inconsistent I axis length for avar -LIST/FORMAT=CDF/append/file=a.nc/i=41:51 avar - *** NOTE: Invalid I axis limits ignored: AVAR - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis xax - LISTing to file two.nc -Replacing definition of axis yax -Replacing definition of axis aline_edges -Replacing definition of axis tax -Replacing definition of axis tax2 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: illegal use of transformation: A[X=???@VAR,D=0] applied to point -list a[x=@var] - **ERROR: illegal use of transformation: A[X=???@SHF:1,D=0] applied to point -list a[x=@shf] - **ERROR: illegal use of transformation: A[X=???@DDC,D=0] applied to point -list a[x=@ddc] - **ERROR: illegal use of transformation: A[X=???@DDF,D=0] applied to point -list a[x=@ddf] - **ERROR: illegal use of transformation: A[X=???@DDB,D=0] applied to point -list a[x=@ddb] - **ERROR: illegal use of transformation: A[X=???@DIN,D=0] applied to point -list a[x=@din] - **ERROR: illegal use of transformation: A[X=???@IIN,D=0] applied to point -list a[x=@iin] - **ERROR: illegal use of transformation: A[X=???@LOC:3,D=0] applied to point -list a[x=@loc:3] - **ERROR: illegal use of transformation: A[X=???@WEQ:0,D=0] applied to point -list a[x=@weq] - **ERROR: illegal use of transformation: A[X=???@CDA:1,D=0] applied to point -list a[x=@cda] - **ERROR: illegal use of transformation: A[X=???@CDB:1,D=0] applied to point -list a[x=@cdb] - **ERROR: illegal use of transformation: A[X=???@CIA:1,D=0] applied to point -list a[x=@cia] - **ERROR: illegal use of transformation: A[X=???@CIB:1,D=0] applied to point -list a[x=@cib] - **ERROR: illegal use of transformation: A[X=???@EVN:3,D=0] applied to point -list a[x=@evn:3] - **ERROR: illegal use of transformation: A[X=???@STD,D=0] applied to point -list a[x=@std] - **ERROR: illegal use of transformation: A[X=???@WGT,D=0] applied to point -list a[x=@wgt] - **ERROR: illegal use of transformation: A[X=???@SBX:3,D=0] applied to point -list a[x=@sbx] - **ERROR: illegal use of transformation: A[X=???@FAV:3,D=0] applied to point -list a[x=@fav] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Coordinates out of order or missing on axis TIME at subscript 15 - *** NOTE: A dummy axis of subscripts will be used - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis xax -Replacing definition of axis yax -Replacing definition of axis xax -Replacing definition of axis yax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis xaxis -Replacing definition of axis yaxis - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: True monthly axis has an implicit /EDGES qualifier - LISTing to file a.nc - LISTing to file monthA.nc - LISTing to file monthB.nc - *** NOTE: Not deleted: MONTHAX - *** NOTE: Axis is in use by grid GSI1 - LISTing to file monthA.nc - LISTing to file monthA.nc - *** NOTE: Appending to NetCDF record axis which has no bounds attribute. - *** NOTE: This will result in incorrect box sizes on record axis: monthax - *** NOTE: Write the data initially with the /BOUNDS qualifier -NetCDF: Variable not found (OPeNDAP/netCDF Error code -49) - monthax_bnds not found. Attempt to append to NetCDF axis having no bounds attribute. Use /NOBOUNDS or rewrite original data with bounds. -LIST/FORMAT=CDF/append/file=monthA.nc/t=1-dec-2018:31-dec-2018/bounds tvar - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_use_agg - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets -Replacing definition of axis xax -Replacing definition of axis yax -Replacing definition of axis zax - LISTing to file tmp/f01_e1_tu1.nc - LISTing to file tmp/f01_e1_tu2.nc - LISTing to file tmp/f01_e1_tu3.nc - LISTing to file tmp/f01_e2_tu1.nc - LISTing to file tmp/f01_e2_tu2.nc - LISTing to file tmp/f01_e2_tu3.nc - LISTing to file tmp/f02_e1_tu1.nc - LISTing to file tmp/f02_e1_tu2.nc - LISTing to file tmp/f02_e1_tu3.nc - LISTing to file tmp/f02_e2_tu1.nc - LISTing to file tmp/f02_e2_tu2.nc - LISTing to file tmp/f02_e2_tu3.nc - LISTing to file tmp/f03_e1_tu1.nc - LISTing to file tmp/f03_e1_tu2.nc - LISTing to file tmp/f03_e1_tu3.nc - LISTing to file tmp/f03_e2_tu1.nc - LISTing to file tmp/f03_e2_tu2.nc - LISTing to file tmp/f03_e2_tu3.nc - *** NOTE: /FILES is deprecated. Use /MEMBERS - *** NOTE: Skipping variable REALIZATION from set 1, already in the Union dataset. - *** NOTE: Skipping variable REALIZATION from set 8, already in the Union dataset. - *** NOTE: /FILES is deprecated. Use /MEMBERS - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ens_promote_global - *** NOTE: Variable "AIRT" excluded from aggregate: Not found in all member datasets - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn743_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Re-defining viewport V1 - *** NOTE: Adjusting Y-axis label size from 0.100 to 0.002, to avoid running off page. -Re-defining viewport V2 - *** NOTE: Adjusting Y-axis label size from 0.100 to 0.002, to avoid running off page. -Re-defining viewport V3 - *** NOTE: Adjusting Y-axis label size from 0.100 to 0.002, to avoid running off page. -Re-defining viewport V4 - *** NOTE: Adjusting Y-axis label size from 0.100 to 0.002, to avoid running off page. - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file 1990-2010.nc - LISTing to file 2001.07.nc - LISTing to file 1990.nc - LISTing to file 2001+07.nc - **ERROR: unknown data set: 1990 -SET DAT/FORM=CDF 1990 - LISTing to file data/1990-2010.nc - LISTing to file data/2001.07.nc - LISTing to file data/2001+07.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis yaxis - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file manyvars.tsv - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Error in bounds "longitude_bnds" or bounds do not enclose point on axis longitude - *** NOTE: Substituting coordinate midpoints - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis taxis - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis my_axis -Replacing definition of axis my_axis -Replacing definition of axis hrly_ax -Replacing definition of axis my_axis -Replacing definition of axis hrly_ax - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis tdata -Replacing definition of axis tdata -Replacing definition of axis tdata - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_data_squared - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_overlay_graticules - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_mixed_gregorian - LISTing to file mixed_or_proleptic.nc - LISTing to file mixed_or_proleptic.nc - LISTing to file mixed_or_proleptic.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_int64 - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_samplexyz -Replacing definition of axis x1 -Replacing definition of axis y1 -Replacing definition of axis z1 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn745_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a1.nc - LISTing to file a2.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - TEMPORARY data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Re-defining viewport V1 -Re-defining viewport V2 -Re-defining viewport V3 -Replacing definition of axis tax -Replacing definition of axis taxis - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis "XAXIS" is irregular. Ignoring erroneous point_spacing=even attribute. - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: unknown command qualifier: p=0:360 -set region/p=0:360 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_iso8601_time - LISTing to file a.nc - *** NOTE: regarding ./data/clim_axes_julian.nc ... - *** NOTE: JULIAN climatological axes defined - *** NOTE: regarding ./data/clim_axes_gregorian.nc ... - *** NOTE: GREGORIAN climatological axes defined -Replacing definition of axis tax -Replacing definition of axis tax - *** NOTE: True monthly axis has an implicit /EDGES qualifier -Replacing definition of axis taxis - **ERROR: illegal limits: "TEMP" does not exist at T=06-SEP-0082 00:00 - Axis extremes are T=14-AUG-1982 11:00:13-JAN-1983 13:00 -list/t=82-9-6/k=6/x=-123/y=-3 temp - **ERROR: illegal limits: "SALT" does not exist at T=1982-01-01 00:00 - Axis extremes are T=1982-08-14 11:00:1983-01-13 13:00 -list/t=1982-01-01/k=1/x=-123/y=-3 salt - **ERROR: command syntax: 1982-15-09 invalid date or not valid in this calendar -list/t=1982-15-09/k=1/x=-123/y=-3 salt - **ERROR: command syntax: 1982-11-31 invalid date or not valid in this calendar -list/t=1982-11-31/k=1/x=-123/y=-3 salt - **ERROR: illegal limits: "SALT" does not exist at T=1980-01-15 05:00 - Axis extremes are T=1982-08-14 11:00:1983-01-13 13:00 -list/t=15/k=1/x=-123/y=-3 salt - **ERROR: command syntax: 15-09-1983 invalid date or not valid in this calendar -list/t=15-09-1983/k=1/x=-123/y=-3 salt - **ERROR: command syntax: 01-15-2010 invalid date or not valid in this calendar -define axis/t=01-15-2010:09-01-2010:1/units=days/t0=2010-01-01 taxis - **ERROR: command syntax: 2018-15-01 invalid date or not valid in this calendar -define axis/t=2018-15-01:2019-01-01:1/units=days taxis - **ERROR: command syntax: 2018--5-01 invalid date or not valid in this calendar -define axis/t=2018--5-01:2019-01-01:1/units=days taxis - **ERROR: command syntax: 2010-15-01 invalid date or not valid in this calendar -set axis/t0=2010-15-01 TIME112 - **ERROR: command syntax: invalid date string: 2010-15-01 -set axis/t0=2010-15-01 TIME112 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_agg_given_taxis -/bin/ls: cannot access aggf/forecast_??.nc: No such file or directory - -Bailing out of external function "samplem_multi": - Both arguments must have an axis in E - -Bailing out of external function "samplem_multi": - Both arguments must have an axis in E - -Bailing out of external function "samplei_multi": - Both arguments must have an axis in X - -Bailing out of external function "samplei_multi": - Both arguments must have an axis in X - -Bailing out of external function "samplej_multi": - Both arguments must have an axis in Y - -Bailing out of external function "samplej_multi": - Both arguments must have an axis in Y - -Bailing out of external function "samplek_multi": - Both arguments must have an axis in Z - -Bailing out of external function "samplek_multi": - Both arguments must have an axis in Z - -Bailing out of external function "samplel_multi": - Both arguments must have an axis in T - -Bailing out of external function "samplel_multi": - Both arguments must have an axis in T - -Bailing out of external function "samplen_multi": - Both arguments must have an axis in F - -Bailing out of external function "samplen_multi": - Both arguments must have an axis in F -Replacing definition of axis xax -Replacing definition of axis yax -Replacing definition of axis zax - LISTing to file aggf/forecast_01.nc - LISTing to file aggf/forecast_02.nc - LISTing to file aggf/forecast_03.nc - LISTing to file aggf/forecast_04.nc - LISTing to file aggf/forecast_05.nc - LISTing to file aggf/forecast_06.nc - LISTing to file aggf/forecast_07.nc - LISTing to file aggf/forecast_08.nc - LISTing to file aggf/forecast_09.nc - LISTing to file aggf/forecast_10.nc - LISTing to file aggf/forecast_11.nc - LISTing to file aggf/forecast_12.nc - LISTing to file aggf/forecast_13.nc - LISTing to file aggf/forecast_14.nc - LISTing to file aggf/forecast_15.nc - LISTing to file aggf/forecast_16.nc - LISTing to file aggf/forecast_17.nc - LISTing to file aggf/forecast_18.nc - LISTing to file aggf/forecast_19.nc - LISTing to file aggf/forecast_20.nc - LISTing to file aggf/forecast_21.nc - LISTing to file aggf/forecast_22.nc - LISTing to file aggf/forecast_23.nc - LISTing to file aggf/forecast_24.nc - LISTing to file aggf/forecast_25.nc - LISTing to file aggf/forecast_26.nc - LISTing to file aggf/forecast_27.nc - LISTing to file aggf/forecast_28.nc - LISTing to file aggf/forecast_29.nc - LISTing to file aggf/forecast_30.nc - LISTing to file aggf/forecast_31.nc - LISTing to file aggf/forecast_32.nc - LISTing to file aggf/forecast_33.nc - LISTing to file aggf/forecast_34.nc - LISTing to file aggf/forecast_35.nc - LISTing to file aggf/forecast_36.nc - LISTing to file aggf/forecast_37.nc - LISTing to file aggf/forecast_38.nc - *** NOTE: Not deleted: ZAX - *** NOTE: Axis is in use by grid THREE_D_GRD - *** NOTE: Not deleted: YAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Not deleted: XAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Time axis coordinates matched using @XACT -Replacing definition of axis tax - *** NOTE: Time axis coordinates matched using @BIN - *** NOTE: Not deleted: TAX - *** NOTE: Axis is in use by grid TGRID -Replacing definition of axis tax - *** NOTE: Time axis coordinates matched using @ASN - *** NOTE: Not deleted: TAX - *** NOTE: Axis is in use by grid TGRID - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_tagg_overlaps -Replacing definition of axis time - LISTing to file data2009.nc -Replacing definition of axis time - LISTing to file data2010.nc -Replacing definition of axis time - LISTing to file data2011.nc - *** NOTE: Not deleted: TIME - *** NOTE: Axis is in use by grid GSIGMA - *** NOTE: Ignored last 1 timesteps of data2009.nc due to overlap with data2010.nc - *** NOTE: Ignored last 3 timesteps of data2010.nc due to overlap with data2011.nc - *** NOTE: Time axis coordinates matched using @XACT - *** NOTE: Ignored last 1 timesteps of data2009.nc due to overlap with data2010.nc - *** NOTE: Ignored last 3 timesteps of data2010.nc due to overlap with data2011.nc - *** NOTE: Time axis coordinates matched using @XACT - **ERROR: improper grid or axis definition: time axis is not monotonic at L=1 of file data2010.nc -DEFINE DATA /AGG /T myagg = data2010.nc, data2009.nc, data2011.nc - **ERROR: error defining aggregate dataset: Time axes overlap for data2009.nc and data2010.nc -DEFINE DATA /AGG /T /TAXIS=aggtime@XACT myagg = data2010.nc, data2009.nc, data2011.nc - **ERROR: error defining aggregate dataset: Time axes overlap for data2009.nc and data2010.nc -DEFINE DATA /AGG /T /TAXIS=aggtime@BIN myagg = data2010.nc, data2009.nc, data2011.nc - *** NOTE: Ignored last 1 timesteps of data2009.nc due to overlap with data2010.nc - **ERROR: error defining aggregate dataset: Excessive (3) overlaps in time axes for data2010.nc and data2011.nc -DEFINE DATA /AGG /T /TOVERLAP=2 /TAXIS=aggtime@XACT myagg = data2010.nc, data2009.nc, data2011.nc - *** NOTE: Ignored last 1 timesteps of data2009.nc due to overlap with data2010.nc - **ERROR: error defining aggregate dataset: Excessive (3) overlaps in time axes for data2010.nc and data2011.nc -DEFINE DATA /AGG /T /TOVERLAP=2 /TAXIS=aggtime@BIN myagg = data2010.nc, data2009.nc, data2011.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_samplexyzt - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_sample_multi - **ERROR: error in external function -list samplem_multi(a_2d, b_t) - **ERROR: error in external function -list samplem_multi(a_2, b_1) - *** NOTE: Ambiguous coordinates on X axis: SAMPLEM_MULTI(A_2D, C_2D) -Replacing definition of axis aax_a -Replacing definition of axis aax_b -Replacing definition of axis sax - **ERROR: error in external function -list samplei_multi(a_2d, b_t) - **ERROR: error in external function -list samplei_multi(a_2, b_1) -Replacing definition of axis bigax - *** NOTE: Ambiguous coordinates on Y axis: SAMPLEI_MULTI(A_2D, C_2D) -Replacing definition of axis aax_a -Replacing definition of axis aax_b -Replacing definition of axis sax - **ERROR: error in external function -list samplej_multi(a_2d, b_t) - **ERROR: error in external function -list samplej_multi(a_2, b_1) -Replacing definition of axis bigax - *** NOTE: Ambiguous coordinates on X axis: SAMPLEJ_MULTI(A_2D, C_2D) -Replacing definition of axis aax_a -Replacing definition of axis aax_b - **ERROR: error in external function -list samplek_multi(a_2d, b_t) - **ERROR: error in external function -list samplek_multi(a_2, b_1) - *** NOTE: Ambiguous coordinates on X axis: SAMPLEK_MULTI(A_2D, C_2D) -Replacing definition of axis aax_a -Replacing definition of axis aax_b -Replacing definition of axis sax2 - **ERROR: error in external function -list samplel_multi(a_2d, b_f) - **ERROR: error in external function -list samplel_multi(a_2, b_1) - *** NOTE: Ambiguous coordinates on X axis: SAMPLEL_MULTI(A_2D, C_2D) -Replacing definition of axis aax_a -Replacing definition of axis aax_b -Replacing definition of axis sax2 - **ERROR: error in external function -list samplen_multi(a_2d, b_t) - **ERROR: error in external function -list samplen_multi(a_2, b_1) - *** NOTE: Ambiguous coordinates on X axis: SAMPLEN_MULTI(A_2D, C_2D) - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn751_bug_fixes - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis xaxis -Replacing definition of axis yaxis - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file time_origin_1.nc - LISTing to file time_origin_01.nc - LISTing to file time_origin_01.nc - LISTing to file time_origin_01.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis latitude - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis lev - *** NOTE: Axis coordinates are decreasing-ordered. Reversing ordering for axis lev - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cdf_strlen -Replacing definition of axis taxis - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - *** NOTE: SAVE/STRLEN= is ignored when appending to the file - LISTing to file a.nc - LISTing to file a.nc - **TMAP ERR: attempt to redefine line - String length for variable tstrings inconsistent w/ CDF file. On first write, use /STRLEN= at least 15 -LIST/FORMAT=CDF/append/file=a.nc/L=2:4 tstrings, tstrings_long - LISTing to file a.nc - LISTing to file a.nc - *** NOTE: SAVE/STRLEN= is ignored when appending to the file - **TMAP ERR: attempt to redefine line - String length for variable tstrings inconsistent w/ CDF file. On first write, use /STRLEN= at least 15 -LIST/FORMAT=CDF/append/file=a.nc/L=2:4/strlen=10 tstrings - LISTing to file a.nc - **ERROR: invalid command: Strings are length 15: longer than /STRLEN setting of 7 - Variable: TSTRINGS -LIST/FORMAT=CDF/clobber/file=a.nc/STRLEN=7 tstrings, tstrings_long -LIST/FORMAT=CDF/clobber/file=a.nc/STRLEN=7 tstrings, tstrings_long - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_tseries - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - **ERROR: inconsistent sizes of data regions: feature constraints on X axis of LONGITUDE -list t_25[x=95:180] + longitude - **ERROR: command syntax: Limits by subscript /L= invalid for DSG data. Use /T= limits or select by feature -list/l=1:5 t_25 - **ERROR: illegal limits: "T_25" is not in the range I=200:210 - Axis extremes are I=1:70 -list/i=200:210 t_25 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - **ERROR: illegal use of transformation: Can only transform the E axis of DSG variable ROWSIZE -list rowsize[t=@max] - **ERROR: illegal use of transformation: Can only transform the T axis of DSG variable T_25 -list t_25[e=@max] - **ERROR: illegal use of transformation: Can only transform the T axis of DSG variable T_25 -list t_25[t=@max,e=@max] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_to_dsg - LISTing to file fake_model_temp.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -Replacing definition of axis tbig -Replacing definition of axis ybig -Replacing definition of axis xbig -Replacing definition of axis zbig - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - *** NOTE: No missing_value or _FillValue attribute. Using NaN for variable: trajectory - *** NOTE: No missing_value or _FillValue attribute. Using NaN for variable: rowSize - *** NOTE: No missing_value or _FillValue attribute. Using NaN for variable: time -Replacing definition of axis tfake -Replacing definition of axis xfake -Replacing definition of axis yfake -Replacing definition of grid GFAKE - LISTing to file fake_model_temp.nc -Replacing definition of axis xfake - *** NOTE: grid GIL1 used by data set fake_model_temp - *** NOTE: Redefinition may alter apparent contents of data set - LISTing to file fake_model_temp.nc -Replacing definition of axis tbig -Replacing definition of axis xbig -Replacing definition of axis ybig -Replacing definition of grid GBIG -Replacing definition of axis tfake -Replacing definition of axis xfake -Replacing definition of axis yfake -Replacing definition of axis zfake -Replacing definition of grid GFAKE - LISTing to file fake_model_temp.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_feature_mask - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_repeat_m - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_traj_plot - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_from_dsg - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - PERMANENT data cleared from memory - TEMPORARY data cleared from memory - *** NOTE: No missing_value or _FillValue attribute. Using NaN for variable: trajectory - *** NOTE: No missing_value or _FillValue attribute. Using NaN for variable: rowSize - *** NOTE: No missing_value or _FillValue attribute. Using NaN for variable: time - **ERROR: invalid command: Regridding DSG Trajectory data to grids is not implemented -load TEMP_CTD_RBR_MEAN[d=1,g=reg_var] - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_use_feature - **TMAP ERR: Corrupted CF-DSG structure or attributes - Required coordinate variables not found. Profile file is missing directions: vert -SET DAT/FORM=CDF/feature=profile dsg_cross_dateline.nc - *** NOTE: Coordinates inconsistent with FeatureType. Trajectory data must have observations along XYT - **TMAP ERR: Invalid command - Error on SET DATA/FEATURE= applied to an open dataset. - Data set: ./data/DSG_ERDDAP_pmelTao5daySst.nc - **TMAP ERR: Corrupted CF-DSG structure or attributes - Required coordinate variables not found. Trajectory file is missing directions: lat -SET DAT/FORM=CDF dsg_bad_coord - **TMAP ERR: Corrupted CF-DSG structure or attributes - Row Size variable w/ sample_dimension not found. -SET DAT/FORM=CDF dsg_bad_atts1 - **TMAP ERR: Corrupted CF-DSG structure or attributes - Feature-ID variable not found or invalid value of cf_role attribute -SET DAT/FORM=CDF dsg_bad_atts2 - *** NOTE: Ambiguous DSG coordinate info. Multiple variables claiming to be E axis: lons, lon360. Check axis attributes. - *** NOTE: Ambiguous DSG coordinate info. Multiple variables claiming to be N axis: yindex, lats. Check axis attributes. - *** NOTE: SET DATA/FEATURE= applies only to Discrete Sampling Geometries datasets. Ignoring /FEATURE= - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_plot_timeseries - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_save - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - LISTing to file a.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_transforms - LISTing to file a.nc - LISTing to file a.nc - *** NOTE: Transformation @CDA: not customized for Discrete Sampling Geometries: computed over all features. - *** NOTE: Transformation @CDB: not customized for Discrete Sampling Geometries: computed over all features. - *** NOTE: Transformation @CIA: not customized for Discrete Sampling Geometries: computed over all features. - *** NOTE: Transformation @CIB: not customized for Discrete Sampling Geometries: computed over all features. - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_one_e_val - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_list_comma_tab - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_if_exprns - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_subset - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_to_dsg_prof -Replacing definition of axis xfake -Replacing definition of axis zfake - LISTing to file fake_model_temp.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_to_dsg_traj -Replacing definition of axis tfake -Replacing definition of axis xfake -Replacing definition of axis yfake -Replacing definition of grid GFAKE - LISTing to file fake_model_temp.nc -Replacing definition of axis xfake - *** NOTE: grid GIL1 used by data set fake_model_temp - *** NOTE: Redefinition may alter apparent contents of data set - LISTing to file fake_model_temp.nc - LISTing to file sail_copy.nc -Replacing definition of axis xfake -Replacing definition of axis zfake -Replacing definition of grid GFAKE - LISTing to file fake_model_temp.nc - LISTing to file sample_xyzt_to_traj.nc - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_save_uvars -Replacing definition of grid GFAKE - LISTing to file fake_model_temp.nc - LISTing to file sail_copy.nc - LISTing to file sail_copy.nc - LISTing to file sail_copy.nc - LISTing to file sail_copy.nc - LISTing to file a.nc - LISTing to file sail_copy.nc - LISTing to file sail_copy.nc - **ERROR: invalid command: Appending to DSG file: Size of trajectory dimension does not match dimension in file: TEMP_FROM_GRID -LIST/FORMAT=CDF/append/file=sail_copy.nc temp_from_grid - LISTing to file sail_copy.nc - LISTing to file sail_copy.nc - **ERROR: invalid command: Appending to DSG file: Size of obs dimension does not match dimension in file: TEMP_FROM_GRID -LIST/FORMAT=CDF/append/file=sail_copy.nc temp_from_grid - LISTing to file sail_copy.nc - **ERROR: invalid command: Appending to DSG file: Size of trajectory dimension does not match dimension in file: TEMP_FROM_GRID -LIST/FORMAT=CDF/append/e=2/file=sail_copy.nc temp_from_grid - LISTing to file a.nc - LISTing to file sail_copy.nc - **ERROR: invalid command: Appending DSG variable to file that is not DSG or different featureType -LIST/FORMAT=CDF/append/file=sail_copy.nc my_temp_data - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_color_wire - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_inf2missing - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_pointplots -Replacing definition of axis xax -Replacing definition of axis yax - **ERROR: command syntax: highlight - /HIGHLIGHT= only valid with named symbols -plot /over /nokey /size=0.45 /symbol=12 /color=green /highlight /vs {8.0},{1.0} - *** NOTE: Not deleted: YAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Not deleted: XAX - *** NOTE: Axis is in use by grid GFORMAT - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_symbolcolors -Replacing definition of axis yax - *** NOTE: Not deleted: YAX - *** NOTE: Axis is in use by grid GFORMAT - *** NOTE: Not deleted: XAX - *** NOTE: Axis is in use by grid GFORMAT - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_contourcolor - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_outline_poly - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_stats_histogram -Replacing definition of axis yax -Replacing definition of axis zax - *** NOTE: Not deleted: ZAX - *** NOTE: Axis is in use by grid THREE_D_GRD - *** NOTE: Not deleted: YAX - *** NOTE: Axis is in use by grid GFORMAT - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_symbolpattern - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_setting_text -Replacing definition of axis xaxis -Replacing definition of axis yaxis - **ERROR: invalid command: SET TEXT/FONT=what? See Unix system fonts -set text/font - **ERROR: invalid command: SET TEXT Font is Hershey. No other SET TEXT settings apply. -set text/font=hershey/color=green/bold - **ERROR: invalid command: SET TEXT Font is Hershey. No other SET TEXT settings apply. -set text/isiz=3/bold title - **ERROR: value out of legal range: 6 - SET TEXT ISIZ argument must be between -4 and 4 -set text/font=helvetica/isiz=6 - **ERROR: command syntax: indigo - SET TEXT/COLOR=(R,G,B) takes 3 arguments, or valid color name or number -set text/color=indigo/font=helvetica - **ERROR: invalid command: SET TEXT with unknown text-group name -set text/bold nogroup - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - **ERROR: command syntax: unknown region name: @w -set region/@w - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." - **ERROR: dimensions improperly specified: specified data is not a line - - its a 2D region: "plot/i=1:10/j=1:20/nolabel i+j" -plot/i=1:10/j=1:20/nolabel i+j - **ERROR: dimensions improperly specified: specified data is not a line - - its a 2D region: "plot/i=1:10/j=1:20/nolabel i,i+j" -plot/i=1:10/j=1:20/nolabel i,i+j - **ERROR: dimensions improperly specified: specified data is not a line - - its a 2D region: "plot/i=1:10/j=1:20/nolabel i+j,i" -plot/i=1:10/j=1:20/nolabel i+j,i - **ERROR: dimensions improperly specified: differing axes: - first line is on Y axis - line 2 is on X axis -plot/i=1:10/j=1:20/nolabel j,i - **ERROR: dimensions improperly specified: unequal line lengths: - First expression has 20 points. - Expression 2 has 10 points: - "plot/i=1:10/j=1:20/vs/line/nolabel j,i" -plot/i=1:10/j=1:20/vs/line/nolabel j,i - **ERROR: dimensions improperly specified: must be a 2D region - contour/i=1:10/j=1:20/nolabel i -contour/i=1:10/j=1:20/nolabel i - **ERROR: invalid command: can only CONTOUR single fields - Use /OVERLAY for multiple variables -contour/i=1:10/j=1:20/nolabel i/j,j/i - **ERROR: invalid command: VECTOR requires paired components -vector/i=1:10/j=1:20/nolabel i/j - **ERROR: invalid command: VECTOR requires paired components -vector/i=1:10/j=1:20/nolabel i/j,j/i,i+j -Re-defining viewport LM6 -Re-defining viewport UM6 - Using every 2th vector in the X direction - Using every 2th vector in the Y direction -Re-defining viewport LM6 - Using every 2th vector in the X direction - Using every 2th vector in the Y direction - Using every 2th vector in the X direction - Using every 2th vector in the Y direction -Re-defining viewport UM6 - Using every 2th vector in the X direction - Using every 2th vector in the Y direction - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Re-defining viewport UL6 -Re-defining viewport UM6 -Re-defining viewport UR6 -Re-defining viewport LL6 -Re-defining viewport LR6 -Replacing definition of axis TDAYS - Using every 4th vector in the X direction - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis TAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Replacing definition of axis XAX - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo -Re-defining viewport LL6 -Re-defining viewport UL6 -Re-defining viewport LM6 -Re-defining viewport UM6 -Re-defining viewport LR6 -Re-defining viewport UR6 - PERMANENT data cleared from memory - TEMPORARY data cleared from memory -ooooooooooooooooooooooooooooooooooooooooooo - *** NOTE: the use of the "-batch" command-line option is deprecated; - *** NOTE: instead use the "FRAME /FILE=... /FORMAT=..." Ferret command - **ERROR: dimensions improperly specified: specified data is not a line - - its a 2D region: "plot/i=1:10/j=1:20/nolabel i+j" -plot/i=1:10/j=1:20/nolabel i+j - **ERROR: dimensions improperly specified: specified data is not a line - - its a 2D region: "plot/i=1:10/j=1:20/nolabel i,i+j" -plot/i=1:10/j=1:20/nolabel i,i+j - **ERROR: dimensions improperly specified: specified data is not a line - - its a 2D region: "plot/i=1:10/j=1:20/nolabel i+j,i" -plot/i=1:10/j=1:20/nolabel i+j,i - **ERROR: dimensions improperly specified: differing axes: - first line is on Y axis - line 2 is on X axis -plot/i=1:10/j=1:20/nolabel j,i - **ERROR: dimensions improperly specified: unequal line lengths: - First expression has 20 points. - Expression 2 has 10 points: - "plot/i=1:10/j=1:20/vs/line/nolabel j,i" -plot/i=1:10/j=1:20/vs/line/nolabel j,i - **ERROR: dimensions improperly specified: must be a 2D region - contour/i=1:10/j=1:20/nolabel i -contour/i=1:10/j=1:20/nolabel i - **ERROR: invalid command: can only CONTOUR single fields - Use /OVERLAY for multiple variables -contour/i=1:10/j=1:20/nolabel i/j,j/i - **ERROR: invalid command: VECTOR requires paired components -vector/i=1:10/j=1:20/nolabel i/j - **ERROR: invalid command: VECTOR requires paired components -vector/i=1:10/j=1:20/nolabel i/j,j/i,i+j -Re-defining viewport LM6 -Re-defining viewport UM6 -Unable to delete drawing segments when writing directly to an image file -Unable to delete drawing segments when writing directly to an image file - *** NOTE: the use of the "-batch" command-line option is deprecated; - *** NOTE: instead use the "FRAME /FILE=... /FORMAT=..." Ferret command - *** NOTE: the use of "SET MODE METAFILE" is deprecated; - *** NOTE: instead use "FRAME /FILE=... /FORMAT=..." -Ended at Tue Aug 20 12:26:33 PDT 2019 diff --git a/bench/run_all_logs.pyferret_dunkel_log b/bench/run_all_logs.pyferret_dunkel_log deleted file mode 100644 index 748fdab40..000000000 --- a/bench/run_all_logs.pyferret_dunkel_log +++ /dev/null @@ -1,133616 +0,0 @@ -Procedure run_all to run all FERRET benchmarks -Running FERRET version /home/users/ansley/PyFerret/bin/pyferret --rwxr-xr-x. 1 ansley tmap 1858 Aug 20 12:11 /home/users/ansley/PyFerret/bin/pyferret -Using external functions from /home/users/ansley/PyFerret/ext_func/pylibs -Running the tests of external functions y -Benchmark run by ansley -Note: update from the trunk -ncdump output will be in all_ncdump.out, and appended to this log file -***** Restricting Ferret paths to bench directory ***** -FER_DATA=. ./data -FER_DATA_THREDDS= http://ferret.pmel.noaa.gov/geoide/geoIDECleanCatalog.xml /home/users/tmap/ferret/linux/fer_dsets -FER_DAT=/home/users/tmap/ferret/rhel6-x86_64-linux -FER_DESCR=. ./data -FER_DIR=. -FER_DSETS=. ./data -FER_EXTERNAL_FUNCTIONS=/home/users/ansley/PyFerret/ext_func/pylibs -FER_FONTS=/home/users/ansley/PyFerret/ppl/fonts -FER_GO=. ./v4jnls ./v5jnls ./v6jnls ./v7jnls ./pyjnls ./genjnls . /home/users/ansley/PyFerret/go /home/users/ansley/PyFerret/examples /home/users/ansley/PyFerret/contrib -FER_GRIDS=. ./data -FER_LIBS=/home/users/tmap/ferret/rhel6-x86_64-linux/lib -FER_PALETTE=. /home/users/ansley/PyFerret/ppl -FER_WEB_BROWSER=firefox -PYFER_EXTERNAL_FUNCTIONS=/home/users/ansley/PyFerret/ext_func/pylibs -Beginning at Tue Aug 20 12:13:27 PDT 2019 -! BN500_ALL.JNL -! - run all the benchmark tests -! - ordered (more or less) from least to most complex -! V2.30: uses BN230_syntax instead of BN200_syntax -! added BN230_cdf -! added BN230_regrid_transforms 8/92 -! V3.00: uses BN300_syntax instead of BN230_syntax -! added bn300_dollar 4/93 -! V3.01: adds bn301_axis_limits and ppl echo ON -! V3.11: adds bn311_ez_order (/ORDER and /FORMAT=STREAM) -! V3.12: adds bn312_user (tests SAMPLE and OBJECTIVE) -! V3.13: for AIX testing: removed mem_mgmt & ignore errors during bn200_output -! V3.20: to test SAVE/HEADING=enhanced (new BN320_cdf) -! V4.00: added "*" tests to bnxxx_dollar and added new test bn400_grave -! 6/95 - added bn401_symbols -! 7/95 - modified bn*_syntax: bn401_syntax has var1[G=var2[d=dset]] -! 8/95 - modified bn*_ez: bn401_ez tests FORM=unf -! V4.20: -! 9/95 - added test of LET/D and LIST/FORMAT=STREAM -! - slightly modified syntax in bn420_regrid_transforms -! - added bn420_dynamic_grids and bn420_comma_delimited -! - added 2 small additional tests in bn420_grave -! - added a small syntax test in bn420_syntax -! - tested for commas inside args in bn420_dollar -! - tested for enclosing parens in bn420_symbol -! V4.30: -! 5/96 - added IF tests -! 9/96 - added MC data tests *kob* -! V4.50: -! 1/97 - eliminated MODE POLISH -! (bn301_expressions.jnl -> bn450_expressions.jnl) -! 8/97 - bn430_if -> bn450_if: added symbol substitution test -!10/97*kob*- cancel metafile creation after bn420_syntax and turn it -! on only before bn450_plot (upgraded from bn320_plot) -! - also add test for negative time steps (bn450_negative_t) -! - also add test for cuvilinear stuff -! - also added steve's "exact match" regridding -!11/97 *kob* - added bn450_gc_functions -! V4.91: -! 1/98 - corrected bug in this script -- need to cancel viewports after -! bn312_user or the plots which follow come up in a small viewport -! 2/98 *kob* - moved bn450_curv.jnl up to right after bn450_plot.jnl in -! order to have those metafiles saves as well for checking -! also renamed it to bn491_curv.jnl and added some minor -! cosmetic changes -! 2/98 *kob* - add in bn491_bug_fixes.jnl -! 4/98 *sh* - replaced bn420_dynamic_grids with bn491_... (minor chg) -! V5.00: -! 2/99 *sh* -- bn420_regrid_transform ==> bn500_regrid_transform -! 3/1/99 *kob* - removed bn200_budget from distributable benchmarks -! 5/99 *kob* - added V50 bench files -! V5.10: -! 10/99 *sh* -- added bn_sample.jnl to test SAMPLEI,J,K,L -! bn_non_COARDS_netCDF.jnl -! bn_cache_hits.jnl, .sub -! bn_strides_revs_perms.jnl -! bn_regrid_to_user.jnl -! V5.33: -! 6/01 *sh* -- added bn_modulo_strides.jnl -! 6/01 *acm* -- add bn_calendar -! bn_dash_dot -! bn_flowlines -! 6/08 *kob* -- add bn_internal_external_functions -! -! V5.40: -! 9/01 *sh* -- added bn_axis_viewports -! -- added bn_strings -! 10/01 *acm* -- added bn_axcontrol -! -- add EOF's and cmprsi_by to bn_internal_external_functions.jnl -! 11/01 *sh* -- added bn_delimited_read -! -! V5.41: -! 3/02 *acm*-- Add bn540_bug_fixes.jnl -! -! V5.50: -! 11/02 *sh*-- Add bn_subspan_modulo.jnl -! -! V5.52 -! 5/03 *acm* add bn_multi_line_labels.jnl, bn552_bug_fixes.jnl, -! bn_set_var_scale_off.jnl, bn_longvarnames.jnl, bn_shakey.jnl -! v5.53 -! 9/03 *kob* added bn_test_nan - -! v5.81 -! 9/05 *acm* remove bn_curv_shade_mod.jnl which was duplicated by bn_curv_mod.jnl - -! V6.00 -! 9/06 *acm* new scripts bn_tab_comma_multivar.jnl, bn_element_functions.jnl, -! bn_long_revision_num.jnl, bn_window_title.jnl, bn_last_error.jnl, -! bn_deg_min.jnl, bn_dp_readscale.jnl, bn_bounds_defineax.jnl, -! bn_attributes.jnl, n600_bug_fixes.jnl -! -! 9/06 *acm* New bn601_bug_fixes for version 6.02 - -! 6/06 *acm* add bn_transforms.jnl -- there was a benchmark testing regridding -! transforms but not the others: smoothers, fillers, etc. -! 1/12 *acm* add bn_variance.jnl -- testing @VAR transform - -! 10/06 *acm* Remove tests of nco funcions: we dont want to require them to be installed -! on a system in order for it to pass the benchmarks. -! -! 11/06 *acm* New bn602_bug_fixes for version 6.02 -! V610 *acm* 3/08 - add new MODE NLEVELS -! V685 *sh* 11/13 - added bn_vtree to test SHOW VAR/TREE -! V698+ *sh* 06/15 - added bn_auxiliary -! V698+ *sh* 11/15 - added bn_aggregate_t and bn_unquoted_args.jnl -! V698+ *sh* 1/16 - added bn_aggregate_f -! 2/16 - added bn_aggregate_tef -! V698+ *acm*2/16 - add bn_speedtest: simple speed test, parsing. -! 2/16/24 do fewer # repetitions. -! V698+ *acm*2/16 - add bn_show_noupcase: output of SHOW responds to MODE UPCASE -! V698+ *acm*2/16 - add bn_letd_attributes: attribute/list handling of LET/D variables -! *sh* 3/16 - added bn_plot_along.jnl -! *acm*4/16 - added bn_show_commands.jnl -! *acm*4/16 - added bn_plot_decimate.jnl -! V702 *sh 11/16 - added bn_agg_member_syntax.jnl -! V702 *acm 12/16 - Merge/Reintigrate true-month-axis branch. New test bn_true_monthly. -! and axes that are true-month in other tests are treated as true-month. -! V702 *acm 12/16 - Remove all references to the long unused and unsupported vis5D function -! V7023 *acm 1/17 - Back out the changes that automatically detect a true-month axis in -! a netCDF file or from a DEFINE AXIS (when given without /MONTHLY). -! -! Include this statement to compare the outupt of 6D Ferret with -! previous 4D benchmark logs. -! cancel mode 6d_lab -! V702 *sh* 3/17 - added dynamic memory benchmarks. Tweaked a couple of others - -GO bn_reset bn_syntax -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_syntax -GO bn_syntax -! bn401_syntax.JNL -! - test syntax interpretation of Program FERRET -! - major changes for FERRET ver 2.00 5/90 -! - changed mode REMOTE to mode STUPID - REMOTE removed in V2.30 -! - added semicolon-separated command group processing in V3.00 2/93 -! - added mode journal and mode ppllist tests -! - extended mode journal, ppllist, and metafile tests to include paths -! for V4.01 added var1[G=var2[d=dset]] (nested brackets) syntax -! for V4.20 added blanks surrounding colons -! and tests of "escapes" using back slashes -! for V531 test continuation lines and long input lines -! for v698 interpretation of unknown qualifiers changed -- e.g. say /notaqual -! V698 3/16 *acm* Removed Philander-Seigel code including diagnostic variables, -! pre-defined axes and grids. - -! SET - SHOW - CANCEL DATA -USE gtbc011 -SHOW DATA/BRIEF - currently SET data sets: - 1> ./data/gtbc011.cdf (default) -SHOW DATA - currently SET data sets: - 1> ./data/gtbc011.cdf (default) - name title I J K L - TEMP TEMPERATURE 70:72 1:100 1:27 1:3 - SALT (SALINITY(ppt) - 35) /1000 70:71 1:100 1:27 1:3 - U ZONAL VELOCITY 69:72 1:100 1:27 1:3 - V MERIDIONAL VELOCITY 69:72 1:100 1:27 1:3 - W VERTICAL VELOCITY 70:71 1:100 1:27 1:3 - TAUX ZONAL WIND STRESS 69:71 1:100 ... 1:3 - TAUY MERIDIONAL WIND STRESS 69:71 1:100 ... 1:3 - PSI STREAM FUNCTION 69:73 1:100 ... 1:3 - -SHOW DATA/VARIABLES - currently SET data sets: - 1> ./data/gtbc011.cdf (default) - - name title I J K L - TEMP TEMPERATURE 70:72 1:100 1:27 1:3 - deg. C on grid PS3DT1 with -1.E+34 for missing data - X=161W:158W Y=30S:50N Z=0:4149 - SALT (SALINITY(ppt) - 35) /1000 70:71 1:100 1:27 1:3 - frac. by wt. less .035 on grid PS3DT1 with 0.01 for missing data - X=161W:159W Y=30S:50N Z=0:4149 - U ZONAL VELOCITY 69:72 1:100 1:27 1:3 - cm/sec on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - V MERIDIONAL VELOCITY 69:72 1:100 1:27 1:3 - cm/sec on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - W VERTICAL VELOCITY 70:71 1:100 1:27 1:3 - cm/sec on grid PS3DW1 with -1.E+34 for missing data - X=161W:159W Y=30S:50N Z=5:4149 - TAUX ZONAL WIND STRESS 69:71 1:100 ... 1:3 - dynes/cm**2 on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - TAUY MERIDIONAL WIND STRESS 69:71 1:100 ... 1:3 - dynes/cm**2 on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - PSI STREAM FUNCTION 69:73 1:100 ... 1:3 - cm**3/sec on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:156.5W Y=28.8S:51.4N - - time range: 15-MAR-1983 10:00 to 15-MAR-1983 12:00 - -SHOW DATA/MEMBERS - currently SET data sets: - 1> ./data/gtbc011.cdf (default) - name title I J K L - TEMP TEMPERATURE 70:72 1:100 1:27 1:3 - SALT (SALINITY(ppt) - 35) /1000 70:71 1:100 1:27 1:3 - U ZONAL VELOCITY 69:72 1:100 1:27 1:3 - V MERIDIONAL VELOCITY 69:72 1:100 1:27 1:3 - W VERTICAL VELOCITY 70:71 1:100 1:27 1:3 - TAUX ZONAL WIND STRESS 69:71 1:100 ... 1:3 - TAUY MERIDIONAL WIND STRESS 69:71 1:100 ... 1:3 - PSI STREAM FUNCTION 69:73 1:100 ... 1:3 - -SHOW DATA/FULL - currently SET data sets: - 1> ./data/gtbc011.cdf (default) - - name title I J K L - TEMP TEMPERATURE 70:72 1:100 1:27 1:3 - deg. C on grid PS3DT1 with -1.E+34 for missing data - X=161W:158W Y=30S:50N Z=0:4149 - SALT (SALINITY(ppt) - 35) /1000 70:71 1:100 1:27 1:3 - frac. by wt. less .035 on grid PS3DT1 with 0.01 for missing data - X=161W:159W Y=30S:50N Z=0:4149 - U ZONAL VELOCITY 69:72 1:100 1:27 1:3 - cm/sec on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - V MERIDIONAL VELOCITY 69:72 1:100 1:27 1:3 - cm/sec on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - W VERTICAL VELOCITY 70:71 1:100 1:27 1:3 - cm/sec on grid PS3DW1 with -1.E+34 for missing data - X=161W:159W Y=30S:50N Z=5:4149 - TAUX ZONAL WIND STRESS 69:71 1:100 ... 1:3 - dynes/cm**2 on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - TAUY MERIDIONAL WIND STRESS 69:71 1:100 ... 1:3 - dynes/cm**2 on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - PSI STREAM FUNCTION 69:73 1:100 ... 1:3 - cm**3/sec on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:156.5W Y=28.8S:51.4N - - time range: 15-MAR-1983 10:00 to 15-MAR-1983 12:00 - -CANCEL DATA 1 -SHOW DATA - currently SET data sets: -USE gtbc011 -USE gt4d011 -SHOW DATA/BRIEF - currently SET data sets: - 1> ./data/gtbc011.cdf - 2> ./data/gt4d011.cdf (default) -SHOW DATA/BRIEF gtbc011 - currently SET data sets: - 1> ./data/gtbc011.cdf -! ... save and restore data set -SET DATA 1 -SET DATA/SAVE -SHOW DATA/BRIEF - currently SET data sets: - 1> ./data/gtbc011.cdf (default) - 2> ./data/gt4d011.cdf -SET DATA 2 -SHOW DATA/BRIEF - currently SET data sets: - 1> ./data/gtbc011.cdf - 2> ./data/gt4d011.cdf (default) -SET DATA/RESTORE -CANCEL DATA/ALL -! ... EZ data sets -FILE snoopy.dat -SHOW DATA/FULL - currently SET data sets: - 1> ./snoopy.dat (default) - - name title I J K L - V1 V1 1:2 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=-0.5:1.5 - - /FORMAT = FREE - /SKIP = 0 - /COLUMNS = 1 -FILE/TITLE="quick and dirty" snoopy.dat -SHOW DATA - currently SET data sets: - 1> ./snoopy.dat (default) - name title I J K L - V1 V1 1:2 ... ... ... - -SET MODE IGNORE_ERROR -SET DATA/EZ/VAR="P,Q" 1 -FILE/TITLE="quick and dirty"/VAR="P,Q"/COL=4/GRID=ABSTRACT/FORM=UNF/SKIP=2 snoopy.dat -SET MODE/LAST IGNORE_ERROR -CANCEL DATA 1 -FILE/TITLE="quick and dirty"/VAR="P,Q"/COL=4/GRID=ABSTRACT/FORM=UNF/SKIP=2 snoopy.dat -SET VARIABLE/TITLE="my P variable" P -SHOW DATA/FULL - currently SET data sets: - 1> ./snoopy.dat (default) - quick and dirty - name title I J K L M N - P my P variable 1:99999999 1:99999999 1:99999999 1:99999999 1:99999999 1:99999999 - on grid ABSTRACT with -1.E+34 for missing data - X=0.5:1.E+08 Y=0.5:1.E+08 Z=0.5:1.E+08 E=0.5:1.E+08 F=0.5:1.E+08 - Q Q 1:99999999 1:99999999 1:99999999 1:99999999 1:99999999 1:99999999 - on grid ABSTRACT with -1.E+34 for missing data - X=0.5:1.E+08 Y=0.5:1.E+08 Z=0.5:1.E+08 E=0.5:1.E+08 F=0.5:1.E+08 - - /FORMAT = UNF - /SKIP = 2 - /COLUMNS = 4 - -! SET - SHOW - CANCEL - DEFINE REGION -SHOW REGION -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -SET REGION/I=101:105/J=46:48/Z=0/L=1 -SHOW REGION -default region: - I=101:105 - J=46:48 - Z=0 - L=1 - E/M is unspecified - F/N is unspecified -DEFINE REGION SAVE -CANCEL REGION -SHOW REGION -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -DEFINE REGION/X=130E:70W/Y=28.9S:48.6N W ! re-define to default -SET REGION/@W -SHOW REGION -default region: - X=130:290 - Y=-28.9:48.6 - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -SHOW REGION SAVE -region SAVE - I=101:105 - J=46:48 - Z=0 - L=1 - E/M is unspecified - F/N is unspecified -SHOW REGION/ALL -default region: - X=130:290 - Y=-28.9:48.6 - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -region SAVE - I=101:105 - J=46:48 - Z=0 - L=1 - E/M is unspecified - F/N is unspecified -region W - X=130:290 - Y=-28.9:48.6 - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -SET REGION SAVE -SHOW REGION -default region: - I=101:105 - J=46:48 - Z=0 - L=1 - E/M is unspecified - F/N is unspecified -! delta regions -CANCEL REGION -SET REGION/L=1 -SET REGION/DL=1:3 -SHOW REGION -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - L=2:4 - E/M is unspecified - F/N is unspecified -DEFINE REGION/dX=5 W -SHOW REGION W -region W - X=135:295 - Y=-28.9:48.6 - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified - -! SET - SHOW - CANCEL MODE -SHOW MODES - MODE STATE ARGUMENT - DIAGNOSTIC CANCELED 99 - VERIFY SET DEFAULT - INTERPOLATE CANCELED - IGNORE_ERROR CANCELED - STUPID CANCELED - JOURNAL SET ferret.jnl - LONG_LABEL SET 4 - LATIT_LABEL SET 3 - DEPTH_LABEL SET 4 - CALENDAR SET minutes - E_LABEL SET 4 - F_LABEL SET minutes - ASCII_FONT SET - SEGMENT SET - WAIT CANCELED - DESPERATE CANCELED 0 - GKS SET - REFRESH CANCELED - METAFILE CANCELED ferret.png - PPLLIST CANCELED ppllist.out - GUI CANCELED - LOGO CANCELED - LABELS SET - GRATICULE CANCELED - LINECOLORS SET 6 - UPCASE_OUTPU SET - NLEVELS SET 30 - NODATA_LAB SET - SHRINK_YLAB CANCELED - CURVILINEAR CANCELED - LAYERZ CANCELED - 6D_LAB SET - FRUGAL SET 30 - DATE_FORMAT SET DEFAULT -SET MODE IGNORE_ERROR -SHOW MODES - MODE STATE ARGUMENT - DIAGNOSTIC CANCELED 99 - VERIFY SET DEFAULT - INTERPOLATE CANCELED - IGNORE_ERROR SET - STUPID CANCELED - JOURNAL SET ferret.jnl - LONG_LABEL SET 4 - LATIT_LABEL SET 3 - DEPTH_LABEL SET 4 - CALENDAR SET minutes - E_LABEL SET 4 - F_LABEL SET minutes - ASCII_FONT SET - SEGMENT SET - WAIT CANCELED - DESPERATE CANCELED 0 - GKS SET - REFRESH CANCELED - METAFILE CANCELED ferret.png - PPLLIST CANCELED ppllist.out - GUI CANCELED - LOGO CANCELED - LABELS SET - GRATICULE CANCELED - LINECOLORS SET 6 - UPCASE_OUTPU SET - NLEVELS SET 30 - NODATA_LAB SET - SHRINK_YLAB CANCELED - CURVILINEAR CANCELED - LAYERZ CANCELED - 6D_LAB SET - FRUGAL SET 30 - DATE_FORMAT SET DEFAULT -CANCEL MODE IGNORE_ERROR -SHOW MODES - MODE STATE ARGUMENT - DIAGNOSTIC CANCELED 99 - VERIFY SET DEFAULT - INTERPOLATE CANCELED - IGNORE_ERROR CANCELED - STUPID CANCELED - JOURNAL SET ferret.jnl - LONG_LABEL SET 4 - LATIT_LABEL SET 3 - DEPTH_LABEL SET 4 - CALENDAR SET minutes - E_LABEL SET 4 - F_LABEL SET minutes - ASCII_FONT SET - SEGMENT SET - WAIT CANCELED - DESPERATE CANCELED 0 - GKS SET - REFRESH CANCELED - METAFILE CANCELED ferret.png - PPLLIST CANCELED ppllist.out - GUI CANCELED - LOGO CANCELED - LABELS SET - GRATICULE CANCELED - LINECOLORS SET 6 - UPCASE_OUTPU SET - NLEVELS SET 30 - NODATA_LAB SET - SHRINK_YLAB CANCELED - CURVILINEAR CANCELED - LAYERZ CANCELED - 6D_LAB SET - FRUGAL SET 30 - DATE_FORMAT SET DEFAULT -SHOW MODE STUPID - MODE STATE ARGUMENT - STUPID CANCELED -SET MODE STUPID -SHOW MODE STUPID - MODE STATE ARGUMENT - STUPID SET -SET MODE/LAST STUPID -SHOW MODE STUPID - MODE STATE ARGUMENT - STUPID CANCELED - -! new modes 5/93 -set mode journal newjournal.jnl -show mode journal - MODE STATE ARGUMENT - JOURNAL SET newjournal.jnl -set mode journal ferret.jnl -ppl list plot - WIDTH= 10.20 HEIGHT= 8.80 TKTYPE= 0 BAUD= 110 - WINDOW= ON BOX= OFF CROSS= 0 PLTYPE= 3 - PLOT MODE= A - PLOT FILE= ferret.png -set mode ppllist:ppllist.out -show mode ppllist - MODE STATE ARGUMENT - PPLLIST SET ppllist.out -ppl list plot -ppl listsym -cancel mode ppllist -ppl list plot - WIDTH= 10.20 HEIGHT= 8.80 TKTYPE= 0 BAUD= 110 - WINDOW= ON BOX= OFF CROSS= 0 PLTYPE= 3 - PLOT MODE= A - PLOT FILE= ferret.png -cancel mode journal -show mode journal - MODE STATE ARGUMENT - JOURNAL CANCELED ferret.jnl - -! new 1/94 (syntax check also applies to modes journal and ppllist) -show mode metafile - MODE STATE ARGUMENT - METAFILE CANCELED ferret.png -set mode metafile newmetafile1.plt -show mode metafile - MODE STATE ARGUMENT - METAFILE SET newmetafile1.plt -set mode metafile:newmetafile2.plt -show mode metafile - MODE STATE ARGUMENT - METAFILE SET newmetafile2.plt -set mode metafile: newmetafile3.plt -show mode metafile - MODE STATE ARGUMENT - METAFILE SET newmetafile3.plt -set mode metafile: "newmetafile4.plt" -show mode metafile - MODE STATE ARGUMENT - METAFILE SET newmetafile4.plt -set mode metafile: "./newmetafile5.plt" -show mode metafile - MODE STATE ARGUMENT - METAFILE SET ./newmetafile5.plt -set mode metafile: ./newmetafile6.plt -show mode metafile - MODE STATE ARGUMENT - METAFILE SET ./newmetafile6.plt -set mode metafile newmetafile7.plt -show mode metafile - MODE STATE ARGUMENT - METAFILE SET newmetafile7.plt -set mode metafile "newmetafile8.plt" -show mode metafile - MODE STATE ARGUMENT - METAFILE SET newmetafile8.plt -set mode metafile "./newmetafile9.plt" -show mode metafile - MODE STATE ARGUMENT - METAFILE SET ./newmetafile9.plt -set mode metafile ./newmetafile10.plt -show mode metafile - MODE STATE ARGUMENT - METAFILE SET ./newmetafile10.plt -set mode metafile metafile.plt - -! SET - SHOW - CANCEL EXPRESSION -SHOW EXPRESSION - current output expression(s): - X[GX=1:0:1] -CANCEL EXPRESSION -SHOW EXPRESSION -SET EXPRESSION i+5,i-j -SHOW EXPRESSION - current output expression(s): - I+5 - I-J -LIST/i=1:3/j=6:8 - X: 0.5 to 3.5 - Y: 5.5 to 8.5 - Column 1: EX#1 is I+5 - Column 2: EX#2 is I-J - EX#1 EX#2 - ---- J:6 Y: 6 -1 / 1: 6.000 -5.000 -2 / 2: 7.000 -4.000 -3 / 3: 8.000 -3.000 - ---- J:7 Y: 7 -1 / 1: 6.000 -6.000 -2 / 2: 7.000 -5.000 -3 / 3: 8.000 -4.000 - ---- J:8 Y: 8 -1 / 1: 6.000 -7.000 -2 / 2: 7.000 -6.000 -3 / 3: 8.000 -5.000 - -! SET,SHOW GRID -USE gt4d011 -SHOW GRID - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid XABSTRACT - GRID XABSTRACT - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 full - normal Y - normal Z - normal T -LIST/I=101:105/J=50/K=1/L=5 SALT - VARIABLE : (SALINITY(ppt) - 35) /1000 (frac. by wt. less .035) - FILENAME : gt4d011.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 1.5N - DEPTH (m): 5 - TIME : 10-SEP-1982 20:00 - 1.5N - 50 - 129.5W / 101: 1.123E-04 - 128.5W / 102: 1.092E-04 - 127.5W / 103: 1.064E-04 - 126.5W / 104: 1.042E-04 - 125.5W / 105: 1.015E-04 -SHOW GRID - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid PS3DT2 - GRID PS3DT2 - name axis # pts start end subset - PSXT LONGITUDE 160mr 130.5E 70.5W full - PSYT LATITUDE 100 i 28.836S 48.568N full - PSZT DEPTH (m) 27 i- 5 3824 full - TIME1 TIME 25 r 17-AUG-1982 12:00 10-JAN-1983 12:00 full -SET GRID/SAVE -SET GRID ABSTRACT -SHOW GRID - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid PS3DT2 - GRID PS3DT2 - name axis # pts start end subset - PSXT LONGITUDE 160mr 130.5E 70.5W full - PSYT LATITUDE 100 i 28.836S 48.568N full - PSZT DEPTH (m) 27 i- 5 3824 full - TIME1 TIME 25 r 17-AUG-1982 12:00 10-JAN-1983 12:00 full -SHOW GRID/X=180:165W SALT - GRID PS3DT2 - name axis # pts start end subset - PSXT LONGITUDE 160mr 130.5E 70.5W full - PSYT LATITUDE 100 i 28.836S 48.568N full - PSZT DEPTH (m) 27 i- 5 3824 full - TIME1 TIME 25 r 17-AUG-1982 12:00 10-JAN-1983 12:00 full - - I X XBOX XBOXLO - 50> 179.5E 1 179E - 51> 179.5W 1 180E - 52> 178.5W 1 179W - 53> 177.5W 1 178W - 54> 176.5W 1 177W - 55> 175.5W 1 176W - 56> 174.5W 1 175W - 57> 173.5W 1 174W - 58> 172.5W 1 173W - 59> 171.5W 1 172W - 60> 170.5W 1 171W - 61> 169.5W 1 170W - 62> 168.5W 1 169W - 63> 167.5W 1 168W - 64> 166.5W 1 167W - 65> 165.5W 1 166W - 66> 164.5W 1 165W -SET GRID/RESTORE -SHOW GRID - Default grid for DEFINE VARIABLE is ABSTRACT - -! SHOW VARIABLES -LET A=i -SHOW VARIABLES - Created by DEFINE VARIABLE: - >>> Definitions that replace any file variable of same name: - A = I -CANC VARIABLES/ALL -SHOW VARIABLES - Created by DEFINE VARIABLE: - -! SHOW MEMORY , LOAD -SHOW MEMORY - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 0.14 Kb - Current cache: 0.04 Kb -SHOW MEMORY/TEMPORARY - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 0.14 Kb - Current cache: 0.04 Kb -data loaded without /PERMANENT: - SALT[D=gt4d011] X mr:3 size:0.04 Kb - 101/130W 50/1.333N 1/0 5/07-SEP-1982 - 105/125W 50/1.667N 1/10 5/13-SEP-1982 - -SHOW MEMORY/PERMANENT - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 0.14 Kb - Current cache: 0.04 Kb -data loaded with /PERMANENT: -SHOW MEMORY/ALL - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 0.14 Kb - Current cache: 0.04 Kb -all data in memory: - SALT[D=gt4d011] X mr:3 size:0.04 Kb - 101/130W 50/1.333N 1/0 5/07-SEP-1982 - 105/125W 50/1.667N 1/10 5/13-SEP-1982 - - -LET A=i -LOAD/PERM/I=1:5 A -SHOW MEMORY - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 0.14 Kb - Current cache: 0.12 Kb - Permanent: 0.04 Kb -SHOW MEMORY/FREE - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 0.14 Kb - Current cache: 0.12 Kb - Permanent: 0.04 Kb - Total table slots: 500 - Free table slots: 497 - Un-cached variables: 0 - number of /PERMANENT variables: 1 - memory used for /PERM: 0.04Kb -LOAD/TEMPORARY/I=1:5 A -SHOW MEMORY - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 0.14 Kb - Current cache: 0.08 Kb -SHOW MEMORY/FREE - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 0.14 Kb - Current cache: 0.08 Kb - Total table slots: 500 - Free table slots: 498 - Un-cached variables: 0 - -! REPEAT -REPEAT/L=1:3 LIST/I=1:6/ORDER=X 1/(I+L) -!-> REPEAT: L=1 - VARIABLE : 1/(I+L) - SUBSET : 6 points (X) - T : 1 - 1 2 3 4 5 6 - 1 2 3 4 5 6 - 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 -!-> REPEAT: L=2 - VARIABLE : 1/(I+L) - SUBSET : 6 points (X) - T : 2 - 1 2 3 4 5 6 - 1 2 3 4 5 6 - 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 -!-> REPEAT: L=3 - VARIABLE : 1/(I+L) - SUBSET : 6 points (X) - T : 3 - 1 2 3 4 5 6 - 1 2 3 4 5 6 - 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 - -! semicolon-separated command groups -cancel region -cancel data/all -(show data) - currently SET data sets: -show data;show data - currently SET data sets: - currently SET data sets: -set region/l=99;show region;repeat/l=1:3 (show data;sh reg);can reg;show reg -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - L=99 - E/M is unspecified - F/N is unspecified -!-> REPEAT: L=1 - currently SET data sets: -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - L=1 - E/M is unspecified - F/N is unspecified -!-> REPEAT: L=2 - currently SET data sets: -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - L=2 - E/M is unspecified - F/N is unspecified -!-> REPEAT: L=3 - currently SET data sets: -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - L=3 - E/M is unspecified - F/N is unspecified -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -((show wind;show reg);repeat/l=1:2 (show reg;list/i=1:3/ord=x (i+5))) - OPEN ACTIVE ANTIALIAS QUALITY DISPLAY THICKEN TEXTPROM - 1 * YES HIGH YES 1.00 1.00 -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -!-> REPEAT: L=1 -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - L=1 - E/M is unspecified - F/N is unspecified - VARIABLE : (I+5) - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 6.000 7.000 8.000 -!-> REPEAT: L=2 -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - L=2 - E/M is unspecified - F/N is unspecified - VARIABLE : (I+5) - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 6.000 7.000 8.000 - - -! nested brackets (7/95 - version 4.01) -use gtbc011,gt4d011 -stat/k=1/l=1/j=40/i=70/d=2 temp[d=1] - - TEMPERATURE - LONGITUDE: 160.5W - LATITUDE: 1.833S - DEPTH (m): 5 - TIME: 15-MAR-1983 10:00 - E: N/A - F: N/A - DATA SET: ./data/gtbc011.cdf - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 30.082 - Maximum value: 30.082 - Mean value: 30.082 (unweighted average) -stat/k=1/l=1/j=40/i=70/d=2 temp[d=1,g=u] - - TEMPERATURE - regrid: U - LONGITUDE: 160W - LATITUDE: 1.667S - DEPTH (m): 5 - TIME: 15-MAR-1983 10:00 - E: N/A - F: N/A - DATA SET: ./data/gtbc011.cdf - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 30.252 - Maximum value: 30.252 - Mean value: 30.252 (unweighted average) -! ... note that since the data set times do not overlap the regrid request -! produces only a single missing value flag -stat/k=1/l=1/j=40/i=70/d=2 temp[d=1,g=u[d=2]] - - TEMPERATURE - regrid: U[D=gt4d011] - LONGITUDE: 160W - LATITUDE: 1.667S - DEPTH (m): 5 - TIME: 17-AUG-1982 12:00 - E: N/A - F: N/A - DATA SET: ./data/gtbc011.cdf - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 1 -stat/k=1/l=1/j=40/i=70/d=2 temp[d=gtbc011,g=u[d=gt4d011]] - - TEMPERATURE - regrid: U[D=gt4d011] - LONGITUDE: 160W - LATITUDE: 1.667S - DEPTH (m): 5 - TIME: 17-AUG-1982 12:00 - E: N/A - F: N/A - DATA SET: ./data/gtbc011.cdf - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 1 - -! test blanks surrounding colons (bn420 - 10/95) -list/nohead/i=1 : 3 i - 1 / 1: 1.000 - 2 / 2: 2.000 - 3 / 3: 3.000 - -! test escapes using back slashes (bn420 - 11/95) -! (moved to bn420_grave) - -say \/notaqualifier ! "/" should pass through -/notaqualifier -! starting 12/2015 a space preceding a unrecognized qualifier turns that -! qualifier into an argument -say /notaqualifier -/notaqualifier -set mode ignore -say/notaqualifier -canc mode ignore - -say this\;that ! ";" should pass through -this;that -set mode ignore -say this;that -this -canc mode ignore - -say yes\! "\!" passes through -yes! "!" passes through -say yes! "!" passes through -yes - -! ********* V5.31 ********** -! test continuation line capabilities -define axis \ ! comment on the command -/x=1:10:1 \ ! comment on the qualifier -xax\ ! comment on the argument - ! this line is significant -- completes the command -show axis xax; cancel axis xax ! clean up - name axis # pts start end - XAX X 10 r 1 10 - Axis span (to cell edges) = 10 - -! long quotations can span multiple lines -say "start of quote \ ! quotations left open -followed by the end of the quote\ -" ! and the closing quote all by itself -start of quote followed by the end of the quote - -! leading blanks are significant on continuation lines -say "demonstrate that these leading blanks:\ - really are preserved" -demonstrate that these leading blanks: really are preserved - -! continuation prompts are ignored, too -say "demonstrate that these leading blanks:\ - really are preserved" -demonstrate that these leading blanks: really are preserved - -! weird little blank line inputs - - -cancel region ! to make next output predictable -show region\ -! comment -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified - -! a common example: continuation for REPEAT loops -repeat/i=1:3 (cancel data/all;\ -show data;\ -let a = i;\ -list/nohead a;\ -cancel variables/all;\ -) -!-> REPEAT: I=1 - currently SET data sets: - 1.000 -!-> REPEAT: I=2 - currently SET data sets: - 2.000 -!-> REPEAT: I=3 - currently SET data sets: - 3.000 - -! deliberate error -- backslash escapes the bang -set mode ignore; \! ignore (err cuz bang gets escaped); can mode ignore - -! test long input lines with continuation (V5.31) -! *kob* 6/01 - note shorten this test for long lines to 1024 characters. This -! because that is the maximum record length for NAG f95. Any -! longer and the program is aborted - -say *** A111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000B111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000C111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000D111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000E111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000\ -F111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000G111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000H111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000I111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000\ -J111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000 -*** A111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000B111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000C111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000D111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000E111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000F111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000G111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000H111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000I111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000J111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000 - -cancel mode metafile !9/97 - -GO bn_reset bn_dollar -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dollar -GO bn_dollar hello ! test command arg -! test this with GO journal hello - -! V510: 3/00 *sh* added tests of backslash escapes and surrounding quotations -! V532: 5/01 *sh* added tests of 2-digit arguments; made mode ignore stricter - -set mode ignore -message/continue $1 - !-> message/continue hello -hello - -message/continue here is: $1"some text" and some more stuff - !-> message/continue here is: hello and some more stuff -here is: hello and some more stuff - -message/cont here is a big $1 and $3&some text& ! default provided - !-> message/cont here is a big hello and some text -here is a big hello and some text - -message/cont $3 ! error - no default - -message/cont $3" message/cont hello -hello - -message/continue here is: $*"some text" and some more stuff - !-> message/continue here is: hello and some more stuff -here is: hello and some more stuff - -message/continue $no_digit_text ! no substitution -$no_digit_text - -!!!!!!!!!!!!!!!!!! - -message/cont $1"|hello|goodbye message/cont hello -hello - -message/cont $1"greetings|hello|goodbye" - !-> message/cont hello -hello - -message/cont $1">greetings|hello|goodbye" - !-> message/cont hello -hello - -message/cont $1">greetings|hello|goodbye message/cont hello -hello - -message/cont $1">greetings|hello>replacement text|goodbye message/cont replacement text -replacement text - -! doesn't match on "hello" - -message/cont $1"|xxxxx|goodbyegreetings|xxxxx|goodbye" - !-> message/cont greetings -greetings - -message/cont $1">greetings|xxxxx|goodbye message/cont greetings -greetings - -message/cont $1">greetings|xxxxx>replacement text|goodbye message/cont greetings -greetings - -! no argument supplied - -message/cont $3"|hello|goodbye message/cont greetings -greetings - -message/cont $3">greetings|hello|goodbye" - -message/cont $3">greetings|hello|goodbyegreetings|hello>replacement text|goodbye message/cont here is a very long text hello xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx the end 1234567890 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy 1234567890 -here is a very long text hello xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx the end 1234567890 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy 1234567890 -message/cont here is a very long text $1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx the end 1234567890 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy 1234567890 - !-> message/cont here is a very long text hello xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx the end 1234567890 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy 1234567890 -here is a very long text hello xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx the end 1234567890 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy 1234567890 -message/cont $3"" -message/cont $3"<" -message/cont $3"||" -message/cont $3">" - !-> message/cont > -> -message/cont $3"|>|" -message/cont $3">|" -message/cont $3"|<" -message/cont $3"|>" - -set mode/last ignore - -! bn420 10/95 - added tests that arguments don't get incorrectly broken up -! ==> EACH OF THESE SHOULD PASS AS A SINGLE ARGUMENT!!! -go bn_dollar.sub VAR[x=1,y=1] ! should be interpreted as a single arg -VAR[x=1,y=1] 2-n/a 3-n/a 4-n/a -go bn_dollar.sub VAR[x=1,g=var2[d=d1],y=1] ! a single arg -VAR[x=1,g=var2[d=d1],y=1] 2-n/a 3-n/a 4-n/a -go bn_dollar.sub ((x+y)/(x-5)) ! ignore slash, get single arg -((x+y)/(x-5)) 2-n/a 3-n/a 4-n/a -go bn_dollar.sub ((x+y),(x-5)) ! ignore comma, get single arg -((x+y),(x-5)) 2-n/a 3-n/a 4-n/a - -! V510 3/00 -set mode ignore - message/continue "$1" ! final quote used to get mis-applied - !-> message/continue "hello" -hello -set mode/last ignore -go bn_dollar.sub \"hello\" ! quotations as part of argument -"hello" 2-n/a 3-n/a 4-n/a -go bn_dollar.sub "\"hello with blanks\"" ! quotations as part of argument -"hello with blanks" 2-n/a 3-n/a 4-n/a -go bn_dollar.sub \"((x+y),(x-5))\" ! quotations as part of argument -"((x+y),(x-5))" 2-n/a 3-n/a 4-n/a - -! V5.3 additions 5/01 -- 2-digit arguments in parentheses -go bn_dollar.sub VAR[x=1,y=1] "arg 2" " " "arg 4" "arg 5" -VAR[x=1,y=1] arg 2 3-n/a arg 4 -VAR[x=1,y=1]999 arg 2 3-parens -11-n/a 12-n/a 13-n/a -41-n/a 42-n/a 43-n/a - -go bn_dollar.sub VAR[x=1,y=1] "arg 2" " " "arg 4" "arg 5" \ -"arg 6" "arg 7" "arg 8" "arg 9" "arg 10" \ -"arg 11" "arg 12" " " "arg 14" "arg 15" -VAR[x=1,y=1] arg 2 3-n/a arg 4 -VAR[x=1,y=1]999 arg 2 3-parens -arg 11 arg 12 13-n/a -41-n/a 42-n/a 43-n/a - -go bn_dollar.sub VAR[x=1,y=1] "arg 2" " " "arg 4" "arg 5" \ -"arg 6" "arg 7" "arg 8" "arg 9" "arg 10" \ -"arg 11" "arg 12" " " "arg 14" "arg 15" \ -"arg 16" "arg 17" "arg 18" "arg 19" "arg 20" \ -"arg 21" "arg 22" "arg 23" "arg 24" "arg 25" \ -"arg 26" "arg 27" "arg 28" "arg 29" "arg 30" \ -"arg 31" "arg 32" "arg 33" "arg 34" "arg 35" \ -"arg 36" "arg 37" "arg 38" "arg 39" "arg 40" \ -"arg 41" "arg 42" " " "arg 44" "arg 45" -VAR[x=1,y=1] arg 2 3-n/a arg 4 -VAR[x=1,y=1]999 arg 2 3-parens -arg 11 arg 12 13-n/a -star 41 subst 42 43-n/a - -! deliberate errors -set mode ignore - say $100 ! argument number too large - say ($100) ! argument number too large - say ($10)0 ! argument 10 not defined -set mode/last ignore - -! added in bn400 -GO bn_reset bn_grave -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_grave -GO bn_grave -! bn420_grave -! benchmark to test evaluation of grave accent-enclosed expressions -! requires FERRET version 4.00 or later - -! added one new command since bn400_grave to test for unwanted leading blanks -! (a problem noticed on HP) -! and make sure that grave accents protect "/" and other chars from the parser - -! 2/96 - added tests of PRECISION=n abd BAD=string - -message/continue "2+2=`2+2`" - !-> message/continue "2+2=4" -2+2=4 - -message/continue "2 squared + 2 squared =`2^2` + `2+2`" - !-> message/continue "2 squared + 2 squared =4 + 4" -2 squared + 2 squared =4 + 4 - -message/continue "50/0 =`50/0`" ! invalid result - !-> message/continue "50/0 =bad" -50/0 =bad - -repeat/i=1:3 message/continue "I=`I`" -!-> REPEAT: I=1 - !-> message/continue "I=1" -I=1 -!-> REPEAT: I=2 - !-> message/continue "I=2" -I=2 -!-> REPEAT: I=3 - !-> message/continue "I=3" -I=3 - -LET start = 5; repeat/i=`start`:`start+2` message/continue "I=`I`" - !-> repeat/i=5:7 message/continue "I=`I`" -!-> REPEAT: I=5 - !-> message/continue "I=5" -I=5 -!-> REPEAT: I=6 - !-> message/continue "I=6" -I=6 -!-> REPEAT: I=7 - !-> message/continue "I=7" -I=7 -!cancel region/X ! removed - temporary experiment 3/00 *sh* - -message/continue "2+2=``2+2``" ! double grave accents get condensed - !-> message/continue "2+2=`2+2`" -2+2=`2+2` - -message/continue A default substitution: $9"default string|2+2=`2+2`" - !-> message/continue A default substitution: default string -A default substitution: default string - -message/continue A grave substitution: $9"2+2=`2+2`|replacement string" - !-> message/continue A grave substitution: 2+2=4 -A grave substitution: 2+2=4 - -canc var/all;LET XX = 5+4; mess/cont "xx is `xx`" - !-> mess/cont "xx is 9" -xx is 9 - -! 2/96 -message/continue "1/300=`1/300,p=5`" - !-> message/continue "1/300=0.0033333" -1/300=0.0033333 -message/continue "1/300=`1/300,p=-5`" ! decimal places - !-> message/continue "1/300=0.00333" -1/300=0.00333 -message/continue "1/300=`1/300 , precision=10`" - !-> message/continue "1/300=0.003333333333" -1/300=0.003333333333 -message/continue "1/0=`1/0, b=-999`" - !-> message/continue "1/0=-999" -1/0=-999 -message/continue "1/0=`1/0 ,BAD=missing`" - !-> message/continue "1/0=missing" -1/0=missing -message/continue "1/3=`1/3, precision=10, BAD=-999`" - !-> message/continue "1/3=0.3333333333" -1/3=0.3333333333 -message/continue "1/3=`1/3, BAD=-999 ,precision=10`" - !-> message/continue "1/3=0.3333333333" -1/3=0.3333333333 - -! deliberate error -set mode ignore_errors -message/continue "2+2=`2+2" ! unclosed grave accent -message/continue "2+2=`garbage`" ! invalid expression -message/continue "3 numbers: `I[i=3:5]`"! not a scalar - -! 2/96 deliberate errors -message/continue "1/3=`1/3,BAD=-999,precision=11`" - !-> message/continue "1/3=0.33333333333" -1/3=0.33333333333 -message/continue "1/3=`1/3BAD=-999`" -message/continue "1/3=`1/3,qBAD=-999`" -canc mode ignore_errors - -! bn420_grave: -! CHECK THIS TO MAKE SURE THERE ARE NO LEADING BLANKS (ESP. HP!!!) -let x1 = 0.012954 -let x2 = 7.5E-09 -let x3 = .1 -say >>`x1`<< --- >>`x2`<< --- >>`x3`<< - !-> MESSAGE/CONTINUE >>0.012954<< --- >>7.5E-09<< --- >>0.1<< ->>0.012954<< --- >>7.5E-09<< --- >>0.1<< - -! must recognize "/" inside immediate mode exprn -list/I=`6/2` i - !-> list/I=3 i - VARIABLE : I - axis ABSTRACT - X : 3 - 3.000 - -! test escapes using back slashes (bn420 - 11/95) -say `2+2` ! normal evaluation - !-> MESSAGE/CONTINUE 4 -4 -say \`2+2\` ! these grave accents should pass through -`2+2` -say \`2+2\` -`2+2` -say \`2+`1+1`\` ! should translate 1+1=>2 - !-> MESSAGE/CONTINUE `2+2` -`2+2` -set mode ignore -say \`2+2` ! syntax error -say `2+2\` ! syntax error -say `2+2\`+1` ! syntax error -say \`2+2`+1\` ! syntax error -canc mode ignore - -! test nested brackets mixed with grave accents -let long = x -say temp[x=`long[i=1]`:`long[i=160]`:5] - !-> MESSAGE/CONTINUE temp[x=1:160:5] -temp[x=1:160:5] - -! V5.10 - test new features -use coads_climatology -set mode diagnostic -let sst2 = sst[l=5:8] -say `sst, return=size` ! should only do a GETGRID - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE X M: 2 dset: 0 I: 160 160 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE LONG M: 4 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE LONG M: 8 dset: 0 I: 160 160 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - -DELETE X3 M: 1 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE X1 M: 3 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE XX M: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE X2 M: 7 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME - !-> MESSAGE/CONTINUE 48600 -48600 -say `sst2,return=lend` ! should inherit L=5:8 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SST2 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME - !-> MESSAGE/CONTINUE 8 -8 -set mode/last diagnostic - -say `sst,return=shape` - !-> MESSAGE/CONTINUE XYT -XYT -say `sst,return=T0` - !-> MESSAGE/CONTINUE 01-JAN-0000 00:00:00 -01-JAN-0000 00:00:00 -say `sst,return=TITLE` - !-> MESSAGE/CONTINUE SEA SURFACE TEMPERATURE -SEA SURFACE TEMPERATURE -say `sst,return=units` - !-> MESSAGE/CONTINUE Deg C -Deg C -say `sst,return=GRID` - !-> MESSAGE/CONTINUE GSQ1 -GSQ1 - -say `sst,ret=isize` - !-> MESSAGE/CONTINUE 180 -180 -say `sst,ret=jsize` - !-> MESSAGE/CONTINUE 90 -90 -say `sst,ret=ksize` - !-> MESSAGE/CONTINUE 1 -1 -say `sst,ret=lsize` - !-> MESSAGE/CONTINUE 3 -3 - -say `sst,r=istart` - !-> MESSAGE/CONTINUE 1 -1 -say `sst,r=jstart` - !-> MESSAGE/CONTINUE 1 -1 -say `sst,r=kstart` - !-> MESSAGE/CONTINUE 0 -0 -say `sst,r=lstart` - !-> MESSAGE/CONTINUE 1 -1 - -say `sst,R=iend` - !-> MESSAGE/CONTINUE 180 -180 -say `sst,R=jend` - !-> MESSAGE/CONTINUE 90 -90 -say `sst,R=kend` - !-> MESSAGE/CONTINUE 0 -0 -say `sst,R=LEND` - !-> MESSAGE/CONTINUE 3 -3 - -say `sst,return=xstart` - !-> MESSAGE/CONTINUE 21E -21E -say `sst,return=ystart` - !-> MESSAGE/CONTINUE 89S -89S -say `sst,return=zstart` - !-> MESSAGE/CONTINUE * -* -say `sst,return=tstart` - !-> MESSAGE/CONTINUE 16-JAN 06:00:00 -16-JAN 06:00:00 - -say `sst,return=xend` - !-> MESSAGE/CONTINUE 19E(379) -19E(379) -say `sst,return=yend` - !-> MESSAGE/CONTINUE 89N -89N -say `sst,return=zend` - !-> MESSAGE/CONTINUE * -* -say `sst,return=tend` - !-> MESSAGE/CONTINUE 17-MAR 02:58:12 -17-MAR 02:58:12 - -say `sst,return=xunit` - !-> MESSAGE/CONTINUE degrees_east -degrees_east -say `sst,return=junits` - !-> MESSAGE/CONTINUE degrees_north -degrees_north -say `sst,return=kunit` - !-> MESSAGE/CONTINUE - -say `sst,return=tunits` - !-> MESSAGE/CONTINUE hour -hour - -say `sst^2,return=size` - !-> MESSAGE/CONTINUE 48600 -48600 -say `sst[L=1]+sst,return=lsize` - !-> MESSAGE/CONTINUE 3 -3 -say `sst[L=1:3@ave],return=lsize` - !-> MESSAGE/CONTINUE 1 -1 -say `sst[L=1:3@ave]+sst,return=lsize` - !-> MESSAGE/CONTINUE 3 -3 - -! test case of grid-changing variables returning an imposed (ABSTRACT) axes -let a = XSEQUENCE(J[j=1:5]) -set mode diagnostic -say `a,return=isize` ! full evaluation occurs - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V08 C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C11,V08 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 (C11,V08 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval A C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V08 C: 8 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C11,V08 C: 10 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo J M: 7 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - dealloc dynamic grid YABSTRACT NORMAL ABSTRACT NORMAL NORMAL - -DELETE (C11,V08 M: 6 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - -DELETE J M: 7 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE A M: 1 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE (C01,V08 M: 3 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - !-> MESSAGE/CONTINUE 5 -5 -say `a[i=2:3],return=isize` ! full evaluation is bypassed - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V08 C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C11,V08 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 (C11,V08 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval A C: 6 dset: 0 I: 2 3 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V08 C: 8 dset: 0 I: 2 3 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C11,V08 C: 10 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo J M: 3 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - dealloc dynamic grid YABSTRACT NORMAL ABSTRACT NORMAL NORMAL - -DELETE (C11,V08 M: 1 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - -DELETE J M: 3 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE A M: 6 dset: 0 I: 2 3 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE (C01,V08 M: 7 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - !-> MESSAGE/CONTINUE 2 -2 -say `a[i=100:200],return=isize` ! correct starting with Ferret v694 (tkt 2213) - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V08 C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C11,V08 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 (C11,V08 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval A C: 6 dset: 0 I: 100 200 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V08 C: 8 dset: 0 I: 100 200 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C11,V08 C: 10 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo J M: 7 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - dealloc dynamic grid YABSTRACT NORMAL ABSTRACT NORMAL NORMAL - -DELETE (C11,V08 M: 6 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - -DELETE J M: 7 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE A M: 1 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE (C01,V08 M: 3 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - !-> MESSAGE/CONTINUE 5 -5 -set mode/last diagnostic - -! deliberate errors -set mode ignore_errors -say `1*/3` ! deliberate syntax error -say `sst*/3,return=lunits` -say `sst,rr=size` ! could be an error ... - !-> MESSAGE/CONTINUE 48600 -48600 -say `sst,return=Xsize` -say `sst,return=trash` -set mode/last ignore_errors - - -! added in bn420 -GO bn_reset bn_letd -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_letd -GO bn_letd -! bn420_letd.jnl -! 9/1/95 - -! test LET definitions with the /D qualifier: LET, SHOW, SET VAR, CANCEL -! .. not a particularly inspired benchmark, but, what the heck - -! 9/2005 acm -! test for the behavior of bug 1336 by listing contents of variables; -! tests with SHOW VAR did not detect the bug. - -sp touch snoopy.dat - -! set and show 3 types of variables -let a = global_pre-empt -show var - Created by DEFINE VARIABLE: - >>> Definitions that replace any file variable of same name: - A = GLOBAL_PRE-EMPT -show var/d -let/d a = global_default -show var - Created by DEFINE VARIABLE: - >>> Definitions that replace any file variable of same name: - A = GLOBAL_PRE-EMPT - >>> Definitions used if no file variable of this name exists: - A (/D default) = GLOBAL_DEFAULT -show var/d - A (/D default) = GLOBAL_DEFAULT -USE clim_airt_lev -let/d=clim_airt_lev a = clim_airt_lev-specific -set mode ignore; let/d=noexist a = b; set mode/last ignore -show var - Created by DEFINE VARIABLE: - A[D=clim_airt_lev] = CLIM_AIRT_LEV-SPECIFIC - >>> Definitions that replace any file variable of same name: - A = GLOBAL_PRE-EMPT - >>> Definitions used if no file variable of this name exists: - A (/D default) = GLOBAL_DEFAULT -show var/d=clim_airt_lev - A[D=clim_airt_lev] = CLIM_AIRT_LEV-SPECIFIC -show data clim_airt_lev - currently SET data sets: - 1> ./data/clim_airt_lev.cdf (default) - name title I J K L - AIRT CLIMATOLOGICAL AIR TEMPERATURE 1:160 1:100 ... 1:12 - ------------------------------ - A[D=clim_airt_lev] = CLIM_AIRT_LEV-SPECIFIC - -use gt4d011 -let/d=2 a = specific-to-gt4d -show var - Created by DEFINE VARIABLE: - A[D=clim_airt_lev] = CLIM_AIRT_LEV-SPECIFIC - A[D=gt4d011] = SPECIFIC-TO-GT4D - >>> Definitions that replace any file variable of same name: - A = GLOBAL_PRE-EMPT - >>> Definitions used if no file variable of this name exists: - A (/D default) = GLOBAL_DEFAULT -show var/d=clim_airt_lev - A[D=clim_airt_lev] = CLIM_AIRT_LEV-SPECIFIC -show var airt -list/l=1/x=180/y=0 airt[d=clim_airt_lev] - VARIABLE : CLIMATOLOGICAL AIR TEMPERATURE (deg. C) - FILENAME : clim_airt_lev.cdf - LONGITUDE: 179.5E - LATITUDE : 0.167S - TIME : 12-JAN-1982 12:00 - 27.14 - -! data set-specific definition -let/d=clim_airt_lev airt = 1 -list/l=1/x=180/y=0 airt[d=clim_airt_lev] - VARIABLE : 1 - FILENAME : clim_airt_lev.cdf - 1.000 -set mode ignore; list/l=1/x=180/y=0 airt[d=gt4d011]; set mode/last ignore - -! default definition where no data set variable exists -let/d airt = 2 -list/l=1/x=180/y=0 airt[d=clim_airt_lev] - VARIABLE : 1 - FILENAME : clim_airt_lev.cdf - 1.000 -list/l=1/x=180/y=0 airt[d=gt4d011] - VARIABLE : 2 - FILENAME : gt4d011.cdf - 2.000 - -! global def'n replacing all file variables (but not data-set specific uvars) -let airt = 2 -list/l=1/x=180/y=0 airt[d=clim_airt_lev] - VARIABLE : 1 - FILENAME : clim_airt_lev.cdf - 1.000 -list/l=1/x=180/y=0 airt[d=gt4d011] - VARIABLE : 2 - 2.000 -canc data/all -list/l=1/x=180/y=0 airt - VARIABLE : 2 - 2.000 -show var - Created by DEFINE VARIABLE: - >>> Definitions that replace any file variable of same name: - AIRT = 2 - A = GLOBAL_PRE-EMPT - >>> Definitions used if no file variable of this name exists: - AIRT (/D default) = 2 - A (/D default) = GLOBAL_DEFAULT - -! SET VARIABLE testing -USE clim_airt_lev -let t1 = 1 -let/d t2 = 2 -let/d=clim_airt_lev t3 = 3 -file/var=t4,t3 snoopy.dat -set var/titl=test1 t1 -set var/titl=test2 t2 -set var/titl=test3 t3[d=clim_airt_lev] -set var/titl=test4 t4[d=snoopy.dat] -set var/titl=test3 t3[d=snoopy.dat] -show data - currently SET data sets: - 1> ./data/clim_airt_lev.cdf - name title I J K L - AIRT CLIMATOLOGICAL AIR TEMPERATURE 1:160 1:100 ... 1:12 - ------------------------------ - T3[D=clim_airt_lev] = 3 - - 2> ./snoopy.dat (default) - name title I J K L - T4 test4 1:2 ... ... ... - T3 test3 1:2 ... ... ... - -show data/full 1 - currently SET data sets: - 1> ./data/clim_airt_lev.cdf - - name title I J K L - AIRT CLIMATOLOGICAL AIR TEMPERATURE 1:160 1:100 ... 1:12 - deg. C on grid GGT1 with -1.E+34 for missing data - X=130E:70W Y=30S:50N - - time range: 12-JAN-1982 12:00 to 13-DEC-1982 02:00 - ------------------------------ - T3[D=clim_airt_lev] = 3 - "test3" - -show var - Created by DEFINE VARIABLE: - T3[D=clim_airt_lev] = 3 - "test3" - >>> Definitions that replace any file variable of same name: - T1 = 1 - "test1" - AIRT = 2 - A = GLOBAL_PRE-EMPT - >>> Definitions used if no file variable of this name exists: - T2 (/D default) = 2 - "test2" - AIRT (/D default) = 2 - A (/D default) = GLOBAL_DEFAULT - -! selective cancelling -canc var/d/all -show var ! LET/D, only, deleted - Created by DEFINE VARIABLE: - T3[D=clim_airt_lev] = 3 - "test3" - >>> Definitions that replace any file variable of same name: - T1 = 1 - "test1" - AIRT = 2 - A = GLOBAL_PRE-EMPT -can var t3[d=clim_airt_lev] -show var - Created by DEFINE VARIABLE: - >>> Definitions that replace any file variable of same name: - T1 = 1 - "test1" - AIRT = 2 - A = GLOBAL_PRE-EMPT -set mode ignore; can var; set mode/last ignore -can var/all -show var - Created by DEFINE VARIABLE: - -! cancelling various categiries in various ways -let/d=clim_airt_lev t1 = 1 -let/d=clim_airt_lev t2 = 2 -let/d=clim_airt_lev t3 = 3 -show var - Created by DEFINE VARIABLE: - T3[D=clim_airt_lev] = 3 - T2[D=clim_airt_lev] = 2 - T1[D=clim_airt_lev] = 1 -can var/d=clim_airt_lev t1 -show var - Created by DEFINE VARIABLE: - T3[D=clim_airt_lev] = 3 - T2[D=clim_airt_lev] = 2 -can var/all/d=clim_airt_lev -show var - Created by DEFINE VARIABLE: -let/d=clim_airt_lev t1 = 1 -let/d=clim_airt_lev t2 = 2 -let/d=clim_airt_lev t3 = 3 -can var/d=clim_airt_lev ! implied "/all" -show var - Created by DEFINE VARIABLE: -let/d t1 = 1 -let/d t2 = 2 -let/d t3 = 3 -can var/d ! implied/d/all -show var - Created by DEFINE VARIABLE: - -! test for the behavior of bug 1336 by listing contents of variables; - -let v1 = x[x=1:8] -let v2 = x[x=1:8] + y[y=1:3] -save/clobber/file=v12file.nc v1, v2 -save/clobber/file=v1file.nc/i=3:8 v1 -can var v1 -can var v2 - -use v12file -use v1file - -list v1 ! from vfile - VARIABLE : X[X=1:8] - FILENAME : v1file.nc - SUBSET : 6 points (X) - 3 / 1: 3.000 - 4 / 2: 4.000 - 5 / 3: 5.000 - 6 / 4: 6.000 - 7 / 5: 7.000 - 8 / 6: 8.000 -let/d v1 = 0 -let/d v2 = 2 - -list v1 ! v1 exists in default data set so use dataset variable - VARIABLE : X[X=1:8] - FILENAME : v1file.nc - SUBSET : 6 points (X) - 3 / 1: 3.000 - 4 / 2: 4.000 - 5 / 3: 5.000 - 6 / 4: 6.000 - 7 / 5: 7.000 - 8 / 6: 8.000 - -list v2 ! v2 does not exist in default dset so use let/d definition - VARIABLE : 2 - FILENAME : v1file.nc - 2.000 - -let/d q = v2 -list q - VARIABLE : V2 - FILENAME : v1file.nc - 2.000 -list q[d=v12file] - VARIABLE : V2 - FILENAME : v12file.nc - SUBSET : 8 by 3 points (X-Y) - 1 2 3 4 5 6 7 8 - 1 2 3 4 5 6 7 8 - 1 / 1: 2.00 3.00 4.00 5.00 6.00 7.00 8.00 9.00 - 2 / 2: 3.00 4.00 5.00 6.00 7.00 8.00 9.00 10.00 - 3 / 3: 4.00 5.00 6.00 7.00 8.00 9.00 10.00 11.00 - - -! added in bn430 -GO bn_reset bn_if -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_if -GO bn_if -! bn430_if -! 5/6/96 -! 5/22/96 - added nested multi-line IF with nesting in REJECTED clause - -! 8/97 bn430_if -> bn450_if: added test of symbol substitution with IF - -CANC MODE VERIFY ----->CORRECT ----->CORRECT ----->CORRECT ----->CORRECT ----->CORRECT ----->CORRECT ----->CORRECT ----->all is well after checking TRUE ----->CORRECT ----->CORRECT ----->CORRECT ----->CORRECT ----->CORRECT ----->CORRECT ----->CORRECT ----->CORRECT ----->all is well after checking FALSE ----->CORRECT ----->CORRECT ----->CORRECT ----->CORRECT ----->CORRECT ----->CORRECT ----->all is well after checking single line IFs ----->CORRECT ----->CORRECT, again -100 -1 -2 ----->all is well after command group and loop tests -CORRECT:sym sub ----->CORRECT ----->CORRECT again ----->all is well ----->CORRECT ----->all is well ----->CORRECT: took ELSE ----->CORRECT again ----->all is well ----->CORRECT: took ELIF ----->all is well ----->CORRECT ----->all is well following multi-line IF tests ----->all is well following weird multi-line IF --->CORRECT: nested single line IFs --->CORRECT: nested single line IFs --->CORRECT: nested single line IFs ----->CORRECT: took ELIF -- starting nested IF ----->CORRECT: took ELSE inside nested IF -----> CORRECT: took non-nested IF clause ----->all is well following nested multi-line IF ----->CORRECT: took ELIF -- starting single line nested IF ----->all is well following embedded single line IF ----->CORRECT ----->nested: all is well after single line IF ----->CORRECT ----->CORRECT, again ----->nested: all is well after command group and loop tests ----->CORRECT ----->CORRECT again ----->nested: all is well after multi-line IF -CORRECT -CORRECT -LOOP=1 -more -LOOP=2 -more -LOOP=1 -LOOP=2 -semicolon group -more -semicolon group -CORRECT -WE SEE THIS CUZ OF IMPLIED CLOSE TO THE PREVIOUS ->>> --> DELIBERATE WARNING: UNCLOSED IF in NESTED GO FILE<<< ----->... now inside of nested IF clause ----->CORRECT ----->all is well following unclosed nested IF ->>> DELIBERATE ERRORS <<< -SAY ">>> --> DELIBERATE WARNING: UNCLOSED IF <<<" ->>> --> DELIBERATE WARNING: UNCLOSED IF <<< -IF yes THEN - say ---->... now inside of IF clause ----->... now inside of IF clause - -GO bn_reset bn_expressions -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_expressions -GO bn_expressions -! bn450_expressions.JNL -! test all manner of expressions -! V450 - commented out MODE POLISH test -- mode was eliminated -! V530 - new pseudo-variables XBOXLO, YBOXHI, etc. - -! test infix expressions -! 1/96 - commented out: CANCEL MODE POLISH - -! test grid creation for a variety of combos -let c1 = 2 -let i1 = i -let k1 = k - -! . . . constants -list 4 - VARIABLE : constant - 4.000 -list 2 + 2 - VARIABLE : 2 + 2 - 4.000 -list c1 + 2 - VARIABLE : C1 + 2 - 4.000 -list 2 + c1 - VARIABLE : 2 + C1 - 4.000 -list c1 + c1 - VARIABLE : C1 + C1 - 4.000 - -! ... constant plus variable or pseudovariable -set reg/i=1:3 -list/order=x i + 2 - VARIABLE : I + 2 - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x 2 + i - VARIABLE : 2 + I - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x i1 + 2 - VARIABLE : I1 + 2 - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x 2 + i1 - VARIABLE : 2 + I1 - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x i + c1 - VARIABLE : I + C1 - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x c1 + i - VARIABLE : C1 + I - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x i1 + c1 - VARIABLE : I1 + C1 - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x c1 + i1 - VARIABLE : C1 + I1 - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 - -! ... constant plus variable or pseudovariable with modified region -set reg/i=11:13 -list/order=x i[i=1:3] + 2 - VARIABLE : I[I=1:3] + 2 - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x 2 + i[i=1:3] - VARIABLE : 2 + I[I=1:3] - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x i1[i=1:3] + 2 - VARIABLE : I1[I=1:3] + 2 - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x 2 + i1[i=1:3] - VARIABLE : 2 + I1[I=1:3] - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x i[i=1:3] + c1 - VARIABLE : I[I=1:3] + C1 - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x c1 + i[i=1:3] - VARIABLE : C1 + I[I=1:3] - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x i1[i=1:3] + c1 - VARIABLE : I1[I=1:3] + C1 - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x c1 + i1[i=1:3] - VARIABLE : C1 + I1[I=1:3] - SUBSET : 3 points (X) - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 - -! ... two variables or pseudovariables -set reg/i=1:3/k=2 -list/order=x i + k - VARIABLE : I + K - SUBSET : 3 points (X) - Z : 2 - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x i + k1 - VARIABLE : I + K1 - SUBSET : 3 points (X) - Z : 2 - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x k1 + i - VARIABLE : K1 + I - SUBSET : 3 points (X) - Z : 2 - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 - -! ... two variables or pseudovariables with modified region -set reg/i=1:3/k=1 -list/order=x i + k[k=2] - VARIABLE : I + K[K=2] - SUBSET : 3 points (X) - Z : 2 - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -list/order=x i + k1[k=2] - VARIABLE : I + K1[K=2] - SUBSET : 3 points (X) - Z : 2 - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 -! ... crash here ... -list/order=x k1[k=2] + i - VARIABLE : K1[K=2] + I - SUBSET : 3 points (X) - Z : 2 - 1 2 3 - 1 2 3 - 3.000 4.000 5.000 - - -! operators -CANCEL REGION -SET REGION/I=1:5/J=1:5 -LIST 10+2 - VARIABLE : 10+2 - 12.00 -LIST/ORDER=X I - VARIABLE : I - axis ABSTRACT - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.000 2.000 3.000 4.000 5.000 -LIST/ORDER=X I*3 - VARIABLE : I*3 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 3.00 6.00 9.00 12.00 15.00 -LIST/ORDER=X I/3 - VARIABLE : I/3 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.333 0.667 1.000 1.333 1.667 -LIST/ORDER=X I+3 - VARIABLE : I+3 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 4.000 5.000 6.000 7.000 8.000 -LIST/ORDER=X I-3 - VARIABLE : I-3 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - -2.000 -1.000 0.000 1.000 2.000 -LIST/ORDER=X I^3 - VARIABLE : I^3 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.0 8.0 27.0 64.0 125.0 -LIST/ORDER=X I EQ 3 - VARIABLE : I EQ 3 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.000 0.000 1.000 0.000 0.000 -LIST/ORDER=X I NE 3 - VARIABLE : I NE 3 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.000 1.000 0.000 1.000 1.000 -LIST/ORDER=X I GT 3 - VARIABLE : I GT 3 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.000 0.000 0.000 1.000 1.000 -LIST/ORDER=X I GE 3 - VARIABLE : I GE 3 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.000 0.000 1.000 1.000 1.000 -LIST/ORDER=X I LT 3 - VARIABLE : I LT 3 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.000 1.000 0.000 0.000 0.000 -LIST/ORDER=X I LE 3 - VARIABLE : I LE 3 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.000 1.000 1.000 0.000 0.000 -LIST/ORDER=X (I LT 3) OR (I GT 3) - VARIABLE : (I LT 3) OR (I GT 3) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.000 1.000 0.000 1.000 1.000 -LIST/ORDER=X (I LE 3) AND (I GE 3) - VARIABLE : (I LE 3) AND (I GE 3) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.000 0.000 1.000 0.000 0.000 -LIST/ORDER=X (I+3)*3 - 9 - (I+I+I) - VARIABLE : (I+3)*3 - 9 - (I+I+I) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.0000 0.0000 0.0000 0.0000 0.0000 -LIST/ORDER=X J * ( (I+3)*3 - 9 - (I+I+I) ) - VARIABLE : J * ( (I+3)*3 - 9 - (I+I+I) ) - SUBSET : 5 by 5 points (X-Y) - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 0.0000 0.0000 0.0000 0.0000 0.0000 - 2 / 2: 0.0000 0.0000 0.0000 0.0000 0.0000 - 3 / 3: 0.0000 0.0000 0.0000 0.0000 0.0000 - 4 / 4: 0.0000 0.0000 0.0000 0.0000 0.0000 - 5 / 5: 0.0000 0.0000 0.0000 0.0000 0.0000 - -! IF, THEN, ELSE -LIST/ORDER=X IF I GT 3 THEN I - VARIABLE : IF I GT 3 THEN I - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - .... .... .... 4.000 5.000 -LIST/ORDER=X IF I GT 3 THEN I ELSE 0 - VARIABLE : IF I GT 3 THEN I ELSE 0 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.000 0.000 0.000 4.000 5.000 -! error: nested IF tests -SET MODE IGNORE_ERRORS -LIST/ORDER=X IF I GT 3 THEN ( IF I LT 5 THEN I ELSE -9 ) ELSE .333 ! err -LET A = IF I LT 5 THEN I ELSE -9 ! err -SET MODE/LAST IGNORE_ERRORS -LET A = IF I LT 5 THEN I ELSE (-9) -LIST/ORDER=X IF I GT 3 THEN ( A ) ELSE .333 - VARIABLE : IF I GT 3 THEN ( A ) ELSE .333 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.333 0.333 0.333 4.000 -9.000 - -! functions -LIST/ORDER=X MAX(I,3) - VARIABLE : MAX(I,3) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 3.000 3.000 3.000 4.000 5.000 -LIST/ORDER=X MIN(I,3) - VARIABLE : MIN(I,3) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.000 2.000 3.000 3.000 3.000 -LIST/ORDER=X INT(I/3) - VARIABLE : INT(I/3) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.000 0.000 1.000 1.000 1.000 -LIST/ORDER=X ABS(I-3) - VARIABLE : ABS(I-3) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 2.000 1.000 0.000 1.000 2.000 -LIST/ORDER=X EXP(I) - VARIABLE : EXP(I) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 2.7 7.4 20.1 54.6 148.4 -LIST/ORDER=X LN(I) - VARIABLE : LN(I) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.000 0.693 1.099 1.386 1.609 -LIST/ORDER=X LN(EXP(I)) - VARIABLE : LN(EXP(I)) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.000 2.000 3.000 4.000 5.000 -LIST/ORDER=X EXP(LN(I)) - VARIABLE : EXP(LN(I)) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.000 2.000 3.000 4.000 5.000 -LIST/ORDER=X LOG(I) - VARIABLE : LOG(I) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.0000 0.3010 0.4771 0.6021 0.6990 -LIST/ORDER=X LOG(10^I) - VARIABLE : LOG(10^I) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.000 2.000 3.000 4.000 5.000 -LIST/ORDER=X 10^LOG(I) - VARIABLE : 10^LOG(I) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.000 2.000 3.000 4.000 5.000 -LIST/ORDER=X SIN(I) - VARIABLE : SIN(I) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.8415 0.9093 0.1411 -0.7568 -0.9589 -LIST/ORDER=X ASIN(SIN(I/3)) - VARIABLE : ASIN(SIN(I/3)) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.333 0.667 1.000 1.333 1.475 -LIST/ORDER=X COS(I) - VARIABLE : COS(I) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.5403 -0.4161 -0.9900 -0.6536 0.2837 -LIST/ORDER=X ACOS(COS(I/3)) - VARIABLE : ACOS(COS(I/3)) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.333 0.667 1.000 1.333 1.667 -LIST/ORDER=X TAN(I) - VARIABLE : TAN(I) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.557 -2.185 -0.143 1.158 -3.381 -LIST/ORDER=X ATAN(TAN(I/3)) - VARIABLE : ATAN(TAN(I/3)) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.333 0.667 1.000 1.333 -1.475 -LIST/J=1:3 ATAN2(J-1,I-1) - VARIABLE : ATAN2(J-1,I-1) - SUBSET : 5 by 3 points (X-Y) - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: .... 0.000 0.000 0.000 0.000 - 2 / 2: 1.571 0.785 0.464 0.322 0.245 - 3 / 3: 1.571 1.107 0.785 0.588 0.464 -LIST/ORDER=X MOD(I,3) - VARIABLE : MOD(I,3) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 1.000 2.000 0.000 1.000 2.000 -LIST/ORDER=X IGNORE0(I-3) - VARIABLE : IGNORE0(I-3) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - -2.000 -1.000 .... 1.000 2.000 -LIST/ORDER=X MISSING( IGNORE0(I-3),-9 ) - VARIABLE : MISSING( IGNORE0(I-3),-9 ) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - -2.000 -1.000 -9.000 1.000 2.000 -LIST/ORDER=X RANDU(I) - VARIABLE : RANDU(I) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.3376 0.7238 0.0304 0.8499 0.1694 -LIST/ORDER=X RANDN(I) - VARIABLE : RANDN(I) - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - -0.267 0.283 -0.323 1.217 -0.304 - -! syntax errors -SET MODE IGNORE_ERRORS -load a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21 -SET MODE/LAST IGNORE_ERRORS - -! commented out 1/96 -!! test a little postfix, too -!SET MODE POLISH -!SET REGION/I=1:5/J=1:5 -!LIST/ORDER=X I 3 LE I 3 GE AND -!LIST/ORDER=X I 3 + 3 * 9 - I I I + + - -!LIST/J=1:3 J 1 - I 1 - ATAN2 -!! ... bug - negative constants not processed properly ... -!SET MODE IGNORE_ERRORS -!LIST/ORDER=X I 3 - IGNORE0 -9 MISSING -!SET MODE/LAST IGNORE_ERRORS -!LIST/ORDER=X I 3 - IGNORE0 0 9 - MISSING -!CANCEL MODE POLISH - -! test formatted output where the output field is too small -LIST/I=1:3/FORMAT=(F6.2) 1/(i-2) ! single column test - VARIABLE : 1/(I-2) - BAD FLAG : -1.E+34 - SUBSET : 3 points (X) - X : 0.5 to 3.5 - -1.00 -****** - 1.00 -LIST/I=1:3/FORMAT=(2F6.2) 1/(i-2),2/(i-2) ! multi-column test - X: 0.5 to 3.5 - Column 1: EX#1 is 1/(I-2) - Column 2: EX#2 is 2/(I-2) - -1.00 -2.00 -************ - 1.00 2.00 - -! test new grid box limit pseudo-variables -LIST/I=5:7 XBOXLO, XBOXHI - X: 4.5 to 7.5 - Column 1: XBOXLO is XBOXLO (axis ABSTRACT) - Column 2: XBOXHI is XBOXHI (axis ABSTRACT) - XBOXLO XBOXHI -5 / 5: 4.500 5.500 -6 / 6: 5.500 6.500 -7 / 7: 6.500 7.500 -LIST/J=5:7 YBOXLO, YBOXHI - Y: 4.5 to 7.5 - Column 1: YBOXLO is YBOXLO (axis ABSTRACT) - Column 2: YBOXHI is YBOXHI (axis ABSTRACT) - YBOXLO YBOXHI -5 / 5: 4.500 5.500 -6 / 6: 5.500 6.500 -7 / 7: 6.500 7.500 -LIST/K=5:7 ZBOXLO, ZBOXHI - Z: 4.5 to 7.5 - Column 1: ZBOXLO is ZBOXLO (axis ABSTRACT) - Column 2: ZBOXHI is ZBOXHI (axis ABSTRACT) - ZBOXLO ZBOXHI -5 / 5: 4.500 5.500 -6 / 6: 5.500 6.500 -7 / 7: 6.500 7.500 -LIST/L=5:7 TBOXLO, TBOXHI - T: 4.5 to 7.5 - Column 1: TBOXLO is TBOXLO (axis ABSTRACT) - Column 2: TBOXHI is TBOXHI (axis ABSTRACT) - TBOXLO TBOXHI -5 / 5: 4.500 5.500 -6 / 6: 5.500 6.500 -7 / 7: 6.500 7.500 - -GO bn_reset bn_geometry -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_geometry -GO bn_geometry -! bn200_geometry.JNL -! benchmark various geometries for accessing FERRET data -! similar tests are performed on: -! abstract variable -! (user variable) transformed file variable -! memory-resident file variable -! disk-resident file variable -! diagnostic variable - -! ******** abstract variable ************ -LET v_abst = i + 10*j + 100*k + 1000*l -DEFINE REGION/I=1 IPT -DEFINE REGION/J=1 JPT -DEFINE REGION/K=1 KPT -DEFINE REGION/L=1 LPT -DEFINE REGION/I=1:5/J=1:5/K=1:5/L=1:5 R4D -SET REG R4D -SET EXPRESSION v_abst -GO bn_geometry.sub -! BN200_GEOMETRY.SUB -! list the variable vtest on variuos geometries - -! this routine assumes that a 4-D region and an expression are already set - -! lines of data -LIST/@JPT/@KPT/@LPT/ORDER=X - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 points (X) - Y : 1 - Z : 1 - T : 1 - 1 2 3 4 5 - 1 2 3 4 5 - 1111. 1112. 1113. 1114. 1115. -LIST/@IPT/@KPT/@LPT/ORDER=Y - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 points (Y) - X : 1 - Z : 1 - T : 1 - 1 2 3 4 5 - 1 2 3 4 5 - 1111. 1121. 1131. 1141. 1151. -LIST/@IPT/@JPT/@LPT/ORDER=Z - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 points (Z) - X : 1 - Y : 1 - T : 1 - 1 2 3 4 5 - 1 2 3 4 5 - 1111. 1211. 1311. 1411. 1511. -LIST/@IPT/@JPT/@KPT/ORDER=T - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 points (T) - X : 1 - Y : 1 - Z : 1 - 1 2 3 4 5 - 1 2 3 4 5 - 1111. 2111. 3111. 4111. 5111. - -! planes of data -LIST/@KPT/@LPT !XY - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 by 5 points (X-Y) - Z : 1 - T : 1 - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 1111. 1112. 1113. 1114. 1115. - 2 / 2: 1121. 1122. 1123. 1124. 1125. - 3 / 3: 1131. 1132. 1133. 1134. 1135. - 4 / 4: 1141. 1142. 1143. 1144. 1145. - 5 / 5: 1151. 1152. 1153. 1154. 1155. -LIST/@JPT/@LPT !XZ - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 by 5 points (X-Z) - Y : 1 - T : 1 - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 1111. 1112. 1113. 1114. 1115. - 2 / 2: 1211. 1212. 1213. 1214. 1215. - 3 / 3: 1311. 1312. 1313. 1314. 1315. - 4 / 4: 1411. 1412. 1413. 1414. 1415. - 5 / 5: 1511. 1512. 1513. 1514. 1515. -LIST/@JPT/@KPT !XT - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 by 5 points (X-T) - Y : 1 - Z : 1 - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 1111. 1112. 1113. 1114. 1115. - 2 / 2: 2111. 2112. 2113. 2114. 2115. - 3 / 3: 3111. 3112. 3113. 3114. 3115. - 4 / 4: 4111. 4112. 4113. 4114. 4115. - 5 / 5: 5111. 5112. 5113. 5114. 5115. -LIST/@IPT/@LPT !YZ - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 by 5 points (Y-Z) - X : 1 - T : 1 - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 1111. 1121. 1131. 1141. 1151. - 2 / 2: 1211. 1221. 1231. 1241. 1251. - 3 / 3: 1311. 1321. 1331. 1341. 1351. - 4 / 4: 1411. 1421. 1431. 1441. 1451. - 5 / 5: 1511. 1521. 1531. 1541. 1551. -LIST/@IPT/@KPT !YT - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 by 5 points (Y-T) - X : 1 - Z : 1 - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 1111. 1121. 1131. 1141. 1151. - 2 / 2: 2111. 2121. 2131. 2141. 2151. - 3 / 3: 3111. 3121. 3131. 3141. 3151. - 4 / 4: 4111. 4121. 4131. 4141. 4151. - 5 / 5: 5111. 5121. 5131. 5141. 5151. -LIST/@IPT/@JPT !ZT - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 by 5 points (Z-T) - X : 1 - Y : 1 - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 1111. 1211. 1311. 1411. 1511. - 2 / 2: 2111. 2211. 2311. 2411. 2511. - 3 / 3: 3111. 3211. 3311. 3411. 3511. - 4 / 4: 4111. 4211. 4311. 4411. 4511. - 5 / 5: 5111. 5211. 5311. 5411. 5511. - -! cubes of data -LIST/@LPT - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 by 5 by 5 points (X-Y-Z) - T : 1 - 1 2 3 4 5 - 1 2 3 4 5 - ---- K:1 Z: 1 - 1 / 1: 1111. 1112. 1113. 1114. 1115. - 2 / 2: 1121. 1122. 1123. 1124. 1125. - 3 / 3: 1131. 1132. 1133. 1134. 1135. - 4 / 4: 1141. 1142. 1143. 1144. 1145. - 5 / 5: 1151. 1152. 1153. 1154. 1155. - ---- K:2 Z: 2 - 1 / 1: 1211. 1212. 1213. 1214. 1215. - 2 / 2: 1221. 1222. 1223. 1224. 1225. - 3 / 3: 1231. 1232. 1233. 1234. 1235. - 4 / 4: 1241. 1242. 1243. 1244. 1245. - 5 / 5: 1251. 1252. 1253. 1254. 1255. - ---- K:3 Z: 3 - 1 / 1: 1311. 1312. 1313. 1314. 1315. - 2 / 2: 1321. 1322. 1323. 1324. 1325. - 3 / 3: 1331. 1332. 1333. 1334. 1335. - 4 / 4: 1341. 1342. 1343. 1344. 1345. - 5 / 5: 1351. 1352. 1353. 1354. 1355. - ---- K:4 Z: 4 - 1 / 1: 1411. 1412. 1413. 1414. 1415. - 2 / 2: 1421. 1422. 1423. 1424. 1425. - 3 / 3: 1431. 1432. 1433. 1434. 1435. - 4 / 4: 1441. 1442. 1443. 1444. 1445. - 5 / 5: 1451. 1452. 1453. 1454. 1455. - ---- K:5 Z: 5 - 1 / 1: 1511. 1512. 1513. 1514. 1515. - 2 / 2: 1521. 1522. 1523. 1524. 1525. - 3 / 3: 1531. 1532. 1533. 1534. 1535. - 4 / 4: 1541. 1542. 1543. 1544. 1545. - 5 / 5: 1551. 1552. 1553. 1554. 1555. -LIST/@KPT - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 by 5 by 5 points (X-Y-T) - Z : 1 - 1 2 3 4 5 - 1 2 3 4 5 - ---- L:1 T: 1 - 1 / 1: 1111. 1112. 1113. 1114. 1115. - 2 / 2: 1121. 1122. 1123. 1124. 1125. - 3 / 3: 1131. 1132. 1133. 1134. 1135. - 4 / 4: 1141. 1142. 1143. 1144. 1145. - 5 / 5: 1151. 1152. 1153. 1154. 1155. - ---- L:2 T: 2 - 1 / 1: 2111. 2112. 2113. 2114. 2115. - 2 / 2: 2121. 2122. 2123. 2124. 2125. - 3 / 3: 2131. 2132. 2133. 2134. 2135. - 4 / 4: 2141. 2142. 2143. 2144. 2145. - 5 / 5: 2151. 2152. 2153. 2154. 2155. - ---- L:3 T: 3 - 1 / 1: 3111. 3112. 3113. 3114. 3115. - 2 / 2: 3121. 3122. 3123. 3124. 3125. - 3 / 3: 3131. 3132. 3133. 3134. 3135. - 4 / 4: 3141. 3142. 3143. 3144. 3145. - 5 / 5: 3151. 3152. 3153. 3154. 3155. - ---- L:4 T: 4 - 1 / 1: 4111. 4112. 4113. 4114. 4115. - 2 / 2: 4121. 4122. 4123. 4124. 4125. - 3 / 3: 4131. 4132. 4133. 4134. 4135. - 4 / 4: 4141. 4142. 4143. 4144. 4145. - 5 / 5: 4151. 4152. 4153. 4154. 4155. - ---- L:5 T: 5 - 1 / 1: 5111. 5112. 5113. 5114. 5115. - 2 / 2: 5121. 5122. 5123. 5124. 5125. - 3 / 3: 5131. 5132. 5133. 5134. 5135. - 4 / 4: 5141. 5142. 5143. 5144. 5145. - 5 / 5: 5151. 5152. 5153. 5154. 5155. -LIST/@JPT - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 by 5 by 5 points (X-Z-T) - Y : 1 - 1 2 3 4 5 - 1 2 3 4 5 - ---- L:1 T: 1 - 1 / 1: 1111. 1112. 1113. 1114. 1115. - 2 / 2: 1211. 1212. 1213. 1214. 1215. - 3 / 3: 1311. 1312. 1313. 1314. 1315. - 4 / 4: 1411. 1412. 1413. 1414. 1415. - 5 / 5: 1511. 1512. 1513. 1514. 1515. - ---- L:2 T: 2 - 1 / 1: 2111. 2112. 2113. 2114. 2115. - 2 / 2: 2211. 2212. 2213. 2214. 2215. - 3 / 3: 2311. 2312. 2313. 2314. 2315. - 4 / 4: 2411. 2412. 2413. 2414. 2415. - 5 / 5: 2511. 2512. 2513. 2514. 2515. - ---- L:3 T: 3 - 1 / 1: 3111. 3112. 3113. 3114. 3115. - 2 / 2: 3211. 3212. 3213. 3214. 3215. - 3 / 3: 3311. 3312. 3313. 3314. 3315. - 4 / 4: 3411. 3412. 3413. 3414. 3415. - 5 / 5: 3511. 3512. 3513. 3514. 3515. - ---- L:4 T: 4 - 1 / 1: 4111. 4112. 4113. 4114. 4115. - 2 / 2: 4211. 4212. 4213. 4214. 4215. - 3 / 3: 4311. 4312. 4313. 4314. 4315. - 4 / 4: 4411. 4412. 4413. 4414. 4415. - 5 / 5: 4511. 4512. 4513. 4514. 4515. - ---- L:5 T: 5 - 1 / 1: 5111. 5112. 5113. 5114. 5115. - 2 / 2: 5211. 5212. 5213. 5214. 5215. - 3 / 3: 5311. 5312. 5313. 5314. 5315. - 4 / 4: 5411. 5412. 5413. 5414. 5415. - 5 / 5: 5511. 5512. 5513. 5514. 5515. -LIST/@IPT - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 5 by 5 by 5 points (Y-Z-T) - X : 1 - 1 2 3 4 5 - 1 2 3 4 5 - ---- L:1 T: 1 - 1 / 1: 1111. 1121. 1131. 1141. 1151. - 2 / 2: 1211. 1221. 1231. 1241. 1251. - 3 / 3: 1311. 1321. 1331. 1341. 1351. - 4 / 4: 1411. 1421. 1431. 1441. 1451. - 5 / 5: 1511. 1521. 1531. 1541. 1551. - ---- L:2 T: 2 - 1 / 1: 2111. 2121. 2131. 2141. 2151. - 2 / 2: 2211. 2221. 2231. 2241. 2251. - 3 / 3: 2311. 2321. 2331. 2341. 2351. - 4 / 4: 2411. 2421. 2431. 2441. 2451. - 5 / 5: 2511. 2521. 2531. 2541. 2551. - ---- L:3 T: 3 - 1 / 1: 3111. 3121. 3131. 3141. 3151. - 2 / 2: 3211. 3221. 3231. 3241. 3251. - 3 / 3: 3311. 3321. 3331. 3341. 3351. - 4 / 4: 3411. 3421. 3431. 3441. 3451. - 5 / 5: 3511. 3521. 3531. 3541. 3551. - ---- L:4 T: 4 - 1 / 1: 4111. 4121. 4131. 4141. 4151. - 2 / 2: 4211. 4221. 4231. 4241. 4251. - 3 / 3: 4311. 4321. 4331. 4341. 4351. - 4 / 4: 4411. 4421. 4431. 4441. 4451. - 5 / 5: 4511. 4521. 4531. 4541. 4551. - ---- L:5 T: 5 - 1 / 1: 5111. 5121. 5131. 5141. 5151. - 2 / 2: 5211. 5221. 5231. 5241. 5251. - 3 / 3: 5311. 5321. 5331. 5341. 5351. - 4 / 4: 5411. 5421. 5431. 5441. 5451. - 5 / 5: 5511. 5521. 5531. 5541. 5551. - -! 4D region -LOAD - -! ******** transformed file variable ************ -USE gt4d011 -LET temp_sq = temp^2 -DEFINE REGION/I=101 IPT -DEFINE REGION/J=46 JPT -DEFINE REGION/K=1 KPT -DEFINE REGION/L=1 LPT -DEFINE REGION/I=101:105/J=46:50/K=1:5/L=1:5 R4D -SET REG R4D -SET EXPRESSION temp_sq -GO bn_geometry.sub -! BN200_GEOMETRY.SUB -! list the variable vtest on variuos geometries - -! this routine assumes that a 4-D region and an expression are already set - -! lines of data -LIST/@JPT/@KPT/@LPT/ORDER=X - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 0.167N - DEPTH (m): 5 - TIME : 17-AUG-1982 12:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 664.8 665.8 666.6 665.4 662.8 -LIST/@IPT/@KPT/@LPT/ORDER=Y - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 points (LATITUDE) - LONGITUDE: 129.5W - DEPTH (m): 5 - TIME : 17-AUG-1982 12:00 - 0.17N 0.5N 0.83N 1.17N 1.5N - 46 47 48 49 50 - 664.8 670.7 678.3 687.3 698.1 -LIST/@IPT/@JPT/@LPT/ORDER=Z - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 points (DEPTH (m)) - LONGITUDE: 129.5W - LATITUDE : 0.167N - TIME : 17-AUG-1982 12:00 - 5 15 25 35 45 - 1 2 3 4 5 - 664.8 658.8 650.5 642.6 633.2 -LIST/@IPT/@JPT/@KPT/ORDER=T - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 points (TIME) - LONGITUDE: 129.5W - LATITUDE : 0.167N - DEPTH (m): 5 - 1982 1982 1982 1982 1982 - 1 2 3 4 5 - 664.8 674.8 685.3 696.6 708.4 - -! planes of data -LIST/@KPT/@LPT !XY - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 17-AUG-1982 12:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 1.5N / 50: 698.1 699.9 702.0 702.5 701.2 - 1.17N / 49: 687.3 690.0 691.9 691.7 689.5 - 0.83N / 48: 678.3 681.0 682.6 681.7 678.9 - 0.5N / 47: 670.7 672.9 674.1 672.9 670.1 - 0.17N / 46: 664.8 665.8 666.6 665.4 662.8 -LIST/@JPT/@LPT !XZ - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LONGITUDE-DEPTH (m)) - LATITUDE : 0.167N - TIME : 17-AUG-1982 12:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 5 / 1: 664.8 665.8 666.6 665.4 662.8 - 15 / 2: 658.8 659.8 660.6 659.5 657.0 - 25 / 3: 650.5 651.6 652.5 651.8 649.5 - 35 / 4: 642.6 643.2 643.2 642.2 639.8 - 45 / 5: 633.2 632.6 631.0 628.7 625.8 -LIST/@JPT/@KPT !XT - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LONGITUDE-TIME) - LATITUDE : 0.167N - DEPTH (m): 5 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 17-AUG-1982 12 / 1: 664.8 665.8 666.6 665.4 662.8 - 23-AUG-1982 14 / 2: 674.8 674.4 672.8 670.1 667.2 - 29-AUG-1982 16 / 3: 685.3 682.5 679.4 676.5 674.4 - 04-SEP-1982 18 / 4: 696.6 692.3 688.4 685.6 684.0 - 10-SEP-1982 20 / 5: 708.4 704.7 700.4 697.1 695.1 -LIST/@IPT/@LPT !YZ - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LATITUDE-DEPTH (m)) - LONGITUDE: 129.5W - TIME : 17-AUG-1982 12:00 - 0.17N 0.5N 0.83N 1.17N 1.5N - 46 47 48 49 50 - 5 / 1: 664.8 670.7 678.3 687.3 698.1 - 15 / 2: 658.8 665.4 673.8 683.5 694.9 - 25 / 3: 650.5 659.6 670.7 682.2 694.3 - 35 / 4: 642.6 654.3 668.7 681.9 694.4 - 45 / 5: 633.2 645.7 664.2 681.4 694.5 -LIST/@IPT/@KPT !YT - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LATITUDE-TIME) - LONGITUDE: 129.5W - DEPTH (m): 5 - 0.17N 0.5N 0.83N 1.17N 1.5N - 46 47 48 49 50 - 17-AUG-1982 12 / 1: 664.8 670.7 678.3 687.3 698.1 - 23-AUG-1982 14 / 2: 674.8 681.5 689.5 699.0 710.0 - 29-AUG-1982 16 / 3: 685.3 691.9 700.1 710.3 721.6 - 04-SEP-1982 18 / 4: 696.6 702.9 711.1 721.2 731.5 - 10-SEP-1982 20 / 5: 708.4 714.1 721.8 730.4 738.2 -LIST/@IPT/@JPT !ZT - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (DEPTH (m)-TIME) - LONGITUDE: 129.5W - LATITUDE : 0.167N - 5 15 25 35 45 - 1 2 3 4 5 - 17-AUG-1982 12 / 1: 664.8 658.8 650.5 642.6 633.2 - 23-AUG-1982 14 / 2: 674.8 669.2 660.6 652.7 643.1 - 29-AUG-1982 16 / 3: 685.3 680.3 672.3 665.2 655.3 - 04-SEP-1982 18 / 4: 696.6 692.0 684.3 677.9 667.3 - 10-SEP-1982 20 / 5: 708.4 704.0 695.0 688.9 678.3 - -! cubes of data -LIST/@LPT - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 by 5 points (LONGITUDE-LATITUDE-DEPTH (m)) - TIME : 17-AUG-1982 12:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - ---- K:1 Z: 5 - 1.5N / 50: 698.1 699.9 702.0 702.5 701.2 - 1.17N / 49: 687.3 690.0 691.9 691.7 689.5 - 0.83N / 48: 678.3 681.0 682.6 681.7 678.9 - 0.5N / 47: 670.7 672.9 674.1 672.9 670.1 - 0.17N / 46: 664.8 665.8 666.6 665.4 662.8 - ---- K:2 Z: 15 - 1.5N / 50: 694.9 696.6 698.7 699.4 698.2 - 1.17N / 49: 683.5 686.1 688.3 688.2 686.2 - 0.83N / 48: 673.8 676.5 678.3 677.6 675.0 - 0.5N / 47: 665.4 667.6 669.0 668.0 665.2 - 0.17N / 46: 658.8 659.8 660.6 659.5 657.0 - ---- K:3 Z: 25 - 1.5N / 50: 694.3 695.9 698.0 698.9 697.7 - 1.17N / 49: 682.2 684.7 687.1 687.4 685.4 - 0.83N / 48: 670.7 673.5 675.7 675.5 673.0 - 0.5N / 47: 659.6 661.9 663.6 663.2 660.6 - 0.17N / 46: 650.5 651.6 652.5 651.8 649.5 - ---- K:4 Z: 35 - 1.5N / 50: 694.4 696.0 698.1 699.0 697.8 - 1.17N / 49: 681.9 684.4 686.8 687.2 685.2 - 0.83N / 48: 668.7 671.3 673.3 673.5 671.0 - 0.5N / 47: 654.3 656.2 657.3 656.9 654.3 - 0.17N / 46: 642.6 643.2 643.2 642.2 639.8 - ---- K:5 Z: 45 - 1.5N / 50: 694.5 696.1 698.2 699.0 697.9 - 1.17N / 49: 681.4 683.8 685.9 686.5 684.5 - 0.83N / 48: 664.2 665.9 666.5 666.0 663.3 - 0.5N / 47: 645.7 646.5 645.8 644.0 641.0 - 0.17N / 46: 633.2 632.6 631.0 628.7 625.8 -LIST/@KPT - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 by 5 points (LONGITUDE-LATITUDE-TIME) - DEPTH (m): 5 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - ---- L:1 T: 17-AUG-1982 12:00 - 1.5N / 50: 698.1 699.9 702.0 702.5 701.2 - 1.17N / 49: 687.3 690.0 691.9 691.7 689.5 - 0.83N / 48: 678.3 681.0 682.6 681.7 678.9 - 0.5N / 47: 670.7 672.9 674.1 672.9 670.1 - 0.17N / 46: 664.8 665.8 666.6 665.4 662.8 - ---- L:2 T: 23-AUG-1982 14:00 - 1.5N / 50: 710.0 709.0 707.8 706.0 703.5 - 1.17N / 49: 699.0 698.2 697.0 694.4 691.4 - 0.83N / 48: 689.5 689.0 687.5 684.5 681.3 - 0.5N / 47: 681.5 681.1 679.5 676.5 673.4 - 0.17N / 46: 674.8 674.4 672.8 670.1 667.2 - ---- L:3 T: 29-AUG-1982 16:00 - 1.5N / 50: 721.6 717.3 712.8 709.6 707.5 - 1.17N / 49: 710.3 705.9 701.5 698.1 695.9 - 0.83N / 48: 700.1 696.1 692.1 688.7 686.5 - 0.5N / 47: 691.9 688.4 684.9 681.7 679.5 - 0.17N / 46: 685.3 682.5 679.4 676.5 674.4 - ---- L:4 T: 04-SEP-1982 18:00 - 1.5N / 50: 731.5 725.7 718.0 713.9 713.0 - 1.17N / 49: 721.2 714.2 707.1 703.4 702.5 - 0.83N / 48: 711.1 704.5 698.6 695.2 694.3 - 0.5N / 47: 702.9 697.4 692.6 689.5 688.3 - 0.17N / 46: 696.6 692.3 688.4 685.6 684.0 - ---- L:5 T: 10-SEP-1982 20:00 - 1.5N / 50: 738.2 735.8 726.4 720.5 720.1 - 1.17N / 49: 730.4 725.1 716.1 711.0 710.5 - 0.83N / 48: 721.8 715.7 708.5 704.2 703.4 - 0.5N / 47: 714.1 708.9 703.4 699.8 698.4 - 0.17N / 46: 708.4 704.7 700.4 697.1 695.1 -LIST/@JPT - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 by 5 points (LONGITUDE-DEPTH (m)-TIME) - LATITUDE : 0.167N - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - ---- L:1 T: 17-AUG-1982 12:00 - 5 / 1: 664.8 665.8 666.6 665.4 662.8 - 15 / 2: 658.8 659.8 660.6 659.5 657.0 - 25 / 3: 650.5 651.6 652.5 651.8 649.5 - 35 / 4: 642.6 643.2 643.2 642.2 639.8 - 45 / 5: 633.2 632.6 631.0 628.7 625.8 - ---- L:2 T: 23-AUG-1982 14:00 - 5 / 1: 674.8 674.4 672.8 670.1 667.2 - 15 / 2: 669.2 668.9 667.3 664.6 661.6 - 25 / 3: 660.6 660.8 659.4 656.7 653.6 - 35 / 4: 652.7 652.9 651.0 648.1 644.9 - 45 / 5: 643.1 642.3 639.7 636.2 633.0 - ---- L:3 T: 29-AUG-1982 16:00 - 5 / 1: 685.3 682.5 679.4 676.5 674.4 - 15 / 2: 680.3 677.5 674.3 671.3 669.0 - 25 / 3: 672.3 670.2 666.5 662.8 660.1 - 35 / 4: 665.2 663.6 659.6 655.6 652.4 - 45 / 5: 655.3 653.6 649.7 645.7 642.6 - ---- L:4 T: 04-SEP-1982 18:00 - 5 / 1: 696.6 692.3 688.4 685.6 684.0 - 15 / 2: 692.0 687.7 683.5 680.5 678.8 - 25 / 3: 684.3 680.5 675.0 670.7 668.3 - 35 / 4: 677.9 674.9 669.3 664.5 661.4 - 45 / 5: 667.3 665.0 660.5 656.2 653.0 - ---- L:5 T: 10-SEP-1982 20:00 - 5 / 1: 708.4 704.7 700.4 697.1 695.1 - 15 / 2: 704.0 700.2 695.7 692.1 690.1 - 25 / 3: 695.0 692.2 685.8 680.4 677.6 - 35 / 4: 688.9 687.1 680.9 675.2 671.8 - 45 / 5: 678.3 676.6 672.2 667.7 664.3 -LIST/@IPT - VARIABLE : TEMP^2 - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 by 5 points (LATITUDE-DEPTH (m)-TIME) - LONGITUDE: 129.5W - 0.17N 0.5N 0.83N 1.17N 1.5N - 46 47 48 49 50 - ---- L:1 T: 17-AUG-1982 12:00 - 5 / 1: 664.8 670.7 678.3 687.3 698.1 - 15 / 2: 658.8 665.4 673.8 683.5 694.9 - 25 / 3: 650.5 659.6 670.7 682.2 694.3 - 35 / 4: 642.6 654.3 668.7 681.9 694.4 - 45 / 5: 633.2 645.7 664.2 681.4 694.5 - ---- L:2 T: 23-AUG-1982 14:00 - 5 / 1: 674.8 681.5 689.5 699.0 710.0 - 15 / 2: 669.2 676.7 685.5 695.7 707.2 - 25 / 3: 660.6 671.4 683.3 694.9 706.9 - 35 / 4: 652.7 666.4 681.9 694.9 707.0 - 45 / 5: 643.1 657.3 677.1 694.8 707.0 - ---- L:3 T: 29-AUG-1982 16:00 - 5 / 1: 685.3 691.9 700.1 710.3 721.6 - 15 / 2: 680.3 687.7 696.8 707.5 719.1 - 25 / 3: 672.3 683.9 695.6 707.2 718.8 - 35 / 4: 665.2 680.2 695.2 707.3 718.9 - 45 / 5: 655.3 670.9 691.1 707.3 718.9 - ---- L:4 T: 04-SEP-1982 18:00 - 5 / 1: 696.6 702.9 711.1 721.2 731.5 - 15 / 2: 692.0 699.1 708.1 718.5 728.9 - 25 / 3: 684.3 696.0 707.3 718.3 728.5 - 35 / 4: 677.9 693.1 707.2 718.3 728.7 - 45 / 5: 667.3 683.1 703.1 718.3 728.7 - ---- L:5 T: 10-SEP-1982 20:00 - 5 / 1: 708.4 714.1 721.8 730.4 738.2 - 15 / 2: 704.0 710.4 718.6 727.4 735.1 - 25 / 3: 695.0 706.8 717.4 726.4 733.8 - 35 / 4: 688.9 703.8 717.2 726.4 733.8 - 45 / 5: 678.3 692.9 712.0 726.2 733.9 - -! 4D region -LOAD - -! ******** memory-resident file variable ************ -USE gt4d011 -CANCEL MEMORY/ALL -SET MODE DIAGNOSTIC -DEFINE REGION/I=101 IPT -DEFINE REGION/J=46 JPT -DEFINE REGION/K=1 KPT -DEFINE REGION/L=1 LPT -DEFINE REGION/I=101:105/J=46:50/K=1:5/L=1:5 R4D -SET REG R4D -SET EXPRESSION temp -LOAD ! load full 4-D region - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DT2 PSXT PSYT PSZT TIME1 - eval EX#1 C: 4 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - reading TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 -GO bn_geometry.sub -! BN200_GEOMETRY.SUB -! list the variable vtest on variuos geometries - -! this routine assumes that a 4-D region and an expression are already set - -! lines of data -LIST/@JPT/@KPT/@LPT/ORDER=X - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 46 K: 1 1 L: 1 1 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 0.167N - DEPTH (m): 5 - TIME : 17-AUG-1982 12:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 25.78 25.80 25.82 25.80 25.74 - -DELETE TEMP M: 26 dset: 1 I: 101 105 J: 46 46 K: 1 1 L: 1 1 -LIST/@IPT/@KPT/@LPT/ORDER=Y - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 50 K: 1 1 L: 1 1 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 points (LATITUDE) - LONGITUDE: 129.5W - DEPTH (m): 5 - TIME : 17-AUG-1982 12:00 - 0.17N 0.5N 0.83N 1.17N 1.5N - 46 47 48 49 50 - 25.78 25.90 26.04 26.22 26.42 - -DELETE TEMP M: 26 dset: 1 I: 46 50 J: 101 101 K: 1 1 L: 1 1 -LIST/@IPT/@JPT/@LPT/ORDER=Z - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 46 K: 1 5 L: 1 1 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 points (DEPTH (m)) - LONGITUDE: 129.5W - LATITUDE : 0.167N - TIME : 17-AUG-1982 12:00 - 5 15 25 35 45 - 1 2 3 4 5 - 25.78 25.67 25.51 25.35 25.16 - -DELETE TEMP M: 26 dset: 1 I: 1 5 J: 101 101 K: 46 46 L: 1 1 -LIST/@IPT/@JPT/@KPT/ORDER=T - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 46 K: 1 1 L: 1 5 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 points (TIME) - LONGITUDE: 129.5W - LATITUDE : 0.167N - DEPTH (m): 5 - 1982 1982 1982 1982 1982 - 1 2 3 4 5 - 25.78 25.98 26.18 26.39 26.62 - -DELETE TEMP M: 26 dset: 1 I: 1 5 J: 101 101 K: 46 46 L: 1 1 - -! planes of data -LIST/@KPT/@LPT !XY - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 50 K: 1 1 L: 1 1 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 17-AUG-1982 12:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 1.5N / 50: 26.42 26.46 26.50 26.51 26.48 - 1.17N / 49: 26.22 26.27 26.30 26.30 26.26 - 0.83N / 48: 26.04 26.10 26.13 26.11 26.06 - 0.5N / 47: 25.90 25.94 25.96 25.94 25.89 - 0.17N / 46: 25.78 25.80 25.82 25.80 25.74 - -DELETE TEMP M: 26 dset: 1 I: 101 105 J: 46 50 K: 1 1 L: 1 1 -LIST/@JPT/@LPT !XZ - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 46 K: 1 5 L: 1 1 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LONGITUDE-DEPTH (m)) - LATITUDE : 0.167N - TIME : 17-AUG-1982 12:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 5 / 1: 25.78 25.80 25.82 25.80 25.74 - 15 / 2: 25.67 25.69 25.70 25.68 25.63 - 25 / 3: 25.51 25.53 25.54 25.53 25.48 - 35 / 4: 25.35 25.36 25.36 25.34 25.29 - 45 / 5: 25.16 25.15 25.12 25.07 25.02 - -DELETE TEMP M: 26 dset: 1 I: 101 105 J: 1 5 K: 46 46 L: 1 1 -LIST/@JPT/@KPT !XT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 46 K: 1 1 L: 1 5 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LONGITUDE-TIME) - LATITUDE : 0.167N - DEPTH (m): 5 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 17-AUG-1982 12 / 1: 25.78 25.80 25.82 25.80 25.74 - 23-AUG-1982 14 / 2: 25.98 25.97 25.94 25.89 25.83 - 29-AUG-1982 16 / 3: 26.18 26.13 26.07 26.01 25.97 - 04-SEP-1982 18 / 4: 26.39 26.31 26.24 26.18 26.15 - 10-SEP-1982 20 / 5: 26.62 26.55 26.47 26.40 26.36 - -DELETE TEMP M: 26 dset: 1 I: 101 105 J: 1 5 K: 46 46 L: 1 1 -LIST/@IPT/@LPT !YZ - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 50 K: 1 5 L: 1 1 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LATITUDE-DEPTH (m)) - LONGITUDE: 129.5W - TIME : 17-AUG-1982 12:00 - 0.17N 0.5N 0.83N 1.17N 1.5N - 46 47 48 49 50 - 5 / 1: 25.78 25.90 26.04 26.22 26.42 - 15 / 2: 25.67 25.80 25.96 26.14 26.36 - 25 / 3: 25.51 25.68 25.90 26.12 26.35 - 35 / 4: 25.35 25.58 25.86 26.11 26.35 - 45 / 5: 25.16 25.41 25.77 26.10 26.35 - -DELETE TEMP M: 26 dset: 1 I: 46 50 J: 1 5 K: 101 101 L: 1 1 -LIST/@IPT/@KPT !YT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 50 K: 1 1 L: 1 5 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LATITUDE-TIME) - LONGITUDE: 129.5W - DEPTH (m): 5 - 0.17N 0.5N 0.83N 1.17N 1.5N - 46 47 48 49 50 - 17-AUG-1982 12 / 1: 25.78 25.90 26.04 26.22 26.42 - 23-AUG-1982 14 / 2: 25.98 26.10 26.26 26.44 26.65 - 29-AUG-1982 16 / 3: 26.18 26.30 26.46 26.65 26.86 - 04-SEP-1982 18 / 4: 26.39 26.51 26.67 26.85 27.05 - 10-SEP-1982 20 / 5: 26.62 26.72 26.87 27.03 27.17 - -DELETE TEMP M: 26 dset: 1 I: 46 50 J: 1 5 K: 101 101 L: 1 1 -LIST/@IPT/@JPT !ZT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 46 K: 1 5 L: 1 5 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (DEPTH (m)-TIME) - LONGITUDE: 129.5W - LATITUDE : 0.167N - 5 15 25 35 45 - 1 2 3 4 5 - 17-AUG-1982 12 / 1: 25.78 25.67 25.51 25.35 25.16 - 23-AUG-1982 14 / 2: 25.98 25.87 25.70 25.55 25.36 - 29-AUG-1982 16 / 3: 26.18 26.08 25.93 25.79 25.60 - 04-SEP-1982 18 / 4: 26.39 26.31 26.16 26.04 25.83 - 10-SEP-1982 20 / 5: 26.62 26.53 26.36 26.25 26.04 - -DELETE TEMP M: 26 dset: 1 I: 1 5 J: 1 5 K: 101 101 L: 46 46 - -! cubes of data -LIST/@LPT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 1 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 by 5 points (LONGITUDE-LATITUDE-DEPTH (m)) - TIME : 17-AUG-1982 12:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - ---- K:1 Z: 5 - 1.5N / 50: 26.42 26.46 26.50 26.51 26.48 - 1.17N / 49: 26.22 26.27 26.30 26.30 26.26 - 0.83N / 48: 26.04 26.10 26.13 26.11 26.06 - 0.5N / 47: 25.90 25.94 25.96 25.94 25.89 - 0.17N / 46: 25.78 25.80 25.82 25.80 25.74 - ---- K:2 Z: 15 - 1.5N / 50: 26.36 26.39 26.43 26.45 26.42 - 1.17N / 49: 26.14 26.19 26.23 26.23 26.19 - 0.83N / 48: 25.96 26.01 26.04 26.03 25.98 - 0.5N / 47: 25.80 25.84 25.87 25.85 25.79 - 0.17N / 46: 25.67 25.69 25.70 25.68 25.63 - ---- K:3 Z: 25 - 1.5N / 50: 26.35 26.38 26.42 26.44 26.41 - 1.17N / 49: 26.12 26.17 26.21 26.22 26.18 - 0.83N / 48: 25.90 25.95 25.99 25.99 25.94 - 0.5N / 47: 25.68 25.73 25.76 25.75 25.70 - 0.17N / 46: 25.51 25.53 25.54 25.53 25.48 - ---- K:4 Z: 35 - 1.5N / 50: 26.35 26.38 26.42 26.44 26.42 - 1.17N / 49: 26.11 26.16 26.21 26.22 26.18 - 0.83N / 48: 25.86 25.91 25.95 25.95 25.90 - 0.5N / 47: 25.58 25.62 25.64 25.63 25.58 - 0.17N / 46: 25.35 25.36 25.36 25.34 25.29 - ---- K:5 Z: 45 - 1.5N / 50: 26.35 26.38 26.42 26.44 26.42 - 1.17N / 49: 26.10 26.15 26.19 26.20 26.16 - 0.83N / 48: 25.77 25.81 25.82 25.81 25.76 - 0.5N / 47: 25.41 25.43 25.41 25.38 25.32 - 0.17N / 46: 25.16 25.15 25.12 25.07 25.02 - -DELETE TEMP M: 26 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 1 -LIST/@KPT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 50 K: 1 1 L: 1 5 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 by 5 points (LONGITUDE-LATITUDE-TIME) - DEPTH (m): 5 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - ---- L:1 T: 17-AUG-1982 12:00 - 1.5N / 50: 26.42 26.46 26.50 26.51 26.48 - 1.17N / 49: 26.22 26.27 26.30 26.30 26.26 - 0.83N / 48: 26.04 26.10 26.13 26.11 26.06 - 0.5N / 47: 25.90 25.94 25.96 25.94 25.89 - 0.17N / 46: 25.78 25.80 25.82 25.80 25.74 - ---- L:2 T: 23-AUG-1982 14:00 - 1.5N / 50: 26.65 26.63 26.60 26.57 26.52 - 1.17N / 49: 26.44 26.42 26.40 26.35 26.29 - 0.83N / 48: 26.26 26.25 26.22 26.16 26.10 - 0.5N / 47: 26.10 26.10 26.07 26.01 25.95 - 0.17N / 46: 25.98 25.97 25.94 25.89 25.83 - ---- L:3 T: 29-AUG-1982 16:00 - 1.5N / 50: 26.86 26.78 26.70 26.64 26.60 - 1.17N / 49: 26.65 26.57 26.49 26.42 26.38 - 0.83N / 48: 26.46 26.38 26.31 26.24 26.20 - 0.5N / 47: 26.30 26.24 26.17 26.11 26.07 - 0.17N / 46: 26.18 26.13 26.07 26.01 25.97 - ---- L:4 T: 04-SEP-1982 18:00 - 1.5N / 50: 27.05 26.94 26.80 26.72 26.70 - 1.17N / 49: 26.85 26.72 26.59 26.52 26.51 - 0.83N / 48: 26.67 26.54 26.43 26.37 26.35 - 0.5N / 47: 26.51 26.41 26.32 26.26 26.23 - 0.17N / 46: 26.39 26.31 26.24 26.18 26.15 - ---- L:5 T: 10-SEP-1982 20:00 - 1.5N / 50: 27.17 27.13 26.95 26.84 26.83 - 1.17N / 49: 27.03 26.93 26.76 26.66 26.65 - 0.83N / 48: 26.87 26.75 26.62 26.54 26.52 - 0.5N / 47: 26.72 26.63 26.52 26.45 26.43 - 0.17N / 46: 26.62 26.55 26.47 26.40 26.36 - -DELETE TEMP M: 26 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 1 -LIST/@JPT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 46 K: 1 5 L: 1 5 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 by 5 points (LONGITUDE-DEPTH (m)-TIME) - LATITUDE : 0.167N - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - ---- L:1 T: 17-AUG-1982 12:00 - 5 / 1: 25.78 25.80 25.82 25.80 25.74 - 15 / 2: 25.67 25.69 25.70 25.68 25.63 - 25 / 3: 25.51 25.53 25.54 25.53 25.48 - 35 / 4: 25.35 25.36 25.36 25.34 25.29 - 45 / 5: 25.16 25.15 25.12 25.07 25.02 - ---- L:2 T: 23-AUG-1982 14:00 - 5 / 1: 25.98 25.97 25.94 25.89 25.83 - 15 / 2: 25.87 25.86 25.83 25.78 25.72 - 25 / 3: 25.70 25.71 25.68 25.63 25.57 - 35 / 4: 25.55 25.55 25.52 25.46 25.40 - 45 / 5: 25.36 25.34 25.29 25.22 25.16 - ---- L:3 T: 29-AUG-1982 16:00 - 5 / 1: 26.18 26.13 26.07 26.01 25.97 - 15 / 2: 26.08 26.03 25.97 25.91 25.87 - 25 / 3: 25.93 25.89 25.82 25.75 25.69 - 35 / 4: 25.79 25.76 25.68 25.60 25.54 - 45 / 5: 25.60 25.56 25.49 25.41 25.35 - ---- L:4 T: 04-SEP-1982 18:00 - 5 / 1: 26.39 26.31 26.24 26.18 26.15 - 15 / 2: 26.31 26.22 26.14 26.09 26.05 - 25 / 3: 26.16 26.09 25.98 25.90 25.85 - 35 / 4: 26.04 25.98 25.87 25.78 25.72 - 45 / 5: 25.83 25.79 25.70 25.62 25.55 - ---- L:5 T: 10-SEP-1982 20:00 - 5 / 1: 26.62 26.55 26.47 26.40 26.36 - 15 / 2: 26.53 26.46 26.38 26.31 26.27 - 25 / 3: 26.36 26.31 26.19 26.08 26.03 - 35 / 4: 26.25 26.21 26.09 25.98 25.92 - 45 / 5: 26.04 26.01 25.93 25.84 25.77 - -DELETE TEMP M: 26 dset: 1 I: 101 105 J: 1 5 K: 1 5 L: 46 46 -LIST/@IPT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 50 K: 1 5 L: 1 5 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 by 5 points (LATITUDE-DEPTH (m)-TIME) - LONGITUDE: 129.5W - 0.17N 0.5N 0.83N 1.17N 1.5N - 46 47 48 49 50 - ---- L:1 T: 17-AUG-1982 12:00 - 5 / 1: 25.78 25.90 26.04 26.22 26.42 - 15 / 2: 25.67 25.80 25.96 26.14 26.36 - 25 / 3: 25.51 25.68 25.90 26.12 26.35 - 35 / 4: 25.35 25.58 25.86 26.11 26.35 - 45 / 5: 25.16 25.41 25.77 26.10 26.35 - ---- L:2 T: 23-AUG-1982 14:00 - 5 / 1: 25.98 26.10 26.26 26.44 26.65 - 15 / 2: 25.87 26.01 26.18 26.38 26.59 - 25 / 3: 25.70 25.91 26.14 26.36 26.59 - 35 / 4: 25.55 25.82 26.11 26.36 26.59 - 45 / 5: 25.36 25.64 26.02 26.36 26.59 - ---- L:3 T: 29-AUG-1982 16:00 - 5 / 1: 26.18 26.30 26.46 26.65 26.86 - 15 / 2: 26.08 26.22 26.40 26.60 26.82 - 25 / 3: 25.93 26.15 26.38 26.59 26.81 - 35 / 4: 25.79 26.08 26.37 26.59 26.81 - 45 / 5: 25.60 25.90 26.29 26.59 26.81 - ---- L:4 T: 04-SEP-1982 18:00 - 5 / 1: 26.39 26.51 26.67 26.85 27.05 - 15 / 2: 26.31 26.44 26.61 26.81 27.00 - 25 / 3: 26.16 26.38 26.60 26.80 26.99 - 35 / 4: 26.04 26.33 26.59 26.80 26.99 - 45 / 5: 25.83 26.14 26.52 26.80 26.99 - ---- L:5 T: 10-SEP-1982 20:00 - 5 / 1: 26.62 26.72 26.87 27.03 27.17 - 15 / 2: 26.53 26.65 26.81 26.97 27.11 - 25 / 3: 26.36 26.59 26.78 26.95 27.09 - 35 / 4: 26.25 26.53 26.78 26.95 27.09 - 45 / 5: 26.04 26.32 26.68 26.95 27.09 - -DELETE TEMP M: 26 dset: 1 I: 46 50 J: 1 5 K: 1 5 L: 101 101 - -! 4D region -LOAD - eval EX#1 C: 4 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - found TEMP M: 28 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 -SET MODE/LAST DIAGNOSTIC - -! ******** disk-resident file variable ************ -USE gt4d011 -CANCEL MEMORY/ALL -SET MODE DIAGNOSTIC -DEFINE REGION/I=101 IPT -DEFINE REGION/J=46 JPT -DEFINE REGION/K=1 KPT -DEFINE REGION/L=1 LPT -DEFINE REGION/I=101:105/J=46:50/K=1:5/L=1:5 R4D -SET REG R4D -SET EXPRESSION temp -GO bn_geometry.sub -! BN200_GEOMETRY.SUB -! list the variable vtest on variuos geometries - -! this routine assumes that a 4-D region and an expression are already set - -! lines of data -LIST/@JPT/@KPT/@LPT/ORDER=X - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DT2 PSXT PSYT PSZT TIME1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 46 K: 1 1 L: 1 1 - reading TEMP M: 28 dset: 1 I: 101 105 J: 46 46 K: 1 1 L: 1 1 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 0.167N - DEPTH (m): 5 - TIME : 17-AUG-1982 12:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 25.78 25.80 25.82 25.80 25.74 -LIST/@IPT/@KPT/@LPT/ORDER=Y - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 50 K: 1 1 L: 1 1 - reading TEMP M: 26 dset: 1 I: 101 101 J: 46 50 K: 1 1 L: 1 1 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 points (LATITUDE) - LONGITUDE: 129.5W - DEPTH (m): 5 - TIME : 17-AUG-1982 12:00 - 0.17N 0.5N 0.83N 1.17N 1.5N - 46 47 48 49 50 - 25.78 25.90 26.04 26.22 26.42 -LIST/@IPT/@JPT/@LPT/ORDER=Z - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 46 K: 1 5 L: 1 1 - reading TEMP M: 24 dset: 1 I: 101 101 J: 46 46 K: 1 5 L: 1 1 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 points (DEPTH (m)) - LONGITUDE: 129.5W - LATITUDE : 0.167N - TIME : 17-AUG-1982 12:00 - 5 15 25 35 45 - 1 2 3 4 5 - 25.78 25.67 25.51 25.35 25.16 -LIST/@IPT/@JPT/@KPT/ORDER=T - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 46 K: 1 1 L: 1 5 - reading TEMP M: 22 dset: 1 I: 101 101 J: 46 46 K: 1 1 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 points (TIME) - LONGITUDE: 129.5W - LATITUDE : 0.167N - DEPTH (m): 5 - 1982 1982 1982 1982 1982 - 1 2 3 4 5 - 25.78 25.98 26.18 26.39 26.62 - -! planes of data -LIST/@KPT/@LPT !XY - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 50 K: 1 1 L: 1 1 - reading TEMP M: 20 dset: 1 I: 101 105 J: 46 50 K: 1 1 L: 1 1 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 17-AUG-1982 12:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 1.5N / 50: 26.42 26.46 26.50 26.51 26.48 - 1.17N / 49: 26.22 26.27 26.30 26.30 26.26 - 0.83N / 48: 26.04 26.10 26.13 26.11 26.06 - 0.5N / 47: 25.90 25.94 25.96 25.94 25.89 - 0.17N / 46: 25.78 25.80 25.82 25.80 25.74 -LIST/@JPT/@LPT !XZ - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 46 K: 1 5 L: 1 1 - reading TEMP M: 17 dset: 1 I: 101 105 J: 46 46 K: 1 5 L: 1 1 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LONGITUDE-DEPTH (m)) - LATITUDE : 0.167N - TIME : 17-AUG-1982 12:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 5 / 1: 25.78 25.80 25.82 25.80 25.74 - 15 / 2: 25.67 25.69 25.70 25.68 25.63 - 25 / 3: 25.51 25.53 25.54 25.53 25.48 - 35 / 4: 25.35 25.36 25.36 25.34 25.29 - 45 / 5: 25.16 25.15 25.12 25.07 25.02 -LIST/@JPT/@KPT !XT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 46 K: 1 1 L: 1 5 - reading TEMP M: 16 dset: 1 I: 101 105 J: 46 46 K: 1 1 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LONGITUDE-TIME) - LATITUDE : 0.167N - DEPTH (m): 5 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 17-AUG-1982 12 / 1: 25.78 25.80 25.82 25.80 25.74 - 23-AUG-1982 14 / 2: 25.98 25.97 25.94 25.89 25.83 - 29-AUG-1982 16 / 3: 26.18 26.13 26.07 26.01 25.97 - 04-SEP-1982 18 / 4: 26.39 26.31 26.24 26.18 26.15 - 10-SEP-1982 20 / 5: 26.62 26.55 26.47 26.40 26.36 -LIST/@IPT/@LPT !YZ - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 50 K: 1 5 L: 1 1 - reading TEMP M: 14 dset: 1 I: 101 101 J: 46 50 K: 1 5 L: 1 1 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LATITUDE-DEPTH (m)) - LONGITUDE: 129.5W - TIME : 17-AUG-1982 12:00 - 0.17N 0.5N 0.83N 1.17N 1.5N - 46 47 48 49 50 - 5 / 1: 25.78 25.90 26.04 26.22 26.42 - 15 / 2: 25.67 25.80 25.96 26.14 26.36 - 25 / 3: 25.51 25.68 25.90 26.12 26.35 - 35 / 4: 25.35 25.58 25.86 26.11 26.35 - 45 / 5: 25.16 25.41 25.77 26.10 26.35 -LIST/@IPT/@KPT !YT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 50 K: 1 1 L: 1 5 - reading TEMP M: 12 dset: 1 I: 101 101 J: 46 50 K: 1 1 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (LATITUDE-TIME) - LONGITUDE: 129.5W - DEPTH (m): 5 - 0.17N 0.5N 0.83N 1.17N 1.5N - 46 47 48 49 50 - 17-AUG-1982 12 / 1: 25.78 25.90 26.04 26.22 26.42 - 23-AUG-1982 14 / 2: 25.98 26.10 26.26 26.44 26.65 - 29-AUG-1982 16 / 3: 26.18 26.30 26.46 26.65 26.86 - 04-SEP-1982 18 / 4: 26.39 26.51 26.67 26.85 27.05 - 10-SEP-1982 20 / 5: 26.62 26.72 26.87 27.03 27.17 -LIST/@IPT/@JPT !ZT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 46 K: 1 5 L: 1 5 - reading TEMP M: 10 dset: 1 I: 101 101 J: 46 46 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 points (DEPTH (m)-TIME) - LONGITUDE: 129.5W - LATITUDE : 0.167N - 5 15 25 35 45 - 1 2 3 4 5 - 17-AUG-1982 12 / 1: 25.78 25.67 25.51 25.35 25.16 - 23-AUG-1982 14 / 2: 25.98 25.87 25.70 25.55 25.36 - 29-AUG-1982 16 / 3: 26.18 26.08 25.93 25.79 25.60 - 04-SEP-1982 18 / 4: 26.39 26.31 26.16 26.04 25.83 - 10-SEP-1982 20 / 5: 26.62 26.53 26.36 26.25 26.04 - -! cubes of data -LIST/@LPT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 1 - reading TEMP M: 8 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 1 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 by 5 points (LONGITUDE-LATITUDE-DEPTH (m)) - TIME : 17-AUG-1982 12:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - ---- K:1 Z: 5 - 1.5N / 50: 26.42 26.46 26.50 26.51 26.48 - 1.17N / 49: 26.22 26.27 26.30 26.30 26.26 - 0.83N / 48: 26.04 26.10 26.13 26.11 26.06 - 0.5N / 47: 25.90 25.94 25.96 25.94 25.89 - 0.17N / 46: 25.78 25.80 25.82 25.80 25.74 - ---- K:2 Z: 15 - 1.5N / 50: 26.36 26.39 26.43 26.45 26.42 - 1.17N / 49: 26.14 26.19 26.23 26.23 26.19 - 0.83N / 48: 25.96 26.01 26.04 26.03 25.98 - 0.5N / 47: 25.80 25.84 25.87 25.85 25.79 - 0.17N / 46: 25.67 25.69 25.70 25.68 25.63 - ---- K:3 Z: 25 - 1.5N / 50: 26.35 26.38 26.42 26.44 26.41 - 1.17N / 49: 26.12 26.17 26.21 26.22 26.18 - 0.83N / 48: 25.90 25.95 25.99 25.99 25.94 - 0.5N / 47: 25.68 25.73 25.76 25.75 25.70 - 0.17N / 46: 25.51 25.53 25.54 25.53 25.48 - ---- K:4 Z: 35 - 1.5N / 50: 26.35 26.38 26.42 26.44 26.42 - 1.17N / 49: 26.11 26.16 26.21 26.22 26.18 - 0.83N / 48: 25.86 25.91 25.95 25.95 25.90 - 0.5N / 47: 25.58 25.62 25.64 25.63 25.58 - 0.17N / 46: 25.35 25.36 25.36 25.34 25.29 - ---- K:5 Z: 45 - 1.5N / 50: 26.35 26.38 26.42 26.44 26.42 - 1.17N / 49: 26.10 26.15 26.19 26.20 26.16 - 0.83N / 48: 25.77 25.81 25.82 25.81 25.76 - 0.5N / 47: 25.41 25.43 25.41 25.38 25.32 - 0.17N / 46: 25.16 25.15 25.12 25.07 25.02 -LIST/@KPT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 50 K: 1 1 L: 1 5 - reading TEMP M: 7 dset: 1 I: 101 105 J: 46 50 K: 1 1 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 by 5 points (LONGITUDE-LATITUDE-TIME) - DEPTH (m): 5 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - ---- L:1 T: 17-AUG-1982 12:00 - 1.5N / 50: 26.42 26.46 26.50 26.51 26.48 - 1.17N / 49: 26.22 26.27 26.30 26.30 26.26 - 0.83N / 48: 26.04 26.10 26.13 26.11 26.06 - 0.5N / 47: 25.90 25.94 25.96 25.94 25.89 - 0.17N / 46: 25.78 25.80 25.82 25.80 25.74 - ---- L:2 T: 23-AUG-1982 14:00 - 1.5N / 50: 26.65 26.63 26.60 26.57 26.52 - 1.17N / 49: 26.44 26.42 26.40 26.35 26.29 - 0.83N / 48: 26.26 26.25 26.22 26.16 26.10 - 0.5N / 47: 26.10 26.10 26.07 26.01 25.95 - 0.17N / 46: 25.98 25.97 25.94 25.89 25.83 - ---- L:3 T: 29-AUG-1982 16:00 - 1.5N / 50: 26.86 26.78 26.70 26.64 26.60 - 1.17N / 49: 26.65 26.57 26.49 26.42 26.38 - 0.83N / 48: 26.46 26.38 26.31 26.24 26.20 - 0.5N / 47: 26.30 26.24 26.17 26.11 26.07 - 0.17N / 46: 26.18 26.13 26.07 26.01 25.97 - ---- L:4 T: 04-SEP-1982 18:00 - 1.5N / 50: 27.05 26.94 26.80 26.72 26.70 - 1.17N / 49: 26.85 26.72 26.59 26.52 26.51 - 0.83N / 48: 26.67 26.54 26.43 26.37 26.35 - 0.5N / 47: 26.51 26.41 26.32 26.26 26.23 - 0.17N / 46: 26.39 26.31 26.24 26.18 26.15 - ---- L:5 T: 10-SEP-1982 20:00 - 1.5N / 50: 27.17 27.13 26.95 26.84 26.83 - 1.17N / 49: 27.03 26.93 26.76 26.66 26.65 - 0.83N / 48: 26.87 26.75 26.62 26.54 26.52 - 0.5N / 47: 26.72 26.63 26.52 26.45 26.43 - 0.17N / 46: 26.62 26.55 26.47 26.40 26.36 -LIST/@JPT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 105 J: 46 46 K: 1 5 L: 1 5 - reading TEMP M: 5 dset: 1 I: 101 105 J: 46 46 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 by 5 points (LONGITUDE-DEPTH (m)-TIME) - LATITUDE : 0.167N - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - ---- L:1 T: 17-AUG-1982 12:00 - 5 / 1: 25.78 25.80 25.82 25.80 25.74 - 15 / 2: 25.67 25.69 25.70 25.68 25.63 - 25 / 3: 25.51 25.53 25.54 25.53 25.48 - 35 / 4: 25.35 25.36 25.36 25.34 25.29 - 45 / 5: 25.16 25.15 25.12 25.07 25.02 - ---- L:2 T: 23-AUG-1982 14:00 - 5 / 1: 25.98 25.97 25.94 25.89 25.83 - 15 / 2: 25.87 25.86 25.83 25.78 25.72 - 25 / 3: 25.70 25.71 25.68 25.63 25.57 - 35 / 4: 25.55 25.55 25.52 25.46 25.40 - 45 / 5: 25.36 25.34 25.29 25.22 25.16 - ---- L:3 T: 29-AUG-1982 16:00 - 5 / 1: 26.18 26.13 26.07 26.01 25.97 - 15 / 2: 26.08 26.03 25.97 25.91 25.87 - 25 / 3: 25.93 25.89 25.82 25.75 25.69 - 35 / 4: 25.79 25.76 25.68 25.60 25.54 - 45 / 5: 25.60 25.56 25.49 25.41 25.35 - ---- L:4 T: 04-SEP-1982 18:00 - 5 / 1: 26.39 26.31 26.24 26.18 26.15 - 15 / 2: 26.31 26.22 26.14 26.09 26.05 - 25 / 3: 26.16 26.09 25.98 25.90 25.85 - 35 / 4: 26.04 25.98 25.87 25.78 25.72 - 45 / 5: 25.83 25.79 25.70 25.62 25.55 - ---- L:5 T: 10-SEP-1982 20:00 - 5 / 1: 26.62 26.55 26.47 26.40 26.36 - 15 / 2: 26.53 26.46 26.38 26.31 26.27 - 25 / 3: 26.36 26.31 26.19 26.08 26.03 - 35 / 4: 26.25 26.21 26.09 25.98 25.92 - 45 / 5: 26.04 26.01 25.93 25.84 25.77 -LIST/@IPT - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 101 101 J: 46 50 K: 1 5 L: 1 5 - reading TEMP M: 3 dset: 1 I: 101 101 J: 46 50 K: 1 5 L: 1 5 - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 by 5 by 5 points (LATITUDE-DEPTH (m)-TIME) - LONGITUDE: 129.5W - 0.17N 0.5N 0.83N 1.17N 1.5N - 46 47 48 49 50 - ---- L:1 T: 17-AUG-1982 12:00 - 5 / 1: 25.78 25.90 26.04 26.22 26.42 - 15 / 2: 25.67 25.80 25.96 26.14 26.36 - 25 / 3: 25.51 25.68 25.90 26.12 26.35 - 35 / 4: 25.35 25.58 25.86 26.11 26.35 - 45 / 5: 25.16 25.41 25.77 26.10 26.35 - ---- L:2 T: 23-AUG-1982 14:00 - 5 / 1: 25.98 26.10 26.26 26.44 26.65 - 15 / 2: 25.87 26.01 26.18 26.38 26.59 - 25 / 3: 25.70 25.91 26.14 26.36 26.59 - 35 / 4: 25.55 25.82 26.11 26.36 26.59 - 45 / 5: 25.36 25.64 26.02 26.36 26.59 - ---- L:3 T: 29-AUG-1982 16:00 - 5 / 1: 26.18 26.30 26.46 26.65 26.86 - 15 / 2: 26.08 26.22 26.40 26.60 26.82 - 25 / 3: 25.93 26.15 26.38 26.59 26.81 - 35 / 4: 25.79 26.08 26.37 26.59 26.81 - 45 / 5: 25.60 25.90 26.29 26.59 26.81 - ---- L:4 T: 04-SEP-1982 18:00 - 5 / 1: 26.39 26.51 26.67 26.85 27.05 - 15 / 2: 26.31 26.44 26.61 26.81 27.00 - 25 / 3: 26.16 26.38 26.60 26.80 26.99 - 35 / 4: 26.04 26.33 26.59 26.80 26.99 - 45 / 5: 25.83 26.14 26.52 26.80 26.99 - ---- L:5 T: 10-SEP-1982 20:00 - 5 / 1: 26.62 26.72 26.87 27.03 27.17 - 15 / 2: 26.53 26.65 26.81 26.97 27.11 - 25 / 3: 26.36 26.59 26.78 26.95 27.09 - 35 / 4: 26.25 26.53 26.78 26.95 27.09 - 45 / 5: 26.04 26.32 26.68 26.95 27.09 - -! 4D region -LOAD - eval EX#1 C: 4 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 - reading TEMP M: 2 dset: 1 I: 101 105 J: 46 50 K: 1 5 L: 1 5 -SET MODE/LAST DIAGNOSTIC - -! ******** diagnostic variable ************ -! *3/99* *kob* comment out look at qady variable - no longer important -!USE gt160w011 -!DEFINE REGION/I=70 IPT -!DEFINE REGION/J=50 JPT -!DEFINE REGION/K=1 KPT -!DEFINE REGION/L=1 LPT -!DEFINE REGION/I=70:72/J=46:50/K=1:5/L=1:3 R4D -!SET REG R4D -!SET EXPRESSION qady -!GO bn_geometry.sub - -! generate error through non-comformable limits -SET MODE IGNORE_ERRORS -LIST X[I=1:5] - X[I=6:9] -SET MODE/LAST IGNORE_ERRORS - - - -set mode ignore ! needed for AIX 11/94 -GO bn_reset bn_output -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_output -GO bn_output -! bn200_output.JNL -! - test various output methods in FERRET -! rev 0.0 4/27/90 *sh* -! 4/17 *acm* LIST/CLOBBER files (these are removed by run_all too) - -LET v = 1000*i + 100*j + 10*k + l -SET REGION/I=1:2/J=3:4/K=5:6/L=7:8 -SET EXPRESSION v -LOAD - -! ------------------------------------------ -! single variable list -GO bn_output.sub -! BN200_OUTPUT.SUB -! - test various output order permutations FERRET -! rev 0.0 9/18/90 *sh* - -! test permutations on output -! ------ 4D region -SET REGION/I=1:2/J=3:4/K=5:6/L=7:8 -LIST/ORDER=XYZT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:7 T: 7 - ---- K:5 Z: 5 - 3 / 3: 1357. 2357. - 4 / 4: 1457. 2457. - ---- K:6 Z: 6 - 3 / 3: 1367. 2367. - 4 / 4: 1467. 2467. - ---- L:8 T: 8 - ---- K:5 Z: 5 - 3 / 3: 1358. 2358. - 4 / 4: 1458. 2458. - ---- K:6 Z: 6 - 3 / 3: 1368. 2368. - 4 / 4: 1468. 2468. -LIST/ORDER=XYTZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (X-Y-T-Z) - 1 2 - 1 2 - ---- K:5 Z: 5 - ---- L:7 T: 7 - 3 / 3: 1357. 2357. - 4 / 4: 1457. 2457. - ---- L:8 T: 8 - 3 / 3: 1358. 2358. - 4 / 4: 1458. 2458. - ---- K:6 Z: 6 - ---- L:7 T: 7 - 3 / 3: 1367. 2367. - 4 / 4: 1467. 2467. - ---- L:8 T: 8 - 3 / 3: 1368. 2368. - 4 / 4: 1468. 2468. -LIST/ORDER=XZYT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (X-Z-Y-T) - 1 2 - 1 2 - ---- L:7 T: 7 - ---- J:3 Y: 3 - 5 / 5: 1357. 2357. - 6 / 6: 1367. 2367. - ---- J:4 Y: 4 - 5 / 5: 1457. 2457. - 6 / 6: 1467. 2467. - ---- L:8 T: 8 - ---- J:3 Y: 3 - 5 / 5: 1358. 2358. - 6 / 6: 1368. 2368. - ---- J:4 Y: 4 - 5 / 5: 1458. 2458. - 6 / 6: 1468. 2468. -LIST/ORDER=XZTY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (X-Z-T-Y) - 1 2 - 1 2 - ---- J:3 Y: 3 - ---- L:7 T: 7 - 5 / 5: 1357. 2357. - 6 / 6: 1367. 2367. - ---- L:8 T: 8 - 5 / 5: 1358. 2358. - 6 / 6: 1368. 2368. - ---- J:4 Y: 4 - ---- L:7 T: 7 - 5 / 5: 1457. 2457. - 6 / 6: 1467. 2467. - ---- L:8 T: 8 - 5 / 5: 1458. 2458. - 6 / 6: 1468. 2468. -LIST/ORDER=XTYZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (X-T-Y-Z) - 1 2 - 1 2 - ---- K:5 Z: 5 - ---- J:3 Y: 3 - 7 / 7: 1357. 2357. - 8 / 8: 1358. 2358. - ---- J:4 Y: 4 - 7 / 7: 1457. 2457. - 8 / 8: 1458. 2458. - ---- K:6 Z: 6 - ---- J:3 Y: 3 - 7 / 7: 1367. 2367. - 8 / 8: 1368. 2368. - ---- J:4 Y: 4 - 7 / 7: 1467. 2467. - 8 / 8: 1468. 2468. -LIST/ORDER=XTZY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (X-T-Z-Y) - 1 2 - 1 2 - ---- J:3 Y: 3 - ---- K:5 Z: 5 - 7 / 7: 1357. 2357. - 8 / 8: 1358. 2358. - ---- K:6 Z: 6 - 7 / 7: 1367. 2367. - 8 / 8: 1368. 2368. - ---- J:4 Y: 4 - ---- K:5 Z: 5 - 7 / 7: 1457. 2457. - 8 / 8: 1458. 2458. - ---- K:6 Z: 6 - 7 / 7: 1467. 2467. - 8 / 8: 1468. 2468. -LIST/ORDER=YXZT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (Y-X-Z-T) - 3 4 - 3 4 - ---- L:7 T: 7 - ---- K:5 Z: 5 - 1 / 1: 1357. 1457. - 2 / 2: 2357. 2457. - ---- K:6 Z: 6 - 1 / 1: 1367. 1467. - 2 / 2: 2367. 2467. - ---- L:8 T: 8 - ---- K:5 Z: 5 - 1 / 1: 1358. 1458. - 2 / 2: 2358. 2458. - ---- K:6 Z: 6 - 1 / 1: 1368. 1468. - 2 / 2: 2368. 2468. -LIST/ORDER=YXTZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (Y-X-T-Z) - 3 4 - 3 4 - ---- K:5 Z: 5 - ---- L:7 T: 7 - 1 / 1: 1357. 1457. - 2 / 2: 2357. 2457. - ---- L:8 T: 8 - 1 / 1: 1358. 1458. - 2 / 2: 2358. 2458. - ---- K:6 Z: 6 - ---- L:7 T: 7 - 1 / 1: 1367. 1467. - 2 / 2: 2367. 2467. - ---- L:8 T: 8 - 1 / 1: 1368. 1468. - 2 / 2: 2368. 2468. -LIST/ORDER=YZXT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (Y-Z-X-T) - 3 4 - 3 4 - ---- L:7 T: 7 - ---- I:1 X: 1 - 5 / 5: 1357. 1457. - 6 / 6: 1367. 1467. - ---- I:2 X: 2 - 5 / 5: 2357. 2457. - 6 / 6: 2367. 2467. - ---- L:8 T: 8 - ---- I:1 X: 1 - 5 / 5: 1358. 1458. - 6 / 6: 1368. 1468. - ---- I:2 X: 2 - 5 / 5: 2358. 2458. - 6 / 6: 2368. 2468. -LIST/ORDER=YZTX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (Y-Z-T-X) - 3 4 - 3 4 - ---- I:1 X: 1 - ---- L:7 T: 7 - 5 / 5: 1357. 1457. - 6 / 6: 1367. 1467. - ---- L:8 T: 8 - 5 / 5: 1358. 1458. - 6 / 6: 1368. 1468. - ---- I:2 X: 2 - ---- L:7 T: 7 - 5 / 5: 2357. 2457. - 6 / 6: 2367. 2467. - ---- L:8 T: 8 - 5 / 5: 2358. 2458. - 6 / 6: 2368. 2468. -LIST/ORDER=YTXZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (Y-T-X-Z) - 3 4 - 3 4 - ---- K:5 Z: 5 - ---- I:1 X: 1 - 7 / 7: 1357. 1457. - 8 / 8: 1358. 1458. - ---- I:2 X: 2 - 7 / 7: 2357. 2457. - 8 / 8: 2358. 2458. - ---- K:6 Z: 6 - ---- I:1 X: 1 - 7 / 7: 1367. 1467. - 8 / 8: 1368. 1468. - ---- I:2 X: 2 - 7 / 7: 2367. 2467. - 8 / 8: 2368. 2468. -LIST/ORDER=YTZX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (Y-T-Z-X) - 3 4 - 3 4 - ---- I:1 X: 1 - ---- K:5 Z: 5 - 7 / 7: 1357. 1457. - 8 / 8: 1358. 1458. - ---- K:6 Z: 6 - 7 / 7: 1367. 1467. - 8 / 8: 1368. 1468. - ---- I:2 X: 2 - ---- K:5 Z: 5 - 7 / 7: 2357. 2457. - 8 / 8: 2358. 2458. - ---- K:6 Z: 6 - 7 / 7: 2367. 2467. - 8 / 8: 2368. 2468. -LIST/ORDER=ZXYT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (Z-X-Y-T) - 5 6 - 5 6 - ---- L:7 T: 7 - ---- J:3 Y: 3 - 1 / 1: 1357. 1367. - 2 / 2: 2357. 2367. - ---- J:4 Y: 4 - 1 / 1: 1457. 1467. - 2 / 2: 2457. 2467. - ---- L:8 T: 8 - ---- J:3 Y: 3 - 1 / 1: 1358. 1368. - 2 / 2: 2358. 2368. - ---- J:4 Y: 4 - 1 / 1: 1458. 1468. - 2 / 2: 2458. 2468. -LIST/ORDER=ZXTY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (Z-X-T-Y) - 5 6 - 5 6 - ---- J:3 Y: 3 - ---- L:7 T: 7 - 1 / 1: 1357. 1367. - 2 / 2: 2357. 2367. - ---- L:8 T: 8 - 1 / 1: 1358. 1368. - 2 / 2: 2358. 2368. - ---- J:4 Y: 4 - ---- L:7 T: 7 - 1 / 1: 1457. 1467. - 2 / 2: 2457. 2467. - ---- L:8 T: 8 - 1 / 1: 1458. 1468. - 2 / 2: 2458. 2468. -LIST/ORDER=ZYXT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (Z-Y-X-T) - 5 6 - 5 6 - ---- L:7 T: 7 - ---- I:1 X: 1 - 3 / 3: 1357. 1367. - 4 / 4: 1457. 1467. - ---- I:2 X: 2 - 3 / 3: 2357. 2367. - 4 / 4: 2457. 2467. - ---- L:8 T: 8 - ---- I:1 X: 1 - 3 / 3: 1358. 1368. - 4 / 4: 1458. 1468. - ---- I:2 X: 2 - 3 / 3: 2358. 2368. - 4 / 4: 2458. 2468. -LIST/ORDER=ZYTX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (Z-Y-T-X) - 5 6 - 5 6 - ---- I:1 X: 1 - ---- L:7 T: 7 - 3 / 3: 1357. 1367. - 4 / 4: 1457. 1467. - ---- L:8 T: 8 - 3 / 3: 1358. 1368. - 4 / 4: 1458. 1468. - ---- I:2 X: 2 - ---- L:7 T: 7 - 3 / 3: 2357. 2367. - 4 / 4: 2457. 2467. - ---- L:8 T: 8 - 3 / 3: 2358. 2368. - 4 / 4: 2458. 2468. -LIST/ORDER=ZTXY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (Z-T-X-Y) - 5 6 - 5 6 - ---- J:3 Y: 3 - ---- I:1 X: 1 - 7 / 7: 1357. 1367. - 8 / 8: 1358. 1368. - ---- I:2 X: 2 - 7 / 7: 2357. 2367. - 8 / 8: 2358. 2368. - ---- J:4 Y: 4 - ---- I:1 X: 1 - 7 / 7: 1457. 1467. - 8 / 8: 1458. 1468. - ---- I:2 X: 2 - 7 / 7: 2457. 2467. - 8 / 8: 2458. 2468. -LIST/ORDER=ZTYX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (Z-T-Y-X) - 5 6 - 5 6 - ---- I:1 X: 1 - ---- J:3 Y: 3 - 7 / 7: 1357. 1367. - 8 / 8: 1358. 1368. - ---- J:4 Y: 4 - 7 / 7: 1457. 1467. - 8 / 8: 1458. 1468. - ---- I:2 X: 2 - ---- J:3 Y: 3 - 7 / 7: 2357. 2367. - 8 / 8: 2358. 2368. - ---- J:4 Y: 4 - 7 / 7: 2457. 2467. - 8 / 8: 2458. 2468. -LIST/ORDER=TXYZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (T-X-Y-Z) - 7 8 - 7 8 - ---- K:5 Z: 5 - ---- J:3 Y: 3 - 1 / 1: 1357. 1358. - 2 / 2: 2357. 2358. - ---- J:4 Y: 4 - 1 / 1: 1457. 1458. - 2 / 2: 2457. 2458. - ---- K:6 Z: 6 - ---- J:3 Y: 3 - 1 / 1: 1367. 1368. - 2 / 2: 2367. 2368. - ---- J:4 Y: 4 - 1 / 1: 1467. 1468. - 2 / 2: 2467. 2468. -LIST/ORDER=TXZY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (T-X-Z-Y) - 7 8 - 7 8 - ---- J:3 Y: 3 - ---- K:5 Z: 5 - 1 / 1: 1357. 1358. - 2 / 2: 2357. 2358. - ---- K:6 Z: 6 - 1 / 1: 1367. 1368. - 2 / 2: 2367. 2368. - ---- J:4 Y: 4 - ---- K:5 Z: 5 - 1 / 1: 1457. 1458. - 2 / 2: 2457. 2458. - ---- K:6 Z: 6 - 1 / 1: 1467. 1468. - 2 / 2: 2467. 2468. -LIST/ORDER=TYXZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (T-Y-X-Z) - 7 8 - 7 8 - ---- K:5 Z: 5 - ---- I:1 X: 1 - 3 / 3: 1357. 1358. - 4 / 4: 1457. 1458. - ---- I:2 X: 2 - 3 / 3: 2357. 2358. - 4 / 4: 2457. 2458. - ---- K:6 Z: 6 - ---- I:1 X: 1 - 3 / 3: 1367. 1368. - 4 / 4: 1467. 1468. - ---- I:2 X: 2 - 3 / 3: 2367. 2368. - 4 / 4: 2467. 2468. -LIST/ORDER=TYZX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (T-Y-Z-X) - 7 8 - 7 8 - ---- I:1 X: 1 - ---- K:5 Z: 5 - 3 / 3: 1357. 1358. - 4 / 4: 1457. 1458. - ---- K:6 Z: 6 - 3 / 3: 1367. 1368. - 4 / 4: 1467. 1468. - ---- I:2 X: 2 - ---- K:5 Z: 5 - 3 / 3: 2357. 2358. - 4 / 4: 2457. 2458. - ---- K:6 Z: 6 - 3 / 3: 2367. 2368. - 4 / 4: 2467. 2468. -LIST/ORDER=TZXY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (T-Z-X-Y) - 7 8 - 7 8 - ---- J:3 Y: 3 - ---- I:1 X: 1 - 5 / 5: 1357. 1358. - 6 / 6: 1367. 1368. - ---- I:2 X: 2 - 5 / 5: 2357. 2358. - 6 / 6: 2367. 2368. - ---- J:4 Y: 4 - ---- I:1 X: 1 - 5 / 5: 1457. 1458. - 6 / 6: 1467. 1468. - ---- I:2 X: 2 - 5 / 5: 2457. 2458. - 6 / 6: 2467. 2468. -LIST/ORDER=TZYX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 by 2 points (T-Z-Y-X) - 7 8 - 7 8 - ---- I:1 X: 1 - ---- J:3 Y: 3 - 5 / 5: 1357. 1358. - 6 / 6: 1367. 1368. - ---- J:4 Y: 4 - 5 / 5: 1457. 1458. - 6 / 6: 1467. 1468. - ---- I:2 X: 2 - ---- J:3 Y: 3 - 5 / 5: 2357. 2358. - 6 / 6: 2367. 2368. - ---- J:4 Y: 4 - 5 / 5: 2457. 2458. - 6 / 6: 2467. 2468. - -! ------ 3D regions -SET REGION/I=1/J=3:4/K=5:6/L=7:8 -LIST/ORDER=YZT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (Y-Z-T) - X : 1 - 3 4 - 3 4 - ---- L:7 T: 7 - 5 / 5: 1357. 1457. - 6 / 6: 1367. 1467. - ---- L:8 T: 8 - 5 / 5: 1358. 1458. - 6 / 6: 1368. 1468. -LIST/ORDER=YTZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (Y-T-Z) - X : 1 - 3 4 - 3 4 - ---- K:5 Z: 5 - 7 / 7: 1357. 1457. - 8 / 8: 1358. 1458. - ---- K:6 Z: 6 - 7 / 7: 1367. 1467. - 8 / 8: 1368. 1468. -LIST/ORDER=ZYT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (Z-Y-T) - X : 1 - 5 6 - 5 6 - ---- L:7 T: 7 - 3 / 3: 1357. 1367. - 4 / 4: 1457. 1467. - ---- L:8 T: 8 - 3 / 3: 1358. 1368. - 4 / 4: 1458. 1468. -LIST/ORDER=ZTY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (Z-T-Y) - X : 1 - 5 6 - 5 6 - ---- J:3 Y: 3 - 7 / 7: 1357. 1367. - 8 / 8: 1358. 1368. - ---- J:4 Y: 4 - 7 / 7: 1457. 1467. - 8 / 8: 1458. 1468. -LIST/ORDER=TYZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (T-Y-Z) - X : 1 - 7 8 - 7 8 - ---- K:5 Z: 5 - 3 / 3: 1357. 1358. - 4 / 4: 1457. 1458. - ---- K:6 Z: 6 - 3 / 3: 1367. 1368. - 4 / 4: 1467. 1468. -LIST/ORDER=TZY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (T-Z-Y) - X : 1 - 7 8 - 7 8 - ---- J:3 Y: 3 - 5 / 5: 1357. 1358. - 6 / 6: 1367. 1368. - ---- J:4 Y: 4 - 5 / 5: 1457. 1458. - 6 / 6: 1467. 1468. - -SET REGION/I=1:2/J=3/K=5:6/L=7:8 -LIST/ORDER=XZT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (X-Z-T) - Y : 3 - 1 2 - 1 2 - ---- L:7 T: 7 - 5 / 5: 1357. 2357. - 6 / 6: 1367. 2367. - ---- L:8 T: 8 - 5 / 5: 1358. 2358. - 6 / 6: 1368. 2368. -LIST/ORDER=XTZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (X-T-Z) - Y : 3 - 1 2 - 1 2 - ---- K:5 Z: 5 - 7 / 7: 1357. 2357. - 8 / 8: 1358. 2358. - ---- K:6 Z: 6 - 7 / 7: 1367. 2367. - 8 / 8: 1368. 2368. -LIST/ORDER=ZXT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (Z-X-T) - Y : 3 - 5 6 - 5 6 - ---- L:7 T: 7 - 1 / 1: 1357. 1367. - 2 / 2: 2357. 2367. - ---- L:8 T: 8 - 1 / 1: 1358. 1368. - 2 / 2: 2358. 2368. -LIST/ORDER=ZTX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (Z-T-X) - Y : 3 - 5 6 - 5 6 - ---- I:1 X: 1 - 7 / 7: 1357. 1367. - 8 / 8: 1358. 1368. - ---- I:2 X: 2 - 7 / 7: 2357. 2367. - 8 / 8: 2358. 2368. -LIST/ORDER=TXZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (T-X-Z) - Y : 3 - 7 8 - 7 8 - ---- K:5 Z: 5 - 1 / 1: 1357. 1358. - 2 / 2: 2357. 2358. - ---- K:6 Z: 6 - 1 / 1: 1367. 1368. - 2 / 2: 2367. 2368. -LIST/ORDER=TZX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (T-Z-X) - Y : 3 - 7 8 - 7 8 - ---- I:1 X: 1 - 5 / 5: 1357. 1358. - 6 / 6: 1367. 1368. - ---- I:2 X: 2 - 5 / 5: 2357. 2358. - 6 / 6: 2367. 2368. - -SET REGION/I=1:2/J=3:4/K=5/L=7:8 -LIST/ORDER=XYT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (X-Y-T) - Z : 5 - 1 2 - 1 2 - ---- L:7 T: 7 - 3 / 3: 1357. 2357. - 4 / 4: 1457. 2457. - ---- L:8 T: 8 - 3 / 3: 1358. 2358. - 4 / 4: 1458. 2458. -LIST/ORDER=XTY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (X-T-Y) - Z : 5 - 1 2 - 1 2 - ---- J:3 Y: 3 - 7 / 7: 1357. 2357. - 8 / 8: 1358. 2358. - ---- J:4 Y: 4 - 7 / 7: 1457. 2457. - 8 / 8: 1458. 2458. -LIST/ORDER=YXT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (Y-X-T) - Z : 5 - 3 4 - 3 4 - ---- L:7 T: 7 - 1 / 1: 1357. 1457. - 2 / 2: 2357. 2457. - ---- L:8 T: 8 - 1 / 1: 1358. 1458. - 2 / 2: 2358. 2458. -LIST/ORDER=YTX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (Y-T-X) - Z : 5 - 3 4 - 3 4 - ---- I:1 X: 1 - 7 / 7: 1357. 1457. - 8 / 8: 1358. 1458. - ---- I:2 X: 2 - 7 / 7: 2357. 2457. - 8 / 8: 2358. 2458. -LIST/ORDER=TXY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (T-X-Y) - Z : 5 - 7 8 - 7 8 - ---- J:3 Y: 3 - 1 / 1: 1357. 1358. - 2 / 2: 2357. 2358. - ---- J:4 Y: 4 - 1 / 1: 1457. 1458. - 2 / 2: 2457. 2458. -LIST/ORDER=TYX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (T-Y-X) - Z : 5 - 7 8 - 7 8 - ---- I:1 X: 1 - 3 / 3: 1357. 1358. - 4 / 4: 1457. 1458. - ---- I:2 X: 2 - 3 / 3: 2357. 2358. - 4 / 4: 2457. 2458. - -SET REGION/I=1:2/J=3:4/K=5:6/L=7 -LIST/ORDER=XYZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 7 - 1 2 - 1 2 - ---- K:5 Z: 5 - 3 / 3: 1357. 2357. - 4 / 4: 1457. 2457. - ---- K:6 Z: 6 - 3 / 3: 1367. 2367. - 4 / 4: 1467. 2467. -LIST/ORDER=XZY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (X-Z-Y) - T : 7 - 1 2 - 1 2 - ---- J:3 Y: 3 - 5 / 5: 1357. 2357. - 6 / 6: 1367. 2367. - ---- J:4 Y: 4 - 5 / 5: 1457. 2457. - 6 / 6: 1467. 2467. -LIST/ORDER=YXZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (Y-X-Z) - T : 7 - 3 4 - 3 4 - ---- K:5 Z: 5 - 1 / 1: 1357. 1457. - 2 / 2: 2357. 2457. - ---- K:6 Z: 6 - 1 / 1: 1367. 1467. - 2 / 2: 2367. 2467. -LIST/ORDER=YZX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (Y-Z-X) - T : 7 - 3 4 - 3 4 - ---- I:1 X: 1 - 5 / 5: 1357. 1457. - 6 / 6: 1367. 1467. - ---- I:2 X: 2 - 5 / 5: 2357. 2457. - 6 / 6: 2367. 2467. -LIST/ORDER=ZXY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (Z-X-Y) - T : 7 - 5 6 - 5 6 - ---- J:3 Y: 3 - 1 / 1: 1357. 1367. - 2 / 2: 2357. 2367. - ---- J:4 Y: 4 - 1 / 1: 1457. 1467. - 2 / 2: 2457. 2467. -LIST/ORDER=ZYX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 by 2 points (Z-Y-X) - T : 7 - 5 6 - 5 6 - ---- I:1 X: 1 - 3 / 3: 1357. 1367. - 4 / 4: 1457. 1467. - ---- I:2 X: 2 - 3 / 3: 2357. 2367. - 4 / 4: 2457. 2467. - -! ------ 2D regions -SET REGION/I=1/J=3/K=5:6/L=7:8 -LIST/ORDER=ZT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 points (Z-T) - X : 1 - Y : 3 - 5 6 - 5 6 - 7 / 7: 1357. 1367. - 8 / 8: 1358. 1368. -LIST/ORDER=TZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 points (T-Z) - X : 1 - Y : 3 - 7 8 - 7 8 - 5 / 5: 1357. 1358. - 6 / 6: 1367. 1368. - -SET REGION/I=1/J=3:4/K=5/L=7:8 -LIST/ORDER=YT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 points (Y-T) - X : 1 - Z : 5 - 3 4 - 3 4 - 7 / 7: 1357. 1457. - 8 / 8: 1358. 1458. -LIST/ORDER=TY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 points (T-Y) - X : 1 - Z : 5 - 7 8 - 7 8 - 3 / 3: 1357. 1358. - 4 / 4: 1457. 1458. - -SET REGION/I=1/J=3:4/K=5:6/L=7 -LIST/ORDER=YZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 points (Y-Z) - X : 1 - T : 7 - 3 4 - 3 4 - 5 / 5: 1357. 1457. - 6 / 6: 1367. 1467. -LIST/ORDER=ZY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 points (Z-Y) - X : 1 - T : 7 - 5 6 - 5 6 - 3 / 3: 1357. 1367. - 4 / 4: 1457. 1467. - -SET REGION/I=1:2/J=3/K=5/L=7:8 -LIST/ORDER=XT - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 points (X-T) - Y : 3 - Z : 5 - 1 2 - 1 2 - 7 / 7: 1357. 2357. - 8 / 8: 1358. 2358. -LIST/ORDER=TX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 points (T-X) - Y : 3 - Z : 5 - 7 8 - 7 8 - 1 / 1: 1357. 1358. - 2 / 2: 2357. 2358. - -SET REGION/I=1:2/J=3/K=5:6/L=7 -LIST/ORDER=XZ - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 points (X-Z) - Y : 3 - T : 7 - 1 2 - 1 2 - 5 / 5: 1357. 2357. - 6 / 6: 1367. 2367. -LIST/ORDER=ZX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 points (Z-X) - Y : 3 - T : 7 - 5 6 - 5 6 - 1 / 1: 1357. 1367. - 2 / 2: 2357. 2367. - -SET REGION/I=1:2/J=3:4/K=5/L=7 -LIST/ORDER=XY - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 points (X-Y) - Z : 5 - T : 7 - 1 2 - 1 2 - 3 / 3: 1357. 2357. - 4 / 4: 1457. 2457. -LIST/ORDER=YX - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 by 2 points (Y-X) - Z : 5 - T : 7 - 3 4 - 3 4 - 1 / 1: 1357. 1457. - 2 / 2: 2357. 2457. - -! ------ 1D regions -LIST/I=1:2/J=3/K=5/L=7 - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 points (X) - Y : 3 - Z : 5 - T : 7 - 3 - 3 - 1 / 1: 1357. - 2 / 2: 2357. -LIST/I=1/J=3:4/K=5/L=7 - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 points (Y) - X : 1 - Z : 5 - T : 7 - 1 - 1 - 3 / 3: 1357. - 4 / 4: 1457. -LIST/I=1/J=3/K=5:6/L=7 - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 points (Z) - X : 1 - Y : 3 - T : 7 - 1 - 1 - 5 / 5: 1357. - 6 / 6: 1367. -LIST/I=1/J=3/K=5/L=7:8 - VARIABLE : 1000*I + 100*J + 10*K + L - SUBSET : 2 points (T) - X : 1 - Y : 3 - Z : 5 - 1 - 1 - 7 / 7: 1357. - 8 / 8: 1358. - -! multiple variable list -SET EXPRESSION v,i,j,k,l -GO bn_output.sub -! BN200_OUTPUT.SUB -! - test various output order permutations FERRET -! rev 0.0 9/18/90 *sh* - -! test permutations on output -! ------ 4D region -SET REGION/I=1:2/J=3:4/K=5:6/L=7:8 -LIST/ORDER=XYZT - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - T: 6.5 to 8.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 - ---- K:5 Z: 5 - ---- J:3 Y: 3 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1467. 1.000 4.000 6.000 7.000 -2 / 2: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- K:5 Z: 5 - ---- J:3 Y: 3 -1 / 1: 1358. 1.000 3.000 5.000 8.000 -2 / 2: 2358. 2.000 3.000 5.000 8.000 - ---- J:4 Y: 4 -1 / 1: 1458. 1.000 4.000 5.000 8.000 -2 / 2: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 -1 / 1: 1368. 1.000 3.000 6.000 8.000 -2 / 2: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 -1 / 1: 1468. 1.000 4.000 6.000 8.000 -2 / 2: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=XYTZ - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - T: 6.5 to 8.5 - Z: 4.5 to 6.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- L:7 T: 7 - ---- J:3 Y: 3 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- L:8 T: 8 - ---- J:3 Y: 3 -1 / 1: 1358. 1.000 3.000 5.000 8.000 -2 / 2: 2358. 2.000 3.000 5.000 8.000 - ---- J:4 Y: 4 -1 / 1: 1458. 1.000 4.000 5.000 8.000 -2 / 2: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- L:7 T: 7 - ---- J:3 Y: 3 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1467. 1.000 4.000 6.000 7.000 -2 / 2: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- J:3 Y: 3 -1 / 1: 1368. 1.000 3.000 6.000 8.000 -2 / 2: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 -1 / 1: 1468. 1.000 4.000 6.000 8.000 -2 / 2: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=XZYT - X: 0.5 to 2.5 - Z: 4.5 to 6.5 - Y: 2.5 to 4.5 - T: 6.5 to 8.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 - ---- J:3 Y: 3 - ---- K:5 Z: 5 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- K:6 Z: 6 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 - ---- K:5 Z: 5 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 -1 / 1: 1467. 1.000 4.000 6.000 7.000 -2 / 2: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- J:3 Y: 3 - ---- K:5 Z: 5 -1 / 1: 1358. 1.000 3.000 5.000 8.000 -2 / 2: 2358. 2.000 3.000 5.000 8.000 - ---- K:6 Z: 6 -1 / 1: 1368. 1.000 3.000 6.000 8.000 -2 / 2: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- K:5 Z: 5 -1 / 1: 1458. 1.000 4.000 5.000 8.000 -2 / 2: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 -1 / 1: 1468. 1.000 4.000 6.000 8.000 -2 / 2: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=XZTY - X: 0.5 to 2.5 - Z: 4.5 to 6.5 - T: 6.5 to 8.5 - Y: 2.5 to 4.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 - ---- L:7 T: 7 - ---- K:5 Z: 5 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- K:6 Z: 6 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- L:8 T: 8 - ---- K:5 Z: 5 -1 / 1: 1358. 1.000 3.000 5.000 8.000 -2 / 2: 2358. 2.000 3.000 5.000 8.000 - ---- K:6 Z: 6 -1 / 1: 1368. 1.000 3.000 6.000 8.000 -2 / 2: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- L:7 T: 7 - ---- K:5 Z: 5 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 -1 / 1: 1467. 1.000 4.000 6.000 7.000 -2 / 2: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- K:5 Z: 5 -1 / 1: 1458. 1.000 4.000 5.000 8.000 -2 / 2: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 -1 / 1: 1468. 1.000 4.000 6.000 8.000 -2 / 2: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=XTYZ - X: 0.5 to 2.5 - T: 6.5 to 8.5 - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- J:3 Y: 3 - ---- L:7 T: 7 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- L:8 T: 8 -1 / 1: 1358. 1.000 3.000 5.000 8.000 -2 / 2: 2358. 2.000 3.000 5.000 8.000 - ---- J:4 Y: 4 - ---- L:7 T: 7 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- L:8 T: 8 -1 / 1: 1458. 1.000 4.000 5.000 8.000 -2 / 2: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 - ---- L:7 T: 7 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- L:8 T: 8 -1 / 1: 1368. 1.000 3.000 6.000 8.000 -2 / 2: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- L:7 T: 7 -1 / 1: 1467. 1.000 4.000 6.000 7.000 -2 / 2: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 -1 / 1: 1468. 1.000 4.000 6.000 8.000 -2 / 2: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=XTZY - X: 0.5 to 2.5 - T: 6.5 to 8.5 - Z: 4.5 to 6.5 - Y: 2.5 to 4.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 - ---- K:5 Z: 5 - ---- L:7 T: 7 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- L:8 T: 8 -1 / 1: 1358. 1.000 3.000 5.000 8.000 -2 / 2: 2358. 2.000 3.000 5.000 8.000 - ---- K:6 Z: 6 - ---- L:7 T: 7 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- L:8 T: 8 -1 / 1: 1368. 1.000 3.000 6.000 8.000 -2 / 2: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- K:5 Z: 5 - ---- L:7 T: 7 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- L:8 T: 8 -1 / 1: 1458. 1.000 4.000 5.000 8.000 -2 / 2: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- L:7 T: 7 -1 / 1: 1467. 1.000 4.000 6.000 7.000 -2 / 2: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 -1 / 1: 1468. 1.000 4.000 6.000 8.000 -2 / 2: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=YXZT - Y: 2.5 to 4.5 - X: 0.5 to 2.5 - Z: 4.5 to 6.5 - T: 6.5 to 8.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 - ---- K:5 Z: 5 - ---- I:1 X: 1 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- I:2 X: 2 -3 / 3: 2357. 2.000 3.000 5.000 7.000 -4 / 4: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 - ---- I:1 X: 1 -3 / 3: 1367. 1.000 3.000 6.000 7.000 -4 / 4: 1467. 1.000 4.000 6.000 7.000 - ---- I:2 X: 2 -3 / 3: 2367. 2.000 3.000 6.000 7.000 -4 / 4: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- K:5 Z: 5 - ---- I:1 X: 1 -3 / 3: 1358. 1.000 3.000 5.000 8.000 -4 / 4: 1458. 1.000 4.000 5.000 8.000 - ---- I:2 X: 2 -3 / 3: 2358. 2.000 3.000 5.000 8.000 -4 / 4: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- I:1 X: 1 -3 / 3: 1368. 1.000 3.000 6.000 8.000 -4 / 4: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 -3 / 3: 2368. 2.000 3.000 6.000 8.000 -4 / 4: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=YXTZ - Y: 2.5 to 4.5 - X: 0.5 to 2.5 - T: 6.5 to 8.5 - Z: 4.5 to 6.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- L:7 T: 7 - ---- I:1 X: 1 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- I:2 X: 2 -3 / 3: 2357. 2.000 3.000 5.000 7.000 -4 / 4: 2457. 2.000 4.000 5.000 7.000 - ---- L:8 T: 8 - ---- I:1 X: 1 -3 / 3: 1358. 1.000 3.000 5.000 8.000 -4 / 4: 1458. 1.000 4.000 5.000 8.000 - ---- I:2 X: 2 -3 / 3: 2358. 2.000 3.000 5.000 8.000 -4 / 4: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- L:7 T: 7 - ---- I:1 X: 1 -3 / 3: 1367. 1.000 3.000 6.000 7.000 -4 / 4: 1467. 1.000 4.000 6.000 7.000 - ---- I:2 X: 2 -3 / 3: 2367. 2.000 3.000 6.000 7.000 -4 / 4: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- I:1 X: 1 -3 / 3: 1368. 1.000 3.000 6.000 8.000 -4 / 4: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 -3 / 3: 2368. 2.000 3.000 6.000 8.000 -4 / 4: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=YZXT - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - X: 0.5 to 2.5 - T: 6.5 to 8.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 - ---- I:1 X: 1 - ---- K:5 Z: 5 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- K:6 Z: 6 -3 / 3: 1367. 1.000 3.000 6.000 7.000 -4 / 4: 1467. 1.000 4.000 6.000 7.000 - ---- I:2 X: 2 - ---- K:5 Z: 5 -3 / 3: 2357. 2.000 3.000 5.000 7.000 -4 / 4: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 -3 / 3: 2367. 2.000 3.000 6.000 7.000 -4 / 4: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- I:1 X: 1 - ---- K:5 Z: 5 -3 / 3: 1358. 1.000 3.000 5.000 8.000 -4 / 4: 1458. 1.000 4.000 5.000 8.000 - ---- K:6 Z: 6 -3 / 3: 1368. 1.000 3.000 6.000 8.000 -4 / 4: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 - ---- K:5 Z: 5 -3 / 3: 2358. 2.000 3.000 5.000 8.000 -4 / 4: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 -3 / 3: 2368. 2.000 3.000 6.000 8.000 -4 / 4: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=YZTX - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - T: 6.5 to 8.5 - X: 0.5 to 2.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 - ---- L:7 T: 7 - ---- K:5 Z: 5 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- K:6 Z: 6 -3 / 3: 1367. 1.000 3.000 6.000 7.000 -4 / 4: 1467. 1.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- K:5 Z: 5 -3 / 3: 1358. 1.000 3.000 5.000 8.000 -4 / 4: 1458. 1.000 4.000 5.000 8.000 - ---- K:6 Z: 6 -3 / 3: 1368. 1.000 3.000 6.000 8.000 -4 / 4: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 - ---- L:7 T: 7 - ---- K:5 Z: 5 -3 / 3: 2357. 2.000 3.000 5.000 7.000 -4 / 4: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 -3 / 3: 2367. 2.000 3.000 6.000 7.000 -4 / 4: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- K:5 Z: 5 -3 / 3: 2358. 2.000 3.000 5.000 8.000 -4 / 4: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 -3 / 3: 2368. 2.000 3.000 6.000 8.000 -4 / 4: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=YTXZ - Y: 2.5 to 4.5 - T: 6.5 to 8.5 - X: 0.5 to 2.5 - Z: 4.5 to 6.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- I:1 X: 1 - ---- L:7 T: 7 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- L:8 T: 8 -3 / 3: 1358. 1.000 3.000 5.000 8.000 -4 / 4: 1458. 1.000 4.000 5.000 8.000 - ---- I:2 X: 2 - ---- L:7 T: 7 -3 / 3: 2357. 2.000 3.000 5.000 7.000 -4 / 4: 2457. 2.000 4.000 5.000 7.000 - ---- L:8 T: 8 -3 / 3: 2358. 2.000 3.000 5.000 8.000 -4 / 4: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- I:1 X: 1 - ---- L:7 T: 7 -3 / 3: 1367. 1.000 3.000 6.000 7.000 -4 / 4: 1467. 1.000 4.000 6.000 7.000 - ---- L:8 T: 8 -3 / 3: 1368. 1.000 3.000 6.000 8.000 -4 / 4: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 - ---- L:7 T: 7 -3 / 3: 2367. 2.000 3.000 6.000 7.000 -4 / 4: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 -3 / 3: 2368. 2.000 3.000 6.000 8.000 -4 / 4: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=YTZX - Y: 2.5 to 4.5 - T: 6.5 to 8.5 - Z: 4.5 to 6.5 - X: 0.5 to 2.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 - ---- K:5 Z: 5 - ---- L:7 T: 7 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- L:8 T: 8 -3 / 3: 1358. 1.000 3.000 5.000 8.000 -4 / 4: 1458. 1.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- L:7 T: 7 -3 / 3: 1367. 1.000 3.000 6.000 7.000 -4 / 4: 1467. 1.000 4.000 6.000 7.000 - ---- L:8 T: 8 -3 / 3: 1368. 1.000 3.000 6.000 8.000 -4 / 4: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 - ---- K:5 Z: 5 - ---- L:7 T: 7 -3 / 3: 2357. 2.000 3.000 5.000 7.000 -4 / 4: 2457. 2.000 4.000 5.000 7.000 - ---- L:8 T: 8 -3 / 3: 2358. 2.000 3.000 5.000 8.000 -4 / 4: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- L:7 T: 7 -3 / 3: 2367. 2.000 3.000 6.000 7.000 -4 / 4: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 -3 / 3: 2368. 2.000 3.000 6.000 8.000 -4 / 4: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=ZXYT - Z: 4.5 to 6.5 - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - T: 6.5 to 8.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 - ---- J:3 Y: 3 - ---- I:1 X: 1 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- I:2 X: 2 -5 / 5: 2357. 2.000 3.000 5.000 7.000 -6 / 6: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 - ---- I:1 X: 1 -5 / 5: 1457. 1.000 4.000 5.000 7.000 -6 / 6: 1467. 1.000 4.000 6.000 7.000 - ---- I:2 X: 2 -5 / 5: 2457. 2.000 4.000 5.000 7.000 -6 / 6: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- J:3 Y: 3 - ---- I:1 X: 1 -5 / 5: 1358. 1.000 3.000 5.000 8.000 -6 / 6: 1368. 1.000 3.000 6.000 8.000 - ---- I:2 X: 2 -5 / 5: 2358. 2.000 3.000 5.000 8.000 -6 / 6: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- I:1 X: 1 -5 / 5: 1458. 1.000 4.000 5.000 8.000 -6 / 6: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 -5 / 5: 2458. 2.000 4.000 5.000 8.000 -6 / 6: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=ZXTY - Z: 4.5 to 6.5 - X: 0.5 to 2.5 - T: 6.5 to 8.5 - Y: 2.5 to 4.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 - ---- L:7 T: 7 - ---- I:1 X: 1 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- I:2 X: 2 -5 / 5: 2357. 2.000 3.000 5.000 7.000 -6 / 6: 2367. 2.000 3.000 6.000 7.000 - ---- L:8 T: 8 - ---- I:1 X: 1 -5 / 5: 1358. 1.000 3.000 5.000 8.000 -6 / 6: 1368. 1.000 3.000 6.000 8.000 - ---- I:2 X: 2 -5 / 5: 2358. 2.000 3.000 5.000 8.000 -6 / 6: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- L:7 T: 7 - ---- I:1 X: 1 -5 / 5: 1457. 1.000 4.000 5.000 7.000 -6 / 6: 1467. 1.000 4.000 6.000 7.000 - ---- I:2 X: 2 -5 / 5: 2457. 2.000 4.000 5.000 7.000 -6 / 6: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- I:1 X: 1 -5 / 5: 1458. 1.000 4.000 5.000 8.000 -6 / 6: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 -5 / 5: 2458. 2.000 4.000 5.000 8.000 -6 / 6: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=ZYXT - Z: 4.5 to 6.5 - Y: 2.5 to 4.5 - X: 0.5 to 2.5 - T: 6.5 to 8.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 - ---- I:1 X: 1 - ---- J:3 Y: 3 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -5 / 5: 1457. 1.000 4.000 5.000 7.000 -6 / 6: 1467. 1.000 4.000 6.000 7.000 - ---- I:2 X: 2 - ---- J:3 Y: 3 -5 / 5: 2357. 2.000 3.000 5.000 7.000 -6 / 6: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -5 / 5: 2457. 2.000 4.000 5.000 7.000 -6 / 6: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- I:1 X: 1 - ---- J:3 Y: 3 -5 / 5: 1358. 1.000 3.000 5.000 8.000 -6 / 6: 1368. 1.000 3.000 6.000 8.000 - ---- J:4 Y: 4 -5 / 5: 1458. 1.000 4.000 5.000 8.000 -6 / 6: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 - ---- J:3 Y: 3 -5 / 5: 2358. 2.000 3.000 5.000 8.000 -6 / 6: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 -5 / 5: 2458. 2.000 4.000 5.000 8.000 -6 / 6: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=ZYTX - Z: 4.5 to 6.5 - Y: 2.5 to 4.5 - T: 6.5 to 8.5 - X: 0.5 to 2.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 - ---- L:7 T: 7 - ---- J:3 Y: 3 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -5 / 5: 1457. 1.000 4.000 5.000 7.000 -6 / 6: 1467. 1.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- J:3 Y: 3 -5 / 5: 1358. 1.000 3.000 5.000 8.000 -6 / 6: 1368. 1.000 3.000 6.000 8.000 - ---- J:4 Y: 4 -5 / 5: 1458. 1.000 4.000 5.000 8.000 -6 / 6: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 - ---- L:7 T: 7 - ---- J:3 Y: 3 -5 / 5: 2357. 2.000 3.000 5.000 7.000 -6 / 6: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -5 / 5: 2457. 2.000 4.000 5.000 7.000 -6 / 6: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- J:3 Y: 3 -5 / 5: 2358. 2.000 3.000 5.000 8.000 -6 / 6: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 -5 / 5: 2458. 2.000 4.000 5.000 8.000 -6 / 6: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=ZTXY - Z: 4.5 to 6.5 - T: 6.5 to 8.5 - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 - ---- I:1 X: 1 - ---- L:7 T: 7 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 1358. 1.000 3.000 5.000 8.000 -6 / 6: 1368. 1.000 3.000 6.000 8.000 - ---- I:2 X: 2 - ---- L:7 T: 7 -5 / 5: 2357. 2.000 3.000 5.000 7.000 -6 / 6: 2367. 2.000 3.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 2358. 2.000 3.000 5.000 8.000 -6 / 6: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- I:1 X: 1 - ---- L:7 T: 7 -5 / 5: 1457. 1.000 4.000 5.000 7.000 -6 / 6: 1467. 1.000 4.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 1458. 1.000 4.000 5.000 8.000 -6 / 6: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 - ---- L:7 T: 7 -5 / 5: 2457. 2.000 4.000 5.000 7.000 -6 / 6: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 2458. 2.000 4.000 5.000 8.000 -6 / 6: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=ZTYX - Z: 4.5 to 6.5 - T: 6.5 to 8.5 - Y: 2.5 to 4.5 - X: 0.5 to 2.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 - ---- J:3 Y: 3 - ---- L:7 T: 7 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 1358. 1.000 3.000 5.000 8.000 -6 / 6: 1368. 1.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- L:7 T: 7 -5 / 5: 1457. 1.000 4.000 5.000 7.000 -6 / 6: 1467. 1.000 4.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 1458. 1.000 4.000 5.000 8.000 -6 / 6: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 - ---- J:3 Y: 3 - ---- L:7 T: 7 -5 / 5: 2357. 2.000 3.000 5.000 7.000 -6 / 6: 2367. 2.000 3.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 2358. 2.000 3.000 5.000 8.000 -6 / 6: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- L:7 T: 7 -5 / 5: 2457. 2.000 4.000 5.000 7.000 -6 / 6: 2467. 2.000 4.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 2458. 2.000 4.000 5.000 8.000 -6 / 6: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=TXYZ - T: 6.5 to 8.5 - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- J:3 Y: 3 - ---- I:1 X: 1 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- I:2 X: 2 -7 / 7: 2357. 2.000 3.000 5.000 7.000 -8 / 8: 2358. 2.000 3.000 5.000 8.000 - ---- J:4 Y: 4 - ---- I:1 X: 1 -7 / 7: 1457. 1.000 4.000 5.000 7.000 -8 / 8: 1458. 1.000 4.000 5.000 8.000 - ---- I:2 X: 2 -7 / 7: 2457. 2.000 4.000 5.000 7.000 -8 / 8: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 - ---- I:1 X: 1 -7 / 7: 1367. 1.000 3.000 6.000 7.000 -8 / 8: 1368. 1.000 3.000 6.000 8.000 - ---- I:2 X: 2 -7 / 7: 2367. 2.000 3.000 6.000 7.000 -8 / 8: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- I:1 X: 1 -7 / 7: 1467. 1.000 4.000 6.000 7.000 -8 / 8: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 -7 / 7: 2467. 2.000 4.000 6.000 7.000 -8 / 8: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=TXZY - T: 6.5 to 8.5 - X: 0.5 to 2.5 - Z: 4.5 to 6.5 - Y: 2.5 to 4.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 - ---- K:5 Z: 5 - ---- I:1 X: 1 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- I:2 X: 2 -7 / 7: 2357. 2.000 3.000 5.000 7.000 -8 / 8: 2358. 2.000 3.000 5.000 8.000 - ---- K:6 Z: 6 - ---- I:1 X: 1 -7 / 7: 1367. 1.000 3.000 6.000 7.000 -8 / 8: 1368. 1.000 3.000 6.000 8.000 - ---- I:2 X: 2 -7 / 7: 2367. 2.000 3.000 6.000 7.000 -8 / 8: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- K:5 Z: 5 - ---- I:1 X: 1 -7 / 7: 1457. 1.000 4.000 5.000 7.000 -8 / 8: 1458. 1.000 4.000 5.000 8.000 - ---- I:2 X: 2 -7 / 7: 2457. 2.000 4.000 5.000 7.000 -8 / 8: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- I:1 X: 1 -7 / 7: 1467. 1.000 4.000 6.000 7.000 -8 / 8: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 -7 / 7: 2467. 2.000 4.000 6.000 7.000 -8 / 8: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=TYXZ - T: 6.5 to 8.5 - Y: 2.5 to 4.5 - X: 0.5 to 2.5 - Z: 4.5 to 6.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- I:1 X: 1 - ---- J:3 Y: 3 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- J:4 Y: 4 -7 / 7: 1457. 1.000 4.000 5.000 7.000 -8 / 8: 1458. 1.000 4.000 5.000 8.000 - ---- I:2 X: 2 - ---- J:3 Y: 3 -7 / 7: 2357. 2.000 3.000 5.000 7.000 -8 / 8: 2358. 2.000 3.000 5.000 8.000 - ---- J:4 Y: 4 -7 / 7: 2457. 2.000 4.000 5.000 7.000 -8 / 8: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- I:1 X: 1 - ---- J:3 Y: 3 -7 / 7: 1367. 1.000 3.000 6.000 7.000 -8 / 8: 1368. 1.000 3.000 6.000 8.000 - ---- J:4 Y: 4 -7 / 7: 1467. 1.000 4.000 6.000 7.000 -8 / 8: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 - ---- J:3 Y: 3 -7 / 7: 2367. 2.000 3.000 6.000 7.000 -8 / 8: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 -7 / 7: 2467. 2.000 4.000 6.000 7.000 -8 / 8: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=TYZX - T: 6.5 to 8.5 - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - X: 0.5 to 2.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 - ---- K:5 Z: 5 - ---- J:3 Y: 3 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- J:4 Y: 4 -7 / 7: 1457. 1.000 4.000 5.000 7.000 -8 / 8: 1458. 1.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 -7 / 7: 1367. 1.000 3.000 6.000 7.000 -8 / 8: 1368. 1.000 3.000 6.000 8.000 - ---- J:4 Y: 4 -7 / 7: 1467. 1.000 4.000 6.000 7.000 -8 / 8: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 - ---- K:5 Z: 5 - ---- J:3 Y: 3 -7 / 7: 2357. 2.000 3.000 5.000 7.000 -8 / 8: 2358. 2.000 3.000 5.000 8.000 - ---- J:4 Y: 4 -7 / 7: 2457. 2.000 4.000 5.000 7.000 -8 / 8: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 -7 / 7: 2367. 2.000 3.000 6.000 7.000 -8 / 8: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 -7 / 7: 2467. 2.000 4.000 6.000 7.000 -8 / 8: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=TZXY - T: 6.5 to 8.5 - Z: 4.5 to 6.5 - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 - ---- I:1 X: 1 - ---- K:5 Z: 5 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 1367. 1.000 3.000 6.000 7.000 -8 / 8: 1368. 1.000 3.000 6.000 8.000 - ---- I:2 X: 2 - ---- K:5 Z: 5 -7 / 7: 2357. 2.000 3.000 5.000 7.000 -8 / 8: 2358. 2.000 3.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 2367. 2.000 3.000 6.000 7.000 -8 / 8: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- I:1 X: 1 - ---- K:5 Z: 5 -7 / 7: 1457. 1.000 4.000 5.000 7.000 -8 / 8: 1458. 1.000 4.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 1467. 1.000 4.000 6.000 7.000 -8 / 8: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 - ---- K:5 Z: 5 -7 / 7: 2457. 2.000 4.000 5.000 7.000 -8 / 8: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 2467. 2.000 4.000 6.000 7.000 -8 / 8: 2468. 2.000 4.000 6.000 8.000 -LIST/ORDER=TZYX - T: 6.5 to 8.5 - Z: 4.5 to 6.5 - Y: 2.5 to 4.5 - X: 0.5 to 2.5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 - ---- J:3 Y: 3 - ---- K:5 Z: 5 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 1367. 1.000 3.000 6.000 7.000 -8 / 8: 1368. 1.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- K:5 Z: 5 -7 / 7: 1457. 1.000 4.000 5.000 7.000 -8 / 8: 1458. 1.000 4.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 1467. 1.000 4.000 6.000 7.000 -8 / 8: 1468. 1.000 4.000 6.000 8.000 - ---- I:2 X: 2 - ---- J:3 Y: 3 - ---- K:5 Z: 5 -7 / 7: 2357. 2.000 3.000 5.000 7.000 -8 / 8: 2358. 2.000 3.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 2367. 2.000 3.000 6.000 7.000 -8 / 8: 2368. 2.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- K:5 Z: 5 -7 / 7: 2457. 2.000 4.000 5.000 7.000 -8 / 8: 2458. 2.000 4.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 2467. 2.000 4.000 6.000 7.000 -8 / 8: 2468. 2.000 4.000 6.000 8.000 - -! ------ 3D regions -SET REGION/I=1/J=3:4/K=5:6/L=7:8 -LIST/ORDER=YZT - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - T: 6.5 to 8.5 - X: 1 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 - ---- K:5 Z: 5 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- K:6 Z: 6 -3 / 3: 1367. 1.000 3.000 6.000 7.000 -4 / 4: 1467. 1.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- K:5 Z: 5 -3 / 3: 1358. 1.000 3.000 5.000 8.000 -4 / 4: 1458. 1.000 4.000 5.000 8.000 - ---- K:6 Z: 6 -3 / 3: 1368. 1.000 3.000 6.000 8.000 -4 / 4: 1468. 1.000 4.000 6.000 8.000 -LIST/ORDER=YTZ - Y: 2.5 to 4.5 - T: 6.5 to 8.5 - Z: 4.5 to 6.5 - X: 1 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- L:7 T: 7 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- L:8 T: 8 -3 / 3: 1358. 1.000 3.000 5.000 8.000 -4 / 4: 1458. 1.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- L:7 T: 7 -3 / 3: 1367. 1.000 3.000 6.000 7.000 -4 / 4: 1467. 1.000 4.000 6.000 7.000 - ---- L:8 T: 8 -3 / 3: 1368. 1.000 3.000 6.000 8.000 -4 / 4: 1468. 1.000 4.000 6.000 8.000 -LIST/ORDER=ZYT - Z: 4.5 to 6.5 - Y: 2.5 to 4.5 - T: 6.5 to 8.5 - X: 1 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 - ---- J:3 Y: 3 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -5 / 5: 1457. 1.000 4.000 5.000 7.000 -6 / 6: 1467. 1.000 4.000 6.000 7.000 - ---- L:8 T: 8 - ---- J:3 Y: 3 -5 / 5: 1358. 1.000 3.000 5.000 8.000 -6 / 6: 1368. 1.000 3.000 6.000 8.000 - ---- J:4 Y: 4 -5 / 5: 1458. 1.000 4.000 5.000 8.000 -6 / 6: 1468. 1.000 4.000 6.000 8.000 -LIST/ORDER=ZTY - Z: 4.5 to 6.5 - T: 6.5 to 8.5 - Y: 2.5 to 4.5 - X: 1 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 - ---- L:7 T: 7 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 1358. 1.000 3.000 5.000 8.000 -6 / 6: 1368. 1.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- L:7 T: 7 -5 / 5: 1457. 1.000 4.000 5.000 7.000 -6 / 6: 1467. 1.000 4.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 1458. 1.000 4.000 5.000 8.000 -6 / 6: 1468. 1.000 4.000 6.000 8.000 -LIST/ORDER=TYZ - T: 6.5 to 8.5 - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - X: 1 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- J:3 Y: 3 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- J:4 Y: 4 -7 / 7: 1457. 1.000 4.000 5.000 7.000 -8 / 8: 1458. 1.000 4.000 5.000 8.000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 -7 / 7: 1367. 1.000 3.000 6.000 7.000 -8 / 8: 1368. 1.000 3.000 6.000 8.000 - ---- J:4 Y: 4 -7 / 7: 1467. 1.000 4.000 6.000 7.000 -8 / 8: 1468. 1.000 4.000 6.000 8.000 -LIST/ORDER=TZY - T: 6.5 to 8.5 - Z: 4.5 to 6.5 - Y: 2.5 to 4.5 - X: 1 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 - ---- K:5 Z: 5 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 1367. 1.000 3.000 6.000 7.000 -8 / 8: 1368. 1.000 3.000 6.000 8.000 - ---- J:4 Y: 4 - ---- K:5 Z: 5 -7 / 7: 1457. 1.000 4.000 5.000 7.000 -8 / 8: 1458. 1.000 4.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 1467. 1.000 4.000 6.000 7.000 -8 / 8: 1468. 1.000 4.000 6.000 8.000 - -SET REGION/I=1:2/J=3/K=5:6/L=7:8 -LIST/ORDER=XZT - X: 0.5 to 2.5 - Z: 4.5 to 6.5 - T: 6.5 to 8.5 - Y: 3 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 - ---- K:5 Z: 5 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- K:6 Z: 6 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- L:8 T: 8 - ---- K:5 Z: 5 -1 / 1: 1358. 1.000 3.000 5.000 8.000 -2 / 2: 2358. 2.000 3.000 5.000 8.000 - ---- K:6 Z: 6 -1 / 1: 1368. 1.000 3.000 6.000 8.000 -2 / 2: 2368. 2.000 3.000 6.000 8.000 -LIST/ORDER=XTZ - X: 0.5 to 2.5 - T: 6.5 to 8.5 - Z: 4.5 to 6.5 - Y: 3 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- L:7 T: 7 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- L:8 T: 8 -1 / 1: 1358. 1.000 3.000 5.000 8.000 -2 / 2: 2358. 2.000 3.000 5.000 8.000 - ---- K:6 Z: 6 - ---- L:7 T: 7 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- L:8 T: 8 -1 / 1: 1368. 1.000 3.000 6.000 8.000 -2 / 2: 2368. 2.000 3.000 6.000 8.000 -LIST/ORDER=ZXT - Z: 4.5 to 6.5 - X: 0.5 to 2.5 - T: 6.5 to 8.5 - Y: 3 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 - ---- I:1 X: 1 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- I:2 X: 2 -5 / 5: 2357. 2.000 3.000 5.000 7.000 -6 / 6: 2367. 2.000 3.000 6.000 7.000 - ---- L:8 T: 8 - ---- I:1 X: 1 -5 / 5: 1358. 1.000 3.000 5.000 8.000 -6 / 6: 1368. 1.000 3.000 6.000 8.000 - ---- I:2 X: 2 -5 / 5: 2358. 2.000 3.000 5.000 8.000 -6 / 6: 2368. 2.000 3.000 6.000 8.000 -LIST/ORDER=ZTX - Z: 4.5 to 6.5 - T: 6.5 to 8.5 - X: 0.5 to 2.5 - Y: 3 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 - ---- L:7 T: 7 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 1358. 1.000 3.000 5.000 8.000 -6 / 6: 1368. 1.000 3.000 6.000 8.000 - ---- I:2 X: 2 - ---- L:7 T: 7 -5 / 5: 2357. 2.000 3.000 5.000 7.000 -6 / 6: 2367. 2.000 3.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 2358. 2.000 3.000 5.000 8.000 -6 / 6: 2368. 2.000 3.000 6.000 8.000 -LIST/ORDER=TXZ - T: 6.5 to 8.5 - X: 0.5 to 2.5 - Z: 4.5 to 6.5 - Y: 3 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- I:1 X: 1 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- I:2 X: 2 -7 / 7: 2357. 2.000 3.000 5.000 7.000 -8 / 8: 2358. 2.000 3.000 5.000 8.000 - ---- K:6 Z: 6 - ---- I:1 X: 1 -7 / 7: 1367. 1.000 3.000 6.000 7.000 -8 / 8: 1368. 1.000 3.000 6.000 8.000 - ---- I:2 X: 2 -7 / 7: 2367. 2.000 3.000 6.000 7.000 -8 / 8: 2368. 2.000 3.000 6.000 8.000 -LIST/ORDER=TZX - T: 6.5 to 8.5 - Z: 4.5 to 6.5 - X: 0.5 to 2.5 - Y: 3 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 - ---- K:5 Z: 5 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 1367. 1.000 3.000 6.000 7.000 -8 / 8: 1368. 1.000 3.000 6.000 8.000 - ---- I:2 X: 2 - ---- K:5 Z: 5 -7 / 7: 2357. 2.000 3.000 5.000 7.000 -8 / 8: 2358. 2.000 3.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 2367. 2.000 3.000 6.000 7.000 -8 / 8: 2368. 2.000 3.000 6.000 8.000 - -SET REGION/I=1:2/J=3:4/K=5/L=7:8 -LIST/ORDER=XYT - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - T: 6.5 to 8.5 - Z: 5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 - ---- J:3 Y: 3 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- L:8 T: 8 - ---- J:3 Y: 3 -1 / 1: 1358. 1.000 3.000 5.000 8.000 -2 / 2: 2358. 2.000 3.000 5.000 8.000 - ---- J:4 Y: 4 -1 / 1: 1458. 1.000 4.000 5.000 8.000 -2 / 2: 2458. 2.000 4.000 5.000 8.000 -LIST/ORDER=XTY - X: 0.5 to 2.5 - T: 6.5 to 8.5 - Y: 2.5 to 4.5 - Z: 5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 - ---- L:7 T: 7 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- L:8 T: 8 -1 / 1: 1358. 1.000 3.000 5.000 8.000 -2 / 2: 2358. 2.000 3.000 5.000 8.000 - ---- J:4 Y: 4 - ---- L:7 T: 7 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- L:8 T: 8 -1 / 1: 1458. 1.000 4.000 5.000 8.000 -2 / 2: 2458. 2.000 4.000 5.000 8.000 -LIST/ORDER=YXT - Y: 2.5 to 4.5 - X: 0.5 to 2.5 - T: 6.5 to 8.5 - Z: 5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 - ---- I:1 X: 1 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- I:2 X: 2 -3 / 3: 2357. 2.000 3.000 5.000 7.000 -4 / 4: 2457. 2.000 4.000 5.000 7.000 - ---- L:8 T: 8 - ---- I:1 X: 1 -3 / 3: 1358. 1.000 3.000 5.000 8.000 -4 / 4: 1458. 1.000 4.000 5.000 8.000 - ---- I:2 X: 2 -3 / 3: 2358. 2.000 3.000 5.000 8.000 -4 / 4: 2458. 2.000 4.000 5.000 8.000 -LIST/ORDER=YTX - Y: 2.5 to 4.5 - T: 6.5 to 8.5 - X: 0.5 to 2.5 - Z: 5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 - ---- L:7 T: 7 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- L:8 T: 8 -3 / 3: 1358. 1.000 3.000 5.000 8.000 -4 / 4: 1458. 1.000 4.000 5.000 8.000 - ---- I:2 X: 2 - ---- L:7 T: 7 -3 / 3: 2357. 2.000 3.000 5.000 7.000 -4 / 4: 2457. 2.000 4.000 5.000 7.000 - ---- L:8 T: 8 -3 / 3: 2358. 2.000 3.000 5.000 8.000 -4 / 4: 2458. 2.000 4.000 5.000 8.000 -LIST/ORDER=TXY - T: 6.5 to 8.5 - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - Z: 5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 - ---- I:1 X: 1 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- I:2 X: 2 -7 / 7: 2357. 2.000 3.000 5.000 7.000 -8 / 8: 2358. 2.000 3.000 5.000 8.000 - ---- J:4 Y: 4 - ---- I:1 X: 1 -7 / 7: 1457. 1.000 4.000 5.000 7.000 -8 / 8: 1458. 1.000 4.000 5.000 8.000 - ---- I:2 X: 2 -7 / 7: 2457. 2.000 4.000 5.000 7.000 -8 / 8: 2458. 2.000 4.000 5.000 8.000 -LIST/ORDER=TYX - T: 6.5 to 8.5 - Y: 2.5 to 4.5 - X: 0.5 to 2.5 - Z: 5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 - ---- J:3 Y: 3 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- J:4 Y: 4 -7 / 7: 1457. 1.000 4.000 5.000 7.000 -8 / 8: 1458. 1.000 4.000 5.000 8.000 - ---- I:2 X: 2 - ---- J:3 Y: 3 -7 / 7: 2357. 2.000 3.000 5.000 7.000 -8 / 8: 2358. 2.000 3.000 5.000 8.000 - ---- J:4 Y: 4 -7 / 7: 2457. 2.000 4.000 5.000 7.000 -8 / 8: 2458. 2.000 4.000 5.000 8.000 - -SET REGION/I=1:2/J=3:4/K=5:6/L=7 -LIST/ORDER=XYZ - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- J:3 Y: 3 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1467. 1.000 4.000 6.000 7.000 -2 / 2: 2467. 2.000 4.000 6.000 7.000 -LIST/ORDER=XZY - X: 0.5 to 2.5 - Z: 4.5 to 6.5 - Y: 2.5 to 4.5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 - ---- K:5 Z: 5 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- K:6 Z: 6 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 - ---- K:5 Z: 5 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 -1 / 1: 1467. 1.000 4.000 6.000 7.000 -2 / 2: 2467. 2.000 4.000 6.000 7.000 -LIST/ORDER=YXZ - Y: 2.5 to 4.5 - X: 0.5 to 2.5 - Z: 4.5 to 6.5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- I:1 X: 1 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- I:2 X: 2 -3 / 3: 2357. 2.000 3.000 5.000 7.000 -4 / 4: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 - ---- I:1 X: 1 -3 / 3: 1367. 1.000 3.000 6.000 7.000 -4 / 4: 1467. 1.000 4.000 6.000 7.000 - ---- I:2 X: 2 -3 / 3: 2367. 2.000 3.000 6.000 7.000 -4 / 4: 2467. 2.000 4.000 6.000 7.000 -LIST/ORDER=YZX - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - X: 0.5 to 2.5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 - ---- K:5 Z: 5 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- K:6 Z: 6 -3 / 3: 1367. 1.000 3.000 6.000 7.000 -4 / 4: 1467. 1.000 4.000 6.000 7.000 - ---- I:2 X: 2 - ---- K:5 Z: 5 -3 / 3: 2357. 2.000 3.000 5.000 7.000 -4 / 4: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 -3 / 3: 2367. 2.000 3.000 6.000 7.000 -4 / 4: 2467. 2.000 4.000 6.000 7.000 -LIST/ORDER=ZXY - Z: 4.5 to 6.5 - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 - ---- I:1 X: 1 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- I:2 X: 2 -5 / 5: 2357. 2.000 3.000 5.000 7.000 -6 / 6: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 - ---- I:1 X: 1 -5 / 5: 1457. 1.000 4.000 5.000 7.000 -6 / 6: 1467. 1.000 4.000 6.000 7.000 - ---- I:2 X: 2 -5 / 5: 2457. 2.000 4.000 5.000 7.000 -6 / 6: 2467. 2.000 4.000 6.000 7.000 -LIST/ORDER=ZYX - Z: 4.5 to 6.5 - Y: 2.5 to 4.5 - X: 0.5 to 2.5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 - ---- J:3 Y: 3 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -5 / 5: 1457. 1.000 4.000 5.000 7.000 -6 / 6: 1467. 1.000 4.000 6.000 7.000 - ---- I:2 X: 2 - ---- J:3 Y: 3 -5 / 5: 2357. 2.000 3.000 5.000 7.000 -6 / 6: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -5 / 5: 2457. 2.000 4.000 5.000 7.000 -6 / 6: 2467. 2.000 4.000 6.000 7.000 - -! ------ 2D regions -SET REGION/I=1/J=3/K=5:6/L=7:8 -LIST/ORDER=ZT - Z: 4.5 to 6.5 - T: 6.5 to 8.5 - X: 1 - Y: 3 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- L:8 T: 8 -5 / 5: 1358. 1.000 3.000 5.000 8.000 -6 / 6: 1368. 1.000 3.000 6.000 8.000 -LIST/ORDER=TZ - T: 6.5 to 8.5 - Z: 4.5 to 6.5 - X: 1 - Y: 3 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- K:6 Z: 6 -7 / 7: 1367. 1.000 3.000 6.000 7.000 -8 / 8: 1368. 1.000 3.000 6.000 8.000 - -SET REGION/I=1/J=3:4/K=5/L=7:8 -LIST/ORDER=YT - Y: 2.5 to 4.5 - T: 6.5 to 8.5 - X: 1 - Z: 5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- L:8 T: 8 -3 / 3: 1358. 1.000 3.000 5.000 8.000 -4 / 4: 1458. 1.000 4.000 5.000 8.000 -LIST/ORDER=TY - T: 6.5 to 8.5 - Y: 2.5 to 4.5 - X: 1 - Z: 5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- J:4 Y: 4 -7 / 7: 1457. 1.000 4.000 5.000 7.000 -8 / 8: 1458. 1.000 4.000 5.000 8.000 - -SET REGION/I=1/J=3:4/K=5:6/L=7 -LIST/ORDER=YZ - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - X: 1 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- K:6 Z: 6 -3 / 3: 1367. 1.000 3.000 6.000 7.000 -4 / 4: 1467. 1.000 4.000 6.000 7.000 -LIST/ORDER=ZY - Z: 4.5 to 6.5 - Y: 2.5 to 4.5 - X: 1 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -5 / 5: 1457. 1.000 4.000 5.000 7.000 -6 / 6: 1467. 1.000 4.000 6.000 7.000 - -SET REGION/I=1:2/J=3/K=5/L=7:8 -LIST/ORDER=XT - X: 0.5 to 2.5 - T: 6.5 to 8.5 - Y: 3 - Z: 5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- L:7 T: 7 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- L:8 T: 8 -1 / 1: 1358. 1.000 3.000 5.000 8.000 -2 / 2: 2358. 2.000 3.000 5.000 8.000 -LIST/ORDER=TX - T: 6.5 to 8.5 - X: 0.5 to 2.5 - Y: 3 - Z: 5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - ---- I:2 X: 2 -7 / 7: 2357. 2.000 3.000 5.000 7.000 -8 / 8: 2358. 2.000 3.000 5.000 8.000 - -SET REGION/I=1:2/J=3/K=5:6/L=7 -LIST/ORDER=XZ - X: 0.5 to 2.5 - Z: 4.5 to 6.5 - Y: 3 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- K:6 Z: 6 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 -LIST/ORDER=ZX - Z: 4.5 to 6.5 - X: 0.5 to 2.5 - Y: 3 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 - ---- I:2 X: 2 -5 / 5: 2357. 2.000 3.000 5.000 7.000 -6 / 6: 2367. 2.000 3.000 6.000 7.000 - -SET REGION/I=1:2/J=3:4/K=5/L=7 -LIST/ORDER=XY - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - Z: 5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- J:3 Y: 3 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 -LIST/ORDER=YX - Y: 2.5 to 4.5 - X: 0.5 to 2.5 - Z: 5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- I:1 X: 1 -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 - ---- I:2 X: 2 -3 / 3: 2357. 2.000 3.000 5.000 7.000 -4 / 4: 2457. 2.000 4.000 5.000 7.000 - -! ------ 1D regions -LIST/I=1:2/J=3/K=5/L=7 - X: 0.5 to 2.5 - Y: 3 - Z: 5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 -LIST/I=1/J=3:4/K=5/L=7 - Y: 2.5 to 4.5 - X: 1 - Z: 5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L -3 / 3: 1357. 1.000 3.000 5.000 7.000 -4 / 4: 1457. 1.000 4.000 5.000 7.000 -LIST/I=1/J=3/K=5:6/L=7 - Z: 4.5 to 6.5 - X: 1 - Y: 3 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L -5 / 5: 1357. 1.000 3.000 5.000 7.000 -6 / 6: 1367. 1.000 3.000 6.000 7.000 -LIST/I=1/J=3/K=5/L=7:8 - T: 6.5 to 8.5 - X: 1 - Y: 3 - Z: 5 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L -7 / 7: 1357. 1.000 3.000 5.000 7.000 -8 / 8: 1358. 1.000 3.000 5.000 8.000 - -! ------------------------------------------ -! test other output mechanisms -SET REGION/I=1:2/J=3:4/K=5:6/L=7 -LIST/NOHEAD - ---- K:5 Z: 5 - ---- J:3 Y: 3 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1467. 1.000 4.000 6.000 7.000 -2 / 2: 2467. 2.000 4.000 6.000 7.000 -SET LIST/PRECISION=6 -LIST - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- J:3 Y: 3 -1 / 1: 1357.00 1.00000 3.00000 5.00000 7.00000 -2 / 2: 2357.00 2.00000 3.00000 5.00000 7.00000 - ---- J:4 Y: 4 -1 / 1: 1457.00 1.00000 4.00000 5.00000 7.00000 -2 / 2: 2457.00 2.00000 4.00000 5.00000 7.00000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 -1 / 1: 1367.00 1.00000 3.00000 6.00000 7.00000 -2 / 2: 2367.00 2.00000 3.00000 6.00000 7.00000 - ---- J:4 Y: 4 -1 / 1: 1467.00 1.00000 4.00000 6.00000 7.00000 -2 / 2: 2467.00 2.00000 4.00000 6.00000 7.00000 -SHOW LIST - SET LIST/PRECISION = 6 - SET LIST/FORMAT = [Default] - SET LIST/HEADING is ENABLED - SET LIST/APPEND is DISABLED - SET LIST/FILE=AUTO [created by program] ( when LIST/FILE is used ) - SET LIST/OUTTYPE = [Default] - ---- - NetCDF-4 settings: - NetCDF file type = classic - NetCDF chunk sizes = default - SHUFFLE set to on - ENDIAN set to native -CANCEL LIST/PRECISION -LIST - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- J:3 Y: 3 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1467. 1.000 4.000 6.000 7.000 -2 / 2: 2467. 2.000 4.000 6.000 7.000 -SET LIST/FORMAT=(1X,5F14.7) -LIST/FORMAT - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - 1357.0000000 1.0000000 3.0000000 5.0000000 7.0000000 - 2357.0000000 2.0000000 3.0000000 5.0000000 7.0000000 - 1457.0000000 1.0000000 4.0000000 5.0000000 7.0000000 - 2457.0000000 2.0000000 4.0000000 5.0000000 7.0000000 - 1367.0000000 1.0000000 3.0000000 6.0000000 7.0000000 - 2367.0000000 2.0000000 3.0000000 6.0000000 7.0000000 - 1467.0000000 1.0000000 4.0000000 6.0000000 7.0000000 - 2467.0000000 2.0000000 4.0000000 6.0000000 7.0000000 -LIST/FORMAT=(1X,10F6.1) - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - 1357.0 1.0 3.0 5.0 7.0 - 2357.0 2.0 3.0 5.0 7.0 - 1457.0 1.0 4.0 5.0 7.0 - 2457.0 2.0 4.0 5.0 7.0 - 1367.0 1.0 3.0 6.0 7.0 - 2367.0 2.0 3.0 6.0 7.0 - 1467.0 1.0 4.0 6.0 7.0 - 2467.0 2.0 4.0 6.0 7.0 -CANCEL LIST/FORMAT -LIST - X: 0.5 to 2.5 - Y: 2.5 to 4.5 - Z: 4.5 to 6.5 - T: 7 - Column 1: V is 1000*I + 100*J + 10*K + L - Column 2: I is I (axis ABSTRACT) - Column 3: J is J (axis ABSTRACT) - Column 4: K is K (axis ABSTRACT) - Column 5: L is L (axis ABSTRACT) - V I J K L - ---- K:5 Z: 5 - ---- J:3 Y: 3 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1467. 1.000 4.000 6.000 7.000 -2 / 2: 2467. 2.000 4.000 6.000 7.000 -CANCEL LIST/HEAD -LIST - ---- K:5 Z: 5 - ---- J:3 Y: 3 -1 / 1: 1357. 1.000 3.000 5.000 7.000 -2 / 2: 2357. 2.000 3.000 5.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1457. 1.000 4.000 5.000 7.000 -2 / 2: 2457. 2.000 4.000 5.000 7.000 - ---- K:6 Z: 6 - ---- J:3 Y: 3 -1 / 1: 1367. 1.000 3.000 6.000 7.000 -2 / 2: 2367. 2.000 3.000 6.000 7.000 - ---- J:4 Y: 4 -1 / 1: 1467. 1.000 4.000 6.000 7.000 -2 / 2: 2467. 2.000 4.000 6.000 7.000 -CANCEL LIST/ALL -SET LIST/FILE=AUTO-X -LIST/CLOBBER/FILE -LIST/CLOBBER/FILE=test.dat -LIST/FILE=test.dat/APPEND -LIST/CLOBBER/FILE=test.unf/FORMAT=UNFORMATTED -! V6.8 we no longer write this file type -SET MODE IGNORE -LIST/FILE=test.gt/FORMAT=TMAP/L=1:3 v,v^0.5 -SET MODE/LAST IGNORE -CANCEL LIST - -cancel list/format -can mode ignore ! needed for AIX - -GO bn_reset bn_in_plane -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_in_plane -GO bn_in_plane -! bn200_in_plane.JNL -! benchmark various geometries with in-plane transformation applied (@SBX) -! this benchmark is layered on the compress benchmark to obtain the geometries -! similar tests are performed on: -! abstract variable -! file variable - -! ******** abstract variable ************ -! (this case can be checked against the bn200_in_plane.sub in the same region) -! (results should be identical since v is linear along all axes) -LET v = i + 10*j + 100*k + 1000*l -SET REGION/I=2:4/J=2:4/K=2:4/L=2:4 -GO bn_in_plane.sub -! BN200_COMPRESS.SUB_V -! list the variable v averaged on various geometries - -! this routine assumes that a 4-D region and an expression are already set - -! full data region -LIST v[x=@sbx,y=@sbx,z=@sbx,t=@sbx] - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on X - box smoothed by 3 pts on Y - box smoothed by 3 pts on Z - box smoothed by 3 pts on T - SUBSET : 3 by 3 by 3 by 3 points (X-Y-Z-T) - 2 3 4 - 2 3 4 - ---- L:2 T: 2 - ---- K:2 Z: 2 - 2 / 2: 2222. 2223. 2224. - 3 / 3: 2232. 2233. 2234. - 4 / 4: 2242. 2243. 2244. - ---- K:3 Z: 3 - 2 / 2: 2322. 2323. 2324. - 3 / 3: 2332. 2333. 2334. - 4 / 4: 2342. 2343. 2344. - ---- K:4 Z: 4 - 2 / 2: 2422. 2423. 2424. - 3 / 3: 2432. 2433. 2434. - 4 / 4: 2442. 2443. 2444. - ---- L:3 T: 3 - ---- K:2 Z: 2 - 2 / 2: 3222. 3223. 3224. - 3 / 3: 3232. 3233. 3234. - 4 / 4: 3242. 3243. 3244. - ---- K:3 Z: 3 - 2 / 2: 3322. 3323. 3324. - 3 / 3: 3332. 3333. 3334. - 4 / 4: 3342. 3343. 3344. - ---- K:4 Z: 4 - 2 / 2: 3422. 3423. 3424. - 3 / 3: 3432. 3433. 3434. - 4 / 4: 3442. 3443. 3444. - ---- L:4 T: 4 - ---- K:2 Z: 2 - 2 / 2: 4222. 4223. 4224. - 3 / 3: 4232. 4233. 4234. - 4 / 4: 4242. 4243. 4244. - ---- K:3 Z: 3 - 2 / 2: 4322. 4323. 4324. - 3 / 3: 4332. 4333. 4334. - 4 / 4: 4342. 4343. 4344. - ---- K:4 Z: 4 - 2 / 2: 4422. 4423. 4424. - 3 / 3: 4432. 4433. 4434. - 4 / 4: 4442. 4443. 4444. - -! cubes of data -LIST v[x=@sbx,y=@sbx,z=@sbx,l=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on X - box smoothed by 3 pts on Y - box smoothed by 3 pts on Z - SUBSET : 3 by 3 by 3 points (X-Y-Z) - T : 1.5 to 4.5 (averaged) - 2 3 4 - 2 3 4 - ---- K:2 Z: 2 - 2 / 2: 3222. 3223. 3224. - 3 / 3: 3232. 3233. 3234. - 4 / 4: 3242. 3243. 3244. - ---- K:3 Z: 3 - 2 / 2: 3322. 3323. 3324. - 3 / 3: 3332. 3333. 3334. - 4 / 4: 3342. 3343. 3344. - ---- K:4 Z: 4 - 2 / 2: 3422. 3423. 3424. - 3 / 3: 3432. 3433. 3434. - 4 / 4: 3442. 3443. 3444. -LIST v[x=@sbx,y=@sbx,t=@sbx,k=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on X - box smoothed by 3 pts on Y - box smoothed by 3 pts on T - SUBSET : 3 by 3 by 3 points (X-Y-T) - Z : 1.5 to 4.5 (averaged) - 2 3 4 - 2 3 4 - ---- L:2 T: 2 - 2 / 2: 2322. 2323. 2324. - 3 / 3: 2332. 2333. 2334. - 4 / 4: 2342. 2343. 2344. - ---- L:3 T: 3 - 2 / 2: 3322. 3323. 3324. - 3 / 3: 3332. 3333. 3334. - 4 / 4: 3342. 3343. 3344. - ---- L:4 T: 4 - 2 / 2: 4322. 4323. 4324. - 3 / 3: 4332. 4333. 4334. - 4 / 4: 4342. 4343. 4344. -LIST v[x=@sbx,z=@sbx,t=@sbx,j=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on X - box smoothed by 3 pts on Z - box smoothed by 3 pts on T - SUBSET : 3 by 3 by 3 points (X-Z-T) - Y : 1.5 to 4.5 (averaged) - 2 3 4 - 2 3 4 - ---- L:2 T: 2 - 2 / 2: 2232. 2233. 2234. - 3 / 3: 2332. 2333. 2334. - 4 / 4: 2432. 2433. 2434. - ---- L:3 T: 3 - 2 / 2: 3232. 3233. 3234. - 3 / 3: 3332. 3333. 3334. - 4 / 4: 3432. 3433. 3434. - ---- L:4 T: 4 - 2 / 2: 4232. 4233. 4234. - 3 / 3: 4332. 4333. 4334. - 4 / 4: 4432. 4433. 4434. -LIST v[y=@sbx,z=@sbx,t=@sbx,i=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on Y - box smoothed by 3 pts on Z - box smoothed by 3 pts on T - SUBSET : 3 by 3 by 3 points (Y-Z-T) - X : 1.5 to 4.5 (averaged) - 2 3 4 - 2 3 4 - ---- L:2 T: 2 - 2 / 2: 2223. 2233. 2243. - 3 / 3: 2323. 2333. 2343. - 4 / 4: 2423. 2433. 2443. - ---- L:3 T: 3 - 2 / 2: 3223. 3233. 3243. - 3 / 3: 3323. 3333. 3343. - 4 / 4: 3423. 3433. 3443. - ---- L:4 T: 4 - 2 / 2: 4223. 4233. 4243. - 3 / 3: 4323. 4333. 4343. - 4 / 4: 4423. 4433. 4443. - -! planes of data -LIST v[x=@sbx,y=@sbx,k=@ave,l=@ave] !XY - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on X - box smoothed by 3 pts on Y - SUBSET : 3 by 3 points (X-Y) - Z : 1.5 to 4.5 (ZT ave) - T : 1.5 to 4.5 (ZT ave) - 2 3 4 - 2 3 4 - 2 / 2: 3322. 3323. 3324. - 3 / 3: 3332. 3333. 3334. - 4 / 4: 3342. 3343. 3344. -LIST v[x=@sbx,z=@sbx,j=@ave,l=@ave] !XZ - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on X - box smoothed by 3 pts on Z - SUBSET : 3 by 3 points (X-Z) - Y : 1.5 to 4.5 (YT ave) - T : 1.5 to 4.5 (YT ave) - 2 3 4 - 2 3 4 - 2 / 2: 3232. 3233. 3234. - 3 / 3: 3332. 3333. 3334. - 4 / 4: 3432. 3433. 3434. -LIST v[x=@sbx,t=@sbx,j=@ave,k=@ave] !XT - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on X - box smoothed by 3 pts on T - SUBSET : 3 by 3 points (X-T) - Y : 1.5 to 4.5 (YZ ave) - Z : 1.5 to 4.5 (YZ ave) - 2 3 4 - 2 3 4 - 2 / 2: 2332. 2333. 2334. - 3 / 3: 3332. 3333. 3334. - 4 / 4: 4332. 4333. 4334. -LIST v[y=@sbx,z=@sbx,i=@ave,l=@ave] !YZ - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on Y - box smoothed by 3 pts on Z - SUBSET : 3 by 3 points (Y-Z) - X : 1.5 to 4.5 (XT ave) - T : 1.5 to 4.5 (XT ave) - 2 3 4 - 2 3 4 - 2 / 2: 3223. 3233. 3243. - 3 / 3: 3323. 3333. 3343. - 4 / 4: 3423. 3433. 3443. -LIST v[y=@sbx,t=@sbx,i=@ave,k=@ave] !YT - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on Y - box smoothed by 3 pts on T - SUBSET : 3 by 3 points (Y-T) - X : 1.5 to 4.5 (XZ ave) - Z : 1.5 to 4.5 (XZ ave) - 2 3 4 - 2 3 4 - 2 / 2: 2323. 2333. 2343. - 3 / 3: 3323. 3333. 3343. - 4 / 4: 4323. 4333. 4343. -LIST v[z=@sbx,t=@sbx,i=@ave,j=@ave] !ZT - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on Z - box smoothed by 3 pts on T - SUBSET : 3 by 3 points (Z-T) - X : 1.5 to 4.5 (XY ave) - Y : 1.5 to 4.5 (XY ave) - 2 3 4 - 2 3 4 - 2 / 2: 2233. 2333. 2433. - 3 / 3: 3233. 3333. 3433. - 4 / 4: 4233. 4333. 4433. - -! lines of data -LIST/ORDER=X v[x=@sbx,j=@ave,k=@ave,l=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on X - SUBSET : 3 points (X) - Y : 1.5 to 4.5 (YZT ave) - Z : 1.5 to 4.5 (YZT ave) - T : 1.5 to 4.5 (YZT ave) - 2 3 4 - 2 3 4 - 3332. 3333. 3334. -LIST/ORDER=Y v[y=@sbx,i=@ave,k=@ave,l=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on Y - SUBSET : 3 points (Y) - X : 1.5 to 4.5 (XZT ave) - Z : 1.5 to 4.5 (XZT ave) - T : 1.5 to 4.5 (XZT ave) - 2 3 4 - 2 3 4 - 3323. 3333. 3343. -LIST/ORDER=Z v[z=@sbx,i=@ave,j=@ave,l=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on Z - SUBSET : 3 points (Z) - X : 1.5 to 4.5 (XYT ave) - Y : 1.5 to 4.5 (XYT ave) - T : 1.5 to 4.5 (XYT ave) - 2 3 4 - 2 3 4 - 3233. 3333. 3433. -LIST/ORDER=T v[t=@sbx,i=@ave,j=@ave,k=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - box smoothed by 3 pts on T - SUBSET : 3 points (T) - X : 1.5 to 4.5 (XYZ ave) - Y : 1.5 to 4.5 (XYZ ave) - Z : 1.5 to 4.5 (XYZ ave) - 2 3 4 - 2 3 4 - 2333. 3333. 4333. - -! ******** file variable ************ -CANCEL VARIABLE V -USE gt4d011 -SET REGION/I=101:103/J=46:48/K=2:4/L=2:4 -SET EXPRESSION v -GO bn_in_plane.sub -! BN200_COMPRESS.SUB_V -! list the variable v averaged on various geometries - -! this routine assumes that a 4-D region and an expression are already set - -! full data region -LIST v[x=@sbx,y=@sbx,z=@sbx,t=@sbx] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on X - box smoothed by 3 pts on Y - box smoothed by 3 pts on Z - box smoothed by 3 pts on T - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 by 3 by 3 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 129W 128W 127W - 101 102 103 - ---- L:2 T: 23-AUG-1982 14:00 - ---- K:2 Z: 15 - 1N / 48: 2.849 4.058 5.125 - 0.67N / 47: 1.415 2.665 3.817 - 0.33N / 46: -0.848 0.534 1.821 - ---- K:3 Z: 25 - 1N / 48: -2.896 -1.523 -0.356 - 0.67N / 47: -4.228 -2.855 -1.590 - 0.33N / 46: -5.712 -4.222 -2.782 - ---- K:4 Z: 35 - 1N / 48: -6.759 -5.268 -4.029 - 0.67N / 47: -7.824 -6.405 -5.032 - 0.33N / 46: -8.195 -6.626 -5.019 - ---- L:3 T: 29-AUG-1982 16:00 - ---- K:2 Z: 15 - 1N / 48: 2.921 4.900 6.164 - 0.67N / 47: 1.949 4.139 5.405 - 0.33N / 46: 0.232 2.556 3.808 - ---- K:3 Z: 25 - 1N / 48: -2.893 -0.649 0.564 - 0.67N / 47: -3.906 -1.567 -0.284 - 0.33N / 46: -5.003 -2.591 -1.204 - ---- K:4 Z: 35 - 1N / 48: -6.685 -4.117 -2.890 - 0.67N / 47: -7.574 -5.111 -3.733 - 0.33N / 46: -7.680 -5.189 -3.608 - ---- L:4 T: 04-SEP-1982 18:00 - ---- K:2 Z: 15 - 1N / 48: 3.252 5.404 6.662 - 0.67N / 47: 2.651 5.141 6.269 - 0.33N / 46: 1.418 4.032 4.953 - ---- K:3 Z: 25 - 1N / 48: -2.821 -0.259 0.807 - 0.67N / 47: -3.539 -0.836 0.184 - 0.33N / 46: -4.302 -1.591 -0.594 - ---- K:4 Z: 35 - 1N / 48: -6.758 -3.638 -2.600 - 0.67N / 47: -7.392 -4.438 -3.362 - 0.33N / 46: -7.280 -4.436 -3.244 - -! cubes of data -LIST v[x=@sbx,y=@sbx,z=@sbx,l=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on X - box smoothed by 3 pts on Y - box smoothed by 3 pts on Z - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 by 3 points (LONGITUDE-LATITUDE-DEPTH (m)) - TIME : 20-AUG-1982 13:00 to 07-SEP-1982 19:00 (averaged) - 129W 128W 127W - 101 102 103 - ---- K:2 Z: 15 - 1N / 48: 2.921 4.900 6.164 - 0.67N / 47: 1.949 4.139 5.405 - 0.33N / 46: 0.232 2.556 3.808 - ---- K:3 Z: 25 - 1N / 48: -2.893 -0.649 0.564 - 0.67N / 47: -3.906 -1.567 -0.284 - 0.33N / 46: -5.003 -2.591 -1.204 - ---- K:4 Z: 35 - 1N / 48: -6.685 -4.117 -2.890 - 0.67N / 47: -7.574 -5.111 -3.733 - 0.33N / 46: -7.680 -5.189 -3.608 -LIST v[x=@sbx,y=@sbx,t=@sbx,k=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on X - box smoothed by 3 pts on Y - box smoothed by 3 pts on T - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 by 3 points (LONGITUDE-LATITUDE-TIME) - DEPTH (m): 10 to 40 (averaged) - 129W 128W 127W - 101 102 103 - ---- L:2 T: 23-AUG-1982 14:00 - 1N / 48: -2.896 -1.523 -0.356 - 0.67N / 47: -4.228 -2.855 -1.590 - 0.33N / 46: -5.712 -4.222 -2.782 - ---- L:3 T: 29-AUG-1982 16:00 - 1N / 48: -2.893 -0.649 0.564 - 0.67N / 47: -3.906 -1.567 -0.284 - 0.33N / 46: -5.003 -2.591 -1.204 - ---- L:4 T: 04-SEP-1982 18:00 - 1N / 48: -2.821 -0.259 0.807 - 0.67N / 47: -3.539 -0.836 0.184 - 0.33N / 46: -4.302 -1.591 -0.594 -LIST v[x=@sbx,z=@sbx,t=@sbx,j=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on X - box smoothed by 3 pts on Z - box smoothed by 3 pts on T - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 by 3 points (LONGITUDE-DEPTH (m)-TIME) - LATITUDE : 0.167N to 1.167N (averaged) - 129W 128W 127W - 101 102 103 - ---- L:2 T: 23-AUG-1982 14:00 - 15 / 2: 1.415 2.665 3.817 - 25 / 3: -4.228 -2.855 -1.590 - 35 / 4: -7.824 -6.405 -5.032 - ---- L:3 T: 29-AUG-1982 16:00 - 15 / 2: 1.949 4.139 5.405 - 25 / 3: -3.906 -1.567 -0.284 - 35 / 4: -7.574 -5.111 -3.733 - ---- L:4 T: 04-SEP-1982 18:00 - 15 / 2: 2.651 5.141 6.269 - 25 / 3: -3.539 -0.836 0.184 - 35 / 4: -7.392 -4.438 -3.362 -LIST v[y=@sbx,z=@sbx,t=@sbx,i=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on Y - box smoothed by 3 pts on Z - box smoothed by 3 pts on T - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 by 3 points (LATITUDE-DEPTH (m)-TIME) - LONGITUDE: 129.5W to 126.5W (averaged) - 0.33N 0.67N 1N - 46 47 48 - ---- L:2 T: 23-AUG-1982 14:00 - 15 / 2: 0.534 2.665 4.058 - 25 / 3: -4.222 -2.855 -1.523 - 35 / 4: -6.626 -6.405 -5.268 - ---- L:3 T: 29-AUG-1982 16:00 - 15 / 2: 2.556 4.139 4.900 - 25 / 3: -2.591 -1.567 -0.649 - 35 / 4: -5.189 -5.111 -4.117 - ---- L:4 T: 04-SEP-1982 18:00 - 15 / 2: 4.032 5.141 5.404 - 25 / 3: -1.591 -0.836 -0.259 - 35 / 4: -4.436 -4.438 -3.638 - -! planes of data -LIST v[x=@sbx,y=@sbx,k=@ave,l=@ave] !XY - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on X - box smoothed by 3 pts on Y - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 points (LONGITUDE-LATITUDE) - DEPTH (m): 10 to 40 (ZT ave) - TIME : 20-AUG-1982 13:00 to 07-SEP-1982 19:00 (ZT ave) - 129W 128W 127W - 101 102 103 - 1N / 48: -2.893 -0.649 0.564 - 0.67N / 47: -3.906 -1.567 -0.284 - 0.33N / 46: -5.003 -2.591 -1.204 -LIST v[x=@sbx,z=@sbx,j=@ave,l=@ave] !XZ - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on X - box smoothed by 3 pts on Z - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 points (LONGITUDE-DEPTH (m)) - LATITUDE : 0.167N to 1.167N (YT ave) - TIME : 20-AUG-1982 13:00 to 07-SEP-1982 19:00 (YT ave) - 129W 128W 127W - 101 102 103 - 15 / 2: 1.949 4.139 5.405 - 25 / 3: -3.906 -1.567 -0.284 - 35 / 4: -7.574 -5.111 -3.733 -LIST v[x=@sbx,t=@sbx,j=@ave,k=@ave] !XT - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on X - box smoothed by 3 pts on T - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 points (LONGITUDE-TIME) - LATITUDE : 0.167N to 1.167N (YZ ave) - DEPTH (m): 10 to 40 (YZ ave) - 129W 128W 127W - 101 102 103 - 23-AUG-1982 14 / 2: -4.228 -2.855 -1.590 - 29-AUG-1982 16 / 3: -3.906 -1.567 -0.284 - 04-SEP-1982 18 / 4: -3.539 -0.836 0.184 -LIST v[y=@sbx,z=@sbx,i=@ave,l=@ave] !YZ - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on Y - box smoothed by 3 pts on Z - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 points (LATITUDE-DEPTH (m)) - LONGITUDE: 129.5W to 126.5W (XT ave) - TIME : 20-AUG-1982 13:00 to 07-SEP-1982 19:00 (XT ave) - 0.33N 0.67N 1N - 46 47 48 - 15 / 2: 2.556 4.139 4.900 - 25 / 3: -2.591 -1.567 -0.649 - 35 / 4: -5.189 -5.111 -4.117 -LIST v[y=@sbx,t=@sbx,i=@ave,k=@ave] !YT - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on Y - box smoothed by 3 pts on T - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 points (LATITUDE-TIME) - LONGITUDE: 129.5W to 126.5W (XZ ave) - DEPTH (m): 10 to 40 (XZ ave) - 0.33N 0.67N 1N - 46 47 48 - 23-AUG-1982 14 / 2: -4.222 -2.855 -1.523 - 29-AUG-1982 16 / 3: -2.591 -1.567 -0.649 - 04-SEP-1982 18 / 4: -1.591 -0.836 -0.259 -LIST v[z=@sbx,t=@sbx,i=@ave,j=@ave] !ZT - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on Z - box smoothed by 3 pts on T - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 points (DEPTH (m)-TIME) - LONGITUDE: 129.5W to 126.5W (XY ave) - LATITUDE : 0.167N to 1.167N (XY ave) - 15 25 35 - 2 3 4 - 23-AUG-1982 14 / 2: 2.665 -2.855 -6.405 - 29-AUG-1982 16 / 3: 4.139 -1.567 -5.111 - 04-SEP-1982 18 / 4: 5.141 -0.836 -4.438 - -! lines of data -LIST/ORDER=X v[x=@sbx,j=@ave,k=@ave,l=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on X - FILENAME : gt4d011.cdf - SUBSET : 3 points (LONGITUDE) - LATITUDE : 0.167N to 1.167N (YZT ave) - DEPTH (m): 10 to 40 (YZT ave) - TIME : 20-AUG-1982 13:00 to 07-SEP-1982 19:00 (YZT ave) - 129W 128W 127W - 101 102 103 - -3.906 -1.567 -0.284 -LIST/ORDER=Y v[y=@sbx,i=@ave,k=@ave,l=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on Y - FILENAME : gt4d011.cdf - SUBSET : 3 points (LATITUDE) - LONGITUDE: 129.5W to 126.5W (XZT ave) - DEPTH (m): 10 to 40 (XZT ave) - TIME : 20-AUG-1982 13:00 to 07-SEP-1982 19:00 (XZT ave) - 0.33N 0.67N 1N - 46 47 48 - -2.591 -1.567 -0.649 -LIST/ORDER=Z v[z=@sbx,i=@ave,j=@ave,l=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on Z - FILENAME : gt4d011.cdf - SUBSET : 3 points (DEPTH (m)) - LONGITUDE: 129.5W to 126.5W (XYT ave) - LATITUDE : 0.167N to 1.167N (XYT ave) - TIME : 20-AUG-1982 13:00 to 07-SEP-1982 19:00 (XYT ave) - 15 25 35 - 2 3 4 - 4.139 -1.567 -5.111 -LIST/ORDER=T v[t=@sbx,i=@ave,j=@ave,k=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - box smoothed by 3 pts on T - FILENAME : gt4d011.cdf - SUBSET : 3 points (TIME) - LONGITUDE: 129.5W to 126.5W (XYZ ave) - LATITUDE : 0.167N to 1.167N (XYZ ave) - DEPTH (m): 10 to 40 (XYZ ave) - 1982 1982 1982 - 2 3 4 - -2.855 -1.567 -0.836 - -GO bn_reset bn_compress -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_compress -GO bn_compress -! bn200_compress.JNL -! benchmark various geometries obtained by compressing FERRET data with @AVE -! similar tests are performed on: -! abstract variable -! file variable -! diagnostic variable - -! ******** abstract variable ************ -LET v = i + 10*j + 100*k + 1000*l -SET REGION/I=1:3/J=1:3/K=1:3/L=1:3 -GO bn_compress.sub_v -! BN200_COMPRESS.SUB_V -! list the variable v averaged on various geometries - -! this routine assumes that a 4-D region and an expression are already set - -! full data region -LIST v - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 by 3 by 3 by 3 points (X-Y-Z-T) - 1 2 3 - 1 2 3 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1111. 1112. 1113. - 2 / 2: 1121. 1122. 1123. - 3 / 3: 1131. 1132. 1133. - ---- K:2 Z: 2 - 1 / 1: 1211. 1212. 1213. - 2 / 2: 1221. 1222. 1223. - 3 / 3: 1231. 1232. 1233. - ---- K:3 Z: 3 - 1 / 1: 1311. 1312. 1313. - 2 / 2: 1321. 1322. 1323. - 3 / 3: 1331. 1332. 1333. - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 2111. 2112. 2113. - 2 / 2: 2121. 2122. 2123. - 3 / 3: 2131. 2132. 2133. - ---- K:2 Z: 2 - 1 / 1: 2211. 2212. 2213. - 2 / 2: 2221. 2222. 2223. - 3 / 3: 2231. 2232. 2233. - ---- K:3 Z: 3 - 1 / 1: 2311. 2312. 2313. - 2 / 2: 2321. 2322. 2323. - 3 / 3: 2331. 2332. 2333. - ---- L:3 T: 3 - ---- K:1 Z: 1 - 1 / 1: 3111. 3112. 3113. - 2 / 2: 3121. 3122. 3123. - 3 / 3: 3131. 3132. 3133. - ---- K:2 Z: 2 - 1 / 1: 3211. 3212. 3213. - 2 / 2: 3221. 3222. 3223. - 3 / 3: 3231. 3232. 3233. - ---- K:3 Z: 3 - 1 / 1: 3311. 3312. 3313. - 2 / 2: 3321. 3322. 3323. - 3 / 3: 3331. 3332. 3333. - -! cubes of data -LIST v[l=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 by 3 by 3 points (X-Y-Z) - T : 0.5 to 3.5 (averaged) - 1 2 3 - 1 2 3 - ---- K:1 Z: 1 - 1 / 1: 2111. 2112. 2113. - 2 / 2: 2121. 2122. 2123. - 3 / 3: 2131. 2132. 2133. - ---- K:2 Z: 2 - 1 / 1: 2211. 2212. 2213. - 2 / 2: 2221. 2222. 2223. - 3 / 3: 2231. 2232. 2233. - ---- K:3 Z: 3 - 1 / 1: 2311. 2312. 2313. - 2 / 2: 2321. 2322. 2323. - 3 / 3: 2331. 2332. 2333. -LIST v[k=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 by 3 by 3 points (X-Y-T) - Z : 0.5 to 3.5 (averaged) - 1 2 3 - 1 2 3 - ---- L:1 T: 1 - 1 / 1: 1211. 1212. 1213. - 2 / 2: 1221. 1222. 1223. - 3 / 3: 1231. 1232. 1233. - ---- L:2 T: 2 - 1 / 1: 2211. 2212. 2213. - 2 / 2: 2221. 2222. 2223. - 3 / 3: 2231. 2232. 2233. - ---- L:3 T: 3 - 1 / 1: 3211. 3212. 3213. - 2 / 2: 3221. 3222. 3223. - 3 / 3: 3231. 3232. 3233. -LIST v[j=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 by 3 by 3 points (X-Z-T) - Y : 0.5 to 3.5 (averaged) - 1 2 3 - 1 2 3 - ---- L:1 T: 1 - 1 / 1: 1121. 1122. 1123. - 2 / 2: 1221. 1222. 1223. - 3 / 3: 1321. 1322. 1323. - ---- L:2 T: 2 - 1 / 1: 2121. 2122. 2123. - 2 / 2: 2221. 2222. 2223. - 3 / 3: 2321. 2322. 2323. - ---- L:3 T: 3 - 1 / 1: 3121. 3122. 3123. - 2 / 2: 3221. 3222. 3223. - 3 / 3: 3321. 3322. 3323. -LIST v[i=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 by 3 by 3 points (Y-Z-T) - X : 0.5 to 3.5 (averaged) - 1 2 3 - 1 2 3 - ---- L:1 T: 1 - 1 / 1: 1112. 1122. 1132. - 2 / 2: 1212. 1222. 1232. - 3 / 3: 1312. 1322. 1332. - ---- L:2 T: 2 - 1 / 1: 2112. 2122. 2132. - 2 / 2: 2212. 2222. 2232. - 3 / 3: 2312. 2322. 2332. - ---- L:3 T: 3 - 1 / 1: 3112. 3122. 3132. - 2 / 2: 3212. 3222. 3232. - 3 / 3: 3312. 3322. 3332. - -! planes of data -LIST v[k=@ave,l=@ave] !XY - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 by 3 points (X-Y) - Z : 0.5 to 3.5 (ZT ave) - T : 0.5 to 3.5 (ZT ave) - 1 2 3 - 1 2 3 - 1 / 1: 2211. 2212. 2213. - 2 / 2: 2221. 2222. 2223. - 3 / 3: 2231. 2232. 2233. -LIST v[j=@ave,l=@ave] !XZ - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 by 3 points (X-Z) - Y : 0.5 to 3.5 (YT ave) - T : 0.5 to 3.5 (YT ave) - 1 2 3 - 1 2 3 - 1 / 1: 2121. 2122. 2123. - 2 / 2: 2221. 2222. 2223. - 3 / 3: 2321. 2322. 2323. -LIST v[j=@ave,k=@ave] !XT - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 by 3 points (X-T) - Y : 0.5 to 3.5 (YZ ave) - Z : 0.5 to 3.5 (YZ ave) - 1 2 3 - 1 2 3 - 1 / 1: 1221. 1222. 1223. - 2 / 2: 2221. 2222. 2223. - 3 / 3: 3221. 3222. 3223. -LIST v[i=@ave,l=@ave] !YZ - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 by 3 points (Y-Z) - X : 0.5 to 3.5 (XT ave) - T : 0.5 to 3.5 (XT ave) - 1 2 3 - 1 2 3 - 1 / 1: 2112. 2122. 2132. - 2 / 2: 2212. 2222. 2232. - 3 / 3: 2312. 2322. 2332. -LIST v[i=@ave,k=@ave] !YT - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 by 3 points (Y-T) - X : 0.5 to 3.5 (XZ ave) - Z : 0.5 to 3.5 (XZ ave) - 1 2 3 - 1 2 3 - 1 / 1: 1212. 1222. 1232. - 2 / 2: 2212. 2222. 2232. - 3 / 3: 3212. 3222. 3232. -LIST v[i=@ave,j=@ave] !ZT - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 by 3 points (Z-T) - X : 0.5 to 3.5 (XY ave) - Y : 0.5 to 3.5 (XY ave) - 1 2 3 - 1 2 3 - 1 / 1: 1122. 1222. 1322. - 2 / 2: 2122. 2222. 2322. - 3 / 3: 3122. 3222. 3322. - -! lines of data -LIST/ORDER=X v[j=@ave,k=@ave,l=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 points (X) - Y : 0.5 to 3.5 (YZT ave) - Z : 0.5 to 3.5 (YZT ave) - T : 0.5 to 3.5 (YZT ave) - 1 2 3 - 1 2 3 - 2221. 2222. 2223. -LIST/ORDER=Y v[i=@ave,k=@ave,l=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 points (Y) - X : 0.5 to 3.5 (XZT ave) - Z : 0.5 to 3.5 (XZT ave) - T : 0.5 to 3.5 (XZT ave) - 1 2 3 - 1 2 3 - 2212. 2222. 2232. -LIST/ORDER=Z v[i=@ave,j=@ave,l=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 points (Z) - X : 0.5 to 3.5 (XYT ave) - Y : 0.5 to 3.5 (XYT ave) - T : 0.5 to 3.5 (XYT ave) - 1 2 3 - 1 2 3 - 2122. 2222. 2322. -LIST/ORDER=T v[i=@ave,j=@ave,k=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - SUBSET : 3 points (T) - X : 0.5 to 3.5 (XYZ ave) - Y : 0.5 to 3.5 (XYZ ave) - Z : 0.5 to 3.5 (XYZ ave) - 1 2 3 - 1 2 3 - 1222. 2222. 3222. - -! point of data -LIST/ORDER=X v[i=@ave,j=@ave,k=@ave,l=@ave] - VARIABLE : I + 10*J + 100*K + 1000*L - X : 0.5 to 3.5 (XYZT ave) - Y : 0.5 to 3.5 (XYZT ave) - Z : 0.5 to 3.5 (XYZT ave) - T : 0.5 to 3.5 (XYZT ave) - 2222. - -! ******** file variable ************ -CANCEL VARIABLE V -USE gt4d011 -CANCEL MEMORY/ALL -SET REGION/I=101:103/J=46:48/K=1:3/L=1:3 -SET EXPRESSION v -GO bn_compress.sub_v -! BN200_COMPRESS.SUB_V -! list the variable v averaged on various geometries - -! this routine assumes that a 4-D region and an expression are already set - -! full data region -LIST v - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 by 3 by 3 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 129W 128W 127W - 101 102 103 - ---- L:1 T: 17-AUG-1982 12:00 - ---- K:1 Z: 5 - 1N / 48: 10.50 11.05 11.24 - 0.67N / 47: 7.89 7.84 8.33 - 0.33N / 46: 4.10 4.06 4.78 - ---- K:2 Z: 15 - 1N / 48: 2.85 3.45 3.89 - 0.67N / 47: 0.69 0.73 1.38 - 0.33N / 46: -2.43 -2.33 -1.49 - ---- K:3 Z: 25 - 1N / 48: -3.15 -2.57 -1.79 - 0.67N / 47: -5.26 -5.17 -4.37 - 0.33N / 46: -7.30 -7.07 -6.17 - ---- L:2 T: 23-AUG-1982 14:00 - ---- K:1 Z: 5 - 1N / 48: 10.27 12.27 13.17 - 0.67N / 47: 8.14 9.98 11.31 - 0.33N / 46: 4.79 6.72 8.32 - ---- K:2 Z: 15 - 1N / 48: 2.19 4.29 5.39 - 0.67N / 47: 0.46 2.40 3.88 - 0.33N / 46: -2.18 -0.16 1.57 - ---- K:3 Z: 25 - 1N / 48: -3.70 -1.52 -0.17 - 0.67N / 47: -5.96 -3.85 -2.20 - 0.33N / 46: -7.70 -5.56 -3.69 - ---- L:3 T: 29-AUG-1982 16:00 - ---- K:1 Z: 5 - 1N / 48: 10.11 13.41 14.78 - 0.67N / 47: 9.46 12.65 13.99 - 0.33N / 46: 6.97 10.15 11.50 - ---- K:2 Z: 15 - 1N / 48: 1.84 5.11 6.48 - 0.67N / 47: 1.43 4.64 6.01 - 0.33N / 46: -0.46 2.80 4.22 - ---- K:3 Z: 25 - 1N / 48: -3.16 -0.23 0.86 - 0.67N / 47: -4.97 -1.70 -0.50 - 0.33N / 46: -6.73 -3.24 -1.70 - -! cubes of data -LIST v[l=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 by 3 points (LONGITUDE-LATITUDE-DEPTH (m)) - TIME : 14-AUG-1982 11:00 to 01-SEP-1982 17:00 (averaged) - 129W 128W 127W - 101 102 103 - ---- K:1 Z: 5 - 1N / 48: 10.29 12.24 13.06 - 0.67N / 47: 8.50 10.16 11.21 - 0.33N / 46: 5.29 6.98 8.20 - ---- K:2 Z: 15 - 1N / 48: 2.29 4.28 5.25 - 0.67N / 47: 0.86 2.59 3.76 - 0.33N / 46: -1.69 0.10 1.43 - ---- K:3 Z: 25 - 1N / 48: -3.34 -1.44 -0.37 - 0.67N / 47: -5.40 -3.57 -2.36 - 0.33N / 46: -7.25 -5.29 -3.85 -LIST v[k=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 by 3 points (LONGITUDE-LATITUDE-TIME) - DEPTH (m): 0 to 30 (averaged) - 129W 128W 127W - 101 102 103 - ---- L:1 T: 17-AUG-1982 12:00 - 1N / 48: 3.398 3.976 4.445 - 0.67N / 47: 1.107 1.133 1.784 - 0.33N / 46: -1.881 -1.779 -0.959 - ---- L:2 T: 23-AUG-1982 14:00 - 1N / 48: 2.920 5.015 6.129 - 0.67N / 47: 0.881 2.845 4.328 - 0.33N / 46: -1.696 0.334 2.067 - ---- L:3 T: 29-AUG-1982 16:00 - 1N / 48: 2.933 6.096 7.372 - 0.67N / 47: 1.975 5.195 6.502 - 0.33N / 46: -0.073 3.238 4.671 -LIST v[j=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 by 3 points (LONGITUDE-DEPTH (m)-TIME) - LATITUDE : 0.167N to 1.167N (averaged) - 129W 128W 127W - 101 102 103 - ---- L:1 T: 17-AUG-1982 12:00 - 5 / 1: 7.50 7.65 8.12 - 15 / 2: 0.37 0.62 1.26 - 25 / 3: -5.24 -4.94 -4.11 - ---- L:2 T: 23-AUG-1982 14:00 - 5 / 1: 7.73 9.66 10.93 - 15 / 2: 0.16 2.18 3.61 - 25 / 3: -5.79 -3.64 -2.02 - ---- L:3 T: 29-AUG-1982 16:00 - 5 / 1: 8.85 12.07 13.42 - 15 / 2: 0.94 4.18 5.57 - 25 / 3: -4.95 -1.72 -0.45 -LIST v[i=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 by 3 points (LATITUDE-DEPTH (m)-TIME) - LONGITUDE: 129.5W to 126.5W (averaged) - 0.33N 0.67N 1N - 46 47 48 - ---- L:1 T: 17-AUG-1982 12:00 - 5 / 1: 4.31 8.02 10.93 - 15 / 2: -2.08 0.93 3.39 - 25 / 3: -6.85 -4.93 -2.51 - ---- L:2 T: 23-AUG-1982 14:00 - 5 / 1: 6.61 9.81 11.90 - 15 / 2: -0.25 2.25 3.96 - 25 / 3: -5.65 -4.00 -1.80 - ---- L:3 T: 29-AUG-1982 16:00 - 5 / 1: 9.54 12.04 12.77 - 15 / 2: 2.19 4.03 4.48 - 25 / 3: -3.89 -2.39 -0.84 - -! planes of data -LIST v[k=@ave,l=@ave] !XY - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 points (LONGITUDE-LATITUDE) - DEPTH (m): 0 to 30 (ZT ave) - TIME : 14-AUG-1982 11:00 to 01-SEP-1982 17:00 (ZT ave) - 129W 128W 127W - 101 102 103 - 1N / 48: 3.084 5.029 5.982 - 0.67N / 47: 1.321 3.057 4.204 - 0.33N / 46: -1.217 0.598 1.927 -LIST v[j=@ave,l=@ave] !XZ - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 points (LONGITUDE-DEPTH (m)) - LATITUDE : 0.167N to 1.167N (YT ave) - TIME : 14-AUG-1982 11:00 to 01-SEP-1982 17:00 (YT ave) - 129W 128W 127W - 101 102 103 - 5 / 1: 8.03 9.79 10.82 - 15 / 2: 0.49 2.33 3.48 - 25 / 3: -5.33 -3.43 -2.19 -LIST v[j=@ave,k=@ave] !XT - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 points (LONGITUDE-TIME) - LATITUDE : 0.167N to 1.167N (YZ ave) - DEPTH (m): 0 to 30 (YZ ave) - 129W 128W 127W - 101 102 103 - 17-AUG-1982 12 / 1: 0.875 1.110 1.757 - 23-AUG-1982 14 / 2: 0.701 2.731 4.175 - 29-AUG-1982 16 / 3: 1.612 4.843 6.182 -LIST v[i=@ave,l=@ave] !YZ - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 points (LATITUDE-DEPTH (m)) - LONGITUDE: 129.5W to 126.5W (XT ave) - TIME : 14-AUG-1982 11:00 to 01-SEP-1982 17:00 (XT ave) - 0.33N 0.67N 1N - 46 47 48 - 5 / 1: 6.82 9.96 11.87 - 15 / 2: -0.05 2.40 3.94 - 25 / 3: -5.46 -3.78 -1.72 -LIST v[i=@ave,k=@ave] !YT - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 points (LATITUDE-TIME) - LONGITUDE: 129.5W to 126.5W (XZ ave) - DEPTH (m): 0 to 30 (XZ ave) - 0.33N 0.67N 1N - 46 47 48 - 17-AUG-1982 12 / 1: -1.540 1.341 3.940 - 23-AUG-1982 14 / 2: 0.235 2.684 4.688 - 29-AUG-1982 16 / 3: 2.612 4.557 5.467 -LIST v[i=@ave,j=@ave] !ZT - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 by 3 points (DEPTH (m)-TIME) - LONGITUDE: 129.5W to 126.5W (XY ave) - LATITUDE : 0.167N to 1.167N (XY ave) - 5 15 25 - 1 2 3 - 17-AUG-1982 12 / 1: 7.75 0.75 -4.76 - 23-AUG-1982 14 / 2: 9.44 1.98 -3.82 - 29-AUG-1982 16 / 3: 11.45 3.56 -2.37 - -! lines of data -LIST/ORDER=X v[j=@ave,k=@ave,l=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 points (LONGITUDE) - LATITUDE : 0.167N to 1.167N (YZT ave) - DEPTH (m): 0 to 30 (YZT ave) - TIME : 14-AUG-1982 11:00 to 01-SEP-1982 17:00 (YZT ave) - 129W 128W 127W - 101 102 103 - 1.063 2.895 4.038 -LIST/ORDER=Y v[i=@ave,k=@ave,l=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 points (LATITUDE) - LONGITUDE: 129.5W to 126.5W (XZT ave) - DEPTH (m): 0 to 30 (XZT ave) - TIME : 14-AUG-1982 11:00 to 01-SEP-1982 17:00 (XZT ave) - 0.33N 0.67N 1N - 46 47 48 - 0.436 2.861 4.698 -LIST/ORDER=Z v[i=@ave,j=@ave,l=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 points (DEPTH (m)) - LONGITUDE: 129.5W to 126.5W (XYT ave) - LATITUDE : 0.167N to 1.167N (XYT ave) - TIME : 14-AUG-1982 11:00 to 01-SEP-1982 17:00 (XYT ave) - 5 15 25 - 1 2 3 - 9.547 2.099 -3.651 -LIST/ORDER=T v[i=@ave,j=@ave,k=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 3 points (TIME) - LONGITUDE: 129.5W to 126.5W (XYZ ave) - LATITUDE : 0.167N to 1.167N (XYZ ave) - DEPTH (m): 0 to 30 (XYZ ave) - 1982 1982 1982 - 1 2 3 - 1.247 2.536 4.212 - -! point of data -LIST/ORDER=X v[i=@ave,j=@ave,k=@ave,l=@ave] - VARIABLE : MERIDIONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - LONGITUDE: 129.5W to 126.5W (XYZT ave) - LATITUDE : 0.167N to 1.167N (XYZT ave) - DEPTH (m): 0 to 30 (XYZT ave) - TIME : 14-AUG-1982 11:00 to 01-SEP-1982 17:00 (XYZT ave) - 2.665 - -! **** -! remove call to bn200_compress.sub_qady for portable benchmarks *kob* 5/99 -! **** - -GO bn_reset bn_interpolate -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_interpolate -GO bn_interpolate -! bn200_interpolate.JNL -! benchmark interpolation along various axes - -SET LIST/PRECISION=6 -SET MODE LATITUDE:4 - -LET v = x + 10*y + 100*z + 1000*t -SET REGION/I=1:3/J=1:3/K=1:3/L=1:3 -DEF REG/x=1.5 xpt -DEF REG/y=1.05 ypt -DEF REG/z=1.005 zpt -DEF REG/t=1.0005 tpt - -! first without interpolation -CANCEL MODE INTERPOLATE -GO bn_interpolate.sub -! BN200_INTERPOLATE.SUB -! interpolate in various geometries - -! this routine assumes that a 4-D region and an expression are already set - -! cubes of data -LIST v[@xpt] - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 by 3 points (Y-Z-T) - X : 1 - 1 2 3 - 1 2 3 - ---- L:1 T: 1 - 1 / 1: 1111.00 1121.00 1131.00 - 2 / 2: 1211.00 1221.00 1231.00 - 3 / 3: 1311.00 1321.00 1331.00 - ---- L:2 T: 2 - 1 / 1: 2111.00 2121.00 2131.00 - 2 / 2: 2211.00 2221.00 2231.00 - 3 / 3: 2311.00 2321.00 2331.00 - ---- L:3 T: 3 - 1 / 1: 3111.00 3121.00 3131.00 - 2 / 2: 3211.00 3221.00 3231.00 - 3 / 3: 3311.00 3321.00 3331.00 -LIST v[@ypt] - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 by 3 points (X-Z-T) - Y : 1 - 1 2 3 - 1 2 3 - ---- L:1 T: 1 - 1 / 1: 1111.00 1112.00 1113.00 - 2 / 2: 1211.00 1212.00 1213.00 - 3 / 3: 1311.00 1312.00 1313.00 - ---- L:2 T: 2 - 1 / 1: 2111.00 2112.00 2113.00 - 2 / 2: 2211.00 2212.00 2213.00 - 3 / 3: 2311.00 2312.00 2313.00 - ---- L:3 T: 3 - 1 / 1: 3111.00 3112.00 3113.00 - 2 / 2: 3211.00 3212.00 3213.00 - 3 / 3: 3311.00 3312.00 3313.00 -LIST v[@zpt] - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 by 3 points (X-Y-T) - Z : 1 - 1 2 3 - 1 2 3 - ---- L:1 T: 1 - 1 / 1: 1111.00 1112.00 1113.00 - 2 / 2: 1121.00 1122.00 1123.00 - 3 / 3: 1131.00 1132.00 1133.00 - ---- L:2 T: 2 - 1 / 1: 2111.00 2112.00 2113.00 - 2 / 2: 2121.00 2122.00 2123.00 - 3 / 3: 2131.00 2132.00 2133.00 - ---- L:3 T: 3 - 1 / 1: 3111.00 3112.00 3113.00 - 2 / 2: 3121.00 3122.00 3123.00 - 3 / 3: 3131.00 3132.00 3133.00 -LIST v[@tpt] - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 by 3 points (X-Y-Z) - T : 1 - 1 2 3 - 1 2 3 - ---- K:1 Z: 1 - 1 / 1: 1111.00 1112.00 1113.00 - 2 / 2: 1121.00 1122.00 1123.00 - 3 / 3: 1131.00 1132.00 1133.00 - ---- K:2 Z: 2 - 1 / 1: 1211.00 1212.00 1213.00 - 2 / 2: 1221.00 1222.00 1223.00 - 3 / 3: 1231.00 1232.00 1233.00 - ---- K:3 Z: 3 - 1 / 1: 1311.00 1312.00 1313.00 - 2 / 2: 1321.00 1322.00 1323.00 - 3 / 3: 1331.00 1332.00 1333.00 - -! planes of data -LIST v[@zpt,@tpt] !XY - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 points (X-Y) - Z : 1 - T : 1 - 1 2 3 - 1 2 3 - 1 / 1: 1111.00 1112.00 1113.00 - 2 / 2: 1121.00 1122.00 1123.00 - 3 / 3: 1131.00 1132.00 1133.00 -LIST v[@ypt,@tpt] !XZ - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 points (X-Z) - Y : 1 - T : 1 - 1 2 3 - 1 2 3 - 1 / 1: 1111.00 1112.00 1113.00 - 2 / 2: 1211.00 1212.00 1213.00 - 3 / 3: 1311.00 1312.00 1313.00 -LIST v[@ypt,@zpt] !XT - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 points (X-T) - Y : 1 - Z : 1 - 1 2 3 - 1 2 3 - 1 / 1: 1111.00 1112.00 1113.00 - 2 / 2: 2111.00 2112.00 2113.00 - 3 / 3: 3111.00 3112.00 3113.00 -LIST v[@xpt,@tpt] !YZ - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 points (Y-Z) - X : 1 - T : 1 - 1 2 3 - 1 2 3 - 1 / 1: 1111.00 1121.00 1131.00 - 2 / 2: 1211.00 1221.00 1231.00 - 3 / 3: 1311.00 1321.00 1331.00 -LIST v[@xpt,@zpt] !YT - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 points (Y-T) - X : 1 - Z : 1 - 1 2 3 - 1 2 3 - 1 / 1: 1111.00 1121.00 1131.00 - 2 / 2: 2111.00 2121.00 2131.00 - 3 / 3: 3111.00 3121.00 3131.00 -LIST v[@xpt,@ypt] !ZT - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 points (Z-T) - X : 1 - Y : 1 - 1 2 3 - 1 2 3 - 1 / 1: 1111.00 1211.00 1311.00 - 2 / 2: 2111.00 2211.00 2311.00 - 3 / 3: 3111.00 3211.00 3311.00 - -! lines of data -LIST/ORDER=T v[@xpt,@ypt,@zpt] ! T - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 points (T) - X : 1 - Y : 1 - Z : 1 - 1 2 3 - 1 2 3 - 1111.00 2111.00 3111.00 -LIST/ORDER=Z v[@xpt,@ypt,@tpt] ! Z - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 points (Z) - X : 1 - Y : 1 - T : 1 - 1 2 3 - 1 2 3 - 1111.00 1211.00 1311.00 -LIST/ORDER=Y v[@xpt,@zpt,@tpt] ! Y - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 points (Y) - X : 1 - Z : 1 - T : 1 - 1 2 3 - 1 2 3 - 1111.00 1121.00 1131.00 -LIST/ORDER=X v[@ypt,@zpt,@tpt] ! X - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 points (X) - Y : 1 - Z : 1 - T : 1 - 1 2 3 - 1 2 3 - 1111.00 1112.00 1113.00 - -! point of data -LIST v[@xpt,@ypt,@zpt,@tpt] - VARIABLE : X + 10*Y + 100*Z + 1000*T - X : 1 - Y : 1 - Z : 1 - T : 1 - 1111.00 - -! then with interpolation -SET MODE INTERPOLATE -GO bn_interpolate.sub -! BN200_INTERPOLATE.SUB -! interpolate in various geometries - -! this routine assumes that a 4-D region and an expression are already set - -! cubes of data -LIST v[@xpt] - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 by 3 points (Y-Z-T) - X : 1.5 (interpolated) - 1 2 3 - 1 2 3 - ---- L:1 T: 1 - 1 / 1: 1111.50 1121.50 1131.50 - 2 / 2: 1211.50 1221.50 1231.50 - 3 / 3: 1311.50 1321.50 1331.50 - ---- L:2 T: 2 - 1 / 1: 2111.50 2121.50 2131.50 - 2 / 2: 2211.50 2221.50 2231.50 - 3 / 3: 2311.50 2321.50 2331.50 - ---- L:3 T: 3 - 1 / 1: 3111.50 3121.50 3131.50 - 2 / 2: 3211.50 3221.50 3231.50 - 3 / 3: 3311.50 3321.50 3331.50 -LIST v[@ypt] - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 by 3 points (X-Z-T) - Y : 1.05 (interpolated) - 1 2 3 - 1 2 3 - ---- L:1 T: 1 - 1 / 1: 1111.50 1112.50 1113.50 - 2 / 2: 1211.50 1212.50 1213.50 - 3 / 3: 1311.50 1312.50 1313.50 - ---- L:2 T: 2 - 1 / 1: 2111.50 2112.50 2113.50 - 2 / 2: 2211.50 2212.50 2213.50 - 3 / 3: 2311.50 2312.50 2313.50 - ---- L:3 T: 3 - 1 / 1: 3111.50 3112.50 3113.50 - 2 / 2: 3211.50 3212.50 3213.50 - 3 / 3: 3311.50 3312.50 3313.50 -LIST v[@zpt] - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 by 3 points (X-Y-T) - Z : 1.005 (interpolated) - 1 2 3 - 1 2 3 - ---- L:1 T: 1 - 1 / 1: 1111.50 1112.50 1113.50 - 2 / 2: 1121.50 1122.50 1123.50 - 3 / 3: 1131.50 1132.50 1133.50 - ---- L:2 T: 2 - 1 / 1: 2111.50 2112.50 2113.50 - 2 / 2: 2121.50 2122.50 2123.50 - 3 / 3: 2131.50 2132.50 2133.50 - ---- L:3 T: 3 - 1 / 1: 3111.50 3112.50 3113.50 - 2 / 2: 3121.50 3122.50 3123.50 - 3 / 3: 3131.50 3132.50 3133.50 -LIST v[@tpt] - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 by 3 points (X-Y-Z) - T : 1.0005 (interpolated) - 1 2 3 - 1 2 3 - ---- K:1 Z: 1 - 1 / 1: 1111.50 1112.50 1113.50 - 2 / 2: 1121.50 1122.50 1123.50 - 3 / 3: 1131.50 1132.50 1133.50 - ---- K:2 Z: 2 - 1 / 1: 1211.50 1212.50 1213.50 - 2 / 2: 1221.50 1222.50 1223.50 - 3 / 3: 1231.50 1232.50 1233.50 - ---- K:3 Z: 3 - 1 / 1: 1311.50 1312.50 1313.50 - 2 / 2: 1321.50 1322.50 1323.50 - 3 / 3: 1331.50 1332.50 1333.50 - -! planes of data -LIST v[@zpt,@tpt] !XY - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 points (X-Y) - Z : 1.005 (interpolated) - T : 1.0005 (interpolated) - 1 2 3 - 1 2 3 - 1 / 1: 1112.00 1113.00 1114.00 - 2 / 2: 1122.00 1123.00 1124.00 - 3 / 3: 1132.00 1133.00 1134.00 -LIST v[@ypt,@tpt] !XZ - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 points (X-Z) - Y : 1.05 (interpolated) - T : 1.0005 (interpolated) - 1 2 3 - 1 2 3 - 1 / 1: 1112.00 1113.00 1114.00 - 2 / 2: 1212.00 1213.00 1214.00 - 3 / 3: 1312.00 1313.00 1314.00 -LIST v[@ypt,@zpt] !XT - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 points (X-T) - Y : 1.05 (interpolated) - Z : 1.005 (interpolated) - 1 2 3 - 1 2 3 - 1 / 1: 1112.00 1113.00 1114.00 - 2 / 2: 2112.00 2113.00 2114.00 - 3 / 3: 3112.00 3113.00 3114.00 -LIST v[@xpt,@tpt] !YZ - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 points (Y-Z) - X : 1.5 (interpolated) - T : 1.0005 (interpolated) - 1 2 3 - 1 2 3 - 1 / 1: 1112.00 1122.00 1132.00 - 2 / 2: 1212.00 1222.00 1232.00 - 3 / 3: 1312.00 1322.00 1332.00 -LIST v[@xpt,@zpt] !YT - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 points (Y-T) - X : 1.5 (interpolated) - Z : 1.005 (interpolated) - 1 2 3 - 1 2 3 - 1 / 1: 1112.00 1122.00 1132.00 - 2 / 2: 2112.00 2122.00 2132.00 - 3 / 3: 3112.00 3122.00 3132.00 -LIST v[@xpt,@ypt] !ZT - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 by 3 points (Z-T) - X : 1.5 (interpolated) - Y : 1.05 (interpolated) - 1 2 3 - 1 2 3 - 1 / 1: 1112.00 1212.00 1312.00 - 2 / 2: 2112.00 2212.00 2312.00 - 3 / 3: 3112.00 3212.00 3312.00 - -! lines of data -LIST/ORDER=T v[@xpt,@ypt,@zpt] ! T - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 points (T) - X : 1.5 (interpolated) - Y : 1.05 (interpolated) - Z : 1.005 (interpolated) - 1 2 3 - 1 2 3 - 1112.50 2112.50 3112.50 -LIST/ORDER=Z v[@xpt,@ypt,@tpt] ! Z - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 points (Z) - X : 1.5 (interpolated) - Y : 1.05 (interpolated) - T : 1.0005 (interpolated) - 1 2 3 - 1 2 3 - 1112.50 1212.50 1312.50 -LIST/ORDER=Y v[@xpt,@zpt,@tpt] ! Y - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 points (Y) - X : 1.5 (interpolated) - Z : 1.005 (interpolated) - T : 1.0005 (interpolated) - 1 2 3 - 1 2 3 - 1112.50 1122.50 1132.50 -LIST/ORDER=X v[@ypt,@zpt,@tpt] ! X - VARIABLE : X + 10*Y + 100*Z + 1000*T - SUBSET : 3 points (X) - Y : 1.05 (interpolated) - Z : 1.005 (interpolated) - T : 1.0005 (interpolated) - 1 2 3 - 1 2 3 - 1112.50 1113.50 1114.50 - -! point of data -LIST v[@xpt,@ypt,@zpt,@tpt] - VARIABLE : X + 10*Y + 100*Z + 1000*T - X : 1.5 (interpolated) - Y : 1.05 (interpolated) - Z : 1.005 (interpolated) - T : 1.0005 (interpolated) - 1113.00 - -GO bn_reset bn_regrid -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid -GO bn_regrid -! bn200_regrid.JNL -! test regridding -! first test consists of regridding and re-regridding back and comparing -! when the variable, v is linear along all axes results should be exact - -! second test checks area-averaging regridding -! both with and without COS(latitude) factors computed - -! third test consists of time axis regridding with differing time steps - -set mode latit_label -4 -set mode long_label -4 - -define axis/x=2:20:2 xeven -define axis/x=1:19:2 xodd -define axis/y=2:20:2 yeven -define axis/y=1:19:2 yodd -define axis/z=2:20:2 zeven -define axis/z=1:19:2 zodd -define axis/t=2:20:2/t0="1-jan-1980"/unit=days teven -define axis/t=1:19:2/t0="1-jan-1980"/unit=days todd - -! default grid -define grid/x=xeven/y=yeven/z=zeven/t=teven even - -! 1 axis different -define grid/x=xodd/y=yeven/z=zeven/t=teven g1 -define grid/x=xeven/y=yodd/z=zeven/t=teven g2 -define grid/x=xeven/y=yeven/z=zodd/t=teven g3 -define grid/x=xeven/y=yeven/z=zeven/t=todd g4 - -! 2 axes different -define grid/x=xodd/y=yodd/z=zeven/t=teven g12 -define grid/x=xodd/y=yeven/z=zodd/t=teven g13 -define grid/x=xodd/y=yeven/z=zeven/t=todd g14 -define grid/x=xeven/y=yodd/z=zodd/t=teven g23 -define grid/x=xeven/y=yodd/z=zeven/t=todd g24 -define grid/x=xeven/y=yeven/z=zodd/t=todd g33 - -! 3 axes different -define grid/x=xeven/y=yodd/z=zodd/t=todd g234 -define grid/x=xodd/y=yeven/z=zodd/t=todd g134 -define grid/x=xodd/y=yodd/z=zeven/t=todd g124 -define grid/x=xodd/y=yodd/z=zodd/t=teven g123 - -! all axes different -define grid/x=xodd/y=yodd/z=zodd/t=todd g1234 - -LET veven = 1000*i[g=even] + 100*j[g=even] + 10*k[g=even] + l[g=even] - -LET v1 = veven[g=g1] -LET v2 = veven[g=g2] -LET v3 = veven[g=g3] -LET v4 = veven[g=g4] -LET v12 = veven[g=g12] -LET v13 = veven[g=g13] -LET v14 = veven[g=g14] -LET v23 = veven[g=g23] -LET v24 = veven[g=g24] -LET v33 = veven[g=g33] -LET v234 = veven[g=g234] -LET v134 = veven[g=g134] -LET v124 = veven[g=g124] -LET v123 = veven[g=g123] -LET v1234 = veven[g=g1234] - -SET REGION/X=4.01:8.99/Y=4.01:8.99/Z=4.01:8.99/T=4.01:8.99 - -! background -list veven - VARIABLE : 1000*I[G=EVEN] + 100*J[G=EVEN] + 10*K[G=EVEN] + L[G=EVEN] - SUBSET : 3 by 3 by 3 by 3 points (X-Y-Z-TIME) - 4 6 8 - 2 3 4 - ---- L:2 T: 05-JAN-1980 00:00 - ---- K:2 Z: 4 - 4 / 2: 2222.00 3222.00 4222.00 - 6 / 3: 2322.00 3322.00 4322.00 - 8 / 4: 2422.00 3422.00 4422.00 - ---- K:3 Z: 6 - 4 / 2: 2232.00 3232.00 4232.00 - 6 / 3: 2332.00 3332.00 4332.00 - 8 / 4: 2432.00 3432.00 4432.00 - ---- K:4 Z: 8 - 4 / 2: 2242.00 3242.00 4242.00 - 6 / 3: 2342.00 3342.00 4342.00 - 8 / 4: 2442.00 3442.00 4442.00 - ---- L:3 T: 07-JAN-1980 00:00 - ---- K:2 Z: 4 - 4 / 2: 2223.00 3223.00 4223.00 - 6 / 3: 2323.00 3323.00 4323.00 - 8 / 4: 2423.00 3423.00 4423.00 - ---- K:3 Z: 6 - 4 / 2: 2233.00 3233.00 4233.00 - 6 / 3: 2333.00 3333.00 4333.00 - 8 / 4: 2433.00 3433.00 4433.00 - ---- K:4 Z: 8 - 4 / 2: 2243.00 3243.00 4243.00 - 6 / 3: 2343.00 3343.00 4343.00 - 8 / 4: 2443.00 3443.00 4443.00 - ---- L:4 T: 09-JAN-1980 00:00 - ---- K:2 Z: 4 - 4 / 2: 2224.00 3224.00 4224.00 - 6 / 3: 2324.00 3324.00 4324.00 - 8 / 4: 2424.00 3424.00 4424.00 - ---- K:3 Z: 6 - 4 / 2: 2234.00 3234.00 4234.00 - 6 / 3: 2334.00 3334.00 4334.00 - 8 / 4: 2434.00 3434.00 4434.00 - ---- K:4 Z: 8 - 4 / 2: 2244.00 3244.00 4244.00 - 6 / 3: 2344.00 3344.00 4344.00 - 8 / 4: 2444.00 3444.00 4444.00 -list v1234 - VARIABLE : VEVEN[G=G1234] - SUBSET : 3 by 3 by 3 by 3 points (X-Y-Z-TIME) - 5 7 9 - 3 4 5 - ---- L:3 T: 06-JAN-1980 00:00 - ---- K:3 Z: 5 - 5 / 3: 2777.50 3777.50 4777.50 - 7 / 4: 2877.50 3877.50 4877.50 - 9 / 5: 2977.50 3977.50 4977.50 - ---- K:4 Z: 7 - 5 / 3: 2787.50 3787.50 4787.50 - 7 / 4: 2887.50 3887.50 4887.50 - 9 / 5: 2987.50 3987.50 4987.50 - ---- K:5 Z: 9 - 5 / 3: 2797.50 3797.50 4797.50 - 7 / 4: 2897.50 3897.50 4897.50 - 9 / 5: 2997.50 3997.50 4997.50 - ---- L:4 T: 08-JAN-1980 00:00 - ---- K:3 Z: 5 - 5 / 3: 2778.50 3778.50 4778.50 - 7 / 4: 2878.50 3878.50 4878.50 - 9 / 5: 2978.50 3978.50 4978.50 - ---- K:4 Z: 7 - 5 / 3: 2788.50 3788.50 4788.50 - 7 / 4: 2888.50 3888.50 4888.50 - 9 / 5: 2988.50 3988.50 4988.50 - ---- K:5 Z: 9 - 5 / 3: 2798.50 3798.50 4798.50 - 7 / 4: 2898.50 3898.50 4898.50 - 9 / 5: 2998.50 3998.50 4998.50 - ---- L:5 T: 10-JAN-1980 00:00 - ---- K:3 Z: 5 - 5 / 3: 2779.50 3779.50 4779.50 - 7 / 4: 2879.50 3879.50 4879.50 - 9 / 5: 2979.50 3979.50 4979.50 - ---- K:4 Z: 7 - 5 / 3: 2789.50 3789.50 4789.50 - 7 / 4: 2889.50 3889.50 4889.50 - 9 / 5: 2989.50 3989.50 4989.50 - ---- K:5 Z: 9 - 5 / 3: 2799.50 3799.50 4799.50 - 7 / 4: 2899.50 3899.50 4899.50 - 9 / 5: 2999.50 3999.50 4999.50 -stat veven - - 1000*I[G=EVEN] + 100*J[G=EVEN] + 10*K[G=EVEN] + L[G=EVEN] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2222 - Maximum value: 4444 - Mean value: 3333 (unweighted average) - Standard deviation: 825.72 - -! first all from one memory variable -load/x=1:11/y=1:11/z=1:11/t=1:11 veven -GO bn_regrid.sub -! BN200_REGRID.SUB -! compare various regriddings to the original data - -stat v1[g=even]-veven, v1 - - V1[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G1] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2722 - Maximum value: 4944 - Mean value: 3833 (unweighted average) - Standard deviation: 825.72 -stat v2[g=even]-veven, v2 - - V2[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G2] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2272 - Maximum value: 4494 - Mean value: 3383 (unweighted average) - Standard deviation: 825.72 -stat v3[g=even]-veven, v3 - - V3[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G3] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2227 - Maximum value: 4449 - Mean value: 3338 (unweighted average) - Standard deviation: 825.72 -stat v4[g=even]-veven, v4 - - V4[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G4] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2222.5 - Maximum value: 4444.5 - Mean value: 3333.5 (unweighted average) - Standard deviation: 825.72 -stat v12[g=even]-veven, v12 - - V12[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G12] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2772 - Maximum value: 4994 - Mean value: 3883 (unweighted average) - Standard deviation: 825.72 -stat v13[g=even]-veven, v13 - - V13[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G13] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2727 - Maximum value: 4949 - Mean value: 3838 (unweighted average) - Standard deviation: 825.72 -stat v14[g=even]-veven, v14 - - V14[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G14] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2722.5 - Maximum value: 4944.5 - Mean value: 3833.5 (unweighted average) - Standard deviation: 825.72 -stat v23[g=even]-veven, v23 - - V23[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G23] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2277 - Maximum value: 4499 - Mean value: 3388 (unweighted average) - Standard deviation: 825.72 -stat v24[g=even]-veven, v24 - - V24[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G24] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2272.5 - Maximum value: 4494.5 - Mean value: 3383.5 (unweighted average) - Standard deviation: 825.72 -stat v33[g=even]-veven, v33 - - V33[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G33] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2227.5 - Maximum value: 4449.5 - Mean value: 3338.5 (unweighted average) - Standard deviation: 825.72 -stat v234[g=even]-veven, v234 - - V234[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G234] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2277.5 - Maximum value: 4499.5 - Mean value: 3388.5 (unweighted average) - Standard deviation: 825.72 -stat v134[g=even]-veven, v134 - - V134[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G134] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2727.5 - Maximum value: 4949.5 - Mean value: 3838.5 (unweighted average) - Standard deviation: 825.72 -stat v124[g=even]-veven, v124 - - V124[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G124] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2772.5 - Maximum value: 4994.5 - Mean value: 3883.5 (unweighted average) - Standard deviation: 825.72 -stat v123[g=even]-veven, v123 - - V123[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G123] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2777 - Maximum value: 4999 - Mean value: 3888 (unweighted average) - Standard deviation: 825.72 -stat v1234[g=even]-veven, v1234 - - V1234[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G1234] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2777.5 - Maximum value: 4999.5 - Mean value: 3888.5 (unweighted average) - Standard deviation: 825.72 - -! and now with recalculations at every step -CANCEL MEMORY/ALL -SET MODE STUPID -GO bn_regrid.sub -! BN200_REGRID.SUB -! compare various regriddings to the original data - -stat v1[g=even]-veven, v1 - - V1[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G1] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2722 - Maximum value: 4944 - Mean value: 3833 (unweighted average) - Standard deviation: 825.72 -stat v2[g=even]-veven, v2 - - V2[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G2] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2272 - Maximum value: 4494 - Mean value: 3383 (unweighted average) - Standard deviation: 825.72 -stat v3[g=even]-veven, v3 - - V3[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G3] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2227 - Maximum value: 4449 - Mean value: 3338 (unweighted average) - Standard deviation: 825.72 -stat v4[g=even]-veven, v4 - - V4[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G4] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2222.5 - Maximum value: 4444.5 - Mean value: 3333.5 (unweighted average) - Standard deviation: 825.72 -stat v12[g=even]-veven, v12 - - V12[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G12] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2772 - Maximum value: 4994 - Mean value: 3883 (unweighted average) - Standard deviation: 825.72 -stat v13[g=even]-veven, v13 - - V13[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G13] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2727 - Maximum value: 4949 - Mean value: 3838 (unweighted average) - Standard deviation: 825.72 -stat v14[g=even]-veven, v14 - - V14[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G14] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2722.5 - Maximum value: 4944.5 - Mean value: 3833.5 (unweighted average) - Standard deviation: 825.72 -stat v23[g=even]-veven, v23 - - V23[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G23] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2277 - Maximum value: 4499 - Mean value: 3388 (unweighted average) - Standard deviation: 825.72 -stat v24[g=even]-veven, v24 - - V24[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G24] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2272.5 - Maximum value: 4494.5 - Mean value: 3383.5 (unweighted average) - Standard deviation: 825.72 -stat v33[g=even]-veven, v33 - - V33[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G33] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2227.5 - Maximum value: 4449.5 - Mean value: 3338.5 (unweighted average) - Standard deviation: 825.72 -stat v234[g=even]-veven, v234 - - V234[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G234] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2277.5 - Maximum value: 4499.5 - Mean value: 3388.5 (unweighted average) - Standard deviation: 825.72 -stat v134[g=even]-veven, v134 - - V134[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G134] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2727.5 - Maximum value: 4949.5 - Mean value: 3838.5 (unweighted average) - Standard deviation: 825.72 -stat v124[g=even]-veven, v124 - - V124[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G124] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2772.5 - Maximum value: 4994.5 - Mean value: 3883.5 (unweighted average) - Standard deviation: 825.72 -stat v123[g=even]-veven, v123 - - V123[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G123] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2777 - Maximum value: 4999 - Mean value: 3888 (unweighted average) - Standard deviation: 825.72 -stat v1234[g=even]-veven, v1234 - - V1234[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G1234] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2777.5 - Maximum value: 4999.5 - Mean value: 3888.5 (unweighted average) - Standard deviation: 825.72 - -!****************** area-averaging regrids ******************* -! check easily computable area-averaged regrid -LET vfine = X+Y -LET vcoarse = vfine[g=gcoarse] - -! first test without COS(latitude) corrections -define axis/x=1:100:1/unit=cm xfine -define axis/x=5.5:95.5:10/unit=cm xcoarse -define axis/y=1:100:1/unit=cm yfine -define axis/y=5.5:95.5:10/unit=cm ycoarse -define grid/x=xfine/y=yfine gfine -define grid/x=xcoarse/y=ycoarse gcoarse - -set grid gfine -set reg/x=20.5:80.5/y=20.5:80.5 -list vcoarse - VARIABLE : VFINE[G=GCOARSE] - SUBSET : 6 by 6 points (X (CM)-Y (CM)) - 25.5 35.5 45.5 55.5 65.5 75.5 - 3 4 5 6 7 8 - 25.5 / 3: 51.000 61.000 71.000 81.000 91.000 101.000 - 35.5 / 4: 61.000 71.000 81.000 91.000 101.000 111.000 - 45.5 / 5: 71.000 81.000 91.000 101.000 111.000 121.000 - 55.5 / 6: 81.000 91.000 101.000 111.000 121.000 131.000 - 65.5 / 7: 91.000 101.000 111.000 121.000 131.000 141.000 - 75.5 / 8: 101.000 111.000 121.000 131.000 141.000 151.000 -stat vcoarse,vfine - - VFINE[G=GCOARSE] - X (CM): 20.5 to 80.5 - Y (CM): 20.5 to 80.5 - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 36 (6*6*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 51 - Maximum value: 151 - Mean value: 101 (unweighted average) - Standard deviation: 24.495 - - X+Y - X (CM): 20.5 to 80.5 - Y (CM): 20.5 to 80.5 - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 3600 (60*60*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 42 - Maximum value: 160 - Mean value: 101 (unweighted average) - Standard deviation: 24.495 -list vcoarse[x=@ave,y=@ave],vfine[x=@ave,y=@ave] - X (CM): 20.5 to 80.5 (XY ave) - Y (CM): 20.5 to 80.5 (XY ave) - Column 1: VCOARSE is VFINE[G=GCOARSE] - Column 2: VFINE is X+Y - VCOARSE VFINE -I / *: 101.000 101.000 - -! then test with COS(latitude) corrections -define axis/x=1:100:1/unit=degrees xfine -define axis/x=5.5:95.5:10/unit=degrees xcoarse -define axis/y=1:100:1/unit=degrees yfine -define axis/y=5.5:95.5:10/unit=degrees ycoarse -define grid/x=xfine/y=yfine gfine -define grid/x=xcoarse/y=ycoarse gcoarse - -set grid gfine -set reg/x=20.5:80.5/y=20.5:80.5 -list vcoarse - VARIABLE : VFINE[G=GCOARSE] - SUBSET : 6 by 6 points (LONGITUDE-LATITUDE) - 25.5E 35.5E 45.5E 55.5E 65.5E 75.5E - 3 4 5 6 7 8 - 75.5N / 8: 101.000 111.000 121.000 131.000 141.000 151.000 - 65.5N / 7: 91.000 101.000 111.000 121.000 131.000 141.000 - 55.5N / 6: 81.000 91.000 101.000 111.000 121.000 131.000 - 45.5N / 5: 71.000 81.000 91.000 101.000 111.000 121.000 - 35.5N / 4: 61.000 71.000 81.000 91.000 101.000 111.000 - 25.5N / 3: 51.000 61.000 71.000 81.000 91.000 101.000 -stat vcoarse,vfine - - VFINE[G=GCOARSE] - LONGITUDE: 20.5E to 80.5E - LATITUDE: 20.5N to 80.5N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 36 (6*6*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 51 - Maximum value: 151 - Mean value: 101 (unweighted average) - Standard deviation: 24.495 - - X+Y - LONGITUDE: 20.5E to 80.5E - LATITUDE: 20.5N to 80.5N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 3600 (60*60*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 42 - Maximum value: 160 - Mean value: 101 (unweighted average) - Standard deviation: 24.495 -list vcoarse[x=@ave,y=@ave],vfine[x=@ave,y=@ave] - LONGITUDE: 20.5E to 80.5E (XY ave) - LATITUDE: 20.5N to 80.5N (XY ave) - Column 1: VCOARSE is VFINE[G=GCOARSE] - Column 2: VFINE is X+Y - VCOARSE VFINE -I / *: 94.7056 94.5308 - -!****************** time axis regridding ******************* -define axis/t="1-jan-1980":"1-jan-1982":24/t0="1-jan-1970" tax24 -define axis/t="1-jan-1980":"1-jan-1982":48/t0="1-jan-1920" tax48 -define grid/t=tax24 g24 -define grid/t=tax48 g48 -!show grid/l=1:4 g24,g48 ! requires blank separators: 11/1/91 *sh* -show grid/l=1:4 g24 g48 - GRID G24 - name axis # pts start end - normal X - normal Y - normal Z - TAX24 TIME 732 r 01-JAN-1980 00:00 01-JAN-1982 00:00 - - L T TBOX TBOXLO TSTEP (HOURS) - 1> 01-JAN-1980 00:00:00 24 31-DEC-1979 12:00:00 87648 - 2> 02-JAN-1980 00:00:00 24 01-JAN-1980 12:00:00 87672 - 3> 03-JAN-1980 00:00:00 24 02-JAN-1980 12:00:00 87696 - 4> 04-JAN-1980 00:00:00 24 03-JAN-1980 12:00:00 87720 - GRID G48 - name axis # pts start end - normal X - normal Y - normal Z - TAX48 TIME 367 r 01-JAN-1980 00:00 02-JAN-1982 00:00 - - L T TBOX TBOXLO TSTEP (HOURS) - 1> 01-JAN-1980 00:00:00 48 31-DEC-1979 00:00:00 525960 - 2> 03-JAN-1980 00:00:00 48 02-JAN-1980 00:00:00 526008 - 3> 05-JAN-1980 00:00:00 48 04-JAN-1980 00:00:00 526056 - 4> 07-JAN-1980 00:00:00 48 06-JAN-1980 00:00:00 526104 -set region/t="1-jan-1980":"8-jan-1980" -let a24 = t[g=g24] -let a48 = t[g=g48] -list a24 - VARIABLE : T[G=G24] - SUBSET : 8 points (TIME) - 01-JAN-1980 00 / 1: 87648.0 - 02-JAN-1980 00 / 2: 87672.0 - 03-JAN-1980 00 / 3: 87696.0 - 04-JAN-1980 00 / 4: 87720.0 - 05-JAN-1980 00 / 5: 87744.0 - 06-JAN-1980 00 / 6: 87768.0 - 07-JAN-1980 00 / 7: 87792.0 - 08-JAN-1980 00 / 8: 87816.0 -list a48 - VARIABLE : T[G=G48] - SUBSET : 4 points (TIME) - 01-JAN-1980 00 / 1: 525960. - 03-JAN-1980 00 / 2: 526008. - 05-JAN-1980 00 / 3: 526056. - 07-JAN-1980 00 / 4: 526104. -list a24[g=g48] - VARIABLE : T[G=G24] - regrid: G48 - SUBSET : 4 points (TIME) - 01-JAN-1980 00 / 1: 87648.0 - 03-JAN-1980 00 / 2: 87696.0 - 05-JAN-1980 00 / 3: 87744.0 - 07-JAN-1980 00 / 4: 87792.0 -list a24[g=g48]-a48 - VARIABLE : A24[G=G48]-A48 - SUBSET : 4 points (TIME) - 01-JAN-1980 00 / 1: -438312. - 03-JAN-1980 00 / 2: -438312. - 05-JAN-1980 00 / 3: -438312. - 07-JAN-1980 00 / 4: -438312. - -GO bn_reset bn_ez -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ez -GO bn_ez ! changed from bn200_ez 8/10/95 -! bn401_ez.JNL -! test all manner of accessing non-TMAP data files -! V401 modified from bn200_ez.jnl by the addition of a test of UNF reading - - -! quick and dirty -FILE EZ.DAT -SHOW DATA/FULL - currently SET data sets: - 1> ./data/EZ.DAT (default) - - name title I J K L - V1 V1 1:5 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:5.5 - - /FORMAT = FREE - /SKIP = 0 - /COLUMNS = 1 -LIST V1 - VARIABLE : V1 - FILENAME : EZ.DAT - SUBSET : 5 points (X) - 1 / 1: 0.006000 - 2 / 2: 0.355000 - 3 / 3: 0.410000 - 4 / 4: 0.435000 - 5 / 5: 0.478000 -SHOW DATA - currently SET data sets: - 1> ./data/EZ.DAT (default) - name title I J K L - V1 V1 1:5 ... ... ... - - -! first 2 values from each line -FILE/VAR="X1,X2" EZ.DAT -SHOW DATA/FULL - currently SET data sets: - 1> ./data/EZ.DAT (default) - - name title I J K L - X1 X1 1:5 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:5.5 - X2 X2 1:5 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:5.5 - - /FORMAT = FREE - /SKIP = 0 - /COLUMNS = 2 -LIST X1,X2 - DATA SET: ./data/EZ.DAT - X: 0.5 to 5.5 - Column 1: X1 - Column 2: X2 - X1 X2 -1 / 1: 0.006000 0.886500 -2 / 2: 0.355000 0.664300 -3 / 3: 0.410000 0.607100 -4 / 4: 0.435000 0.553500 -5 / 5: 0.478000 0.533700 -SHOW DATA - currently SET data sets: - 1> ./data/EZ.DAT (default) - name title I J K L - X1 X1 1:5 ... ... ... - X2 X2 1:5 ... ... ... - - -! all 6 values on each line -FILE/VAR="X1,X2"/COLUMNS=6 EZ.DAT -SHOW DATA/FULL - currently SET data sets: - 1> ./data/EZ.DAT (default) - - name title I J K L - X1 X1 1:15 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:15.5 - X2 X2 1:15 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:15.5 - - /FORMAT = FREE - /SKIP = 0 - /COLUMNS = 6 -LIST X1 - VARIABLE : X1 - FILENAME : EZ.DAT - SUBSET : 15 points (X) - 1 / 1: 0.006000 - 2 / 2: 0.176000 - 3 / 3: 0.282000 - 4 / 4: 0.355000 - 5 / 5: 0.379000 - 6 / 6: 0.393000 - 7 / 7: 0.410000 - 8 / 8: 0.417000 - 9 / 9: 0.467000 - 10 / 10: 0.435000 - 11 / 11: 0.444000 - 12 / 12: 0.470000 - 13 / 13: 0.478000 - 14 / 14: 0.515000 - 15 / 15: 0.469000 -SHOW DATA - currently SET data sets: - 1> ./data/EZ.DAT (default) - name title I J K L - X1 X1 1:15 ... ... ... - X2 X2 1:15 ... ... ... - - -! all 6 but skip first 2 lines -FILE/VAR="X1,X2"/COLUMNS=6/SKIP=2 EZ.DAT -SHOW DATA/FULL - currently SET data sets: - 1> ./data/EZ.DAT (default) - - name title I J K L - X1 X1 1:9 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:9.5 - X2 X2 1:9 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:9.5 - - /FORMAT = FREE - /SKIP = 2 - /COLUMNS = 6 -LIST X1 - VARIABLE : X1 - FILENAME : EZ.DAT - SUBSET : 9 points (X) - 1 / 1: 0.410000 - 2 / 2: 0.417000 - 3 / 3: 0.467000 - 4 / 4: 0.435000 - 5 / 5: 0.444000 - 6 / 6: 0.470000 - 7 / 7: 0.478000 - 8 / 8: 0.515000 - 9 / 9: 0.469000 -SHOW DATA - currently SET data sets: - 1> ./data/EZ.DAT (default) - name title I J K L - X1 X1 1:9 ... ... ... - X2 X2 1:9 ... ... ... - - -! take 1st and 4th values on each line as X1 -FILE/VAR="X1,-,X2"/COLUMNS=6/SKIP=2 EZ.DAT -SHOW DATA/FULL - currently SET data sets: - 1> ./data/EZ.DAT (default) - - name title I J K L - X1 X1 1:9 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:9.5 - X2 X2 1:9 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:9.5 - - /FORMAT = FREE - /SKIP = 2 - /COLUMNS = 6 -LIST X1 - VARIABLE : X1 - FILENAME : EZ.DAT - SUBSET : 6 points (X) - 1 / 1: 0.410000 - 2 / 2: 0.593500 - 3 / 3: 0.435000 - 4 / 4: 0.545800 - 5 / 5: 0.478000 - 6 / 6: 0.514700 -SHOW DATA - currently SET data sets: - 1> ./data/EZ.DAT (default) - name title I J K L - X1 X1 1:6 ... ... ... - X2 X2 1:6 ... ... ... - - -! specify the format explicitly -FILE/VAR="X1,X2"/COLUMNS=6/SKIP=2/FORMAT=(3(F14.0,F7.0)) EZ.DAT -SHOW DATA/FULL - currently SET data sets: - 1> ./data/EZ.DAT (default) - - name title I J K L - X1 X1 1:9 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:9.5 - X2 X2 1:9 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:9.5 - - /FORMAT = (3(F14.0,F7.0)) - /SKIP = 2 - /COLUMNS = 6 -LIST X1 - VARIABLE : X1 - FILENAME : EZ.DAT - SUBSET : 9 points (X) - 1 / 1: 0.410000 - 2 / 2: 0.417000 - 3 / 3: 0.467000 - 4 / 4: 0.435000 - 5 / 5: 0.444000 - 6 / 6: 0.470000 - 7 / 7: 0.478000 - 8 / 8: 0.515000 - 9 / 9: 0.469000 -SHOW DATA - currently SET data sets: - 1> ./data/EZ.DAT (default) - name title I J K L - X1 X1 1:9 ... ... ... - X2 X2 1:9 ... ... ... - - -! specify the format to skip every second line -FILE/VAR="X1,X2"/COLUMNS=6/SKIP=1/FORMAT="(3(F14.0,F7.0)/)" EZ.DAT -SHOW DATA/FULL - currently SET data sets: - 1> ./data/EZ.DAT (default) - - name title I J K L - X1 X1 1:12 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:12.5 - X2 X2 1:12 ... ... ... - on grid (G008) with -1.E+34 for missing data - X=0.5:12.5 - - /FORMAT = (3(F14.0,F7.0)/) - /SKIP = 1 - /COLUMNS = 6 -LIST X1 - VARIABLE : X1 - FILENAME : EZ.DAT - SUBSET : 6 points (X) - 1 / 1: 0.355000 - 2 / 2: 0.379000 - 3 / 3: 0.393000 - 4 / 4: 0.435000 - 5 / 5: 0.444000 - 6 / 6: 0.470000 -SHOW DATA - currently SET data sets: - 1> ./data/EZ.DAT (default) - name title I J K L - X1 X1 1:6 ... ... ... - X2 X2 1:6 ... ... ... - - -! modify variable title -SET VARIABLE/TITLE="first variable" X1 -SHOW DATA - currently SET data sets: - 1> ./data/EZ.DAT (default) - name title I J K L - X1 first variable 1:6 ... ... ... - X2 X2 1:6 ... ... ... - - -! read onto a 2D grid -DEFINE AXIS/X=1:3:1 xez1 -DEFINE GRID/X=XEZ1/Y=EZ GEZ1 -FILE/VAR="X1,X2"/COLUMNS=6/GRID=GEZ1 EZ.DAT -SHOW DATA/FULL - currently SET data sets: - 1> ./data/EZ.DAT (default) - - name title I J K L - X1 X1 1:3 1:20480 ... ... - on grid GEZ1 with -1.E+34 for missing data - X=0.5:3.5 Y=0.5:2.05E+04 - X2 X2 1:3 1:20480 ... ... - on grid GEZ1 with -1.E+34 for missing data - X=0.5:3.5 Y=0.5:2.05E+04 - - /FORMAT = FREE - /SKIP = 0 - /COLUMNS = 6 -LIST X1 - VARIABLE : X1 - FILENAME : EZ.DAT - SUBSET : 3 by 5 points (X-Y) - 1 2 3 - 1 2 3 - 1 / 1: 0.006000 0.176000 0.282000 - 2 / 2: 0.355000 0.379000 0.393000 - 3 / 3: 0.410000 0.417000 0.467000 - 4 / 4: 0.435000 0.444000 0.470000 - 5 / 5: 0.478000 0.515000 0.469000 -SHOW DATA - currently SET data sets: - 1> ./data/EZ.DAT (default) - name title I J K L - X1 X1 1:3 1:5 ... ... - X2 X2 1:3 1:5 ... ... - - -! read onto a 4D grid -DEFINE AXIS/X=1:1:1 xez2 -DEFINE AXIS/Y=1:3:1 yez -DEFINE AXIS/Z=1:2:1 zez -DEFINE GRID/X=XEZ2/Y=YEZ/Z=ZEZ/T=EZ GEZ2 -FILE/VAR="X1,X2"/COLUMNS=6/GRID=GEZ2 EZ.DAT -SHOW DATA/FULL - currently SET data sets: - 1> ./data/EZ.DAT (default) - - name title I J K L - X1 X1 1:1 1:3 1:2 1:20480 - on grid GEZ2 with -1.E+34 for missing data - X=0.5:1.5 Y=0.5:3.5 Z=0.5:2.5 - X2 X2 1:1 1:3 1:2 1:20480 - on grid GEZ2 with -1.E+34 for missing data - X=0.5:1.5 Y=0.5:3.5 Z=0.5:2.5 - - /FORMAT = FREE - /SKIP = 0 - /COLUMNS = 6 -LIST X1 - VARIABLE : X1 - FILENAME : EZ.DAT - SUBSET : 3 by 2 by 2 points (Y-Z-T) - X : 1 - 1 2 3 - 1 2 3 - ---- L:1 T: 1 - 1 / 1: 0.006000 0.176000 0.282000 - 2 / 2: 0.355000 0.379000 0.393000 - ---- L:2 T: 2 - 1 / 1: 0.410000 0.417000 0.467000 - 2 / 2: 0.435000 0.444000 0.470000 -SHOW DATA - currently SET data sets: - 1> ./data/EZ.DAT (default) - name title I J K L - X1 X1 1:1 1:3 1:2 1:2 - X2 X2 1:1 1:3 1:2 1:2 - - -! truncate reading by grid size limit -! V702: *sh* note that with 3 columns of pairs and a request to read only -! 8 values total, the final record is incomplete. These final values -! **do not get initialized**. This has been reported in trac #2509 -! The presence of uninitialized values can throw off the formatting of the output -DEFINE AXIS/X=1:8:1 xez3 -DEFINE GRID/X=XEZ3 GEZ3 -FILE/VAR="X1,X2"/COLUMNS=6/GRID=GEZ3 EZ.DAT -SHOW DATA/FULL - currently SET data sets: - 1> ./data/EZ.DAT (default) - - name title I J K L - X1 X1 1:8 ... ... ... - on grid GEZ3 with -1.E+34 for missing data - X=0.5:8.5 - X2 X2 1:8 ... ... ... - on grid GEZ3 with -1.E+34 for missing data - X=0.5:8.5 - - /FORMAT = FREE - /SKIP = 0 - /COLUMNS = 6 -LIST X1 - VARIABLE : X1 - FILENAME : EZ.DAT - SUBSET : 8 points (X) - 1 / 1: 0.006000 - 2 / 2: 0.176000 - 3 / 3: 0.282000 - 4 / 4: 0.355000 - 5 / 5: 0.379000 - 6 / 6: 0.393000 - 7 / 7: 0.000000 - 8 / 8: 0.000000 -SHOW DATA - currently SET data sets: - 1> ./data/EZ.DAT (default) - name title I J K L - X1 X1 1:8 ... ... ... - X2 X2 1:8 ... ... ... - - -! 8/10/95 -- added tests of unformatted writing and reading -SP rm -f test.unf -LIST/FILE=test.unf/format=unf/i=1:10 i -file/form=unf/var=my_var test.unf -list my_var - VARIABLE : my_var - FILENAME : test.unf - SUBSET : 10 points (X) - 1 / 1: 1.0000 - 2 / 2: 2.0000 - 3 / 3: 3.0000 - 4 / 4: 4.0000 - 5 / 5: 5.0000 - 6 / 6: 6.0000 - 7 / 7: 7.0000 - 8 / 8: 8.0000 - 9 / 9: 9.0000 - 10 / 10: 10.0000 - -! **** -! remove bn200_budgets for portable benchmarks *kob* 5/99 -! **** - -! ppl echo on turns on fort.41 to capture ppl commands. -PPL ECHO ON ! added 10/27/93 - -! 10/97 *kob* now set mode metafile -set mode metafile bnplot.plt -GO bn_reset bn_plot -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot -GO bn_plot ! upgraded from bn320_plot 10/1/97 *kob* -! bn_plot.jnl -! upgraded from bn320 to provide method for testing batch mode. Also remove -! all labels to create "master" gif and ps files to compare against -! *kob* -! V530 - added tests of PLOT/STEP[=connected] to existing plots -! v581 - for the last set, cancel mode logo, so that .plt files are comparable. -! do not use /text= in def view in PyFerret -! do not use ppl size in PyFerret - -! define a 6 viewport window (modified definitions 11/92) -def view/xlim=0,.333/ylim=0,.5 ll6 -def view/xlim=0,.333/ylim=.5,1 ul6 -def view/xlim=.333,.666/ylim=0,.5 lm6 -def view/xlim=.333,.666/ylim=.5,1 um6 -def view/xlim=.666,1/ylim=0,.5 lr6 -def view/xlim=.666,1/ylim=.5,1 ur6 -show view - - name text xlimits ylimits mode - - UPPER 1.00 0.00,1.00 0.50,1.00 edges - LOWER 1.00 0.00,1.00 0.00,0.50 edges - RIGHT 1.00 0.50,1.00 0.00,1.00 edges - LEFT 1.00 0.00,0.50 0.00,1.00 edges - LL 0.50 0.00,0.50 0.00,0.50 edges - LR 0.50 0.50,1.00 0.00,0.50 edges - UL 0.50 0.00,0.50 0.50,1.00 edges - UR 0.50 0.50,1.00 0.50,1.00 edges - FULL 1.00 0.00,1.00 0.00,1.00 edges - LL6 0.41 0.00,0.33 0.00,0.50 edges - UL6 0.41 0.00,0.33 0.50,1.00 edges - LM6 0.41 0.33,0.67 0.00,0.50 edges - UM6 0.41 0.33,0.67 0.50,1.00 edges - LR6 0.41 0.67,1.00 0.00,0.50 edges - UR6 0.41 0.67,1.00 0.50,1.00 edges - current viewport is NONE - -! some variables for plotting -let a = 0.8*sin(l/10) -let b = 0.6*cos(l/10) -let c = sin(100/(l+k)) -let d = l/50 -let e = k-(l/25) -let f = -.5+(l/125) -let g = (l-25)/(k*35) -let h = 0.1 -let m = 0.2 - -! illegal plot commands -set mode ignore -plot/i=1:10/j=1:20/nolabel i+j ! not a line -plot/i=1:10/j=1:20/nolabel i,i+j ! not a line -plot/i=1:10/j=1:20/nolabel i+j,i ! not a line -plot/i=1:10/j=1:20/nolabel j,i ! differing axes -plot/i=1:10/j=1:20/vs/line/nolabel j,i ! unequal lengths -contour/i=1:10/j=1:20/nolabel i ! only 1 D -contour/i=1:10/j=1:20/nolabel i/j,j/i ! multiple fields -vector/i=1:10/j=1:20/nolabel i/j ! only 1 field -vector/i=1:10/j=1:20/nolabel i/j,j/i,i+j ! 3 fields -set mode/last ignore - -! notice the default window size is 10.2,width x 8.8,height -ppl list plot - WIDTH= 10.20 HEIGHT= 8.80 TKTYPE= 0 BAUD= 110 - WINDOW= ON BOX= OFF CROSS= 0 PLTYPE= 3 - PLOT MODE= A - PLOT FILE= bnplot.plt - -! enlarge it to accomodate an additional 50% width -! ppl size 15.3,8.8 -! PyFerret must use SET WINDOW -set win /xinch=15.3 /yinch=8.8 - -! turn on metafile (enabled 10/29/91) -! commented out 9/97 - instead set in bn450_all.jnl -! set mode metafile - -! draw a plot into a viewport - to be deleted (check hard copy) -set view ll6 -contour/i=1:50/j=1:50/nolabel i/(j+20) - -! 4 frames testing PLOT output -set view ul6 -plot/l=1:50/k=1/trans/nolabel a,b,c -plot/l=1:50/k=1/trans/over/line=6/nolabel d -plot/l=1:50/k=1/trans/over/symbol=88/nolabel e -plot/l=1:50/k=1/trans/over/symbol=47/line/nolabel f -def view/xlim=.333,1/ylim=0,.5 lm6 ! redefine longer in x (11/92) -set view lm6 -!ppl axlen 16 -set region/k=1 -plot/l=1:50/nolabel a,b,c,d,e,f,g[k=1],g[k=2],a+h,b+h,c+h,d+h,e+h,f+h,g[k=1]+h,g[k=2]+h,a+m,b+m,c+m -def view/xlim=.333,1/ylim=.5,1 um6 ! redefine it longer in x (11/92) -set view um6 -!ppl axlen 17,5 -plot/l=1:50/nolabel sin(100/(l+5)) -plot/l=1:50/over/nolabel a,b,c,d,e,f,g[k=1],g[k=2],a+h,b+h,c+h,d+h,e+h,f+h,g[k=1]+h,g[k=2]+h,a+m,b+m,c+m -set view ll6 -!ppl axlen 8,6 -plot/l=1:99000/nolabel sin(200000/(l+10000)) - -! reset to normal axis lengths and prepare for a new piccie -!ppl axlen 8 -set wind/clear - -! draw six frames -set view ll6 -contour/i=1:50/j=1:50/levels=(0,2.5,.25)/nolabel i/(j+20) -plot/over/nolab/vs/line/i=1:50/j=1:50/nolabel 6*i/j,5*j/i -set view ul6 -vector/i=1:50/j=1:50/length=50/aspect/nolabel sin(i/20)*10+j-20,-1*cos(j/10)*10+i-20 -def view/xlim=.333,.666/ylim=0,.5 lm6 ! redefine it (11/92) -set view lm6 -shade/i=1:50/j=1:50/nolabel i/(j+20) -set view lr6 -ppl lev () (0,2.5,.1) -shade/i=1:50/j=1:50/line/level/nolabel i/(j+20) -set view ur6 -let icomp = (sin(i/20)*10+j-20) -let jcomp = (-1*cos(j/10)*10+i-20) -contour/i=1:50/j=1:50/nolabel icomp^2+jcomp^2 -contour/i=1:50/j=1:50/over/level/nolabel icomp^2+(-1*cos(i/10)*80)^2 -! note: "i-i" and "j-j" are needed to create 2D structures -vector/i=1:50/j=1:50/overlay/nolabel j-20+(i-i),i-20+(j-j) -vector/i=1:50/j=1:50/overlay/length/nolabel i-20+(j-j),40-j+(i-i) -def view/xlim=.333,.666/ylim=.5,1 um6 ! redefine it (11/92) -set view um6 -shade/i=1:50/j=1:50/nolabel i/(j+20) -contour/i=1:50/j=1:50/over/nolabel (sin(i/20)+j-20)^2+(-1*cos(j/10)+i-20)^2 -vector/i=1:50/j=1:50/overlay/nolabel j-20+(i-i),i-20+(j-j) - -! additions for version 3.01 "/TITLE=" controls -cancel viewports -set view ul6 -plot/title="My Custom Title"/i=1:100/nolabel sin(i/6) -plot/title="My Custom Key"/i=1:100/over/nolabel sin(i/5) -set view um6 -plot/title="My Custom Title"/i=1:100/nolabel sin(i/6),sin(i/9) -plot/title="My Custom Key"/i=1:100/over/nolabel sin(i/7),sin(i/10) -set view ur6 -plot/vs/line/title="My Custom Title"/i=1:100/nolabel sin(i/6),sin(i/9) -plot/vs/line/title="My Custom Key"/i=1:100/over/nolabel sin(i/7),sin(i/10) -set view ll6 -plot/vs/line/title="My Custom Title"/i=1:100/nolabel sin(i/6),sin(i/9),sin(i/12) -plot/vs/line/title="My Custom Key"/i=1:100/over/nolabel sin(i/7),sin(i/10) -set view lm6 -contour/i=1:20/j=1:20/title="My Contour Title"/nolabel sin(i/3)*cos(j/4) -contour/over/i=5:30/j=5:30/title="My Contour Overlay"/nolabel sin(i/2)*cos(j/3) -set view lr6 -wire/view=0,0,2/i=1:20/j=1:20/title="My Egg Carton"/nolabel sin(i/3)*cos(j/4) - -! addition for 3.20 showing changed default behavior of plot/vs -! return to window and redraw with symbols -set view ll6 -plot/vs/title="My Custom Title"/i=1:100/nolabel sin(i/6),sin(i/9),sin(i/12) -plot/vs/title="My Custom Key"/i=1:100/over/nolabel sin(i/7),sin(i/10) - -! test of qualifiers added for V510 -cancel viewport -set wind/asp=.75/clear -set view ul -plot/i=1:10/ylimits=1:40/nolabel i ! note that /nolabel supresses XLAB -plot/i=1:10/over/sym=2 i^1.1 -plot/i=1:10/over/sym=2/size=.12 i^1.2 -plot/i=1:10/over/sym=2/color=red i^1.3 -plot/i=1:10/over/thick/step/color=light_blue i^1.4 -plot/i=1:10/over/thick/color=blue/step=connected i^1.5 -plot/i=1:10/over/thick=3/color=purple/size=.14 i^1.6 - -! deliberate error -set mode ignore -plot/over/i=1:10/color=noexist i -plot/over/i=1:10/thick=4 i -plot/over/i=1:10/size=-1 i -set mode/last ignore - -can mode logo -set view ur -let eps = .1; plot/vs RANDU(I[i=1:10]+eps), RANDU(I[i=1:10]+10+eps) -let eps = .2; plot/vs/over/sym=2 RANDU(I[i=1:10]+eps), RANDU(I[i=1:10]+10+eps) -let eps = .3; plot/vs/over/line/size=.12 RANDU(I[i=1:10]+eps), RANDU(I[i=1:10]+10+eps) -let eps = .4; plot/vs/over/line/sym=2/color=red RANDU(I[i=1:10]+eps), RANDU(I[i=1:10]+10+eps) -let eps = .5; plot/vs/over/thick RANDU(I[i=1:10]+eps), RANDU(I[i=1:10]+10+eps) -let eps = .6; plot/vs/over/thick/color=blue RANDU(I[i=1:10]+eps), RANDU(I[i=1:10]+10+eps) -let eps = .7; plot/vs/over/thick=3/color=purple/size=.14 RANDU(I[i=1:10]+eps), RANDU(I[i=1:10]+10+eps) - -set view ll -contour/color=lightBlue/sig=1/size=.12 x[x=0:1:.1]*SIN(Y[y=0:6.3:.2]) -vector/over/thick=3/color=green x[x=0:1:.1]*SIN(Y[y=0:6.3:.2]),x[x=0:1:.1]*COS(Y[y=0:6.3:.2]) - -! deliberate error -set mode ignore -cont/over/i=1:10/color=noexist i -cont/over/i=1:10/thick=4 i -cont/over/i=1:10/sigdig=-1 i -set mode/last ignore - -set view lr -polygon/thick/color=red/palette=blue {1,2,1}, {2,1,0.5} - -set mode/last logo - - -!added in bn450 10/97 *kob* -! moved to right after bn450_plot to capture metafiles *kob* 2/98 -! 2/98 changed bn450_curv to bn491_curv - just some cosmetic changes *kob* -GO bn_reset bn_curv -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_curv -GO bn_curv -cancel mode ignore -! -! Your basic map projection -! -! v 4.91 - *kob* 2/98 - just clean up window a bit before plotting and remove -! all the ferret labels in order to be able to automate -! metafile checking. -can view all -! 2/98 *kob* just clean up the window a bit -! 4/05 *acm* save only one of the plots as a metafile for checking; had four of them. - -can mode meta -set view full -set wind/clear/asp=1 - -use coads_climatology -set region/l=3 -go mp_sinusoidal -set grid sst -shade/nolabel sst, x_page, y_page - -! -! A more complex projection -! -set mode meta bnplot.plt -go mp_orthographic 210 45 -set grid sst -let masked_sst = sst * mp_mask -fill/nolabel/title="Orthographic View" masked_sst, x_page, y_page - -! -! Some of the utility functions -! -!go mp_fland -go mp_land -go mp_label 237.7 47.6 -1 0 .1 @IISeattle -go mp_label 204.4 19.5 -1 0 .1 @IIHawaii -go mp_graticule -go mp_graticule 160 200 40 50 65 15 11 -go mp_label 180 45 0 -22 .15 "@p5@DRThe Bering Sea" - -! move the cancel mode meta to avoid changes in the plot output -can mode meta - -! Some map projections use 1-D x_page and y_page -! (mp_mercator, mp_plate_caree, mp_lambert_cyl). Test the -! whole zoo of map projection scripts. - -go bn_mp_zoo.jnl -! bn_mp_zoo.jnl -! taken from mp_demo.jnl -! acm 9/2005 -! - -define viewport/xlimits=0.000,0.333/ylim=0.666,0.999 tl -define viewport/xlimits=0.000,0.333/ylim=0.333,0.666 ml -define viewport/xlimits=0.000,0.333/ylim=0.000,0.333 bl -define viewport/xlimits=0.333,0.666/ylim=0.666,0.999 tm -define viewport/xlimits=0.333,0.666/ylim=0.333,0.666 mm -define viewport/xlimits=0.333,0.666/ylim=0.000,0.333 bm -define viewport/xlimits=0.666,0.999/ylim=0.666,0.999 tr -define viewport/xlimits=0.666,0.999/ylim=0.333,0.666 mr -define viewport/xlimits=0.666,0.999/ylim=0.000,0.333 br - -use coads_climatology -set region/l=1/y=0:90 - -set view tl -go margins .2, .6, .2, .2 -go mp_hammer -set grid sst -shade/nolab/nokey/noaxes sst, x_page, y_page -label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Hammer - !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Hammer - -set view tm -go mp_sinusoidal -go margins .2, .6, .2, .2 -shade/nolab/nokey/noaxes sst, x_page, y_page -label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Sinusoidal - !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Sinusoidal - -set view tr -go mp_lambert_cyl -go margins .2, .6, .2, .2 -shade/nolab/nokey/noaxes sst, x_page, y_page -label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Lambert Equal Area - !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Lambert Equal Area - -set view ml -go mp_bonne -go margins .2, .6, .2, .2 -shade/nolab/nokey/noaxes sst, x_page, y_page -label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Bonne - !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Bonne - -set view mm -go mp_mcbryde_fpp -go margins .2, .6, .2, .2 -shade/nolab/nokey/noaxes sst, x_page, y_page -label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 McBryde Flat Polar - !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 McBryde Flat Polar - -set view mr -go mp_polyconic -go margins .2, .6, .2, .2 -shade/nolab/nokey/noaxes sst, x_page, y_page -label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Polyconic - !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Polyconic - -set view bl -go mp_orthographic 300 45 -go margins .2, .6, .2, .2 -let masked_sst = sst * mp_mask -shade/nolab/nokey/noaxes masked_sst, x_page, y_page -label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 OrthoGraphic - !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 OrthoGraphic - -set view bm -set region/x=240:420 -go mp_stereographic_eq -go margins .2, .6, .2, .2 -shade/nolab/nokey/noaxes sst, x_page, y_page -label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Stereographic Equatorial - !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Stereographic Equatorial - -set view br -set region/x=0:360/y=00:90 -go mp_stereographic_north -go margins .2, .6, .2, .2 -shade/nolab/nokey/noaxes sst, x_page, y_page -label/nouser `($PPL$XLEN)*0.5`,-0.4,0,0,.20 Stereographic North - !-> PPL %LABEL/nouser 2.5335,-0.4,0,0,.20 Stereographic North - -can region -cancel viewport -exit - -! -! What can go wrong -! - -! Do we catch incorrect region specifications? -can region -go mp_sinusoidal -set grid sst -set region/x=145 -set mode ignore -shade/nolabel sst, x_page, y_page ! DELIBERATE ERROR -can region - -! Crazy stuff with the transformation fields: -set region/l=1 -let phi = y * deg2rad -shade/nolabel sst, 0*x_page, y_page ! DELIBERATE ERROR -shade/nolabel sst, x_page, 0*y_page ! DELIBERATE ERROR -shade/nolabel sst, x_page, sin(y_page) -shade/nolabel sst, randn(x_page), randn(y_page) -!2/98 *kob* - can mode meta before this plot -can mode meta -shade/nolabel sst, x_page[j=1:12], y_page ! DELIBERATE ERROR -shade/nolabel sst, x_page, asin(y_page) ! DELIBERATE ERROR - -shade/nolabel sst, x_page, y_page ! DELIBERATE gsetviewport() ERROR - - -can win 1 -set win 1 - -!2/98 *kob* - set mode meta again -!sset mode meta bnplot.plt -let phi = l * deg2rad -shade/nolabel sst, x_page, y_page -shade/nolabel sst, x_page[j=1:12], y_page ! DELIBERATE ERROR -can mode ignore - -set mode meta bnplot.plt - -SET WINDOW/CLEAR/SIZE=0.2 ! 8/25/92 -!CANCEL WINDOW/ALL ! added 7/27/92 -! 10/97 *kob* now cancel mode metafile -cancel mode metafile - -GO bn_reset bn_symbols -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_symbols -GO bn_symbols ! added 6/22/95 -! bn420_symbols -! benchmark to test machinery of symbol definition and use -! requires FERRET version 4.00 or later - -! note on max number of symbols: -! As of 6/95 (version 4.01) an attempt to define more that 1000 symbols -! will encounter a PLOT+ "STOP 'exceeded symbol storage'" - -! bn420 - 10/95 -- make sure that symbols at start and end aren't -! confused with enclosing parens -! 4/96 -- test symbol editing in the style of dollar args -! -- use template notation for SHOW SYMBOL and CANCEL SYMBOL - -! V510: added tests of backslash escaping -! V533: *sh* 7/01 - Ferret allows single quoted strings -- syntax change - -cancel symbols/all -show symbols/all -PPL$XPIXEL = "438" -PPL$YPIXEL = "378" -BYTEORDER = "LITTLE" -FERRET_VERSION = "7.51" -FERRET_PLATFORM = "Linux 2.6.32-754.17.1.el6.x86_64" -FERRET_PRECISION = "double" -NETCDF_VERSION = "4.6.3 of Mar 21 2019 12:26:12 $" -FERRET_MEMORY = "31.25" -FERRET_BYTES_MEM = "250Mb" -SESSION_DATE = "20-Aug-19" -SESSION_TIME = "12:13" -SESSION_PID = "3395" -DELTA_CPU = "16.2785" -CLOCK_SECS = "32.2" -CURRENT_DATE = "20-Aug-19" -CURRENT_TIME = "12:14:00" -N_OPEN_DSETS = "0" -PROGRAM_NAME = "PyFerret" -PEAK_MEMORY = "0" -SPAWN_OK = "1" -SPAWN_STATUS = "0" - -! define some symbols ... syntax variations -define symbol s1 = hello -define symbol s2 = "hello" -define symbol s3 "hello and goodbye" -define symbol num = 3 -define symbol t$dollar = hi -define symbol t_($s1) = hi ! define "t_hello" as a symbol - !-> define symbol t_hello = hi - -! exercise SHOW SYMBOL -show symbol/all -PPL$XPIXEL = "438" -PPL$YPIXEL = "378" -BYTEORDER = "LITTLE" -FERRET_VERSION = "7.51" -FERRET_PLATFORM = "Linux 2.6.32-754.17.1.el6.x86_64" -FERRET_PRECISION = "double" -NETCDF_VERSION = "4.6.3 of Mar 21 2019 12:26:12 $" -FERRET_MEMORY = "31.25" -FERRET_BYTES_MEM = "250Mb" -SESSION_DATE = "20-Aug-19" -SESSION_TIME = "12:13" -SESSION_PID = "3395" -DELTA_CPU = "0.016997" -CLOCK_SECS = "32.2" -CURRENT_DATE = "20-Aug-19" -CURRENT_TIME = "12:14:00" -N_OPEN_DSETS = "0" -PROGRAM_NAME = "PyFerret" -PEAK_MEMORY = "0" -SPAWN_OK = "1" -SPAWN_STATUS = "0" -S1 = "hello" -S2 = ""hello"" -S3 = "hello and goodbye" -NUM = "3" -T$DOLLAR = "hi" -T_HELLO = "hi" -show symbol s* -SESSION_DATE = "20-Aug-19" -SESSION_TIME = "12:13" -SESSION_PID = "3395" -SPAWN_OK = "1" -SPAWN_STATUS = "0" -S1 = "hello" -S2 = ""hello"" -S3 = "hello and goodbye" -show symbol s2 -S2 = ""hello"" - -! exercise CANCEL SYMBOL -cancel symbol s2 -show symbol s* -SESSION_DATE = "20-Aug-19" -SESSION_TIME = "12:13" -SESSION_PID = "3395" -SPAWN_OK = "1" -SPAWN_STATUS = "0" -S1 = "hello" -S3 = "hello and goodbye" -show symbol S* -SESSION_DATE = "20-Aug-19" -SESSION_TIME = "12:13" -SESSION_PID = "3395" -SPAWN_OK = "1" -SPAWN_STATUS = "0" -S1 = "hello" -S3 = "hello and goodbye" -cancel symbol s2 ! already deleted - -! exercise symbol translation -message/continue ($s1) - !-> message/continue hello -hello -message/continue ($s1) and ($S3) - !-> message/continue hello and hello and goodbye -hello and hello and goodbye -message/continue ($s1) and ($s`3`) ! no good - grave accent evaluated AFTER - !-> message/continue hello and -hello and -message/continue ($s1) and ($s($num)) ! nested symbol translation gets ($S3) - !-> message/continue hello and hello and goodbye -hello and hello and goodbye - -! demonstrate the 30 character cap on symbol length -! In Ferret v6.85+ this becomse a 120-character length. -define symbol q23456789012345678901234567890 = 4 -show symbol q* -Q23456789012345678901234567890 = "4" -define symbol q23456789012345678901234567890aaaaa = 5 -define symbol q23456789012345678901234567xxxaaaaa = 6 -show symbol q* -Q23456789012345678901234567890 = "4" -Q23456789012345678901234567890AAAAA = "5" -Q23456789012345678901234567XXXAAAAA = "6" - -! show the upper left coordinate limits labels as symbols -plot/i=1:100/y=10/z=5/set_up SIN(I/6)+Y+Z -show symbol lab* -LABX = "X" -LAB1 = "Y : 10" -LABNUM_Y = "1" -LAB2 = "Z : 5" -LABNUM_Z = "2" -LABY = "" -LABTIT = "SIN(I/6)+Y+Z" -message/continue Z value saved as ($LAB($LABNUM_Z)) - !-> message/continue Z value saved as Z : 5 -Z value saved as Z : 5 -message/continue Y value saved as "($LAB($LABNUM_Y))" - !-> message/continue Y value saved as "Y : 10" -Y value saved as "Y : 10" -message/continue No T value saved: "($LAB($LABNUM_T))" - !-> message/continue No T value saved: " " -No T value saved: " " - -! template tests (4/23/96) -cancel symbol lab? -show symbol lab* -LABNUM_Y = "1" -LABNUM_Z = "2" -LABTIT = "SIN(I/6)+Y+Z" -show symbol lab*y -LABNUM_Y = "1" - -! deliberate errors -set mode ignore_errors -define symbol test* = hello -define symbol t$5 = hi -set mode/last ignore_errors - -! bn420 - check enclosing parens -define symbol cmnd "show symbol"; define symbol arg "cmnd" -($cmnd) ($arg) - !-> show symbol cmnd -CMND = "show symbol" - -! bn420 - check symbol editing -define symbol test "\"I'm here\"" ! added surrounding quotes V533 -define symbol t2 hello -cancel symbol test2 -message/continue ($test) - !-> message/continue "I'm here" -I'm here -message/continue ($test"default") - !-> message/continue "I'm here" -I'm here -message/continue ($test2"default") - !-> message/continue default -default - -message/continue ($t2"|hello|bye|") - !-> message/continue hello -hello -message/continue ($t2"|hello>really hello|bye|") - !-> message/continue really hello -really hello -message/continue ($t2"|hello>you said: *|bye|") - !-> message/continue you said: hello -you said: hello -message/continue ($test"|*>you said: *|bye|") - !-> message/continue you said: "I'm here" -you said: "I'm here" - -! deliberate errors -set mode ignore_errors -message/continue ($test2"really hello|bye|") -set mode/last ignore_errors - -! V510 - added processing of backslash escapes -define symbol ss \"hello\" -show symbol ss -SS = ""hello"" -define symbol ss "\"hello\"" -show symbol ss -SS = ""hello"" -define symbol delayed_eval \`1+1\` -show symbol delayed_eval -DELAYED_EVAL = "`1+1`" -say ($delayed_eval) ! translate symbol and then evaluate - !-> MESSAGE/CONTINUE 2 -2 - - -! cleanup -cancel symbols/all -show symbols/all -PPL$XPIXEL = "438" -PPL$YPIXEL = "378" -BYTEORDER = "LITTLE" -FERRET_VERSION = "7.51" -FERRET_PLATFORM = "Linux 2.6.32-754.17.1.el6.x86_64" -FERRET_PRECISION = "double" -NETCDF_VERSION = "4.6.3 of Mar 21 2019 12:26:12 $" -FERRET_MEMORY = "31.25" -FERRET_BYTES_MEM = "250Mb" -SESSION_DATE = "20-Aug-19" -SESSION_TIME = "12:13" -SESSION_PID = "3395" -DELTA_CPU = "0.041994" -CLOCK_SECS = "32.2" -CURRENT_DATE = "20-Aug-19" -CURRENT_TIME = "12:14:00" -N_OPEN_DSETS = "0" -PROGRAM_NAME = "PyFerret" -PEAK_MEMORY = "201" -SPAWN_OK = "1" -SPAWN_STATUS = "0" - - -GO bn_reset bn_comma_delimited -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_comma_delimited -GO bn_comma_delimited ! added 10/2/95 -! bn420_comma_delimited - -! 10/2/95 - test comma and tab-delimited outputs -! 3/2018: Note with changes for high-resolution time -! axes,the output of LIST/FORM=COMMA var on a time -! axis will format the time as 10-SEP-1982 20:00, -! where previously the :mm minutes were left off. - -use gt4d011 - -! all possible 1, 2, and 3 dimensional lists -!XYZT -set region/i=95:96/j=41:42/k=2:3/l=5:6 -go bn_comma_delimited.sub comma temp -! bn420_comma_delimited.sub -! 10/95 benchmark various permutations for FERRET listed output - -! similar to bn200_permute except that a "format" argument can be passed -! and the region and expression information are external - -! usage: -! SET REGION/xxxx -! GO bn420_permute tab_delimited TEMP - -LOAD $2 - !-> LOAD temp - -LIST/ORDER=XYZT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XYZT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 135.5W ,134.5W - ---- L:5 T: 10-SEP-1982 20:00 - ---- K:2 Z: 15 -1.5S,27.3346,27.2218 -1.167S,27.2382,27.1246 - ---- K:3 Z: 25 -1.5S,27.2481,27.1248 -1.167S,27.1293,27.011 - ---- L:6 T: 16-SEP-1982 22:00 - ---- K:2 Z: 15 -1.5S,27.7751,27.6218 -1.167S,27.678,27.5239 - ---- K:3 Z: 25 -1.5S,27.6518,27.4892 -1.167S,27.51,27.3501 -LIST/ORDER=XYTZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XYTZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LONGITUDE-LATITUDE-TIME-DEPTH (m)) - 135.5W ,134.5W - ---- K:2 Z: 15 - ---- L:5 T: 10-SEP-1982 20:00 -1.5S,27.3346,27.2218 -1.167S,27.2382,27.1246 - ---- L:6 T: 16-SEP-1982 22:00 -1.5S,27.7751,27.6218 -1.167S,27.678,27.5239 - ---- K:3 Z: 25 - ---- L:5 T: 10-SEP-1982 20:00 -1.5S,27.2481,27.1248 -1.167S,27.1293,27.011 - ---- L:6 T: 16-SEP-1982 22:00 -1.5S,27.6518,27.4892 -1.167S,27.51,27.3501 -LIST/ORDER=XZYT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XZYT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LONGITUDE-DEPTH (m)-LATITUDE-TIME) - 135.5W ,134.5W - ---- L:5 T: 10-SEP-1982 20:00 - ---- J:41 Y: 1.5S -15,27.3346,27.2218 -25,27.2481,27.1248 - ---- J:42 Y: 1.167S -15,27.2382,27.1246 -25,27.1293,27.011 - ---- L:6 T: 16-SEP-1982 22:00 - ---- J:41 Y: 1.5S -15,27.7751,27.6218 -25,27.6518,27.4892 - ---- J:42 Y: 1.167S -15,27.678,27.5239 -25,27.51,27.3501 -LIST/ORDER=XZTY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XZTY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LONGITUDE-DEPTH (m)-TIME-LATITUDE) - 135.5W ,134.5W - ---- J:41 Y: 1.5S - ---- L:5 T: 10-SEP-1982 20:00 -15,27.3346,27.2218 -25,27.2481,27.1248 - ---- L:6 T: 16-SEP-1982 22:00 -15,27.7751,27.6218 -25,27.6518,27.4892 - ---- J:42 Y: 1.167S - ---- L:5 T: 10-SEP-1982 20:00 -15,27.2382,27.1246 -25,27.1293,27.011 - ---- L:6 T: 16-SEP-1982 22:00 -15,27.678,27.5239 -25,27.51,27.3501 -LIST/ORDER=XTYZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XTYZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LONGITUDE-TIME-LATITUDE-DEPTH (m)) - 135.5W ,134.5W - ---- K:2 Z: 15 - ---- J:41 Y: 1.5S -10-SEP-1982 20:00,27.3346,27.2218 -16-SEP-1982 22:00,27.7751,27.6218 - ---- J:42 Y: 1.167S -10-SEP-1982 20:00,27.2382,27.1246 -16-SEP-1982 22:00,27.678,27.5239 - ---- K:3 Z: 25 - ---- J:41 Y: 1.5S -10-SEP-1982 20:00,27.2481,27.1248 -16-SEP-1982 22:00,27.6518,27.4892 - ---- J:42 Y: 1.167S -10-SEP-1982 20:00,27.1293,27.011 -16-SEP-1982 22:00,27.51,27.3501 -LIST/ORDER=XTZY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XTZY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LONGITUDE-TIME-DEPTH (m)-LATITUDE) - 135.5W ,134.5W - ---- J:41 Y: 1.5S - ---- K:2 Z: 15 -10-SEP-1982 20:00,27.3346,27.2218 -16-SEP-1982 22:00,27.7751,27.6218 - ---- K:3 Z: 25 -10-SEP-1982 20:00,27.2481,27.1248 -16-SEP-1982 22:00,27.6518,27.4892 - ---- J:42 Y: 1.167S - ---- K:2 Z: 15 -10-SEP-1982 20:00,27.2382,27.1246 -16-SEP-1982 22:00,27.678,27.5239 - ---- K:3 Z: 25 -10-SEP-1982 20:00,27.1293,27.011 -16-SEP-1982 22:00,27.51,27.3501 -LIST/ORDER=YXZT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YXZT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LATITUDE-LONGITUDE-DEPTH (m)-TIME) - 1.5S ,1.167S - ---- L:5 T: 10-SEP-1982 20:00 - ---- K:2 Z: 15 -135.5W,27.3346,27.2382 -134.5W,27.2218,27.1246 - ---- K:3 Z: 25 -135.5W,27.2481,27.1293 -134.5W,27.1248,27.011 - ---- L:6 T: 16-SEP-1982 22:00 - ---- K:2 Z: 15 -135.5W,27.7751,27.678 -134.5W,27.6218,27.5239 - ---- K:3 Z: 25 -135.5W,27.6518,27.51 -134.5W,27.4892,27.3501 -LIST/ORDER=YXTZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YXTZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LATITUDE-LONGITUDE-TIME-DEPTH (m)) - 1.5S ,1.167S - ---- K:2 Z: 15 - ---- L:5 T: 10-SEP-1982 20:00 -135.5W,27.3346,27.2382 -134.5W,27.2218,27.1246 - ---- L:6 T: 16-SEP-1982 22:00 -135.5W,27.7751,27.678 -134.5W,27.6218,27.5239 - ---- K:3 Z: 25 - ---- L:5 T: 10-SEP-1982 20:00 -135.5W,27.2481,27.1293 -134.5W,27.1248,27.011 - ---- L:6 T: 16-SEP-1982 22:00 -135.5W,27.6518,27.51 -134.5W,27.4892,27.3501 -LIST/ORDER=YZXT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YZXT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LATITUDE-DEPTH (m)-LONGITUDE-TIME) - 1.5S ,1.167S - ---- L:5 T: 10-SEP-1982 20:00 - ---- I:95 X: 135.5W -15,27.3346,27.2382 -25,27.2481,27.1293 - ---- I:96 X: 134.5W -15,27.2218,27.1246 -25,27.1248,27.011 - ---- L:6 T: 16-SEP-1982 22:00 - ---- I:95 X: 135.5W -15,27.7751,27.678 -25,27.6518,27.51 - ---- I:96 X: 134.5W -15,27.6218,27.5239 -25,27.4892,27.3501 -LIST/ORDER=YZTX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YZTX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LATITUDE-DEPTH (m)-TIME-LONGITUDE) - 1.5S ,1.167S - ---- I:95 X: 135.5W - ---- L:5 T: 10-SEP-1982 20:00 -15,27.3346,27.2382 -25,27.2481,27.1293 - ---- L:6 T: 16-SEP-1982 22:00 -15,27.7751,27.678 -25,27.6518,27.51 - ---- I:96 X: 134.5W - ---- L:5 T: 10-SEP-1982 20:00 -15,27.2218,27.1246 -25,27.1248,27.011 - ---- L:6 T: 16-SEP-1982 22:00 -15,27.6218,27.5239 -25,27.4892,27.3501 -LIST/ORDER=YTXZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YTXZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LATITUDE-TIME-LONGITUDE-DEPTH (m)) - 1.5S ,1.167S - ---- K:2 Z: 15 - ---- I:95 X: 135.5W -10-SEP-1982 20:00,27.3346,27.2382 -16-SEP-1982 22:00,27.7751,27.678 - ---- I:96 X: 134.5W -10-SEP-1982 20:00,27.2218,27.1246 -16-SEP-1982 22:00,27.6218,27.5239 - ---- K:3 Z: 25 - ---- I:95 X: 135.5W -10-SEP-1982 20:00,27.2481,27.1293 -16-SEP-1982 22:00,27.6518,27.51 - ---- I:96 X: 134.5W -10-SEP-1982 20:00,27.1248,27.011 -16-SEP-1982 22:00,27.4892,27.3501 -LIST/ORDER=YTZX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YTZX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LATITUDE-TIME-DEPTH (m)-LONGITUDE) - 1.5S ,1.167S - ---- I:95 X: 135.5W - ---- K:2 Z: 15 -10-SEP-1982 20:00,27.3346,27.2382 -16-SEP-1982 22:00,27.7751,27.678 - ---- K:3 Z: 25 -10-SEP-1982 20:00,27.2481,27.1293 -16-SEP-1982 22:00,27.6518,27.51 - ---- I:96 X: 134.5W - ---- K:2 Z: 15 -10-SEP-1982 20:00,27.2218,27.1246 -16-SEP-1982 22:00,27.6218,27.5239 - ---- K:3 Z: 25 -10-SEP-1982 20:00,27.1248,27.011 -16-SEP-1982 22:00,27.4892,27.3501 -LIST/ORDER=ZXYT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZXYT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (DEPTH (m)-LONGITUDE-LATITUDE-TIME) - 15 ,25 - ---- L:5 T: 10-SEP-1982 20:00 - ---- J:41 Y: 1.5S -135.5W,27.3346,27.2481 -134.5W,27.2218,27.1248 - ---- J:42 Y: 1.167S -135.5W,27.2382,27.1293 -134.5W,27.1246,27.011 - ---- L:6 T: 16-SEP-1982 22:00 - ---- J:41 Y: 1.5S -135.5W,27.7751,27.6518 -134.5W,27.6218,27.4892 - ---- J:42 Y: 1.167S -135.5W,27.678,27.51 -134.5W,27.5239,27.3501 -LIST/ORDER=ZXTY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZXTY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (DEPTH (m)-LONGITUDE-TIME-LATITUDE) - 15 ,25 - ---- J:41 Y: 1.5S - ---- L:5 T: 10-SEP-1982 20:00 -135.5W,27.3346,27.2481 -134.5W,27.2218,27.1248 - ---- L:6 T: 16-SEP-1982 22:00 -135.5W,27.7751,27.6518 -134.5W,27.6218,27.4892 - ---- J:42 Y: 1.167S - ---- L:5 T: 10-SEP-1982 20:00 -135.5W,27.2382,27.1293 -134.5W,27.1246,27.011 - ---- L:6 T: 16-SEP-1982 22:00 -135.5W,27.678,27.51 -134.5W,27.5239,27.3501 -LIST/ORDER=ZYXT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZYXT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (DEPTH (m)-LATITUDE-LONGITUDE-TIME) - 15 ,25 - ---- L:5 T: 10-SEP-1982 20:00 - ---- I:95 X: 135.5W -1.5S,27.3346,27.2481 -1.167S,27.2382,27.1293 - ---- I:96 X: 134.5W -1.5S,27.2218,27.1248 -1.167S,27.1246,27.011 - ---- L:6 T: 16-SEP-1982 22:00 - ---- I:95 X: 135.5W -1.5S,27.7751,27.6518 -1.167S,27.678,27.51 - ---- I:96 X: 134.5W -1.5S,27.6218,27.4892 -1.167S,27.5239,27.3501 -LIST/ORDER=ZYTX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZYTX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (DEPTH (m)-LATITUDE-TIME-LONGITUDE) - 15 ,25 - ---- I:95 X: 135.5W - ---- L:5 T: 10-SEP-1982 20:00 -1.5S,27.3346,27.2481 -1.167S,27.2382,27.1293 - ---- L:6 T: 16-SEP-1982 22:00 -1.5S,27.7751,27.6518 -1.167S,27.678,27.51 - ---- I:96 X: 134.5W - ---- L:5 T: 10-SEP-1982 20:00 -1.5S,27.2218,27.1248 -1.167S,27.1246,27.011 - ---- L:6 T: 16-SEP-1982 22:00 -1.5S,27.6218,27.4892 -1.167S,27.5239,27.3501 -LIST/ORDER=ZTXY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZTXY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (DEPTH (m)-TIME-LONGITUDE-LATITUDE) - 15 ,25 - ---- J:41 Y: 1.5S - ---- I:95 X: 135.5W -10-SEP-1982 20:00,27.3346,27.2481 -16-SEP-1982 22:00,27.7751,27.6518 - ---- I:96 X: 134.5W -10-SEP-1982 20:00,27.2218,27.1248 -16-SEP-1982 22:00,27.6218,27.4892 - ---- J:42 Y: 1.167S - ---- I:95 X: 135.5W -10-SEP-1982 20:00,27.2382,27.1293 -16-SEP-1982 22:00,27.678,27.51 - ---- I:96 X: 134.5W -10-SEP-1982 20:00,27.1246,27.011 -16-SEP-1982 22:00,27.5239,27.3501 -LIST/ORDER=ZTYX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZTYX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (DEPTH (m)-TIME-LATITUDE-LONGITUDE) - 15 ,25 - ---- I:95 X: 135.5W - ---- J:41 Y: 1.5S -10-SEP-1982 20:00,27.3346,27.2481 -16-SEP-1982 22:00,27.7751,27.6518 - ---- J:42 Y: 1.167S -10-SEP-1982 20:00,27.2382,27.1293 -16-SEP-1982 22:00,27.678,27.51 - ---- I:96 X: 134.5W - ---- J:41 Y: 1.5S -10-SEP-1982 20:00,27.2218,27.1248 -16-SEP-1982 22:00,27.6218,27.4892 - ---- J:42 Y: 1.167S -10-SEP-1982 20:00,27.1246,27.011 -16-SEP-1982 22:00,27.5239,27.3501 -LIST/ORDER=TXYZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TXYZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (TIME-LONGITUDE-LATITUDE-DEPTH (m)) - 10-SEP-1982 20:00,16-SEP-1982 22:00 - ---- K:2 Z: 15 - ---- J:41 Y: 1.5S -135.5W,27.3346,27.7751 -134.5W,27.2218,27.6218 - ---- J:42 Y: 1.167S -135.5W,27.2382,27.678 -134.5W,27.1246,27.5239 - ---- K:3 Z: 25 - ---- J:41 Y: 1.5S -135.5W,27.2481,27.6518 -134.5W,27.1248,27.4892 - ---- J:42 Y: 1.167S -135.5W,27.1293,27.51 -134.5W,27.011,27.3501 -LIST/ORDER=TXZY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TXZY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (TIME-LONGITUDE-DEPTH (m)-LATITUDE) - 10-SEP-1982 20:00,16-SEP-1982 22:00 - ---- J:41 Y: 1.5S - ---- K:2 Z: 15 -135.5W,27.3346,27.7751 -134.5W,27.2218,27.6218 - ---- K:3 Z: 25 -135.5W,27.2481,27.6518 -134.5W,27.1248,27.4892 - ---- J:42 Y: 1.167S - ---- K:2 Z: 15 -135.5W,27.2382,27.678 -134.5W,27.1246,27.5239 - ---- K:3 Z: 25 -135.5W,27.1293,27.51 -134.5W,27.011,27.3501 -LIST/ORDER=TYXZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TYXZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (TIME-LATITUDE-LONGITUDE-DEPTH (m)) - 10-SEP-1982 20:00,16-SEP-1982 22:00 - ---- K:2 Z: 15 - ---- I:95 X: 135.5W -1.5S,27.3346,27.7751 -1.167S,27.2382,27.678 - ---- I:96 X: 134.5W -1.5S,27.2218,27.6218 -1.167S,27.1246,27.5239 - ---- K:3 Z: 25 - ---- I:95 X: 135.5W -1.5S,27.2481,27.6518 -1.167S,27.1293,27.51 - ---- I:96 X: 134.5W -1.5S,27.1248,27.4892 -1.167S,27.011,27.3501 -LIST/ORDER=TYZX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TYZX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (TIME-LATITUDE-DEPTH (m)-LONGITUDE) - 10-SEP-1982 20:00,16-SEP-1982 22:00 - ---- I:95 X: 135.5W - ---- K:2 Z: 15 -1.5S,27.3346,27.7751 -1.167S,27.2382,27.678 - ---- K:3 Z: 25 -1.5S,27.2481,27.6518 -1.167S,27.1293,27.51 - ---- I:96 X: 134.5W - ---- K:2 Z: 15 -1.5S,27.2218,27.6218 -1.167S,27.1246,27.5239 - ---- K:3 Z: 25 -1.5S,27.1248,27.4892 -1.167S,27.011,27.3501 -LIST/ORDER=TZXY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TZXY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (TIME-DEPTH (m)-LONGITUDE-LATITUDE) - 10-SEP-1982 20:00,16-SEP-1982 22:00 - ---- J:41 Y: 1.5S - ---- I:95 X: 135.5W -15,27.3346,27.7751 -25,27.2481,27.6518 - ---- I:96 X: 134.5W -15,27.2218,27.6218 -25,27.1248,27.4892 - ---- J:42 Y: 1.167S - ---- I:95 X: 135.5W -15,27.2382,27.678 -25,27.1293,27.51 - ---- I:96 X: 134.5W -15,27.1246,27.5239 -25,27.011,27.3501 -LIST/ORDER=TZYX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TZYX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (TIME-DEPTH (m)-LATITUDE-LONGITUDE) - 10-SEP-1982 20:00,16-SEP-1982 22:00 - ---- I:95 X: 135.5W - ---- J:41 Y: 1.5S -15,27.3346,27.7751 -25,27.2481,27.6518 - ---- J:42 Y: 1.167S -15,27.2382,27.678 -25,27.1293,27.51 - ---- I:96 X: 134.5W - ---- J:41 Y: 1.5S -15,27.2218,27.6218 -25,27.1248,27.4892 - ---- J:42 Y: 1.167S -15,27.1246,27.5239 -25,27.011,27.3501 - -!XYZ -set region/i=95:96/j=41:42/k=2:3/l=5 -go bn_comma_delimited.sub comma temp -! bn420_comma_delimited.sub -! 10/95 benchmark various permutations for FERRET listed output - -! similar to bn200_permute except that a "format" argument can be passed -! and the region and expression information are external - -! usage: -! SET REGION/xxxx -! GO bn420_permute tab_delimited TEMP - -LOAD $2 - !-> LOAD temp - -LIST/ORDER=XYZT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XYZT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)) - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W - ---- K:2 Z: 15 -1.5S,27.3346,27.2218 -1.167S,27.2382,27.1246 - ---- K:3 Z: 25 -1.5S,27.2481,27.1248 -1.167S,27.1293,27.011 -LIST/ORDER=XYTZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XYTZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)) - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W - ---- K:2 Z: 15 - ---- L:5 T: 10-SEP-1982 20:00 -1.5S,27.3346,27.2218 -1.167S,27.2382,27.1246 - ---- K:3 Z: 25 - ---- L:5 T: 10-SEP-1982 20:00 -1.5S,27.2481,27.1248 -1.167S,27.1293,27.011 -LIST/ORDER=XZYT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XZYT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LONGITUDE-DEPTH (m)-LATITUDE) - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W - ---- J:41 Y: 1.5S -15,27.3346,27.2218 -25,27.2481,27.1248 - ---- J:42 Y: 1.167S -15,27.2382,27.1246 -25,27.1293,27.011 -LIST/ORDER=XZTY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XZTY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LONGITUDE-DEPTH (m)-LATITUDE) - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W - ---- J:41 Y: 1.5S - ---- L:5 T: 10-SEP-1982 20:00 -15,27.3346,27.2218 -25,27.2481,27.1248 - ---- J:42 Y: 1.167S - ---- L:5 T: 10-SEP-1982 20:00 -15,27.2382,27.1246 -25,27.1293,27.011 -LIST/ORDER=XTYZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XTYZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)) - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W - ---- K:2 Z: 15 - ---- J:41 Y: 1.5S -10-SEP-1982 20:00,27.3346,27.2218 - ---- J:42 Y: 1.167S -10-SEP-1982 20:00,27.2382,27.1246 - ---- K:3 Z: 25 - ---- J:41 Y: 1.5S -10-SEP-1982 20:00,27.2481,27.1248 - ---- J:42 Y: 1.167S -10-SEP-1982 20:00,27.1293,27.011 -LIST/ORDER=XTZY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XTZY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LONGITUDE-DEPTH (m)-LATITUDE) - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W - ---- J:41 Y: 1.5S - ---- K:2 Z: 15 -10-SEP-1982 20:00,27.3346,27.2218 - ---- K:3 Z: 25 -10-SEP-1982 20:00,27.2481,27.1248 - ---- J:42 Y: 1.167S - ---- K:2 Z: 15 -10-SEP-1982 20:00,27.2382,27.1246 - ---- K:3 Z: 25 -10-SEP-1982 20:00,27.1293,27.011 -LIST/ORDER=YXZT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YXZT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LATITUDE-LONGITUDE-DEPTH (m)) - TIME : 10-SEP-1982 20:00 - 1.5S ,1.167S - ---- K:2 Z: 15 -135.5W,27.3346,27.2382 -134.5W,27.2218,27.1246 - ---- K:3 Z: 25 -135.5W,27.2481,27.1293 -134.5W,27.1248,27.011 -LIST/ORDER=YXTZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YXTZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LATITUDE-LONGITUDE-DEPTH (m)) - TIME : 10-SEP-1982 20:00 - 1.5S ,1.167S - ---- K:2 Z: 15 - ---- L:5 T: 10-SEP-1982 20:00 -135.5W,27.3346,27.2382 -134.5W,27.2218,27.1246 - ---- K:3 Z: 25 - ---- L:5 T: 10-SEP-1982 20:00 -135.5W,27.2481,27.1293 -134.5W,27.1248,27.011 -LIST/ORDER=YZXT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YZXT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LATITUDE-DEPTH (m)-LONGITUDE) - TIME : 10-SEP-1982 20:00 - 1.5S ,1.167S - ---- I:95 X: 135.5W -15,27.3346,27.2382 -25,27.2481,27.1293 - ---- I:96 X: 134.5W -15,27.2218,27.1246 -25,27.1248,27.011 -LIST/ORDER=YZTX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YZTX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LATITUDE-DEPTH (m)-LONGITUDE) - TIME : 10-SEP-1982 20:00 - 1.5S ,1.167S - ---- I:95 X: 135.5W - ---- L:5 T: 10-SEP-1982 20:00 -15,27.3346,27.2382 -25,27.2481,27.1293 - ---- I:96 X: 134.5W - ---- L:5 T: 10-SEP-1982 20:00 -15,27.2218,27.1246 -25,27.1248,27.011 -LIST/ORDER=YTXZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YTXZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LATITUDE-LONGITUDE-DEPTH (m)) - TIME : 10-SEP-1982 20:00 - 1.5S ,1.167S - ---- K:2 Z: 15 - ---- I:95 X: 135.5W -10-SEP-1982 20:00,27.3346,27.2382 - ---- I:96 X: 134.5W -10-SEP-1982 20:00,27.2218,27.1246 - ---- K:3 Z: 25 - ---- I:95 X: 135.5W -10-SEP-1982 20:00,27.2481,27.1293 - ---- I:96 X: 134.5W -10-SEP-1982 20:00,27.1248,27.011 -LIST/ORDER=YTZX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YTZX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LATITUDE-DEPTH (m)-LONGITUDE) - TIME : 10-SEP-1982 20:00 - 1.5S ,1.167S - ---- I:95 X: 135.5W - ---- K:2 Z: 15 -10-SEP-1982 20:00,27.3346,27.2382 - ---- K:3 Z: 25 -10-SEP-1982 20:00,27.2481,27.1293 - ---- I:96 X: 134.5W - ---- K:2 Z: 15 -10-SEP-1982 20:00,27.2218,27.1246 - ---- K:3 Z: 25 -10-SEP-1982 20:00,27.1248,27.011 -LIST/ORDER=ZXYT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZXYT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (DEPTH (m)-LONGITUDE-LATITUDE) - TIME : 10-SEP-1982 20:00 - 15 ,25 - ---- J:41 Y: 1.5S -135.5W,27.3346,27.2481 -134.5W,27.2218,27.1248 - ---- J:42 Y: 1.167S -135.5W,27.2382,27.1293 -134.5W,27.1246,27.011 -LIST/ORDER=ZXTY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZXTY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (DEPTH (m)-LONGITUDE-LATITUDE) - TIME : 10-SEP-1982 20:00 - 15 ,25 - ---- J:41 Y: 1.5S - ---- L:5 T: 10-SEP-1982 20:00 -135.5W,27.3346,27.2481 -134.5W,27.2218,27.1248 - ---- J:42 Y: 1.167S - ---- L:5 T: 10-SEP-1982 20:00 -135.5W,27.2382,27.1293 -134.5W,27.1246,27.011 -LIST/ORDER=ZYXT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZYXT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (DEPTH (m)-LATITUDE-LONGITUDE) - TIME : 10-SEP-1982 20:00 - 15 ,25 - ---- I:95 X: 135.5W -1.5S,27.3346,27.2481 -1.167S,27.2382,27.1293 - ---- I:96 X: 134.5W -1.5S,27.2218,27.1248 -1.167S,27.1246,27.011 -LIST/ORDER=ZYTX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZYTX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (DEPTH (m)-LATITUDE-LONGITUDE) - TIME : 10-SEP-1982 20:00 - 15 ,25 - ---- I:95 X: 135.5W - ---- L:5 T: 10-SEP-1982 20:00 -1.5S,27.3346,27.2481 -1.167S,27.2382,27.1293 - ---- I:96 X: 134.5W - ---- L:5 T: 10-SEP-1982 20:00 -1.5S,27.2218,27.1248 -1.167S,27.1246,27.011 -LIST/ORDER=ZTXY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZTXY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (DEPTH (m)-LONGITUDE-LATITUDE) - TIME : 10-SEP-1982 20:00 - 15 ,25 - ---- J:41 Y: 1.5S - ---- I:95 X: 135.5W -10-SEP-1982 20:00,27.3346,27.2481 - ---- I:96 X: 134.5W -10-SEP-1982 20:00,27.2218,27.1248 - ---- J:42 Y: 1.167S - ---- I:95 X: 135.5W -10-SEP-1982 20:00,27.2382,27.1293 - ---- I:96 X: 134.5W -10-SEP-1982 20:00,27.1246,27.011 -LIST/ORDER=ZTYX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZTYX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (DEPTH (m)-LATITUDE-LONGITUDE) - TIME : 10-SEP-1982 20:00 - 15 ,25 - ---- I:95 X: 135.5W - ---- J:41 Y: 1.5S -10-SEP-1982 20:00,27.3346,27.2481 - ---- J:42 Y: 1.167S -10-SEP-1982 20:00,27.2382,27.1293 - ---- I:96 X: 134.5W - ---- J:41 Y: 1.5S -10-SEP-1982 20:00,27.2218,27.1248 - ---- J:42 Y: 1.167S -10-SEP-1982 20:00,27.1246,27.011 -LIST/ORDER=TXYZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TXYZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)) - TIME : 10-SEP-1982 20:00 - 10-SEP-1982 20:00 - ---- K:2 Z: 15 - ---- J:41 Y: 1.5S -135.5W,27.3346 -134.5W,27.2218 - ---- J:42 Y: 1.167S -135.5W,27.2382 -134.5W,27.1246 - ---- K:3 Z: 25 - ---- J:41 Y: 1.5S -135.5W,27.2481 -134.5W,27.1248 - ---- J:42 Y: 1.167S -135.5W,27.1293 -134.5W,27.011 -LIST/ORDER=TXZY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TXZY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LONGITUDE-DEPTH (m)-LATITUDE) - TIME : 10-SEP-1982 20:00 - 10-SEP-1982 20:00 - ---- J:41 Y: 1.5S - ---- K:2 Z: 15 -135.5W,27.3346 -134.5W,27.2218 - ---- K:3 Z: 25 -135.5W,27.2481 -134.5W,27.1248 - ---- J:42 Y: 1.167S - ---- K:2 Z: 15 -135.5W,27.2382 -134.5W,27.1246 - ---- K:3 Z: 25 -135.5W,27.1293 -134.5W,27.011 -LIST/ORDER=TYXZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TYXZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LATITUDE-LONGITUDE-DEPTH (m)) - TIME : 10-SEP-1982 20:00 - 10-SEP-1982 20:00 - ---- K:2 Z: 15 - ---- I:95 X: 135.5W -1.5S,27.3346 -1.167S,27.2382 - ---- I:96 X: 134.5W -1.5S,27.2218 -1.167S,27.1246 - ---- K:3 Z: 25 - ---- I:95 X: 135.5W -1.5S,27.2481 -1.167S,27.1293 - ---- I:96 X: 134.5W -1.5S,27.1248 -1.167S,27.011 -LIST/ORDER=TYZX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TYZX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (LATITUDE-DEPTH (m)-LONGITUDE) - TIME : 10-SEP-1982 20:00 - 10-SEP-1982 20:00 - ---- I:95 X: 135.5W - ---- K:2 Z: 15 -1.5S,27.3346 -1.167S,27.2382 - ---- K:3 Z: 25 -1.5S,27.2481 -1.167S,27.1293 - ---- I:96 X: 134.5W - ---- K:2 Z: 15 -1.5S,27.2218 -1.167S,27.1246 - ---- K:3 Z: 25 -1.5S,27.1248 -1.167S,27.011 -LIST/ORDER=TZXY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TZXY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (DEPTH (m)-LONGITUDE-LATITUDE) - TIME : 10-SEP-1982 20:00 - 10-SEP-1982 20:00 - ---- J:41 Y: 1.5S - ---- I:95 X: 135.5W -15,27.3346 -25,27.2481 - ---- I:96 X: 134.5W -15,27.2218 -25,27.1248 - ---- J:42 Y: 1.167S - ---- I:95 X: 135.5W -15,27.2382 -25,27.1293 - ---- I:96 X: 134.5W -15,27.1246 -25,27.011 -LIST/ORDER=TZYX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TZYX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 points (DEPTH (m)-LATITUDE-LONGITUDE) - TIME : 10-SEP-1982 20:00 - 10-SEP-1982 20:00 - ---- I:95 X: 135.5W - ---- J:41 Y: 1.5S -15,27.3346 -25,27.2481 - ---- J:42 Y: 1.167S -15,27.2382 -25,27.1293 - ---- I:96 X: 134.5W - ---- J:41 Y: 1.5S -15,27.2218 -25,27.1248 - ---- J:42 Y: 1.167S -15,27.1246 -25,27.011 - -!!XYT -!set region/i=95:96/j=41:42/k=2/l=5:6 -!go bn_comma_delimited.sub comma temp -!!XZT -!set region/i=95:96/j=41/k=2:3/l=5:6 -!go bn_comma_delimited.sub comma temp -!!YZT -!set region/i=95/j=41:42/k=2:3/l=5:6 -!!go bn_comma_delimited.sub comma temp -!XY -set region/i=95:96/j=41:42/k=2/l=5 -go bn_comma_delimited.sub comma temp -! bn420_comma_delimited.sub -! 10/95 benchmark various permutations for FERRET listed output - -! similar to bn200_permute except that a "format" argument can be passed -! and the region and expression information are external - -! usage: -! SET REGION/xxxx -! GO bn420_permute tab_delimited TEMP - -LOAD $2 - !-> LOAD temp - -LIST/ORDER=XYZT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XYZT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W -1.5S,27.3346,27.2218 -1.167S,27.2382,27.1246 -LIST/ORDER=XYTZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XYTZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - TIME : 10-SEP-1982 20:00 - DEPTH (m): 15 - 135.5W ,134.5W -1.5S,27.3346,27.2218 -1.167S,27.2382,27.1246 -LIST/ORDER=XZYT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XZYT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W - ---- J:41 Y: 1.5S -15,27.3346,27.2218 - ---- J:42 Y: 1.167S -15,27.2382,27.1246 -LIST/ORDER=XZTY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XZTY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W - ---- J:41 Y: 1.5S - ---- L:5 T: 10-SEP-1982 20:00 -15,27.3346,27.2218 - ---- J:42 Y: 1.167S - ---- L:5 T: 10-SEP-1982 20:00 -15,27.2382,27.1246 -LIST/ORDER=XTYZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XTYZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - TIME : 10-SEP-1982 20:00 - DEPTH (m): 15 - 135.5W ,134.5W - ---- J:41 Y: 1.5S -10-SEP-1982 20:00,27.3346,27.2218 - ---- J:42 Y: 1.167S -10-SEP-1982 20:00,27.2382,27.1246 -LIST/ORDER=XTZY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=XTZY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - TIME : 10-SEP-1982 20:00 - DEPTH (m): 15 - 135.5W ,134.5W - ---- J:41 Y: 1.5S - ---- K:2 Z: 15 -10-SEP-1982 20:00,27.3346,27.2218 - ---- J:42 Y: 1.167S - ---- K:2 Z: 15 -10-SEP-1982 20:00,27.2382,27.1246 -LIST/ORDER=YXZT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YXZT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-LONGITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 1.5S ,1.167S -135.5W,27.3346,27.2382 -134.5W,27.2218,27.1246 -LIST/ORDER=YXTZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YXTZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-LONGITUDE) - TIME : 10-SEP-1982 20:00 - DEPTH (m): 15 - 1.5S ,1.167S -135.5W,27.3346,27.2382 -134.5W,27.2218,27.1246 -LIST/ORDER=YZXT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YZXT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-LONGITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 1.5S ,1.167S - ---- I:95 X: 135.5W -15,27.3346,27.2382 - ---- I:96 X: 134.5W -15,27.2218,27.1246 -LIST/ORDER=YZTX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YZTX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-LONGITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 1.5S ,1.167S - ---- I:95 X: 135.5W - ---- L:5 T: 10-SEP-1982 20:00 -15,27.3346,27.2382 - ---- I:96 X: 134.5W - ---- L:5 T: 10-SEP-1982 20:00 -15,27.2218,27.1246 -LIST/ORDER=YTXZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YTXZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-LONGITUDE) - TIME : 10-SEP-1982 20:00 - DEPTH (m): 15 - 1.5S ,1.167S - ---- I:95 X: 135.5W -10-SEP-1982 20:00,27.3346,27.2382 - ---- I:96 X: 134.5W -10-SEP-1982 20:00,27.2218,27.1246 -LIST/ORDER=YTZX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=YTZX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-LONGITUDE) - TIME : 10-SEP-1982 20:00 - DEPTH (m): 15 - 1.5S ,1.167S - ---- I:95 X: 135.5W - ---- K:2 Z: 15 -10-SEP-1982 20:00,27.3346,27.2382 - ---- I:96 X: 134.5W - ---- K:2 Z: 15 -10-SEP-1982 20:00,27.2218,27.1246 -LIST/ORDER=ZXYT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZXYT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 15 - ---- J:41 Y: 1.5S -135.5W,27.3346 -134.5W,27.2218 - ---- J:42 Y: 1.167S -135.5W,27.2382 -134.5W,27.1246 -LIST/ORDER=ZXTY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZXTY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 15 - ---- J:41 Y: 1.5S - ---- L:5 T: 10-SEP-1982 20:00 -135.5W,27.3346 -134.5W,27.2218 - ---- J:42 Y: 1.167S - ---- L:5 T: 10-SEP-1982 20:00 -135.5W,27.2382 -134.5W,27.1246 -LIST/ORDER=ZYXT $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZYXT /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-LONGITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 15 - ---- I:95 X: 135.5W -1.5S,27.3346 -1.167S,27.2382 - ---- I:96 X: 134.5W -1.5S,27.2218 -1.167S,27.1246 -LIST/ORDER=ZYTX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZYTX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-LONGITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 15 - ---- I:95 X: 135.5W - ---- L:5 T: 10-SEP-1982 20:00 -1.5S,27.3346 -1.167S,27.2382 - ---- I:96 X: 134.5W - ---- L:5 T: 10-SEP-1982 20:00 -1.5S,27.2218 -1.167S,27.1246 -LIST/ORDER=ZTXY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZTXY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 15 - ---- J:41 Y: 1.5S - ---- I:95 X: 135.5W -10-SEP-1982 20:00,27.3346 - ---- I:96 X: 134.5W -10-SEP-1982 20:00,27.2218 - ---- J:42 Y: 1.167S - ---- I:95 X: 135.5W -10-SEP-1982 20:00,27.2382 - ---- I:96 X: 134.5W -10-SEP-1982 20:00,27.1246 -LIST/ORDER=ZTYX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=ZTYX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-LONGITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 15 - ---- I:95 X: 135.5W - ---- J:41 Y: 1.5S -10-SEP-1982 20:00,27.3346 - ---- J:42 Y: 1.167S -10-SEP-1982 20:00,27.2382 - ---- I:96 X: 134.5W - ---- J:41 Y: 1.5S -10-SEP-1982 20:00,27.2218 - ---- J:42 Y: 1.167S -10-SEP-1982 20:00,27.1246 -LIST/ORDER=TXYZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TXYZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - TIME : 10-SEP-1982 20:00 - DEPTH (m): 15 - 10-SEP-1982 20:00 - ---- J:41 Y: 1.5S -135.5W,27.3346 -134.5W,27.2218 - ---- J:42 Y: 1.167S -135.5W,27.2382 -134.5W,27.1246 -LIST/ORDER=TXZY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TXZY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - TIME : 10-SEP-1982 20:00 - DEPTH (m): 15 - 10-SEP-1982 20:00 - ---- J:41 Y: 1.5S - ---- K:2 Z: 15 -135.5W,27.3346 -134.5W,27.2218 - ---- J:42 Y: 1.167S - ---- K:2 Z: 15 -135.5W,27.2382 -134.5W,27.1246 -LIST/ORDER=TYXZ $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TYXZ /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-LONGITUDE) - TIME : 10-SEP-1982 20:00 - DEPTH (m): 15 - 10-SEP-1982 20:00 - ---- I:95 X: 135.5W -1.5S,27.3346 -1.167S,27.2382 - ---- I:96 X: 134.5W -1.5S,27.2218 -1.167S,27.1246 -LIST/ORDER=TYZX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TYZX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-LONGITUDE) - TIME : 10-SEP-1982 20:00 - DEPTH (m): 15 - 10-SEP-1982 20:00 - ---- I:95 X: 135.5W - ---- K:2 Z: 15 -1.5S,27.3346 -1.167S,27.2382 - ---- I:96 X: 134.5W - ---- K:2 Z: 15 -1.5S,27.2218 -1.167S,27.1246 -LIST/ORDER=TZXY $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TZXY /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - TIME : 10-SEP-1982 20:00 - DEPTH (m): 15 - 10-SEP-1982 20:00 - ---- J:41 Y: 1.5S - ---- I:95 X: 135.5W -15,27.3346 - ---- I:96 X: 134.5W -15,27.2218 - ---- J:42 Y: 1.167S - ---- I:95 X: 135.5W -15,27.2382 - ---- I:96 X: 134.5W -15,27.1246 -LIST/ORDER=TZYX $1" |*>/FORMAT=*" $2 - !-> LIST/ORDER=TZYX /FORMAT=comma temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-LONGITUDE) - TIME : 10-SEP-1982 20:00 - DEPTH (m): 15 - 10-SEP-1982 20:00 - ---- I:95 X: 135.5W - ---- J:41 Y: 1.5S -15,27.3346 - ---- J:42 Y: 1.167S -15,27.2382 - ---- I:96 X: 134.5W - ---- J:41 Y: 1.5S -15,27.2218 - ---- J:42 Y: 1.167S -15,27.1246 - -!XZ -set region/i=95:96/j=41/k=2:3/l=5 -LIST/FORMAT=comma/precision=5/order=xz temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-DEPTH (m)) - LATITUDE : 1.5S - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W -15,27.335,27.222 -25,27.248,27.125 -LIST/FORMAT=comma/precision=5/order=zx temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (DEPTH (m)-LONGITUDE) - LATITUDE : 1.5S - TIME : 10-SEP-1982 20:00 - 15 ,25 -135.5W,27.335,27.248 -134.5W,27.222,27.125 -!XT -set region/i=95:96/j=41/k=2/l=5:6 -LIST/FORMAT=comma/precision=5/order=xt temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-TIME) - LATITUDE : 1.5S - DEPTH (m): 15 - 135.5W ,134.5W -10-SEP-1982 20:00,27.335,27.222 -16-SEP-1982 22:00,27.775,27.622 -LIST/FORMAT=comma/precision=5/order=tx temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (TIME-LONGITUDE) - LATITUDE : 1.5S - DEPTH (m): 15 - 10-SEP-1982 20:00,16-SEP-1982 22:00 -135.5W,27.335,27.775 -134.5W,27.222,27.622 -!YZ -set region/i=95/j=41:42/k=2:3/l=5 -LIST/FORMAT=comma/precision=5/order=yz temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-DEPTH (m)) - LONGITUDE: 135.5W - TIME : 10-SEP-1982 20:00 - 1.5S ,1.167S -15,27.335,27.238 -25,27.248,27.129 -LIST/FORMAT=comma/precision=5/order=zy temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (DEPTH (m)-LATITUDE) - LONGITUDE: 135.5W - TIME : 10-SEP-1982 20:00 - 15 ,25 -1.5S,27.335,27.248 -1.167S,27.238,27.129 -!YT -set region/i=95/j=41:42/k=2/l=5:6 -LIST/FORMAT=comma/precision=5/order=yt temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LATITUDE-TIME) - LONGITUDE: 135.5W - DEPTH (m): 15 - 1.5S ,1.167S -10-SEP-1982 20:00,27.335,27.238 -16-SEP-1982 22:00,27.775,27.678 -LIST/FORMAT=comma/precision=5/order=ty temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (TIME-LATITUDE) - LONGITUDE: 135.5W - DEPTH (m): 15 - 10-SEP-1982 20:00,16-SEP-1982 22:00 -1.5S,27.335,27.775 -1.167S,27.238,27.678 -!ZT -set region/i=95/j=41/k=2:3/l=5:6 -LIST/FORMAT=comma/precision=5/order=zt temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (DEPTH (m)-TIME) - LONGITUDE: 135.5W - LATITUDE : 1.5S - 15 ,25 -10-SEP-1982 20:00,27.335,27.248 -16-SEP-1982 22:00,27.775,27.652 -LIST/FORMAT=comma/precision=5/order=tz temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (TIME-DEPTH (m)) - LONGITUDE: 135.5W - LATITUDE : 1.5S - 10-SEP-1982 20:00,16-SEP-1982 22:00 -15,27.335,27.775 -25,27.248,27.652 -!X -set region/i=95:96/j=41/k=2/l=5 -LIST/FORMAT=comma/precision=5/order=x temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 points (LONGITUDE) - LATITUDE : 1.5S - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W -27.335 ,27.222 -LIST/FORMAT=comma/precision=5/order=y temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 points (LONGITUDE) - LATITUDE : 1.5S - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 1.5S -135.5W,27.335 -134.5W,27.222 -!Y -set region/i=95/j=41:42/k=2/l=5 -LIST/FORMAT=comma/precision=5/order=y temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 points (LATITUDE) - LONGITUDE: 135.5W - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 1.5S ,1.167S -27.335 ,27.238 -LIST/FORMAT=comma/precision=5/order=x temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 points (LATITUDE) - LONGITUDE: 135.5W - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 135.5W -1.5S,27.335 -1.167S,27.238 -!Z -set region/i=95/j=41/k=2:3/l=5 -LIST/FORMAT=comma/precision=5/order=z temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 points (DEPTH (m)) - LONGITUDE: 135.5W - LATITUDE : 1.5S - TIME : 10-SEP-1982 20:00 - 15 ,25 -27.335 ,27.248 -LIST/FORMAT=comma/precision=5/order=x temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 points (DEPTH (m)) - LONGITUDE: 135.5W - LATITUDE : 1.5S - TIME : 10-SEP-1982 20:00 - 135.5W - ---- K:2 Z: 15 -1.5S,27.335 - ---- K:3 Z: 25 -1.5S,27.248 -!T -set region/i=95/j=41/k=2/l=5:6 -LIST/FORMAT=comma/precision=5/order=t temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 points (TIME) - LONGITUDE: 135.5W - LATITUDE : 1.5S - DEPTH (m): 15 - 10-SEP-1982 20:00,16-SEP-1982 22:00 -27.335 ,27.775 -LIST/FORMAT=comma/precision=5/order=x temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 points (TIME) - LONGITUDE: 135.5W - LATITUDE : 1.5S - DEPTH (m): 15 - 135.5W - ---- L:5 T: 10-SEP-1982 20:00 - ---- K:2 Z: 15 -1.5S,27.335 - ---- L:6 T: 16-SEP-1982 22:00 - ---- K:2 Z: 15 -1.5S,27.775 - -! tab-delimited test -set region/i=95:96/j=41:42/k=2:3/l=5:6 -LIST/FORMAT=tab temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 135.5W 134.5W - ---- L:5 T: 10-SEP-1982 20:00 - ---- K:2 Z: 15 -1.5S 27.3346 27.2218 -1.167S 27.2382 27.1246 - ---- K:3 Z: 25 -1.5S 27.2481 27.1248 -1.167S 27.1293 27.011 - ---- L:6 T: 16-SEP-1982 22:00 - ---- K:2 Z: 15 -1.5S 27.7751 27.6218 -1.167S 27.678 27.5239 - ---- K:3 Z: 25 -1.5S 27.6518 27.4892 -1.167S 27.51 27.3501 - -! big number formatting test -set region/i=95:96/j=41:42/k=2/l=5 -LIST/FORMAT=comma/precision=1 randu(i)*temp*1e7 - VARIABLE : RANDU(I)*TEMP*1E7 - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W -1.5S,2.E+08,2.E+08 -1.167S,2.E+08,2.E+08 -LIST/FORMAT=comma/precision=9 randu(i)*temp*1e7 - VARIABLE : RANDU(I)*TEMP*1E7 - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W -1.5S,166750845,202088412 -1.167S,166162833,201366579 - -! small number formatting test -set region/i=95:96/j=41:42/k=2/l=5 -LIST/FORMAT=comma/precision=1 randu(i)*temp*1e-7 - VARIABLE : RANDU(I)*TEMP*1E-7 - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W -1.5S,2.E-06,2.E-06 -1.167S,2.E-06,2.E-06 -LIST/FORMAT=comma/precision=9 randu(i)*temp*1e-7 - VARIABLE : RANDU(I)*TEMP*1E-7 - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 15 - TIME : 10-SEP-1982 20:00 - 135.5W ,134.5W -1.5S,1.66750845E-06,2.02088412E-06 -1.167S,1.66162833E-06,2.01366579E-06 - -! multiple variable test -set region/i=95:96/j=41:42/k=2/l=5 -LIST/FORMAT=comma/precision=5 u,v - DATA SET: ./data/gt4d011.cdf - LONGITUDE: 135.5W to 133.5W - LATITUDE: 1.5S to 0.833S - DEPTH (m): 15 - TIME: 10-SEP-1982 20:00 - Column 1: U is ZONAL VELOCITY (cm/sec) BAD FLAG : -1.E+34 - Column 2: V is MERIDIONAL VELOCITY (cm/sec) BAD FLAG : -1.E+34 - U,V - ---- J:41 Y: 1.333S -135W / 95:41.597,-1.5366 -134W / 96:39.163,-1.7415 - ---- J:42 Y: 1S -135W / 95:42.39,1.4695 -134W / 96:40.019,1.5182 - -! abstract expression test -set region/i=1:5/j=1:3 -LIST/FORMAT=comma/precision=5 10*j+i - VARIABLE : 10*J+I - BAD FLAG : -1.E+34 - SUBSET : 5 by 3 points (X-Y) - 1 ,2 ,3 ,4 ,5 -1,11,12,13,14,15 -2,21,22,23,24,25 -3,31,32,33,34,35 - -GO bn_reset bn_dynamic_grids -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dynamic_grids -GO bn_dynamic_grids ! added 9/27/95, V420 ->V491 4/98 -! bn420_dynamic_grids -! 9/95-9/11/95 - test the creation, destruction, and use of dynamic grids -! 2/96 - added GX=lo:hi:delta notation -! 4/98 *sh* changes once again to confine_axis -- earlier trapped error is once -! again an error -! V500beta1.1 5/26/99 *kob* - As of v500beta1.1, there is a modification to -! tm_world_recur.c which fixes a previous problem -! w/ implicit strides on an underlying irregular grid. -! This caused numerical differences in the output benchmark -! log files when compared to pre beta5001.1 logs. The -! numericals results found here are verified to be correct -! V550 11/02 *sh* - documentation change only reflecting new modulo behavior -! V603 5/07 *acm* documentation changew - some of the context errors have gone away. -! V698 3/16 *acm* Removed Philander-Seigel code including diagnostic variables, -! pre-defined axes and grids. - -! deliberate dynamic grid errors - -can mode diag - -use gtsa056_1 - -set region/l=1/k=1/i=101:105/j=46:50 - -! what the implicit grids look like -load temp[gx=u] -show grid/dynamic -Dynamic grids: - GRID (G004) use count: 1 - name axis # pts start end - PSXU LONGITUDE 160mr 131E 70W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - - -set mode ignore_errors - -list temp[gx=noexist] ! err during get_context_mods -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes - -list temp[gx=u,p=noexist] ! err during get_context_mods -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes - -! new error checks 2/96 -list temp[gx=130e:80w:10,x=160e:160w] ! err during get_context_mods -list temp[gx=130e:80w:10,i=2:5] ! err during get_context_mods -list temp[i=2:5,gx=130e:80w:10] ! err during get_context_mods -list temp[gx=130e:80w] ! err during get_context_mods - -list temp[gx=u] + noexist ! err during is_algebra -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes - -list temp[gx=u,k=30] ! err during get_var_context -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes - -list temp[gx=u,k=20] ! err during read -show grid/dynamic -Dynamic grids: - GRID (G004) use count: 1 - name axis # pts start end - PSXU LONGITUDE 160mr 131E 70W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -list temp[gx=psyu] ! err during get_context_grid - axis mismatch -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes - -list/i=3:6 X[gx=PSYT] ! same err but on pseudo-variable -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes - -! now similar error tests but nested one level down on stack - -let a = u -list temp[gx=a] ! uvar for grid name - VARIABLE : TEMPERATURE (deg. C) - regrid: 1 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129W 128W 127W 126W 125W - 101 102 103 104 105 - 1.5N / 50: 24.4391 24.2803 24.2283 24.3266 24.6189 - 1.17N / 49: 24.2444 24.0991 24.0441 24.1235 24.3692 - 0.83N / 48: 24.0779 23.9440 23.8736 23.9176 24.1125 - 0.5N / 47: 23.9588 23.8406 23.7576 23.7500 23.8696 - 0.17N / 46: 23.9009 23.7946 23.7029 23.6527 23.6934 -show grid/dynamic -Dynamic grids: - GRID (G004) use count: 1 - name axis # pts start end - PSXU LONGITUDE 160mr 131E 70W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -let tu = temp[gx=noexist] -list tu ! err during get_context_mods -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes - -let tu = temp[gx=u,p=noexist] -list tu ! err during get_context_mods -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes - -let tu = temp[gx=u] + noexist -list tu ! err during is_algebra -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes - -let tu = temp[gx=u,k=30] -list tu ! err during get_var_context -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes - -let tu = temp[gx=u,k=20] -list tu ! err during read -show grid/dynamic -Dynamic grids: - GRID (G004) use count: 2 - name axis # pts start end - PSXU LONGITUDE 160mr 131E 70W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -let tu = temp[gx=psyu] -list tu ! err during get_context_grid - axis mismatch -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes - -define axis/z=5:15/npoints=999999/unit=meters/depth z999999 - -! SET MEM smaller to make sure to get the intended error, -! else we list huge amount of adata - -let save_mem = ($ferret_memory) - !-> DEFINE VARIABLE save_mem = 31.25 -set mem/siz = 10 - -list temp[gz=z999999,z=5:15] ! err during regrid - To fulfill this request would exceed the current SET MEMORY/SIZE= limit of 80Mb - At the moment that the memory limit was reached - memory was committed as follows: - - to objects used in computation: 50 (0%) - The size of the requested object was: 200 Mb (250%) -show grid/dynamic -Dynamic grids: - GRID (G004) use count: 1 - name axis # pts start end - PSXT LONGITUDE 160mr 130.5E 70.5W - PSYT LATITUDE 100 i 28.836S 48.568N - Z999999 DEPTH (m) 999999 r- 5 15 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 -set mem/siz=`save_mem` - !-> set mem/siz=31.25 - -shade 1/0 * temp[gx=u] ! err during plot -show grid/dynamic -Dynamic grids: - GRID (G004) use count: 1 - name axis # pts start end - PSXU LONGITUDE 160mr 131E 70W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -set mode/last ignore - -! ================================= - -! basic implicit grid accesses -list temp[gx=psxu] - VARIABLE : TEMPERATURE (deg. C) - regrid: 1 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129W 128W 127W 126W 125W - 101 102 103 104 105 - 1.5N / 50: 24.4391 24.2803 24.2283 24.3266 24.6189 - 1.17N / 49: 24.2444 24.0991 24.0441 24.1235 24.3692 - 0.83N / 48: 24.0779 23.9440 23.8736 23.9176 24.1125 - 0.5N / 47: 23.9588 23.8406 23.7576 23.7500 23.8696 - 0.17N / 46: 23.9009 23.7946 23.7029 23.6527 23.6934 -show grid/dyn -Dynamic grids: - GRID (G004) use count: 1 - name axis # pts start end - PSXU LONGITUDE 160mr 131E 70W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -list temp[gy=psyu] - VARIABLE : TEMPERATURE (deg. C) - regrid: on Y - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 1.67N / 50: 24.6561 24.4277 24.3118 24.3162 24.5191 - 1.33N / 49: 24.4396 24.2439 24.1355 24.1369 24.3131 - 1N / 48: 24.2464 24.0759 23.9672 23.9505 24.0906 - 0.67N / 47: 24.0904 23.9463 23.8383 23.7928 23.8749 - 0.33N / 46: 23.9899 23.8698 23.7654 23.6951 23.7076 - -list temp[gx=u] - VARIABLE : TEMPERATURE (deg. C) - regrid: 1 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129W 128W 127W 126W 125W - 101 102 103 104 105 - 1.5N / 50: 24.4391 24.2803 24.2283 24.3266 24.6189 - 1.17N / 49: 24.2444 24.0991 24.0441 24.1235 24.3692 - 0.83N / 48: 24.0779 23.9440 23.8736 23.9176 24.1125 - 0.5N / 47: 23.9588 23.8406 23.7576 23.7500 23.8696 - 0.17N / 46: 23.9009 23.7946 23.7029 23.6527 23.6934 -show grid/dyn -Dynamic grids: - GRID (G004) use count: 1 - name axis # pts start end - PSXU LONGITUDE 160mr 131E 70W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -list temp[gx=w] - VARIABLE : TEMPERATURE (deg. C) - regrid: TEMP - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 1.5N / 50: 24.5431 24.3351 24.2254 24.2312 24.4219 - 1.17N / 49: 24.3362 24.1527 24.0455 24.0427 24.2042 - 0.83N / 48: 24.1567 23.9991 23.8888 23.8583 23.9770 - 0.5N / 47: 24.0242 23.8934 23.7879 23.7273 23.7728 - 0.17N / 46: 23.9556 23.8461 23.7430 23.6629 23.6425 - -list temp[gx=psxu] + 5 - VARIABLE : TEMP[GX=PSXU] + 5 - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129W 128W 127W 126W 125W - 101 102 103 104 105 - 1.5N / 50: 29.4391 29.2803 29.2283 29.3266 29.6189 - 1.17N / 49: 29.2444 29.0991 29.0441 29.1235 29.3692 - 0.83N / 48: 29.0779 28.9440 28.8736 28.9176 29.1125 - 0.5N / 47: 28.9588 28.8406 28.7576 28.7500 28.8696 - 0.17N / 46: 28.9009 28.7946 28.7029 28.6527 28.6934 -show grid/dyn -Dynamic grids: - GRID (G004) use count: 1 - name axis # pts start end - PSXU LONGITUDE 160mr 131E 70W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -list 5 + temp[gx=psxu] - VARIABLE : 5 + TEMP[GX=PSXU] - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129W 128W 127W 126W 125W - 101 102 103 104 105 - 1.5N / 50: 29.4391 29.2803 29.2283 29.3266 29.6189 - 1.17N / 49: 29.2444 29.0991 29.0441 29.1235 29.3692 - 0.83N / 48: 29.0779 28.9440 28.8736 28.9176 29.1125 - 0.5N / 47: 28.9588 28.8406 28.7576 28.7500 28.8696 - 0.17N / 46: 28.9009 28.7946 28.7029 28.6527 28.6934 -show grid/dyn -Dynamic grids: - GRID (G004) use count: 1 - name axis # pts start end - PSXU LONGITUDE 160mr 131E 70W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -let tu = temp[gx=psxu] -list tu - VARIABLE : TEMP[GX=PSXU] - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129W 128W 127W 126W 125W - 101 102 103 104 105 - 1.5N / 50: 24.4391 24.2803 24.2283 24.3266 24.6189 - 1.17N / 49: 24.2444 24.0991 24.0441 24.1235 24.3692 - 0.83N / 48: 24.0779 23.9440 23.8736 23.9176 24.1125 - 0.5N / 47: 23.9588 23.8406 23.7576 23.7500 23.8696 - 0.17N / 46: 23.9009 23.7946 23.7029 23.6527 23.6934 -show grid/dyn -Dynamic grids: - GRID (G004) use count: 2 - name axis # pts start end - PSXU LONGITUDE 160mr 131E 70W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 -show grid tu - GRID (G004) - name axis # pts start end subset - PSXU LONGITUDE 160mr 131E 70W full - PSYT LATITUDE 100 i 28.836S 48.568N full - PSZT DEPTH (m) 27 i- 5 3824 full - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 full - -let tu = temp[gx=psxu] + 5 -list tu - VARIABLE : TEMP[GX=PSXU] + 5 - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129W 128W 127W 126W 125W - 101 102 103 104 105 - 1.5N / 50: 29.4391 29.2803 29.2283 29.3266 29.6189 - 1.17N / 49: 29.2444 29.0991 29.0441 29.1235 29.3692 - 0.83N / 48: 29.0779 28.9440 28.8736 28.9176 29.1125 - 0.5N / 47: 28.9588 28.8406 28.7576 28.7500 28.8696 - 0.17N / 46: 28.9009 28.7946 28.7029 28.6527 28.6934 -show grid/dyn -Dynamic grids: - GRID (G004) use count: 2 - name axis # pts start end - PSXU LONGITUDE 160mr 131E 70W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - - -! implicit grid conformability -set reg/x=180:175w/y=0:2n/z=0/l=1 -list taux[g=temp] ! grid to temp w/out Z axis - VARIABLE : ZONAL WIND STRESS (dynes/cm**2) - regrid: 1 deg on X, on Y, 73 hour on T - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 7 points (LONGITUDE-LATITUDE) - TIME : 15-JAN-1982 14:00 - 179.5W 178.5W 177.5W 176.5W 175.5W - 51 52 53 54 55 - 1.83N / 51: -0.627987 -0.652220 -0.659763 -0.663230 -0.662623 - 1.5N / 50: -0.631590 -0.653915 -0.653717 -0.650547 -0.644405 - 1.17N / 49: -0.635168 -0.655610 -0.647673 -0.637865 -0.626188 - 0.83N / 48: -0.627037 -0.647150 -0.637065 -0.626707 -0.616078 - 0.5N / 47: -0.607180 -0.628495 -0.621847 -0.617047 -0.614073 - 0.17N / 46: -0.587298 -0.609840 -0.606630 -0.607388 -0.612068 - 0.17S / 45: -0.567438 -0.591208 -0.591415 -0.597708 -0.610065 -list temp[g=taux] ! grid to taux w/ Z axis (same grid as "U") - VARIABLE : TEMPERATURE (deg. C) - regrid: 1 deg on X, on Y, 73 hour on T - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 7 points (LONGITUDE-LATITUDE) - DEPTH (m): 0 (interpolated) - TIME : 15-JAN-1982 14:00 - 180E 179W 178W 177W 176W 175W - 50 51 52 53 54 55 - 2N / 51: 27.5799 27.5356 27.4992 27.4507 27.3693 27.2712 - 1.67N / 50: 27.6149 27.5639 27.5186 27.4671 27.3903 27.2903 - 1.33N / 49: 27.6580 27.6003 27.5494 27.4926 27.4148 27.3150 - 1N / 48: 27.7046 27.6371 27.5806 27.5195 27.4400 27.3410 - 0.67N / 47: 27.7530 27.6753 27.6127 27.5468 27.4642 27.3648 - 0.33N / 46: 27.8004 27.7159 27.6494 27.5789 27.4919 27.3900 - 0 / 45: 27.8480 27.7622 27.6962 27.6232 27.5320 27.4267 -list temp[gx=taux,gy=taux] - VARIABLE : TEMPERATURE (deg. C) - regrid: U - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 7 points (LONGITUDE-LATITUDE) - DEPTH (m): 0 (interpolated) - TIME : 15-JAN-1982 14:00 - 180E 179W 178W 177W 176W 175W - 50 51 52 53 54 55 - 2N / 51: 27.5799 27.5356 27.4992 27.4507 27.3693 27.2712 - 1.67N / 50: 27.6149 27.5639 27.5186 27.4671 27.3903 27.2903 - 1.33N / 49: 27.6580 27.6003 27.5494 27.4926 27.4148 27.3150 - 1N / 48: 27.7046 27.6371 27.5806 27.5195 27.4400 27.3410 - 0.67N / 47: 27.7530 27.6753 27.6127 27.5468 27.4642 27.3648 - 0.33N / 46: 27.8004 27.7159 27.6494 27.5789 27.4919 27.3900 - 0 / 45: 27.8480 27.7622 27.6962 27.6232 27.5320 27.4267 -list temp[gx=taux] ! X only - VARIABLE : TEMPERATURE (deg. C) - regrid: 1 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 7 points (LONGITUDE-LATITUDE) - DEPTH (m): 0 (interpolated) - TIME : 15-JAN-1982 14:00 - 180E 179W 178W 177W 176W 175W - 50 51 52 53 54 55 - 1.83N / 51: 27.5946 27.5458 27.5038 27.4555 27.3787 27.2791 - 1.5N / 50: 27.6353 27.5819 27.5333 27.4787 27.4018 27.3015 - 1.17N / 49: 27.6807 27.6187 27.5654 27.5064 27.4279 27.3285 - 0.83N / 48: 27.7285 27.6555 27.5958 27.5327 27.4522 27.3536 - 0.5N / 47: 27.7775 27.6952 27.6296 27.5610 27.4762 27.3760 - 0.17N / 46: 27.8234 27.7366 27.6691 27.5969 27.5077 27.4040 - 0.17S / 45: 27.8727 27.7878 27.7232 27.6494 27.5563 27.4494 -show grid/dynamic -Dynamic grids: - GRID (G004) use count: 2 - name axis # pts start end - PSXU LONGITUDE 160mr 131E 70W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -! regridding between grids with mutually exclusive axes -cancel region -define grid/y=`temp,return=grid` gy - !-> define grid/y=PS3DT2 gy -define grid/x=`temp,return=grid` gx - !-> define grid/x=PS3DT2 gx -LET/QUIET a = x[g=gx] -list/i=1:4 a,a[g=gy] ! nothing to regrid - both are same - LONGITUDE: 130E to 134E - Column 1: A is X[G=GX] - Column 2: A is X[G=GX] - A A -130.5E / 1: 130.500 130.500 -131.5E / 2: 131.500 131.500 -132.5E / 3: 132.500 132.500 -133.5E / 4: 133.500 133.500 - - -!!!!!!!!!!!!!!!!!!!!!!!! -! pseudo-variables -set data gtsa056_1 - -list/i=3:6 X ! abstract - VARIABLE : X - axis ABSTRACT - SUBSET : 4 points (X) - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 - 6 / 6: 6.00000 -list/i=3:6 X[g=u] ! PS3DU - VARIABLE : X - axis PSXU - FILENAME : gtsa056_1.cdf - SUBSET : 4 points (LONGITUDE) - 133E / 3: 133.000 - 134E / 4: 134.000 - 135E / 5: 135.000 - 136E / 6: 136.000 -list/i=3:6 X[gx=u] ! PS3DU - VARIABLE : X - axis PSXU - FILENAME : gtsa056_1.cdf - SUBSET : 4 points (LONGITUDE) - 133E / 3: 133.000 - 134E / 4: 134.000 - 135E / 5: 135.000 - 136E / 6: 136.000 -list/i=3:6 X[gx=PSXT] ! PS3DT - VARIABLE : X - axis PSXT - SUBSET : 4 points (LONGITUDE) - 132.5E / 3: 132.500 - 133.5E / 4: 133.500 - 134.5E / 5: 134.500 - 135.5E / 6: 135.500 - -let ax = x -list/i=3:6 ax ! abstract - VARIABLE : X - SUBSET : 4 points (X) - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 - 6 / 6: 6.00000 -let ax = X[g=u] -list/i=3:6 ax ! PS3DU - VARIABLE : X[G=U] - FILENAME : gtsa056_1.cdf - SUBSET : 4 points (LONGITUDE) - 133E / 3: 133.000 - 134E / 4: 134.000 - 135E / 5: 135.000 - 136E / 6: 136.000 -let ax = X[gx=u] -list/i=3:6 ax ! PS3DU - VARIABLE : X[GX=U] - FILENAME : gtsa056_1.cdf - SUBSET : 4 points (LONGITUDE) - 133E / 3: 133.000 - 134E / 4: 134.000 - 135E / 5: 135.000 - 136E / 6: 136.000 -let ax = X[gx=PSXT] -list/i=3:6 ax ! PS3DT - VARIABLE : X[GX=PSXT] - SUBSET : 4 points (LONGITUDE) - 132.5E / 3: 132.500 - 133.5E / 4: 133.500 - 134.5E / 5: 134.500 - 135.5E / 6: 135.500 -show grid/dyn -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes - -!!!!!!!!!!!!!!!!!!!!!!!! -! dynamic axes -! * * * dynamic generation of pseudo-variables * * * -list x[x=.1:1:.1] ! dynamic abstract - VARIABLE : X - axis (AX004) - SUBSET : 10 points (X) - 0.1 / 1: 0.10000 - 0.2 / 2: 0.20000 - 0.3 / 3: 0.30000 - 0.4 / 4: 0.40000 - 0.5 / 5: 0.50000 - 0.6 / 6: 0.60000 - 0.7 / 7: 0.70000 - 0.8 / 8: 0.80000 - 0.9 / 9: 0.90000 - 1 / 10: 1.00000 -list x[gx=psxu,x=130:150:2.5] ! dynamic based on named axis - VARIABLE : X - axis (AX002) - SUBSET : 9 points (LONGITUDE) - 130E / 1: 130.000 - 132.5E / 2: 132.500 - 135E / 3: 135.000 - 137.5E / 4: 137.500 - 140E / 5: 140.000 - 142.5E / 6: 142.500 - 145E / 7: 145.000 - 147.5E / 8: 147.500 - 150E / 9: 150.000 -! abstract variables -cancel region -LET/QUIET a = x[x=0.1:10:1.5] + y[y=101:110:1] -list a - VARIABLE : X[X=0.1:10:1.5] + Y[Y=101:110:1] - SUBSET : 7 by 10 points (X-Y) - 0.1 1.6 3.1 4.6 6.1 7.6 9.1 - 1 2 3 4 5 6 7 - 101 / 1: 101.100 102.600 104.100 105.600 107.100 108.600 110.100 - 102 / 2: 102.100 103.600 105.100 106.600 108.100 109.600 111.100 - 103 / 3: 103.100 104.600 106.100 107.600 109.100 110.600 112.100 - 104 / 4: 104.100 105.600 107.100 108.600 110.100 111.600 113.100 - 105 / 5: 105.100 106.600 108.100 109.600 111.100 112.600 114.100 - 106 / 6: 106.100 107.600 109.100 110.600 112.100 113.600 115.100 - 107 / 7: 107.100 108.600 110.100 111.600 113.100 114.600 116.100 - 108 / 8: 108.100 109.600 111.100 112.600 114.100 115.600 117.100 - 109 / 9: 109.100 110.600 112.100 113.600 115.100 116.600 118.100 - 110 / 10: 110.100 111.600 113.100 114.600 116.100 117.600 119.100 -list a[i=1:10:3] - VARIABLE : X[X=0.1:10:1.5] + Y[Y=101:110:1] - regrid: 4.5 delta on X - SUBSET : 3 by 10 points (X-Y) - 0.1 4.6 9.1 - 1 2 3 - 101 / 1: 101.100 105.600 110.100 - 102 / 2: 102.100 106.600 111.100 - 103 / 3: 103.100 107.600 112.100 - 104 / 4: 104.100 108.600 113.100 - 105 / 5: 105.100 109.600 114.100 - 106 / 6: 106.100 110.600 115.100 - 107 / 7: 107.100 111.600 116.100 - 108 / 8: 108.100 112.600 117.100 - 109 / 9: 109.100 113.600 118.100 - 110 / 10: 110.100 114.600 119.100 -list a[i=-1:20:5] ! clips to allowed limits - VARIABLE : X[X=0.1:10:1.5] + Y[Y=101:110:1] - regrid: 7.5 delta on X - SUBSET : 2 by 10 points (X-Y) - 0.1 7.6 - 1 2 - 101 / 1: 101.100 108.600 - 102 / 2: 102.100 109.600 - 103 / 3: 103.100 110.600 - 104 / 4: 104.100 111.600 - 105 / 5: 105.100 112.600 - 106 / 6: 106.100 113.600 - 107 / 7: 107.100 114.600 - 108 / 8: 108.100 115.600 - 109 / 9: 109.100 116.600 - 110 / 10: 110.100 117.600 -list a[y=102:105:.5] - VARIABLE : X[X=0.1:10:1.5] + Y[Y=101:110:1] - regrid: 0.5 delta on Y - SUBSET : 7 by 7 points (X-Y) - 0.1 1.6 3.1 4.6 6.1 7.6 9.1 - 1 2 3 4 5 6 7 - 102 / 1: 102.100 103.600 105.100 106.600 108.100 109.600 111.100 - 102.5 / 2: 102.600 104.100 105.600 107.100 108.600 110.100 111.600 - 103 / 3: 103.100 104.600 106.100 107.600 109.100 110.600 112.100 - 103.5 / 4: 103.600 105.100 106.600 108.100 109.600 111.100 112.600 - 104 / 5: 104.100 105.600 107.100 108.600 110.100 111.600 113.100 - 104.5 / 6: 104.600 106.100 107.600 109.100 110.600 112.100 113.600 - 105 / 7: 105.100 106.600 108.100 109.600 111.100 112.600 114.100 -list a[y=95:115:7] - VARIABLE : X[X=0.1:10:1.5] + Y[Y=101:110:1] - regrid: 7 delta on Y - SUBSET : 7 by 3 points (X-Y) - 0.1 1.6 3.1 4.6 6.1 7.6 9.1 - 1 2 3 4 5 6 7 - 95 / 1: .... .... .... .... .... .... .... - 102 / 2: 102.100 103.600 105.100 106.600 108.100 109.600 111.100 - 109 / 3: 109.100 110.600 112.100 113.600 115.100 116.600 118.100 -show grid/dyn -Dynamic grids: - GRID (G006) use count: 1 - name axis # pts start end - (AX009) X 7 r 0.1 9.1 - (AX002) Y 3 r 95 109 - normal Z - normal T - -! ambiguous coordinate tests -list/order=x x[x=0.1:10:1.5] + x[x=1.1:11:1.5] - VARIABLE : X[X=0.1:10:1.5] + X[X=1.1:11:1.5] - SUBSET : 7 points (X) - 0.1 1.6 3.1 4.6 6.1 7.6 9.1 - 1 2 3 4 5 6 7 - 1.2000 4.2000 7.2000 10.2000 13.2000 16.2000 19.2000 -LET/QUIET a = x[x=0.1:10:1.5] + x[x=1.1:11:1.5] -list/order=x a - VARIABLE : X[X=0.1:10:1.5] + X[X=1.1:11:1.5] - SUBSET : 7 points (X) - 0.1 1.6 3.1 4.6 6.1 7.6 9.1 - 1 2 3 4 5 6 7 - 1.2000 4.2000 7.2000 10.2000 13.2000 16.2000 19.2000 -show grid/dyn -Dynamic grids: - GRID (G004) use count: 2 - name axis # pts start end - (AX002) X 7 r 0.1 9.1 - normal Y - normal Z - normal T - -! box size on dynamic axes -cancel region -define axis/from/x/name=xirreg x[x=1:100:10]^2 -define grid/x=xirreg girreg -let/quiet a = xbox[gx=xirreg] -list a ! "normal" irregular axis - VARIABLE : XBOX[GX=XIRREG] - SUBSET : 10 points (X) - 1 / 1: 120.00 - 121 / 2: 220.00 - 441 / 3: 420.00 - 961 / 4: 620.00 - 1681 / 5: 820.00 - 2601 / 6: 1020.00 - 3721 / 7: 1220.00 - 5041 / 8: 1420.00 - 6561 / 9: 1620.00 - 8281 / 10: 1720.00 -let/quiet b = a[i=1:10:2] -load b ! "child" irregular axis -show grid/x - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G004) - GRID (G004) - name axis # pts start end subset - (AX009) X 5 i 1 6561 5 pts - normal Y - normal Z - normal T - - I X XBOX XBOXLO - 1> 1 280 -59 - 2> 441 840 221 - 3> 1681 1640 1061 - 4> 3721 2440 2701 - 5> 6561 4000 5141 - -use gtsa056_1 -list/i=1:10 x[gx=temp] ! from named variable - VARIABLE : X - axis PSXT - FILENAME : gtsa056_1.cdf - SUBSET : 10 points (LONGITUDE) - 130.5E / 1: 130.500 - 131.5E / 2: 131.500 - 132.5E / 3: 132.500 - 133.5E / 4: 133.500 - 134.5E / 5: 134.500 - 135.5E / 6: 135.500 - 136.5E / 7: 136.500 - 137.5E / 8: 137.500 - 138.5E / 9: 138.500 - 139.5E / 10: 139.500 -list x[g=temp,x=150w:130w:2.5] ! dynamic based on named variable - VARIABLE : X - axis (AX012) - FILENAME : gtsa056_1.cdf - SUBSET : 9 points (LONGITUDE) - 150W / 1: 210.000 - 147.5W / 2: 212.500 - 145W / 3: 215.000 - 142.5W / 4: 217.500 - 140W / 5: 220.000 - 137.5W / 6: 222.500 - 135W / 7: 225.000 - 132.5W / 8: 227.500 - 130W / 9: 230.000 -list x[gx=temp,x=150w:130w:2.5] ! dynamic based on named variable - VARIABLE : X - axis (AX004) - FILENAME : gtsa056_1.cdf - SUBSET : 9 points (LONGITUDE) - 150W / 1: 210.000 - 147.5W / 2: 212.500 - 145W / 3: 215.000 - 142.5W / 4: 217.500 - 140W / 5: 220.000 - 137.5W / 6: 222.500 - 135W / 7: 225.000 - 132.5W / 8: 227.500 - 130W / 9: 230.000 - -list/i=101:105/j=46:50/l=1/k=1 temp+x ! grid inherited from expression - VARIABLE : TEMP+X - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 1.5N / 50: 255.043 255.835 256.725 257.731 258.922 - 1.17N / 49: 254.836 255.653 256.546 257.543 258.704 - 0.83N / 48: 254.657 255.499 256.389 257.358 258.477 - 0.5N / 47: 254.524 255.393 256.288 257.227 258.273 - 0.17N / 46: 254.456 255.346 256.243 257.163 258.142 -show grid/dyn -Dynamic grids: - GRID (G004) use count: 1 - name axis # pts start end - (AX009) X 5 i 1 6561 - normal Y - normal Z - normal T - -! this expression does NOT inherit the X axis -- the result is -! i) ambiguous X axis coordinates -! ii) 2 dynamic axes are created in the course of processing -list/j=46:50/l=1/k=1 temp[i=101:120:4]+x[i=101:120:4] ! NOT !!! - VARIABLE : TEMP[I=101:120:4]+X[I=101:120:4] - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 125.5W 121.5W 117.5W 113.5W - 1 2 3 4 5 - 1.5N / 50: 125.543 129.422 134.545 137.119 141.562 - 1.17N / 49: 125.336 129.204 134.163 136.896 141.270 - 0.83N / 48: 125.157 128.977 133.703 136.690 140.960 - 0.5N / 47: 125.024 128.773 133.295 136.512 140.644 - 0.17N / 46: 124.956 128.642 132.987 136.380 140.376 -show grid/dynamic -Dynamic grids: - GRID (G006) use count: 1 - name axis # pts start end - (AX002) LONGITUDE 5 r 129.5W 113.5W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -list/j=46:50/l=1/k=1 temp[i=101:120:4]+x[g=temp,i=101:120:4] - VARIABLE : TEMP[I=101:120:4]+X[G=TEMP,I=101:120:4] - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 125.5W 121.5W 117.5W 113.5W - 1 2 3 4 5 - 1.5N / 50: 255.043 258.922 264.045 266.619 271.062 - 1.17N / 49: 254.836 258.704 263.663 266.396 270.770 - 0.83N / 48: 254.657 258.477 263.203 266.190 270.460 - 0.5N / 47: 254.524 258.273 262.795 266.012 270.144 - 0.17N / 46: 254.456 258.142 262.487 265.880 269.876 - - -! * * * dynamic axis generation used to regrid variables * * * -SET REGION/I=101:105/J=46:50/l=1/k=1 - -! deliberate errors: **** -list x[i=5:1:1] ! not an error: inverted order - VARIABLE : X - axis (AX002) - SUBSET : 5 points (X) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -set mode ignore -list x[i=1:5:-1] ! error: negative delta -list x[i=1:5:0] ! error: delta=0 -list x[x=1:5:-1] ! error: negative delta -list x[x=1:5:0] ! error: delta=0 -list temp[i=200:210:2] ! was: "completely out of range" now: ok - subspan modulo 11/02 - VARIABLE : TEMPERATURE (deg. C) - regrid: on X - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 168.5E 170.5E 172.5E 174.5E 176.5E 178.5E - 1 2 3 4 5 6 - 1.5N / 50: 29.2186 29.1820 28.9284 28.6727 28.1158 27.7262 - 1.17N / 49: 29.2537 29.1794 28.9683 28.7060 28.2175 27.8045 - 0.83N / 48: 29.2747 29.1817 28.9842 28.7218 28.2984 27.8834 - 0.5N / 47: 29.3025 29.1943 28.9819 28.7306 28.3551 27.9545 - 0.17N / 46: 29.3441 29.2219 28.9889 28.7493 28.3962 28.0105 -list temp[i=-200:-190:2]! was: "completely out of range" now: ok - subspan modulo 11/0 - VARIABLE : TEMPERATURE (deg. C) - regrid: on X - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 108.5W 106.5W 104.5W 102.5W 100.5W 98.5W - 1 2 3 4 5 6 - 1.5N / 50: 25.4248 25.2404 25.0453 25.2349 25.4898 25.8063 - 1.17N / 49: 25.0178 24.8787 24.7362 24.9070 25.2015 25.5514 - 0.83N / 48: 24.6455 24.5412 24.4230 24.5627 24.8753 25.2469 - 0.5N / 47: 24.2823 24.1999 24.1010 24.2162 24.5241 24.8980 - 0.17N / 46: 23.9664 23.8958 23.8185 23.9163 24.1945 24.5649 -canc mode ignore -show grid/dyn -Dynamic grids: - GRID (G006) use count: 1 - name axis # pts start end - (AX002) LONGITUDE 6 i 108.5W(-468.5) 98.5W(-458.5) - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -! regular dynamic axis -! ... by subscript -list temp[i=100:110:2] - VARIABLE : TEMPERATURE (deg. C) - regrid: 2 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 130.5W 128.5W 126.5W 124.5W 122.5W 120.5W - 1 2 3 4 5 6 - 1.5N / 50: 24.8629 24.3351 24.2312 24.8158 25.6044 25.2192 - 1.17N / 49: 24.5966 24.1527 24.0427 24.5341 25.2208 24.8153 - 0.83N / 48: 24.3667 23.9991 23.8583 24.2480 24.7736 24.4029 - 0.5N / 47: 24.1928 23.8934 23.7273 23.9665 24.3603 24.0696 - 0.17N / 46: 24.0902 23.8461 23.6629 23.7442 24.0341 23.8270 -! ... by world coord -list temp[x=130w:120W:3] - VARIABLE : TEMPERATURE (deg. C) - regrid: 3 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 4 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 130W 127W 124W 121W - 1 2 3 4 - 1.5N / 50: 24.7030 24.2283 25.0596 25.3824 - 1.17N / 49: 24.4664 24.0441 24.7395 24.9891 - 0.83N / 48: 24.2617 23.8736 24.4085 24.5531 - 0.5N / 47: 24.1085 23.7576 24.0884 24.1823 - 0.17N / 46: 24.0229 23.7029 23.8301 23.9069 - -! irregular dynamic axis (Y axis of model grid) -! ... by subscript -list temp[j=45:55:3] - VARIABLE : TEMPERATURE (deg. C) - regrid: on Y - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 4 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 2.8N / 4: 25.5051 25.1016 24.8243 24.7591 24.9401 - 1.8N / 3: 24.7692 24.5204 24.3981 24.4013 24.6163 - 0.8N / 2: 24.1567 23.9991 23.8888 23.8583 23.9770 - 0.2S / 1: 23.9783 23.8819 23.7796 23.6864 23.6174 -! ... by world coord -list temp[y=0.5s:5n:1.5] - VARIABLE : TEMPERATURE (deg. C) - regrid: 1.5 deg on Y - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 4 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 4N / 4: 26.0703 25.7627 25.4253 25.1684 25.1772 - 2.5N / 3: 25.2743 24.9014 24.6921 24.6646 24.8801 - 1N / 2: 24.2464 24.0759 23.9672 23.9505 24.0906 - 0.5S / 1: 24.0685 23.9855 23.8878 23.7919 23.7022 -show grid/dyn -Dynamic grids: - GRID (G006) use count: 1 - name axis # pts start end - PSXT LONGITUDE 160mr 130.5E 70.5W - (AX002) LATITUDE 4 r 0.5S 4N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -! ======== -! 2/96: repeat the very same commands using GX=lo:hi:delta notation -! regular dynamic axis -! ... by subscript -list temp[gi=100:110:2] - VARIABLE : TEMPERATURE (deg. C) - regrid: 2 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 130.5W 128.5W 126.5W 124.5W 122.5W 120.5W - 1 2 3 4 5 6 - 1.5N / 50: 24.8629 24.3351 24.2312 24.8158 25.6044 25.2192 - 1.17N / 49: 24.5966 24.1527 24.0427 24.5341 25.2208 24.8153 - 0.83N / 48: 24.3667 23.9991 23.8583 24.2480 24.7736 24.4029 - 0.5N / 47: 24.1928 23.8934 23.7273 23.9665 24.3603 24.0696 - 0.17N / 46: 24.0902 23.8461 23.6629 23.7442 24.0341 23.8270 -! ... by world coord -list temp[gx=130w:120W:3] - VARIABLE : TEMPERATURE (deg. C) - regrid: 3 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 4 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 130W 127W 124W 121W - 1 2 3 4 - 1.5N / 50: 24.7030 24.2283 25.0596 25.3824 - 1.17N / 49: 24.4664 24.0441 24.7395 24.9891 - 0.83N / 48: 24.2617 23.8736 24.4085 24.5531 - 0.5N / 47: 24.1085 23.7576 24.0884 24.1823 - 0.17N / 46: 24.0229 23.7029 23.8301 23.9069 - -! irregular dynamic axis (Y axis of model grid) -! ... by subscript -list temp[gj=45:55:3] - VARIABLE : TEMPERATURE (deg. C) - regrid: on Y - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 4 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 2.8N / 4: 25.5051 25.1016 24.8243 24.7591 24.9401 - 1.8N / 3: 24.7692 24.5204 24.3981 24.4013 24.6163 - 0.8N / 2: 24.1567 23.9991 23.8888 23.8583 23.9770 - 0.2S / 1: 23.9783 23.8819 23.7796 23.6864 23.6174 -! ... by world coord -list temp[gy=0.5s:5n:1.5] - VARIABLE : TEMPERATURE (deg. C) - regrid: 1.5 deg on Y - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 4 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 4N / 4: 26.0703 25.7627 25.4253 25.1684 25.1772 - 2.5N / 3: 25.2743 24.9014 24.6921 24.6646 24.8801 - 1N / 2: 24.2464 24.0759 23.9672 23.9505 24.0906 - 0.5S / 1: 24.0685 23.9855 23.8878 23.7919 23.7022 - -! and a few more for pseudo-variables -list/nohead X[GX=130e:80w:40] - 130E / 1: 130.000 - 170E / 2: 170.000 - 150W / 3: 210.000 - 110W / 4: 250.000 -list/nohead Y[GY=10s:10n:8] - 6N / 3: 6.0000 - 2S / 2: -2.0000 - 10S / 1: -10.0000 -list/nohead Z[GZ=0:100:30] - 0 / 1: 0.0000 - 30 / 2: 30.0000 - 60 / 3: 60.0000 - 90 / 4: 90.0000 -list/nohead T[GT=0:100:30] - 0 / 1: 0.0000 - 30 / 2: 30.0000 - 60 / 3: 60.0000 - 90 / 4: 90.0000 -list/nohead i[gi=1:11:5] - 1 / 1: 1.00000 - 6 / 2: 2.00000 - 11 / 3: 3.00000 -list/nohead j[gj=1:11:5] - 1 / 1: 1.00000 - 6 / 2: 2.00000 - 11 / 3: 3.00000 -list/nohead k[gk=1:11:5] - 1 / 1: 1.00000 - 6 / 2: 2.00000 - 11 / 3: 3.00000 -list/nohead l[gl=1:11:5] - 1 / 1: 1.00000 - 6 / 2: 2.00000 - 11 / 3: 3.00000 - -! ======== - -! multiple axes, simultaneously -list temp[i=100:110:2,j=45:55:3] - VARIABLE : TEMPERATURE (deg. C) - regrid: 2 deg on X, on Y - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 4 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 130.5W 128.5W 126.5W 124.5W 122.5W 120.5W - 1 2 3 4 5 6 - 2.8N / 4: 25.8760 25.1016 24.7591 25.3616 25.9523 26.1052 - 1.8N / 3: 25.1492 24.5204 24.4013 25.0592 25.8372 25.5690 - 0.8N / 2: 24.3667 23.9991 23.8583 24.2480 24.7736 24.4029 - 0.2S / 1: 24.0844 23.8819 23.6864 23.6291 23.8094 23.6664 -list temp[i=100:110:2,y=0.5s:5n:1.5] - VARIABLE : TEMPERATURE (deg. C) - regrid: 2 deg on X, 1.5 deg on Y - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 4 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 130.5W 128.5W 126.5W 124.5W 122.5W 120.5W - 1 2 3 4 5 6 - 4N / 4: 26.3100 25.7627 25.1684 25.4169 26.0928 26.4324 - 2.5N / 3: 25.6892 24.9014 24.6646 25.3345 25.9631 26.0034 - 1N / 2: 24.4816 24.0759 23.9505 24.3911 24.9972 24.6091 - 0.5S / 1: 24.1489 23.9855 23.7919 23.6520 23.7144 23.6009 -list temp[x=130w:120W:3,j=45:55:3] - VARIABLE : TEMPERATURE (deg. C) - regrid: 3 deg on X, on Y - FILENAME : gtsa056_1.cdf - SUBSET : 4 by 4 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 130W 127W 124W 121W - 1 2 3 4 - 2.8N / 4: 25.6905 24.7917 25.5507 26.0875 - 1.8N / 3: 24.9592 24.3997 25.3139 25.6838 - 0.8N / 2: 24.2617 23.8736 24.4085 24.5531 - 0.2S / 1: 24.0313 23.7330 23.6749 23.7233 -list temp[x=130w:120W:3,y=0.5s:5n:1.5] - VARIABLE : TEMPERATURE (deg. C) - regrid: 3 deg on X, 1.5 deg on Y - FILENAME : gtsa056_1.cdf - SUBSET : 4 by 4 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 130W 127W 124W 121W - 1 2 3 4 - 4N / 4: 26.1901 25.2969 25.5832 26.3921 - 2.5N / 3: 25.4818 24.6784 25.5471 26.0151 - 1N / 2: 24.3640 23.9588 24.5740 24.7711 - 0.5S / 1: 24.1087 23.8399 23.6597 23.6433 -show grid/dyn -Dynamic grids: - GRID (G006) use count: 1 - name axis # pts start end - (AX012) LONGITUDE 4 r 130W 121W - (AX004) LATITUDE 4 r 0.5S 4N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -! the same tests but now on a nested definition -! regular dynamic axis -! ... by subscript -LET/QUIET a temp[i=90:110:2] -! changes on 11/29 in CONFINE_AXIS this no longer an error ... a bit mysterious -! changes on 4/98 in CONFINE_AXIS this is once again an error -! Changes 11/2018 in FLESH_OUT_AXIS, this is not an error -set mode ignore; list a; cancel mode ignore ! SET REGION mis-applied - VARIABLE : TEMP[I=90:110:2] - FILENAME : gtsa056_1.cdf - SUBSET : 11 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 140.5W 138.5W 136.5W 134.5W 132.5W 130.5W 128.5W 126.5W 124.5W 122.5W 120.5W - 1 2 3 4 5 6 7 8 9 10 11 - 1.5N / 50: 24.9330 24.4927 25.4749 25.9529 25.6235 24.8629 24.3351 24.2312 24.8158 25.6044 25.2192 - 1.17N / 49: 24.8195 24.3658 25.1683 25.8306 25.3698 24.5966 24.1527 24.0427 24.5341 25.2208 24.8153 - 0.83N / 48: 24.6946 24.2521 24.7974 25.6708 25.1391 24.3667 23.9991 23.8583 24.2480 24.7736 24.4029 - 0.5N / 47: 24.5726 24.1661 24.4685 25.4813 24.9214 24.1928 23.8934 23.7273 23.9665 24.3603 24.0696 - 0.17N / 46: 24.4684 24.1208 24.2760 25.1658 24.7013 24.0902 23.8461 23.6629 23.7442 24.0341 23.8270 -list a[i=1:6] - VARIABLE : TEMP[I=90:110:2] - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 140.5W 138.5W 136.5W 134.5W 132.5W 130.5W - 1 2 3 4 5 6 - 1.5N / 50: 24.9330 24.4927 25.4749 25.9529 25.6235 24.8629 - 1.17N / 49: 24.8195 24.3658 25.1683 25.8306 25.3698 24.5966 - 0.83N / 48: 24.6946 24.2521 24.7974 25.6708 25.1391 24.3667 - 0.5N / 47: 24.5726 24.1661 24.4685 25.4813 24.9214 24.1928 - 0.17N / 46: 24.4684 24.1208 24.2760 25.1658 24.7013 24.0902 -list a[i=1:6:2] - VARIABLE : TEMP[I=90:110:2] - regrid: 4 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 3 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 140.5W 136.5W 132.5W - 1 2 3 - 1.5N / 50: 24.9330 25.4749 25.6235 - 1.17N / 49: 24.8195 25.1683 25.3698 - 0.83N / 48: 24.6946 24.7974 25.1391 - 0.5N / 47: 24.5726 24.4685 24.9214 - 0.17N / 46: 24.4684 24.2760 24.7013 -list a[i=-2:8:2] ! clips to allowed limits - VARIABLE : TEMP[I=90:110:2] - regrid: 4 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 4 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 140.5W 136.5W 132.5W 128.5W - 1 2 3 4 - 1.5N / 50: 24.9330 25.4749 25.6235 24.3351 - 1.17N / 49: 24.8195 25.1683 25.3698 24.1527 - 0.83N / 48: 24.6946 24.7974 25.1391 23.9991 - 0.5N / 47: 24.5726 24.4685 24.9214 23.8934 - 0.17N / 46: 24.4684 24.2760 24.7013 23.8461 -list a[x=135w:125w] - VARIABLE : TEMP[I=90:110:2] - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 134.5W 132.5W 130.5W 128.5W 126.5W 124.5W - 4 5 6 7 8 9 - 1.5N / 50: 25.9529 25.6235 24.8629 24.3351 24.2312 24.8158 - 1.17N / 49: 25.8306 25.3698 24.5966 24.1527 24.0427 24.5341 - 0.83N / 48: 25.6708 25.1391 24.3667 23.9991 23.8583 24.2480 - 0.5N / 47: 25.4813 24.9214 24.1928 23.8934 23.7273 23.9665 - 0.17N / 46: 25.1658 24.7013 24.0902 23.8461 23.6629 23.7442 -list a[x=135w:125w:3] - VARIABLE : TEMP[I=90:110:2] - regrid: 3 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 4 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 135W 132W 129W 126W - 1 2 3 4 - 1.5N / 50: 25.8334 25.4333 24.4671 24.3773 - 1.17N / 49: 25.6650 25.1765 24.2637 24.1656 - 0.83N / 48: 25.4524 24.9460 24.0910 23.9557 - 0.5N / 47: 25.2281 24.7393 23.9683 23.7871 - 0.17N / 46: 24.9433 24.5486 23.9072 23.6832 -! ... by world coord -LET/QUIET a = temp[x=130w:120W:3] -! changes on 11/29 in CONFINE_AXIS this no longer an error ... a bit mysterious -! changes on 4/98 in CONFINE_AXIS this is once again an error -! Changes 5/2007 in GET_VAR_CONTEXT this is no longer an error (acm) ! -set mode ignore; list a; cancel mode ignore ! SET REGION mis-applied - VARIABLE : TEMP[X=130W:120W:3] - FILENAME : gtsa056_1.cdf - SUBSET : 4 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 130W 127W 124W 121W - 1 2 3 4 - 1.5N / 50: 24.7030 24.2283 25.0596 25.3824 - 1.17N / 49: 24.4664 24.0441 24.7395 24.9891 - 0.83N / 48: 24.2617 23.8736 24.4085 24.5531 - 0.5N / 47: 24.1085 23.7576 24.0884 24.1823 - 0.17N / 46: 24.0229 23.7029 23.8301 23.9069 -list a[i=1:4] - VARIABLE : TEMP[X=130W:120W:3] - FILENAME : gtsa056_1.cdf - SUBSET : 4 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 130W 127W 124W 121W - 1 2 3 4 - 1.5N / 50: 24.7030 24.2283 25.0596 25.3824 - 1.17N / 49: 24.4664 24.0441 24.7395 24.9891 - 0.83N / 48: 24.2617 23.8736 24.4085 24.5531 - 0.5N / 47: 24.1085 23.7576 24.0884 24.1823 - 0.17N / 46: 24.0229 23.7029 23.8301 23.9069 -list a[i=1:4:2] - VARIABLE : TEMP[X=130W:120W:3] - regrid: 6 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 2 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 130W 124W - 1 2 - 1.5N / 50: 24.7030 25.0596 - 1.17N / 49: 24.4664 24.7395 - 0.83N / 48: 24.2617 24.4085 - 0.5N / 47: 24.1085 24.0884 - 0.17N / 46: 24.0229 23.8301 -list a[i=-2:8:2] ! clips to allowed limits - VARIABLE : TEMP[X=130W:120W:3] - regrid: 6 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 2 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 130W 124W - 1 2 - 1.5N / 50: 24.7030 25.0596 - 1.17N / 49: 24.4664 24.7395 - 0.83N / 48: 24.2617 24.4085 - 0.5N / 47: 24.1085 24.0884 - 0.17N / 46: 24.0229 23.8301 -list a[x=129w:120w:2] - VARIABLE : TEMP[X=130W:120W:3] - regrid: 2 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129W 127W 125W 123W 121W - 1 2 3 4 5 - 1.5N / 50: 24.5447 24.2283 24.7825 25.1672 25.3824 - 1.17N / 49: 24.3256 24.0441 24.5077 24.8227 24.9891 - 0.83N / 48: 24.1323 23.8736 24.2302 24.4567 24.5531 - 0.5N / 47: 23.9915 23.7576 23.9781 24.1197 24.1823 - 0.17N / 46: 23.9163 23.7029 23.7877 23.8557 23.9069 -list a[x=138w:110w:5] - VARIABLE : TEMP[X=130W:120W:3] - regrid: 5 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 138W 133W 128W 123W 118W 113W - 1 2 3 4 5 6 - 1.5N / 50: .... .... 24.3865 25.1672 .... .... - 1.17N / 49: .... .... 24.1849 24.8227 .... .... - 0.83N / 48: .... .... 24.0029 24.4567 .... .... - 0.5N / 47: .... .... 23.8746 24.1197 .... .... - 0.17N / 46: .... .... 23.8096 23.8557 .... .... -show grid/dyn -Dynamic grids: - GRID (G006) use count: 1 - name axis # pts start end - (AX004) LONGITUDE 6 r 138W 113W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -! irregular dynamic axis -! ... by subscript -LET/QUIET a = temp[j=45:65:3] -! changes on 11/29 in CONFINE_AXIS this no longer an error ... a bit mysterious -! changes on 4/98 in CONFINE_AXIS this is once again an error -! Changes 11/2018 in FLESH_OUT_AXIS, this is not an error -set mode ignore; list a; cancel mode ignore ! SET REGION mis-applied - VARIABLE : TEMP[J=45:65:3] - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 7 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 5.8N / 7: 26.6294 26.5670 26.5361 26.5638 26.6554 - 4.8N / 6: 26.3655 26.1878 26.0268 25.9290 25.9885 - 3.8N / 5: 26.0047 25.6791 25.3175 25.0630 25.0886 - 2.8N / 4: 25.5051 25.1016 24.8243 24.7591 24.9401 - 1.8N / 3: 24.7692 24.5204 24.3981 24.4013 24.6163 - 0.8N / 2: 24.1567 23.9991 23.8888 23.8583 23.9770 - 0.2S / 1: 23.9783 23.8819 23.7796 23.6864 23.6174 -list a[j=1:6] - VARIABLE : TEMP[J=45:65:3] - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 6 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 4.8N / 6: 26.3655 26.1878 26.0268 25.9290 25.9885 - 3.8N / 5: 26.0047 25.6791 25.3175 25.0630 25.0886 - 2.8N / 4: 25.5051 25.1016 24.8243 24.7591 24.9401 - 1.8N / 3: 24.7692 24.5204 24.3981 24.4013 24.6163 - 0.8N / 2: 24.1567 23.9991 23.8888 23.8583 23.9770 - 0.2S / 1: 23.9783 23.8819 23.7796 23.6864 23.6174 -list a[j=1:6:2] - VARIABLE : TEMP[J=45:65:3] - regrid: on Y - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 3 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 3.8N / 3: 26.0047 25.6791 25.3175 25.0630 25.0886 - 1.8N / 2: 24.7692 24.5204 24.3981 24.4013 24.6163 - 0.2S / 1: 23.9783 23.8819 23.7796 23.6864 23.6174 -list a[j=-2:8:2] ! clips to allowed limits - VARIABLE : TEMP[J=45:65:3] - regrid: on Y - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 4 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 5.8N / 4: 26.6294 26.5670 26.5361 26.5638 26.6554 - 3.8N / 3: 26.0047 25.6791 25.3175 25.0630 25.0886 - 1.8N / 2: 24.7692 24.5204 24.3981 24.4013 24.6163 - 0.2S / 1: 23.9783 23.8819 23.7796 23.6864 23.6174 -list a[y=1S:8N:2] - VARIABLE : TEMP[J=45:65:3] - regrid: 2 deg on Y - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 7N / 5: .... .... .... .... .... - 5N / 4: 26.4095 26.2510 26.1116 26.0348 26.0997 - 3N / 3: 25.5883 25.1978 24.9065 24.8097 24.9649 - 1N / 2: 24.2587 24.0860 23.9737 23.9488 24.0835 - 1S / 1: .... .... .... .... .... -! ... by world coord -LET/QUIET a = temp[y=3.5s:5n:1.5] -list a[j=1:6:2] - VARIABLE : TEMP[Y=3.5S:5N:1.5] - regrid: 3 deg on Y - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 3 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 2.5N / 3: 25.2743 24.9014 24.6921 24.6646 24.8801 - 0.5S / 2: 24.0685 23.9855 23.8878 23.7919 23.7022 - 3.5S / 1: 25.1885 25.1493 25.0939 25.0408 25.0261 -list a[j=-2:8:2] - VARIABLE : TEMP[Y=3.5S:5N:1.5] - regrid: 3 deg on Y - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 3 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 2.5N / 3: 25.2743 24.9014 24.6921 24.6646 24.8801 - 0.5S / 2: 24.0685 23.9855 23.8878 23.7919 23.7022 - 3.5S / 1: 25.1885 25.1493 25.0939 25.0408 25.0261 -list a[y=1S:8N:2] - VARIABLE : TEMP[Y=3.5S:5N:1.5] - regrid: 2 deg on Y - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - 7N / 5: .... .... .... .... .... - 5N / 4: .... .... .... .... .... - 3N / 3: 25.5396 25.1885 24.9365 24.8326 24.9791 - 1N / 2: 24.2464 24.0759 23.9672 23.9505 24.0906 - 1S / 1: 24.2763 24.2177 24.1436 24.0651 23.9786 - -! modulo (regular) dynamic axis -set axis/modulo psxt -! ... by subscript -list temp[i=155:170:2] - VARIABLE : TEMPERATURE (deg. C) - regrid: 2 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 8 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 75.5W 73.5W 71.5W 69.5W 67.5W 65.5W 63.5W 61.5W - 1 2 3 4 5 6 7 8 - 1.5N / 50: .... .... .... .... 29.5035 29.3966 29.4136 29.5107 - 1.17N / 49: .... .... .... .... 29.5373 29.4191 29.4462 29.5279 - 0.83N / 48: .... .... .... .... 29.6002 29.4689 29.4873 29.5544 - 0.5N / 47: .... .... .... .... 29.6787 29.5330 29.5361 29.5888 - 0.17N / 46: .... .... .... .... 29.7929 29.5966 29.5858 29.6187 -! ... by world coord -list temp[x=90w:60W:4] - VARIABLE : TEMPERATURE (deg. C) - regrid: 4 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 8 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 90W 86W 82W 78W 74W 70W 66W 62W - 1 2 3 4 5 6 7 8 - 1.5N / 50: 27.2194 27.5576 27.9470 .... .... .... 29.3528 29.4885 - 1.17N / 49: 27.1122 27.4131 27.8883 .... .... .... 29.3882 29.5084 - 0.83N / 48: 26.9645 27.2528 27.7639 .... .... .... 29.4644 29.5380 - 0.5N / 47: 26.7776 27.0851 27.5584 .... .... .... 29.5482 29.5745 - 0.17N / 46: 26.5410 26.8980 27.2770 .... .... .... 29.6283 29.6082 -show grid/dyn -Dynamic grids: - GRID (G006) use count: 1 - name axis # pts start end - (AX012) LONGITUDE 8 r 90W 62W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -! nested modulo (the dynamic axis is **NOT** modulo) -! ... by subscript -LET/QUIET a temp[i=155:170:2] -! changes on 11/29 in CONFINE_AXIS this no longer an error ... a bit mysterious -! changes on 4/98 in CONFINE_AXIS this is once again an error -! Changes 11/2018 in FLESH_OUT_AXIS, this is not an error -set mode ignore; list a; cancel mode ignore ! SET REGION mis-applied - VARIABLE : TEMP[I=155:170:2] - FILENAME : gtsa056_1.cdf - SUBSET : 8 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 75.5W 73.5W 71.5W 69.5W 67.5W 65.5W 63.5W 61.5W - 1 2 3 4 5 6 7 8 - 1.5N / 50: .... .... .... .... 29.5035 29.3966 29.4136 29.5107 - 1.17N / 49: .... .... .... .... 29.5373 29.4191 29.4462 29.5279 - 0.83N / 48: .... .... .... .... 29.6002 29.4689 29.4873 29.5544 - 0.5N / 47: .... .... .... .... 29.6787 29.5330 29.5361 29.5888 - 0.17N / 46: .... .... .... .... 29.7929 29.5966 29.5858 29.6187 -list a[i=1:6] - VARIABLE : TEMP[I=155:170:2] - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 75.5W 73.5W 71.5W 69.5W 67.5W 65.5W - 1 2 3 4 5 6 - 1.5N / 50: .... .... .... .... 29.5035 29.3966 - 1.17N / 49: .... .... .... .... 29.5373 29.4191 - 0.83N / 48: .... .... .... .... 29.6002 29.4689 - 0.5N / 47: .... .... .... .... 29.6787 29.5330 - 0.17N / 46: .... .... .... .... 29.7929 29.5966 -list a[i=1:6:2] - VARIABLE : TEMP[I=155:170:2] - regrid: 4 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 3 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 75.5W 71.5W 67.5W - 1 2 3 - 1.5N / 50: .... .... 29.5035 - 1.17N / 49: .... .... 29.5373 - 0.83N / 48: .... .... 29.6002 - 0.5N / 47: .... .... 29.6787 - 0.17N / 46: .... .... 29.7929 -list a[i=-2:8:2] ! clips to allowed limits - VARIABLE : TEMP[I=155:170:2] - regrid: 4 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 4 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 75.5W 71.5W 67.5W 63.5W - 1 2 3 4 - 1.5N / 50: .... .... 29.5035 29.4136 - 1.17N / 49: .... .... 29.5373 29.4462 - 0.83N / 48: .... .... 29.6002 29.4873 - 0.5N / 47: .... .... 29.6787 29.5361 - 0.17N / 46: .... .... 29.7929 29.5858 -list a[x=75w:65w] ! limits ignored --> behavior could be improved - VARIABLE : TEMP[I=155:170:2] - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 75.5W 73.5W 71.5W 69.5W 67.5W 65.5W - 1 2 3 4 5 6 - 1.5N / 50: .... .... .... .... 29.5035 29.3966 - 1.17N / 49: .... .... .... .... 29.5373 29.4191 - 0.83N / 48: .... .... .... .... 29.6002 29.4689 - 0.5N / 47: .... .... .... .... 29.6787 29.5330 - 0.17N / 46: .... .... .... .... 29.7929 29.5966 -list a[x=85w:45w:5] - VARIABLE : TEMP[I=155:170:2] - regrid: 5 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 9 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 85W 80W 75W 70W 65W 60W 55W 50W 45W - 1 2 3 4 5 6 7 8 9 - 1.5N / 50: .... .... .... .... 29.4009 .... .... .... .... - 1.17N / 49: .... .... .... .... 29.4259 .... .... .... .... - 0.83N / 48: .... .... .... .... 29.4735 .... .... .... .... - 0.5N / 47: .... .... .... .... 29.5338 .... .... .... .... - 0.17N / 46: .... .... .... .... 29.5939 .... .... .... .... -! ... by world coord -LET/QUIET a = temp[x=90w:60W:4] -! changes on 11/29 in CONFINE_AXIS this no longer an error ... a bit mysterious -! changes on 4/98 in CONFINE_AXIS this is once again an error -! Changes 5/2007 in GET_VAR_CONTEXT this is no longer an error (acm) ! -set mode ignore; list a; cancel mode ignore ! SET REGION mis-applied - VARIABLE : TEMP[X=90W:60W:4] - FILENAME : gtsa056_1.cdf - SUBSET : 8 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 90W 86W 82W 78W 74W 70W 66W 62W - 1 2 3 4 5 6 7 8 - 1.5N / 50: 27.2194 27.5576 27.9470 .... .... .... 29.3528 29.4885 - 1.17N / 49: 27.1122 27.4131 27.8883 .... .... .... 29.3882 29.5084 - 0.83N / 48: 26.9645 27.2528 27.7639 .... .... .... 29.4644 29.5380 - 0.5N / 47: 26.7776 27.0851 27.5584 .... .... .... 29.5482 29.5745 - 0.17N / 46: 26.5410 26.8980 27.2770 .... .... .... 29.6283 29.6082 -list a[i=1:6] - VARIABLE : TEMP[X=90W:60W:4] - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 90W 86W 82W 78W 74W 70W - 1 2 3 4 5 6 - 1.5N / 50: 27.2194 27.5576 27.9470 .... .... .... - 1.17N / 49: 27.1122 27.4131 27.8883 .... .... .... - 0.83N / 48: 26.9645 27.2528 27.7639 .... .... .... - 0.5N / 47: 26.7776 27.0851 27.5584 .... .... .... - 0.17N / 46: 26.5410 26.8980 27.2770 .... .... .... -list a[i=1:6:2] - VARIABLE : TEMP[X=90W:60W:4] - regrid: 8 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 3 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 90W 82W 74W - 1 2 3 - 1.5N / 50: 27.2194 27.9470 .... - 1.17N / 49: 27.1122 27.8883 .... - 0.83N / 48: 26.9645 27.7639 .... - 0.5N / 47: 26.7776 27.5584 .... - 0.17N / 46: 26.5410 27.2770 .... -list a[i=-2:8:2] - VARIABLE : TEMP[X=90W:60W:4] - regrid: 8 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 4 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 90W 82W 74W 66W - 1 2 3 4 - 1.5N / 50: 27.2194 27.9470 .... 29.3528 - 1.17N / 49: 27.1122 27.8883 .... 29.3882 - 0.83N / 48: 26.9645 27.7639 .... 29.4644 - 0.5N / 47: 26.7776 27.5584 .... 29.5482 - 0.17N / 46: 26.5410 27.2770 .... 29.6283 -list a[x=129w:120w:2] ! no overlap - VARIABLE : TEMP[X=90W:60W:4] - regrid: 2 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 129W127W125W123W121W - 1 2 3 4 5 - 1.5N / 50:.................... - 1.17N / 49:.................... - 0.83N / 48:.................... - 0.5N / 47:.................... - 0.17N / 46:.................... -list a[x=92w:75w:3] - VARIABLE : TEMP[X=90W:60W:4] - regrid: 3 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 92W 89W 86W 83W 80W 77W - 1 2 3 4 5 6 - 1.5N / 50: .... 27.3039 27.5576 27.8497 .... .... - 1.17N / 49: .... 27.1874 27.4131 27.7695 .... .... - 0.83N / 48: .... 27.0366 27.2528 27.6362 .... .... - 0.5N / 47: .... 26.8545 27.0851 27.4401 .... .... - 0.17N / 46: .... 26.6303 26.8980 27.1822 .... .... -list a[x=101w:50w:6] - VARIABLE : TEMP[X=90W:60W:4] - regrid: 6 deg on X - FILENAME : gtsa056_1.cdf - SUBSET : 9 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 15-JAN-1982 14:00 - 101W 95W 89W 83W 77W 71W 65W 59W 53W - 1 2 3 4 5 6 7 8 9 - 1.5N / 50: .... .... 27.3039 27.8497 .... .... 29.3867 .... .... - 1.17N / 49: .... .... 27.1874 27.7695 .... .... 29.4183 .... .... - 0.83N / 48: .... .... 27.0366 27.6362 .... .... 29.4828 .... .... - 0.5N / 47: .... .... 26.8545 27.4401 .... .... 29.5548 .... .... - 0.17N / 46: .... .... 26.6303 27.1822 .... .... 29.6233 .... .... -cancel axis/modulo psxt -show grid/dyn -Dynamic grids: - GRID (G006) use count: 1 - name axis # pts start end - (AX009) LONGITUDE 9 r 101W 53W - PSYT LATITUDE 100 i 28.836S 48.568N - PSZT DEPTH (m) 27 i- 5 3824 - TIME2 TIME 5mr 15-JAN-1982 14:00 27-JAN-1982 18:00 - -! calendar axes -list/k=1/y=0/x=180 temp[t=15-JAN-1982:11-FEB-1982:`24*6`@ave] ! 6-day ave - !-> list/k=1/y=0/x=180 temp[t=15-JAN-1982:11-FEB-1982:144@ave] - VARIABLE : TEMPERATURE (deg. C) - regrid: 144 hour on T@AVE - FILENAME : gtsa056_1.cdf - SUBSET : 5 points (TIME) - LONGITUDE: 180E (interpolated) - LATITUDE : 0 (interpolated) - DEPTH (m): 5 - 15-JAN-1982 00 / 1: 27.7767 - 21-JAN-1982 00 / 2: 27.7818 - 27-JAN-1982 00 / 3: 27.6992 - 02-FEB-1982 00 / 4: 27.8253 - 08-FEB-1982 00 / 5: 27.7319 -! ... note that the "explicit limits" changes to Ferret V4.20 mean that -! ... an explicit L=1 qualifying the command **WILL** apply -list/k=1/y=0/x=180/l=1 temp[t=15-JAN-1982:11-FEB-1982:`24*6`@ave] - !-> list/k=1/y=0/x=180/l=1 temp[t=15-JAN-1982:11-FEB-1982:144@ave] - VARIABLE : TEMPERATURE (deg. C) - regrid: 144 hour on T@AVE - FILENAME : gtsa056_1.cdf - LONGITUDE: 180E (interpolated) - LATITUDE : 0 (interpolated) - DEPTH (m): 5 - TIME : 15-JAN-1982 00:00 - 27.7767 -list/l=1:3 T[t=15-JAN-1982:11-FEB-1982:`24*2`] ! pseudo-var - !-> list/l=1:3 T[t=15-JAN-1982:11-FEB-1982:48] - VARIABLE : T - axis (AX002) - SUBSET : 3 points (TIME) - 15-JAN-1982 00 / 1: 723925. - 17-JAN-1982 00 / 2: 723927. - 19-JAN-1982 00 / 3: 723929. - -cancel var/all -show grid/dyn -Dynamic grids: - no implicit grids -Dynamic axes: - no implicit axes -set axis/modulo psxt - -set mode/last diag - -GO bn_reset bn_cdf -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cdf -GO bn_cdf -! bn320_cdf -! benchmark to test netCDF input and output -! requires version 3.20 or later -! updated from version 2.3 1/26/95 -! added reverse-axis tests 3/2/95 -! V5 *sh* 7/99 -- added /clobber - -! test many simultaneous netCDF files -GO bn_cdf.sub1 -! bn230_cdf.sub1 -! benchmark to test multiple netCDF simultaneous accesses -! requires version 2.30 or later -! 6/92 - -! V5 *sh* 7/99 -- clean up files before writing - -cancel region -canc var/all -cancel data/all - -! delete old ones -sp rm -f test0[a-p].cdf - -! write a bunch of em -list/format=cdf/append/l=1:500/file=test0a.cdf l -list/format=cdf/append/l=1:500/file=test0b.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0c.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0d.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0e.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0f.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0g.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0h.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0i.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0j.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0k.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0l.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0m.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0n.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0o.cdf/rigid l -list/format=cdf/append/l=1:500/file=test0p.cdf/rigid l - -! initialize all at once -set data/format=cdf test0a, test0b, test0c, test0d, test0e, test0f, test0g, test0h, test0i, test0j, test0k, test0l, test0n, test0m, test0o, test0p -show data 1 - currently SET data sets: - 1> ./test0a.cdf - name title I J K L - L_ L ... ... ... 1:500 - (axis ABSTRACT) - -show data/br - currently SET data sets: - 1> ./test0a.cdf - 2> ./test0b.cdf - 3> ./test0c.cdf - 4> ./test0d.cdf - 5> ./test0e.cdf - 6> ./test0f.cdf - 7> ./test0g.cdf - 8> ./test0h.cdf - 9> ./test0i.cdf - 10> ./test0j.cdf - 11> ./test0k.cdf - 12> ./test0l.cdf - 13> ./test0n.cdf - 14> ./test0m.cdf - 15> ./test0o.cdf - 16> ./test0p.cdf (default) - -! test access to one -stat l_[d=1] - - L - axis ABSTRACT - X: N/A - Y: N/A - Z: N/A - T: 0.5 to 500.5 - E: N/A - F: N/A - DATA SET: ./test0a.cdf - - Total # of data points: 500 (1*1*1*500*1*1) - # flagged as bad data: 0 - Minimum value: 1 - Maximum value: 500 - Mean value: 250.5 (unweighted average) - Standard deviation: 144.48 - -! test access to all -stat l_[d=1]-l_[d=2]+l_[d=3]-l_[d=4]+l_[d=5]-l_[d=6]+l_[d=7]-l_[d=8]+l_[d=9]-l_[d=10]+l_[d=11]-l_[d=12]+l_[d=13]-l_[d=14]+l_[d=15]-l_[d=16] - - L_[D=test0a]-L_[D=test0b]+L_[D=test0c]-L_[D=test0d]+L_[D=test0e]-L_[D=test0f]+L_[D=test0g]-L_[D=test0h]+L_[D=test0i]-L_[D=test0j]+L_[D=test0k]-L_[D=test0l]+L_[D=test0n]-L_[D=test0m - X: N/A - Y: N/A - Z: N/A - T: 0.5 to 500.5 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 500 (1*1*1*500*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - -cancel data/all - - -! test abstract variable io -GO bn_cdf.sub2 -! bn230_cdf.sub2 -! benchmark to test abstract variable netCDF input and output -! requires version 2.30 or later -! 6/92 - -! V5 *sh* 7/99 added /CLOBBER - -cancel region -canc var/all -cancel data/all - -! define a realistic time series grid -define axis/t="1-jan-1902":"1-jan-2010":1/unit=day tcentury -define grid/like=abstract/t=tcentury gcentury -let tlong = t[g=gcentury] - -let i1 = i -let j1 = j -let k1 = k -let l1 = l[g=gcentury] -let l2 = l -let ij = i+j -let ik = i+k -let il = i+l1 -let jk = j+k -let jl = j+l1 -let kl = k+l1 -let ijk = i+j+k -let ikl = i+k+l1 -let ijl = i+j+l1 -let jkl = j+k+l1 -let ijkl = i+j+k+l1 -let ijk2 = i+j+k -let ikl2 = i+k+l1 -let ijl2 = i+j+l1 -let jkl2 = j+k+l1 -let iavejkl = ijkl[i=@ave] -let ijavekl = ijkl[j=@ave] -let ijkavel = ijkl[k=@ave] -let ijklave = ijkl[l=@ave] - -! a bunch of basic geometries -! 1d -list/format=cdf/i=1:10/clobber/file=test_abs.cdf i1 ! not /APPEND - must be new -list/format=cdf/j=1:20/append/file=test_abs.cdf j1 -list/format=cdf/k=1:100/append/file=test_abs.cdf k1 -list/format=cdf/l=1:10/append/file=test_abs.cdf l1 ! record axis -list/format=cdf/l=1:10/append/file=test_abs.cdf l2 ! rigid axis - -! 2D -list/format=cdf/i=1:10/j=1:20/append/file=test_abs.cdf ij -list/format=cdf/i=1:10/k=1:100/append/file=test_abs.cdf ik -list/format=cdf/i=1:10/l=5:10/append/file=test_abs.cdf il -list/format=cdf/k=1:100/j=1:20/append/file=test_abs.cdf jk - -!3D -set region/i=1:10/j=1:20/k=1:100/l=4:8 -list/format=cdf/append/file=test_abs.cdf ijk -list/format=cdf/append/file=test_abs.cdf ikl -list/format=cdf/append/file=test_abs.cdf ijl -list/format=cdf/append/file=test_abs.cdf jkl - -!4D -list/format=cdf/append/file=test_abs.cdf ijkl - -! extend along time axis and write sub-regions -! (note: this may leave undefined regions in other variables) -list/format=cdf/append/file=test_abs.cdf/i=1:5 /j=1:5 /l=11:12 ijl -list/format=cdf/append/file=test_abs.cdf/i=6:10/j=1:5 /l=11:12 ijl -list/format=cdf/append/file=test_abs.cdf/i=1:5 /j=6:10/l=11:12 ijl -list/format=cdf/append/file=test_abs.cdf/i=6:10/j=6:10/l=11:12 ijl - -! rewrite a sub-region in the middle of the data -list/format=cdf/append/file=test_abs.cdf/i=6:8/j=6:8/l=8:10/k=3:5 ijkl - -! check documentation of transforms -list/format=cdf/append/file=test_abs.cdf ijk2[i=@ave] -list/format=cdf/append/file=test_abs.cdf ikl2[i=@ave,k=@sbx:3] -list/format=cdf/append/file=test_abs.cdf ijl2[i=@ave,j=@ave] -list/format=cdf/append/file=test_abs.cdf jkl2[k=@ave,l=@ave] -list/format=cdf/append/file=test_abs.cdf iavejkl -list/format=cdf/append/file=test_abs.cdf ijavekl -list/format=cdf/append/file=test_abs.cdf ijkavel -list/format=cdf/append/file=test_abs.cdf ijklave - -! look at what we've created - time axis should be regular -set data/format=cdf test_abs -show data/full - currently SET data sets: - 1> ./test_abs.cdf (default) - - name title I J K L - I1 I 1:10 ... ... ... - on grid GEU1 with -1.E+34 for missing data - X=0.5:10.5 - J1 J ... 1:20 ... ... - on grid GEU2 with -1.E+34 for missing data - Y=0.5:20.5 - K1 K ... ... 1:100 ... - on grid GEU3 with -1.E+34 for missing data - Z=0.5:100.5 - L1 L[G=GCENTURY] ... ... ... 1:12 - on grid GEU4 with -1.E+34 for missing data - - L2 L ... ... ... 1:10 - on grid GEU5 with -1.E+34 for missing data - - IJ I+J 1:10 1:20 ... ... - on grid GEU6 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 - IK I+K 1:10 ... 1:100 ... - on grid GEU7 with -1.E+34 for missing data - X=0.5:10.5 Z=0.5:100.5 - IL I+L1 1:10 ... ... 1:12 - on grid GEU8 with -1.E+34 for missing data - X=0.5:10.5 - JK J+K ... 1:20 1:100 ... - on grid GEU9 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IJK I+J+K 1:10 1:20 1:100 ... - on grid GEU10 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 Z=0.5:100.5 - IKL I+K+L1 1:10 ... 1:100 1:12 - on grid GEU11 with -1.E+34 for missing data - X=0.5:10.5 Z=0.5:100.5 - IJL I+J+L1 1:10 1:20 ... 1:12 - on grid GEU12 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 - JKL J+K+L1 ... 1:20 1:100 1:12 - on grid GEU13 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IJKL I+J+K+L1 1:10 1:20 1:100 1:12 - on grid GEU14 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 Z=0.5:100.5 - IJK2 I+J+K ... 1:20 1:100 ... - (X=0.5:10.5@AVE) - on grid GEU9 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IKL2 I+K+L1 ... ... 1:100 1:12 - (X=0.5:10.5@AVE, box smoothed by 3 pts on Z) - on grid GEU15 with -1.E+34 for missing data - Z=0.5:100.5 - IJL2 I+J+L1 ... ... ... 1:12 - (X=0.5:10.5@AV4, Y=0.5:20.5@AV4) - on grid GEU4 with -1.E+34 for missing data - - JKL2 J+K+L1 ... 1:20 ... ... - (Z=0.5:100.5@AV4, T=03-JAN-1902 12:00:08-JAN-1902 12:00@AV4) - on grid GEU2 with -1.E+34 for missing data - Y=0.5:20.5 - IAVEJKL IJKL[I=@AVE] ... 1:20 1:100 1:12 - (X=0.5:10.5) - on grid GEU13 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IJAVEKL IJKL[J=@AVE] 1:10 ... 1:100 1:12 - (Y=0.5:20.5) - on grid GEU11 with -1.E+34 for missing data - X=0.5:10.5 Z=0.5:100.5 - IJKAVEL IJKL[K=@AVE] 1:10 1:20 ... 1:12 - (Z=0.5:100.5) - on grid GEU12 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 - IJKLAVE IJKL[L=@AVE] 1:10 1:20 1:100 ... - (T=03-JAN-1902 12:00:08-JAN-1902 12:00) - on grid GEU10 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 Z=0.5:100.5 - - time range: 01-JAN-1902 00:00 to 12-JAN-1902 00:00 - -cancel variable ijkl -show grid ijkl - GRID GEU14 - name axis # pts start end subset - XAX1_10 X 10 r 1 10 full - YAX1_20 Y 20 r 1 20 full - ZAX1_100 Z 100 r 1 100 full - TCENTURY1 TIME 12 r 01-JAN-1902 00:00 12-JAN-1902 00:00 full -cancel data test_abs - -! make the time axis irregular by leaving out l=13 -list/format=cdf/l=14:16/append/file=test_abs.cdf l1 -set data/format=cdf test_abs -show data/full - currently SET data sets: - 1> ./test_abs.cdf (default) - - name title I J K L - I1 I 1:10 ... ... ... - on grid GEU1 with -1.E+34 for missing data - X=0.5:10.5 - J1 J ... 1:20 ... ... - on grid GEU2 with -1.E+34 for missing data - Y=0.5:20.5 - K1 K ... ... 1:100 ... - on grid GEU3 with -1.E+34 for missing data - Z=0.5:100.5 - L1 L[G=GCENTURY] ... ... ... 1:15 - on grid GEU4 with -1.E+34 for missing data - - L2 L ... ... ... 1:10 - on grid GEU5 with -1.E+34 for missing data - - IJ I+J 1:10 1:20 ... ... - on grid GEU6 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 - IK I+K 1:10 ... 1:100 ... - on grid GEU7 with -1.E+34 for missing data - X=0.5:10.5 Z=0.5:100.5 - IL I+L1 1:10 ... ... 1:15 - on grid GEU8 with -1.E+34 for missing data - X=0.5:10.5 - JK J+K ... 1:20 1:100 ... - on grid GEU9 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IJK I+J+K 1:10 1:20 1:100 ... - on grid GEU10 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 Z=0.5:100.5 - IKL I+K+L1 1:10 ... 1:100 1:15 - on grid GEU11 with -1.E+34 for missing data - X=0.5:10.5 Z=0.5:100.5 - IJL I+J+L1 1:10 1:20 ... 1:15 - on grid GEU12 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 - JKL J+K+L1 ... 1:20 1:100 1:15 - on grid GEU13 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IJKL I+J+K+L1 1:10 1:20 1:100 1:15 - on grid GEU14 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 Z=0.5:100.5 - IJK2 I+J+K ... 1:20 1:100 ... - (X=0.5:10.5@AVE) - on grid GEU9 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IKL2 I+K+L1 ... ... 1:100 1:15 - (X=0.5:10.5@AVE, box smoothed by 3 pts on Z) - on grid GEU15 with -1.E+34 for missing data - Z=0.5:100.5 - IJL2 I+J+L1 ... ... ... 1:15 - (X=0.5:10.5@AV4, Y=0.5:20.5@AV4) - on grid GEU4 with -1.E+34 for missing data - - JKL2 J+K+L1 ... 1:20 ... ... - (Z=0.5:100.5@AV4, T=03-JAN-1902 12:00:08-JAN-1902 12:00@AV4) - on grid GEU2 with -1.E+34 for missing data - Y=0.5:20.5 - IAVEJKL IJKL[I=@AVE] ... 1:20 1:100 1:15 - (X=0.5:10.5) - on grid GEU13 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IJAVEKL IJKL[J=@AVE] 1:10 ... 1:100 1:15 - (Y=0.5:20.5) - on grid GEU11 with -1.E+34 for missing data - X=0.5:10.5 Z=0.5:100.5 - IJKAVEL IJKL[K=@AVE] 1:10 1:20 ... 1:15 - (Z=0.5:100.5) - on grid GEU12 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 - IJKLAVE IJKL[L=@AVE] 1:10 1:20 1:100 ... - (T=03-JAN-1902 12:00:08-JAN-1902 12:00) - on grid GEU10 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 Z=0.5:100.5 - - time range: 01-JAN-1902 00:00 to 16-JAN-1902 00:00 - -show grid ijkl - GRID GEU14 - name axis # pts start end subset - XAX1_10 X 10 r 1 10 full - YAX1_20 Y 20 r 1 20 full - ZAX1_100 Z 100 r 1 100 full - TCENTURY1 TIME 15 i 01-JAN-1902 00:00 16-JAN-1902 00:00 full - - -! list long time series using a rigid (non-record axis) time axis --> FAST -list/clobber/format=cdf/l=1:300000/rigid/file=test2.cdf l ! without record dimension -! list time series using the record dimension --> SLOW (1/50th as long axis) -list/clobber/format=cdf/l=1:5000 l ! auto-filename -list/clobber/format=cdf/t="1-jan-1902":"1-jan-2010"/rigid tlong ! auto-filename - - -cancel data/all -! deliberate errors -set mode ignore -list/format=cdf/l=1:10/file=test_abs.cdf l ! file exists error -list/format=cdf/i=5:15/l=5:10/append/file=test_abs.cdf il ! inconsistent i limits -list/format=cdf/i=1:10/j=20:25/append/file=test_abs.cdf ij ! inconsistent j limits -list/format=cdf/append/file=test_abs.cdf ijl2 ! i and j not avg'd -list/format=cdf/append/file=test_abs.cdf ijkl[k=@ave] ! k axis averaged -list/format=cdf/l=13/append/file=test_abs.cdf l1 ! inconsistent time pt -set data/format=cdf test0a, test0b, test0c, test0d, test0e, test0f, test0g, test0h, test0i, test0j, test0k, test0l, test0n, test0m, test0o, test0p -list/clobber/format=cdf/i=1:10 i ! too many netcdf files -canc data/all -cancel mode ignore - -! show the grids created -cancel variables/all -set data/format=cdf test_abs -show grid j1 jkl jkl2 iavejkl ijkl - GRID GEU2 - name axis # pts start end subset - normal X - YAX1_20 Y 20 r 1 20 full - normal Z - normal T - GRID GEU13 - name axis # pts start end subset - normal X - YAX1_20 Y 20 r 1 20 full - ZAX1_100 Z 100 r 1 100 full - TCENTURY1 TIME 15 i 01-JAN-1902 00:00 16-JAN-1902 00:00 full - GRID GEU2 - name axis # pts start end subset - normal X - YAX1_20 Y 20 r 1 20 full - normal Z - normal T - GRID GEU13 - name axis # pts start end subset - normal X - YAX1_20 Y 20 r 1 20 full - ZAX1_100 Z 100 r 1 100 full - TCENTURY1 TIME 15 i 01-JAN-1902 00:00 16-JAN-1902 00:00 full - GRID GEU14 - name axis # pts start end subset - XAX1_10 X 10 r 1 10 full - YAX1_20 Y 20 r 1 20 full - ZAX1_100 Z 100 r 1 100 full - TCENTURY1 TIME 15 i 01-JAN-1902 00:00 16-JAN-1902 00:00 full -cancel data test_abs - -! test TMAP data io -GO bn_cdf.sub3 ! matches old outputs by using /HEADING=enhanced -! bn320_cdf.sub3 -! benchmark to test netCDF input and output of TMAP data set variables -! this routine added 1/26/95 to test the SAVE/HEADING=enhanced option - -! V5 *sh* 7/99 added /CLOBBER - -cancel data/all -cancel variables/all -cancel region - -use gtbc011 - -let i1 = x[g=temp,i=1:10] -let j1 = y[g=temp,j=5:10] -let k1 = z[g=u,k=5:15] -let l1 = l[g=u,l=1:3] -let l2 = l -let ij = taux[l=@ave] -let ik = i1+k1 -let il = i1+l1 -let jk = j1+k1 -let jl = j1+l1 -let kl = k1+l1 -let ijk = temp[l=@ave] -let ikl = temp[j=@ave] -let ijl = temp[k=@ave] -let jkl = temp[i=@ave] -let ijkl = u -let ijk2 = temp -let iavejkl = ijkl[i=@ave] -let ijavekl = ijkl[j=@ave] -let ijkavel = ijkl[k=@ave] -let ijklave = ijkl[l=@ave] - -set region/l=1:2 ! i,j, and k unspecified - -! a bunch of basic geometries -! 1d -list/format=cdf/clobber/file=test_fil0.cdf/heading="enh" i1 ! not /APPEND - must be new -list/format=cdf/append/file=test_fil0.cdf/heading="enh" j1 -list/format=cdf/append/file=test_fil0.cdf/heading="enh" k1 -list/format=cdf/append/file=test_fil0.cdf/heading="enh" l1 ! record axis -list/format=cdf/append/file=test_fil0.cdf/heading="enh" l2 ! rigid axis - -! 2D -list/format=cdf/append/file=test_fil0.cdf/heading="enh" ij -list/format=cdf/append/file=test_fil0.cdf/heading="enh" ik -list/format=cdf/append/file=test_fil0.cdf/heading="enh" il -list/format=cdf/append/file=test_fil0.cdf/heading="enh" jk - -!3D -list/format=cdf/append/file=test_fil0.cdf/heading="enh" ijk -list/format=cdf/append/file=test_fil0.cdf/heading="enh" ikl -list/format=cdf/append/file=test_fil0.cdf/heading="enh" ijl -list/format=cdf/append/file=test_fil0.cdf/heading="enh" jkl - -!4D -list/format=cdf/append/file=test_fil0.cdf/heading="enh" ijkl - -! extend along time axis and write sub-regions -! (note: this may leave undefined regions in other variables) -list/format=cdf/append/file=test_fil0.cdf/heading="enh"/j=1:50/l=2:3 ijl -list/format=cdf/append/file=test_fil0.cdf/heading="enh"/j=51:100/l=2:3 ijl - -! rewrite a sub-region in the middle of the data -list/format=cdf/append/file=test_fil0.cdf/heading="enh"/j=30:40/k=5/l=1:3 ijkl - -! check documentation of transforms -list/format=cdf/append/file=test_fil0.cdf/heading="enh" iavejkl -list/format=cdf/append/file=test_fil0.cdf/heading="enh" ijavekl -list/format=cdf/append/file=test_fil0.cdf/heading="enh" ijkavel -list/format=cdf/append/file=test_fil0.cdf/heading="enh" ijklave - -! look at what we've created - time axis should be regular -set data/format=cdf test_fil0 -show data/full - currently SET data sets: - 1> ./data/gtbc011.cdf - - name title I J K L - TEMP TEMPERATURE 70:72 1:100 1:27 1:3 - deg. C on grid PS3DT1 with -1.E+34 for missing data - X=161W:158W Y=30S:50N Z=0:4149 - SALT (SALINITY(ppt) - 35) /1000 70:71 1:100 1:27 1:3 - frac. by wt. less .035 on grid PS3DT1 with 0.01 for missing data - X=161W:159W Y=30S:50N Z=0:4149 - U ZONAL VELOCITY 69:72 1:100 1:27 1:3 - cm/sec on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - V MERIDIONAL VELOCITY 69:72 1:100 1:27 1:3 - cm/sec on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - W VERTICAL VELOCITY 70:71 1:100 1:27 1:3 - cm/sec on grid PS3DW1 with -1.E+34 for missing data - X=161W:159W Y=30S:50N Z=5:4149 - TAUX ZONAL WIND STRESS 69:71 1:100 ... 1:3 - dynes/cm**2 on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - TAUY MERIDIONAL WIND STRESS 69:71 1:100 ... 1:3 - dynes/cm**2 on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - PSI STREAM FUNCTION 69:73 1:100 ... 1:3 - cm**3/sec on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:156.5W Y=28.8S:51.4N - - time range: 15-MAR-1983 10:00 to 15-MAR-1983 12:00 - - 2> ./test_fil0.cdf (default) - - name title I J K L - I1 X[G=TEMP,I=1:10] 1:10 ... ... ... - on grid PS3DT1_NYZT with -1.E+34 for missing data - X=130E:140E - J1 Y[G=TEMP,J=5:10] ... 5:10 ... ... - on grid PS3DT1_NXZT with -1.E+34 for missing data - Y=21.1S:12.5S - K1 Z[G=U,K=5:15] ... ... 5:15 ... - on grid PS3DU1_NXYT with -1.E+34 for missing data - Z=40:190 - L1 L[G=U,L=1:3] ... ... ... 1:3 - on grid GRH1 with -1.E+34 for missing data - - L2 L ... ... ... 1:2 - on grid GRH2 with -1.E+34 for missing data - - IJ TAUX[L=@AVE] 69:71 1:100 ... ... - (T=15-MAR-1983 09:30:15-MAR-1983 11:30) - on grid PS2DU1_NT with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - IK I1+K1 1:10 ... 5:15 ... - on grid G016_NYT with -1.E+34 for missing data - X=130E:140E Z=40:190 - IL I1+L1 1:10 ... ... 1:3 - on grid G016_NYZ with -1.E+34 for missing data - X=130E:140E - JK J1+K1 ... 5:10 5:15 ... - on grid G007_NXT with -1.E+34 for missing data - Y=21.1S:12.5S Z=40:190 - IJK TEMP[L=@AVE] 70:72 1:100 1:27 ... - (T=15-MAR-1983 09:30:15-MAR-1983 11:30) - on grid PS3DT1_NT with -1.E+34 for missing data - X=161W:158W Y=30S:50N Z=0:4149 - IKL TEMP[J=@AVE] 70:72 ... 1:27 1:3 - (Y=30S:50N) - on grid PS3DT1_NY with -1.E+34 for missing data - X=161W:158W Z=0:4149 - IJL TEMP[K=@AVE] 70:72 1:100 ... 1:3 - (Z=0:4149) - on grid PS3DT1_NZ with -1.E+34 for missing data - X=161W:158W Y=30S:50N - JKL TEMP[I=@AVE] ... 1:100 1:27 1:3 - (X=130E:70W) - on grid GRH3 with -1.E+34 for missing data - Y=30S:50N Z=0:4149 - IJKL U 69:72 1:100 1:27 1:3 - on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - IAVEJKL IJKL[I=@AVE] ... 1:100 1:27 1:3 - (X=130.5E:69.5W) - on grid GRH4 with -1.E+34 for missing data - Y=28.8S:51.4N Z=0:4149 - IJAVEKL IJKL[J=@AVE] 69:72 ... 1:27 1:3 - (Y=28.84S:51.43N) - on grid PS3DU1_NY with -1.E+34 for missing data - X=161.5W:157.5W Z=0:4149 - IJKAVEL IJKL[K=@AVE] 69:72 1:100 ... 1:3 - (Z=0:4149) - on grid PS3DU1_NZ with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N - IJKLAVE IJKL[L=@AVE] 69:72 1:100 1:27 ... - (T=15-MAR-1983 09:30:15-MAR-1983 11:30) - on grid PS3DU1_NT with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - - time range: 15-MAR-1983 10:00 to 15-MAR-1983 12:00 - -cancel variable ijkl -show grid ijkl - GRID PS3DU1 - name axis # pts start end subset - PSXU LONGITUDE 160mr 131E 70W full - PSYU LATITUDE 100 i 27.672S 50N full - PSZT DEPTH (m) 27 i- 5 3824 full - TIME TIME 3 r 15-MAR-1983 10:00 15-MAR-1983 12:00 full -cancel data test_fil0 -! 5/99 moved old bn230_cdf.sub3 to bn_cdf.sub4 to stay inline w/ old benchmarks *kob* -GO bn_cdf.sub4 -! bn230_cdf -! benchmark to test netCDF input and output of TMAP data set variables -! requires version 2.30 or later -! 6/92 - -! V5 *sh* 7/99 -- added /CLOBBER - -cancel data/all -cancel variables/all -cancel region - -use gtbc011 - -let i1 = x[g=temp,i=1:10] -let j1 = y[g=temp,j=5:10] -let k1 = z[g=u,k=5:15] -let l1 = l[g=u,l=1:3] -let l2 = l -let ij = taux[l=@ave] -let ik = i1+k1 -let il = i1+l1 -let jk = j1+k1 -let jl = j1+l1 -let kl = k1+l1 -let ijk = temp[l=@ave] -let ikl = temp[j=@ave] -let ijl = temp[k=@ave] -let jkl = temp[i=@ave] -let ijkl = u -let ijk2 = temp -let iavejkl = ijkl[i=@ave] -let ijavekl = ijkl[j=@ave] -let ijkavel = ijkl[k=@ave] -let ijklave = ijkl[l=@ave] - -set region/l=1:2 ! i,j, and k unspecified - -! a bunch of basic geometries -! 1d -list/format=cdf/clobber/file=test_fil.cdf i1 ! not /APPEND - must be new -list/format=cdf/append/file=test_fil.cdf j1 -list/format=cdf/append/file=test_fil.cdf k1 -list/format=cdf/append/file=test_fil.cdf l1 ! record axis -list/format=cdf/append/file=test_fil.cdf l2 ! rigid axis - -! 2D -list/format=cdf/append/file=test_fil.cdf ij -list/format=cdf/append/file=test_fil.cdf ik -list/format=cdf/append/file=test_fil.cdf il -list/format=cdf/append/file=test_fil.cdf jk - -!3D -list/format=cdf/append/file=test_fil.cdf ijk -list/format=cdf/append/file=test_fil.cdf ikl -list/format=cdf/append/file=test_fil.cdf ijl -list/format=cdf/append/file=test_fil.cdf jkl - -!4D -list/format=cdf/append/file=test_fil.cdf ijkl - -! extend along time axis and write sub-regions -! (note: this may leave undefined regions in other variables) -list/format=cdf/append/file=test_fil.cdf/j=1:50/l=2:3 ijl -list/format=cdf/append/file=test_fil.cdf/j=51:100/l=2:3 ijl - -! rewrite a sub-region in the middle of the data -list/format=cdf/append/file=test_fil.cdf/j=30:40/k=5/l=1:3 ijkl - -! check documentation of transforms -list/format=cdf/append/file=test_fil.cdf iavejkl -list/format=cdf/append/file=test_fil.cdf ijavekl -list/format=cdf/append/file=test_fil.cdf ijkavel -list/format=cdf/append/file=test_fil.cdf ijklave - -! look at what we've created - time axis should be regular -set data/format=cdf test_fil -show data/full - currently SET data sets: - 1> ./data/gtbc011.cdf - - name title I J K L - TEMP TEMPERATURE 70:72 1:100 1:27 1:3 - deg. C on grid PS3DT1 with -1.E+34 for missing data - X=161W:158W Y=30S:50N Z=0:4149 - SALT (SALINITY(ppt) - 35) /1000 70:71 1:100 1:27 1:3 - frac. by wt. less .035 on grid PS3DT1 with 0.01 for missing data - X=161W:159W Y=30S:50N Z=0:4149 - U ZONAL VELOCITY 69:72 1:100 1:27 1:3 - cm/sec on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - V MERIDIONAL VELOCITY 69:72 1:100 1:27 1:3 - cm/sec on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - W VERTICAL VELOCITY 70:71 1:100 1:27 1:3 - cm/sec on grid PS3DW1 with -1.E+34 for missing data - X=161W:159W Y=30S:50N Z=5:4149 - TAUX ZONAL WIND STRESS 69:71 1:100 ... 1:3 - dynes/cm**2 on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - TAUY MERIDIONAL WIND STRESS 69:71 1:100 ... 1:3 - dynes/cm**2 on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - PSI STREAM FUNCTION 69:73 1:100 ... 1:3 - cm**3/sec on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:156.5W Y=28.8S:51.4N - - time range: 15-MAR-1983 10:00 to 15-MAR-1983 12:00 - - 2> ./test_fil.cdf (default) - - name title I J K L - I1 X[G=TEMP,I=1:10] 1:10 ... ... ... - on grid GLZ1 with -1.E+34 for missing data - X=130E:140E - J1 Y[G=TEMP,J=5:10] ... 1:6 ... ... - on grid GLZ2 with -1.E+34 for missing data - Y=21.1S:12.5S - K1 Z[G=U,K=5:15] ... ... 1:11 ... - on grid GLZ3 with -1.E+34 for missing data - Z=40:190 - L1 L[G=U,L=1:3] ... ... ... 1:3 - on grid GLZ4 with -1.E+34 for missing data - - L2 L ... ... ... 1:2 - on grid GLZ5 with -1.E+34 for missing data - - IJ TAUX[L=@AVE] 1:3 1:100 ... ... - (T=15-MAR-1983 09:30:15-MAR-1983 11:30) - on grid GLZ6 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - IK I1+K1 1:10 ... 1:11 ... - on grid GLZ7 with -1.E+34 for missing data - X=130E:140E Z=40:190 - IL I1+L1 1:10 ... ... 1:3 - on grid GLZ8 with -1.E+34 for missing data - X=130E:140E - JK J1+K1 ... 1:6 1:11 ... - on grid GLZ9 with -1.E+34 for missing data - Y=21.1S:12.5S Z=40:190 - IJK TEMP[L=@AVE] 1:3 1:100 1:27 ... - (T=15-MAR-1983 09:30:15-MAR-1983 11:30) - on grid GLZ10 with -1.E+34 for missing data - X=161W:158W Y=30S:50N Z=0:4149 - IKL TEMP[J=@AVE] 1:3 ... 1:27 1:3 - (Y=30S:50N) - on grid GLZ11 with -1.E+34 for missing data - X=161W:158W Z=0:4149 - IJL TEMP[K=@AVE] 1:3 1:100 ... 1:3 - (Z=0:4149) - on grid GLZ12 with -1.E+34 for missing data - X=161W:158W Y=30S:50N - JKL TEMP[I=@AVE] ... 1:100 1:27 1:3 - (X=130E:70W) - on grid GLZ13 with -1.E+34 for missing data - Y=30S:50N Z=0:4149 - IJKL U 1:4 1:100 1:27 1:3 - on grid GLZ14 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - IAVEJKL IJKL[I=@AVE] ... 1:100 1:27 1:3 - (X=130.5E:69.5W) - on grid GLZ15 with -1.E+34 for missing data - Y=28.8S:51.4N Z=0:4149 - IJAVEKL IJKL[J=@AVE] 1:4 ... 1:27 1:3 - (Y=28.84S:51.43N) - on grid GLZ16 with -1.E+34 for missing data - X=161.5W:157.5W Z=0:4149 - IJKAVEL IJKL[K=@AVE] 1:4 1:100 ... 1:3 - (Z=0:4149) - on grid GLZ17 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N - IJKLAVE IJKL[L=@AVE] 1:4 1:100 1:27 ... - (T=15-MAR-1983 09:30:15-MAR-1983 11:30) - on grid GLZ18 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - - time range: 15-MAR-1983 10:00 to 15-MAR-1983 12:00 - -cancel variable ijkl -show grid ijkl - GRID GLZ14 - name axis # pts start end subset - PSXU69_72 LONGITUDE 4mr 161W 158W full - PSYU LATITUDE 100 i 27.672S 50N full - PSZT DEPTH (m) 27 i- 5 3824 full - TIME TIME 3 r 15-MAR-1983 10:00 15-MAR-1983 12:00 full -cancel data test_fil -GO bn_cdf_reversed.sub -! bn320_cdf_reversed.sub -! benchmark to test netCDF input of reverse-coordinate axes -! this routine added 3/2/95 - -cancel data/all -cancel variables/all -cancel region - -set data reverse_axes - -show data/var - currently SET data sets: - 1> ./data/reverse_axes.cdf (default) - - name title I J K L - FCN_NORM COS(X/10)*SIN(Y/2) 1:51 1:21 ... ... - on grid GAF1 with -1.E+34 for missing data - X=129.5E:179.5W Y=10.5S:10.5N - FCN_REV COS(X/10)*SIN(Y/2) 1:51 1:21 ... ... - on grid GAF2 with -1.E+34 for missing data - X=129.5E:179.5W Y=10.5S:10.5N - FCN_REV_SUB - COS(X/10)*SIN(Y/2) 1:51 10:19 ... ... - on grid GREV with -1.E+34 for missing data - X=129.5E:179.5W Y=1.5S:8.5N - - -list/x=180 fcn_norm,fcn_rev - WARNING: Listed variables have ambiguous coordinates on axes: Y - DATA SET: ./data/reverse_axes.cdf - LONGITUDE: 180E - Column 1: FCN_NORM is COS(X/10)*SIN(Y/2) - Column 2: FCN_REV is COS(X/10)*SIN(Y/2) - FCN_NOR FCN_REV -J / 1: 0.633194 -0.633194 -J / 2: 0.645479 -0.645479 -J / 3: 0.499729 -0.499729 -J / 4: 0.231628 -0.231628 -J / 5: -0.093184 0.093184 -J / 6: -0.395181 0.395181 -J / 7: -0.600424 0.600424 -J / 8: -0.658663 0.658663 -J / 9: -0.555637 0.555637 -J / 10: -0.316573 0.316573 -J / 11: 0.000000 0.000000 -J / 12: 0.316573 -0.316573 -J / 13: 0.555637 -0.555637 -J / 14: 0.658663 -0.658663 -J / 15: 0.600424 -0.600424 -J / 16: 0.395181 -0.395181 -J / 17: 0.093184 -0.093184 -J / 18: -0.231628 0.231628 -J / 19: -0.499729 0.499729 -J / 20: -0.645479 0.645479 -J / 21: -0.633194 0.633194 -list/x=180 fcn_rev_sub - VARIABLE : COS(X/10)*SIN(Y/2) - FILENAME : reverse_axes.cdf - SUBSET : 10 points (LATITUDE) - LONGITUDE: 180E - 180E - 51 - 8N / 19: 0.499729 - 7N / 18: 0.231628 - 6N / 17: -0.093184 - 5N / 16: -0.395181 - 4N / 15: -0.600424 - 3N / 14: -0.658663 - 2N / 13: -0.555637 - 1N / 12: -0.316573 - 0 / 11: 0.000000 - 1S / 10: 0.316573 - -GO bn_reset bn_regrid_transforms -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_transforms -GO bn_regrid_transforms -! bn500_regrid_transforms -! benchmark to test regridding transformations and syntax -! requires version 2.30 or later -! 8/92 - -! 9/95 - modified reflecting the new interpretation of var[GX=u] -! previously this meant to fully regrid to U -! Now it means to regrid only the X axis to U (other axes as in "var") -! ==> this is an implicit grid creation -! 2/99 *sh* - The behavior of regridding in cases where the region is -! unspecified has been changed in V.5 of Ferret. The behavior is now to -! attempt to obtain the full destination axis span. This means that -! an unspecified region regrid request applied to a sliced TMAP data -! set will error: Requested data range is outside of data set limits -! A "SET MODE IGNORE" has been added in this benchmark script fo rthese -! cases. (The proper fix to this is in tm_read ... to trim the region -! when a sliced data set is being read. -! 1/00 *sh* @MIN and @MAX bugs corrected. @AVE, @SUM, @VAR to handle partial -! grid boxes - -!set data gtsa056 -!use gtsa056 -use gtsa056_1 -use gtsa056_2 -set mode diag - -define axis/t=15-jan-1982:15-mar-1984:120/unit=hour tax5day -define axis/x=120e:60w:10/unit=degrees xax10 -define grid/like=u/t=tax5day g5day - getgrid EX#1 C: 6 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 -define grid/like=u/x=xax10/z=w/t=tax5day g5_10 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 8 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DW11 PSXT1 PSYT PSZW TIME1 - -set reg/x=130w:125w/y=0:1.5/z=0:15/t=21-JAN-1982:24-jan-1982 -!set reg/i=101:105/j=41:42/k=1:2/l=3:4 - -use gtsa056_1 !kob 4/99 - -! deliberate errors -set mode ignore -load temp[g=@lin] ! no target grid specified - dealloc dynamic grid PS3DW11 PSXT1 PSYT PSZW TIME1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DT2 PSXT1 PSYT PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 101 105 J: 45 50 K: 1 2 L: 3 4 - reading TEMP M:120 dset: 1 I: 101 105 J: 45 50 K: 1 2 L: 3 4 -load temp[gx=@ave] ! no target grid specified - dealloc dynamic grid PS3DT2 PSXT1 PSYT PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DT2 PSXT1 PSYT PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 101 105 J: 45 50 K: 1 2 L: 3 4 - found TEMP M:120 dset: 1 I: 101 105 J: 45 50 K: 1 2 L: 3 4 -load temp[g=u,g=w] ! more than 1 target grid - dealloc dynamic grid PS3DT2 PSXT1 PSYT PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 -load temp[g=x] ! g=user-or-pseudo-var not allowed - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 -set mode/last ignore - -! valid syntax tests -load temp - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DT2 PSXT1 PSYT PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 101 105 J: 45 50 K: 1 2 L: 3 4 - found TEMP M:120 dset: 1 I: 101 105 J: 45 50 K: 1 2 L: 3 4 -load temp[g=u] - dealloc dynamic grid PS3DT2 PSXT1 PSYT PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - strip regrid on X: TEMP --> PS3DU2 @LIN - reading TEMP M:116 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 3 4 - regrid XY - regrid TEMP M:114 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 -load temp[g=u@lin] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - found TEMP M:114 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 -load temp[g=u@ave,gy=@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - strip regrid on X: TEMP --> PS3DU2 @AVE - strip regrid on Y: TEMP --> XNTERMED @ASN - found TEMP M:116 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 3 4 - regrid TEMP M:113 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 3 4 - regrid TEMP M:112 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - -DELETE TEMP M:113 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 3 4 M: -999 -999 N: -999 -999 -load temp[g=u@lin,gy=@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - strip regrid on X: TEMP --> PS3DU2 @LIN - strip regrid on Y: TEMP --> XNTERMED @ASN - found TEMP M:116 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 3 4 - regrid TEMP M:113 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 3 4 - regrid TEMP M:108 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - -DELETE TEMP M:113 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 3 4 M: -999 -999 N: -999 -999 -load temp[g=u,gx=@ave,gy=@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - found TEMP M:112 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 -load temp[gx=u] ! changed V4.20 --> implicit regrid - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G009) PSXU PSYT PSZT TIME2 - dealloc dynamic grid (G009) PSXU PSYT PSZT TIME2 - allocate dynamic grid (G009) PSXU PSYT PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 50 K: 1 2 L: 3 4 - allocate dynamic grid (G009) PSXU PSYT PSZT TIME2 - strip regrid on X: TEMP --> (G009) @LIN - found TEMP M:116 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 3 4 - regrid TEMP M:113 dset: 1 I: 100 105 J: 45 50 K: 1 2 L: 3 4 - dealloc dynamic grid (G009) PSXU PSYT PSZT TIME2 -stat temp[g=u] - temp[g=u@ave,gx=u@lin,gy=u@lin,gz=u@lin,gt=u@lin] ! == 0 - dealloc dynamic grid (G009) PSXU PSYT PSZT TIME2 - -DELETE TEMP M:113 dset: 1 I: 100 105 J: 45 50 K: 1 2 L: 3 4 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - found TEMP M:114 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - found TEMP M:114 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - - TEMP[G=U] - TEMP[G=U@AVE,GX=U@LIN,GY=U@LIN,GZ=U@LIN,GT=U@LIN] - LONGITUDE: 130W to 125W - LATITUDE: 0 to 1.5N - DEPTH (m): 0 to 15 - TIME: 21-JAN-1982 00:00 to 24-JAN-1982 00:00 - E: N/A - F: N/A - DATA SET: ./data/gtsa056_1.cdf - - Total # of data points: 120 (6*5*2*2*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 -stat temp[g=u,gx=@ave] - temp[gx=@ave,g=u] ! == 0 - -DELETE EX#1 M:113 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - strip regrid on X: TEMP --> PS3DU2 @AVE - strip regrid on Y: TEMP --> XNTERMED @LIN - found TEMP M:116 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 3 4 - regrid TEMP M:113 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 3 4 - regrid TEMP M:107 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - -DELETE TEMP M:113 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 3 4 M: -999 -999 N: -999 -999 - found TEMP M:107 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - - TEMP[G=U,GX=@AVE] - TEMP[GX=@AVE,G=U] - LONGITUDE: 130W to 125W - LATITUDE: 0 to 1.5N - DEPTH (m): 0 to 15 - TIME: 21-JAN-1982 00:00 to 24-JAN-1982 00:00 - E: N/A - F: N/A - DATA SET: ./data/gtsa056_1.cdf - - Total # of data points: 120 (6*5*2*2*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - -! basic regrid tests -LIST temp[g=u@ave] - -DELETE EX#1 M:113 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - strip regrid on X: TEMP --> PS3DU2 @AAV - found TEMP M:116 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 3 4 - regrid XY - regrid TEMP M:113 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - VARIABLE : TEMPERATURE (deg. C) - regrid: U on X@AAV, on Y@AAV - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:3 T: 21-JAN-1982 16:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2757 24.2696 24.3629 24.6373 25.0615 25.4410 - 1N / 48: 24.1124 24.0973 24.1580 24.3776 24.7508 25.0998 - 0.67N / 47: 23.9930 23.9638 23.9801 24.1238 24.4241 24.7297 - 0.33N / 46: 23.9344 23.8880 23.8589 23.9144 24.1193 24.3743 - 0 / 45: 23.9566 23.8866 23.8159 23.7910 23.8916 24.0818 - ---- K:2 Z: 15 - 1.33N / 49: 24.0317 24.0211 24.1131 24.3923 24.8465 25.2791 - 1N / 48: 23.8191 23.8041 23.8705 24.1001 24.5038 24.9069 - 0.67N / 47: 23.6398 23.6127 23.6381 23.7968 24.1294 24.4871 - 0.33N / 46: 23.5298 23.4863 23.4638 23.5312 23.7653 24.0683 - 0 / 45: 23.5312 23.4606 23.3902 23.3664 23.4839 23.7124 - ---- L:4 T: 24-JAN-1982 17:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3180 24.4327 24.7033 25.1283 25.5109 25.6495 - 1N / 48: 24.1494 24.2321 24.4464 24.8164 25.1767 25.3092 - 0.67N / 47: 24.0206 24.0575 24.1976 24.4870 24.8053 24.9316 - 0.33N / 46: 23.9510 23.9366 23.9929 24.1798 24.4380 24.5703 - 0 / 45: 23.9593 23.8939 23.8707 23.9498 24.1283 24.2608 - ---- K:2 Z: 15 - 1.33N / 49: 24.0658 24.1785 24.4540 24.9097 25.3460 25.5339 - 1N / 48: 23.8539 23.9406 24.1631 24.5634 24.9781 25.1610 - 0.67N / 47: 23.6691 23.7132 23.8644 24.1827 24.5525 24.7281 - 0.33N / 46: 23.5511 23.5410 23.6056 23.8149 24.1179 24.2970 - 0 / 45: 23.5391 23.4697 23.4454 23.5341 23.7437 23.9152 -LIST temp[g=u,gx=u@ave] ! V4.20 mod - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - found TEMP M:107 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - VARIABLE : TEMPERATURE (deg. C) - regrid: U on X@AVE, on Y@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:3 T: 21-JAN-1982 16:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2757 24.2696 24.3629 24.6374 25.0615 25.4411 - 1N / 48: 24.1124 24.0973 24.1580 24.3776 24.7508 25.0998 - 0.67N / 47: 23.9930 23.9638 23.9801 24.1238 24.4241 24.7297 - 0.33N / 46: 23.9344 23.8880 23.8589 23.9144 24.1193 24.3743 - 0 / 45: 23.9566 23.8866 23.8159 23.7910 23.8916 24.0818 - ---- K:2 Z: 15 - 1.33N / 49: 24.0317 24.0211 24.1131 24.3923 24.8465 25.2791 - 1N / 48: 23.8191 23.8041 23.8706 24.1001 24.5038 24.9069 - 0.67N / 47: 23.6398 23.6127 23.6381 23.7968 24.1294 24.4871 - 0.33N / 46: 23.5298 23.4863 23.4638 23.5312 23.7653 24.0683 - 0 / 45: 23.5312 23.4606 23.3902 23.3664 23.4839 23.7124 - ---- L:4 T: 24-JAN-1982 17:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3180 24.4327 24.7033 25.1283 25.5109 25.6496 - 1N / 48: 24.1494 24.2321 24.4465 24.8165 25.1768 25.3092 - 0.67N / 47: 24.0206 24.0575 24.1976 24.4870 24.8053 24.9316 - 0.33N / 46: 23.9510 23.9366 23.9929 24.1798 24.4380 24.5703 - 0 / 45: 23.9593 23.8939 23.8707 23.9498 24.1283 24.2608 - ---- K:2 Z: 15 - 1.33N / 49: 24.0658 24.1785 24.4540 24.9097 25.3460 25.5339 - 1N / 48: 23.8539 23.9406 24.1631 24.5634 24.9781 25.1610 - 0.67N / 47: 23.6692 23.7132 23.8644 24.1827 24.5525 24.7281 - 0.33N / 46: 23.5511 23.5410 23.6056 23.8149 24.1179 24.2970 - 0 / 45: 23.5391 23.4697 23.4454 23.5341 23.7437 23.9152 -LIST temp[g=u,gy=u@ave] ! V4.20 mod - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip regrid on X: TEMP --> PS3DU2 @LIN - strip regrid on Y: TEMP --> XNTERMED @AVE - found TEMP M:116 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 3 4 - regrid TEMP M: 90 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 3 4 - regrid TEMP M: 85 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - -DELETE TEMP M: 90 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 3 4 M: -999 -999 N: -999 -999 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - VARIABLE : TEMPERATURE (deg. C) - regrid: U on X@LIN, on Y@AVE - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:3 T: 21-JAN-1982 16:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2757 24.2696 24.3629 24.6374 25.0615 25.4411 - 1N / 48: 24.1124 24.0973 24.1580 24.3776 24.7508 25.0998 - 0.67N / 47: 23.9930 23.9638 23.9801 24.1238 24.4241 24.7297 - 0.33N / 46: 23.9344 23.8880 23.8589 23.9144 24.1193 24.3743 - 0 / 45: 23.9566 23.8866 23.8159 23.7910 23.8916 24.0818 - ---- K:2 Z: 15 - 1.33N / 49: 24.0317 24.0211 24.1131 24.3923 24.8465 25.2791 - 1N / 48: 23.8191 23.8041 23.8706 24.1001 24.5038 24.9069 - 0.67N / 47: 23.6398 23.6127 23.6381 23.7968 24.1294 24.4871 - 0.33N / 46: 23.5298 23.4863 23.4638 23.5312 23.7653 24.0683 - 0 / 45: 23.5312 23.4606 23.3902 23.3664 23.4839 23.7124 - ---- L:4 T: 24-JAN-1982 17:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3180 24.4327 24.7033 25.1283 25.5109 25.6496 - 1N / 48: 24.1494 24.2321 24.4465 24.8165 25.1768 25.3092 - 0.67N / 47: 24.0206 24.0575 24.1976 24.4870 24.8053 24.9316 - 0.33N / 46: 23.9510 23.9366 23.9929 24.1798 24.4380 24.5703 - 0 / 45: 23.9593 23.8939 23.8707 23.9498 24.1283 24.2608 - ---- K:2 Z: 15 - 1.33N / 49: 24.0658 24.1785 24.4540 24.9097 25.3460 25.5339 - 1N / 48: 23.8539 23.9406 24.1631 24.5634 24.9781 25.1610 - 0.67N / 47: 23.6692 23.7132 23.8644 24.1827 24.5525 24.7281 - 0.33N / 46: 23.5511 23.5410 23.6056 23.8149 24.1179 24.2970 - 0 / 45: 23.5391 23.4697 23.4454 23.5341 23.7437 23.9152 -LIST temp[g=u,gz=u@ave] ! V4.20 mod - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - found TEMP M:114 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - VARIABLE : TEMPERATURE (deg. C) - regrid: U - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:3 T: 21-JAN-1982 16:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2757 24.2696 24.3629 24.6374 25.0615 25.4411 - 1N / 48: 24.1124 24.0973 24.1580 24.3776 24.7508 25.0998 - 0.67N / 47: 23.9930 23.9638 23.9801 24.1238 24.4241 24.7297 - 0.33N / 46: 23.9344 23.8880 23.8589 23.9144 24.1193 24.3743 - 0 / 45: 23.9566 23.8866 23.8159 23.7910 23.8916 24.0818 - ---- K:2 Z: 15 - 1.33N / 49: 24.0317 24.0211 24.1131 24.3923 24.8465 25.2791 - 1N / 48: 23.8191 23.8041 23.8706 24.1001 24.5038 24.9069 - 0.67N / 47: 23.6398 23.6127 23.6381 23.7968 24.1294 24.4871 - 0.33N / 46: 23.5298 23.4863 23.4638 23.5312 23.7653 24.0683 - 0 / 45: 23.5312 23.4606 23.3902 23.3664 23.4839 23.7124 - ---- L:4 T: 24-JAN-1982 17:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3180 24.4327 24.7033 25.1283 25.5109 25.6496 - 1N / 48: 24.1494 24.2321 24.4465 24.8165 25.1768 25.3092 - 0.67N / 47: 24.0206 24.0575 24.1976 24.4870 24.8053 24.9316 - 0.33N / 46: 23.9510 23.9366 23.9929 24.1798 24.4380 24.5703 - 0 / 45: 23.9593 23.8939 23.8707 23.9498 24.1283 24.2608 - ---- K:2 Z: 15 - 1.33N / 49: 24.0658 24.1785 24.4540 24.9097 25.3460 25.5339 - 1N / 48: 23.8539 23.9406 24.1631 24.5634 24.9781 25.1610 - 0.67N / 47: 23.6692 23.7132 23.8644 24.1827 24.5525 24.7281 - 0.33N / 46: 23.5511 23.5410 23.6056 23.8149 24.1179 24.2970 - 0 / 45: 23.5391 23.4697 23.4454 23.5341 23.7437 23.9152 -LIST temp[g=u,gt=u@ave] ! V4.20 mod, etc --> many more similar syntax chgs - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - found TEMP M:114 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - VARIABLE : TEMPERATURE (deg. C) - regrid: U - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:3 T: 21-JAN-1982 16:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2757 24.2696 24.3629 24.6374 25.0615 25.4411 - 1N / 48: 24.1124 24.0973 24.1580 24.3776 24.7508 25.0998 - 0.67N / 47: 23.9930 23.9638 23.9801 24.1238 24.4241 24.7297 - 0.33N / 46: 23.9344 23.8880 23.8589 23.9144 24.1193 24.3743 - 0 / 45: 23.9566 23.8866 23.8159 23.7910 23.8916 24.0818 - ---- K:2 Z: 15 - 1.33N / 49: 24.0317 24.0211 24.1131 24.3923 24.8465 25.2791 - 1N / 48: 23.8191 23.8041 23.8706 24.1001 24.5038 24.9069 - 0.67N / 47: 23.6398 23.6127 23.6381 23.7968 24.1294 24.4871 - 0.33N / 46: 23.5298 23.4863 23.4638 23.5312 23.7653 24.0683 - 0 / 45: 23.5312 23.4606 23.3902 23.3664 23.4839 23.7124 - ---- L:4 T: 24-JAN-1982 17:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3180 24.4327 24.7033 25.1283 25.5109 25.6496 - 1N / 48: 24.1494 24.2321 24.4465 24.8165 25.1768 25.3092 - 0.67N / 47: 24.0206 24.0575 24.1976 24.4870 24.8053 24.9316 - 0.33N / 46: 23.9510 23.9366 23.9929 24.1798 24.4380 24.5703 - 0 / 45: 23.9593 23.8939 23.8707 23.9498 24.1283 24.2608 - ---- K:2 Z: 15 - 1.33N / 49: 24.0658 24.1785 24.4540 24.9097 25.3460 25.5339 - 1N / 48: 23.8539 23.9406 24.1631 24.5634 24.9781 25.1610 - 0.67N / 47: 23.6692 23.7132 23.8644 24.1827 24.5525 24.7281 - 0.33N / 46: 23.5511 23.5410 23.6056 23.8149 24.1179 24.2970 - 0 / 45: 23.5391 23.4697 23.4454 23.5341 23.7437 23.9152 - -LIST temp[g=u] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - found TEMP M:114 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - VARIABLE : TEMPERATURE (deg. C) - regrid: U - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:3 T: 21-JAN-1982 16:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2757 24.2696 24.3629 24.6374 25.0615 25.4411 - 1N / 48: 24.1124 24.0973 24.1580 24.3776 24.7508 25.0998 - 0.67N / 47: 23.9930 23.9638 23.9801 24.1238 24.4241 24.7297 - 0.33N / 46: 23.9344 23.8880 23.8589 23.9144 24.1193 24.3743 - 0 / 45: 23.9566 23.8866 23.8159 23.7910 23.8916 24.0818 - ---- K:2 Z: 15 - 1.33N / 49: 24.0317 24.0211 24.1131 24.3923 24.8465 25.2791 - 1N / 48: 23.8191 23.8041 23.8706 24.1001 24.5038 24.9069 - 0.67N / 47: 23.6398 23.6127 23.6381 23.7968 24.1294 24.4871 - 0.33N / 46: 23.5298 23.4863 23.4638 23.5312 23.7653 24.0683 - 0 / 45: 23.5312 23.4606 23.3902 23.3664 23.4839 23.7124 - ---- L:4 T: 24-JAN-1982 17:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3180 24.4327 24.7033 25.1283 25.5109 25.6496 - 1N / 48: 24.1494 24.2321 24.4465 24.8165 25.1768 25.3092 - 0.67N / 47: 24.0206 24.0575 24.1976 24.4870 24.8053 24.9316 - 0.33N / 46: 23.9510 23.9366 23.9929 24.1798 24.4380 24.5703 - 0 / 45: 23.9593 23.8939 23.8707 23.9498 24.1283 24.2608 - ---- K:2 Z: 15 - 1.33N / 49: 24.0658 24.1785 24.4540 24.9097 25.3460 25.5339 - 1N / 48: 23.8539 23.9406 24.1631 24.5634 24.9781 25.1610 - 0.67N / 47: 23.6692 23.7132 23.8644 24.1827 24.5525 24.7281 - 0.33N / 46: 23.5511 23.5410 23.6056 23.8149 24.1179 24.2970 - 0 / 45: 23.5391 23.4697 23.4454 23.5341 23.7437 23.9152 -LIST temp[g=u@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - strip regrid on X: TEMP --> PS3DU2 @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - found TEMP M:116 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 3 4 - regrid TEMP M: 90 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - regrid TEMP M: 77 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - -DELETE TEMP M: 90 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: U on X@ASN, on Y@ASN - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:3 T: 21-JAN-1982 16:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2023 24.1706 24.1868 24.3320 24.6889 25.1380 - 1N / 48: 24.0570 24.0199 24.0121 24.1010 24.3886 24.7878 - 0.67N / 47: 23.9679 23.9272 23.8960 23.9112 24.0946 24.4255 - 0.33N / 46: 23.9500 23.8924 23.8363 23.7920 23.8598 24.0974 - 0 / 45: 24.0303 23.9535 23.8642 23.7713 23.7408 23.8683 - ---- K:2 Z: 15 - 1.33N / 49: 23.9413 23.9053 23.9237 24.0709 24.4373 24.9355 - 1N / 48: 23.7355 23.6943 23.6933 23.7943 24.0980 24.5443 - 0.67N / 47: 23.5856 23.5436 23.5197 23.5450 23.7499 24.1251 - 0.33N / 46: 23.5242 23.4660 23.4157 23.3749 23.4550 23.7312 - 0 / 45: 23.6083 23.5263 23.4345 23.3357 23.3000 23.4491 - ---- L:4 T: 24-JAN-1982 17:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2012 24.2556 24.4066 24.7485 25.2133 25.5037 - 1N / 48: 24.0581 24.0827 24.1835 24.4473 24.8567 25.1333 - 0.67N / 47: 23.9772 23.9643 23.9994 24.1601 24.4838 24.7472 - 0.33N / 46: 23.9584 23.9040 23.8788 23.9333 24.1419 24.3790 - 0 / 45: 24.0357 23.9390 23.8536 23.8172 23.9069 24.0855 - ---- K:2 Z: 15 - 1.33N / 49: 23.9325 23.9890 24.1393 24.4928 25.0067 25.3582 - 1N / 48: 23.7314 23.7626 23.8716 24.1488 24.6053 24.9421 - 0.67N / 47: 23.5951 23.5875 23.6312 23.8060 24.1706 24.4921 - 0.33N / 46: 23.5385 23.4834 23.4619 23.5233 23.7598 24.0491 - 0 / 45: 23.6210 23.5135 23.4199 23.3768 23.4767 23.6893 -LIST temp[g=u,gx=u@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip regrid on X: TEMP --> PS3DU2 @ASN - strip regrid on Y: TEMP --> XNTERMED @LIN - found TEMP M:116 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 3 4 - regrid TEMP M: 90 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - regrid TEMP M: 74 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - -DELETE TEMP M: 90 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 M: -999 -999 N: -999 -999 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - VARIABLE : TEMPERATURE (deg. C) - regrid: U on X@ASN, on Y@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:3 T: 21-JAN-1982 16:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2921 24.2593 24.2798 24.4459 24.8288 25.2942 - 1N / 48: 24.1296 24.0952 24.0995 24.2165 24.5387 24.9629 - 0.67N / 47: 24.0124 23.9735 23.9541 24.0061 24.2416 24.6067 - 0.33N / 46: 23.9590 23.9098 23.8662 23.8516 23.9772 24.2614 - 0 / 45: 23.9901 23.9230 23.8503 23.7816 23.8003 23.9828 - ---- K:2 Z: 15 - 1.33N / 49: 24.0517 24.0117 24.0305 24.1957 24.5888 25.1042 - 1N / 48: 23.8384 23.7998 23.8085 23.9326 24.2677 24.7399 - 0.67N / 47: 23.6606 23.6190 23.6065 23.6697 23.9240 24.3347 - 0.33N / 46: 23.5549 23.5048 23.4677 23.4600 23.6025 23.9282 - 0 / 45: 23.5662 23.4962 23.4251 23.3553 23.3775 23.5902 - ---- L:4 T: 24-JAN-1982 17:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2879 24.3481 24.5174 24.8892 25.3674 25.6544 - 1N / 48: 24.1297 24.1691 24.2950 24.5979 25.0350 25.3185 - 0.67N / 47: 24.0177 24.0235 24.0914 24.3037 24.6703 24.9403 - 0.33N / 46: 23.9678 23.9342 23.9391 24.0467 24.3128 24.5631 - 0 / 45: 23.9971 23.9215 23.8662 23.8753 24.0244 24.2322 - ---- K:2 Z: 15 - 1.33N / 49: 24.0365 24.0951 24.2619 24.6460 25.1734 25.5187 - 1N / 48: 23.8319 23.8758 24.0055 24.3208 24.8060 25.1502 - 0.67N / 47: 23.6632 23.6751 23.7514 23.9774 24.3880 24.7171 - 0.33N / 46: 23.5668 23.5355 23.5465 23.6647 23.9652 24.2706 - 0 / 45: 23.5798 23.4985 23.4409 23.4500 23.6182 23.8692 -LIST temp[g=u,gy=u@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - found TEMP M:108 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - VARIABLE : TEMPERATURE (deg. C) - regrid: U on X@LIN, on Y@ASN - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:3 T: 21-JAN-1982 16:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.1864 24.1787 24.2594 24.5105 24.9134 25.2830 - 1N / 48: 24.0384 24.0160 24.0566 24.2448 24.5882 24.9167 - 0.67N / 47: 23.9476 23.9116 23.9036 24.0029 24.2600 24.5428 - 0.33N / 46: 23.9212 23.8644 23.8142 23.8259 23.9786 24.2058 - 0 / 45: 23.9919 23.9089 23.8177 23.7561 23.8046 23.9579 - ---- K:2 Z: 15 - 1.33N / 49: 23.9233 23.9145 23.9973 24.2541 24.6864 25.1105 - 1N / 48: 23.7149 23.6938 23.7438 23.9462 24.3212 24.7033 - 0.67N / 47: 23.5646 23.5317 23.5324 23.6475 23.9375 24.2709 - 0.33N / 46: 23.4951 23.4409 23.3953 23.4150 23.5931 23.8658 - 0 / 45: 23.5673 23.4804 23.3851 23.3179 23.3746 23.5590 - ---- L:4 T: 24-JAN-1982 17:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2284 24.3311 24.5775 24.9809 25.3585 25.4979 - 1N / 48: 24.0704 24.1331 24.3154 24.6520 24.9950 25.1205 - 0.67N / 47: 23.9708 23.9819 24.0798 24.3220 24.6155 24.7426 - 0.33N / 46: 23.9312 23.8914 23.9061 24.0376 24.2605 24.3979 - 0 / 45: 23.9874 23.8963 23.8354 23.8620 23.9962 24.1237 - ---- K:2 Z: 15 - 1.33N / 49: 23.9608 24.0642 24.3160 24.7497 25.1824 25.3725 - 1N / 48: 23.7470 23.8171 24.0102 24.3770 24.7737 24.9496 - 0.67N / 47: 23.5913 23.6093 23.7186 23.9883 24.3314 24.5067 - 0.33N / 46: 23.5110 23.4726 23.4926 23.6415 23.9044 24.0873 - 0 / 45: 23.5673 23.4667 23.3983 23.4267 23.5830 23.7431 -LIST temp[g=u,gz=u@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - found TEMP M:114 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - VARIABLE : TEMPERATURE (deg. C) - regrid: U - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:3 T: 21-JAN-1982 16:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2757 24.2696 24.3629 24.6374 25.0615 25.4411 - 1N / 48: 24.1124 24.0973 24.1580 24.3776 24.7508 25.0998 - 0.67N / 47: 23.9930 23.9638 23.9801 24.1238 24.4241 24.7297 - 0.33N / 46: 23.9344 23.8880 23.8589 23.9144 24.1193 24.3743 - 0 / 45: 23.9566 23.8866 23.8159 23.7910 23.8916 24.0818 - ---- K:2 Z: 15 - 1.33N / 49: 24.0317 24.0211 24.1131 24.3923 24.8465 25.2791 - 1N / 48: 23.8191 23.8041 23.8706 24.1001 24.5038 24.9069 - 0.67N / 47: 23.6398 23.6127 23.6381 23.7968 24.1294 24.4871 - 0.33N / 46: 23.5298 23.4863 23.4638 23.5312 23.7653 24.0683 - 0 / 45: 23.5312 23.4606 23.3902 23.3664 23.4839 23.7124 - ---- L:4 T: 24-JAN-1982 17:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3180 24.4327 24.7033 25.1283 25.5109 25.6496 - 1N / 48: 24.1494 24.2321 24.4465 24.8165 25.1768 25.3092 - 0.67N / 47: 24.0206 24.0575 24.1976 24.4870 24.8053 24.9316 - 0.33N / 46: 23.9510 23.9366 23.9929 24.1798 24.4380 24.5703 - 0 / 45: 23.9593 23.8939 23.8707 23.9498 24.1283 24.2608 - ---- K:2 Z: 15 - 1.33N / 49: 24.0658 24.1785 24.4540 24.9097 25.3460 25.5339 - 1N / 48: 23.8539 23.9406 24.1631 24.5634 24.9781 25.1610 - 0.67N / 47: 23.6692 23.7132 23.8644 24.1827 24.5525 24.7281 - 0.33N / 46: 23.5511 23.5410 23.6056 23.8149 24.1179 24.2970 - 0 / 45: 23.5391 23.4697 23.4454 23.5341 23.7437 23.9152 -LIST temp[g=u,gt=u@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - found TEMP M:114 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 3 4 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - VARIABLE : TEMPERATURE (deg. C) - regrid: U - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:3 T: 21-JAN-1982 16:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2757 24.2696 24.3629 24.6374 25.0615 25.4411 - 1N / 48: 24.1124 24.0973 24.1580 24.3776 24.7508 25.0998 - 0.67N / 47: 23.9930 23.9638 23.9801 24.1238 24.4241 24.7297 - 0.33N / 46: 23.9344 23.8880 23.8589 23.9144 24.1193 24.3743 - 0 / 45: 23.9566 23.8866 23.8159 23.7910 23.8916 24.0818 - ---- K:2 Z: 15 - 1.33N / 49: 24.0317 24.0211 24.1131 24.3923 24.8465 25.2791 - 1N / 48: 23.8191 23.8041 23.8706 24.1001 24.5038 24.9069 - 0.67N / 47: 23.6398 23.6127 23.6381 23.7968 24.1294 24.4871 - 0.33N / 46: 23.5298 23.4863 23.4638 23.5312 23.7653 24.0683 - 0 / 45: 23.5312 23.4606 23.3902 23.3664 23.4839 23.7124 - ---- L:4 T: 24-JAN-1982 17:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3180 24.4327 24.7033 25.1283 25.5109 25.6496 - 1N / 48: 24.1494 24.2321 24.4465 24.8165 25.1768 25.3092 - 0.67N / 47: 24.0206 24.0575 24.1976 24.4870 24.8053 24.9316 - 0.33N / 46: 23.9510 23.9366 23.9929 24.1798 24.4380 24.5703 - 0 / 45: 23.9593 23.8939 23.8707 23.9498 24.1283 24.2608 - ---- K:2 Z: 15 - 1.33N / 49: 24.0658 24.1785 24.4540 24.9097 25.3460 25.5339 - 1N / 48: 23.8539 23.9406 24.1631 24.5634 24.9781 25.1610 - 0.67N / 47: 23.6692 23.7132 23.8644 24.1827 24.5525 24.7281 - 0.33N / 46: 23.5511 23.5410 23.6056 23.8149 24.1179 24.2970 - 0 / 45: 23.5391 23.4697 23.4454 23.5341 23.7437 23.9152 - -! Z and T axes different -LIST temp[g=g5day@ave] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - strip regrid on X: TEMP --> G5DAY @AAV - strip regrid on T: TEMP --> XNTERMED @AVE - reading TEMP M: 90 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 58 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 3 - regrid XY - regrid TEMP M: 19 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M: 58 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY on X@AAV, on Y@AAV, on T@AVE - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:2 T: 20-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3222 24.2574 24.2792 24.4559 24.8014 25.1989 - 1N / 48: 24.1494 24.0886 24.0899 24.2231 24.5192 24.8735 - 0.67N / 47: 24.0194 23.9594 23.9338 24.0060 24.2309 24.5292 - 0.33N / 46: 23.9494 23.8865 23.8348 23.8403 23.9749 24.2056 - 0 / 45: 23.9610 23.8876 23.8101 23.7577 23.8012 23.9526 - ---- K:2 Z: 15 - 1.33N / 49: 24.0893 24.0128 24.0305 24.2093 24.5723 25.0111 - 1N / 48: 23.8655 23.7966 23.7992 23.9411 24.2590 24.6558 - 0.67N / 47: 23.6732 23.6084 23.5863 23.6706 23.9224 24.2649 - 0.33N / 46: 23.5483 23.4836 23.4354 23.4489 23.6072 23.8806 - 0 / 45: 23.5360 23.4598 23.3824 23.3292 23.3833 23.5675 - ---- L:3 T: 25-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3572 24.4967 24.7799 25.1728 25.4968 25.5979 - 1N / 48: 24.1819 24.2866 24.5172 24.8632 25.1660 25.2557 - 0.67N / 47: 24.0430 24.0993 24.2582 24.5330 24.7997 24.8843 - 0.33N / 46: 23.9617 23.9632 24.0394 24.2224 24.4405 24.5349 - 0 / 45: 23.9585 23.9048 23.9006 23.9848 24.1378 24.2396 - ---- K:2 Z: 15 - 1.33N / 49: 24.1046 24.2438 24.5379 24.9641 25.3385 25.4831 - 1N / 48: 23.8866 23.9959 24.2403 24.6203 24.9739 25.1064 - 0.67N / 47: 23.6926 23.7557 23.9301 24.2379 24.5528 24.6786 - 0.33N / 46: 23.5623 23.5678 23.6554 23.8652 24.1261 24.2599 - 0 / 45: 23.5376 23.4796 23.4768 23.5746 23.7580 23.8929 -LIST temp[g=g5day,gx=g5day@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - -DELETE TEMP M: 19 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - strip regrid on X: TEMP --> G5DAY @AVE - strip regrid on Y: TEMP --> XNTERMED @LIN - strip regrid on T: TEMP --> YNTERMED @LIN - found TEMP M: 90 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 19 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M: 58 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M: 19 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 19 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M: 58 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY on X@AVE, on Y@LIN, on T@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:2 T: 20-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3238 24.2570 24.2762 24.4494 24.7922 25.1903 - 1N / 48: 24.1507 24.0883 24.0875 24.2176 24.5110 24.8654 - 0.67N / 47: 24.0203 23.9592 23.9321 24.0018 24.2240 24.5221 - 0.33N / 46: 23.9499 23.8864 23.8340 23.8376 23.9698 24.1996 - 0 / 45: 23.9612 23.8877 23.8099 23.7565 23.7980 23.9480 - ---- K:2 Z: 15 - 1.33N / 49: 24.0913 24.0125 24.0276 24.2028 24.5625 25.0016 - 1N / 48: 23.8672 23.7964 23.7967 23.9354 24.2503 24.6469 - 0.67N / 47: 23.6744 23.6082 23.5844 23.6661 23.9151 24.2570 - 0.33N / 46: 23.5490 23.4835 23.4343 23.4459 23.6016 23.8740 - 0 / 45: 23.5362 23.4598 23.3821 23.3279 23.3797 23.5624 - ---- L:3 T: 25-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3350 24.4653 24.7499 25.1705 25.5289 25.6409 - 1N / 48: 24.1636 24.2597 24.4881 24.8569 25.1948 25.2999 - 0.67N / 47: 24.0305 24.0781 24.2317 24.5232 24.8229 24.9242 - 0.33N / 46: 23.9559 23.9492 24.0174 24.2096 24.4555 24.5671 - 0 / 45: 23.9591 23.8984 23.8848 23.9713 24.1442 24.2621 - ---- K:2 Z: 15 - 1.33N / 49: 24.0822 24.2113 24.5033 24.9571 25.3691 25.5280 - 1N / 48: 23.8680 23.9686 24.2074 24.6089 25.0011 25.1536 - 0.67N / 47: 23.6795 23.7345 23.9009 24.2235 24.5746 24.7220 - 0.33N / 46: 23.5565 23.5539 23.6318 23.8486 24.1393 24.2949 - 0 / 45: 23.5390 23.4739 23.4601 23.5581 23.7626 23.9173 -LIST temp[g=g5day,gy=g5day@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - strip regrid on X: TEMP --> G5DAY @LIN - strip regrid on Y: TEMP --> XNTERMED @AVE - strip regrid on T: TEMP --> YNTERMED @LIN - found TEMP M: 90 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 58 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M:110 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M: 58 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 58 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M:110 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY on X@LIN, on Y@AVE, on T@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:2 T: 20-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3238 24.2570 24.2762 24.4494 24.7922 25.1903 - 1N / 48: 24.1507 24.0883 24.0875 24.2176 24.5110 24.8654 - 0.67N / 47: 24.0203 23.9592 23.9321 24.0018 24.2240 24.5221 - 0.33N / 46: 23.9499 23.8864 23.8340 23.8376 23.9698 24.1996 - 0 / 45: 23.9612 23.8877 23.8099 23.7565 23.7980 23.9480 - ---- K:2 Z: 15 - 1.33N / 49: 24.0913 24.0125 24.0276 24.2029 24.5625 25.0016 - 1N / 48: 23.8672 23.7964 23.7967 23.9354 24.2503 24.6469 - 0.67N / 47: 23.6744 23.6082 23.5844 23.6661 23.9151 24.2570 - 0.33N / 46: 23.5490 23.4835 23.4343 23.4459 23.6016 23.8740 - 0 / 45: 23.5362 23.4598 23.3821 23.3279 23.3797 23.5624 - ---- L:3 T: 25-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3350 24.4653 24.7499 25.1705 25.5289 25.6409 - 1N / 48: 24.1636 24.2597 24.4881 24.8569 25.1948 25.2999 - 0.67N / 47: 24.0305 24.0781 24.2317 24.5232 24.8229 24.9242 - 0.33N / 46: 23.9559 23.9492 24.0174 24.2096 24.4555 24.5671 - 0 / 45: 23.9591 23.8984 23.8848 23.9713 24.1442 24.2621 - ---- K:2 Z: 15 - 1.33N / 49: 24.0822 24.2113 24.5033 24.9571 25.3691 25.5280 - 1N / 48: 23.8680 23.9686 24.2074 24.6089 25.0011 25.1536 - 0.67N / 47: 23.6795 23.7345 23.9009 24.2235 24.5746 24.7220 - 0.33N / 46: 23.5565 23.5539 23.6318 23.8486 24.1393 24.2949 - 0 / 45: 23.5390 23.4739 23.4601 23.5581 23.7626 23.9173 -LIST temp[g=g5day,gz=g5day@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - strip regrid on X: TEMP --> G5DAY @LIN - strip regrid on T: TEMP --> XNTERMED @LIN - found TEMP M: 90 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M:110 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 3 - regrid XY - regrid TEMP M: 42 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M:110 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:2 T: 20-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3238 24.2570 24.2762 24.4494 24.7922 25.1903 - 1N / 48: 24.1507 24.0883 24.0875 24.2176 24.5110 24.8654 - 0.67N / 47: 24.0203 23.9592 23.9321 24.0018 24.2240 24.5221 - 0.33N / 46: 23.9499 23.8864 23.8340 23.8376 23.9698 24.1996 - 0 / 45: 23.9612 23.8877 23.8099 23.7565 23.7980 23.9480 - ---- K:2 Z: 15 - 1.33N / 49: 24.0913 24.0125 24.0276 24.2028 24.5625 25.0016 - 1N / 48: 23.8672 23.7964 23.7967 23.9354 24.2503 24.6469 - 0.67N / 47: 23.6744 23.6082 23.5844 23.6661 23.9151 24.2570 - 0.33N / 46: 23.5490 23.4835 23.4343 23.4459 23.6016 23.8740 - 0 / 45: 23.5362 23.4598 23.3821 23.3279 23.3797 23.5624 - ---- L:3 T: 25-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3350 24.4653 24.7499 25.1705 25.5289 25.6409 - 1N / 48: 24.1636 24.2597 24.4881 24.8569 25.1948 25.2999 - 0.67N / 47: 24.0305 24.0781 24.2317 24.5232 24.8229 24.9242 - 0.33N / 46: 23.9559 23.9492 24.0174 24.2096 24.4555 24.5671 - 0 / 45: 23.9591 23.8984 23.8848 23.9713 24.1442 24.2621 - ---- K:2 Z: 15 - 1.33N / 49: 24.0822 24.2113 24.5033 24.9571 25.3691 25.5280 - 1N / 48: 23.8680 23.9686 24.2074 24.6089 25.0011 25.1536 - 0.67N / 47: 23.6795 23.7345 23.9009 24.2235 24.5746 24.7220 - 0.33N / 46: 23.5565 23.5539 23.6318 23.8486 24.1393 24.2949 - 0 / 45: 23.5390 23.4739 23.4601 23.5581 23.7626 23.9173 -LIST temp[g=g5day,gt=g5day@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - strip regrid on X: TEMP --> G5DAY @LIN - strip regrid on T: TEMP --> XNTERMED @AVE - found TEMP M: 90 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M:110 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 3 - regrid XY - regrid TEMP M: 38 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M:110 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY on X@LIN, on Y@LIN, on T@AVE - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:2 T: 20-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3222 24.2574 24.2792 24.4559 24.8014 25.1989 - 1N / 48: 24.1494 24.0886 24.0899 24.2231 24.5192 24.8735 - 0.67N / 47: 24.0194 23.9594 23.9338 24.0060 24.2309 24.5292 - 0.33N / 46: 23.9494 23.8865 23.8348 23.8403 23.9749 24.2056 - 0 / 45: 23.9610 23.8876 23.8101 23.7577 23.8012 23.9526 - ---- K:2 Z: 15 - 1.33N / 49: 24.0893 24.0128 24.0305 24.2093 24.5723 25.0111 - 1N / 48: 23.8655 23.7966 23.7992 23.9411 24.2590 24.6558 - 0.67N / 47: 23.6732 23.6084 23.5863 23.6706 23.9224 24.2649 - 0.33N / 46: 23.5483 23.4836 23.4354 23.4489 23.6072 23.8806 - 0 / 45: 23.5360 23.4598 23.3824 23.3292 23.3833 23.5675 - ---- L:3 T: 25-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3572 24.4967 24.7800 25.1728 25.4968 25.5979 - 1N / 48: 24.1819 24.2866 24.5172 24.8632 25.1660 25.2557 - 0.67N / 47: 24.0430 24.0993 24.2582 24.5331 24.7997 24.8843 - 0.33N / 46: 23.9617 23.9632 24.0394 24.2224 24.4405 24.5349 - 0 / 45: 23.9585 23.9048 23.9006 23.9848 24.1378 24.2396 - ---- K:2 Z: 15 - 1.33N / 49: 24.1046 24.2439 24.5379 24.9641 25.3385 25.4831 - 1N / 48: 23.8866 23.9959 24.2403 24.6203 24.9740 25.1065 - 0.67N / 47: 23.6926 23.7557 23.9301 24.2379 24.5528 24.6786 - 0.33N / 46: 23.5623 23.5678 23.6554 23.8652 24.1261 24.2599 - 0 / 45: 23.5376 23.4796 23.4768 23.5746 23.7580 23.8929 - -LIST temp[g=g5day] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - found TEMP M: 42 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:2 T: 20-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3238 24.2570 24.2762 24.4494 24.7922 25.1903 - 1N / 48: 24.1507 24.0883 24.0875 24.2176 24.5110 24.8654 - 0.67N / 47: 24.0203 23.9592 23.9321 24.0018 24.2240 24.5221 - 0.33N / 46: 23.9499 23.8864 23.8340 23.8376 23.9698 24.1996 - 0 / 45: 23.9612 23.8877 23.8099 23.7565 23.7980 23.9480 - ---- K:2 Z: 15 - 1.33N / 49: 24.0913 24.0125 24.0276 24.2028 24.5625 25.0016 - 1N / 48: 23.8672 23.7964 23.7967 23.9354 24.2503 24.6469 - 0.67N / 47: 23.6744 23.6082 23.5844 23.6661 23.9151 24.2570 - 0.33N / 46: 23.5490 23.4835 23.4343 23.4459 23.6016 23.8740 - 0 / 45: 23.5362 23.4598 23.3821 23.3279 23.3797 23.5624 - ---- L:3 T: 25-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3350 24.4653 24.7499 25.1705 25.5289 25.6409 - 1N / 48: 24.1636 24.2597 24.4881 24.8569 25.1948 25.2999 - 0.67N / 47: 24.0305 24.0781 24.2317 24.5232 24.8229 24.9242 - 0.33N / 46: 23.9559 23.9492 24.0174 24.2096 24.4555 24.5671 - 0 / 45: 23.9591 23.8984 23.8848 23.9713 24.1442 24.2621 - ---- K:2 Z: 15 - 1.33N / 49: 24.0822 24.2113 24.5033 24.9571 25.3691 25.5280 - 1N / 48: 23.8680 23.9686 24.2074 24.6089 25.0011 25.1536 - 0.67N / 47: 23.6795 23.7345 23.9009 24.2235 24.5746 24.7220 - 0.33N / 46: 23.5565 23.5539 23.6318 23.8486 24.1393 24.2949 - 0 / 45: 23.5390 23.4739 23.4601 23.5581 23.7626 23.9173 -LIST temp[g=g5day@asn] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - strip regrid on X: TEMP --> G5DAY @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - strip regrid on T: TEMP --> YNTERMED @ASN - found TEMP M: 90 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M:110 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - regrid TEMP M: 98 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M:110 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M:110 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M: 98 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY on X@ASN, on Y@ASN, on T@ASN - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:2 T: 20-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3316 24.1982 24.1149 24.1101 24.2698 24.6194 - 1N / 48: 24.1534 24.0459 23.9640 23.9283 24.0343 24.3289 - 0.67N / 47: 24.0296 23.9427 23.8693 23.8085 23.8334 24.0392 - 0.33N / 46: 23.9776 23.9013 23.8273 23.7484 23.7068 23.8063 - 0 / 45: 24.0264 23.9547 23.8708 23.7728 23.6845 23.6853 - ---- K:2 Z: 15 - 1.33N / 49: 24.0998 23.9419 23.8502 23.8473 24.0126 24.3725 - 1N / 48: 23.8568 23.7289 23.6389 23.6068 23.7315 24.0484 - 0.67N / 47: 23.6628 23.5633 23.4870 23.4278 23.4670 23.7064 - 0.33N / 46: 23.5593 23.4735 23.4013 23.3239 23.2836 23.4092 - 0 / 45: 23.6053 23.5232 23.4384 23.3380 23.2391 23.2432 - ---- L:3 T: 25-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2023 24.1706 24.1868 24.3320 24.6889 25.1380 - 1N / 48: 24.0570 24.0199 24.0121 24.1010 24.3886 24.7878 - 0.67N / 47: 23.9679 23.9272 23.8960 23.9112 24.0946 24.4255 - 0.33N / 46: 23.9500 23.8924 23.8363 23.7920 23.8598 24.0974 - 0 / 45: 24.0303 23.9535 23.8642 23.7713 23.7408 23.8683 - ---- K:2 Z: 15 - 1.33N / 49: 23.9413 23.9053 23.9237 24.0709 24.4373 24.9355 - 1N / 48: 23.7355 23.6943 23.6933 23.7943 24.0980 24.5443 - 0.67N / 47: 23.5856 23.5436 23.5197 23.5450 23.7499 24.1251 - 0.33N / 46: 23.5242 23.4660 23.4157 23.3749 23.4550 23.7312 - 0 / 45: 23.6083 23.5263 23.4345 23.3357 23.3000 23.4491 -LIST temp[g=g5day,gx=g5day@asn] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - strip regrid on X: TEMP --> G5DAY @ASN - strip regrid on Y: TEMP --> XNTERMED @LIN - strip regrid on T: TEMP --> YNTERMED @LIN - found TEMP M: 90 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 98 dset: 1 I: 100 105 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M: 94 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M: 98 dset: 1 I: 100 105 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 98 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M: 94 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY on X@ASN, on Y@LIN, on T@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:2 T: 20-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3718 24.2759 24.2381 24.3143 24.5845 24.9998 - 1N / 48: 24.1915 24.1099 24.0666 24.1084 24.3268 24.6951 - 0.67N / 47: 24.0557 23.9849 23.9336 23.9307 24.0730 24.3751 - 0.33N / 46: 23.9834 23.9165 23.8564 23.8115 23.8637 24.0759 - 0 / 45: 23.9966 23.9258 23.8496 23.7701 23.7430 23.8530 - ---- K:2 Z: 15 - 1.33N / 49: 24.1479 24.0348 23.9902 24.0651 24.3406 24.7844 - 1N / 48: 23.9151 23.8193 23.7735 23.8199 24.0509 24.4498 - 0.67N / 47: 23.7150 23.6338 23.5826 23.5862 23.7461 24.0841 - 0.33N / 46: 23.5857 23.5123 23.4548 23.4139 23.4780 23.7252 - 0 / 45: 23.5750 23.4974 23.4222 23.3420 23.3139 23.4455 - ---- L:3 T: 25-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2986 24.3714 24.5593 24.9405 25.4006 25.6571 - 1N / 48: 24.1387 24.1885 24.3309 24.6454 25.0684 25.3212 - 0.67N / 47: 24.0238 24.0371 24.1191 24.3444 24.7020 24.9439 - 0.33N / 46: 23.9705 23.9413 23.9571 24.0777 24.3415 24.5694 - 0 / 45: 23.9960 23.9223 23.8745 23.8951 24.0474 24.2410 - ---- K:2 Z: 15 - 1.33N / 49: 24.0465 24.1179 24.3048 24.7018 25.2123 25.5259 - 1N / 48: 23.8411 23.8950 24.0422 24.3726 24.8452 25.1571 - 0.67N / 47: 23.6700 23.6890 23.7799 24.0219 24.4252 24.7240 - 0.33N / 46: 23.5701 23.5428 23.5650 23.6985 23.9987 24.2798 - 0 / 45: 23.5791 23.4988 23.4489 23.4714 23.6448 23.8804 -LIST temp[g=g5day,gy=g5day@asn] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - strip regrid on X: TEMP --> G5DAY @LIN - strip regrid on Y: TEMP --> XNTERMED @ASN - strip regrid on T: TEMP --> YNTERMED @LIN - found TEMP M: 90 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 94 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 2 3 - regrid TEMP M: 91 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M: 94 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 94 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M: 91 dset: 1 I: 100 106 J: 45 49 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY on X@LIN, on Y@ASN, on T@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:2 T: 20-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2294 24.1666 24.1789 24.3348 24.6565 25.0363 - 1N / 48: 24.0720 24.0100 23.9961 24.1004 24.3654 24.6946 - 0.67N / 47: 23.9687 23.9085 23.8682 23.9032 24.0827 24.3496 - 0.33N / 46: 23.9312 23.8643 23.7997 23.7720 23.8569 24.0495 - 0 / 45: 23.9912 23.9110 23.8200 23.7410 23.7390 23.8465 - ---- K:2 Z: 15 - 1.33N / 49: 23.9767 23.9044 23.9159 24.0764 24.4158 24.8366 - 1N / 48: 23.7576 23.6884 23.6775 23.7944 24.0849 24.4571 - 0.67N / 47: 23.5912 23.5281 23.4913 23.5379 23.7453 24.0569 - 0.33N / 46: 23.5068 23.4390 23.3774 23.3540 23.4579 23.6911 - 0 / 45: 23.5656 23.4806 23.3868 23.3018 23.3015 23.4336 - ---- L:3 T: 25-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2444 24.3616 24.6223 25.0230 25.3769 25.4884 - 1N / 48: 24.0827 24.1577 24.3539 24.6907 25.0127 25.1114 - 0.67N / 47: 23.9782 23.9985 24.1095 24.3557 24.6332 24.7370 - 0.33N / 46: 23.9336 23.8998 23.9253 24.0636 24.2777 24.3972 - 0 / 45: 23.9847 23.8969 23.8444 23.8789 24.0106 24.1269 - ---- K:2 Z: 15 - 1.33N / 49: 23.9764 24.0949 24.3635 24.7971 25.2062 25.3654 - 1N / 48: 23.7597 23.8423 24.0513 24.4207 24.7960 24.9418 - 0.67N / 47: 23.5993 23.6266 23.7505 24.0264 24.3532 24.5021 - 0.33N / 46: 23.5136 23.4812 23.5130 23.6709 23.9254 24.0877 - 0 / 45: 23.5643 23.4665 23.4073 23.4453 23.5998 23.7470 -LIST temp[g=g5day,gz=g5day@asn] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - found TEMP M: 42 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:2 T: 20-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3238 24.2570 24.2762 24.4494 24.7922 25.1903 - 1N / 48: 24.1507 24.0883 24.0875 24.2176 24.5110 24.8654 - 0.67N / 47: 24.0203 23.9592 23.9321 24.0018 24.2240 24.5221 - 0.33N / 46: 23.9499 23.8864 23.8340 23.8376 23.9698 24.1996 - 0 / 45: 23.9612 23.8877 23.8099 23.7565 23.7980 23.9480 - ---- K:2 Z: 15 - 1.33N / 49: 24.0913 24.0125 24.0276 24.2028 24.5625 25.0016 - 1N / 48: 23.8672 23.7964 23.7967 23.9354 24.2503 24.6469 - 0.67N / 47: 23.6744 23.6082 23.5844 23.6661 23.9151 24.2570 - 0.33N / 46: 23.5490 23.4835 23.4343 23.4459 23.6016 23.8740 - 0 / 45: 23.5362 23.4598 23.3821 23.3279 23.3797 23.5624 - ---- L:3 T: 25-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3350 24.4653 24.7499 25.1705 25.5289 25.6409 - 1N / 48: 24.1636 24.2597 24.4881 24.8569 25.1948 25.2999 - 0.67N / 47: 24.0305 24.0781 24.2317 24.5232 24.8229 24.9242 - 0.33N / 46: 23.9559 23.9492 24.0174 24.2096 24.4555 24.5671 - 0 / 45: 23.9591 23.8984 23.8848 23.9713 24.1442 24.2621 - ---- K:2 Z: 15 - 1.33N / 49: 24.0822 24.2113 24.5033 24.9571 25.3691 25.5280 - 1N / 48: 23.8680 23.9686 24.2074 24.6089 25.0011 25.1536 - 0.67N / 47: 23.6795 23.7345 23.9009 24.2235 24.5746 24.7220 - 0.33N / 46: 23.5565 23.5539 23.6318 23.8486 24.1393 24.2949 - 0 / 45: 23.5390 23.4739 23.4601 23.5581 23.7626 23.9173 -LIST temp[g=g5day,gt=g5day@asn] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - strip regrid on X: TEMP --> G5DAY @LIN - strip regrid on T: TEMP --> XNTERMED @ASN - found TEMP M: 90 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 91 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 3 - regrid XY - regrid TEMP M: 75 dset: 1 I: 100 105 J: 45 49 K: 1 2 L: 2 3 - -DELETE TEMP M: 91 dset: 1 I: 100 106 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY on X@LIN, on Y@LIN, on T@ASN - FILENAME : gtsa056_1.cdf - SUBSET : 6 by 5 by 2 by 2 points (LONGITUDE-LATITUDE-DEPTH (m)-TIME) - 130W 129W 128W 127W 126W 125W - 100 101 102 103 104 105 - ---- L:2 T: 20-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.3636 24.2466 24.2047 24.2944 24.5700 24.9834 - 1N / 48: 24.1823 24.0808 24.0293 24.0856 24.3131 24.6721 - 0.67N / 47: 24.0429 23.9555 23.8925 23.9012 24.0590 24.3508 - 0.33N / 46: 23.9628 23.8852 23.8134 23.7743 23.8464 24.0554 - 0 / 45: 23.9650 23.8885 23.8048 23.7281 23.7207 23.8377 - ---- K:2 Z: 15 - 1.33N / 49: 24.1405 24.0053 23.9571 24.0466 24.3282 24.7726 - 1N / 48: 23.9068 23.7900 23.7358 23.7995 24.0412 24.4324 - 0.67N / 47: 23.7030 23.6045 23.5401 23.5583 23.7383 24.0672 - 0.33N / 46: 23.5647 23.4813 23.4100 23.3756 23.4665 23.7136 - 0 / 45: 23.5403 23.4591 23.3754 23.2961 23.2938 23.4386 - ---- L:3 T: 25-JAN-1982 00:00 - ---- K:1 Z: 5 - 1.33N / 49: 24.2757 24.2696 24.3629 24.6374 25.0615 25.4411 - 1N / 48: 24.1124 24.0973 24.1580 24.3776 24.7508 25.0998 - 0.67N / 47: 23.9930 23.9638 23.9801 24.1238 24.4241 24.7297 - 0.33N / 46: 23.9344 23.8880 23.8589 23.9144 24.1193 24.3743 - 0 / 45: 23.9566 23.8866 23.8159 23.7910 23.8916 24.0818 - ---- K:2 Z: 15 - 1.33N / 49: 24.0317 24.0211 24.1131 24.3923 24.8465 25.2791 - 1N / 48: 23.8191 23.8041 23.8706 24.1001 24.5038 24.9069 - 0.67N / 47: 23.6398 23.6127 23.6381 23.7968 24.1294 24.4871 - 0.33N / 46: 23.5298 23.4863 23.4638 23.5312 23.7653 24.0683 - 0 / 45: 23.5312 23.4606 23.3902 23.3664 23.4839 23.7124 - -! all 4 axes different -LIST temp[g=g5_10@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @AAV - strip regrid on Z: TEMP --> XNTERMED @AVE - strip regrid on T: TEMP --> ZNTERMED @AVE - reading TEMP M: 91 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 68 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M: 39 dset: 1 I: 95 106 J: 45 50 K: 1 1 L: 2 3 - -DELETE TEMP M: 68 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M: 68 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 39 dset: 1 I: 95 106 J: 45 50 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10 on X@AAV, on Y@AAV, on Z@AVE, on T@AVE - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 23.8829 23.9742 24.1489 24.3750 24.6256 - 25-JAN-1982 00 / 3: 23.8850 23.9834 24.1657 24.3983 24.6503 -LIST temp[g=g5_10,gx=g5_10@ave] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - -DELETE TEMP M: 68 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @AVE - strip regrid on Y: TEMP --> XNTERMED @LIN - strip regrid on Z: TEMP --> YNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @LIN - found TEMP M: 91 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 68 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M: 39 dset: 1 I: 95 106 J: 45 50 K: 1 1 L: 2 3 - -DELETE TEMP M: 68 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 68 dset: 1 I: 95 106 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 39 dset: 1 I: 95 106 J: 45 50 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 39 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 68 dset: 1 I: 95 106 J: 45 49 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10 on X@AVE, on Y@LIN, on Z@LIN, on T@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 23.8838 23.9752 24.1501 24.3761 24.6265 - 25-JAN-1982 00 / 3: 23.8774 23.9728 24.1535 24.3857 24.6381 -LIST temp[g=g5_10,gy=g5_10@ave] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @LIN - strip regrid on Y: TEMP --> XNTERMED @AVE - strip regrid on Z: TEMP --> YNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @LIN - found TEMP M: 91 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 68 dset: 1 I: 100 101 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M: 20 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 - -DELETE TEMP M: 68 dset: 1 I: 100 101 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 68 dset: 1 I: 100 101 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 20 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 20 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 68 dset: 1 I: 100 101 J: 45 49 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10 on X@LIN, on Y@AVE, on Z@LIN, on T@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 23.7487 23.7495 23.8474 24.0089 24.2076 - 25-JAN-1982 00 / 3: 23.7491 23.7562 23.8550 24.0158 24.2086 -LIST temp[g=g5_10,gz=g5_10@ave] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @LIN - strip regrid on Z: TEMP --> XNTERMED @AVE - strip regrid on T: TEMP --> ZNTERMED @LIN - found TEMP M: 91 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 68 dset: 1 I: 100 101 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M: 46 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 - -DELETE TEMP M: 68 dset: 1 I: 100 101 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M: 68 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 46 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10 on X@LIN, on Y@LIN, on Z@AVE, on T@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 23.7487 23.7495 23.8474 24.0089 24.2076 - 25-JAN-1982 00 / 3: 23.7491 23.7562 23.8550 24.0158 24.2086 -LIST temp[g=g5_10,gt=g5_10@ave] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @LIN - strip regrid on Z: TEMP --> XNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @AVE - found TEMP M: 91 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 46 dset: 1 I: 100 101 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M: 47 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 - -DELETE TEMP M: 46 dset: 1 I: 100 101 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M: 46 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 47 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10 on X@LIN, on Y@LIN, on Z@LIN, on T@AVE - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 23.7485 23.7489 23.8463 24.0075 24.2057 - 25-JAN-1982 00 / 3: 23.7481 23.7620 23.8678 24.0343 24.2309 - -LIST temp[g=g5_10@asn] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - strip regrid on Z: TEMP --> YNTERMED @ASN - strip regrid on T: TEMP --> ZNTERMED @ASN - reading TEMP M: 47 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - regrid TEMP M: 34 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - regrid TEMP M:118 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 34 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 34 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M:118 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M:118 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 34 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10 on X@ASN, on Y@ASN, on Z@ASN, on T@ASN - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 29.5859 29.5797 29.5756 29.5662 29.5590 - 25-JAN-1982 00 / 3: 29.5787 29.5737 29.5698 29.5546 29.5421 -LIST temp[g=g5_10,gx=g5_10@asn] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @ASN - strip regrid on Y: TEMP --> XNTERMED @LIN - strip regrid on Z: TEMP --> YNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @LIN - reading TEMP M: 34 dset: 1 I: 12 12 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 83 dset: 1 I: 12 12 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M: 82 dset: 1 I: 12 12 J: 45 50 K: 1 1 L: 2 3 - -DELETE TEMP M: 83 dset: 1 I: 12 12 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 83 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 82 dset: 1 I: 12 12 J: 45 50 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 82 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 83 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10 on X@ASN, on Y@LIN, on Z@LIN, on T@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 29.5747 29.5654 29.5513 29.5344 29.5265 - 25-JAN-1982 00 / 3: 29.5636 29.5536 29.5355 29.5146 29.5054 -LIST temp[g=g5_10,gy=g5_10@asn] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @LIN - strip regrid on Y: TEMP --> XNTERMED @ASN - strip regrid on Z: TEMP --> YNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @LIN - found TEMP M: 91 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 83 dset: 1 I: 100 101 J: 45 49 K: 1 2 L: 2 3 - regrid TEMP M:100 dset: 1 I: 100 101 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 83 dset: 1 I: 100 101 J: 45 49 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 83 dset: 1 I: 100 101 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M:100 dset: 1 I: 100 101 J: 45 49 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M:100 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 83 dset: 1 I: 100 101 J: 45 49 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10 on X@LIN, on Y@ASN, on Z@LIN, on T@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 23.7784 23.7190 23.7799 23.9148 24.1031 - 25-JAN-1982 00 / 3: 23.7745 23.7236 23.7888 23.9212 24.1104 -LIST temp[g=g5_10,gz=g5_10@asn] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @LIN - strip regrid on Z: TEMP --> XNTERMED @ASN - strip regrid on T: TEMP --> ZNTERMED @LIN - found TEMP M: 91 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 83 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 - regrid TEMP M: 79 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 - -DELETE TEMP M: 83 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M: 83 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 79 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10 on X@LIN, on Y@LIN, on Z@ASN, on T@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 23.9612 23.9499 24.0203 24.1507 24.3238 - 25-JAN-1982 00 / 3: 23.9591 23.9559 24.0305 24.1636 24.3350 -LIST temp[g=g5_10,gt=g5_10@asn] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @LIN - strip regrid on Z: TEMP --> XNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @ASN - found TEMP M: 91 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M: 79 dset: 1 I: 100 101 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M: 67 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 - -DELETE TEMP M: 79 dset: 1 I: 100 101 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M: 79 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M: 67 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10 on X@LIN, on Y@LIN, on Z@LIN, on T@ASN - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 23.7527 23.7638 23.8729 24.0446 24.2520 - 25-JAN-1982 00 / 3: 23.7439 23.7321 23.8164 23.9658 24.1537 - -! unspecified regions -SET MODE IGNORE ! V.5 change -canc reg -set reg/l=1:3 ! x,y,z unspecified -load temp - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DT2 PSXT1 PSYT PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 1 160 J: 1 100 K: 1 27 L: 1 3 - reading TEMP M: 67 dset: 1 I: 1 160 J: 5 89 K: 1 2 L: 1 3 -load temp[g=u] - dealloc dynamic grid PS3DT2 PSXT1 PSYT PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 1 160 J: 1 100 K: 1 27 L: 1 3 - strip regrid on X: TEMP --> PS3DU2 @LIN - strip modulo-void-filling TEMP on X axis: 1 161 dset: 1 - found TEMP M: 67 dset: 1 I: 1 160 J: 5 89 K: 1 2 L: 1 3 - doing modulo-void-filling TEMP on X axis: 1 160 dset: 1 - regrid XY - regrid TEMP M: 49 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 -load temp[g=u@lin] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 1 160 J: 1 100 K: 1 27 L: 1 3 - strip regrid on X: TEMP --> PS3DU2 @LIN - strip modulo-void-filling TEMP on X axis: 1 161 dset: 1 - found TEMP M: 61 dset: 1 I: 1 161 J: 5 89 K: 1 2 L: 1 3 - doing modulo-void-filling TEMP on X axis: 1 160 dset: 1 - regrid XY - regrid TEMP M: 30 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - -load temp[g=u@ave] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 1 160 J: 1 100 K: 1 27 L: 1 3 - strip regrid on X: TEMP --> PS3DU2 @AAV - strip modulo-void-filling TEMP on X axis: 1 161 dset: 1 - found TEMP M: 40 dset: 1 I: 1 161 J: 5 89 K: 1 2 L: 1 3 - doing modulo-void-filling TEMP on X axis: 1 160 dset: 1 - regrid XY - regrid TEMP M: 17 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 -load temp[g=u,gx=u@ave] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 1 160 J: 1 100 K: 1 27 L: 1 3 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip regrid on X: TEMP --> PS3DU2 @AVE - strip modulo-void-filling TEMP on X axis: 1 161 dset: 1 - strip regrid on Y: TEMP --> XNTERMED @LIN - found TEMP M: 28 dset: 1 I: 1 161 J: 5 89 K: 1 2 L: 1 3 - regrid TEMP M: 15 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - doing modulo-void-filling TEMP on X axis: 1 160 dset: 1 - regrid TEMP M: 59 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - -DELETE TEMP M: 12 dset: 1 I: 1 161 J: 1 100 K: 1 2 L: 1 3 M: -999 -999 N: -999 -999 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 -load temp[g=u,gy=u@ave] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 1 160 J: 1 100 K: 1 27 L: 1 3 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip regrid on X: TEMP --> PS3DU2 @LIN - strip modulo-void-filling TEMP on X axis: 1 161 dset: 1 - strip regrid on Y: TEMP --> XNTERMED @AVE - found TEMP M: 28 dset: 1 I: 1 161 J: 5 89 K: 1 2 L: 1 3 - regrid TEMP M: 12 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - doing modulo-void-filling TEMP on X axis: 1 160 dset: 1 - regrid TEMP M: 95 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - -DELETE TEMP M: 23 dset: 1 I: 1 161 J: 1 100 K: 1 2 L: 1 3 M: -999 -999 N: -999 -999 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - -load temp[g=u@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 1 160 J: 1 100 K: 1 27 L: 1 3 - strip regrid on X: TEMP --> PS3DU2 @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - found TEMP M: 28 dset: 1 I: 1 161 J: 5 89 K: 1 2 L: 1 3 - regrid TEMP M: 23 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - regrid TEMP M: 11 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - -DELETE TEMP M: 23 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 M: -999 -999 N: -999 -999 -load temp[g=u,gx=u@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 1 160 J: 1 100 K: 1 27 L: 1 3 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip regrid on X: TEMP --> PS3DU2 @ASN - strip regrid on Y: TEMP --> XNTERMED @LIN - found TEMP M: 28 dset: 1 I: 1 161 J: 5 89 K: 1 2 L: 1 3 - regrid TEMP M: 23 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - regrid TEMP M: 10 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - -DELETE TEMP M: 23 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 M: -999 -999 N: -999 -999 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 -load temp[g=u,gy=u@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - eval EX#1 C: 4 dset: 1 I: 1 160 J: 1 100 K: 1 27 L: 1 3 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip regrid on X: TEMP --> PS3DU2 @LIN - strip modulo-void-filling TEMP on X axis: 1 161 dset: 1 - strip regrid on Y: TEMP --> XNTERMED @ASN - found TEMP M: 28 dset: 1 I: 1 161 J: 5 89 K: 1 2 L: 1 3 - regrid TEMP M: 23 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - doing modulo-void-filling TEMP on X axis: 1 160 dset: 1 - regrid TEMP M: 8 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - -DELETE TEMP M: 9 dset: 1 I: 1 161 J: 1 100 K: 1 2 L: 1 3 M: -999 -999 N: -999 -999 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - -canc reg -use gtsa056_2 !kob 4/99 -set reg/i=101:105/j=41:42 ! z,t unspecified -load temp[g=u] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - eval EX#1 C: 4 dset: 2 I: 101 105 J: 41 42 K: 1 27 L: 1 168 - strip regrid on X: TEMP --> PS3DU1 @LIN - reading TEMP M: 9 dset: 2 I: 101 106 J: 41 43 K: 1 2 L: 1 168 - regrid XY - regrid TEMP M: 4 dset: 2 I: 101 105 J: 41 42 K: 1 2 L: 1 168 - -load temp[g=u@ave] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - eval EX#1 C: 4 dset: 2 I: 101 105 J: 41 42 K: 1 27 L: 1 168 - strip regrid on X: TEMP --> PS3DU1 @AAV - found TEMP M: 9 dset: 2 I: 101 106 J: 41 43 K: 1 2 L: 1 168 - regrid XY - regrid TEMP M: 1 dset: 2 I: 101 105 J: 41 42 K: 1 2 L: 1 168 -load temp[g=u,gz=u@ave] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - eval EX#1 C: 4 dset: 2 I: 101 105 J: 41 42 K: 1 27 L: 1 168 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - strip regrid on X: TEMP --> PS3DU1 @LIN - found TEMP M: 9 dset: 2 I: 101 106 J: 41 43 K: 1 2 L: 1 168 - regrid XY - regrid TEMP M:103 dset: 2 I: 101 105 J: 41 42 K: 1 2 L: 1 168 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 -load temp[g=u,gt=u@ave] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - eval EX#1 C: 4 dset: 2 I: 101 105 J: 41 42 K: 1 27 L: 1 168 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - strip regrid on X: TEMP --> PS3DU1 @LIN - found TEMP M: 9 dset: 2 I: 101 106 J: 41 43 K: 1 2 L: 1 168 - regrid XY - regrid TEMP M: 97 dset: 2 I: 101 105 J: 41 42 K: 1 2 L: 1 168 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - -load temp[g=u@asn] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - eval EX#1 C: 4 dset: 2 I: 101 105 J: 41 42 K: 1 27 L: 1 168 - strip regrid on X: TEMP --> PS3DU1 @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - found TEMP M: 9 dset: 2 I: 101 106 J: 41 43 K: 1 2 L: 1 168 - regrid TEMP M: 88 dset: 2 I: 101 105 J: 41 42 K: 1 2 L: 1 168 - regrid TEMP M: 69 dset: 2 I: 101 105 J: 41 42 K: 1 2 L: 1 168 - -DELETE TEMP M: 88 dset: 2 I: 101 105 J: 41 42 K: 1 2 L: 1 168 M: -999 -999 N: -999 -999 -load temp[g=u,gz=u@asn] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - eval EX#1 C: 4 dset: 2 I: 101 105 J: 41 42 K: 1 27 L: 1 168 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - strip regrid on X: TEMP --> PS3DU1 @LIN - found TEMP M: 9 dset: 2 I: 101 106 J: 41 43 K: 1 2 L: 1 168 - regrid XY - regrid TEMP M: 88 dset: 2 I: 101 105 J: 41 42 K: 1 2 L: 1 168 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 -load temp[g=u,gt=u@asn] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - eval EX#1 C: 4 dset: 2 I: 101 105 J: 41 42 K: 1 27 L: 1 168 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - strip regrid on X: TEMP --> PS3DU1 @LIN - found TEMP M: 9 dset: 2 I: 101 106 J: 41 43 K: 1 2 L: 1 168 - regrid XY - regrid TEMP M: 64 dset: 2 I: 101 105 J: 41 42 K: 1 2 L: 1 168 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 -SET MODE/LAST IGNORE ! V.5 change - -! plot verifications -set mode interp ! regridding is also an interpolation -cancel viewports -set window/size=.5/aspect=.4 1 - -! X axis -use gtsa056_1 !kob 4/99 -set region/x=130E:90W/y=0/z=5/t=21-JAN-1982 -plot temp - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DT2 PSXT1 PSYT PSZT TIME2 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 1 140 J: 45 46 K: 1 1 L: 2 3 - found TEMP M: 28 dset: 1 I: 1 161 J: 5 89 K: 1 2 L: 1 3 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 76 complete -plot/over temp[g=u] - dealloc dynamic grid PS3DT2 PSXT1 PSYT PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 0 140 J: 44 45 K: 1 1 L: 2 3 - strip moduloing TEMP on X axis: 0 140 dset: 1 - found TEMP M: 30 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - doing moduloing TEMP on X axis: 1 140 dset: 1 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 77 complete -plot/over temp[g=g5day] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 0 140 J: 44 45 K: 1 1 L: 2 3 - strip moduloing TEMP on X axis: 0 140 dset: 1 - strip regrid on X: TEMP --> G5DAY @LIN - strip regrid on T: TEMP --> XNTERMED @LIN - reading TEMP M:102 dset: 1 I: 1 141 J: 44 46 K: 1 1 L: 2 5 - regrid TEMP M: 96 dset: 1 I: 1 141 J: 44 46 K: 1 1 L: 2 3 - regrid XY - regrid TEMP M: 93 dset: 1 I: 1 140 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M: 96 dset: 1 I: 1 141 J: 44 46 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing moduloing TEMP on X axis: 1 140 dset: 1 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 78 complete -plot/over temp[g=g5_10] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Z=5@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 7 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @LIN - strip moduloing TEMP on X axis: 0 141 dset: 1 - strip regrid on Z: TEMP --> XNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @LIN - reading TEMP M: 60 dset: 1 I: 1 141 J: 44 46 K: 1 2 L: 2 5 - regrid TEMP M: 54 dset: 1 I: 1 141 J: 44 46 K: 1 2 L: 2 3 - regrid TEMP M: 33 dset: 1 I: 1 141 J: 44 46 K: 1 1 L: 2 3 - -DELETE TEMP M: 54 dset: 1 I: 1 141 J: 44 46 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - doing moduloing TEMP on X axis: 1 141 dset: 1 - regrid XY - regrid TEMP M: 32 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M: 54 dset: 1 I: 0 141 J: 44 46 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[Z=5@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 79 complete -plot/over temp[g=u@ave] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 0 140 J: 44 45 K: 1 1 L: 2 3 - strip moduloing TEMP on X axis: 0 140 dset: 1 - found TEMP M: 17 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - doing moduloing TEMP on X axis: 1 140 dset: 1 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 80 complete -plot/over temp[g=g5day@ave] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 0 140 J: 44 45 K: 1 1 L: 2 3 - strip moduloing TEMP on X axis: 0 140 dset: 1 - strip regrid on X: TEMP --> G5DAY @AAV - strip regrid on T: TEMP --> XNTERMED @AVE - found TEMP M: 60 dset: 1 I: 1 141 J: 44 46 K: 1 2 L: 2 5 - regrid TEMP M: 62 dset: 1 I: 1 141 J: 44 46 K: 1 1 L: 2 3 - regrid XY - regrid TEMP M: 31 dset: 1 I: 1 140 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M: 62 dset: 1 I: 1 141 J: 44 46 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing moduloing TEMP on X axis: 1 140 dset: 1 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 81 complete -plot/over temp[g=g5_10@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Z=5@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 7 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @AAV - strip moduloing TEMP on X axis: 0 146 dset: 1 - strip regrid on Z: TEMP --> XNTERMED @AVE - strip regrid on T: TEMP --> ZNTERMED @AVE - reading TEMP M: 66 dset: 1 I: 1 146 J: 44 46 K: 1 2 L: 2 5 - regrid TEMP M: 63 dset: 1 I: 1 146 J: 44 46 K: 1 2 L: 2 3 - regrid TEMP M: 48 dset: 1 I: 1 146 J: 44 46 K: 1 1 L: 2 3 - -DELETE TEMP M: 63 dset: 1 I: 1 146 J: 44 46 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - doing moduloing TEMP on X axis: 1 146 dset: 1 - regrid XY - regrid TEMP M: 36 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M: 63 dset: 1 I: 0 146 J: 44 46 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[Z=5@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 82 complete -plot/over temp[g=u@asn] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 0 140 J: 44 45 K: 1 1 L: 2 3 - strip moduloing TEMP on X axis: 0 140 dset: 1 - found TEMP M: 11 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - doing moduloing TEMP on X axis: 1 140 dset: 1 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 83 complete -plot/over temp[g=g5day@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 0 140 J: 44 45 K: 1 1 L: 2 3 - strip moduloing TEMP on X axis: 0 140 dset: 1 - strip regrid on X: TEMP --> G5DAY @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - strip regrid on T: TEMP --> YNTERMED @ASN - found TEMP M: 66 dset: 1 I: 1 146 J: 44 46 K: 1 2 L: 2 5 - regrid TEMP M: 70 dset: 1 I: 1 140 J: 44 45 K: 1 1 L: 2 3 - regrid TEMP M: 53 dset: 1 I: 1 140 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M: 70 dset: 1 I: 1 140 J: 44 45 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 70 dset: 1 I: 1 140 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M: 53 dset: 1 I: 1 140 J: 44 45 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing moduloing TEMP on X axis: 1 140 dset: 1 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 84 complete -plot/over temp[g=u,gx=u@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 0 140 J: 44 45 K: 1 1 L: 2 3 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip moduloing TEMP on X axis: 0 140 dset: 1 - found TEMP M: 59 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - doing moduloing TEMP on X axis: 1 140 dset: 1 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 85 complete -plot/over temp[g=g5day,gx=g5day@ave] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 0 140 J: 44 45 K: 1 1 L: 2 3 - strip moduloing TEMP on X axis: 0 140 dset: 1 - strip regrid on X: TEMP --> G5DAY @AVE - strip regrid on Y: TEMP --> XNTERMED @LIN - strip regrid on T: TEMP --> YNTERMED @LIN - found TEMP M: 66 dset: 1 I: 1 146 J: 44 46 K: 1 2 L: 2 5 - regrid TEMP M:104 dset: 1 I: 1 141 J: 44 46 K: 1 1 L: 2 3 - regrid TEMP M: 99 dset: 1 I: 1 141 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M:104 dset: 1 I: 1 141 J: 44 46 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M:104 dset: 1 I: 1 140 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M: 99 dset: 1 I: 1 141 J: 44 45 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing moduloing TEMP on X axis: 1 140 dset: 1 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 86 complete -plot/over temp[g=g5_10,gx=g5_10@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Z=5@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 7 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @AVE - strip moduloing TEMP on X axis: 0 146 dset: 1 - strip regrid on Y: TEMP --> XNTERMED @LIN - strip regrid on Z: TEMP --> YNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @LIN - found TEMP M: 66 dset: 1 I: 1 146 J: 44 46 K: 1 2 L: 2 5 - regrid TEMP M: 71 dset: 1 I: 1 146 J: 44 46 K: 1 2 L: 2 3 - regrid TEMP M: 57 dset: 1 I: 1 146 J: 44 46 K: 1 1 L: 2 3 - -DELETE TEMP M: 71 dset: 1 I: 1 146 J: 44 46 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 71 dset: 1 I: 1 146 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M: 57 dset: 1 I: 1 146 J: 44 46 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing moduloing TEMP on X axis: 1 146 dset: 1 - regrid TEMP M: 55 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M: 57 dset: 1 I: 0 146 J: 44 45 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[Z=5@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 87 complete -plot/over temp[g=g5_10@asn] ! invalid interpretation of data - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Z=5@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - eval EX#1 C: 7 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - strip regrid on Z: TEMP --> YNTERMED @ASN - strip regrid on T: TEMP --> ZNTERMED @ASN - found TEMP M: 66 dset: 1 I: 1 146 J: 44 46 K: 1 2 L: 2 5 - regrid TEMP M: 26 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 - regrid TEMP M: 22 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M: 26 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 26 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M: 22 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M: 22 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 - -DELETE TEMP M: 26 dset: 1 I: 2 16 J: 44 45 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[Z=5@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 88 complete - -! Y axis -set region/x=180/y=20s:20n/z=5/t=21-JAN-1982 -plot temp - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DT2 PSXT1 PSYT PSZT TIME2 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[X=180E@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 50 51 J: 5 88 K: 1 1 L: 2 3 - found TEMP M: 28 dset: 1 I: 1 161 J: 5 89 K: 1 2 L: 1 3 - doing --> TEMP[X=180E@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 89 complete -plot/over temp[g=u] - dealloc dynamic grid PS3DT2 PSXT1 PSYT PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - eval EX#1 C: 5 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - found TEMP M: 30 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 90 complete -plot/over temp[g=g5day] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - eval EX#1 C: 5 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5DAY @LIN - strip regrid on T: TEMP --> XNTERMED @LIN - reading TEMP M: 51 dset: 1 I: 50 51 J: 5 89 K: 1 1 L: 2 5 - regrid TEMP M: 50 dset: 1 I: 50 51 J: 5 89 K: 1 1 L: 2 3 - regrid XY - regrid TEMP M: 37 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M: 50 dset: 1 I: 50 51 J: 5 89 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 91 complete -plot/over temp[g=g5_10] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Z=5@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @LIN - strip regrid on Z: TEMP --> XNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @LIN - reading TEMP M: 18 dset: 1 I: 50 51 J: 5 89 K: 1 2 L: 2 5 - regrid TEMP M: 3 dset: 1 I: 50 51 J: 5 89 K: 1 2 L: 2 3 - regrid TEMP M:122 dset: 1 I: 50 51 J: 5 89 K: 1 1 L: 2 3 - -DELETE TEMP M: 3 dset: 1 I: 50 51 J: 5 89 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M: 3 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M:122 dset: 1 I: 50 51 J: 5 89 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing --> TEMP[Z=5@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 92 complete -plot/over temp[g=u@ave] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - eval EX#1 C: 5 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - found TEMP M: 17 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 93 complete -plot/over temp[g=g5day@ave] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - eval EX#1 C: 5 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5DAY @AAV - strip regrid on T: TEMP --> XNTERMED @AVE - found TEMP M: 18 dset: 1 I: 50 51 J: 5 89 K: 1 2 L: 2 5 - regrid TEMP M: 81 dset: 1 I: 50 51 J: 5 89 K: 1 1 L: 2 3 - regrid XY - regrid TEMP M: 65 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M: 81 dset: 1 I: 50 51 J: 5 89 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 94 complete -plot/over temp[g=g5_10@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Z=5@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @AAV - strip regrid on Z: TEMP --> XNTERMED @AVE - strip regrid on T: TEMP --> ZNTERMED @AVE - reading TEMP M: 44 dset: 1 I: 45 56 J: 5 89 K: 1 2 L: 2 5 - regrid TEMP M: 24 dset: 1 I: 45 56 J: 5 89 K: 1 2 L: 2 3 - regrid TEMP M: 21 dset: 1 I: 45 56 J: 5 89 K: 1 1 L: 2 3 - -DELETE TEMP M: 24 dset: 1 I: 45 56 J: 5 89 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M: 24 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M: 21 dset: 1 I: 45 56 J: 5 89 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing --> TEMP[Z=5@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 95 complete -plot/over temp[g=u@asn] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - eval EX#1 C: 5 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - found TEMP M: 11 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 96 complete -plot/over temp[g=g5day@asn] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - eval EX#1 C: 5 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5DAY @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - strip regrid on T: TEMP --> YNTERMED @ASN - found TEMP M: 44 dset: 1 I: 45 56 J: 5 89 K: 1 2 L: 2 5 - regrid TEMP M:125 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - regrid TEMP M:126 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M:125 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M:125 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M:126 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 97 complete -plot/over temp[g=u,gy=u@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - eval EX#1 C: 5 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - allocate dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - found TEMP M: 95 dset: 1 I: 1 160 J: 1 100 K: 1 2 L: 1 3 - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 98 complete -plot/over temp[g=g5day,gy=g5day@ave] - dealloc dynamic grid PS3DU2 PSXU PSYU PSZT TIME2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - eval EX#1 C: 5 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5DAY @LIN - strip regrid on Y: TEMP --> XNTERMED @AVE - strip regrid on T: TEMP --> YNTERMED @LIN - found TEMP M: 44 dset: 1 I: 45 56 J: 5 89 K: 1 2 L: 2 5 - regrid TEMP M:128 dset: 1 I: 50 51 J: 5 89 K: 1 1 L: 2 3 - regrid TEMP M:129 dset: 1 I: 50 51 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M:128 dset: 1 I: 50 51 J: 5 89 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M:128 dset: 1 I: 50 50 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M:129 dset: 1 I: 50 51 J: 5 88 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 99 complete -plot/over temp[g=g5_10,gy=g5_10@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Z=5@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @LIN - strip regrid on Y: TEMP --> XNTERMED @AVE - strip regrid on Z: TEMP --> YNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @LIN - found TEMP M: 44 dset: 1 I: 45 56 J: 5 89 K: 1 2 L: 2 5 - regrid TEMP M:130 dset: 1 I: 50 51 J: 5 89 K: 1 2 L: 2 3 - regrid TEMP M:131 dset: 1 I: 50 51 J: 5 89 K: 1 1 L: 2 3 - -DELETE TEMP M:130 dset: 1 I: 50 51 J: 5 89 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M:130 dset: 1 I: 50 51 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M:131 dset: 1 I: 50 51 J: 5 89 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M:131 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M:130 dset: 1 I: 50 51 J: 5 88 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing --> TEMP[Z=5@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 100 complete -plot/over temp[g=g5_10@asn] ! invalid interpretation of data - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=21-JAN-198200:00@ITP,D=1] - strip --> EX#1[Z=5@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - strip regrid on Z: TEMP --> YNTERMED @ASN - strip regrid on T: TEMP --> ZNTERMED @ASN - found TEMP M: 28 dset: 1 I: 1 161 J: 5 89 K: 1 2 L: 1 3 - regrid TEMP M:133 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 - regrid TEMP M:134 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M:133 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M:133 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M:134 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M:134 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 - -DELETE TEMP M:133 dset: 1 I: 7 7 J: 5 88 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - doing --> TEMP[Z=5@ITP,D=1] - doing --> TEMP[T=21-JAN-198200:00@ITP,D=1] -setting up plot -PPL plot 101 complete - -! T axis -use gtsa056_2 !kob 4/99 -set region/x=180W/y=0/z=5/t=21-JAN-1982:13-JUN-1983 -load temp[i=50:51,j=45:56,k=1:2,l=1:172] ! preload to save time - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DT1 PSXT1 PSYT PSZT TIME1 - eval EX#1 C: 4 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - strip moduloing TEMP on T axis: 1 172 dset: 2 - reading TEMP M:136 dset: 2 I: 50 51 J: 45 50 K: 1 2 L: 1 168 - doing moduloing TEMP on T axis: 1 168 dset: 2 -plot temp - dealloc dynamic grid PS3DT1 PSXT1 PSYT PSZT TIME1 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DT1 PSXT1 PSYT PSZT TIME1 - strip --> EX#1[Y=0@ITP,D=2] - strip --> EX#1[X=180E@ITP,D=2] - eval EX#1 C: 6 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 3 170 - found TEMP M:137 dset: 2 I: 50 51 J: 45 50 K: 1 2 L: 1 172 - doing --> TEMP[X=180E@ITP,D=2] - doing --> TEMP[Y=0@ITP,D=2] -setting up plot -PPL plot 102 complete -plot/over temp[g=u] - dealloc dynamic grid PS3DT1 PSXT1 PSYT PSZT TIME1 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - strip --> EX#1[Y=0@ITP,D=2] - eval EX#1 C: 5 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 3 170 - strip moduloing TEMP on T axis: 3 170 dset: 2 - strip regrid on X: TEMP --> PS3DU1 @LIN - reading TEMP M:140 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 3 168 - regrid XY - regrid TEMP M:141 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 3 168 - doing moduloing TEMP on T axis: 3 168 dset: 2 - strip regrid on X: TEMP --> PS3DU1 @LIN - reading TEMP M:143 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 1 2 - regrid XY - regrid TEMP M:144 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 1 2 - doing moduloing TEMP on T axis: 1 2 dset: 2 - doing --> TEMP[Y=0@ITP,D=2] -setting up plot -PPL plot 103 complete -plot/over temp[g=g5day] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[Y=0@ITP,D=2] - eval EX#1 C: 5 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5DAY @LIN - strip regrid on T: TEMP --> XNTERMED @LIN - strip moduloing TEMP on T axis: 2 171 dset: 2 - reading TEMP M:146 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 1 168 - doing moduloing TEMP on T axis: 1 168 dset: 2 - regrid TEMP M:148 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 2 104 - regrid XY - regrid TEMP M:149 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 2 104 - -DELETE TEMP M:148 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 - doing --> TEMP[Y=0@ITP,D=2] -setting up plot -PPL plot 104 complete -plot/over temp[g=g5_10] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[Z=5@ITP,D=2] - strip --> EX#1[Y=0@ITP,D=2] - eval EX#1 C: 6 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5_10 @LIN - strip regrid on Z: TEMP --> XNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @LIN - strip moduloing TEMP on T axis: 2 171 dset: 2 - reading TEMP M:150 dset: 2 I: 50 51 J: 44 46 K: 1 2 L: 1 168 - doing moduloing TEMP on T axis: 1 168 dset: 2 - regrid TEMP M:152 dset: 2 I: 50 51 J: 44 46 K: 1 2 L: 2 104 - regrid TEMP M:153 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 2 104 - -DELETE TEMP M:152 dset: 2 I: 50 51 J: 44 46 K: 1 2 L: 2 104 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M:152 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 - -DELETE TEMP M:153 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 - doing --> TEMP[Y=0@ITP,D=2] - doing --> TEMP[Z=5@ITP,D=2] -setting up plot -PPL plot 105 complete -plot/over temp[g=u@ave] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - strip --> EX#1[Y=0@ITP,D=2] - eval EX#1 C: 5 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 3 170 - strip moduloing TEMP on T axis: 3 170 dset: 2 - strip regrid on X: TEMP --> PS3DU1 @AAV - found TEMP M:151 dset: 2 I: 50 51 J: 44 46 K: 1 2 L: 2 171 - regrid XY - regrid TEMP M:155 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 3 168 - doing moduloing TEMP on T axis: 3 168 dset: 2 - strip regrid on X: TEMP --> PS3DU1 @AAV - found TEMP M:150 dset: 2 I: 50 51 J: 44 46 K: 1 2 L: 1 168 - regrid XY - regrid TEMP M:157 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 1 2 - doing moduloing TEMP on T axis: 1 2 dset: 2 - doing --> TEMP[Y=0@ITP,D=2] -setting up plot -PPL plot 106 complete -plot/over temp[g=g5day@ave] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[Y=0@ITP,D=2] - eval EX#1 C: 5 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5DAY @AAV - strip regrid on T: TEMP --> XNTERMED @AVE - found TEMP M:151 dset: 2 I: 50 51 J: 44 46 K: 1 2 L: 2 171 - regrid TEMP M:159 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 2 104 - regrid XY - regrid TEMP M:160 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 2 104 - -DELETE TEMP M:159 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 - doing --> TEMP[Y=0@ITP,D=2] -setting up plot -PPL plot 107 complete -plot/over temp[g=g5_10@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[Z=5@ITP,D=2] - strip --> EX#1[Y=0@ITP,D=2] - eval EX#1 C: 6 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5_10 @AAV - strip regrid on Z: TEMP --> XNTERMED @AVE - strip regrid on T: TEMP --> ZNTERMED @AVE - strip moduloing TEMP on T axis: 2 171 dset: 2 - reading TEMP M:161 dset: 2 I: 45 56 J: 44 46 K: 1 2 L: 1 168 - doing moduloing TEMP on T axis: 1 168 dset: 2 - regrid TEMP M:163 dset: 2 I: 45 56 J: 44 46 K: 1 2 L: 2 104 - regrid TEMP M:164 dset: 2 I: 45 56 J: 44 46 K: 1 1 L: 2 104 - -DELETE TEMP M:163 dset: 2 I: 45 56 J: 44 46 K: 1 2 L: 2 104 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M:163 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 - -DELETE TEMP M:164 dset: 2 I: 45 56 J: 44 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 - doing --> TEMP[Y=0@ITP,D=2] - doing --> TEMP[Z=5@ITP,D=2] -setting up plot -PPL plot 108 complete -plot/over temp[g=u@asn] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - strip --> EX#1[Y=0@ITP,D=2] - eval EX#1 C: 5 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 3 170 - strip moduloing TEMP on T axis: 3 170 dset: 2 - strip regrid on X: TEMP --> PS3DU1 @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - found TEMP M:162 dset: 2 I: 45 56 J: 44 46 K: 1 2 L: 2 171 - regrid TEMP M:166 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 3 168 - regrid TEMP M:167 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 3 168 - -DELETE TEMP M:166 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 3 168 M: -999 -999 N: -999 -999 - doing moduloing TEMP on T axis: 3 168 dset: 2 - strip regrid on X: TEMP --> PS3DU1 @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - found TEMP M:161 dset: 2 I: 45 56 J: 44 46 K: 1 2 L: 1 168 - regrid TEMP M:168 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 1 2 - regrid TEMP M:169 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 1 2 - -DELETE TEMP M:168 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 1 2 M: -999 -999 N: -999 -999 - doing moduloing TEMP on T axis: 1 2 dset: 2 - doing --> TEMP[Y=0@ITP,D=2] -setting up plot -PPL plot 109 complete -plot/over temp[g=g5_10@asn] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[Z=5@ITP,D=2] - strip --> EX#1[Y=0@ITP,D=2] - eval EX#1 C: 6 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5_10 @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - strip regrid on Z: TEMP --> YNTERMED @ASN - strip regrid on T: TEMP --> ZNTERMED @ASN - reading TEMP M:170 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 - regrid TEMP M:171 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 - regrid TEMP M:172 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 - -DELETE TEMP M:171 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 - regrid TEMP M:171 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 - -DELETE TEMP M:172 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 - regrid TEMP M:172 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 - -DELETE TEMP M:171 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 - doing --> TEMP[Y=0@ITP,D=2] - doing --> TEMP[Z=5@ITP,D=2] -setting up plot -PPL plot 110 complete -plot/over temp[g=u,gt=u@ave] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - strip --> EX#1[Y=0@ITP,D=2] - eval EX#1 C: 5 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 3 170 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - found TEMP M:142 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 3 170 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - doing --> TEMP[Y=0@ITP,D=2] -setting up plot -PPL plot 111 complete -plot/over temp[g=g5day,gt=g5day@ave] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT TIME1 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[Y=0@ITP,D=2] - eval EX#1 C: 5 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5DAY @LIN - strip regrid on T: TEMP --> XNTERMED @AVE - found TEMP M:162 dset: 2 I: 45 56 J: 44 46 K: 1 2 L: 2 171 - regrid TEMP M:175 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 2 104 - regrid XY - regrid TEMP M:176 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 2 104 - -DELETE TEMP M:175 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 - doing --> TEMP[Y=0@ITP,D=2] -setting up plot -PPL plot 112 complete -plot/over temp[g=g5_10,gt=g5_10@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[Z=5@ITP,D=2] - strip --> EX#1[Y=0@ITP,D=2] - eval EX#1 C: 6 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5_10 @LIN - strip regrid on Z: TEMP --> XNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @AVE - found TEMP M:162 dset: 2 I: 45 56 J: 44 46 K: 1 2 L: 2 171 - regrid TEMP M:177 dset: 2 I: 50 51 J: 44 46 K: 1 2 L: 2 104 - regrid TEMP M:178 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 2 104 - -DELETE TEMP M:177 dset: 2 I: 50 51 J: 44 46 K: 1 2 L: 2 104 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M:177 dset: 2 I: 7 7 J: 44 45 K: 1 1 L: 2 104 - -DELETE TEMP M:178 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 - doing --> TEMP[Y=0@ITP,D=2] - doing --> TEMP[Z=5@ITP,D=2] -setting up plot -PPL plot 113 complete -plot/over temp[g=g5day,gt=g5day@asn] ! invalid interpretation of data - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[Y=0@ITP,D=2] - eval EX#1 C: 5 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5DAY @LIN - strip regrid on T: TEMP --> XNTERMED @ASN - found TEMP M:162 dset: 2 I: 45 56 J: 44 46 K: 1 2 L: 2 171 - regrid TEMP M:180 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 2 104 - regrid XY - regrid TEMP M:181 dset: 2 I: 50 50 J: 44 45 K: 1 1 L: 2 104 - -DELETE TEMP M:180 dset: 2 I: 50 51 J: 44 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 - doing --> TEMP[Y=0@ITP,D=2] -setting up plot -PPL plot 114 complete - -set mode/last interp -cancel region - -! 1/00 additions to check details of @AVE bevavior -define axis/x=1.1:7.1:1 xoffset -define axis/x=5/npoints=1 x1pt -define axis/x=5:6:1 x2pt - -! test 1D regrid -let a1 = x[gx=x1pt] ! single point -let a2 = x[gx=x2pt] - -list a1[gx=xoffset@ave] - dealloc dynamic grid G5DAY PSXU PSYU PSZT TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A1 C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G009) X1PT NORMAL NORMAL NORMAL - dealloc dynamic grid (G009) X1PT NORMAL NORMAL NORMAL - allocate dynamic grid (G009) X1PT NORMAL NORMAL NORMAL - allocate dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - dealloc dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - allocate dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - strip regrid on X: A1 --> (G011) @AVE - eval A1 C: 7 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G009) X1PT NORMAL NORMAL NORMAL - pseudo X M:182 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G009) X1PT NORMAL NORMAL NORMAL - regrid A1 M:184 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - VARIABLE : X[GX=X1PT] - regrid: 1 delta on X@AVE - SUBSET : 7 points (X) - 1.1 / 1: .... - 2.1 / 2: .... - 3.1 / 3: .... - 4.1 / 4: 5.00000 - 5.1 / 5: 5.00000 - 6.1 / 6: .... - 7.1 / 7: .... -list a1[gx=xoffset@sum] ! should sum to 5 - -DELETE X M:182 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - -DELETE A1 M:184 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - dealloc dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - allocate dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - strip regrid on X: A1 --> (G011) @SUM - found A1 M:183 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - regrid A1 M:184 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - VARIABLE : X[GX=X1PT] - regrid: 1 delta on X@SUM - SUBSET : 7 points (X) - 1.1 / 1: .... - 2.1 / 2: .... - 3.1 / 3: .... - 4.1 / 4: 0.50000 - 5.1 / 5: 4.50000 - 6.1 / 6: .... - 7.1 / 7: .... -list a1[gx=xoffset@var] ! should be all missing - dealloc dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - -DELETE A1 M:184 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - dealloc dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - allocate dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - strip regrid on X: A1 --> (G011) @VAR - found A1 M:183 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - regrid A1 M:184 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - VARIABLE : Variance of X[GX=X1PT] - regrid: 1 delta on X@VAR - SUBSET : 7 points (X) - 1.1 / 1:.... - 2.1 / 2:.... - 3.1 / 3:.... - 4.1 / 4:.... - 5.1 / 5:.... - 6.1 / 6:.... - 7.1 / 7:.... - -list a2[gx=xoffset@ave] - dealloc dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - -DELETE A1 M:184 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A2 C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - dealloc dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - allocate dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - allocate dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - dealloc dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - allocate dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - strip regrid on X: A2 --> (G006) @AVE - eval A2 C: 7 dset: 0 I: 1 2 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - pseudo X M:184 dset: 0 I: 1 2 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - regrid A2 M:185 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - VARIABLE : X[GX=X2PT] - regrid: 1 delta on X@AVE - SUBSET : 7 points (X) - 1.1 / 1: .... - 2.1 / 2: .... - 3.1 / 3: .... - 4.1 / 4: 5.00000 - 5.1 / 5: 5.10000 - 6.1 / 6: 6.00000 - 7.1 / 7: .... -list a2[gx=xoffset@sum] ! should sum to 5+6=11 - -DELETE X M:184 dset: 0 I: 1 2 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - -DELETE A2 M:185 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - dealloc dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - allocate dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - strip regrid on X: A2 --> (G006) @SUM - found A2 M:182 dset: 0 I: 1 2 J: -999 -999 K: -999 -999 L: -999 -999 - regrid A2 M:185 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - VARIABLE : X[GX=X2PT] - regrid: 1 delta on X@SUM - SUBSET : 7 points (X) - 1.1 / 1: .... - 2.1 / 2: .... - 3.1 / 3: .... - 4.1 / 4: 0.50000 - 5.1 / 5: 5.10000 - 6.1 / 6: 5.40000 - 7.1 / 7: .... -list a2[gx=xoffset@var] - dealloc dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - -DELETE A2 M:185 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - dealloc dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - allocate dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - strip regrid on X: A2 --> (G006) @VAR - found A2 M:182 dset: 0 I: 1 2 J: -999 -999 K: -999 -999 L: -999 -999 - regrid A2 M:185 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - VARIABLE : Variance of X[GX=X2PT] - regrid: 1 delta on X@VAR - SUBSET : 7 points (X) - 1.1 / 1: .... - 2.1 / 2: .... - 3.1 / 3: .... - 4.1 / 4: .... - 5.1 / 5: 0.0900000 - 6.1 / 6: .... - 7.1 / 7: .... - -! test 2D regrid -define axis/y=1.1:7.1:1 yoffset -define axis/y=5/npoints=1 y1pt -define axis/y=5:6:1 y2pt - -let a1 = x[gx=x1pt]+y[gy=y1pt] - dealloc dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - -DELETE A2 M:185 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE A2 M:182 dset: 0 I: 1 2 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - -DELETE A1 M:183 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G009) X1PT NORMAL NORMAL NORMAL -let a2 = x[gx=x2pt]+y[gy=y2pt] - -list a1[gx=xoffset@ave, gy=yoffset@ave] - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A1 C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G009) NORMAL Y1PT NORMAL NORMAL - dealloc dynamic grid (G009) NORMAL Y1PT NORMAL NORMAL - allocate dynamic grid (G009) X1PT NORMAL NORMAL NORMAL - dealloc dynamic grid (G009) X1PT NORMAL NORMAL NORMAL - allocate dynamic grid (G009) X1PT Y1PT NORMAL NORMAL - allocate dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - dealloc dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - allocate dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - strip regrid on X: A1 --> (G011) @AVE - strip regrid on Y: A1 --> XNTERMED @AVE - eval A1 C: 8 dset: 0 I: 1 1 J: 1 1 K: -999 -999 L: -999 -999 - allocate dynamic grid (G006) X1PT NORMAL NORMAL NORMAL - pseudo X M:183 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G010) NORMAL Y1PT NORMAL NORMAL - pseudo Y M:182 dset: 0 I: -999 -999 J: 1 1 K: -999 -999 L: -999 -999 - -DELETE Y M:182 dset: 0 I: -999 -999 J: 1 1 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G010) NORMAL Y1PT NORMAL NORMAL - -DELETE X M:183 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G006) X1PT NORMAL NORMAL NORMAL - regrid A1 M:183 dset: 0 I: 1 1 J: 1 7 K: -999 -999 L: -999 -999 - regrid A1 M:182 dset: 0 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - -DELETE A1 M:183 dset: 0 I: 1 1 J: 1 7 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - dealloc dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - VARIABLE : X[GX=X1PT]+Y[GY=Y1PT] - regrid: 1 delta on X@AVE, 1 delta on Y@AVE - SUBSET : 7 by 7 points (X-Y) - 1.1 2.1 3.1 4.1 5.1 6.1 7.1 - 1 2 3 4 5 6 7 - 1.1 / 1: .... .... .... .... .... .... .... - 2.1 / 2: .... .... .... .... .... .... .... - 3.1 / 3: .... .... .... .... .... .... .... - 4.1 / 4: .... .... .... 10.0000 10.0000 .... .... - 5.1 / 5: .... .... .... 10.0000 10.0000 .... .... - 6.1 / 6: .... .... .... .... .... .... .... - 7.1 / 7: .... .... .... .... .... .... .... -list a1[gx=xoffset@sum, gy=yoffset@sum] ! should sum to 10 - dealloc dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - -DELETE A1 M:182 dset: 0 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - dealloc dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - allocate dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - strip regrid on X: A1 --> (G011) @SUM - strip regrid on Y: A1 --> XNTERMED @SUM - found A1 M:185 dset: 0 I: 1 1 J: 1 1 K: -999 -999 L: -999 -999 - regrid A1 M:182 dset: 0 I: 1 1 J: 1 7 K: -999 -999 L: -999 -999 - regrid A1 M:183 dset: 0 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - -DELETE A1 M:182 dset: 0 I: 1 1 J: 1 7 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - dealloc dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - VARIABLE : X[GX=X1PT]+Y[GY=Y1PT] - regrid: 1 delta on X@SUM, 1 delta on Y@SUM - SUBSET : 7 by 7 points (X-Y) - 1.1 2.1 3.1 4.1 5.1 6.1 7.1 - 1 2 3 4 5 6 7 - 1.1 / 1: .... .... .... .... .... .... .... - 2.1 / 2: .... .... .... .... .... .... .... - 3.1 / 3: .... .... .... .... .... .... .... - 4.1 / 4: .... .... .... 0.10000 0.90000 .... .... - 5.1 / 5: .... .... .... 0.90000 8.10000 .... .... - 6.1 / 6: .... .... .... .... .... .... .... - 7.1 / 7: .... .... .... .... .... .... .... -list a1[gx=xoffset@var, gy=yoffset@var] ! should be all missing - dealloc dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - -DELETE A1 M:183 dset: 0 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - dealloc dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - allocate dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - strip regrid on X: A1 --> (G011) @VAR - strip regrid on Y: A1 --> XNTERMED @VAR - found A1 M:185 dset: 0 I: 1 1 J: 1 1 K: -999 -999 L: -999 -999 - regrid A1 M:183 dset: 0 I: 1 1 J: 1 7 K: -999 -999 L: -999 -999 - regrid A1 M:182 dset: 0 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - -DELETE A1 M:183 dset: 0 I: 1 1 J: 1 7 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - dealloc dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - VARIABLE : Variance of X[GX=X1PT]+Y[GY=Y1PT] - regrid: 1 delta on X@VAR, 1 delta on Y@VAR - SUBSET : 7 by 7 points (X-Y) - 1.1 2.1 3.1 4.1 5.1 6.1 7.1 - 1 2 3 4 5 6 7 - 1.1 / 1:............................ - 2.1 / 2:............................ - 3.1 / 3:............................ - 4.1 / 4:............................ - 5.1 / 5:............................ - 6.1 / 6:............................ - 7.1 / 7:............................ - -list a2[gx=xoffset@ave, gy=yoffset@ave] - dealloc dynamic grid (G011) XOFFSET YOFFSET NORMAL NORMAL - -DELETE A1 M:182 dset: 0 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A2 C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) NORMAL Y2PT NORMAL NORMAL - dealloc dynamic grid (G011) NORMAL Y2PT NORMAL NORMAL - allocate dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - dealloc dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - allocate dynamic grid (G011) X2PT Y2PT NORMAL NORMAL - allocate dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - dealloc dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - allocate dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - allocate dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - strip regrid on X: A2 --> (G006) @AVE - strip regrid on Y: A2 --> XNTERMED @AVE - eval A2 C: 8 dset: 0 I: 1 2 J: 1 2 K: -999 -999 L: -999 -999 - allocate dynamic grid (G010) X2PT NORMAL NORMAL NORMAL - pseudo X M:182 dset: 0 I: 1 2 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G002) NORMAL Y2PT NORMAL NORMAL - pseudo Y M:183 dset: 0 I: -999 -999 J: 1 2 K: -999 -999 L: -999 -999 - -DELETE Y M:183 dset: 0 I: -999 -999 J: 1 2 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G002) NORMAL Y2PT NORMAL NORMAL - -DELETE X M:182 dset: 0 I: 1 2 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G010) X2PT NORMAL NORMAL NORMAL - regrid A2 M:182 dset: 0 I: 1 2 J: 1 7 K: -999 -999 L: -999 -999 - regrid A2 M:183 dset: 0 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - -DELETE A2 M:182 dset: 0 I: 1 2 J: 1 7 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - dealloc dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - VARIABLE : X[GX=X2PT]+Y[GY=Y2PT] - regrid: 1 delta on X@AVE, 1 delta on Y@AVE - SUBSET : 7 by 7 points (X-Y) - 1.1 2.1 3.1 4.1 5.1 6.1 7.1 - 1 2 3 4 5 6 7 - 1.1 / 1: .... .... .... .... .... .... .... - 2.1 / 2: .... .... .... .... .... .... .... - 3.1 / 3: .... .... .... .... .... .... .... - 4.1 / 4: .... .... .... 10.0000 10.1000 11.0000 .... - 5.1 / 5: .... .... .... 10.1000 10.2000 11.1000 .... - 6.1 / 6: .... .... .... 11.0000 11.1000 12.0000 .... - 7.1 / 7: .... .... .... .... .... .... .... -list a2[gx=xoffset@sum, gy=yoffset@sum] ! should sum to 10+11+11+12=44 - dealloc dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - -DELETE A2 M:183 dset: 0 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - dealloc dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - allocate dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - allocate dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - strip regrid on X: A2 --> (G006) @SUM - strip regrid on Y: A2 --> XNTERMED @SUM - found A2 M:184 dset: 0 I: 1 2 J: 1 2 K: -999 -999 L: -999 -999 - regrid A2 M:183 dset: 0 I: 1 2 J: 1 7 K: -999 -999 L: -999 -999 - regrid A2 M:182 dset: 0 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - -DELETE A2 M:183 dset: 0 I: 1 2 J: 1 7 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - dealloc dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - VARIABLE : X[GX=X2PT]+Y[GY=Y2PT] - regrid: 1 delta on X@SUM, 1 delta on Y@SUM - SUBSET : 7 by 7 points (X-Y) - 1.1 2.1 3.1 4.1 5.1 6.1 7.1 - 1 2 3 4 5 6 7 - 1.1 / 1: .... .... .... .... .... .... .... - 2.1 / 2: .... .... .... .... .... .... .... - 3.1 / 3: .... .... .... .... .... .... .... - 4.1 / 4: .... .... .... 0.1000 1.0100 0.9900 .... - 5.1 / 5: .... .... .... 1.0100 10.2000 9.9900 .... - 6.1 / 6: .... .... .... 0.9900 9.9900 9.7200 .... - 7.1 / 7: .... .... .... .... .... .... .... - ! NOTE: as of V5.1 NO xy_var trans exists. Need it to be complete ...! -list a2[gx=xoffset@var, gy=yoffset@var] - dealloc dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - -DELETE A2 M:182 dset: 0 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - dealloc dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - allocate dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - allocate dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - strip regrid on X: A2 --> (G006) @VAR - strip regrid on Y: A2 --> XNTERMED @VAR - found A2 M:184 dset: 0 I: 1 2 J: 1 2 K: -999 -999 L: -999 -999 - regrid A2 M:182 dset: 0 I: 1 2 J: 1 7 K: -999 -999 L: -999 -999 - regrid A2 M:183 dset: 0 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - -DELETE A2 M:182 dset: 0 I: 1 2 J: 1 7 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - dealloc dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - VARIABLE : Variance of X[GX=X2PT]+Y[GY=Y2PT] - regrid: 1 delta on X@VAR, 1 delta on Y@VAR - SUBSET : 7 by 7 points (X-Y) - 1.1 2.1 3.1 4.1 5.1 6.1 7.1 - 1 2 3 4 5 6 7 - 1.1 / 1: .... .... .... .... .... .... .... - 2.1 / 2: .... .... .... .... .... .... .... - 3.1 / 3: .... .... .... .... .... .... .... - 4.1 / 4: .... .... .... .... .... .... .... - 5.1 / 5: .... .... .... .... 0.000000 .... .... - 6.1 / 6: .... .... .... .... .... .... .... - 7.1 / 7: .... .... .... .... .... .... .... - -! 1/00 additions to check details of @MIN,@MAX bevavior -define axis/x=1.1:7.1:1 xoffset -define axis/x=5/npoints=1 x1pt -define axis/x=5:6:1 x2pt -define axis/x=5:6.5:.5 x4pt - -let a1 = x[gx=x1pt] - dealloc dynamic grid (G006) XOFFSET YOFFSET NORMAL NORMAL - -DELETE A2 M:183 dset: 0 I: 1 7 J: 1 7 K: -999 -999 L: -999 -999 - -DELETE A2 M:184 dset: 0 I: 1 2 J: 1 2 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) X2PT Y2PT NORMAL NORMAL - -DELETE A1 M:185 dset: 0 I: 1 1 J: 1 1 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G009) X1PT Y1PT NORMAL NORMAL -let a2 = x[gx=x2pt] -let a4 = x[gx=x4pt] - -list a1[gx=xoffset@max] - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A1 C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G009) X1PT NORMAL NORMAL NORMAL - dealloc dynamic grid (G009) X1PT NORMAL NORMAL NORMAL - allocate dynamic grid (G009) X1PT NORMAL NORMAL NORMAL - allocate dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - dealloc dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - allocate dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - strip regrid on X: A1 --> (G011) @MAX - eval A1 C: 7 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G009) X1PT NORMAL NORMAL NORMAL - pseudo X M:185 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G009) X1PT NORMAL NORMAL NORMAL - regrid A1 M:183 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - VARIABLE : X[GX=X1PT] - regrid: 1 delta on X@MAX - SUBSET : 7 points (X) - 1.1 / 1: .... - 2.1 / 2: .... - 3.1 / 3: .... - 4.1 / 4: .... - 5.1 / 5: 5.00000 - 6.1 / 6: .... - 7.1 / 7: .... -list a2[gx=xoffset@max] - -DELETE X M:185 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) XOFFSET NORMAL NORMAL NORMAL - -DELETE A1 M:183 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A2 C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - dealloc dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - allocate dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - allocate dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - dealloc dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - allocate dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - strip regrid on X: A2 --> (G006) @MAX - eval A2 C: 7 dset: 0 I: 1 2 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - pseudo X M:183 dset: 0 I: 1 2 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - regrid A2 M:182 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - VARIABLE : X[GX=X2PT] - regrid: 1 delta on X@MAX - SUBSET : 7 points (X) - 1.1 / 1: .... - 2.1 / 2: .... - 3.1 / 3: .... - 4.1 / 4: .... - 5.1 / 5: 5.00000 - 6.1 / 6: 6.00000 - 7.1 / 7: .... -list a4[gx=xoffset@max] - -DELETE X M:183 dset: 0 I: 1 2 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G006) XOFFSET NORMAL NORMAL NORMAL - -DELETE A2 M:182 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A4 C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G006) X4PT NORMAL NORMAL NORMAL - dealloc dynamic grid (G006) X4PT NORMAL NORMAL NORMAL - allocate dynamic grid (G006) X4PT NORMAL NORMAL NORMAL - allocate dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - dealloc dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - allocate dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - strip regrid on X: A4 --> (G010) @MAX - eval A4 C: 7 dset: 0 I: 1 4 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G006) X4PT NORMAL NORMAL NORMAL - pseudo X M:182 dset: 0 I: 1 4 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G006) X4PT NORMAL NORMAL NORMAL - regrid A4 M:186 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - VARIABLE : X[GX=X4PT] - regrid: 1 delta on X@MAX - SUBSET : 7 points (X) - 1.1 / 1: .... - 2.1 / 2: .... - 3.1 / 3: .... - 4.1 / 4: .... - 5.1 / 5: 5.50000 - 6.1 / 6: 6.50000 - 7.1 / 7: .... -list a4[gx=xoffset@min] - -DELETE X M:182 dset: 0 I: 1 4 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - -DELETE A4 M:186 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - dealloc dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - allocate dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - strip regrid on X: A4 --> (G010) @MIN - found A4 M:183 dset: 0 I: 1 4 J: -999 -999 K: -999 -999 L: -999 -999 - regrid A4 M:186 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - VARIABLE : X[GX=X4PT] - regrid: 1 delta on X@MIN - SUBSET : 7 points (X) - 1.1 / 1: .... - 2.1 / 2: .... - 3.1 / 3: .... - 4.1 / 4: .... - 5.1 / 5: 5.00000 - 6.1 / 6: 6.00000 - 7.1 / 7: .... -list a4[gx=xoffset@sum] ! 5+5.5+6+6.5=23 - dealloc dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - -DELETE A4 M:186 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - dealloc dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - allocate dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - strip regrid on X: A4 --> (G010) @SUM - found A4 M:183 dset: 0 I: 1 4 J: -999 -999 K: -999 -999 L: -999 -999 - regrid A4 M:186 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - VARIABLE : X[GX=X4PT] - regrid: 1 delta on X@SUM - SUBSET : 7 points (X) - 1.1 / 1: .... - 2.1 / 2: .... - 3.1 / 3: .... - 4.1 / 4: .... - 5.1 / 5: 8.8500 - 6.1 / 6: 12.2000 - 7.1 / 7: 1.9500 - -! round-off issues when source points lie on destination cell boundaries -define axis/x=1:5:1 x5 -define axis/x=0.5:5.5:1 x5_edges -let a5 = x[gx=x5_edges] -list a5[gx=x5@max] ! note: top dest axis point, only, looks at point above - dealloc dynamic grid (G010) XOFFSET NORMAL NORMAL NORMAL - -DELETE A4 M:186 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A5 C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) X5_EDGES NORMAL NORMAL NORMAL - dealloc dynamic grid (G010) X5_EDGES NORMAL NORMAL NORMAL - allocate dynamic grid (G010) X5_EDGES NORMAL NORMAL NORMAL - allocate dynamic grid (G002) X5 NORMAL NORMAL NORMAL - dealloc dynamic grid (G002) X5 NORMAL NORMAL NORMAL - allocate dynamic grid (G002) X5 NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G002) X5 NORMAL NORMAL NORMAL - strip regrid on X: A5 --> (G002) @MAX - eval A5 C: 7 dset: 0 I: 1 6 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G010) X5_EDGES NORMAL NORMAL NORMAL - pseudo X M:186 dset: 0 I: 1 6 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G010) X5_EDGES NORMAL NORMAL NORMAL - regrid A5 M:187 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G002) X5 NORMAL NORMAL NORMAL - VARIABLE : X[GX=X5_EDGES] - regrid: 1 delta on X@MAX - SUBSET : 5 points (X) - 1 / 1: 0.50000 - 2 / 2: 1.50000 - 3 / 3: 2.50000 - 4 / 4: 3.50000 - 5 / 5: 5.50000 -let a5 = x[gx=x5_edges, i=3] - dealloc dynamic grid (G002) X5 NORMAL NORMAL NORMAL - -DELETE A5 M:187 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE A5 M:182 dset: 0 I: 1 6 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G010) X5_EDGES NORMAL NORMAL NORMAL - -DELETE X M:186 dset: 0 I: 1 6 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE A4 M:183 dset: 0 I: 1 4 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G006) X4PT NORMAL NORMAL NORMAL - -DELETE A2 M:185 dset: 0 I: 1 2 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) X2PT NORMAL NORMAL NORMAL - -DELETE A1 M:184 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G009) X1PT NORMAL NORMAL NORMAL -list a5[gx=x5@max] - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A5 C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G009) X5_EDGES NORMAL NORMAL NORMAL - dealloc dynamic grid (G009) X5_EDGES NORMAL NORMAL NORMAL - allocate dynamic grid (G009) X5_EDGES NORMAL NORMAL NORMAL - allocate dynamic grid (G011) X5 NORMAL NORMAL NORMAL - dealloc dynamic grid (G011) X5 NORMAL NORMAL NORMAL - allocate dynamic grid (G011) X5 NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) X5 NORMAL NORMAL NORMAL - strip regrid on X: A5 --> (G011) @MAX - eval A5 C: 7 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G009) X5_EDGES NORMAL NORMAL NORMAL - pseudo X M:184 dset: 0 I: 3 3 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G009) X5_EDGES NORMAL NORMAL NORMAL - regrid A5 M:183 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) X5 NORMAL NORMAL NORMAL - VARIABLE : X[GX=X5_EDGES, I=3] - regrid: 1 delta on X@MAX - SUBSET : 5 points (X) - 1 / 1: .... - 2 / 2: .... - 3 / 3: 2.50000 - 4 / 4: .... - 5 / 5: .... -list a5[gx=x5@max,i=3] - -DELETE X M:184 dset: 0 I: 3 3 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) X5 NORMAL NORMAL NORMAL - -DELETE A5 M:183 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) X5 NORMAL NORMAL NORMAL - dealloc dynamic grid (G011) X5 NORMAL NORMAL NORMAL - allocate dynamic grid (G011) X5 NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) X5 NORMAL NORMAL NORMAL - strip regrid on X: A5 --> (G011) @MAX - found A5 M:185 dset: 0 I: 3 3 J: -999 -999 K: -999 -999 L: -999 -999 - regrid A5 M:183 dset: 0 I: 3 3 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) X5 NORMAL NORMAL NORMAL - VARIABLE : X[GX=X5_EDGES, I=3] - regrid: 1 delta on X@MAX - X : 3 - 2.50000 -list a5[gx=x5@max,i=4] - dealloc dynamic grid (G011) X5 NORMAL NORMAL NORMAL - -DELETE A5 M:183 dset: 0 I: 3 3 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) X5 NORMAL NORMAL NORMAL - dealloc dynamic grid (G011) X5 NORMAL NORMAL NORMAL - allocate dynamic grid (G011) X5 NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) X5 NORMAL NORMAL NORMAL - strip regrid on X: A5 --> (G011) @MAX - found A5 M:185 dset: 0 I: 3 3 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G011) X5 NORMAL NORMAL NORMAL - VARIABLE : X[GX=X5_EDGES, I=3] - regrid: 1 delta on X@MAX - X : 4 - .... - -! time axes with different encodings -define axis/t=1-jan-1990:5-jan-1990:1/units=days tday -define axis/t=1-jan-1990:5-jan-1990:24/units=hours thour -let atime = T[gt=tday] -list atime - dealloc dynamic grid (G011) X5 NORMAL NORMAL NORMAL - -DELETE A5 M:183 dset: 0 I: 4 4 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid ATIME C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) NORMAL NORMAL NORMAL TDAY - dealloc dynamic grid (G011) NORMAL NORMAL NORMAL TDAY - allocate dynamic grid (G011) NORMAL NORMAL NORMAL TDAY - allocate dynamic grid (G011) NORMAL NORMAL NORMAL TDAY - eval EX#1 C: 4 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 5 - eval ATIME C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 5 - allocate dynamic grid (G011) NORMAL NORMAL NORMAL TDAY - pseudo T M:183 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 5 - dealloc dynamic grid (G011) NORMAL NORMAL NORMAL TDAY - VARIABLE : T[GT=TDAY] - SUBSET : 5 points (TIME) - 01-JAN-1990 00 / 1: 32493.0 - 02-JAN-1990 00 / 2: 32494.0 - 03-JAN-1990 00 / 3: 32495.0 - 04-JAN-1990 00 / 4: 32496.0 - 05-JAN-1990 00 / 5: 32497.0 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G011) - GRID (G011) - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY TIME 5 r 01-JAN-1990 00:00 05-JAN-1990 00:00 full -list atime[gt=thour@max] - -DELETE T M:183 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 5 - dealloc dynamic grid (G011) NORMAL NORMAL NORMAL TDAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G006) NORMAL NORMAL NORMAL THOUR - dealloc dynamic grid (G006) NORMAL NORMAL NORMAL THOUR - allocate dynamic grid (G006) NORMAL NORMAL NORMAL THOUR - eval EX#1 C: 4 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 5 - allocate dynamic grid (G006) NORMAL NORMAL NORMAL THOUR - strip regrid on T: ATIME --> (G006) @MAX - found ATIME M:184 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 5 - regrid ATIME M:183 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 5 - dealloc dynamic grid (G006) NORMAL NORMAL NORMAL THOUR - VARIABLE : T[GT=TDAY] - regrid: 24 hour on T@MAX - SUBSET : 5 points (TIME) - 01-JAN-1990 00 / 1: 32493.0 - 02-JAN-1990 00 / 2: 32494.0 - 03-JAN-1990 00 / 3: 32495.0 - 04-JAN-1990 00 / 4: 32496.0 - 05-JAN-1990 00 / 5: 32497.0 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G006) - GRID (G006) - name axis # pts start end subset - normal X - normal Y - normal Z - THOUR TIME 5 r 01-JAN-1990 00:00 05-JAN-1990 00:00 full - -set mode/last diag - - - - - - -GO bn_reset bn_axis_limits ! reordered reset before next test: 2/94 -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_limits -GO bn_axis_limits ! added 10/27/93 -!bn301_axis_limits.jnl -! exercise the new-V301 /XLIMITS and /YLIMITS qualifiers - -define axis/x=20e:10w:10/unit=degree xax -define axis/y=60s:60n/unit=degree/npoints=41 yax -define axis/z=0:1000:40/unit=meter/depth zax -define axis/t=1-jan-1960:15-dec-1999:5/unit=days tax -define grid/x=xax/y=yax/z=zax/t=tax gformat - -set wind/asp=1:ax/size=1 1 - -define view/x=0.00,0.25/y=0.00,0.25 v11 -define view/x=0.25,0.50/y=0.00,0.25 v12 -define view/x=0.50,0.75/y=0.00,0.25 v13 -define view/x=0.75,1.00/y=0.00,0.25 v14 -define view/x=0.00,0.25/y=0.25,0.50 v21 -define view/x=0.25,0.50/y=0.25,0.50 v22 -define view/x=0.50,0.75/y=0.25,0.50 v23 -define view/x=0.75,1.00/y=0.25,0.50 v24 -define view/x=0.00,0.25/y=0.50,0.75 v31 -define view/x=0.25,0.50/y=0.50,0.75 v32 -define view/x=0.50,0.75/y=0.50,0.75 v33 -define view/x=0.75,1.00/y=0.50,0.75 v34 -define view/x=0.00,0.25/y=0.75,1.00 v41 -define view/x=0.25,0.50/y=0.75,1.00 v42 -define view/x=0.50,0.75/y=0.75,1.00 v43 -define view/x=0.75,1.00/y=0.75,1.00 v44 - -* error checks -set grid abstract -set region/i=1:5 -set mode ignore_errors -plot/xlimits i -plot/xlimits= i -plot/xlimits=text i -plot/xlimits=1 i -plot/xlimits=1: i -plot/xlimits=1:: i -plot/xlimits=1:2: i -plot/xlimits=5:5 i -set mode/last ignore_errors - -GO bn_axis_limits.sub1 ! lines -!bn301_axis_limits.sub1 -! exercise the new-V301 /XLIMITS and /YLIMITS qualifiers -! this file to exercise the PLOT command - -set window/clear - -* abstract X line plots -set grid abstract -set view v11 -plot/x=1:100 sin(x/6) -set view v12 -plot/x=1:100/xlimits=-100:200 sin(x/6) -set view v13 -plot/x=1:100/xlimits=-100:200:-30/ylimits=-2:2:-0.2 sin(x/6) -set view v14 -plot/x=1:100/xlimits=-100:200:-30/ylimits=-2:2:-0.2/trans sin(x/6) - -* formatted Y line plots -set grid gformat -set view v21 -plot/y=30s:30n/xlimits=50s:40n:-8 sin(y/10) -set view v22 -plot/y=30s:30n/xlimits=50s:40n:-8/ylimits=0:2:-0.2 sin(y/10) - -* plot/vs -set view v23 -set grid abstract -plot/vs/x=1:100/y=101:200/xlim=1:-1:.1/ylim=-3:0:.5 sin(x/5),cos(y/9) -set view v24 -set grid gformat -plot/vs/t=1-jan-1980:1-jan-1990/xlim=1:-1:-.1/ylim=-3:3:-.5 sin(t/100),cos(t/300) - -* formatted T line plots -set grid gformat -set mode calendar -set view v31 -plot/t=1-jan-1980:1-jan-1990 sin(t/500) -set view v32 -plot/t=1-jan-1980:1-jan-1990/xlimits=1-mar-1977:15-jun-1994 sin(t/500) -set view v33 -plot/t=1-jan-1980:1-jan-1990/xlimits=1-mar-1977:15-jun-1994:-5 sin(t/500) -set view v34 -plot/t=1-jan-1980:1-jan-1990/xlimits=1-mar-1977:15-jun-1994:-5/ylimits=-2:0:-0.2 sin(t/500) - -* unformatted T line plots -set grid gformat -cancel mode calendar -set view v41 -plot/t=1-jan-1980:1-jan-1990/xlimits=1-mar-1977:15-jun-1994 sin(t/500) -set view v42 -plot/t=1-jan-1980:1-jan-1990/xlimits=29400:31800/ylimits=-2:0:-0.2 sin(t/500) -set view v43 -plot/t=1-jan-1980:1-jan-1990/xlimits=29400:31800:-200/ylimits=-2:0:-0.2 sin(t/500) -set view v44 -plot/t=1-jan-1980:1-jan-1990/xlimits=29400:31800:-200/ylimits=-2:0:-0.2/trans sin(t/500) -GO bn_axis_limits.sub2 ! 2D graphics -! bn301_axis_limits.sub2 -! exercise the new-V301 /XLIMITS and /YLIMITS qualifiers -! this file to exercise 2D graphics - -set window/clear - -* abstract XY contours -set grid abstract -set view v11 -contour/x=1:100/y=101:200/lev=(-1,1,.5) sin(x/6)*cos(y/9) -set view v12 -contour/x=1:100/y=101:200/lev=(-1,1,.5)/xlimits=-100:200 sin(x/6)*cos(y/9) -set view v13 -contour/x=1:100/y=101:200/lev=(-1,1,.5)/xlimits=-100:200:-30/ylimits=250:150 sin(x/6)*cos(y/9) -set view v14 -contour/x=1:100/y=101:200/lev=(-1,1,.5)/xlimits=-100:200:-30/ylimits=250:150/trans sin(x/6)*cos(y/9) - -* formatted XY contours -set grid gformat -set view v21 -contour/x=160E:160W/y=15s:25n/lev=(-1,1,.5) sin(x/3)*ABS(Y)^1.5 -set view v22 -contour/x=160E:160W/y=15s:25n/lev=(-1,1,.5)/xlimits=140e:110W:10 sin(x/3)*ABS(Y)^1.5 -set view v23 -contour/x=160E:160W/y=15s:25n/lev=(-1,1,.5)/xlimits=140e:110w:-9/ylimits=0:30N sin(x/3)*ABS(Y)^1.5 -set view v24 -contour/x=160E:160W/y=15s:25n/lev=(-1,1,.5)/xlimits=140e:110w:-9/ylimits=0:30N/trans sin(x/3)*ABS(Y)^1.5 - -* calendar axis contours involving T -set grid gformat -set mode calendar -set view v31 -contour/x=160E:160W/t=1-jan-1980:1-jan-1982/lev=(-1,1,.25)/xlimits=140e:110w:-9/ylimits=1-jan-1978:1-jan-1984 sin(x/3)*sin(t/100) -set view v32 -contour/x=160E:160W/t=1-jan-1980:1-jan-1982/lev=(-1,1,.25)/xlimits=140e:110w:-9/ylimits=28110:29115 sin(x/3)*sin(t/100) -set view v33 -contour/x=160E:160W/t=1-jan-1980:1-jan-1982/lev=(-1,1,.25)/xlimits=140e:110w:-9/ylimits=28110:29115:-200 sin(x/3)*sin(t/100) ! delta ignored -set view v34 -contour/x=160E:160W/t=1-jan-1980:1-jan-1982/lev=(-1,1,.25)/xlimits=140e:110w:-9/ylimits=1-jan-1978:1-jan-1984/trans sin(x/3)*sin(t/100) - -* non-calendar axis contours involving T -set grid gformat -cancel mode calendar -set view v41 -contour/x=160E:160W/t=1-jan-1980:1-jan-1982/lev=(-1,1,.25)/xlimits=140e:110w:-9/ylimits=1-jan-1978:1-jan-1984 sin(x/3)*sin(t/100) -set view v42 -contour/x=160E:160W/t=1-jan-1980:1-jan-1982/lev=(-1,1,.25)/xlimits=140e:110w:-9/ylimits=28110:29115 sin(x/3)*sin(t/100) -set view v43 ! intentionally blank -contour/x=160E:160W/t=28000:29000/lev=(-1,1,.25)/xlimits=140e:110w:-9/ylimits=1-jan-1975:1-jan-1978 sin(x/3)*sin(t/100) -set view v44 -contour/x=160E:160W/t=1-jan-1980:1-jan-1982/lev=(-1,1,.25)/xlimits=140e:110w:-9/ylimits=28000:29000:-400/trans sin(x/3)*sin(t/100) - -SET WINDOW/CLEAR/SIZE=0.2 ! added 2/94 - -!GO bn_reset -!GO bn301_mem_mgmt -MESSAGE/CONTINUE ***** bn301_mem_mgmt has been removed from run_all. -***** bn301_mem_mgmt has been removed from run_all. -MESSAGE/CONTINUE ***** Its too slow!!! -***** Its too slow -MESSAGE/CONTINUE ***** Remember to run it separately -***** Remember to run it separately - -GO bn_reset bn_movie -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_movie -GO bn_movie -! bn301_movie.JNL -! - test on-HDF movie creation by Program FERRET -! - FERRET ver 3.10 10/93 - -! ===> NOTE: This may fail with an X error if the movie window is iconified - -! Dont run this script - fails with hdf5 libraries -exit/script - -! added in bn311 -GO bn_reset bn_ez_order -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ez_order -GO bn_ez_order ! was bn311 until 9/95 -! bn420_ez_order -! updated from bn311_ez_order 9/95 - improved testing of /FORMAT=STREAM - -! create test files -sp rm -f test_perm*.dat -list/i=1:10/nohead/form=(f4.0)/file=test_perm10.dat i -list/i=1:24/nohead/form=(f4.0)/file=test_perm24.dat i -list/i=1:48/nohead/form=(f4.0)/file=test_perm48.dat i -list/i=1:48/nohead/form=(10f8.0)/file=test_perm48_10.dat i*1000,i*500,i*200,i*100,i*50,i*20,i*10,i*5,i*2,i - -! create test axes -define axis/x=1:2:1 x2 -define axis/x=1:3:1 x3 -define axis/x=1:4:1 x4 -define grid/x=x2/y=x3 g6 -define grid/y=x2/t=x3 g6yt -define grid/x=x2/y=x3/z=x2 g12 -define grid/x=x2/y=x3/z=x2/t=x2 g24 - -! basic permutations, single variable -! *** 2D -file/grid=g6 test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 points (X-Y) - 1 2 - 1 2 - 1 / 1: 1.00000 2.00000 - 2 / 2: 3.00000 4.00000 - 3 / 3: 5.00000 6.00000 -file/grid=g6/order=yx test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 points (X-Y) - 1 2 - 1 2 - 1 / 1: 1.00000 4.00000 - 2 / 2: 2.00000 5.00000 - 3 / 3: 3.00000 6.00000 -file/grid=g6yt test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 points (Y-T) - 1 2 - 1 2 - 1 / 1: 1.00000 2.00000 - 2 / 2: 3.00000 4.00000 - 3 / 3: 5.00000 6.00000 -file/grid=g6yt/order=ty test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 points (Y-T) - 1 2 - 1 2 - 1 / 1: 1.00000 4.00000 - 2 / 2: 2.00000 5.00000 - 3 / 3: 3.00000 6.00000 -file/grid=g6yt/order=xtyz test_perm48.dat -list v1 ! should be just the same as the last - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 points (Y-T) - 1 2 - 1 2 - 1 / 1: 1.00000 4.00000 - 2 / 2: 2.00000 5.00000 - 3 / 3: 3.00000 6.00000 - -! *** 3D -file/grid=g12 test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 3.0000 4.0000 - 3 / 3: 5.0000 6.0000 - ---- K:2 Z: 2 - 1 / 1: 7.0000 8.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 11.0000 12.0000 -file/grid=g12/order=xzy test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 5.0000 6.0000 - 3 / 3: 9.0000 10.0000 - ---- K:2 Z: 2 - 1 / 1: 3.0000 4.0000 - 2 / 2: 7.0000 8.0000 - 3 / 3: 11.0000 12.0000 -file/grid=g12/order=yxz test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 4.0000 - 2 / 2: 2.0000 5.0000 - 3 / 3: 3.0000 6.0000 - ---- K:2 Z: 2 - 1 / 1: 7.0000 10.0000 - 2 / 2: 8.0000 11.0000 - 3 / 3: 9.0000 12.0000 -file/grid=g12/order=yzx test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 7.0000 - 2 / 2: 2.0000 8.0000 - 3 / 3: 3.0000 9.0000 - ---- K:2 Z: 2 - 1 / 1: 4.0000 10.0000 - 2 / 2: 5.0000 11.0000 - 3 / 3: 6.0000 12.0000 -file/grid=g12/order=zxy test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 3.0000 - 2 / 2: 5.0000 7.0000 - 3 / 3: 9.0000 11.0000 - ---- K:2 Z: 2 - 1 / 1: 2.0000 4.0000 - 2 / 2: 6.0000 8.0000 - 3 / 3: 10.0000 12.0000 -file/grid=g12/order=zyx test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 7.0000 - 2 / 2: 3.0000 9.0000 - 3 / 3: 5.0000 11.0000 - ---- K:2 Z: 2 - 1 / 1: 2.0000 8.0000 - 2 / 2: 4.0000 10.0000 - 3 / 3: 6.0000 12.0000 - - -! *** 4D (incomplete - 24 in all) -file/grid=g24 test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 3.0000 4.0000 - 3 / 3: 5.0000 6.0000 - ---- K:2 Z: 2 - 1 / 1: 7.0000 8.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 11.0000 12.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 13.0000 14.0000 - 2 / 2: 15.0000 16.0000 - 3 / 3: 17.0000 18.0000 - ---- K:2 Z: 2 - 1 / 1: 19.0000 20.0000 - 2 / 2: 21.0000 22.0000 - 3 / 3: 23.0000 24.0000 -file/grid=g24/order=xytz test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 3.0000 4.0000 - 3 / 3: 5.0000 6.0000 - ---- K:2 Z: 2 - 1 / 1: 13.0000 14.0000 - 2 / 2: 15.0000 16.0000 - 3 / 3: 17.0000 18.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 7.0000 8.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 11.0000 12.0000 - ---- K:2 Z: 2 - 1 / 1: 19.0000 20.0000 - 2 / 2: 21.0000 22.0000 - 3 / 3: 23.0000 24.0000 -file/grid=g24/order=xzyt test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 5.0000 6.0000 - 3 / 3: 9.0000 10.0000 - ---- K:2 Z: 2 - 1 / 1: 3.0000 4.0000 - 2 / 2: 7.0000 8.0000 - 3 / 3: 11.0000 12.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 13.0000 14.0000 - 2 / 2: 17.0000 18.0000 - 3 / 3: 21.0000 22.0000 - ---- K:2 Z: 2 - 1 / 1: 15.0000 16.0000 - 2 / 2: 19.0000 20.0000 - 3 / 3: 23.0000 24.0000 -file/grid=g24/order=xtyz test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 5.0000 6.0000 - 3 / 3: 9.0000 10.0000 - ---- K:2 Z: 2 - 1 / 1: 13.0000 14.0000 - 2 / 2: 17.0000 18.0000 - 3 / 3: 21.0000 22.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 3.0000 4.0000 - 2 / 2: 7.0000 8.0000 - 3 / 3: 11.0000 12.0000 - ---- K:2 Z: 2 - 1 / 1: 15.0000 16.0000 - 2 / 2: 19.0000 20.0000 - 3 / 3: 23.0000 24.0000 -file/grid=g24/order=xtzy test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 17.0000 18.0000 - ---- K:2 Z: 2 - 1 / 1: 5.0000 6.0000 - 2 / 2: 13.0000 14.0000 - 3 / 3: 21.0000 22.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 3.0000 4.0000 - 2 / 2: 11.0000 12.0000 - 3 / 3: 19.0000 20.0000 - ---- K:2 Z: 2 - 1 / 1: 7.0000 8.0000 - 2 / 2: 15.0000 16.0000 - 3 / 3: 23.0000 24.0000 -file/grid=g24/order=ytzx test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 13.0000 - 2 / 2: 2.0000 14.0000 - 3 / 3: 3.0000 15.0000 - ---- K:2 Z: 2 - 1 / 1: 7.0000 19.0000 - 2 / 2: 8.0000 20.0000 - 3 / 3: 9.0000 21.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 4.0000 16.0000 - 2 / 2: 5.0000 17.0000 - 3 / 3: 6.0000 18.0000 - ---- K:2 Z: 2 - 1 / 1: 10.0000 22.0000 - 2 / 2: 11.0000 23.0000 - 3 / 3: 12.0000 24.0000 -file/grid=g24/order=zytx test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 13.0000 - 2 / 2: 3.0000 15.0000 - 3 / 3: 5.0000 17.0000 - ---- K:2 Z: 2 - 1 / 1: 2.0000 14.0000 - 2 / 2: 4.0000 16.0000 - 3 / 3: 6.0000 18.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 7.0000 19.0000 - 2 / 2: 9.0000 21.0000 - 3 / 3: 11.0000 23.0000 - ---- K:2 Z: 2 - 1 / 1: 8.0000 20.0000 - 2 / 2: 10.0000 22.0000 - 3 / 3: 12.0000 24.0000 -file/grid=g24/order=tyzx test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 13.0000 - 2 / 2: 3.0000 15.0000 - 3 / 3: 5.0000 17.0000 - ---- K:2 Z: 2 - 1 / 1: 7.0000 19.0000 - 2 / 2: 9.0000 21.0000 - 3 / 3: 11.0000 23.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 2.0000 14.0000 - 2 / 2: 4.0000 16.0000 - 3 / 3: 6.0000 18.0000 - ---- K:2 Z: 2 - 1 / 1: 8.0000 20.0000 - 2 / 2: 10.0000 22.0000 - 3 / 3: 12.0000 24.0000 -file/grid=g24/order=tzyx test_perm48.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm48.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 13.0000 - 2 / 2: 5.0000 17.0000 - 3 / 3: 9.0000 21.0000 - ---- K:2 Z: 2 - 1 / 1: 3.0000 15.0000 - 2 / 2: 7.0000 19.0000 - 3 / 3: 11.0000 23.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 2.0000 14.0000 - 2 / 2: 6.0000 18.0000 - 3 / 3: 10.0000 22.0000 - ---- K:2 Z: 2 - 1 / 1: 4.0000 16.0000 - 2 / 2: 8.0000 20.0000 - 3 / 3: 12.0000 24.0000 - - -! basic permutations, 10 variables -! *** 2D -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g6 test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 points (X-Y) - 1 2 - 1 2 - 1 / 1: 1.00000 2.00000 - 2 / 2: 3.00000 4.00000 - 3 / 3: 5.00000 6.00000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g6/order=yx test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 points (X-Y) - 1 2 - 1 2 - 1 / 1: 1.00000 4.00000 - 2 / 2: 2.00000 5.00000 - 3 / 3: 3.00000 6.00000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g6yt test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 points (Y-T) - 1 2 - 1 2 - 1 / 1: 1.00000 2.00000 - 2 / 2: 3.00000 4.00000 - 3 / 3: 5.00000 6.00000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g6yt/order=ty test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 points (Y-T) - 1 2 - 1 2 - 1 / 1: 1.00000 4.00000 - 2 / 2: 2.00000 5.00000 - 3 / 3: 3.00000 6.00000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g6yt/order=xtyz test_perm48_10.dat -list v10 ! should be just the same as the last - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 points (Y-T) - 1 2 - 1 2 - 1 / 1: 1.00000 4.00000 - 2 / 2: 2.00000 5.00000 - 3 / 3: 3.00000 6.00000 - -! *** 3D -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g12 test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 3.0000 4.0000 - 3 / 3: 5.0000 6.0000 - ---- K:2 Z: 2 - 1 / 1: 7.0000 8.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 11.0000 12.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g12/order=xzy test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 5.0000 6.0000 - 3 / 3: 9.0000 10.0000 - ---- K:2 Z: 2 - 1 / 1: 3.0000 4.0000 - 2 / 2: 7.0000 8.0000 - 3 / 3: 11.0000 12.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g12/order=yxz test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 4.0000 - 2 / 2: 2.0000 5.0000 - 3 / 3: 3.0000 6.0000 - ---- K:2 Z: 2 - 1 / 1: 7.0000 10.0000 - 2 / 2: 8.0000 11.0000 - 3 / 3: 9.0000 12.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g12/order=yzx test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 7.0000 - 2 / 2: 2.0000 8.0000 - 3 / 3: 3.0000 9.0000 - ---- K:2 Z: 2 - 1 / 1: 4.0000 10.0000 - 2 / 2: 5.0000 11.0000 - 3 / 3: 6.0000 12.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g12/order=zxy test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 3.0000 - 2 / 2: 5.0000 7.0000 - 3 / 3: 9.0000 11.0000 - ---- K:2 Z: 2 - 1 / 1: 2.0000 4.0000 - 2 / 2: 6.0000 8.0000 - 3 / 3: 10.0000 12.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g12/order=zyx test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 7.0000 - 2 / 2: 3.0000 9.0000 - 3 / 3: 5.0000 11.0000 - ---- K:2 Z: 2 - 1 / 1: 2.0000 8.0000 - 2 / 2: 4.0000 10.0000 - 3 / 3: 6.0000 12.0000 -! *** 4D (incomplete - 24 in all) -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g24 test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 3.0000 4.0000 - 3 / 3: 5.0000 6.0000 - ---- K:2 Z: 2 - 1 / 1: 7.0000 8.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 11.0000 12.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 13.0000 14.0000 - 2 / 2: 15.0000 16.0000 - 3 / 3: 17.0000 18.0000 - ---- K:2 Z: 2 - 1 / 1: 19.0000 20.0000 - 2 / 2: 21.0000 22.0000 - 3 / 3: 23.0000 24.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g24/order=xytz test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 3.0000 4.0000 - 3 / 3: 5.0000 6.0000 - ---- K:2 Z: 2 - 1 / 1: 13.0000 14.0000 - 2 / 2: 15.0000 16.0000 - 3 / 3: 17.0000 18.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 7.0000 8.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 11.0000 12.0000 - ---- K:2 Z: 2 - 1 / 1: 19.0000 20.0000 - 2 / 2: 21.0000 22.0000 - 3 / 3: 23.0000 24.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g24/order=xzyt test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 5.0000 6.0000 - 3 / 3: 9.0000 10.0000 - ---- K:2 Z: 2 - 1 / 1: 3.0000 4.0000 - 2 / 2: 7.0000 8.0000 - 3 / 3: 11.0000 12.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 13.0000 14.0000 - 2 / 2: 17.0000 18.0000 - 3 / 3: 21.0000 22.0000 - ---- K:2 Z: 2 - 1 / 1: 15.0000 16.0000 - 2 / 2: 19.0000 20.0000 - 3 / 3: 23.0000 24.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g24/order=xtyz test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 5.0000 6.0000 - 3 / 3: 9.0000 10.0000 - ---- K:2 Z: 2 - 1 / 1: 13.0000 14.0000 - 2 / 2: 17.0000 18.0000 - 3 / 3: 21.0000 22.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 3.0000 4.0000 - 2 / 2: 7.0000 8.0000 - 3 / 3: 11.0000 12.0000 - ---- K:2 Z: 2 - 1 / 1: 15.0000 16.0000 - 2 / 2: 19.0000 20.0000 - 3 / 3: 23.0000 24.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g24/order=xtzy test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 17.0000 18.0000 - ---- K:2 Z: 2 - 1 / 1: 5.0000 6.0000 - 2 / 2: 13.0000 14.0000 - 3 / 3: 21.0000 22.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 3.0000 4.0000 - 2 / 2: 11.0000 12.0000 - 3 / 3: 19.0000 20.0000 - ---- K:2 Z: 2 - 1 / 1: 7.0000 8.0000 - 2 / 2: 15.0000 16.0000 - 3 / 3: 23.0000 24.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g24/order=ytzx test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 13.0000 - 2 / 2: 2.0000 14.0000 - 3 / 3: 3.0000 15.0000 - ---- K:2 Z: 2 - 1 / 1: 7.0000 19.0000 - 2 / 2: 8.0000 20.0000 - 3 / 3: 9.0000 21.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 4.0000 16.0000 - 2 / 2: 5.0000 17.0000 - 3 / 3: 6.0000 18.0000 - ---- K:2 Z: 2 - 1 / 1: 10.0000 22.0000 - 2 / 2: 11.0000 23.0000 - 3 / 3: 12.0000 24.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g24/order=zytx test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 13.0000 - 2 / 2: 3.0000 15.0000 - 3 / 3: 5.0000 17.0000 - ---- K:2 Z: 2 - 1 / 1: 2.0000 14.0000 - 2 / 2: 4.0000 16.0000 - 3 / 3: 6.0000 18.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 7.0000 19.0000 - 2 / 2: 9.0000 21.0000 - 3 / 3: 11.0000 23.0000 - ---- K:2 Z: 2 - 1 / 1: 8.0000 20.0000 - 2 / 2: 10.0000 22.0000 - 3 / 3: 12.0000 24.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g24/order=tyzx test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 13.0000 - 2 / 2: 3.0000 15.0000 - 3 / 3: 5.0000 17.0000 - ---- K:2 Z: 2 - 1 / 1: 7.0000 19.0000 - 2 / 2: 9.0000 21.0000 - 3 / 3: 11.0000 23.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 2.0000 14.0000 - 2 / 2: 4.0000 16.0000 - 3 / 3: 6.0000 18.0000 - ---- K:2 Z: 2 - 1 / 1: 8.0000 20.0000 - 2 / 2: 10.0000 22.0000 - 3 / 3: 12.0000 24.0000 -file/var="v1,v2,v3,v4,v5,v6,v7,v8,v9,v10"/grid=g24/order=tzyx test_perm48_10.dat -list v10 - VARIABLE : v10 - FILENAME : test_perm48_10.dat - SUBSET : 2 by 3 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1.0000 13.0000 - 2 / 2: 5.0000 17.0000 - 3 / 3: 9.0000 21.0000 - ---- K:2 Z: 2 - 1 / 1: 3.0000 15.0000 - 2 / 2: 7.0000 19.0000 - 3 / 3: 11.0000 23.0000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 2.0000 14.0000 - 2 / 2: 6.0000 18.0000 - 3 / 3: 10.0000 22.0000 - ---- K:2 Z: 2 - 1 / 1: 4.0000 16.0000 - 2 / 2: 8.0000 20.0000 - 3 / 3: 12.0000 24.0000 - - -! test grids that have more points than the data -cancel data/all -file/grid=g12/order=xzy test_perm10.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm10.dat - SUBSET : 2 by 3 points (X-Y) - Z : 1 - 1 2 - 1 2 - 1 / 1: 1.0000 2.0000 - 2 / 2: 5.0000 6.0000 - 3 / 3: 9.0000 10.0000 -show data - currently SET data sets: - 1> ./test_perm10.dat (default) - name title I J K L - V1 V1 1:2 1:3 1:1 ... - - -file/grid=g24/order=xytz test_perm10.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm10.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - T : 1 - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.00000 2.00000 - 2 / 2: 3.00000 4.00000 - 3 / 3: 5.00000 6.00000 - ---- K:2 Z: 2 - 1 / 1: .... .... - 2 / 2: .... .... - 3 / 3: .... .... -show data - currently SET data sets: - 1> ./test_perm10.dat (default) - name title I J K L - V1 V1 1:2 1:3 1:2 1:1 - - -file/grid=g24/order=xzyt test_perm10.dat -list v1 - VARIABLE : V1 - FILENAME : test_perm10.dat - SUBSET : 2 by 3 by 2 points (X-Y-Z) - T : 1 - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 5.0000 6.0000 - 3 / 3: 9.0000 10.0000 - ---- K:2 Z: 2 - 1 / 1: 3.0000 4.0000 - 2 / 2: 7.0000 8.0000 - 3 / 3: .... .... -show data - currently SET data sets: - 1> ./test_perm10.dat (default) - name title I J K L - V1 V1 1:2 1:3 1:2 1:1 - - - - -! limited testing of /FORMAT=STREAM -! note that as of 5/16/94 this is a fragile capability that will blow up -! NO ==> 1) on attempt to read more data than the file has -! ("BACKSPACE error" not trapped by ERR= branch) -! (This behavior was fixed 9/7/95 in ez_read.F) -! 2) on many attempts to process record length information (contained -! at the start and end of each variable length record) as data -! (?? illegal floating point value - formats as zero but computes as -! something else) - -! simple test - write a single record of 16 floating point values (encased -! in record length information) and read it back as a 2x2x2x2 grid - -define grid/x=x2/y=x2/z=x2/t=x2 g2222 - -! Unformatted files have a count value before and after which may be four or -! eight bytes depending on the system (gfortran version), so only verify a -! list/format=unf can then be read using file/format=unf -sp rm -f test_stream.unf -list/file=test_stream.unf/format=unf/order=x/i=1:16 i/10 -file/grid=g2222/form=unf/col=16 test_stream.unf -list v1 - VARIABLE : V1 - FILENAME : test_stream.unf - SUBSET : 2 by 2 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 0.10000 0.20000 - 2 / 2: 0.30000 0.40000 - ---- K:2 Z: 2 - 1 / 1: 0.50000 0.60000 - 2 / 2: 0.70000 0.80000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 0.90000 1.00000 - 2 / 2: 1.10000 1.20000 - ---- K:2 Z: 2 - 1 / 1: 1.30000 1.40000 - 2 / 2: 1.50000 1.60000 -! /ORDER= applies here, too -file/grid=g2222/form=unf/order=yzxt/col=16 test_stream.unf -list v1 - VARIABLE : V1 - FILENAME : test_stream.unf - SUBSET : 2 by 2 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 0.10000 0.50000 - 2 / 2: 0.20000 0.60000 - ---- K:2 Z: 2 - 1 / 1: 0.30000 0.70000 - 2 / 2: 0.40000 0.80000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 0.90000 1.30000 - 2 / 2: 1.00000 1.40000 - ---- K:2 Z: 2 - 1 / 1: 1.10000 1.50000 - 2 / 2: 1.20000 1.60000 - -! 9/95 - also test the **WRITING** of STREAM-formatted files (added 12/28/94) -sp rm -f test_stream.unf -list/file=test_stream.unf/format=stream/order=x/i=1:16 i/100 -file/grid=g2222/form=stream test_stream.unf -list v1 - VARIABLE : V1 - FILENAME : test_stream.unf - SUBSET : 2 by 2 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 0.010000 0.020000 - 2 / 2: 0.030000 0.040000 - ---- K:2 Z: 2 - 1 / 1: 0.050000 0.060000 - 2 / 2: 0.070000 0.080000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 0.090000 0.100000 - 2 / 2: 0.110000 0.120000 - ---- K:2 Z: 2 - 1 / 1: 0.130000 0.140000 - 2 / 2: 0.150000 0.160000 -! /ORDER= applies here, too -file/grid=g2222/form=stream/order=yzxt test_stream.unf -list v1 - VARIABLE : V1 - FILENAME : test_stream.unf - SUBSET : 2 by 2 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 0.010000 0.050000 - 2 / 2: 0.020000 0.060000 - ---- K:2 Z: 2 - 1 / 1: 0.030000 0.070000 - 2 / 2: 0.040000 0.080000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 0.090000 0.130000 - 2 / 2: 0.100000 0.140000 - ---- K:2 Z: 2 - 1 / 1: 0.110000 0.150000 - 2 / 2: 0.120000 0.160000 - -! and test /ORDER on the STREAM output listing -! ... first the default order -sp rm -f test_stream.unf -list/file=test_stream.unf/format=stream/i=1:2/j=3:4/k=5:6/l=7:8 (((((i*10)+j)*10)+k)*10)+l -file/grid=g2222/form=stream test_stream.unf -list v1 - VARIABLE : V1 - FILENAME : test_stream.unf - SUBSET : 2 by 2 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1357.00 2357.00 - 2 / 2: 1457.00 2457.00 - ---- K:2 Z: 2 - 1 / 1: 1367.00 2367.00 - 2 / 2: 1467.00 2467.00 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 1358.00 2358.00 - 2 / 2: 1458.00 2458.00 - ---- K:2 Z: 2 - 1 / 1: 1368.00 2368.00 - 2 / 2: 1468.00 2468.00 -file/grid=g2222/form=stream/order=yzxt test_stream.unf -list v1 - VARIABLE : V1 - FILENAME : test_stream.unf - SUBSET : 2 by 2 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1357.00 1367.00 - 2 / 2: 2357.00 2367.00 - ---- K:2 Z: 2 - 1 / 1: 1457.00 1467.00 - 2 / 2: 2457.00 2467.00 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 1358.00 1368.00 - 2 / 2: 2358.00 2368.00 - ---- K:2 Z: 2 - 1 / 1: 1458.00 1468.00 - 2 / 2: 2458.00 2468.00 -! ... then re-order on write and reverse the re-ordering on read -sp rm -f test_stream.unf -list/file=test_stream.unf/format=stream/order=yzxt/i=1:2/j=3:4/k=5:6/l=7:8 (((((i*10)+j)*10)+k)*10)+l -file/grid=g2222/form=stream/order=yzxt test_stream.unf -list v1 - VARIABLE : V1 - FILENAME : test_stream.unf - SUBSET : 2 by 2 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: 1357.00 2357.00 - 2 / 2: 1457.00 2457.00 - ---- K:2 Z: 2 - 1 / 1: 1367.00 2367.00 - 2 / 2: 1467.00 2467.00 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 1358.00 2358.00 - 2 / 2: 1458.00 2458.00 - ---- K:2 Z: 2 - 1 / 1: 1368.00 2368.00 - 2 / 2: 1468.00 2468.00 - -! clean up -set grid abstract -CANCEL DATA/ALL -cancel grid g2222 -cancel grid g24 -cancel grid g12 -cancel grid g6yt -cancel grid g6 -cancel axis x4 -cancel axis x3 -cancel axis x2 -sp rm -f test_stream.unf -sp rm -f test_perm10.dat -sp rm -f test_perm24.dat -sp rm -f test_perm48.dat -sp rm -f test_perm48_10.dat - - -! added in bn312 6/3/94 -GO bn_reset bn_user -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_user -! cancel mode metafile ! needed temporarily 6/94: PLOT+/XGKS interaction bug -GO bn_user -! bn312_user.jnl - -! test the USER command options - -! test the SAMPLE command using the polar plotting scripts - -! Skip for 6D: USER command not implemented - -! These are the windows that have always been set after bn_user.jn -set window/size=.5/aspect=.75:ax 1 - -! Get rid of this empty-window definition. pyFerret running all -! the scripts under bn_all.jnl winds up crashing later in a bn_reset -! due to invalid settings in FGD_GET_VIEW_LIMITS -!set window/size=.5/aspect=.75 2 - -exit/script -set window 1 ! clean up - -! added in bn420 1/96 -GO bn_reset bn_stream -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_stream -GO bn_stream -! bn420_stream.jnl - -! jan 96 -! note that although this benchmark was added only in 1/96 the STREAM -! reading capabilities have been available much longer - -! read the file stream_data_link.unf as a single 10 by 5 variable -define axis/x=1:10:1 x10 -define axis/y=1:5:1 y5 -define grid/x=x10/y=y5 g10x5 -file/var=myvar/grid=g10x5/format=stream stream_data_link.unf -list myvar - VARIABLE : myvar - FILENAME : stream_data_link.unf - SUBSET : 10 by 5 points (X-Y) - 1 2 3 4 5 6 7 8 9 10 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1: 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 - 2 / 2: 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 17.0000 18.0000 19.0000 20.0000 - 3 / 3: 21.0000 22.0000 23.0000 24.0000 25.0000 26.0000 27.0000 28.0000 29.0000 30.0000 - 4 / 4: 31.0000 32.0000 33.0000 34.0000 35.0000 36.0000 37.0000 38.0000 39.0000 40.0000 - 5 / 5: 41.0000 42.0000 43.0000 44.0000 45.0000 46.0000 47.0000 48.0000 49.0000 50.0000 -cancel data stream_data_link.unf - -! read the same file as two 10 by 2 variables skipping the first line -define axis/x=1:10:1 x10 -define axis/y=1:2:1 y2 -define grid/x=x10/y=y2 g10x2 -file/skip=10/columns=20/grid=g10x2/var=myv1,myv2/format=stream stream_data_link.unf -list myv1,myv2 - DATA SET: ./stream_data_link.unf - X: 0.5 to 10.5 - Y: 0.5 to 2.5 - Column 1: MYV1 is myv1 - Column 2: MYV2 is myv2 - MYV1 MYV2 - ---- J:1 Y: 1 -1 / 1: 11.0000 31.0000 -2 / 2: 12.0000 32.0000 -3 / 3: 13.0000 33.0000 -4 / 4: 14.0000 34.0000 -5 / 5: 15.0000 35.0000 -6 / 6: 16.0000 36.0000 -7 / 7: 17.0000 37.0000 -8 / 8: 18.0000 38.0000 -9 / 9: 19.0000 39.0000 -10 / 10: 20.0000 40.0000 - ---- J:2 Y: 2 -1 / 1: 21.0000 41.0000 -2 / 2: 22.0000 42.0000 -3 / 3: 23.0000 43.0000 -4 / 4: 24.0000 44.0000 -5 / 5: 25.0000 45.0000 -6 / 6: 26.0000 46.0000 -7 / 7: 27.0000 47.0000 -8 / 8: 28.0000 48.0000 -9 / 9: 29.0000 49.0000 -10 / 10: 30.0000 50.0000 -cancel data stream_data_link.unf - - -!added in bn430 9/96 *kob* -GO bn_reset bn_mc -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_mc -GO bn_mc -!bn430_mc.jnl -! kob - 9/5/96 -! - simple test of mc data access for both irregular and regular time -! axis -! - 9/6/96 - add tests for bad delta, out of order stepfiles, missing first step file -! and missing step file other than the first -! - 11/06/97 - added a set mode/last verify -CAN MODE VERIFY - currently SET data sets: - 1> ./data/coads_clim.des (default) - COAD - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:6 - Deg C on grid GHB1 with -1.E+34 for missing data - X=20E:20E(380) Y=90S:90N - - time range: 366 to 4018.425 - - GRID GHB1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME1 T (hour) 6 r 366 4018.4 full - - L T TBOX TBOXLO - 1> 366 730.485 0.7575 - 2> 1096.485 730.485 731.2425 - 3> 1826.97 730.485 1461.7275 - 4> 2557.455 730.485 2192.2125 - 5> 3287.94 730.485 2922.6975 - 6> 4018.425 730.485 3653.1825 - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - DATA SET : COAD - FILENAME : coads_clim.des - SUBSET : 8 by 6 points (LATITUDE-T (hour)) - LONGITUDE: 140W (interpolated) - 7S 5S 3S 1S 1N 3N 5N 7N - 42 43 44 45 46 47 48 49 - 366 / 1: 27.4922 27.0790 26.2177 25.8117 25.8974 26.4319 26.8698 26.9781 - 1096.5 / 2: 27.5431 27.4416 26.6992 26.3360 26.4503 26.8090 27.0577 26.9103 - 1827 / 3: 28.2710 28.1010 27.1568 26.6065 26.5793 27.1318 27.1135 27.1007 - 2557.5 / 4: 28.3570 28.5412 27.6643 27.2819 27.1998 27.4282 27.5459 27.4002 - 3287.9 / 5: 28.2175 28.1635 27.4141 26.7167 26.9325 27.7459 27.7151 27.4877 - 4018.4 / 6: 28.0824 27.9723 27.7204 26.8768 26.9810 27.7220 28.0643 27.8845 - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - DATA SET : COAD - FILENAME : coads_clim.des - SUBSET : 20 by 6 points (LONGITUDE-T (hour)) - LATITUDE : 0 (interpolated) - ... listing every 2th point - 179W 175W 171W 167W 163W 159W 155W 151W 147W 143W - 81 83 85 87 89 91 93 95 97 99 - 366 / 1: 28.5733 27.8591 27.7604 27.6391 27.4060 26.8263 26.5254 26.2984 26.0875 25.9927 - 1096.5 / 2: 28.3556 28.1094 27.6296 27.2492 27.1351 26.6124 26.6061 26.5371 26.0686 26.4401 - 1827 / 3: 27.9375 27.9731 27.8331 27.5333 27.0461 27.2091 27.2154 27.0734 26.8618 26.6585 - 2557.5 / 4: 27.9532 27.8072 27.9180 27.9515 27.7807 27.6695 27.5253 27.3922 27.3396 27.2409 - 3287.9 / 5: 28.3764 27.9455 28.2888 28.1323 27.9742 27.6899 27.5363 27.5056 26.9876 27.0593 - 4018.4 / 6: 28.1912 28.2880 28.4249 28.1785 27.8359 27.8262 27.5394 27.3811 27.1444 27.0317 - - SEA SURFACE TEMPERATURE - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - T (hour): 0.7575 to 4383.6675 - E: N/A - F: N/A - DATA SET: ./data/coads_clim.des - - Total # of data points: 97200 (180*90*1*6*1*1) - # flagged as bad data: 44263 - Minimum value: -2.3 - Maximum value: 32 - Mean value: 17.806 (unweighted average) - Standard deviation: 9.6933 - currently SET data sets: - 1> ./data/coads_clim.des - COAD - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:6 - Deg C on grid GHB1 with -1.E+34 for missing data - X=20E:20E(380) Y=90S:90N - - time range: 366 to 4018.425 - - 2> ./data/coads_clim_irreg.des (default) - COAD - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - Deg C on grid GJR1 with -1.E+34 for missing data - X=20E:20E(380) Y=90S:90N - - time range: 366 to 3287.94 - - GRID GJR1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME2 T (hour) 3 i 366 3287.9 full - - L T TBOX TBOXLO - 1> 366 730.485 0.7575 - 2> 1096.485 1460.97 731.2425 - 3> 3287.94 2191.455 2192.2125 - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - DATA SET : COAD - FILENAME : coads_clim_irreg.des - SUBSET : 8 by 3 points (LATITUDE-T (hour)) - LONGITUDE: 140W (interpolated) - 7S 5S 3S 1S 1N 3N 5N 7N - 42 43 44 45 46 47 48 49 - 366 / 1: 27.4922 27.0790 26.2177 25.8117 25.8974 26.4319 26.8698 26.9781 - 1096.5 / 2: 27.5431 27.4416 26.6992 26.3360 26.4503 26.8090 27.0577 26.9103 - 3287.9 / 3: 28.2175 28.1635 27.4141 26.7167 26.9325 27.7459 27.7151 27.4877 - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - DATA SET : COAD - FILENAME : coads_clim_irreg.des - SUBSET : 20 by 3 points (LONGITUDE-T (hour)) - LATITUDE : 0 (interpolated) - ... listing every 2th point - 179W 175W 171W 167W 163W 159W 155W 151W 147W 143W - 81 83 85 87 89 91 93 95 97 99 - 366 / 1: 28.5733 27.8591 27.7604 27.6391 27.4060 26.8263 26.5254 26.2984 26.0875 25.9927 - 1096.5 / 2: 28.3556 28.1094 27.6296 27.2492 27.1351 26.6124 26.6061 26.5371 26.0686 26.4401 - 3287.9 / 3: 28.3764 27.9455 28.2888 28.1323 27.9742 27.6899 27.5363 27.5056 26.9876 27.0593 - - SEA SURFACE TEMPERATURE - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - T (hour): 0.7575 to 4383.6675 - E: N/A - F: N/A - DATA SET: ./data/coads_clim_irreg.des - - Total # of data points: 48600 (180*90*1*3*1*1) - # flagged as bad data: 21459 - Minimum value: -2.2 - Maximum value: 31 - Mean value: 17.359 (unweighted average) - Standard deviation: 9.8799 - currently SET data sets: - 1> ./data/coads_clim_missing_step1.des (default) - COAD - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - Deg C on grid GQO1 with -1.E+34 for missing data - X=20E:20E(380) Y=90S:90N - - time range: 366 to 3287.94 - - currently SET data sets: - 1> ./data/coads_clim_missing_stepN.des (default) - COAD - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - Deg C on grid GCQ1 with -1.E+34 for missing data - X=20E:20E(380) Y=90S:90N - - time range: 366 to 3287.94 - - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - DATA SET : COAD - FILENAME : coads_clim_missing_stepN.des - SUBSET : 180 by 90 by 3 points (LONGITUDE-LATITUDE-T (hour)) - ... listing every 14th point - 21E 49E 77E 105E 133E 161E 171W 143W 115W 87W 59W 31W 3W - 1 15 29 43 57 71 85 99 113 127 141 155 169 - ---- L:1 T: 366 - 89N / 90: .... .... .... .... .... .... .... .... .... .... .... .... .... - 87N / 89: .... .... .... .... .... .... .... .... .... .... .... .... .... - 85N / 88: .... .... .... .... .... .... .... .... .... .... .... .... .... - 83N / 87: .... .... .... .... .... .... .... .... .... .... .... .... .... - 81N / 86: .... .... .... .... .... .... .... .... .... .... .... .... .... - 79N / 85: .... .... .... .... .... .... .... .... .... .... .... .... .... - 77N / 84: .... .... .... .... .... .... .... .... .... .... .... .... .... - 75N / 83: 1.5550 .... .... .... .... .... .... .... .... .... .... .... .... - 73N / 82: 3.7205 0.5871 .... .... .... .... .... .... .... .... .... .... 6.0000 - 71N / 81: 5.0934 0.6186 .... .... .... .... .... .... .... .... .... .... 4.1287 - 69N / 80: 5.4500 0.4500 .... .... .... .... .... .... .... .... .... 3.0000 4.8885 - 67N / 79: .... .... .... .... .... .... .... .... .... .... 1.6000 4.3120 4.5952 - 65N / 78: 0.0718 .... .... .... .... .... .... .... .... .... 0.8767 5.0952 5.2194 - 63N / 77: 0.5111 .... .... .... .... .... -0.8467 .... .... .... 0.8500 5.9579 6.4264 - 61N / 76: 1.2269 .... .... .... .... 0.3500 0.1214 6.0000 .... .... 0.8000 6.2213 8.1800 - 59N / 75: 2.9000 .... .... .... .... 1.1500 1.6321 5.7458 .... .... 2.7033 7.3962 7.6307 - 57N / 74: 3.0388 .... .... .... .... 1.1250 2.8750 5.2914 .... .... 0.5308 7.5317 6.4543 - 55N / 73: 3.2013 .... .... .... .... 0.6459 3.6936 5.2583 .... .... -0.4622 7.4551 6.5806 - 53N / 72: .... .... .... .... .... 1.1996 4.2880 5.7998 .... .... 1.2333 7.7514 7.1047 - 51N / 71: .... .... .... .... .... 2.1893 4.2290 6.2278 .... .... -0.2905 10.2702 9.3957 - 49N / 70: .... .... .... .... .... 2.5412 4.6069 6.6250 .... 3.0125 0.6527 11.6186 10.2970 - 47N / 69: .... .... .... .... .... 2.9602 5.5956 7.6881 .... 3.1794 1.2426 12.6823 11.3385 - 45N / 68: .... 3.3167 .... .... .... 4.4480 7.0744 8.9556 .... 3.4525 2.2314 13.7819 12.2254 - 43N / 67: .... 4.7221 .... .... 2.4068 6.9255 8.9646 10.3486 .... 3.1277 6.3709 14.7211 13.0557 - 41N / 66: .... 4.8365 .... .... 4.3635 9.6898 10.9751 11.9288 .... .... 15.5498 15.4318 .... - 39N / 65: 15.4366 8.6262 .... .... 8.8837 12.8097 12.5484 13.4077 .... .... 18.6870 16.2119 .... - 37N / 64: 16.0318 8.0667 .... .... 12.3600 15.0324 13.9800 15.0021 .... .... 19.2616 17.1874 15.1152 - 35N / 63: 16.2507 .... .... .... 13.3810 16.7364 15.4538 16.4689 .... .... 19.5398 18.1828 15.5754 - 33N / 62: 16.7783 .... .... .... 18.5491 18.0244 16.8419 17.7790 .... .... 20.1041 19.2886 .... - 31N / 61: 17.9786 .... .... .... 19.9407 19.3074 18.5523 19.1648 17.8500 17.4183 20.8400 20.0450 .... - 29N / 60: .... 18.9119 .... .... 20.5019 20.6291 20.1257 20.1026 16.8274 20.6176 22.0740 20.6790 .... - 27N / 59: .... 20.8300 .... .... 21.3326 22.0026 21.6086 20.9032 17.8323 23.7582 23.1533 21.5070 .... - 25N / 58: .... .... .... .... 22.3495 23.8248 23.2779 21.5841 18.8269 24.8593 24.0919 22.3336 .... - 23N / 57: .... .... .... .... 23.6807 25.0783 24.0186 22.3034 20.2700 25.5195 24.7930 22.7905 .... - 21N / 56: .... .... .... .... 24.7072 25.9688 24.7256 22.9079 22.0270 26.4860 25.3493 22.9386 .... - 19N / 55: .... .... .... 22.6383 25.9015 26.6802 25.6078 23.5313 23.8074 27.0339 25.8612 23.4342 .... - 17N / 54: .... .... .... .... 26.8579 27.0091 25.9585 24.1694 25.2841 27.0695 26.1928 23.8282 .... - 15N / 53: .... 25.4074 .... .... 27.4243 27.0312 26.1212 24.8069 26.3029 26.9280 26.3665 24.2289 .... - 13N / 52: .... 25.3684 .... .... 27.7591 27.2962 26.4994 25.1181 26.6522 26.8229 26.6502 24.8118 .... - 11N / 51: .... 25.8188 27.8253 27.8789 27.8781 27.9126 26.8606 25.7058 27.0455 26.2577 26.8927 25.3867 .... - 9N / 50: .... 27.2000 27.8411 26.3897 28.1118 28.0045 27.4964 26.6136 26.7775 26.8093 27.0323 25.9038 .... - 7N / 49: .... 26.1127 27.5677 26.0238 28.0494 28.7383 27.8221 27.0807 26.9304 27.5097 26.8869 26.5924 .... - 5N / 48: .... 26.1020 27.8127 26.5939 28.3079 28.7465 28.1379 27.1305 27.5967 27.5257 .... 26.9872 27.8152 - 3N / 47: .... 26.2525 27.9241 26.8579 28.5464 28.9967 27.6071 26.2341 25.5129 27.0847 .... 27.0516 28.3003 - 1N / 46: .... 26.4437 28.2462 27.2532 28.7823 28.7893 27.5856 25.9683 24.2075 25.8155 .... 27.0482 27.9197 - 1S / 45: .... 27.0068 28.1397 27.7957 28.9633 29.1200 27.9352 26.0170 24.4768 24.9226 .... 27.0957 27.0229 - 3S / 44: .... 27.6137 28.2304 27.5868 28.9390 29.4694 27.9904 26.2519 24.6900 24.9094 .... 27.1568 26.8912 - 5S / 43: .... 28.2419 28.1710 28.0148 28.8535 29.6225 28.6900 26.6985 24.8254 25.1700 .... 27.1489 26.2070 - 7S / 42: .... 28.7080 28.1502 28.3020 28.9045 29.3650 29.1496 27.0025 25.1069 24.9153 .... 27.3142 25.4034 - 9S / 41: .... 28.4648 28.3721 28.3145 28.9483 29.3450 28.9944 28.0900 25.3219 24.4950 .... 27.2335 24.8536 - 11S / 40: .... 28.0725 28.3709 28.1023 29.6033 29.3462 29.1837 28.2076 25.4194 24.1157 .... 27.2170 24.0960 - 13S / 39: .... 28.1510 28.0187 27.8073 30.0000 29.1755 29.0507 28.1889 25.3569 23.7371 .... 27.3476 23.4967 - 15S / 38: .... 28.0800 27.7714 27.2320 .... 28.6954 28.8358 28.2165 25.5737 22.9877 .... 27.0100 23.0127 - 17S / 37: .... 28.2857 26.9409 26.4882 .... 28.2425 28.1673 27.9296 25.5046 22.3944 .... 26.7405 22.9133 - 19S / 36: .... 27.6122 26.1967 25.0514 .... 27.7552 27.8560 27.5000 25.4854 21.0467 .... 26.6053 22.7264 - 21S / 35: .... 27.5942 25.6929 24.4583 .... 26.3083 26.9939 27.2162 25.5969 21.8550 .... 26.4333 22.5890 - 23S / 34: .... 27.0610 25.3542 23.6893 .... 26.0250 26.0238 26.6869 25.5377 21.5647 .... 26.5500 22.9482 - 25S / 33: .... 26.6974 25.2817 22.6691 .... 25.5528 25.4389 25.4775 25.2041 21.3664 .... 25.4338 23.1510 - 27S / 32: .... 25.8897 24.5000 22.1500 .... 24.8603 24.1297 24.3742 24.8067 21.0300 .... 24.8628 22.9100 - 29S / 31: .... 24.6453 23.8583 21.1592 .... 24.0408 23.2608 23.1950 24.4300 21.1500 .... 23.4096 22.5004 - 31S / 30: .... 23.8611 22.6739 20.5028 .... 23.2794 21.8597 21.8462 22.7130 21.3700 .... 22.5936 22.0041 - 33S / 29: .... 22.1584 21.2131 19.2542 18.8470 22.4742 20.8053 20.6944 22.4667 20.3670 .... 20.5743 20.8167 - 35S / 28: 21.0773 20.5794 19.8725 18.4359 18.1523 22.1463 20.1823 19.6000 20.4500 19.2450 21.7333 19.9441 19.5977 - 37S / 27: 21.2868 19.1969 17.8018 16.7463 16.9175 20.0833 19.0935 18.1643 18.1575 18.4543 .... 18.6379 17.6856 - 39S / 26: 20.7459 17.5123 15.9600 14.8400 16.3010 18.3956 18.3997 16.9135 16.9625 17.0514 18.6879 16.7446 15.4764 - 41S / 25: 16.4473 14.4439 14.4573 13.5944 14.4030 17.4141 17.2206 15.2329 .... 15.7317 16.7885 14.7942 12.6567 - 43S / 24: 14.3660 8.5494 12.8214 11.9753 13.3524 15.0229 16.4218 13.6950 .... 13.6375 13.9769 12.5075 10.4100 - 45S / 23: 8.4925 7.5150 11.1860 10.5093 11.8445 13.9774 14.9780 13.0112 .... 12.0000 12.2990 10.5100 7.9967 - 47S / 22: 6.0621 5.7733 7.4400 9.0110 10.8888 13.2065 13.4630 11.6550 .... 10.2400 11.1783 8.6200 6.4500 - 49S / 21: 4.4209 4.2067 6.0325 6.1945 9.7129 10.8775 12.9344 .... .... 9.3675 10.3435 5.2987 4.5450 - 51S / 20: 1.8375 3.6387 3.1564 5.7656 8.0480 10.0143 11.0070 10.9750 .... 9.2000 9.8156 3.6350 2.5350 - 53S / 19: 1.0891 2.8667 2.1950 4.1600 6.5630 9.4455 9.7660 .... .... 8.5500 8.5604 2.1900 1.0550 - 55S / 18: 0.6469 2.6750 2.3478 4.1000 5.1560 6.5700 8.0000 .... 7.8000 7.8786 6.9458 1.3933 0.5425 - 57S / 17: 0.4114 2.0529 1.8425 2.4260 4.2929 4.7383 7.0125 3.9825 .... 6.8667 5.7852 0.7771 0.5529 - 59S / 16: 0.6236 1.3700 1.4776 2.0189 3.2000 4.0325 4.4000 1.8360 .... 6.5150 2.7940 0.0694 0.0558 - 61S / 15: 0.8438 1.3312 1.2144 1.2400 1.9900 2.2237 3.2143 0.8080 3.6867 .... 1.6781 0.0830 0.6620 - 63S / 14: 0.8813 0.7700 1.1575 0.4750 1.2344 1.1619 1.6000 0.5280 2.3275 3.4000 1.1667 -0.3333 0.4050 - 65S / 13: 0.3667 -0.0356 0.8123 0.0871 0.1521 0.3286 0.5200 0.4550 0.5067 1.8325 -0.9000 -0.5500 0.2060 - 67S / 12: -0.6667 -0.9250 0.5317 .... .... -0.3906 -0.0233 -1.2000 -0.1537 0.8722 .... -0.2533 0.2300 - 69S / 11: 0.0425 .... 1.2033 .... .... -0.6200 -0.1364 .... -0.4150 0.1786 .... 0.5000 0.0700 - 71S / 10: .... .... .... .... .... .... -0.7040 0.0000 .... .... .... -1.0167 -1.0100 - 73S / 9: .... .... .... .... .... .... -0.3500 .... .... .... .... -1.2000 .... - 75S / 8: .... .... .... .... .... .... -1.1750 .... .... .... .... -0.4233 .... - 77S / 7: .... .... .... .... .... .... -0.6250 .... .... .... .... -0.8678 .... - 79S / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... - 81S / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... - 83S / 4: .... .... .... .... .... .... .... .... .... .... .... .... .... - 85S / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... - 87S / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... - 89S / 1: .... .... .... .... .... .... .... .... .... .... .... .... .... - ---- L:2 T: 1096.485 - 89N / 90: .... .... .... .... .... .... .... .... .... .... .... .... .... - 87N / 89: .... .... .... .... .... .... .... .... .... .... .... .... .... - 85N / 88: .... .... .... .... .... .... .... .... .... .... .... .... .... - 83N / 87: .... .... .... .... .... .... .... .... .... .... .... .... .... - 81N / 86: .... .... .... .... .... .... .... .... .... .... .... .... .... - 79N / 85: .... .... .... .... .... .... .... .... .... .... .... .... .... - 77N / 84: .... .... .... .... .... .... .... .... .... .... .... .... 1.0000 - 75N / 83: 2.5283 .... .... .... .... .... .... .... .... .... .... .... -1.5500 - 73N / 82: 4.0984 0.3050 .... .... .... .... .... .... .... .... .... .... -0.1087 - 71N / 81: 4.6724 0.1046 .... .... .... .... .... .... .... .... .... .... 2.7960 - 69N / 80: 4.1971 0.0000 .... .... .... .... .... .... .... .... .... .... 3.8097 - 67N / 79: .... .... .... .... .... .... .... .... .... .... 1.6000 3.7596 4.3979 - 65N / 78: -0.0625 .... .... .... .... .... -0.2000 .... .... .... 0.4221 4.4633 4.8655 - 63N / 77: 0.0745 .... .... .... .... .... -1.7560 .... .... .... -0.2712 5.8617 6.3740 - 61N / 76: 0.4814 .... .... .... .... 2.4947 -1.5404 4.7000 .... .... 2.1750 6.4468 7.9008 - 59N / 75: 1.6399 .... .... .... .... 2.0000 0.0008 5.2586 .... .... 1.3824 7.0788 6.9452 - 57N / 74: 2.0350 .... .... .... .... 1.0500 2.0321 4.7989 .... .... 1.5986 7.2850 5.6111 - 55N / 73: 2.0609 .... .... .... .... 0.2492 3.3744 4.9032 .... .... 1.1250 7.1357 5.8718 - 53N / 72: .... .... .... .... .... 0.6807 3.7572 5.4648 .... .... -2.2000 7.5902 6.5032 - 51N / 71: .... .... .... .... .... 1.6469 3.7090 5.7799 .... .... -1.1807 10.0328 8.4741 - 49N / 70: .... .... .... .... .... 1.8588 4.3120 6.2452 .... .... -0.3648 11.3871 9.5089 - 47N / 69: .... .... .... .... .... 2.3163 5.1206 7.3744 .... 1.9691 -0.0062 12.2219 10.1338 - 45N / 68: .... 3.6500 .... .... .... 3.6392 6.7455 8.6209 .... 2.8224 0.9671 13.4022 11.7268 - 43N / 67: .... 4.6473 .... .... 1.3648 5.8679 8.5111 9.8453 .... 2.4835 5.0119 14.2248 12.1942 - 41N / 66: .... 4.7861 .... .... 3.0570 8.4719 10.3051 11.4213 .... .... 14.7565 15.0002 .... - 39N / 65: 15.0270 8.4385 .... .... 7.3566 11.4912 12.1752 12.8504 .... .... 18.0116 15.7098 .... - 37N / 64: 15.3211 .... .... .... 10.8839 13.7783 13.3446 14.3616 .... .... 18.5301 16.5598 14.7798 - 35N / 63: 15.5386 .... .... .... 11.5113 15.5093 14.6245 15.8741 .... .... 18.7629 17.4589 15.1510 - 33N / 62: 16.0085 .... .... .... 18.0727 16.9360 16.0912 17.1296 .... .... 19.2839 18.5539 .... - 31N / 61: 15.5003 .... .... .... 19.3688 18.1290 17.7404 18.4996 16.6805 17.1886 20.0995 19.3186 .... - 29N / 60: .... 17.9540 .... .... 19.6179 19.5035 19.2114 19.5065 16.2029 20.0335 21.3973 20.0384 .... - 27N / 59: .... 19.2895 .... .... 20.5089 21.1212 20.6266 20.3709 17.2076 23.4895 22.6302 20.8561 .... - 25N / 58: .... .... .... .... 21.6717 22.9821 22.7977 21.2932 18.4958 24.6577 23.6045 21.6921 .... - 23N / 57: .... .... .... .... 23.0715 24.4551 23.5951 22.2253 19.8338 25.2474 24.2970 22.1740 .... - 21N / 56: .... .... .... .... 24.4908 25.3921 24.3804 22.7672 21.2780 25.9320 24.9042 22.6199 .... - 19N / 55: .... .... .... 21.9809 25.6218 26.2087 25.0433 23.4827 23.0766 26.7496 25.4450 22.7637 .... - 17N / 54: .... .... .... .... 26.5571 26.5915 25.7194 24.1352 24.9649 26.7912 25.7799 22.9853 .... - 15N / 53: .... 25.4092 .... .... 27.2200 26.8560 25.9733 24.7324 26.0247 26.0114 26.0969 23.6629 .... - 13N / 52: .... 25.4771 .... .... 27.5037 27.5150 26.1672 25.1314 26.5769 26.9127 26.4016 24.1635 .... - 11N / 51: .... 25.9857 28.0015 26.7764 27.5853 27.5652 26.8019 25.7690 27.0738 26.0525 26.6473 24.7404 .... - 9N / 50: .... 26.4544 28.2288 26.5501 27.7983 28.1491 27.4758 26.8996 26.9893 26.8687 26.7045 25.5850 .... - 7N / 49: .... 26.2609 27.8816 26.4870 27.6868 28.5162 27.7850 27.0898 27.0539 28.0777 26.7957 26.6243 .... - 5N / 48: .... 26.4131 27.9713 26.8734 27.7794 28.6949 27.8279 26.7964 26.6060 28.0647 .... 26.8913 28.0427 - 3N / 47: .... 26.5913 28.1749 26.9865 28.4875 29.1712 27.8616 26.6257 26.2312 27.7434 .... 27.1225 28.5353 - 1N / 46: .... 26.8491 28.6115 27.3775 28.2466 28.9555 27.5331 26.4050 26.4266 26.5208 .... 27.2455 28.5152 - 1S / 45: .... 27.3064 28.4080 27.9040 28.4680 29.2010 27.7261 26.4751 24.6569 26.0235 .... 27.4196 27.9833 - 3S / 44: .... 27.9602 28.2742 28.3296 28.8893 29.5794 28.3834 26.5213 25.4925 26.6125 .... 27.6638 27.3859 - 5S / 43: .... 28.2396 28.0572 28.3176 28.7901 29.3721 28.2957 26.7982 25.7981 26.6252 .... 27.6334 27.2052 - 7S / 42: .... 28.6815 28.2612 28.2786 28.7463 29.4168 28.8967 27.4410 26.1729 26.5534 .... 27.7374 26.6993 - 9S / 41: .... 28.4790 28.3137 28.5841 28.7040 29.4256 29.1270 28.3372 25.9400 25.9795 .... 27.6607 26.1480 - 11S / 40: .... 28.2829 28.6414 28.3339 29.3503 29.1771 29.1492 28.2032 25.9871 25.9624 .... 27.5419 25.5310 - 13S / 39: .... 28.3226 28.3738 28.5679 .... 29.0269 29.1852 28.3130 25.7940 25.0490 .... 27.3347 25.0641 - 15S / 38: .... 27.6600 28.2896 27.7713 .... 28.8387 29.0820 28.4626 25.9384 24.0311 .... 27.4378 24.5993 - 17S / 37: .... 28.0370 27.5108 27.3368 .... 28.5764 28.4527 27.9555 26.0744 23.1143 .... 27.5051 24.0454 - 19S / 36: .... 27.7741 27.0157 26.4074 .... 28.0387 28.2036 28.0002 26.1485 23.5125 .... 27.4665 23.8172 - 21S / 35: .... 27.5781 26.3341 25.2805 .... 26.9356 27.5820 27.6097 26.0473 22.5984 .... 27.0379 23.6919 - 23S / 34: .... 27.4302 26.2267 24.4780 .... 26.2735 26.9770 26.9149 25.9504 22.6780 .... 27.2712 23.6569 - 25S / 33: .... 27.1106 25.3692 23.3572 .... 25.8933 25.9116 26.4028 25.5674 21.8153 .... 26.4321 23.8424 - 27S / 32: .... 26.2136 25.2324 22.5225 .... 25.1302 24.7613 25.0533 25.4781 22.3270 .... 26.0936 23.3768 - 29S / 31: .... 25.1187 23.9464 21.6124 .... 24.6507 24.1035 24.0470 24.7712 21.6070 .... 25.1327 23.1977 - 31S / 30: .... 24.1655 22.8869 20.9082 .... 23.9437 22.8024 22.8395 23.8185 21.6885 .... 23.6302 22.7434 - 33S / 29: .... 23.0193 21.8809 19.7883 19.8276 23.0018 21.7527 21.3169 21.5627 21.0475 .... 22.6172 21.4319 - 35S / 28: 20.9734 21.1547 20.7043 18.8851 18.9300 22.5357 20.8505 20.5353 22.0240 20.2323 22.8700 20.8750 20.1989 - 37S / 27: 21.7237 19.9086 18.4469 17.2227 17.7141 20.7386 19.8244 18.3687 19.8411 19.7704 .... 19.5269 18.6070 - 39S / 26: 22.0397 18.3765 16.5437 15.5140 17.0989 19.0830 18.8514 17.5866 .... 18.7405 19.1255 18.2102 15.7730 - 41S / 25: 17.8526 16.3651 15.5023 14.2290 15.4274 17.6752 17.4792 15.9576 18.1650 17.1268 17.4312 16.4894 13.9250 - 43S / 24: 13.4949 9.2836 13.3727 12.3420 13.9432 16.1595 17.0221 14.6650 16.3947 14.2424 14.2672 14.1820 10.6937 - 45S / 23: 8.3840 7.6307 11.6679 11.2457 12.8452 14.4788 15.0178 13.5082 .... 12.0600 12.7115 10.9652 8.1250 - 47S / 22: 6.7167 6.0540 8.2500 9.1190 10.9825 12.8255 13.8707 12.4650 .... 10.8575 11.1699 8.5767 5.5000 - 49S / 21: 4.8858 5.4150 5.9088 6.2255 10.1339 11.2443 12.5930 11.4167 .... 10.0842 10.6338 7.4442 4.9572 - 51S / 20: 2.3210 3.9822 3.9846 5.7576 7.7675 9.9738 10.8426 10.1840 .... 10.0000 10.2138 5.1999 3.5755 - 53S / 19: 1.6715 3.2515 2.9610 4.1500 6.9224 8.5819 9.1357 .... .... 8.1500 8.4738 3.8071 2.1017 - 55S / 18: 1.3318 3.1000 2.6454 3.0000 5.7914 6.1994 7.9489 6.6000 .... 7.7692 7.2001 1.8440 1.0135 - 57S / 17: 0.9767 1.9018 1.9953 2.7540 5.2543 4.5237 6.5740 3.7000 .... 7.5635 6.0275 1.7052 1.1491 - 59S / 16: 1.1588 2.1100 1.9107 2.7212 3.8002 3.8360 4.9089 1.7892 .... 6.7092 3.6242 1.2592 0.7025 - 61S / 15: 0.9937 1.7382 1.5836 2.3000 3.0766 2.3196 3.4012 1.9993 .... 4.4088 2.4941 0.0903 0.4673 - 63S / 14: 1.0650 1.2982 1.6343 1.2108 1.5136 1.6090 1.8151 1.2050 .... 3.1150 1.2840 0.3114 0.9075 - 65S / 13: 0.6686 0.1303 0.8185 0.2022 0.5104 0.3644 1.0079 0.2598 1.8500 1.8860 0.7000 0.0021 0.9191 - 67S / 12: 0.4623 -0.5492 0.0874 .... .... -0.0052 -0.2830 -0.0203 1.1982 0.4323 -0.5000 0.2120 -0.0205 - 69S / 11: -0.3438 .... -0.2335 .... .... -1.3365 -0.1277 .... -0.2716 -0.3135 .... -0.7000 -0.2723 - 71S / 10: .... .... .... .... .... -1.6000 -1.0248 .... -1.0000 .... .... -1.5633 -0.9349 - 73S / 9: .... .... .... .... .... .... -1.0216 .... .... .... .... -1.4771 .... - 75S / 8: .... .... .... .... .... .... -0.6115 .... .... .... -1.6061 -1.2224 .... - 77S / 7: .... .... .... .... .... .... -0.6974 .... .... .... .... -1.3728 .... - 79S / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... - 81S / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... - 83S / 4: .... .... .... .... .... .... .... .... .... .... .... .... .... - 85S / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... - 87S / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... - 89S / 1: .... .... .... .... .... .... .... .... .... .... .... .... .... - ---- L:3 T: 3287.94 - 89N / 90: .... .... .... .... .... .... .... .... .... .... .... .... .... - 87N / 89: .... .... .... .... .... .... .... .... .... .... .... .... .... - 85N / 88: .... .... .... .... .... .... .... .... .... .... .... .... .... - 83N / 87: .... .... .... .... .... .... .... .... .... .... .... .... .... - 81N / 86: .... .... .... .... .... .... .... .... .... .... .... .... .... - 79N / 85: 2.5000 .... .... .... .... .... .... .... .... .... .... .... 0.3750 - 77N / 84: 3.4400 .... .... .... .... .... .... .... .... .... .... .... -0.6250 - 75N / 83: 2.6000 .... .... .... .... .... .... .... .... .... .... .... -0.8460 - 73N / 82: 4.4409 0.5100 .... .... .... .... .... .... .... .... -1.3667 .... -0.8225 - 71N / 81: 5.4388 0.3400 .... .... .... .... .... .... .... .... .... .... 3.6240 - 69N / 80: 5.9773 .... .... .... .... .... .... .... .... .... .... 7.0333 5.7596 - 67N / 79: .... .... .... .... .... .... .... .... .... .... -0.6000 6.2775 5.0971 - 65N / 78: 1.4558 .... .... .... .... .... -0.2350 .... .... .... -0.0333 5.5736 5.9673 - 63N / 77: 3.4200 .... .... .... .... .... 0.6400 .... .... .... -1.6700 6.6186 7.9123 - 61N / 76: 3.4160 .... .... .... .... 2.5655 0.7717 6.6667 .... .... 1.8667 7.0529 8.8649 - 59N / 75: 5.6405 .... .... .... .... 2.0611 0.9867 6.9750 .... .... 2.0100 7.4621 8.4868 - 57N / 74: 5.9800 .... .... .... .... 3.0850 2.7321 6.8916 .... .... 0.9500 8.2306 8.5784 - 55N / 73: 8.0252 .... .... .... .... 2.3115 4.5506 6.4479 .... .... 3.7000 8.3973 9.5559 - 53N / 72: .... .... .... .... .... 2.6937 4.8088 6.7680 .... .... 2.8900 9.2218 10.4003 - 51N / 71: .... .... .... .... .... 3.2503 4.9117 6.8015 .... .... 2.5529 11.3034 10.8005 - 49N / 70: .... .... .... .... .... 3.0545 5.1517 7.2869 .... 2.7152 3.2139 12.3364 11.3225 - 47N / 69: .... 2.7000 .... .... .... 3.3659 5.8927 8.3193 .... 2.7223 3.4114 13.6252 13.5042 - 45N / 68: .... 10.0571 .... .... .... 4.8410 7.4161 9.4102 .... 3.6258 3.8275 14.6266 14.1615 - 43N / 67: .... 12.7416 .... .... 6.7189 6.9232 9.1093 10.6638 .... 4.2112 7.7514 15.5934 14.2717 - 41N / 66: .... 12.2736 .... .... 9.4889 10.0966 11.2221 12.2000 .... 7.4752 17.0025 16.5220 .... - 39N / 65: 18.3061 17.6344 .... .... 13.1272 13.1707 13.2898 13.6927 .... .... 20.0227 17.1398 .... - 37N / 64: 18.5141 17.9063 .... .... 15.3549 15.3983 15.0444 15.3707 .... .... 20.4579 18.0923 17.5707 - 35N / 63: 18.7384 .... .... .... 16.8426 17.6000 16.7552 16.7829 .... .... 20.4300 19.0107 17.7344 - 33N / 62: 18.9508 .... .... .... 21.5277 18.7307 18.1471 17.9534 .... .... 21.0125 20.0088 .... - 31N / 61: 18.7025 .... .... .... 22.5800 20.5256 20.0583 19.4733 17.4200 24.2768 21.8716 20.6057 .... - 29N / 60: .... 25.7695 .... .... 22.5733 22.5723 21.6635 20.2684 16.2180 24.9511 23.1845 21.2752 .... - 27N / 59: .... 25.4122 .... .... 23.6602 24.0498 22.5812 21.2723 16.7570 26.3925 24.2020 21.7641 .... - 25N / 58: .... .... .... .... 25.2143 25.5321 24.3246 21.9995 17.9540 26.9720 24.9484 22.4602 .... - 23N / 57: .... .... .... .... 26.6917 26.0579 24.8529 22.5776 20.2795 27.1909 25.5700 22.9362 .... - 21N / 56: .... .... .... .... 27.8576 26.6563 25.3957 23.1102 22.1345 27.7200 26.0730 23.0700 .... - 19N / 55: .... .... .... 26.8300 28.4227 27.1402 25.9305 23.6595 23.7516 28.1905 26.6716 23.3293 .... - 17N / 54: .... .... .... .... 28.8737 27.3141 26.3835 24.2809 25.2149 28.3251 27.0405 23.5656 .... - 15N / 53: .... 29.6770 .... .... 29.0020 27.5648 26.8352 25.0370 26.4873 28.2522 27.1788 24.0619 .... - 13N / 52: .... 29.7957 .... .... 29.0452 27.9505 26.9712 25.7979 27.9270 29.0510 27.4940 24.9544 .... - 11N / 51: .... 29.9600 29.6100 29.9485 29.1975 28.5281 27.2419 26.2275 28.2569 28.6935 27.4943 25.4832 .... - 9N / 50: .... 29.0000 29.2055 29.9940 29.1339 28.5629 28.0300 26.8865 28.1333 28.7602 27.5655 26.2932 .... - 7N / 49: .... 28.0975 29.2157 29.8208 29.1260 28.9489 28.3765 27.6896 27.9185 28.6481 27.8075 26.9731 .... - 5N / 48: .... 28.5837 28.9960 29.6031 29.2848 28.8200 28.2841 28.0367 28.0050 28.1459 .... 27.4683 28.6742 - 3N / 47: .... 28.8228 28.8738 29.6720 29.1708 29.1114 27.9356 27.4223 27.0792 27.4624 .... 27.7005 28.7616 - 1N / 46: .... 28.9241 28.9488 29.6711 29.2204 29.2053 27.9759 26.7708 26.2331 24.6843 .... 27.7243 28.5300 - 1S / 45: .... 28.8412 28.8305 29.7569 29.3532 29.1575 28.6016 27.3479 26.1727 23.7911 .... 27.7941 27.3629 - 3S / 44: .... 28.7131 28.7504 29.7065 28.8744 29.3853 29.0300 27.7041 26.2321 24.2555 .... 27.9582 27.0115 - 5S / 43: .... 28.2603 28.5437 29.3988 28.6953 29.4181 29.4700 28.0004 26.6977 25.2607 .... 28.0911 26.9673 - 7S / 42: .... 28.4590 28.1998 29.0577 28.3900 29.3039 29.4132 28.1829 26.9186 25.5194 .... 28.0741 26.4868 - 9S / 41: .... 27.4126 27.8088 28.6505 28.0595 29.3987 29.4488 28.6235 26.8222 25.9759 .... 27.9426 25.9048 - 11S / 40: .... 27.3103 27.5905 28.4839 28.4948 28.7670 29.4367 28.7400 26.7212 25.1000 .... 27.5707 25.3691 - 13S / 39: .... 27.6357 27.1885 28.1500 29.0750 28.2963 29.0007 28.3957 26.0152 23.9237 .... 27.2888 23.9450 - 15S / 38: .... 27.4167 26.8054 27.3040 .... 27.6349 28.8591 28.2997 25.6416 22.9757 .... 26.8832 23.2593 - 17S / 37: .... 26.5750 26.3315 26.3547 .... 26.9741 27.8112 27.7504 25.2758 22.2731 .... 26.9240 22.9660 - 19S / 36: .... 26.3800 25.6018 25.5118 .... 26.2589 26.8355 27.3067 25.1597 21.8636 .... 26.4242 22.7498 - 21S / 35: .... 26.3962 24.9433 24.4010 .... 25.0882 26.0626 26.7074 25.1090 21.2900 .... 26.0265 22.2924 - 23S / 34: .... 25.5153 23.9938 23.6290 .... 23.7930 24.8873 25.7890 24.6791 21.6500 .... 25.0545 22.3546 - 25S / 33: .... 25.0498 23.4605 22.4263 .... 23.5336 23.1886 24.5767 23.8922 21.0542 .... 24.0368 22.0510 - 27S / 32: .... 24.0579 22.4800 21.3337 .... 22.9638 22.6794 22.9685 23.3845 20.5250 .... 23.4248 21.4712 - 29S / 31: .... 22.2597 20.8924 20.4105 .... 22.1940 21.7986 21.7838 22.1056 20.3556 .... 22.2542 20.3204 - 31S / 30: .... 21.4554 20.1326 19.0221 .... 21.7333 20.2379 20.6162 21.0963 19.7514 .... 21.3928 19.9943 - 33S / 29: .... 20.1174 18.7177 17.8882 17.9775 20.9526 18.9529 18.9267 19.8433 18.7275 .... 19.5163 19.1597 - 35S / 28: 17.4848 19.0512 17.2736 16.4823 17.0525 20.2329 17.9626 17.6227 19.3250 17.7730 18.5000 18.2119 17.9181 - 37S / 27: 19.0393 18.4096 15.7970 14.9422 15.5643 18.4488 16.9900 16.4614 16.4140 16.1780 .... 17.4080 16.3346 - 39S / 26: 19.3745 17.0241 15.1964 13.3975 14.9817 16.2655 15.9971 15.1350 15.1000 15.0855 13.9982 15.9207 14.3391 - 41S / 25: 17.5125 14.8843 13.7848 11.6755 13.7962 15.6597 15.2020 13.3413 .... 13.7836 12.0222 14.1123 13.4425 - 43S / 24: 14.8667 8.6540 13.1967 10.4214 12.3867 14.4790 14.1935 12.8180 .... 12.5791 9.4489 13.2311 12.1000 - 45S / 23: 14.8333 .... 10.7300 10.0000 10.7150 12.2380 12.7589 11.4000 .... 11.8200 8.4016 .... .... - 47S / 22: .... .... 6.0500 .... .... 11.8750 11.9511 10.9667 .... 9.6250 7.7883 7.6600 .... - 49S / 21: .... .... 5.4000 .... .... 10.7667 11.0757 9.8500 .... 8.9767 7.4821 6.6840 .... - 51S / 20: .... .... 2.5333 .... .... 8.8000 .... 9.2571 .... 7.6900 7.7200 3.7350 .... - 53S / 19: .... 3.4133 .... .... .... 8.4600 .... .... 5.0000 6.6850 7.1267 1.1217 .... - 55S / 18: .... .... .... .... .... .... .... .... .... 6.5000 6.0667 1.4680 .... - 57S / 17: .... .... .... .... .... .... .... .... .... 5.2000 5.2657 1.0000 .... - 59S / 16: .... .... -0.4400 .... .... .... .... .... .... .... 1.5000 -0.8000 .... - 61S / 15: .... .... .... .... .... .... .... .... .... .... -0.4500 .... .... - 63S / 14: .... .... .... .... .... .... .... .... .... 2.0700 .... .... .... - 65S / 13: .... .... .... .... .... .... .... .... .... .... .... .... .... - 67S / 12: .... .... .... .... .... .... .... .... .... .... .... .... .... - 69S / 11: .... .... .... .... .... .... .... .... .... .... .... .... .... - 71S / 10: .... .... .... .... .... .... .... .... .... .... .... .... .... - 73S / 9: .... .... .... .... .... .... .... .... .... .... .... .... .... - 75S / 8: .... .... .... .... .... .... .... .... .... .... .... .... .... - 77S / 7: .... .... .... .... .... .... .... .... .... .... .... .... .... - 79S / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... - 81S / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... - 83S / 4: .... .... .... .... .... .... .... .... .... .... .... .... .... - 85S / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... - 87S / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... - 89S / 1: .... .... .... .... .... .... .... .... .... .... .... .... .... - - - -!added in bn450 10/97 *kob* -GO bn_reset bn_negative_t -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_negative_t -GO bn_negative_t -! bn450_negative_t - 10/97 - -! test behavior of negative time step values (unsupported except as absolute -! dates prior to Ferret version 4.5) - - -! define an axis of negative and positive time steps and test all -! transformation on it over various ranges - -DEFINE AXIS/T=-10:10:2 tax -LET tvar = t[gt=tax] -LET tgap = IF MOD(T,4) eq 0 then tvar - -! ****** test transformations ******** - -GO bn_negative_t.sub tvar ave ! like var and din -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tvar[t=-5:5@ave] - VARIABLE : T[GT=TAX] - T : -5 to 5 (averaged) - 0.000000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tvar[t=-5:-8@ave] - VARIABLE : T[GT=TAX] - T : -8 to -5 (averaged) - -6.66667 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tvar[l=2:7@ave] - VARIABLE : T[GT=TAX] - T : -9 to 3 (averaged) - -3.00000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tvar[l=2:4@ave] - VARIABLE : T[GT=TAX] - T : -9 to -3 (averaged) - -6.00000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tvar[l=@ave] - VARIABLE : T[GT=TAX] - T : -11 to 11 (averaged) - 0.000000 - -GO bn_negative_t.sub tvar iin -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tvar[t=-5:5@iin] - VARIABLE : T[GT=TAX] - indef. integ. on T - SUBSET : 5 points (T) - -4 / 4: -8.0000 - -2 / 5: -12.0000 - 0 / 6: -12.0000 - 2 / 7: -8.0000 - 4 / 8: 0.0000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tvar[t=-5:-8@iin] - VARIABLE : T[GT=TAX] - indef. integ. on T - SUBSET : 2 points (T) - -8 / 2: -8.0000 - -6 / 3: -20.0000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tvar[l=2:7@iin] - VARIABLE : T[GT=TAX] - indef. integ. on T - SUBSET : 6 points (T) - -8 / 2: -16.0000 - -6 / 3: -28.0000 - -4 / 4: -36.0000 - -2 / 5: -40.0000 - 0 / 6: -40.0000 - 2 / 7: -36.0000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tvar[l=2:4@iin] - VARIABLE : T[GT=TAX] - indef. integ. on T - SUBSET : 3 points (T) - -8 / 2: -16.0000 - -6 / 3: -28.0000 - -4 / 4: -36.0000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tvar[l=@iin] - VARIABLE : T[GT=TAX] - indef. integ. on T - SUBSET : 11 points (T) - -10 / 1: -20.0000 - -8 / 2: -36.0000 - -6 / 3: -48.0000 - -4 / 4: -56.0000 - -2 / 5: -60.0000 - 0 / 6: -60.0000 - 2 / 7: -56.0000 - 4 / 8: -48.0000 - 6 / 9: -36.0000 - 8 / 10: -20.0000 - 10 / 11: 0.0000 - -GO bn_negative_t.sub tvar sum -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tvar[t=-5:5@sum] - VARIABLE : T[GT=TAX] - T : -5 to 5 (summed) - 0.000000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tvar[t=-5:-8@sum] - VARIABLE : T[GT=TAX] - T : -8 to -5 (summed) - -14.0000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tvar[l=2:7@sum] - VARIABLE : T[GT=TAX] - T : -9 to 3 (summed) - -18.0000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tvar[l=2:4@sum] - VARIABLE : T[GT=TAX] - T : -9 to -3 (summed) - -18.0000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tvar[l=@sum] - VARIABLE : T[GT=TAX] - T : -11 to 11 (summed) - 0.000000 - -GO bn_negative_t.sub tvar rsu -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tvar[t=-5:5@rsu] - VARIABLE : T[GT=TAX] - running sum on T - SUBSET : 5 points (T) - -4 / 4: -4.00000 - -2 / 5: -6.00000 - 0 / 6: -6.00000 - 2 / 7: -4.00000 - 4 / 8: 0.00000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tvar[t=-5:-8@rsu] - VARIABLE : T[GT=TAX] - running sum on T - SUBSET : 2 points (T) - -8 / 2: -8.0000 - -6 / 3: -14.0000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tvar[l=2:7@rsu] - VARIABLE : T[GT=TAX] - running sum on T - SUBSET : 6 points (T) - -8 / 2: -8.0000 - -6 / 3: -14.0000 - -4 / 4: -18.0000 - -2 / 5: -20.0000 - 0 / 6: -20.0000 - 2 / 7: -18.0000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tvar[l=2:4@rsu] - VARIABLE : T[GT=TAX] - running sum on T - SUBSET : 3 points (T) - -8 / 2: -8.0000 - -6 / 3: -14.0000 - -4 / 4: -18.0000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tvar[l=@rsu] - VARIABLE : T[GT=TAX] - running sum on T - SUBSET : 11 points (T) - -10 / 1: -10.0000 - -8 / 2: -18.0000 - -6 / 3: -24.0000 - -4 / 4: -28.0000 - -2 / 5: -30.0000 - 0 / 6: -30.0000 - 2 / 7: -28.0000 - 4 / 8: -24.0000 - 6 / 9: -18.0000 - 8 / 10: -10.0000 - 10 / 11: 0.0000 - -GO bn_negative_t.sub tvar shf -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tvar[t=-5:5@shf] - VARIABLE : T[GT=TAX] - shifted by 1 pts on T - SUBSET : 5 points (T) - -4 / 4: -2.00000 - -2 / 5: 0.00000 - 0 / 6: 2.00000 - 2 / 7: 4.00000 - 4 / 8: 6.00000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tvar[t=-5:-8@shf] - VARIABLE : T[GT=TAX] - shifted by 1 pts on T - SUBSET : 2 points (T) - -8 / 2: -6.00000 - -6 / 3: -4.00000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tvar[l=2:7@shf] - VARIABLE : T[GT=TAX] - shifted by 1 pts on T - SUBSET : 6 points (T) - -8 / 2: -6.00000 - -6 / 3: -4.00000 - -4 / 4: -2.00000 - -2 / 5: 0.00000 - 0 / 6: 2.00000 - 2 / 7: 4.00000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tvar[l=2:4@shf] - VARIABLE : T[GT=TAX] - shifted by 1 pts on T - SUBSET : 3 points (T) - -8 / 2: -6.00000 - -6 / 3: -4.00000 - -4 / 4: -2.00000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tvar[l=@shf] - VARIABLE : T[GT=TAX] - shifted by 1 pts on T - SUBSET : 11 points (T) - -10 / 1: -8.0000 - -8 / 2: -6.0000 - -6 / 3: -4.0000 - -4 / 4: -2.0000 - -2 / 5: 0.0000 - 0 / 6: 2.0000 - 2 / 7: 4.0000 - 4 / 8: 6.0000 - 6 / 9: 8.0000 - 8 / 10: 10.0000 - 10 / 11: .... - -GO bn_negative_t.sub tvar min ! like @max -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tvar[t=-5:5@min] - VARIABLE : T[GT=TAX] - T : -5 to 5 (minimum) - -4.00000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tvar[t=-5:-8@min] - VARIABLE : T[GT=TAX] - T : -8 to -5 (minimum) - -8.00000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tvar[l=2:7@min] - VARIABLE : T[GT=TAX] - T : -9 to 3 (minimum) - -8.00000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tvar[l=2:4@min] - VARIABLE : T[GT=TAX] - T : -9 to -3 (minimum) - -8.00000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tvar[l=@min] - VARIABLE : T[GT=TAX] - T : -11 to 11 (minimum) - -10.0000 - -GO bn_negative_t.sub tvar ddf -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tvar[t=-5:5@ddf] - VARIABLE : T[GT=TAX] - forward derivative on T - SUBSET : 5 points (T) - -4 / 4: 1.00000 - -2 / 5: 1.00000 - 0 / 6: 1.00000 - 2 / 7: 1.00000 - 4 / 8: 1.00000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tvar[t=-5:-8@ddf] - VARIABLE : T[GT=TAX] - forward derivative on T - SUBSET : 2 points (T) - -8 / 2: 1.00000 - -6 / 3: 1.00000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tvar[l=2:7@ddf] - VARIABLE : T[GT=TAX] - forward derivative on T - SUBSET : 6 points (T) - -8 / 2: 1.00000 - -6 / 3: 1.00000 - -4 / 4: 1.00000 - -2 / 5: 1.00000 - 0 / 6: 1.00000 - 2 / 7: 1.00000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tvar[l=2:4@ddf] - VARIABLE : T[GT=TAX] - forward derivative on T - SUBSET : 3 points (T) - -8 / 2: 1.00000 - -6 / 3: 1.00000 - -4 / 4: 1.00000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tvar[l=@ddf] - VARIABLE : T[GT=TAX] - forward derivative on T - SUBSET : 11 points (T) - -10 / 1: 1.00000 - -8 / 2: 1.00000 - -6 / 3: 1.00000 - -4 / 4: 1.00000 - -2 / 5: 1.00000 - 0 / 6: 1.00000 - 2 / 7: 1.00000 - 4 / 8: 1.00000 - 6 / 9: 1.00000 - 8 / 10: 1.00000 - 10 / 11: .... - -GO bn_negative_t.sub tvar ddb ! @ddc like ddf and ddb -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tvar[t=-5:5@ddb] - VARIABLE : T[GT=TAX] - backwards derivative on T - SUBSET : 5 points (T) - -4 / 4: 1.00000 - -2 / 5: 1.00000 - 0 / 6: 1.00000 - 2 / 7: 1.00000 - 4 / 8: 1.00000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tvar[t=-5:-8@ddb] - VARIABLE : T[GT=TAX] - backwards derivative on T - SUBSET : 2 points (T) - -8 / 2: 1.00000 - -6 / 3: 1.00000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tvar[l=2:7@ddb] - VARIABLE : T[GT=TAX] - backwards derivative on T - SUBSET : 6 points (T) - -8 / 2: 1.00000 - -6 / 3: 1.00000 - -4 / 4: 1.00000 - -2 / 5: 1.00000 - 0 / 6: 1.00000 - 2 / 7: 1.00000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tvar[l=2:4@ddb] - VARIABLE : T[GT=TAX] - backwards derivative on T - SUBSET : 3 points (T) - -8 / 2: 1.00000 - -6 / 3: 1.00000 - -4 / 4: 1.00000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tvar[l=@ddb] - VARIABLE : T[GT=TAX] - backwards derivative on T - SUBSET : 11 points (T) - -10 / 1: .... - -8 / 2: 1.00000 - -6 / 3: 1.00000 - -4 / 4: 1.00000 - -2 / 5: 1.00000 - 0 / 6: 1.00000 - 2 / 7: 1.00000 - 4 / 8: 1.00000 - 6 / 9: 1.00000 - 8 / 10: 1.00000 - 10 / 11: 1.00000 - -GO bn_negative_t.sub tvar sbx ! like sbn, swl, shn, spz -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tvar[t=-5:5@sbx] - VARIABLE : T[GT=TAX] - box smoothed by 3 pts on T - SUBSET : 5 points (T) - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 - 4 / 8: 4.00000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tvar[t=-5:-8@sbx] - VARIABLE : T[GT=TAX] - box smoothed by 3 pts on T - SUBSET : 2 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tvar[l=2:7@sbx] - VARIABLE : T[GT=TAX] - box smoothed by 3 pts on T - SUBSET : 6 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tvar[l=2:4@sbx] - VARIABLE : T[GT=TAX] - box smoothed by 3 pts on T - SUBSET : 3 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tvar[l=@sbx] - VARIABLE : T[GT=TAX] - box smoothed by 3 pts on T - SUBSET : 11 points (T) - -10 / 1: .... - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 - 4 / 8: 4.00000 - 6 / 9: 6.00000 - 8 / 10: 8.00000 - 10 / 11: .... - -GO bn_negative_t.sub tvar loc:-2.2 -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tvar[t=-5:5@loc:-2.2] - VARIABLE : T of -2.2 in T[GT=TAX] - T : -5 to 5 (location of -2.2) - -2.20000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tvar[t=-5:-8@loc:-2.2] - VARIABLE : T of -2.2 in T[GT=TAX] - T : -8 to -5 (location of -2.2) - .... -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tvar[l=2:7@loc:-2.2] - VARIABLE : T of -2.2 in T[GT=TAX] - T : -9 to 3 (location of -2.2) - -2.20000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tvar[l=2:4@loc:-2.2] - VARIABLE : T of -2.2 in T[GT=TAX] - T : -9 to -3 (location of -2.2) - .... -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tvar[l=@loc:-2.2] - VARIABLE : T of -2.2 in T[GT=TAX] - T : -11 to 11 (location of -2.2) - -2.20000 - -GO bn_negative_t.sub tvar weq:-2.2 -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tvar[t=-5:5@weq:-2.2] - VARIABLE : T[GT=TAX] - weighted equal of -2.2 on T - SUBSET : 5 points (T) - -4 / 4: 0.100000 - -2 / 5: 0.900000 - 0 / 6: .... - 2 / 7: .... - 4 / 8: .... -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tvar[t=-5:-8@weq:-2.2] - VARIABLE : T[GT=TAX] - weighted equal of -2.2 on T - SUBSET : 2 points (T) - -8 / 2:.... - -6 / 3:.... -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tvar[l=2:7@weq:-2.2] - VARIABLE : T[GT=TAX] - weighted equal of -2.2 on T - SUBSET : 6 points (T) - -8 / 2: .... - -6 / 3: .... - -4 / 4: 0.100000 - -2 / 5: 0.900000 - 0 / 6: .... - 2 / 7: .... -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tvar[l=2:4@weq:-2.2] - VARIABLE : T[GT=TAX] - weighted equal of -2.2 on T - SUBSET : 3 points (T) - -8 / 2:.... - -6 / 3:.... - -4 / 4:.... -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tvar[l=@weq:-2.2] - VARIABLE : T[GT=TAX] - weighted equal of -2.2 on T - SUBSET : 11 points (T) - -10 / 1: .... - -8 / 2: .... - -6 / 3: .... - -4 / 4: 0.100000 - -2 / 5: 0.900000 - 0 / 6: .... - 2 / 7: .... - 4 / 8: .... - 6 / 9: .... - 8 / 10: .... - 10 / 11: .... - - -! transformations requiring gappy data to test -LIST tgap - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR - SUBSET : 11 points (T) - -10 / 1: .... - -8 / 2: -8.00000 - -6 / 3: .... - -4 / 4: -4.00000 - -2 / 5: .... - 0 / 6: 0.00000 - 2 / 7: .... - 4 / 8: 4.00000 - 6 / 9: .... - 8 / 10: 8.00000 - 10 / 11: .... -GO bn_negative_t.sub tgap ngd ! like @nbd -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tgap[t=-5:5@ngd] - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR (# of points) - T : -5 to 5 (number of valid) - 3.00000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tgap[t=-5:-8@ngd] - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR (# of points) - T : -8 to -5 (number of valid) - 1.00000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tgap[l=2:7@ngd] - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR (# of points) - T : -9 to 3 (number of valid) - 3.00000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tgap[l=2:4@ngd] - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR (# of points) - T : -9 to -3 (number of valid) - 2.00000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tgap[l=@ngd] - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR (# of points) - T : -11 to 11 (number of valid) - 5.00000 - -GO bn_negative_t.sub tgap fav ! like fln (fnr not implemented) -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST tgap[t=-5:5@fav] - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR - ave-filled by 3 pts on T - SUBSET : 5 points (T) - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 - 4 / 8: 4.00000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST tgap[t=-5:-8@fav] - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR - ave-filled by 3 pts on T - SUBSET : 2 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST tgap[l=2:7@fav] - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR - ave-filled by 3 pts on T - SUBSET : 6 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST tgap[l=2:4@fav] - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR - ave-filled by 3 pts on T - SUBSET : 3 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST tgap[l=@fav] - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR - ave-filled by 3 pts on T - SUBSET : 11 points (T) - -10 / 1: -8.00000 - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 - 4 / 8: 4.00000 - 6 / 9: 6.00000 - 8 / 10: 8.00000 - 10 / 11: 8.00000 - - -LIST tvar[t=-2.2@itp] ! test "@itp" - VARIABLE : T[GT=TAX] - T : -2.2 (interpolated) - -2.20000 - - -! ****** test regridding ******** - -! source axis -DEFINE AXIS/t=-9:9:1 tsrc -LET a = t[gt=tsrc] - -! destination axis -DEFINE AXIS/t=-10:10:2 tdst - -! regrid by various means -LET blin = a[gt=tdst@lin] -LET bave = a[gt=tdst@ave] -LET basn = a[gt=tdst@asn] - -! test each of these over various ranges -GO bn_negative_t.sub blin nul -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST blin[t=-5:5@nul] - VARIABLE : A[GT=TDST@LIN] - SUBSET : 5 points (T) - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 - 4 / 8: 4.00000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST blin[t=-5:-8@nul] - VARIABLE : A[GT=TDST@LIN] - SUBSET : 2 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST blin[l=2:7@nul] - VARIABLE : A[GT=TDST@LIN] - SUBSET : 6 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST blin[l=2:4@nul] - VARIABLE : A[GT=TDST@LIN] - SUBSET : 3 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST blin[l=@nul] - VARIABLE : A[GT=TDST@LIN] - SUBSET : 11 points (T) - -10 / 1: .... - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 - 4 / 8: 4.00000 - 6 / 9: 6.00000 - 8 / 10: 8.00000 - 10 / 11: .... - -GO bn_negative_t.sub bave nul -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST bave[t=-5:5@nul] - VARIABLE : A[GT=TDST@AVE] - SUBSET : 5 points (T) - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 - 4 / 8: 4.00000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST bave[t=-5:-8@nul] - VARIABLE : A[GT=TDST@AVE] - SUBSET : 2 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST bave[l=2:7@nul] - VARIABLE : A[GT=TDST@AVE] - SUBSET : 6 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST bave[l=2:4@nul] - VARIABLE : A[GT=TDST@AVE] - SUBSET : 3 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST bave[l=@nul] - VARIABLE : A[GT=TDST@AVE] - SUBSET : 11 points (T) - -10 / 1: -9.00000 - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 - 4 / 8: 4.00000 - 6 / 9: 6.00000 - 8 / 10: 8.00000 - 10 / 11: 9.00000 - -GO bn_negative_t.sub basn nul -! bn450_neg_t_trans.sub - -! support routine for bn450_negative_t.jnl - -! call as -! GO bn450_neg_t_sub varname transform - -! tvar axis runs from -10 to 10 by 1's - -LIST $1[t=-5:5@$2] ! neg/pos t endpoints - !-> LIST basn[t=-5:5@nul] - VARIABLE : A[GT=TDST@ASN] - SUBSET : 5 points (T) - -4 / 4: -6.00000 - -2 / 5: -5.00000 - 0 / 6: -4.00000 - 2 / 7: -3.00000 - 4 / 8: -2.00000 -LIST $1[t=-5:-8@$2] ! neg/neq t endpoints - !-> LIST basn[t=-5:-8@nul] - VARIABLE : A[GT=TDST@ASN] - SUBSET : 2 points (T) - -8 / 2: -8.00000 - -6 / 3: -7.00000 -LIST $1[l=2:7@$2] ! neg/pos l endpoints - !-> LIST basn[l=2:7@nul] - VARIABLE : A[GT=TDST@ASN] - SUBSET : 6 points (T) - -8 / 2: -8.00000 - -6 / 3: -7.00000 - -4 / 4: -6.00000 - -2 / 5: -5.00000 - 0 / 6: -4.00000 - 2 / 7: -3.00000 -LIST $1[l=2:4@$2] ! neg/neg l endpoints - !-> LIST basn[l=2:4@nul] - VARIABLE : A[GT=TDST@ASN] - SUBSET : 3 points (T) - -8 / 2: -8.00000 - -6 / 3: -7.00000 - -4 / 4: -6.00000 -LIST $1[l=@$2] ! unspecified limits (neg/pos) - !-> LIST basn[l=@nul] - VARIABLE : A[GT=TDST@ASN] - SUBSET : 11 points (T) - -10 / 1: -9.00000 - -8 / 2: -8.00000 - -6 / 3: -7.00000 - -4 / 4: -6.00000 - -2 / 5: -5.00000 - 0 / 6: -4.00000 - 2 / 7: -3.00000 - 4 / 8: -2.00000 - 6 / 9: -1.00000 - 8 / 10: 0.00000 - 10 / 11: 1.00000 - - -! true calendar axis -DEFINE AXIS/t=1-jan-1980:30-jan-1980:24/UNITS=hours tcal -! we can regrid by association -LIST a[gt=tcal@asn] - VARIABLE : T[GT=TSRC] - regrid: 24 hour on T@ASN - SUBSET : 30 points (T (HOURS)) - 692160 / 1: -9.00000 - 692184 / 2: -8.00000 - 692208 / 3: -7.00000 - 692232 / 4: -6.00000 - 692256 / 5: -5.00000 - 692280 / 6: -4.00000 - 692304 / 7: -3.00000 - 692328 / 8: -2.00000 - 692352 / 9: -1.00000 - 692376 / 10: 0.00000 - 692400 / 11: 1.00000 - 692424 / 12: 2.00000 - 692448 / 13: 3.00000 - 692472 / 14: 4.00000 - 692496 / 15: 5.00000 - 692520 / 16: 6.00000 - 692544 / 17: 7.00000 - 692568 / 18: 8.00000 - 692592 / 19: 9.00000 - 692616 / 20: .... - 692640 / 21: .... - 692664 / 22: .... - 692688 / 23: .... - 692712 / 24: .... - 692736 / 25: .... - 692760 / 26: .... - 692784 / 27: .... - 692808 / 28: .... - 692832 / 29: .... - 692856 / 30: .... -LIST/t=1-jan-1980:30-jan-1980 a[gt=tcal@asn] - VARIABLE : T[GT=TSRC] - regrid: 24 hour on T@ASN - SUBSET : 30 points (T (HOURS)) - 692160 / 1: -9.00000 - 692184 / 2: -8.00000 - 692208 / 3: -7.00000 - 692232 / 4: -6.00000 - 692256 / 5: -5.00000 - 692280 / 6: -4.00000 - 692304 / 7: -3.00000 - 692328 / 8: -2.00000 - 692352 / 9: -1.00000 - 692376 / 10: 0.00000 - 692400 / 11: 1.00000 - 692424 / 12: 2.00000 - 692448 / 13: 3.00000 - 692472 / 14: 4.00000 - 692496 / 15: 5.00000 - 692520 / 16: 6.00000 - 692544 / 17: 7.00000 - 692568 / 18: 8.00000 - 692592 / 19: 9.00000 - 692616 / 20: .... - 692640 / 21: .... - 692664 / 22: .... - 692688 / 23: .... - 692712 / 24: .... - 692736 / 25: .... - 692760 / 26: .... - 692784 / 27: .... - 692808 / 28: .... - 692832 / 29: .... - 692856 / 30: .... -! but any other regridding operation is nonsense -SET MODE ignore_error -LIST a[gt=tcal] ! deliberate error - VARIABLE : T[GT=TSRC] - regrid: 24 hour on T - SUBSET : 30 points (T (HOURS)) - 692160 / 1:.... - 692184 / 2:.... - 692208 / 3:.... - 692232 / 4:.... - 692256 / 5:.... - 692280 / 6:.... - 692304 / 7:.... - 692328 / 8:.... - 692352 / 9:.... - 692376 / 10:.... - 692400 / 11:.... - 692424 / 12:.... - 692448 / 13:.... - 692472 / 14:.... - 692496 / 15:.... - 692520 / 16:.... - 692544 / 17:.... - 692568 / 18:.... - 692592 / 19:.... - 692616 / 20:.... - 692640 / 21:.... - 692664 / 22:.... - 692688 / 23:.... - 692712 / 24:.... - 692736 / 25:.... - 692760 / 26:.... - 692784 / 27:.... - 692808 / 28:.... - 692832 / 29:.... - 692856 / 30:.... -CANCEL MODE ignore_error - - -!added in bn450 10/97 *kob* -GO bn_reset bn_xact_regrid -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_xact_regrid -GO bn_xact_regrid -! BN450_xact_regrid.jnl - -! 10/97 - test "exact match" regridding -! wherein destination points are filled only if they exactly match -! the coordinate of the cooesponding point on the source grid - -! X axis tests -CANCEL REGION -GO bn_xact_regrid.sub X -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSCOARSE] - regrid: 1 delta on X@XACT - SUBSET : 5 points (X) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GX=XDfine@XACT] - VARIABLE : X[GX=XSCOARSE] - regrid: 0.5 delta on X@XACT - SUBSET : 9 points (X) - 1 / 1: 1.00000 - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... - 5 / 9: 5.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSFINE] - regrid: 1 delta on X@XACT - SUBSET : 5 points (X) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GX=XDfine@XACT] - VARIABLE : X[GX=XSOFFSETBIG] - regrid: 0.5 delta on X@XACT - SUBSET : 9 points (X) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GX=XDfine@XACT] - VARIABLE : X[GX=XSOFFSETSMALL] - regrid: 0.5 delta on X@XACT - SUBSET : 9 points (X) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSFINEOFFSET] - regrid: 1 delta on X@XACT - SUBSET : 5 points (X) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... -SET REGION/X=2:4 -GO bn_xact_regrid.sub X -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSCOARSE] - regrid: 1 delta on X@XACT - SUBSET : 3 points (X) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GX=XDfine@XACT] - VARIABLE : X[GX=XSCOARSE] - regrid: 0.5 delta on X@XACT - SUBSET : 5 points (X) - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSFINE] - regrid: 1 delta on X@XACT - SUBSET : 3 points (X) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GX=XDfine@XACT] - VARIABLE : X[GX=XSOFFSETBIG] - regrid: 0.5 delta on X@XACT - SUBSET : 5 points (X) - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GX=XDfine@XACT] - VARIABLE : X[GX=XSOFFSETSMALL] - regrid: 0.5 delta on X@XACT - SUBSET : 5 points (X) - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSFINEOFFSET] - regrid: 1 delta on X@XACT - SUBSET : 3 points (X) - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... -SET REGION/X=1:5 -GO bn_xact_regrid.sub X -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSCOARSE] - regrid: 1 delta on X@XACT - SUBSET : 5 points (X) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GX=XDfine@XACT] - VARIABLE : X[GX=XSCOARSE] - regrid: 0.5 delta on X@XACT - SUBSET : 9 points (X) - 1 / 1: 1.00000 - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... - 5 / 9: 5.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSFINE] - regrid: 1 delta on X@XACT - SUBSET : 5 points (X) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GX=XDfine@XACT] - VARIABLE : X[GX=XSOFFSETBIG] - regrid: 0.5 delta on X@XACT - SUBSET : 9 points (X) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GX=XDfine@XACT] - VARIABLE : X[GX=XSOFFSETSMALL] - regrid: 0.5 delta on X@XACT - SUBSET : 9 points (X) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSFINEOFFSET] - regrid: 1 delta on X@XACT - SUBSET : 5 points (X) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... -SET REGION/X=1.5:4.5 -GO bn_xact_regrid.sub X -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSCOARSE] - regrid: 1 delta on X@XACT - SUBSET : 3 points (X) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GX=XDfine@XACT] - VARIABLE : X[GX=XSCOARSE] - regrid: 0.5 delta on X@XACT - SUBSET : 7 points (X) - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSFINE] - regrid: 1 delta on X@XACT - SUBSET : 3 points (X) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GX=XDfine@XACT] - VARIABLE : X[GX=XSOFFSETBIG] - regrid: 0.5 delta on X@XACT - SUBSET : 7 points (X) - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GX=XDfine@XACT] - VARIABLE : X[GX=XSOFFSETSMALL] - regrid: 0.5 delta on X@XACT - SUBSET : 7 points (X) - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSFINEOFFSET] - regrid: 1 delta on X@XACT - SUBSET : 3 points (X) - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... -SET REGION/X=0:6 -GO bn_xact_regrid.sub X -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSCOARSE] - regrid: 1 delta on X@XACT - SUBSET : 5 points (X) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GX=XDfine@XACT] - VARIABLE : X[GX=XSCOARSE] - regrid: 0.5 delta on X@XACT - SUBSET : 9 points (X) - 1 / 1: 1.00000 - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... - 5 / 9: 5.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSFINE] - regrid: 1 delta on X@XACT - SUBSET : 5 points (X) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GX=XDfine@XACT] - VARIABLE : X[GX=XSOFFSETBIG] - regrid: 0.5 delta on X@XACT - SUBSET : 9 points (X) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GX=XDfine@XACT] - VARIABLE : X[GX=XSOFFSETSMALL] - regrid: 0.5 delta on X@XACT - SUBSET : 9 points (X) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GX=XDcoarse@XACT] - VARIABLE : X[GX=XSFINEOFFSET] - regrid: 1 delta on X@XACT - SUBSET : 5 points (X) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... - -! Y axis tests -CANCEL REGION -GO bn_xact_regrid.sub Y -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSCOARSE] - regrid: 1 delta on Y@XACT - SUBSET : 5 points (Y) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GY=YDfine@XACT] - VARIABLE : Y[GY=YSCOARSE] - regrid: 0.5 delta on Y@XACT - SUBSET : 9 points (Y) - 1 / 1: 1.00000 - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... - 5 / 9: 5.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSFINE] - regrid: 1 delta on Y@XACT - SUBSET : 5 points (Y) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GY=YDfine@XACT] - VARIABLE : Y[GY=YSOFFSETBIG] - regrid: 0.5 delta on Y@XACT - SUBSET : 9 points (Y) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GY=YDfine@XACT] - VARIABLE : Y[GY=YSOFFSETSMALL] - regrid: 0.5 delta on Y@XACT - SUBSET : 9 points (Y) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSFINEOFFSET] - regrid: 1 delta on Y@XACT - SUBSET : 5 points (Y) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... -SET REGION/Y=2:4 -GO bn_xact_regrid.sub Y -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSCOARSE] - regrid: 1 delta on Y@XACT - SUBSET : 3 points (Y) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GY=YDfine@XACT] - VARIABLE : Y[GY=YSCOARSE] - regrid: 0.5 delta on Y@XACT - SUBSET : 5 points (Y) - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSFINE] - regrid: 1 delta on Y@XACT - SUBSET : 3 points (Y) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GY=YDfine@XACT] - VARIABLE : Y[GY=YSOFFSETBIG] - regrid: 0.5 delta on Y@XACT - SUBSET : 5 points (Y) - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GY=YDfine@XACT] - VARIABLE : Y[GY=YSOFFSETSMALL] - regrid: 0.5 delta on Y@XACT - SUBSET : 5 points (Y) - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSFINEOFFSET] - regrid: 1 delta on Y@XACT - SUBSET : 3 points (Y) - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... -SET REGION/Y=1:5 -GO bn_xact_regrid.sub Y -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSCOARSE] - regrid: 1 delta on Y@XACT - SUBSET : 5 points (Y) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GY=YDfine@XACT] - VARIABLE : Y[GY=YSCOARSE] - regrid: 0.5 delta on Y@XACT - SUBSET : 9 points (Y) - 1 / 1: 1.00000 - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... - 5 / 9: 5.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSFINE] - regrid: 1 delta on Y@XACT - SUBSET : 5 points (Y) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GY=YDfine@XACT] - VARIABLE : Y[GY=YSOFFSETBIG] - regrid: 0.5 delta on Y@XACT - SUBSET : 9 points (Y) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GY=YDfine@XACT] - VARIABLE : Y[GY=YSOFFSETSMALL] - regrid: 0.5 delta on Y@XACT - SUBSET : 9 points (Y) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSFINEOFFSET] - regrid: 1 delta on Y@XACT - SUBSET : 5 points (Y) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... -SET REGION/Y=1.5:4.5 -GO bn_xact_regrid.sub Y -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSCOARSE] - regrid: 1 delta on Y@XACT - SUBSET : 3 points (Y) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GY=YDfine@XACT] - VARIABLE : Y[GY=YSCOARSE] - regrid: 0.5 delta on Y@XACT - SUBSET : 7 points (Y) - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSFINE] - regrid: 1 delta on Y@XACT - SUBSET : 3 points (Y) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GY=YDfine@XACT] - VARIABLE : Y[GY=YSOFFSETBIG] - regrid: 0.5 delta on Y@XACT - SUBSET : 7 points (Y) - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GY=YDfine@XACT] - VARIABLE : Y[GY=YSOFFSETSMALL] - regrid: 0.5 delta on Y@XACT - SUBSET : 7 points (Y) - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSFINEOFFSET] - regrid: 1 delta on Y@XACT - SUBSET : 3 points (Y) - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... -SET REGION/Y=0:6 -GO bn_xact_regrid.sub Y -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSCOARSE] - regrid: 1 delta on Y@XACT - SUBSET : 5 points (Y) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GY=YDfine@XACT] - VARIABLE : Y[GY=YSCOARSE] - regrid: 0.5 delta on Y@XACT - SUBSET : 9 points (Y) - 1 / 1: 1.00000 - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... - 5 / 9: 5.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSFINE] - regrid: 1 delta on Y@XACT - SUBSET : 5 points (Y) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GY=YDfine@XACT] - VARIABLE : Y[GY=YSOFFSETBIG] - regrid: 0.5 delta on Y@XACT - SUBSET : 9 points (Y) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GY=YDfine@XACT] - VARIABLE : Y[GY=YSOFFSETSMALL] - regrid: 0.5 delta on Y@XACT - SUBSET : 9 points (Y) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GY=YDcoarse@XACT] - VARIABLE : Y[GY=YSFINEOFFSET] - regrid: 1 delta on Y@XACT - SUBSET : 5 points (Y) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... - -! Z axis tests -CANCEL REGION -GO bn_xact_regrid.sub Z -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSCOARSE] - regrid: 1 delta on Z@XACT - SUBSET : 5 points (Z) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSCOARSE] - regrid: 0.5 delta on Z@XACT - SUBSET : 9 points (Z) - 1 / 1: 1.00000 - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... - 5 / 9: 5.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSFINE] - regrid: 1 delta on Z@XACT - SUBSET : 5 points (Z) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSOFFSETBIG] - regrid: 0.5 delta on Z@XACT - SUBSET : 9 points (Z) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSOFFSETSMALL] - regrid: 0.5 delta on Z@XACT - SUBSET : 9 points (Z) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSFINEOFFSET] - regrid: 1 delta on Z@XACT - SUBSET : 5 points (Z) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... -SET REGION/Z=2:4 -GO bn_xact_regrid.sub Z -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSCOARSE] - regrid: 1 delta on Z@XACT - SUBSET : 3 points (Z) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSCOARSE] - regrid: 0.5 delta on Z@XACT - SUBSET : 5 points (Z) - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSFINE] - regrid: 1 delta on Z@XACT - SUBSET : 3 points (Z) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSOFFSETBIG] - regrid: 0.5 delta on Z@XACT - SUBSET : 5 points (Z) - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSOFFSETSMALL] - regrid: 0.5 delta on Z@XACT - SUBSET : 5 points (Z) - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSFINEOFFSET] - regrid: 1 delta on Z@XACT - SUBSET : 3 points (Z) - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... -SET REGION/Z=1:5 -GO bn_xact_regrid.sub Z -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSCOARSE] - regrid: 1 delta on Z@XACT - SUBSET : 5 points (Z) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSCOARSE] - regrid: 0.5 delta on Z@XACT - SUBSET : 9 points (Z) - 1 / 1: 1.00000 - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... - 5 / 9: 5.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSFINE] - regrid: 1 delta on Z@XACT - SUBSET : 5 points (Z) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSOFFSETBIG] - regrid: 0.5 delta on Z@XACT - SUBSET : 9 points (Z) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSOFFSETSMALL] - regrid: 0.5 delta on Z@XACT - SUBSET : 9 points (Z) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSFINEOFFSET] - regrid: 1 delta on Z@XACT - SUBSET : 5 points (Z) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... -SET REGION/Z=1.5:4.5 -GO bn_xact_regrid.sub Z -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSCOARSE] - regrid: 1 delta on Z@XACT - SUBSET : 3 points (Z) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSCOARSE] - regrid: 0.5 delta on Z@XACT - SUBSET : 7 points (Z) - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSFINE] - regrid: 1 delta on Z@XACT - SUBSET : 3 points (Z) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSOFFSETBIG] - regrid: 0.5 delta on Z@XACT - SUBSET : 7 points (Z) - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSOFFSETSMALL] - regrid: 0.5 delta on Z@XACT - SUBSET : 7 points (Z) - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSFINEOFFSET] - regrid: 1 delta on Z@XACT - SUBSET : 3 points (Z) - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... -SET REGION/Z=0:6 -GO bn_xact_regrid.sub Z -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSCOARSE] - regrid: 1 delta on Z@XACT - SUBSET : 5 points (Z) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSCOARSE] - regrid: 0.5 delta on Z@XACT - SUBSET : 9 points (Z) - 1 / 1: 1.00000 - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... - 5 / 9: 5.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSFINE] - regrid: 1 delta on Z@XACT - SUBSET : 5 points (Z) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSOFFSETBIG] - regrid: 0.5 delta on Z@XACT - SUBSET : 9 points (Z) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GZ=ZDfine@XACT] - VARIABLE : Z[GZ=ZSOFFSETSMALL] - regrid: 0.5 delta on Z@XACT - SUBSET : 9 points (Z) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GZ=ZDcoarse@XACT] - VARIABLE : Z[GZ=ZSFINEOFFSET] - regrid: 1 delta on Z@XACT - SUBSET : 5 points (Z) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... - -! T axis tests -CANCEL REGION -GO bn_xact_regrid.sub T -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSCOARSE] - regrid: 1 delta on T@XACT - SUBSET : 5 points (T) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GT=TDfine@XACT] - VARIABLE : T[GT=TSCOARSE] - regrid: 0.5 delta on T@XACT - SUBSET : 9 points (T) - 1 / 1: 1.00000 - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... - 5 / 9: 5.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSFINE] - regrid: 1 delta on T@XACT - SUBSET : 5 points (T) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GT=TDfine@XACT] - VARIABLE : T[GT=TSOFFSETBIG] - regrid: 0.5 delta on T@XACT - SUBSET : 9 points (T) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GT=TDfine@XACT] - VARIABLE : T[GT=TSOFFSETSMALL] - regrid: 0.5 delta on T@XACT - SUBSET : 9 points (T) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSFINEOFFSET] - regrid: 1 delta on T@XACT - SUBSET : 5 points (T) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... -SET REGION/T=2:4 -GO bn_xact_regrid.sub T -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSCOARSE] - regrid: 1 delta on T@XACT - SUBSET : 3 points (T) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GT=TDfine@XACT] - VARIABLE : T[GT=TSCOARSE] - regrid: 0.5 delta on T@XACT - SUBSET : 5 points (T) - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSFINE] - regrid: 1 delta on T@XACT - SUBSET : 3 points (T) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GT=TDfine@XACT] - VARIABLE : T[GT=TSOFFSETBIG] - regrid: 0.5 delta on T@XACT - SUBSET : 5 points (T) - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GT=TDfine@XACT] - VARIABLE : T[GT=TSOFFSETSMALL] - regrid: 0.5 delta on T@XACT - SUBSET : 5 points (T) - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSFINEOFFSET] - regrid: 1 delta on T@XACT - SUBSET : 3 points (T) - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... -SET REGION/T=1:5 -GO bn_xact_regrid.sub T -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSCOARSE] - regrid: 1 delta on T@XACT - SUBSET : 5 points (T) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GT=TDfine@XACT] - VARIABLE : T[GT=TSCOARSE] - regrid: 0.5 delta on T@XACT - SUBSET : 9 points (T) - 1 / 1: 1.00000 - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... - 5 / 9: 5.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSFINE] - regrid: 1 delta on T@XACT - SUBSET : 5 points (T) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GT=TDfine@XACT] - VARIABLE : T[GT=TSOFFSETBIG] - regrid: 0.5 delta on T@XACT - SUBSET : 9 points (T) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GT=TDfine@XACT] - VARIABLE : T[GT=TSOFFSETSMALL] - regrid: 0.5 delta on T@XACT - SUBSET : 9 points (T) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSFINEOFFSET] - regrid: 1 delta on T@XACT - SUBSET : 5 points (T) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... -SET REGION/T=1.5:4.5 -GO bn_xact_regrid.sub T -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSCOARSE] - regrid: 1 delta on T@XACT - SUBSET : 3 points (T) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GT=TDfine@XACT] - VARIABLE : T[GT=TSCOARSE] - regrid: 0.5 delta on T@XACT - SUBSET : 7 points (T) - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSFINE] - regrid: 1 delta on T@XACT - SUBSET : 3 points (T) - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GT=TDfine@XACT] - VARIABLE : T[GT=TSOFFSETBIG] - regrid: 0.5 delta on T@XACT - SUBSET : 7 points (T) - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GT=TDfine@XACT] - VARIABLE : T[GT=TSOFFSETSMALL] - regrid: 0.5 delta on T@XACT - SUBSET : 7 points (T) - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSFINEOFFSET] - regrid: 1 delta on T@XACT - SUBSET : 3 points (T) - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... -SET REGION/T=0:6 -GO bn_xact_regrid.sub T -! PERFORM REGRIDDINGS -LIST Scoarse[G$1=$1Dcoarse@XACT]! same src and dst axis - !-> LIST Scoarse[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSCOARSE] - regrid: 1 delta on T@XACT - SUBSET : 5 points (T) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Scoarse[G$1=$1Dfine@XACT] ! coarse data onto fine grid - !-> LIST Scoarse[GT=TDfine@XACT] - VARIABLE : T[GT=TSCOARSE] - regrid: 0.5 delta on T@XACT - SUBSET : 9 points (T) - 1 / 1: 1.00000 - 1.5 / 2: .... - 2 / 3: 2.00000 - 2.5 / 4: .... - 3 / 5: 3.00000 - 3.5 / 6: .... - 4 / 7: 4.00000 - 4.5 / 8: .... - 5 / 9: 5.00000 -LIST Sfine[G$1=$1Dcoarse@XACT] ! fine data onto coarse grid - !-> LIST Sfine[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSFINE] - regrid: 1 delta on T@XACT - SUBSET : 5 points (T) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -LIST Soffsetbig[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetbig[GT=TDfine@XACT] - VARIABLE : T[GT=TSOFFSETBIG] - regrid: 0.5 delta on T@XACT - SUBSET : 9 points (T) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Soffsetsmall[G$1=$1Dfine@XACT] ! non-aligning grid points coarse to fine - !-> LIST Soffsetsmall[GT=TDfine@XACT] - VARIABLE : T[GT=TSOFFSETSMALL] - regrid: 0.5 delta on T@XACT - SUBSET : 9 points (T) - 1 / 1: .... - 1.5 / 2: 1.50000 - 2 / 3: .... - 2.5 / 4: 2.50000 - 3 / 5: .... - 3.5 / 6: 3.50000 - 4 / 7: .... - 4.5 / 8: 4.50000 - 5 / 9: .... -LIST Sfineoffset[G$1=$1Dcoarse@XACT]! non-aligning grid points fine to coarse - !-> LIST Sfineoffset[GT=TDcoarse@XACT] - VARIABLE : T[GT=TSFINEOFFSET] - regrid: 1 delta on T@XACT - SUBSET : 5 points (T) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... - - - -!added in bn450 11/97 *kob* -! replace w/ bn500 *kob* 5/99 -GO bn_reset bn_gc_functions -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_gc_functions -GO bn_gc_functions -! bn500_gc_functions.jnl - -! 10/97 - first version - test GC functions released in V4.9 -! 3/98 - added single test of a dynamic axis passed to GC fcn -! Note: OFFSET VALUES NOT YET TESTED - -! 2/99 "UNRAVEL" renamed to XSEQUENCE -! 1/00 changes to RESHAPE tests ==> "K=1" removed - -CANCEL REGION -CANCEL VIEWPORTS - -! XSEQUENCE function -LET v = X[x=1:4:1] + Y[Y=.1:.4:.1] -LIST v - VARIABLE : X[X=1:4:1] + Y[Y=.1:.4:.1] - SUBSET : 4 by 4 points (X-Y) - 1 2 3 4 - 1 2 3 4 - 0.1 / 1: 1.10000 2.10000 3.10000 4.10000 - 0.2 / 2: 1.20000 2.20000 3.20000 4.20000 - 0.3 / 3: 1.30000 2.30000 3.30000 4.30000 - 0.4 / 4: 1.40000 2.40000 3.40000 4.40000 -LIST SIN(v) ! preserves source grid - VARIABLE : SIN(V) - SUBSET : 4 by 4 points (X-Y) - 1 2 3 4 - 1 2 3 4 - 0.1 / 1: 0.891207 0.863209 0.041581 -0.818277 - 0.2 / 2: 0.932039 0.808496 -0.058374 -0.871576 - 0.3 / 3: 0.963558 0.745705 -0.157746 -0.916166 - 0.4 / 4: 0.985450 0.675463 -0.255541 -0.951602 -LIST XSEQUENCE(v) ! replaces source grid - VARIABLE : XSEQUENCE(V) - SUBSET : 16 points (X) - 1 / 1: 1.10000 - 2 / 2: 2.10000 - 3 / 3: 3.10000 - 4 / 4: 4.10000 - 5 / 5: 1.20000 - 6 / 6: 2.20000 - 7 / 7: 3.20000 - 8 / 8: 4.20000 - 9 / 9: 1.30000 - 10 / 10: 2.30000 - 11 / 11: 3.30000 - 12 / 12: 4.30000 - 13 / 13: 1.40000 - 14 / 14: 2.40000 - 15 / 15: 3.40000 - 16 / 16: 4.40000 -STAT v, XSEQUENCE(v) - - X[X=1:4:1] + Y[Y=.1:.4:.1] - X: 0.5 to 4.5 - Y: 0.05 to 0.45 - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 16 (4*4*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 1.1 - Maximum value: 4.4 - Mean value: 2.75 (unweighted average) - Standard deviation: 1.1605 - - XSEQUENCE(V) - X: 0.5 to 16.5 - Y: N/A - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 16 (16*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 1.1 - Maximum value: 4.4 - Mean value: 2.75 (unweighted average) - Standard deviation: 1.1605 - -! check regions specified on source and on destination -LIST/I=3:5 XSEQUENCE(v) ! destination region - VARIABLE : XSEQUENCE(V) - SUBSET : 3 points (X) - 3 / 3: 3.10000 - 4 / 4: 4.10000 - 5 / 5: 1.20000 - -LIST v[I=2:3,J=2:3] - VARIABLE : X[X=1:4:1] + Y[Y=.1:.4:.1] - SUBSET : 2 by 2 points (X-Y) - 2 3 - 2 3 - 0.2 / 2: 2.20000 3.20000 - 0.3 / 3: 2.30000 3.30000 -LIST XSEQUENCE( v[I=2:3,J=2:3] ) - VARIABLE : XSEQUENCE( V[I=2:3,J=2:3] ) - SUBSET : 4 points (X) - 1 / 1: 2.20000 - 2 / 2: 3.20000 - 3 / 3: 2.30000 - 4 / 4: 3.30000 -LIST/I=2:3 XSEQUENCE( v[I=2:3,J=2:3] ) - VARIABLE : XSEQUENCE( V[I=2:3,J=2:3] ) - SUBSET : 2 points (X) - 2 / 2: 3.20000 - 3 / 3: 2.30000 - -! check grid interactions where XSEQUENCE is inside of expression -LET a = XSEQUENCE( v[I=2:3,J=2:3] ) + Z[Z=.01:.02:.01] -LIST a - VARIABLE : XSEQUENCE( V[I=2:3,J=2:3] ) + Z[Z=.01:.02:.01] - SUBSET : 4 by 2 points (X-Z) - 1 2 3 4 - 1 2 3 4 - 0.01 / 1: 2.21000 3.21000 2.31000 3.31000 - 0.02 / 2: 2.22000 3.22000 2.32000 3.32000 - -! RESHAPE function -DEFINE AXIS/X=1:4:1 x4 -DEFINE AXIS/Y=.1:.4:.1 y4 -DEFINE AXIS/Z=.01:.04:.01 z4 -DEFINE AXIS/T=.001:.004:.001 T4 -DEFINE GRID/X=x4/Y=y4/Z=z4/T=t4 g4d -LET v4d = X[x=1:3:1] + Y[Y=.1:.3:.1] + Z[Z=.01:.03:.01] + T[T=.001:.003:.001] -LIST v4d - VARIABLE : X[X=1:3:1] + Y[Y=.1:.3:.1] + Z[Z=.01:.03:.01] + T[T=.001:.003:.001] - SUBSET : 3 by 3 by 3 by 3 points (X-Y-Z-T) - 1 2 3 - 1 2 3 - ---- L:1 T: 0.001 - ---- K:1 Z: 0.01 - 0.1 / 1: 1.11100 2.11100 3.11100 - 0.2 / 2: 1.21100 2.21100 3.21100 - 0.3 / 3: 1.31100 2.31100 3.31100 - ---- K:2 Z: 0.02 - 0.1 / 1: 1.12100 2.12100 3.12100 - 0.2 / 2: 1.22100 2.22100 3.22100 - 0.3 / 3: 1.32100 2.32100 3.32100 - ---- K:3 Z: 0.03 - 0.1 / 1: 1.13100 2.13100 3.13100 - 0.2 / 2: 1.23100 2.23100 3.23100 - 0.3 / 3: 1.33100 2.33100 3.33100 - ---- L:2 T: 0.002 - ---- K:1 Z: 0.01 - 0.1 / 1: 1.11200 2.11200 3.11200 - 0.2 / 2: 1.21200 2.21200 3.21200 - 0.3 / 3: 1.31200 2.31200 3.31200 - ---- K:2 Z: 0.02 - 0.1 / 1: 1.12200 2.12200 3.12200 - 0.2 / 2: 1.22200 2.22200 3.22200 - 0.3 / 3: 1.32200 2.32200 3.32200 - ---- K:3 Z: 0.03 - 0.1 / 1: 1.13200 2.13200 3.13200 - 0.2 / 2: 1.23200 2.23200 3.23200 - 0.3 / 3: 1.33200 2.33200 3.33200 - ---- L:3 T: 0.003 - ---- K:1 Z: 0.01 - 0.1 / 1: 1.11300 2.11300 3.11300 - 0.2 / 2: 1.21300 2.21300 3.21300 - 0.3 / 3: 1.31300 2.31300 3.31300 - ---- K:2 Z: 0.02 - 0.1 / 1: 1.12300 2.12300 3.12300 - 0.2 / 2: 1.22300 2.22300 3.22300 - 0.3 / 3: 1.32300 2.32300 3.32300 - ---- K:3 Z: 0.03 - 0.1 / 1: 1.13300 2.13300 3.13300 - 0.2 / 2: 1.23300 2.23300 3.23300 - 0.3 / 3: 1.33300 2.33300 3.33300 -LET V3d = X[x=1:3:1] + Y[Y=.1:.3:.1] + Z[Z=.01:.09:.01] ! same size -LIST v3d - VARIABLE : X[X=1:3:1] + Y[Y=.1:.3:.1] + Z[Z=.01:.09:.01] - SUBSET : 3 by 3 by 9 points (X-Y-Z) - 1 2 3 - 1 2 3 - ---- K:1 Z: 0.01 - 0.1 / 1: 1.11000 2.11000 3.11000 - 0.2 / 2: 1.21000 2.21000 3.21000 - 0.3 / 3: 1.31000 2.31000 3.31000 - ---- K:2 Z: 0.02 - 0.1 / 1: 1.12000 2.12000 3.12000 - 0.2 / 2: 1.22000 2.22000 3.22000 - 0.3 / 3: 1.32000 2.32000 3.32000 - ---- K:3 Z: 0.03 - 0.1 / 1: 1.13000 2.13000 3.13000 - 0.2 / 2: 1.23000 2.23000 3.23000 - 0.3 / 3: 1.33000 2.33000 3.33000 - ---- K:4 Z: 0.04 - 0.1 / 1: 1.14000 2.14000 3.14000 - 0.2 / 2: 1.24000 2.24000 3.24000 - 0.3 / 3: 1.34000 2.34000 3.34000 - ---- K:5 Z: 0.05 - 0.1 / 1: 1.15000 2.15000 3.15000 - 0.2 / 2: 1.25000 2.25000 3.25000 - 0.3 / 3: 1.35000 2.35000 3.35000 - ---- K:6 Z: 0.06 - 0.1 / 1: 1.16000 2.16000 3.16000 - 0.2 / 2: 1.26000 2.26000 3.26000 - 0.3 / 3: 1.36000 2.36000 3.36000 - ---- K:7 Z: 0.07 - 0.1 / 1: 1.17000 2.17000 3.17000 - 0.2 / 2: 1.27000 2.27000 3.27000 - 0.3 / 3: 1.37000 2.37000 3.37000 - ---- K:8 Z: 0.08 - 0.1 / 1: 1.18000 2.18000 3.18000 - 0.2 / 2: 1.28000 2.28000 3.28000 - 0.3 / 3: 1.38000 2.38000 3.38000 - ---- K:9 Z: 0.09 - 0.1 / 1: 1.19000 2.19000 3.19000 - 0.2 / 2: 1.29000 2.29000 3.29000 - 0.3 / 3: 1.39000 2.39000 3.39000 -LIST RESHAPE(v4d, v3d) - VARIABLE : RESHAPE(V4D, V3D) - SUBSET : 3 by 3 by 9 points (X-Y-Z) - 1 2 3 - 1 2 3 - ---- K:1 Z: 0.01 - 0.1 / 1: 1.11100 2.11100 3.11100 - 0.2 / 2: 1.21100 2.21100 3.21100 - 0.3 / 3: 1.31100 2.31100 3.31100 - ---- K:2 Z: 0.02 - 0.1 / 1: 1.12100 2.12100 3.12100 - 0.2 / 2: 1.22100 2.22100 3.22100 - 0.3 / 3: 1.32100 2.32100 3.32100 - ---- K:3 Z: 0.03 - 0.1 / 1: 1.13100 2.13100 3.13100 - 0.2 / 2: 1.23100 2.23100 3.23100 - 0.3 / 3: 1.33100 2.33100 3.33100 - ---- K:4 Z: 0.04 - 0.1 / 1: 1.11200 2.11200 3.11200 - 0.2 / 2: 1.21200 2.21200 3.21200 - 0.3 / 3: 1.31200 2.31200 3.31200 - ---- K:5 Z: 0.05 - 0.1 / 1: 1.12200 2.12200 3.12200 - 0.2 / 2: 1.22200 2.22200 3.22200 - 0.3 / 3: 1.32200 2.32200 3.32200 - ---- K:6 Z: 0.06 - 0.1 / 1: 1.13200 2.13200 3.13200 - 0.2 / 2: 1.23200 2.23200 3.23200 - 0.3 / 3: 1.33200 2.33200 3.33200 - ---- K:7 Z: 0.07 - 0.1 / 1: 1.11300 2.11300 3.11300 - 0.2 / 2: 1.21300 2.21300 3.21300 - 0.3 / 3: 1.31300 2.31300 3.31300 - ---- K:8 Z: 0.08 - 0.1 / 1: 1.12300 2.12300 3.12300 - 0.2 / 2: 1.22300 2.22300 3.22300 - 0.3 / 3: 1.32300 2.32300 3.32300 - ---- K:9 Z: 0.09 - 0.1 / 1: 1.13300 2.13300 3.13300 - 0.2 / 2: 1.23300 2.23300 3.23300 - 0.3 / 3: 1.33300 2.33300 3.33300 -! if source and dest grid share an axis then the region is passed to the arg -LIST RESHAPE(v4d[i=2:3,j=2:3], v3d) ! I,J preserved - VARIABLE : RESHAPE(V4D[I=2:3,J=2:3], V3D) - SUBSET : 2 by 2 by 9 points (X-Y-Z) - 2 3 - 2 3 - ---- K:1 Z: 0.01 - 0.2 / 2: 2.21100 3.21100 - 0.3 / 3: 2.31100 3.31100 - ---- K:2 Z: 0.02 - 0.2 / 2: 2.22100 3.22100 - 0.3 / 3: 2.32100 3.32100 - ---- K:3 Z: 0.03 - 0.2 / 2: 2.23100 3.23100 - 0.3 / 3: 2.33100 3.33100 - ---- K:4 Z: 0.04 - 0.2 / 2: 2.21200 3.21200 - 0.3 / 3: 2.31200 3.31200 - ---- K:5 Z: 0.05 - 0.2 / 2: 2.22200 3.22200 - 0.3 / 3: 2.32200 3.32200 - ---- K:6 Z: 0.06 - 0.2 / 2: 2.23200 3.23200 - 0.3 / 3: 2.33200 3.33200 - ---- K:7 Z: 0.07 - 0.2 / 2: 2.21300 3.21300 - 0.3 / 3: 2.31300 3.31300 - ---- K:8 Z: 0.08 - 0.2 / 2: 2.22300 3.22300 - 0.3 / 3: 2.32300 3.32300 - ---- K:9 Z: 0.09 - 0.2 / 2: 2.23300 3.23300 - 0.3 / 3: 2.33300 3.33300 -LIST/k=2:3 RESHAPE(v4d[i=2:3,j=2:3,k=2:3], v3d) ! K,L not preserved - VARIABLE : RESHAPE(V4D[I=2:3,J=2:3,K=2:3], V3D) - SUBSET : 2 by 2 by 2 points (X-Y-Z) - 2 3 - 2 3 - ---- K:2 Z: 0.02 - 0.2 / 2: 2.23100 3.23100 - 0.3 / 3: 2.33100 3.33100 - ---- K:3 Z: 0.03 - 0.2 / 2: 2.22200 3.22200 - 0.3 / 3: 2.32200 3.32200 -LIST/I=2:3/J=2:3 RESHAPE(v4d, v3d) - VARIABLE : RESHAPE(V4D, V3D) - SUBSET : 2 by 2 by 9 points (X-Y-Z) - 2 3 - 2 3 - ---- K:1 Z: 0.01 - 0.2 / 2: 2.21100 3.21100 - 0.3 / 3: 2.31100 3.31100 - ---- K:2 Z: 0.02 - 0.2 / 2: 2.22100 3.22100 - 0.3 / 3: 2.32100 3.32100 - ---- K:3 Z: 0.03 - 0.2 / 2: 2.23100 3.23100 - 0.3 / 3: 2.33100 3.33100 - ---- K:4 Z: 0.04 - 0.2 / 2: 2.21200 3.21200 - 0.3 / 3: 2.31200 3.31200 - ---- K:5 Z: 0.05 - 0.2 / 2: 2.22200 3.22200 - 0.3 / 3: 2.32200 3.32200 - ---- K:6 Z: 0.06 - 0.2 / 2: 2.23200 3.23200 - 0.3 / 3: 2.33200 3.33200 - ---- K:7 Z: 0.07 - 0.2 / 2: 2.21300 3.21300 - 0.3 / 3: 2.31300 3.31300 - ---- K:8 Z: 0.08 - 0.2 / 2: 2.22300 3.22300 - 0.3 / 3: 2.32300 3.32300 - ---- K:9 Z: 0.09 - 0.2 / 2: 2.23300 3.23300 - 0.3 / 3: 2.33300 3.33300 -LIST/I=2:3/J=2:3/K=2:3 RESHAPE(v4d, v3d) ! K refers to result, only - VARIABLE : RESHAPE(V4D, V3D) - SUBSET : 2 by 2 by 2 points (X-Y-Z) - 2 3 - 2 3 - ---- K:2 Z: 0.02 - 0.2 / 2: 2.22100 3.22100 - 0.3 / 3: 2.32100 3.32100 - ---- K:3 Z: 0.03 - 0.2 / 2: 2.23100 3.23100 - 0.3 / 3: 2.33100 3.33100 -LIST/I=2:3/J=2:3 RESHAPE(v4d[k=1:3], v3d[k=2:5]) ! output to a subregion in K - VARIABLE : RESHAPE(V4D[K=1:3], V3D[K=2:5]) - SUBSET : 2 by 2 by 4 points (X-Y-Z) - 2 3 - 2 3 - ---- K:2 Z: 0.02 - 0.2 / 2: 2.21100 3.21100 - 0.3 / 3: 2.31100 3.31100 - ---- K:3 Z: 0.03 - 0.2 / 2: 2.22100 3.22100 - 0.3 / 3: 2.32100 3.32100 - ---- K:4 Z: 0.04 - 0.2 / 2: 2.23100 3.23100 - 0.3 / 3: 2.33100 3.33100 - ---- K:5 Z: 0.05 - 0.2 / 2: 2.21200 3.21200 - 0.3 / 3: 2.31200 3.31200 -LIST/I=2:3/J=2:3/K=4:5 RESHAPE(v4d[k=1:3], v3d[k=2:5]) ! "conflicting" K specs - VARIABLE : RESHAPE(V4D[K=1:3], V3D[K=2:5]) - SUBSET : 2 by 2 by 2 points (X-Y-Z) - 2 3 - 2 3 - ---- K:4 Z: 0.04 - 0.2 / 2: 2.23100 3.23100 - 0.3 / 3: 2.33100 3.33100 - ---- K:5 Z: 0.05 - 0.2 / 2: 2.21200 3.21200 - 0.3 / 3: 2.31200 3.31200 - -! ZAXREPLACE function -! definitions taken from sigma_coordinate_demo.jnl 9/96 *sh* -! 1) CREATE AN ARTIFICIAL SIGMA COORDINATE MODEL OUTPUT -define axis/x=-50:50:10/unit=km xchannel -define axis/y=-30:30:10/unit=km yrise -define axis/z=1:10:2/unit=layer/depth zlayer -define axis/T=1:20:1/unit=hours time -define grid/x=xchannel/y=yrise/z=zlayer/t=time gsigma - -! bathymetry: a channel with a rise along the axis of the channel -let pi = 3.14159 -let nominal_depth = 100 -let cross_channel_size = nominal_depth * (1 + COS(X[g=gsigma]/60*pi)) -let xchannel = -1 * cross_channel_size -let rise_shape = (1 + COS(Y[g=gsigma]/40*pi))/6 -let bathymetry = xchannel + rise_shape*CROSS_CHANNEL_SIZE -set variable/title="Channel Bathymetry"/unit=meters bathymetry - -! sigma layer thickness: varies in X, Y, Z, and T in this example -let time_evolve = 0 + L[g=gsigma]/100 -let h0 = EXP(time_evolve*K[g=gsigma]) -let h_normalized = h0/h0[k=1:10@sum] -let h = h_normalized * (-1 * bathymetry) -set variable/title="layer thickness"/unit=meters h - -! fictitious flow field: -let flow_profile = LOG((11-K[g=gsigma])) -let time_ramp = 1 + L[g=gsigma]/20 + 0.2*SIN((L[g=gsigma]-1)/2) -let flow = time_ramp * flow_profile * cross_channel_size / (1-rise_shape) -set variable/title="non-physical flow field" flow - -! ---------------------- -! "DEPTH" -- THE VERTICAL INTEGRAL OF LAYER THICKNESS -let depth = h[k=@rsum]-h/2 -set variable/title="DEPTH function"/unit=meters depth - -! Desired result axes - depth in meters -define axis/depth/z=0:200:50/units=meters z50m -define axis/depth/z=0:200:20/units=meters z20m -define axis/depth/z=0:200:2/units=meters z2m - -LIST/x=0/l=1 flow - VARIABLE : non-physical flow field - SUBSET : 7 by 6 points (Y (KM)-Z (LAYER)) - X (KM) : 0 - T (HOURS): 1 - -30 -20 -10 0 10 20 30 - 1 2 3 4 5 6 7 - 1 / 1: 220.777 252.000 293.508 315.000 293.508 252.000 220.777 - 3 / 2: 210.675 240.469 280.078 300.586 280.078 240.469 210.675 - 5 / 3: 199.382 227.579 265.064 284.473 265.064 227.579 199.382 - 7 / 4: 186.579 212.965 248.043 266.206 248.043 212.965 186.579 - 9 / 5: 171.798 196.094 228.394 245.118 228.394 196.094 171.798 - 11 / 6: 154.317 176.140 205.154 220.176 205.154 176.140 154.317 -LIST/x=0/l=1 depth - VARIABLE : DEPTH function (meters) - SUBSET : 7 by 6 points (Y (KM)-Z (LAYER)) - X (KM) : 0 - T (HOURS): 1 - -30 -20 -10 0 10 20 30 - 1 2 3 4 5 6 7 - 1 / 1: 15.459 13.544 11.629 10.835 11.629 13.544 15.459 - 3 / 2: 46.534 40.768 35.003 32.614 35.003 40.768 46.534 - 5 / 3: 77.920 68.266 58.612 54.613 58.612 68.266 77.920 - 7 / 4: 109.622 96.040 82.458 76.832 82.458 96.040 109.622 - 9 / 5: 141.642 124.093 106.544 99.274 106.544 124.093 141.642 - 11 / 6: 173.985 152.428 130.872 121.943 130.872 152.428 173.985 -set view ul -shade/x=0/l=1/lev=30 flow -!LIST/x=0/l=1 ZAXREPLACE(flow,depth,z[gz=z50m]) -!LIST/x=0/l=1 ZAXREPLACE(flow,depth,z[gz=z20m]) -LIST/x=0/l=1 ZAXREPLACE(flow[z=0:200],depth[z=0:200],z[gz=z50m]) - VARIABLE : ZAXREPLACE(FLOW[Z=0:200],DEPTH[Z=0:200],Z[GZ=Z50M]) - SUBSET : 7 by 5 points (Y (KM)-DEPTH (m)) - X (KM) : 0 - T (HOURS): 1 - -30 -20 -10 0 10 20 30 - 1 2 3 4 5 6 7 - 0 / 1: .... .... .... .... .... .... .... - 50 / 2: 209.428 236.141 270.541 287.852 270.541 236.141 209.428 - 100 / 3: 190.465 210.583 233.732 244.319 233.732 210.583 190.465 - 150 / 4: 167.281 177.850 .... .... .... 177.850 167.281 - 200 / 5: .... .... .... .... .... .... .... -LIST/x=0/l=1 ZAXREPLACE(flow[z=0:200],depth[z=0:200],z[gz=z20m]) - VARIABLE : ZAXREPLACE(FLOW[Z=0:200],DEPTH[Z=0:200],Z[GZ=Z20M]) - SUBSET : 7 by 11 points (Y (KM)-DEPTH (m)) - X (KM) : 0 - T (HOURS): 1 - -30 -20 -10 0 10 20 30 - 1 2 3 4 5 6 7 - 0 / 1: .... .... .... .... .... .... .... - 20 / 2: 219.301 249.266 288.698 308.935 288.698 249.266 219.301 - 40 / 3: 212.799 240.795 276.900 295.177 276.900 240.795 212.799 - 60 / 4: 205.830 231.454 264.073 280.044 264.073 231.454 205.830 - 80 / 5: 198.542 221.405 249.798 263.229 249.798 221.405 198.542 - 100 / 6: 190.465 210.583 233.732 244.319 233.732 210.583 190.465 - 120 / 7: 181.788 198.556 215.539 222.313 215.539 198.556 181.788 - 140 / 8: 172.556 184.892 .... .... .... 184.892 172.556 - 160 / 9: 161.876 .... .... .... .... .... 161.876 - 180 / 10: .... .... .... .... .... .... .... - 200 / 11: .... .... .... .... .... .... .... - -set view ur -shade/x=0/l=1/lev ZAXREPLACE(flow[z=0:200],depth[z=0:200],z[gz=z20m]) - -! how do the layers get distributed? -!LET Kflow = ZAXREPLACE(flow,depth,z[gz=z20m]) -!LET Kdepth = ZAXREPLACE(k[g=gsigma],depth,z[gz=z20m]) -LET Kflow = ZAXREPLACE(flow[z=0:200],depth[z=0:200],z[gz=z20m]) -LET Kdepth = ZAXREPLACE(k[z=0:200,g=gsigma],depth[z=0:200],z[gz=z20m]) -LIST/x=0/l=1 Kdepth - VARIABLE : ZAXREPLACE(K[Z=0:200,G=GSIGMA],DEPTH[Z=0:200],Z[GZ=Z20M]) - SUBSET : 7 by 11 points (Y (KM)-DEPTH (m)) - X (KM) : 0 - T (HOURS): 1 - -30 -20 -10 0 10 20 30 - 1 2 3 4 5 6 7 - 0 / 1: .... .... .... .... .... .... .... - 20 / 2: 1.14612 1.23714 1.35815 1.42080 1.35815 1.23714 1.14612 - 40 / 3: 1.78974 1.97179 2.21167 2.33573 2.21167 1.97179 1.78974 - 60 / 4: 2.42905 2.69940 3.05822 3.24246 3.05822 2.69940 2.42905 - 80 / 5: 3.06561 3.42249 3.89693 4.14116 3.89693 3.42249 3.06561 - 100 / 6: 3.69649 4.14116 4.72832 5.03201 4.72832 4.14116 3.69649 - 120 / 7: 4.32411 4.85410 5.55312 5.91430 5.55312 4.85410 4.32411 - 140 / 8: 4.94871 5.56139 .... .... .... 5.56139 4.94871 - 160 / 9: 5.56760 .... .... .... .... .... 5.56760 - 180 / 10: .... .... .... .... .... .... .... - 200 / 11: .... .... .... .... .... .... .... -LIST/x=0/l=1 Kdepth[k=@max] - VARIABLE : ZAXREPLACE(K[Z=0:200,G=GSIGMA],DEPTH[Z=0:200],Z[GZ=Z20M]) - SUBSET : 7 points (Y (KM)) - X (KM) : 0 - DEPTH (m): -10 to 210 (maximum) - T (HOURS): 1 - 0 - 6 - -30 / 1: 5.56760 - -20 / 2: 5.56139 - -10 / 3: 5.55312 - 0 / 4: 5.91430 - 10 / 5: 5.55312 - 20 / 6: 5.56139 - 30 / 7: 5.56760 - -! mark deepest layer with a zero -LET K0 = Kdepth - Kdepth[K=@max] -LET Kkernel = K0[K=@WEQ] * Kflow - -! compare flow at bottom -LET Z10_flow = flow[Z=10] -LIST/x=0/l=1 Z10_flow ! bottom layer in layered version - VARIABLE : FLOW[Z=10] - SUBSET : 7 points (Y (KM)) - X (KM) : 0 - Z (LAYER): 10 - T (HOURS): 1 - 0 - 6 - -30 / 1: 163.058 - -20 / 2: 186.117 - -10 / 3: 216.774 - 0 / 4: 232.647 - 10 / 5: 216.774 - 20 / 6: 186.117 - 30 / 7: 163.058 - -LET bottom_flow = Kkernel[z=0:200@sum] -!message LIST/x=0/l=1 Kkernel[z=0:200] ! crash!!! -!message LIST/x=0/l=1 bottom_flow ! deepest flow in depth version -!message - -! error using 20 meter depth resolution -LIST/x=0/l=1 Z10_flow - bottom_flow - VARIABLE : Z10_FLOW - BOTTOM_FLOW - SUBSET : 7 points (Y (KM)) - X (KM) : 0 - Z (LAYER): 10 - T (HOURS): 1 - 0 - 6 - -30 / 1: 1.1817 - -20 / 2: 1.2249 - -10 / 3: 1.2346 - 0 / 4: 10.3336 - 10 / 5: 1.2346 - 20 / 6: 1.2249 - 30 / 7: 1.1817 - -! reduced error using 2 meter depth resolution -set view ll -shade/x=0/l=1/lev ZAXREPLACE(flow[z=0:200],depth[z=0:200],z[gz=z2m]) -LET Kflow = ZAXREPLACE(flow[z=0:200],depth[z=0:200],z[gz=z2m]) -LET Kdepth = ZAXREPLACE(k[g=gsigma,z=0:200],depth[z=0:200],z[gz=z2m]) -LIST/x=0/l=1 Z10_flow - bottom_flow - VARIABLE : Z10_FLOW - BOTTOM_FLOW - SUBSET : 7 points (Y (KM)) - X (KM) : 0 - Z (LAYER): 10 - T (HOURS): 1 - 0 - 6 - -30 / 1: 7.6679 - -20 / 2: 9.6753 - -10 / 3: 10.7875 - 0 / 4: 10.3336 - 10 / 5: 10.7875 - 20 / 6: 9.6753 - 30 / 7: 7.6679 - -! dynamic axis passes to GC function -- 1 meter resolution (3/98) -set view lr -shade/x=0/l=1/ylim=0:200:-20/lev ZAXREPLACE(flow[z=0:200],depth[z=0:200],z[z=0:200:.5]) - -!added in bn491 - originally had this in run_all, but moved it here to -! properly echo commands *kob* -set mode verify ! somehow this was off -GO bn_reset bn491_bug_fixes.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn491_bug_fixes.jnl -GO bn491_bug_fixes.jnl -! bn491_bug_fixes.jnl -! test various fixes that went into version 4.91 -! 2/98 *kob* -! -! 3/98 - replaced err490_repeat w/ err490_repeat_first_echo - simpler test -! 3/98 - *kob* removed err490_tilde because it was a silly test. some systems -! allowed use of go "~/xx" and others didnt. -! 4/98 - added err491_asn.jnl - regrid by association problem -! 4/98 - added err491_attrib_dp.jnl - problem w/ double precision attributes - -set mode/last verify -can viewport -can win/all -set window 1 - -!netcdf write error -GO err490_cdf_childax -!err490_cdf_childax *kob* 12/10/97 - initial crash reported by jerry - -! ERROR Fixed: listing a netcdf file w/ an extended child axis caused OSF -! core dump -! -! routines modified: fmt/src/cd_childax_name.F -! fmt/src/cd_write_axis.F -! fmt/src/cd_make_var.F -! 3.4.98 *kob* add define region statement - needed to include the -! bn491_bug_fixes.jnl in w/ bn491_all - - -define region/x=130:290/y=-23.5:23.5 t -set data ocean_atlas_temp -set reg/@t/z=0/l=1 -save/file=test.cdf/clobber temp - -message/continue ********File successfully written****** -********File successfully written****** - - -! command parser -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err490_command_parser -! err490_command_parser.jnl 12/1/98 - reported by billy kessler - -! ERROR Fixed: command parser fix -! the following caused an abort of ferret to occur -! -! routines modifed: gnl/parse_command.F -! rpn/init_uvar_sub.F -! common/xvariables.cmn - -go ptest -! Description: create a simple test line plot - -! spirograph picture ... -PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20) - -label/nou `($ppl$xlen)-.3` -1.1 0 0 .16 a b c d e f g h i j k l m n o p - !-> PPL %LABEL/nou 7.7 -1.1 0 0 .16 a b c d e f g h i j k l m n o p - -! the following also caused an abort of ferret -let sstb = if ( (i eq 172 and j eq 36) or (i ge 173 and i le 175 and j eq 35) or (i ge 176 and i le 178 and j eq 36) or (i eq 178 and j eq 35) ) then 1.e35 else sst -message/continue ****Variable defined successfully****** -****Variable defined successfully****** - - -! tilde error -!GO bn_reset -!GO err490_tilde - - -!repeat error -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err490_repeat_first_echo -! err490_repeat_first_echo (created later 23/98) - -! for the first REPEAT loop on T the formatting of the "verify" output -! is based on the last previous command given - -! fixed 1/98 sh&kob -! relevant routines (bug not yet fixed) -! gnl/cs_command.F -! xeq/xeq_repeat.F -! ctx/cs_set_context.F - -set mode calendar -can mode interp - -! cause the "last" command to be non-calendar -stat t[t=15] - - T - axis ABSTRACT - X: N/A - Y: N/A - Z: N/A - T: 15 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 15 - Maximum value: 15 - Mean value: 15 (unweighted average) - -! now note the first loop echo -set mode verify -define axis/t=1-jan-1980:1-jan-1981:1/units=days tax -repeat/t=1-jan-1980:2-jan-1980:24 stat t[gt=tax] -!-> REPEAT: T=-62482752000 - - T - axis TAX - X: N/A - Y: N/A - Z: N/A - TIME: 01-JAN-1980 00:00 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 28840 - Maximum value: 28840 - Mean value: 28840 (unweighted average) -!-> REPEAT: T=02-JAN-1980 00:00:00 - - T - axis TAX - X: N/A - Y: N/A - Z: N/A - TIME: 02-JAN-1980 00:00 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 28841 - Maximum value: 28841 - Mean value: 28841 (unweighted average) - -message/cont Note: THE ECHO-ONE REPEAT BUG HAS NOT BEEN FIXED -Note: THE ECHO-ONE REPEAT BUG HAS NOT BEEN FIXED - -! fixed variable size -!GO bn_reset -GO err490_fixed_var_size -! 1/2/98 *sh* - -! Situation: the component (variable) size is fixed in the definition. -! The requested result size is separately specified -! by a command qualifier. Leads to a crash. - -! The "doo" transformations (convolve.F, do_run_sum_sub.F, etc. ) are guided -! by the size of the component rather than the size of the result. -! (Under other circumstances this is to allow "bad edges" to be filled in -! when the component is too small for the result.) - -! In IS_TRANS we need to catch this problem and avoid it ... -! but it is fraught with pitfalls as it involves changing the apparent -! component (cx) size passed into IS_TRANS (normally considered read-only) -! Further, Ferret regards the result as self-describing on this axis -! (uvar_gvn THE FIX IS IS A KLUDGE: The "right" solution is that the full limits -! of the variable should be computed and the requested limits used to -! clip the result. But this would be costly in memory xxxxx -! should never get applied to cx ... but this is too difficult to -! implement in GET_VAR_CONTEXT and PARSE_VAR_NAME - - -!set mode diag - removed *sh* 10/99 - -let vx = SIN(X[X=1:60:1]) -stat vx - - SIN(X[X=1:60:1]) - X: 0.5 to 60.5 - Y: N/A - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 60 (60*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: -0.99999 - Maximum value: 0.99991 - Mean value: 0.027242 (unweighted average) - Standard deviation: 0.71199 -list/i=13:18 vx[x=@sbx:3] ! CRASH in V4.90 - VARIABLE : SIN(X[X=1:60:1]) - box smoothed by 3 pts on X - SUBSET : 6 points (X) - 13 / 13: 0.291400 - 14 / 14: 0.687021 - 15 / 15: 0.450997 - 16 / 16: -0.199671 - 17 / 17: -0.666763 - 18 / 18: -0.520836 -list/i=13:18 vx[x=@rsum] ! CRASH in V4.90 - VARIABLE : SIN(X[X=1:60:1]) - running sum on X - SUBSET : 6 points (X) - 13 / 13: 0.42017 - 14 / 14: 1.41077 - 15 / 15: 2.06106 - 16 / 16: 1.77316 - 17 / 17: 0.81176 - 18 / 18: 0.06077 - -list/i=11:20 vx[x=@sbx:3] ! wrong result if pulled from cache - VARIABLE : SIN(X[X=1:60:1]) - box smoothed by 3 pts on X - SUBSET : 10 points (X) - 11 / 11: -0.693528 - 12 / 12: -0.372132 - 13 / 13: 0.291400 - 14 / 14: 0.687021 - 15 / 15: 0.450997 - 16 / 16: -0.199671 - 17 / 17: -0.666763 - 18 / 18: -0.520836 - 19 / 19: 0.103945 - 20 / 20: 0.633159 -list/i=11:20 vx[x=@rsum] ! wrong result if pulled from cache - VARIABLE : SIN(X[X=1:60:1]) - running sum on X - SUBSET : 10 points (X) - 11 / 11: -0.99999 - 12 / 12: -1.53656 - 13 / 13: -1.11640 - 14 / 14: -0.12579 - 15 / 15: 0.52450 - 16 / 16: 0.23660 - 17 / 17: -0.72480 - 18 / 18: -1.47579 - 19 / 19: -1.32591 - 20 / 20: -0.41297 - -! now test a special problem that can occur with filling transforms -- -! special because in IS_TRANS they require OFFSETS but do not require filling -! "bad edges" in the result - -DEFINE AXIS/T=-10:10:2 tax -LET tvar = t[gt=tax] -LET tgap = IF MOD(T,4) eq 0 then tvar -list tgap - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR - SUBSET : 11 points (T) - -10 / 1: .... - -8 / 2: -8.00000 - -6 / 3: .... - -4 / 4: -4.00000 - -2 / 5: .... - 0 / 6: 0.00000 - 2 / 7: .... - 4 / 8: 4.00000 - 6 / 9: .... - 8 / 10: 8.00000 - 10 / 11: .... -list tgap[l=2:7@fav] ! value at L=7 should be 2 - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR - ave-filled by 3 pts on T - SUBSET : 6 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -4 / 4: -4.00000 - -2 / 5: -2.00000 - 0 / 6: 0.00000 - 2 / 7: 2.00000 -list tgap[t=-5:-8@fav] ! value at T=-6 should be -6 - VARIABLE : IF MOD(T,4) EQ 0 THEN TVAR - ave-filled by 3 pts on T - SUBSET : 2 points (T) - -8 / 2: -8.00000 - -6 / 3: -6.00000 - -! l=@ave compression failure -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err490_l_ave.jnl -! err490_lave.jnl 12/1/97 - *sh* (reported by Weimin Wang) -! L=@AVE is failing to compress to a point - -! 2/28/97: -! bug from this script re-emerged 2/98 after change to MERGE_GRID -! (see err491_explicit_limits.jnl) -! This time it was fixed in MERGE_GRID by correcting inconsistent use of -! the variable expl_com_lim - -! 12/97: --------------------- -! ==> fixed in IS_GRID_MODE with more thorough initialization -! probably was introduced with changes to is-uvar_grid and merge_grid -! when GCF functions were introduced - -! the bug was introduced between ferret_c_pre_10jan (created Dec. 19 '96) -! and ferret_c_passed_bench (created Jan 22 1997). This is when the GCF -! changes were made - -! tracing the problem (axis T): -! in IS_TRANS the bad case enters with cx_hi_ww(cx=6)=91369 -! the successful case with it set BAD -! ==> result is that T axis doesn't get fleshed out - -! IS_TRANS gets the cx=6 value from IS_ALGEBRA's call to GET_VAR_CONTEXT - -! In turn this gets it from cx=4 which is set early in INTERP_STACK (dflt_cx) - -! INTERP_STACK works correctly when uvar_given(4,ex#1)=-1 ("uvlim_irrelevant") -! ==> for some reason uvar_given(4,ex#1) is 7 (uvlim_needed) in the bad case - -! ... need to look in is_uvar_grid and esp. merge_grid -! --------------------------- -! *kob* 3/98 - modifed to use coads_vwnd.cdf data set. this is a local data -! set (ie, it resides in the bench area). this was important for -! benchmarking the sgi version (on cyborg and vikenty) because -! not all tmap disks were available. - -cancel memory/all -!set mode diag ! removed *sh* 10/99 - -! *kob* set data coads -set data coads_vwnd - -set region/x=160w/y=40n -set region/l=1:50 - -! 12/97: this works OK -- a single point ... with value of zero! -! 2/98: now it gets a list of values, where the first one, only is correct -let tseries = vwnd[l=1:50] -list tseries[l=@ave] - VARIABLE : VWND[L=1:50] - FILENAME : coads_vwnd.cdf - LONGITUDE: 161W - LATITUDE : 39N - TIME : 01-JAN-1946 00:00 to 01-MAR-1950 00:00 (averaged) - 2.19333 - -! this gets a list of values! -cancel memory/all -load tseries -list tseries[l=@ave] - VARIABLE : VWND[L=1:50] - FILENAME : coads_vwnd.cdf - LONGITUDE: 161W - LATITUDE : 39N - TIME : 01-JAN-1946 00:00 to 01-MAR-1950 00:00 (averaged) - 2.19333 - -! and finally a crash ... -list/l=1 tseries[l=1:50@ave] - VARIABLE : VWND[L=1:50] - FILENAME : coads_vwnd.cdf - LONGITUDE: 161W - LATITUDE : 39N - TIME : 01-JAN-1946 00:00 to 01-MAR-1950 00:00 (averaged) - 2.19333 - -quit - -! neg time axis grid failure -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err490_neg_time_show_grid.jnl -! err490_neg_time_show_grid - -! V4.9 fails to show the invividual grid points, so the below request would -! only show column headings, but no data. make sure data is there - -set data gtsa056_2 -show grid/t=15-JAN-1982:15-JAN-1983 temp - GRID PS3DT1 - name axis # pts start end subset - PSXT1 LONGITUDE 160mr 130.5E 70.5W full - PSYT LATITUDE 100 i 28.836S 48.568N full - PSZT DEPTH (m) 27 i- 5 3824 full - TIME7 TIME 168mr 15-JAN-1982 14:00 07-JUN-1983 13:00 full - - L T TBOX TBOXLO TSTEP (hour) - 1> 15-JAN-1982 14:00:00 73 14-JAN-1982 01:30:00 52632 - 2> 18-JAN-1982 15:00:00 73 17-JAN-1982 02:30:00 52705 - 3> 21-JAN-1982 16:00:00 73 20-JAN-1982 03:30:00 52778 - 4> 24-JAN-1982 17:00:00 73 23-JAN-1982 04:30:00 52851 - 5> 27-JAN-1982 18:00:00 73 26-JAN-1982 05:30:00 52924 - 6> 30-JAN-1982 19:00:00 73 29-JAN-1982 06:30:00 52997 - 7> 02-FEB-1982 20:00:00 73 01-FEB-1982 07:30:00 53070 - 8> 05-FEB-1982 21:00:00 73 04-FEB-1982 08:30:00 53143 - 9> 08-FEB-1982 22:00:00 73 07-FEB-1982 09:30:00 53216 - 10> 11-FEB-1982 23:00:00 73 10-FEB-1982 10:30:00 53289 - 11> 15-FEB-1982 00:00:00 73 13-FEB-1982 11:30:00 53362 - 12> 18-FEB-1982 01:00:00 73 16-FEB-1982 12:30:00 53435 - 13> 21-FEB-1982 02:00:00 73 19-FEB-1982 13:30:00 53508 - 14> 24-FEB-1982 03:00:00 73 22-FEB-1982 14:30:00 53581 - 15> 27-FEB-1982 04:00:00 73 25-FEB-1982 15:30:00 53654 - 16> 02-MAR-1982 05:00:00 73 28-FEB-1982 16:30:00 53727 - 17> 05-MAR-1982 06:00:00 73 03-MAR-1982 17:30:00 53800 - 18> 08-MAR-1982 07:00:00 73 06-MAR-1982 18:30:00 53873 - 19> 11-MAR-1982 08:00:00 73 09-MAR-1982 19:30:00 53946 - 20> 14-MAR-1982 09:00:00 73 12-MAR-1982 20:30:00 54019 - 21> 17-MAR-1982 10:00:00 73 15-MAR-1982 21:30:00 54092 - 22> 20-MAR-1982 11:00:00 73 18-MAR-1982 22:30:00 54165 - 23> 23-MAR-1982 12:00:00 73 21-MAR-1982 23:30:00 54238 - 24> 26-MAR-1982 13:00:00 73 25-MAR-1982 00:30:00 54311 - 25> 29-MAR-1982 14:00:00 73 28-MAR-1982 01:30:00 54384 - 26> 01-APR-1982 15:00:00 73 31-MAR-1982 02:30:00 54457 - 27> 04-APR-1982 16:00:00 73 03-APR-1982 03:30:00 54530 - 28> 07-APR-1982 17:00:00 73 06-APR-1982 04:30:00 54603 - 29> 10-APR-1982 18:00:00 73 09-APR-1982 05:30:00 54676 - 30> 13-APR-1982 19:00:00 73 12-APR-1982 06:30:00 54749 - 31> 16-APR-1982 20:00:00 73 15-APR-1982 07:30:00 54822 - 32> 19-APR-1982 21:00:00 73 18-APR-1982 08:30:00 54895 - 33> 22-APR-1982 22:00:00 73 21-APR-1982 09:30:00 54968 - 34> 25-APR-1982 23:00:00 73 24-APR-1982 10:30:00 55041 - 35> 29-APR-1982 00:00:00 73 27-APR-1982 11:30:00 55114 - 36> 02-MAY-1982 01:00:00 73 30-APR-1982 12:30:00 55187 - 37> 05-MAY-1982 02:00:00 73 03-MAY-1982 13:30:00 55260 - 38> 08-MAY-1982 03:00:00 73 06-MAY-1982 14:30:00 55333 - 39> 11-MAY-1982 04:00:00 73 09-MAY-1982 15:30:00 55406 - 40> 14-MAY-1982 05:00:00 73 12-MAY-1982 16:30:00 55479 - 41> 17-MAY-1982 06:00:00 73 15-MAY-1982 17:30:00 55552 - 42> 20-MAY-1982 07:00:00 73 18-MAY-1982 18:30:00 55625 - 43> 23-MAY-1982 08:00:00 73 21-MAY-1982 19:30:00 55698 - 44> 26-MAY-1982 09:00:00 73 24-MAY-1982 20:30:00 55771 - 45> 29-MAY-1982 10:00:00 73 27-MAY-1982 21:30:00 55844 - 46> 01-JUN-1982 11:00:00 73 30-MAY-1982 22:30:00 55917 - 47> 04-JUN-1982 12:00:00 73 02-JUN-1982 23:30:00 55990 - 48> 07-JUN-1982 13:00:00 73 06-JUN-1982 00:30:00 56063 - 49> 10-JUN-1982 14:00:00 73 09-JUN-1982 01:30:00 56136 - 50> 13-JUN-1982 15:00:00 73 12-JUN-1982 02:30:00 56209 - 51> 16-JUN-1982 16:00:00 73 15-JUN-1982 03:30:00 56282 - 52> 19-JUN-1982 17:00:00 73 18-JUN-1982 04:30:00 56355 - 53> 22-JUN-1982 18:00:00 73 21-JUN-1982 05:30:00 56428 - 54> 25-JUN-1982 19:00:00 73 24-JUN-1982 06:30:00 56501 - 55> 28-JUN-1982 20:00:00 73 27-JUN-1982 07:30:00 56574 - 56> 01-JUL-1982 21:00:00 73 30-JUN-1982 08:30:00 56647 - 57> 04-JUL-1982 22:00:00 73 03-JUL-1982 09:30:00 56720 - 58> 07-JUL-1982 23:00:00 73 06-JUL-1982 10:30:00 56793 - 59> 11-JUL-1982 00:00:00 73 09-JUL-1982 11:30:00 56866 - 60> 14-JUL-1982 01:00:00 73 12-JUL-1982 12:30:00 56939 - 61> 17-JUL-1982 02:00:00 73 15-JUL-1982 13:30:00 57012 - 62> 20-JUL-1982 03:00:00 73 18-JUL-1982 14:30:00 57085 - 63> 23-JUL-1982 04:00:00 73 21-JUL-1982 15:30:00 57158 - 64> 26-JUL-1982 05:00:00 73 24-JUL-1982 16:30:00 57231 - 65> 29-JUL-1982 06:00:00 73 27-JUL-1982 17:30:00 57304 - 66> 01-AUG-1982 07:00:00 73 30-JUL-1982 18:30:00 57377 - 67> 04-AUG-1982 08:00:00 73 02-AUG-1982 19:30:00 57450 - 68> 07-AUG-1982 09:00:00 73 05-AUG-1982 20:30:00 57523 - 69> 10-AUG-1982 10:00:00 73 08-AUG-1982 21:30:00 57596 - 70> 13-AUG-1982 11:00:00 73 11-AUG-1982 22:30:00 57669 - 71> 16-AUG-1982 12:00:00 73 14-AUG-1982 23:30:00 57742 - 72> 19-AUG-1982 13:00:00 73 18-AUG-1982 00:30:00 57815 - 73> 22-AUG-1982 14:00:00 73 21-AUG-1982 01:30:00 57888 - 74> 25-AUG-1982 15:00:00 73 24-AUG-1982 02:30:00 57961 - 75> 28-AUG-1982 16:00:00 73 27-AUG-1982 03:30:00 58034 - 76> 31-AUG-1982 17:00:00 73 30-AUG-1982 04:30:00 58107 - 77> 03-SEP-1982 18:00:00 73 02-SEP-1982 05:30:00 58180 - 78> 06-SEP-1982 19:00:00 73 05-SEP-1982 06:30:00 58253 - 79> 09-SEP-1982 20:00:00 73 08-SEP-1982 07:30:00 58326 - 80> 12-SEP-1982 21:00:00 73 11-SEP-1982 08:30:00 58399 - 81> 15-SEP-1982 22:00:00 73 14-SEP-1982 09:30:00 58472 - 82> 18-SEP-1982 23:00:00 73 17-SEP-1982 10:30:00 58545 - 83> 22-SEP-1982 00:00:00 73 20-SEP-1982 11:30:00 58618 - 84> 25-SEP-1982 01:00:00 73 23-SEP-1982 12:30:00 58691 - 85> 28-SEP-1982 02:00:00 73 26-SEP-1982 13:30:00 58764 - 86> 01-OCT-1982 03:00:00 73 29-SEP-1982 14:30:00 58837 - 87> 04-OCT-1982 04:00:00 73 02-OCT-1982 15:30:00 58910 - 88> 07-OCT-1982 05:00:00 73 05-OCT-1982 16:30:00 58983 - 89> 10-OCT-1982 06:00:00 73 08-OCT-1982 17:30:00 59056 - 90> 13-OCT-1982 07:00:00 73 11-OCT-1982 18:30:00 59129 - 91> 16-OCT-1982 08:00:00 73 14-OCT-1982 19:30:00 59202 - 92> 19-OCT-1982 09:00:00 73 17-OCT-1982 20:30:00 59275 - 93> 22-OCT-1982 10:00:00 73 20-OCT-1982 21:30:00 59348 - 94> 25-OCT-1982 11:00:00 73 23-OCT-1982 22:30:00 59421 - 95> 28-OCT-1982 12:00:00 73 26-OCT-1982 23:30:00 59494 - 96> 31-OCT-1982 13:00:00 73 30-OCT-1982 00:30:00 59567 - 97> 03-NOV-1982 14:00:00 73 02-NOV-1982 01:30:00 59640 - 98> 06-NOV-1982 15:00:00 73 05-NOV-1982 02:30:00 59713 - 99> 09-NOV-1982 16:00:00 73 08-NOV-1982 03:30:00 59786 - 100> 12-NOV-1982 17:00:00 73 11-NOV-1982 04:30:00 59859 - 101> 15-NOV-1982 18:00:00 73 14-NOV-1982 05:30:00 59932 - 102> 18-NOV-1982 19:00:00 73 17-NOV-1982 06:30:00 60005 - 103> 21-NOV-1982 20:00:00 73 20-NOV-1982 07:30:00 60078 - 104> 24-NOV-1982 21:00:00 73 23-NOV-1982 08:30:00 60151 - 105> 27-NOV-1982 22:00:00 73 26-NOV-1982 09:30:00 60224 - 106> 30-NOV-1982 23:00:00 73 29-NOV-1982 10:30:00 60297 - 107> 04-DEC-1982 00:00:00 73 02-DEC-1982 11:30:00 60370 - 108> 07-DEC-1982 01:00:00 73 05-DEC-1982 12:30:00 60443 - 109> 10-DEC-1982 02:00:00 73 08-DEC-1982 13:30:00 60516 - 110> 13-DEC-1982 03:00:00 73 11-DEC-1982 14:30:00 60589 - 111> 16-DEC-1982 04:00:00 73 14-DEC-1982 15:30:00 60662 - 112> 19-DEC-1982 05:00:00 73 17-DEC-1982 16:30:00 60735 - 113> 22-DEC-1982 06:00:00 73 20-DEC-1982 17:30:00 60808 - 114> 25-DEC-1982 07:00:00 73 23-DEC-1982 18:30:00 60881 - 115> 28-DEC-1982 08:00:00 73 26-DEC-1982 19:30:00 60954 - 116> 31-DEC-1982 09:00:00 73 29-DEC-1982 20:30:00 61027 - 117> 03-JAN-1983 10:00:00 73 01-JAN-1983 21:30:00 61100 - 118> 06-JAN-1983 11:00:00 73 04-JAN-1983 22:30:00 61173 - 119> 09-JAN-1983 12:00:00 73 07-JAN-1983 23:30:00 61246 - 120> 12-JAN-1983 13:00:00 73 11-JAN-1983 00:30:00 61319 - 121> 15-JAN-1983 14:00:00 73 14-JAN-1983 01:30:00 61392 - - -!explicit limit problem -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_explicit_limits.jnl -! err491_explicit_limits -! 2/98 *sh* -! bugs reported by Mark Wetzler and Mike Knezevitch - -! ferret was assigning uvar_given = uvlim_irrelevant to axes of uvars where -! the limits were given in square brackets. - -! fixed by change in MERGE_GRID (2/23/98) - -! Note that the repair caused a bug in err490_l_ave to re-emerge. That bug -! was fixed through a further repair to MERGE_GRID (2/28/98) - -!SET MODE DIAGNOSTIC - removed *sh* 10/99 - -! Wetzler bug -! @AVE is ignored -- size of result on X is 5 points instead of 1 -let p = i[i=1:5] -let q = i[i=1:5] -let pq = p*q -stat pq[i=@ave] - - P*Q - X: 0.5 to 5.5 (averaged) - Y: N/A - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 11 - Maximum value: 11 - Mean value: 11 (unweighted average) - -! Knezevitch bug -! causes crash in nest_region_class.F -let timestamp = DAYS1900(1998,02,23) - DAYS1900(1998,02,1) -list timestamp[i=1:1] - VARIABLE : DAYS1900(1998,02,23) - DAYS1900(1998,02,1) - 22.0000 - - - - -!regridding by association problem *kob* 4/98 -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_asn.jnl -! err491_asn.jnl 4/98 *sh* (extracted from bug reported by Jennifer Adams) -! Ferret crashes on regridding by association where destination -! axis does not overlap the input subscript range at all - -! fixed with repair to RECVD_REGRID - -!set mode diag - removed *sh* 10/99 -set mode ignore ! added for benchmark suite... - -let test = y[y=101:200:1] -let test2 = test[y=151:200] ! defined on 151:200 - -define axis/y=1:50:1 y50 -list test2[gy=y50@asn] ! request association onto 1:50 - VARIABLE : TEST[Y=151:200] - regrid: 1 delta on Y@ASN - SUBSET : 50 points (Y) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... - 6 / 6:.... - 7 / 7:.... - 8 / 8:.... - 9 / 9:.... - 10 / 10:.... - 11 / 11:.... - 12 / 12:.... - 13 / 13:.... - 14 / 14:.... - 15 / 15:.... - 16 / 16:.... - 17 / 17:.... - 18 / 18:.... - 19 / 19:.... - 20 / 20:.... - 21 / 21:.... - 22 / 22:.... - 23 / 23:.... - 24 / 24:.... - 25 / 25:.... - 26 / 26:.... - 27 / 27:.... - 28 / 28:.... - 29 / 29:.... - 30 / 30:.... - 31 / 31:.... - 32 / 32:.... - 33 / 33:.... - 34 / 34:.... - 35 / 35:.... - 36 / 36:.... - 37 / 37:.... - 38 / 38:.... - 39 / 39:.... - 40 / 40:.... - 41 / 41:.... - 42 / 42:.... - 43 / 43:.... - 44 / 44:.... - 45 / 45:.... - 46 / 46:.... - 47 / 47:.... - 48 / 48:.... - 49 / 49:.... - 50 / 50:.... - -!list/y=1:50 test2[gy=y50@asn] ! same misbehavior and crash - -cancel mode ignore ! added for benchmark suite... - -! v5.4 *kob* 10/01 - need to add exit/script - new exit command qualifiers -exit/script - -!double precision attribute problem *kob* 4/98 -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_attrib_dp.jnl -! err491_attrib_dp.jnl -! kob 4/23/98 - -! bug reported by Donald S. Dunbar 4/21/98 -! -! there was a difference in behavior between v445 and v491. the problem was -! that between the versions, a bug was introduced into cd_get_attval.F -! which caused invalid values to be used if an attribute contained double -! precision values. the lines below read in a small sample of DD's cdf file -! and list the variable elev. values should be around 2-3. -! -! routine modifed: fmt/src/cd_get_attval.F - - -use err491_attval.cdf -list elev - VARIABLE : Surface elevation (meter) - DATA SET : K-Bay OAR3d model (200m) - FILENAME : err491_attval.cdf - SUBSET : 35 by 127 points (LONGITUDE-LATITUDE) - T (day) : 1.78368 - ... listing every 3th point - 135.51W 135.469W 135.429W 135.389W 135.348W 135.308W 135.267W 135.227W 135.187W 135.146W 135.106W 135.066W - 1 4 7 10 13 16 19 22 25 28 31 34 - 59.4667N / 127: .... .... .... .... .... .... .... .... .... .... .... .... - 59.4599N / 126: .... .... .... .... .... .... .... .... .... .... .... .... - 59.453N / 125: .... .... .... .... .... .... .... .... .... .... .... .... - 59.4462N / 124: .... .... .... .... .... .... .... .... .... .... 2.97638 .... - 59.4394N / 123: .... .... .... .... .... .... .... .... .... .... .... .... - 59.4325N / 122: .... .... .... .... .... .... .... .... .... .... .... .... - 59.4257N / 121: .... .... .... .... .... .... .... .... .... .... .... .... - 59.4189N / 120: .... .... .... .... .... .... .... .... .... 2.97500 .... .... - 59.412N / 119: .... .... .... .... .... .... .... .... .... 2.97500 .... .... - 59.4052N / 118: .... .... .... .... .... .... .... .... .... 2.97528 .... .... - 59.3983N / 117: .... .... .... .... .... .... .... .... .... 2.97500 .... .... - 59.3915N / 116: .... .... .... .... .... .... .... .... .... 2.97528 .... .... - 59.3846N / 115: .... .... .... .... .... .... .... .... .... 2.97555 .... .... - 59.3778N / 114: .... .... .... .... .... .... .... .... .... .... .... .... - 59.3709N / 113: .... .... .... .... .... .... .... .... .... .... .... .... - 59.3641N / 112: .... .... .... .... .... .... .... .... 2.98572 .... .... .... - 59.3572N / 111: .... .... .... .... .... .... .... .... 2.98764 .... .... .... - 59.3504N / 110: .... .... .... .... .... .... .... .... 2.98791 .... .... .... - 59.3435N / 109: .... .... .... .... .... .... .... .... .... .... .... .... - 59.3366N / 108: .... .... .... .... .... .... .... .... .... .... .... .... - 59.3298N / 107: .... .... .... .... .... .... .... 2.98599 .... .... .... .... - 59.3229N / 106: .... .... .... .... 2.98956 .... .... 2.98709 .... .... .... .... - 59.3161N / 105: .... .... .... .... 2.98901 .... .... 2.98627 .... .... .... .... - 59.3092N / 104: .... .... .... .... 2.98846 .... 2.98379 2.98517 .... .... .... .... - 59.3023N / 103: .... .... .... .... .... 2.98379 2.98297 2.98407 .... .... .... .... - 59.2955N / 102: .... .... .... .... .... 2.98297 .... 2.98270 .... .... .... .... - 59.2886N / 101: .... 2.99863 .... .... .... 2.98297 2.98077 2.98105 .... .... .... .... - 59.2817N / 100: .... .... 2.98956 .... .... .... 2.98132 .... .... .... .... .... - 59.2748N / 99: .... .... 2.99149 .... .... 2.98462 2.98050 .... .... .... .... .... - 59.268N / 98: .... .... 2.99341 .... .... 2.98462 2.97967 .... .... .... .... .... - 59.2611N / 97: .... .... 2.99561 .... .... .... 2.97967 .... .... .... .... .... - 59.2542N / 96: .... .... 2.99615 3.00055 .... .... 2.98132 .... .... .... .... .... - 59.2473N / 95: .... .... 2.99643 2.99945 .... 2.98434 2.98709 .... .... .... .... .... - 59.2405N / 94: .... .... .... 2.99753 .... 2.98572 2.99286 .... .... .... .... .... - 59.2336N / 93: .... .... .... 2.99561 2.99588 2.98627 2.99313 .... .... .... .... .... - 59.2267N / 92: .... .... .... 2.99396 2.99451 .... 2.99588 2.99588 .... .... .... .... - 59.2198N / 91: .... .... .... 2.99231 2.99341 .... 2.99643 2.99698 .... .... .... .... - 59.2129N / 90: .... .... .... 2.99039 2.99176 .... 2.99561 2.99780 .... .... .... .... - 59.2061N / 89: .... .... .... 2.98984 2.99231 .... 2.99396 2.99725 .... .... .... .... - 59.1992N / 88: .... .... .... 2.98984 2.99176 .... .... 2.99368 .... .... .... .... - 59.1923N / 87: .... .... .... .... 2.99203 .... .... 2.99039 .... .... .... .... - 59.1854N / 86: .... .... .... .... 2.99451 .... .... 2.98956 .... .... .... .... - 59.1785N / 85: .... .... .... 2.99313 2.99670 2.99918 .... 2.98956 .... .... .... .... - 59.1716N / 84: .... .... .... 2.99423 2.99808 .... .... 2.99066 .... .... .... .... - 59.1647N / 83: .... .... .... 2.99561 2.99780 3.00494 .... 2.99149 .... .... .... .... - 59.1578N / 82: .... .... .... 2.99588 2.99835 .... .... 2.99286 .... .... .... .... - 59.1509N / 81: .... .... .... 2.99588 2.99945 .... 2.99506 2.99423 .... .... .... .... - 59.144N / 80: .... .... .... .... 2.99973 .... 2.99561 2.99396 .... .... .... .... - 59.1371N / 79: .... .... .... .... 2.99973 .... 2.99643 2.99396 .... .... .... .... - 59.1302N / 78: .... .... .... .... 3.00055 .... 2.99808 2.99451 .... .... .... .... - 59.1233N / 77: .... .... .... .... 3.00247 .... 3.00027 2.99561 .... .... .... .... - 59.1164N / 76: .... .... .... .... 3.00385 .... 3.00110 2.99670 .... .... .... .... - 59.1095N / 75: .... .... .... .... .... 3.00330 3.00275 2.99753 .... .... .... .... - 59.1026N / 74: .... .... .... .... .... 3.00192 .... 2.99808 .... .... .... .... - 59.0957N / 73: .... .... .... .... 2.99643 3.00027 .... 2.99973 .... .... .... .... - 59.0888N / 72: .... .... .... .... 2.99615 3.00000 .... 3.00082 .... .... .... .... - 59.0819N / 71: .... .... .... .... 2.99670 3.00055 3.00412 3.00110 .... .... .... .... - 59.075N / 70: .... .... .... .... 2.99780 3.00137 3.00302 3.00137 .... .... .... .... - 59.0681N / 69: .... .... .... .... 2.99890 3.00137 3.00082 3.00055 .... .... .... .... - 59.0612N / 68: .... .... .... .... 2.99863 3.00000 .... 2.99780 .... .... .... .... - 59.0542N / 67: .... .... .... .... 2.99835 2.99780 .... 2.99533 .... .... .... .... - 59.0473N / 66: .... .... .... .... 2.99808 2.99615 .... 2.99341 .... .... .... .... - 59.0404N / 65: .... .... .... .... 2.99780 2.99588 2.99368 2.99094 .... .... .... .... - 59.0335N / 64: .... .... .... 2.99835 2.99753 2.99506 2.99286 2.98791 .... .... .... .... - 59.0266N / 63: .... .... .... 2.99780 .... 2.99396 2.99039 2.98599 .... .... .... .... - 59.0196N / 62: .... .... .... 2.99698 .... 2.99258 .... 2.98324 .... .... .... .... - 59.0127N / 61: .... .... .... 2.99561 .... 2.99203 2.98572 2.97995 .... .... .... .... - 59.0058N / 60: .... .... .... 2.99423 .... 2.99121 2.98572 2.97748 .... .... .... .... - 58.9989N / 59: .... .... .... 2.99506 .... 2.99094 2.98572 2.97748 .... .... .... .... - 58.9919N / 58: .... .... .... 2.99808 .... 2.99066 2.98489 2.97748 .... .... .... .... - 58.985N / 57: .... .... .... 3.00027 .... 2.99011 2.98407 2.97720 .... .... .... .... - 58.9781N / 56: .... .... .... 3.00055 .... 2.98929 2.98160 2.97720 .... .... .... .... - 58.9711N / 55: .... .... .... 3.00000 .... 2.98819 2.97693 2.97638 .... .... .... .... - 58.9642N / 54: .... .... .... 2.99863 .... 2.98736 2.97775 2.97198 .... .... .... .... - 58.9573N / 53: .... .... .... 2.99670 .... 2.98682 2.97803 2.96512 .... .... .... .... - 58.9503N / 52: .... .... .... 2.99588 2.99203 2.98654 2.97830 2.96676 .... .... .... .... - 58.9434N / 51: .... .... .... 2.99588 2.99231 2.98654 2.97748 2.96814 .... .... .... .... - 58.9365N / 50: .... .... .... 2.99780 2.99258 2.98627 2.97665 .... .... .... .... .... - 58.9295N / 49: .... .... .... .... 2.99231 2.98572 2.97638 .... .... .... .... .... - 58.9226N / 48: .... .... .... .... 2.99286 2.98544 2.97610 .... .... .... .... .... - 58.9156N / 47: .... .... .... 2.99478 2.99423 2.98544 2.97528 .... .... .... .... .... - 58.9087N / 46: .... .... .... 2.99533 2.99368 2.98517 2.97500 .... .... .... .... .... - 58.9017N / 45: .... .... .... 2.99506 2.99286 2.98489 2.97528 .... .... .... .... .... - 58.8948N / 44: .... .... .... 2.99533 2.99231 2.98489 2.97528 .... .... .... .... .... - 58.8878N / 43: .... .... .... 2.99615 2.99176 2.98462 2.97555 .... .... .... .... .... - 58.8809N / 42: .... .... .... 2.99698 2.99258 2.98489 2.97638 .... .... .... .... .... - 58.8739N / 41: .... .... .... 2.99698 2.99341 2.98544 2.97555 .... .... .... .... .... - 58.867N / 40: .... .... .... 2.99698 2.99341 2.98544 2.97418 .... .... .... .... .... - 58.86N / 39: .... .... .... 2.99753 2.99368 2.98544 2.97171 .... .... .... .... .... - 58.8531N / 38: .... .... .... 2.99835 2.99368 2.98572 2.96786 .... .... .... .... .... - 58.8461N / 37: .... .... .... 2.99863 2.99368 2.98572 2.96621 .... .... .... .... .... - 58.8392N / 36: .... .... .... 2.99890 2.99368 2.98517 2.96814 .... .... .... .... .... - 58.8322N / 35: .... .... .... .... 2.99313 2.98379 2.97061 .... .... .... .... .... - 58.8252N / 34: .... .... .... .... 2.99258 2.98215 2.96896 .... .... .... .... .... - 58.8183N / 33: .... .... .... .... 2.99121 2.98160 2.96814 .... .... .... .... .... - 58.8113N / 32: .... .... .... .... 2.99094 2.98242 2.96869 .... .... .... 2.93408 2.92254 - 58.8043N / 31: .... .... .... .... 2.99341 2.98297 2.96759 .... .... .... 2.93463 .... - 58.7974N / 30: .... .... .... 3.00247 2.99286 2.98242 2.96621 2.94754 .... .... 2.93545 .... - 58.7904N / 29: .... .... .... .... 2.99149 2.98105 2.96567 2.94809 .... .... .... .... - 58.7834N / 28: .... .... .... .... 2.99094 2.97967 2.96512 2.94644 .... .... 2.96374 .... - 58.7765N / 27: .... .... .... .... 2.98956 2.97748 2.96347 2.94864 .... .... 2.95880 .... - 58.7695N / 26: .... .... .... .... 2.98874 2.97940 2.96484 2.95440 .... 2.94781 2.95660 .... - 58.7625N / 25: .... .... .... .... 2.98846 2.98187 2.96869 2.95990 .... 2.95166 2.95495 .... - 58.7555N / 24: .... .... .... .... 2.98791 2.98160 2.96896 2.96264 .... 2.95358 2.95303 .... - 58.7486N / 23: .... .... .... 2.98682 2.98627 2.97940 2.96841 2.96127 .... 2.95440 2.95056 .... - 58.7416N / 22: .... .... .... 2.98544 2.98462 2.97693 2.96731 2.95935 .... 2.95276 2.94616 .... - 58.7346N / 21: .... .... .... 2.98352 2.98297 2.97500 2.96484 2.95797 2.95166 2.94919 2.94507 .... - 58.7276N / 20: .... .... .... .... 2.98160 2.97226 2.96292 2.95605 2.95138 2.94644 2.94232 .... - 58.7206N / 19: .... .... .... .... 2.97995 2.96896 2.96209 2.95578 2.95056 2.94452 .... .... - 58.7137N / 18: .... .... .... .... 2.97858 2.97088 2.96292 2.95440 2.94891 2.94424 .... .... - 58.7067N / 17: .... .... .... .... 2.97775 2.97391 2.96402 2.95331 2.94699 2.94561 .... .... - 58.6997N / 16: .... .... .... .... 2.97748 2.97446 2.96457 2.95248 2.94507 2.94616 .... .... - 58.6927N / 15: .... .... .... .... 2.97803 2.97446 2.96457 2.95056 2.94424 2.94699 .... .... - 58.6857N / 14: .... .... .... .... 2.97967 2.97446 2.96567 2.94836 2.94397 2.94726 .... .... - 58.6787N / 13: .... .... .... .... 2.98050 2.97500 2.96924 2.95193 2.94534 2.94864 .... .... - 58.6717N / 12: .... .... .... .... 2.98215 2.97638 2.96814 2.95550 2.94424 2.95193 .... .... - 58.6647N / 11: .... .... .... .... 2.98270 2.97830 2.96539 2.94919 .... 2.95248 .... .... - 58.6577N / 10: .... .... .... .... 2.98215 2.97885 2.96594 2.94534 .... .... .... .... - 58.6507N / 9: .... .... .... 2.98160 2.97995 2.97500 2.97088 2.95331 .... .... .... .... - 58.6437N / 8: .... .... .... .... 2.97967 2.97116 2.97198 2.95852 .... .... .... .... - 58.6367N / 7: .... .... .... .... 2.98160 2.97500 2.96841 2.96017 .... .... .... .... - 58.6297N / 6: .... .... .... .... 2.98132 2.97693 2.96896 2.96292 2.94946 .... .... .... - 58.6227N / 5: .... .... .... .... 2.98160 2.97665 2.97143 2.96155 2.95221 .... .... .... - 58.6157N / 4: .... .... .... .... 2.96951 2.96814 2.96484 2.95660 2.95138 .... .... .... - 58.6087N / 3: .... .... .... .... 2.95276 2.95138 2.94397 2.96127 2.94644 .... .... .... - 58.6017N / 2: .... .... .... .... 2.93957 2.93957 2.93957 2.93957 2.93957 .... .... .... - 58.5947N / 1: .... .... .... .... 2.93957 2.93957 2.93957 2.93957 2.93957 .... .... .... - - -! ******** V500 Additions below *********** - -GO bn_reset bn_odd_variable_name -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_odd_variable_name -GO bn_odd_variable_name -! make sure memory is limited; otherwise the abstract axis will list -let save_mem = ($ferret_memory) - !-> DEFINE VARIABLE save_mem = 31.25 -set mem /size=10 -use weird_name1.cdf -sh data - currently SET data sets: - 1> ./data/weird_name1.cdf (default) - name title I J K L - v1 lower case v1 1:20 ... ... ... - v2-and-minus - SIN(2+I/10) 1:20 ... ... ... - V1 Upper case V1 1:20 ... ... ... - I SIN(4+I/10) 1:20 ... ... ... - X SIN(5+I/10) 1:20 ... ... ... - -set mode ignore -list v1 - VARIABLE : Upper case V1 - FILENAME : weird_name1.cdf - SUBSET : 20 points (X) - 1 / 1: 0.041581 - 2 / 2: -0.058374 - 3 / 3: -0.157746 - 4 / 4: -0.255541 - 5 / 5: -0.350783 - 6 / 6: -0.442520 - 7 / 7: -0.529836 - 8 / 8: -0.611858 - 9 / 9: -0.687766 - 10 / 10: -0.756802 - 11 / 11: -0.818277 - 12 / 12: -0.871576 - 13 / 13: -0.916166 - 14 / 14: -0.951602 - 15 / 15: -0.977530 - 16 / 16: -0.993691 - 17 / 17: -0.999923 - 18 / 18: -0.996165 - 19 / 19: -0.982453 - 20 / 20: -0.958924 -list 'v1' - VARIABLE : lower case v1 - FILENAME : weird_name1.cdf - SUBSET : 20 points (X) - 1 / 1: 0.891207 - 2 / 2: 0.932039 - 3 / 3: 0.963558 - 4 / 4: 0.985450 - 5 / 5: 0.997495 - 6 / 6: 0.999574 - 7 / 7: 0.991665 - 8 / 8: 0.973848 - 9 / 9: 0.946300 - 10 / 10: 0.909297 - 11 / 11: 0.863209 - 12 / 12: 0.808496 - 13 / 13: 0.745705 - 14 / 14: 0.675463 - 15 / 15: 0.598472 - 16 / 16: 0.515501 - 17 / 17: 0.427380 - 18 / 18: 0.334988 - 19 / 19: 0.239249 - 20 / 20: 0.141120 -list v2-and-minus ! Deliberate error -list 'v2-and-minus' ! Now the proper syntax - VARIABLE : SIN(2+I/10) - FILENAME : weird_name1.cdf - SUBSET : 20 points (X) - 1 / 1: 0.863209 - 2 / 2: 0.808496 - 3 / 3: 0.745705 - 4 / 4: 0.675463 - 5 / 5: 0.598472 - 6 / 6: 0.515501 - 7 / 7: 0.427380 - 8 / 8: 0.334988 - 9 / 9: 0.239249 - 10 / 10: 0.141120 - 11 / 11: 0.041581 - 12 / 12: -0.058374 - 13 / 13: -0.157746 - 14 / 14: -0.255541 - 15 / 15: -0.350783 - 16 / 16: -0.442520 - 17 / 17: -0.529836 - 18 / 18: -0.611858 - 19 / 19: -0.687766 - 20 / 20: -0.756802 -list x ! Deliberate error -list 'X' ! Now the proper syntax - VARIABLE : SIN(5+I/10) - FILENAME : weird_name1.cdf - SUBSET : 20 points (X) - 1 / 1: -0.925815 - 2 / 2: -0.883455 - 3 / 3: -0.832267 - 4 / 4: -0.772764 - 5 / 5: -0.705540 - 6 / 6: -0.631267 - 7 / 7: -0.550686 - 8 / 8: -0.464602 - 9 / 9: -0.373877 - 10 / 10: -0.279415 - 11 / 11: -0.182163 - 12 / 12: -0.083090 - 13 / 13: 0.016814 - 14 / 14: 0.116549 - 15 / 15: 0.215120 - 16 / 16: 0.311541 - 17 / 17: 0.404850 - 18 / 18: 0.494114 - 19 / 19: 0.578440 - 20 / 20: 0.656987 -list i ! Deliberate error - -! v694 No longer an error: See ticket 2050 -list 'i' ! - VARIABLE : SIN(4+I/10) - FILENAME : weird_name1.cdf - SUBSET : 20 points (X) - 1 / 1: -0.818277 - 2 / 2: -0.871576 - 3 / 3: -0.916166 - 4 / 4: -0.951602 - 5 / 5: -0.977530 - 6 / 6: -0.993691 - 7 / 7: -0.999923 - 8 / 8: -0.996165 - 9 / 9: -0.982453 - 10 / 10: -0.958924 - 11 / 11: -0.925815 - 12 / 12: -0.883455 - 13 / 13: -0.832267 - 14 / 14: -0.772764 - 15 / 15: -0.705540 - 16 / 16: -0.631267 - 17 / 17: -0.550686 - 18 / 18: -0.464602 - 19 / 19: -0.373877 - 20 / 20: -0.279415 - -list 'I' ! Now the proper syntax - VARIABLE : SIN(4+I/10) - FILENAME : weird_name1.cdf - SUBSET : 20 points (X) - 1 / 1: -0.818277 - 2 / 2: -0.871576 - 3 / 3: -0.916166 - 4 / 4: -0.951602 - 5 / 5: -0.977530 - 6 / 6: -0.993691 - 7 / 7: -0.999923 - 8 / 8: -0.996165 - 9 / 9: -0.982453 - 10 / 10: -0.958924 - 11 / 11: -0.925815 - 12 / 12: -0.883455 - 13 / 13: -0.832267 - 14 / 14: -0.772764 - 15 / 15: -0.705540 - 16 / 16: -0.631267 - 17 / 17: -0.550686 - 18 / 18: -0.464602 - 19 / 19: -0.373877 - 20 / 20: -0.279415 -list 'V1' - 'v1' - VARIABLE : 'V1' - 'v1' - FILENAME : weird_name1.cdf - SUBSET : 20 points (X) - 1 / 1: -0.84963 - 2 / 2: -0.99041 - 3 / 3: -1.12130 - 4 / 4: -1.24099 - 5 / 5: -1.34828 - 6 / 6: -1.44209 - 7 / 7: -1.52150 - 8 / 8: -1.58571 - 9 / 9: -1.63407 - 10 / 10: -1.66610 - 11 / 11: -1.68149 - 12 / 12: -1.68007 - 13 / 13: -1.66187 - 14 / 14: -1.62707 - 15 / 15: -1.57600 - 16 / 16: -1.50919 - 17 / 17: -1.42730 - 18 / 18: -1.33115 - 19 / 19: -1.22170 - 20 / 20: -1.10004 -list 'I'[i=6:15@sbx:10] - 'X'[i=6:15@ave] - VARIABLE : 'I'[I=6:15@SBX:10] - 'X'[I=6:15@AVE] - FILENAME : weird_name1.cdf - SUBSET : 10 points (X) - 6 / 6: -0.730346 - 7 / 7: -0.736317 - 8 / 8: -0.732716 - 9 / 9: -0.719579 - 10 / 10: -0.697038 - 11 / 11: -0.665317 - 12 / 12: -0.624734 - 13 / 13: -0.575694 - 14 / 14: -0.518687 - 15 / 15: -0.454283 -list v1[i=6:15@sbx:3] - VARIABLE : Upper case V1 - box smoothed by 3 pts on X - FILENAME : weird_name1.cdf - SUBSET : 10 points (X) - 6 / 6: -0.441047 - 7 / 7: -0.528071 - 8 / 8: -0.609820 - 9 / 9: -0.685476 - 10 / 10: -0.754282 - 11 / 11: -0.815552 - 12 / 12: -0.868673 - 13 / 13: -0.913115 - 14 / 14: -0.948433 - 15 / 15: -0.974274 -list 'v1'[i=6:15@sbx:3] - VARIABLE : lower case v1 - box smoothed by 3 pts on X - FILENAME : weird_name1.cdf - SUBSET : 10 points (X) - 6 / 6: 0.996244 - 7 / 7: 0.988362 - 8 / 8: 0.970604 - 9 / 9: 0.943148 - 10 / 10: 0.906269 - 11 / 11: 0.860334 - 12 / 12: 0.805804 - 13 / 13: 0.743222 - 14 / 14: 0.673213 - 15 / 15: 0.596479 -list 'I'-'X'/'v2-and-minus' - VARIABLE : 'I'-'X'/'v2-and-minus' - FILENAME : weird_name1.cdf - SUBSET : 20 points (X) - 1 / 1: 0.25425 - 2 / 2: 0.22114 - 3 / 3: 0.19991 - 4 / 4: 0.19245 - 5 / 5: 0.20137 - 6 / 6: 0.23088 - 7 / 7: 0.28859 - 8 / 8: 0.39076 - 9 / 9: 0.58026 - 10 / 10: 1.02106 - 11 / 11: 3.45512 - 12 / 12: -2.30685 - 13 / 13: -0.72568 - 14 / 14: -0.31668 - 15 / 15: -0.09228 - 16 / 16: 0.07275 - 17 / 17: 0.21342 - 18 / 18: 0.34296 - 19 / 19: 0.46716 - 20 / 20: 0.58869 -list v1[i=@max] - VARIABLE : Upper case V1 - FILENAME : weird_name1.cdf - X : 0.5 to 20.5 (maximum) - 0.0415808 -list 'v1'[i=@max] - VARIABLE : lower case v1 - FILENAME : weird_name1.cdf - X : 0.5 to 20.5 (maximum) - 0.999574 -list v2-and-minus[i=5:15@ddc] ! Deliberate error -list 'v2-and-minus'[i=5:15@ddc] ! Now the proper syntax - VARIABLE : SIN(2+I/10) - centered derivative on X - FILENAME : weird_name1.cdf - SUBSET : 11 points (X) - 5 / 5: -0.0799809 - 6 / 6: -0.0855462 - 7 / 7: -0.0902566 - 8 / 8: -0.0940653 - 9 / 9: -0.0969341 - 10 / 10: -0.0988342 - 11 / 11: -0.0997471 - 12 / 12: -0.0996632 - 13 / 13: -0.0985835 - 14 / 14: -0.0965188 - 15 / 15: -0.0934896 -! restore orginal memory size -set mem /size=`save_mem` - !-> set mem /size=31.25 - -GO bn_reset bn_test_stream -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_test_stream -GO bn_test_stream - -canc data/all - -sp rm -f permutedBinaryTest.dat -list/i=1:48/form=stream/file=permutedBinaryTest.dat i - -sp rm -f junk.dat -list/i=1:5/form=stream/file=junk.dat i - - - -! -! Following are intentional errors... -! -set mode ignore - -! -! Ultra large grid - -canc data/all - -def axis/x=1:1000000000:1 xax -def axis/y=1:2:1 yax -def axis/z=1:3:1 zax -def axis/t=1:4:1 tax -def grid/x=xax/y=yax/z=zax/t=tax mygrid - -file/format=stream/var=num/grid=mygrid junk.dat -load num - To fulfill this request would exceed the current SET MEMORY/SIZE= limit of 250Mb - At the moment that the memory limit was reached - memory was committed as follows: - - to objects used in computation: 0 (0%) - The size of the requested object was: 192 Gb (76800%) - -! -! Semilarge grid -! - -canc data/all - -def axis/x=1:1000000000:1 xax -def axis/y=1:1:1 yax -def axis/z=1:1:1 zax -def axis/t=1:1:1 tax -def grid/x=xax/y=yax/z=zax/t=tax mygrid - -file/format=stream/var=num/grid=mygrid junk.dat -load num - To fulfill this request would exceed the current SET MEMORY/SIZE= limit of 250Mb - At the moment that the memory limit was reached - memory was committed as follows: - - to objects used in computation: 0 (0%) - The size of the requested object was: 8 Gb (3200%) - -canc data/all - -def axis/x=1:1:1 xax -def axis/y=1:2:1 yax -def axis/z=1:3:1 zax -def axis/t=1:4:1 tax -def grid/x=xax/y=yax/z=zax/t=tax mygrid - - - -! Non-existent file -file/format=stream/var=num/grid=mygrid NoSuchFile.dat - -! File that doesn't match specified size -file/format=stream/var=num/grid=mygrid junk.dat -load num - -! Try listing with V permutation (disable: hangs Ferret) -!list/clobber/file=foobar.dat/form=str/order=badsyntax/i=1:100 i - -! Try reading in with V permutation for non-stream data -file/var=num/order=vxyzt/grid=mygrid junk.dat - -! Try /type flag with non-stream data -file/type=i2/grid=mygrid junk.dat - -! Try /swap flag with non-stream data -file/type=i2/grid=mygrid junk.dat - -! Try bad type flag -file/var=num/type=i3/grid=mygrid/form=stream junk.dat - -! Try list of types that is smaller than list of variables -file/var=num,num1,num2/type=i2,i1/form=stream junk.dat - -canc dat/all -canc mode ignore - -!!OK, load file in 'normal order' -file/format=str/var=num,num1/grid=mygrid/order=xyztv permutedBinaryTest.dat -list num - VARIABLE : num - FILENAME : permutedBinaryTest.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 3.0000 4.0000 - 3 / 3: 5.0000 6.0000 - ---- L:2 T: 2 - 1 / 1: 7.0000 8.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 11.0000 12.0000 - ---- L:3 T: 3 - 1 / 1: 13.0000 14.0000 - 2 / 2: 15.0000 16.0000 - 3 / 3: 17.0000 18.0000 - ---- L:4 T: 4 - 1 / 1: 19.0000 20.0000 - 2 / 2: 21.0000 22.0000 - 3 / 3: 23.0000 24.0000 -list num1 - VARIABLE : num1 - FILENAME : permutedBinaryTest.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 25.0000 26.0000 - 2 / 2: 27.0000 28.0000 - 3 / 3: 29.0000 30.0000 - ---- L:2 T: 2 - 1 / 1: 31.0000 32.0000 - 2 / 2: 33.0000 34.0000 - 3 / 3: 35.0000 36.0000 - ---- L:3 T: 3 - 1 / 1: 37.0000 38.0000 - 2 / 2: 39.0000 40.0000 - 3 / 3: 41.0000 42.0000 - ---- L:4 T: 4 - 1 / 1: 43.0000 44.0000 - 2 / 2: 45.0000 46.0000 - 3 / 3: 47.0000 48.0000 - -!---------- A few tests for single-precision, integer, short, byte - -! testing real*4 write and read-back -sp rm -f permutedBinaryTest_r4.dat -list/i=1:48/form=stream/file=permutedBinaryTest_r4.dat/outtype=float i - -file/format=str/var=num,num1/type=r4/grid=mygrid/order=xyztv permutedBinaryTest_r4.dat -list num - VARIABLE : num - FILENAME : permutedBinaryTest_r4.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 3.0000 4.0000 - 3 / 3: 5.0000 6.0000 - ---- L:2 T: 2 - 1 / 1: 7.0000 8.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 11.0000 12.0000 - ---- L:3 T: 3 - 1 / 1: 13.0000 14.0000 - 2 / 2: 15.0000 16.0000 - 3 / 3: 17.0000 18.0000 - ---- L:4 T: 4 - 1 / 1: 19.0000 20.0000 - 2 / 2: 21.0000 22.0000 - 3 / 3: 23.0000 24.0000 -list num1 - VARIABLE : num1 - FILENAME : permutedBinaryTest_r4.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 25.0000 26.0000 - 2 / 2: 27.0000 28.0000 - 3 / 3: 29.0000 30.0000 - ---- L:2 T: 2 - 1 / 1: 31.0000 32.0000 - 2 / 2: 33.0000 34.0000 - 3 / 3: 35.0000 36.0000 - ---- L:3 T: 3 - 1 / 1: 37.0000 38.0000 - 2 / 2: 39.0000 40.0000 - 3 / 3: 41.0000 42.0000 - ---- L:4 T: 4 - 1 / 1: 43.0000 44.0000 - 2 / 2: 45.0000 46.0000 - 3 / 3: 47.0000 48.0000 -cancel data 2 - -! testing integer*4 write and read-back -sp rm -f permutedBinaryTest_int.dat -list/i=1:48/form=stream/file=permutedBinaryTest_int.dat/outtype=int i - -file/format=str/var=num,num1/type=i4/grid=mygrid/order=xyztv permutedBinaryTest_int.dat -list num - VARIABLE : num - FILENAME : permutedBinaryTest_int.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 3.0000 4.0000 - 3 / 3: 5.0000 6.0000 - ---- L:2 T: 2 - 1 / 1: 7.0000 8.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 11.0000 12.0000 - ---- L:3 T: 3 - 1 / 1: 13.0000 14.0000 - 2 / 2: 15.0000 16.0000 - 3 / 3: 17.0000 18.0000 - ---- L:4 T: 4 - 1 / 1: 19.0000 20.0000 - 2 / 2: 21.0000 22.0000 - 3 / 3: 23.0000 24.0000 -list num1 - VARIABLE : num1 - FILENAME : permutedBinaryTest_int.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 25.0000 26.0000 - 2 / 2: 27.0000 28.0000 - 3 / 3: 29.0000 30.0000 - ---- L:2 T: 2 - 1 / 1: 31.0000 32.0000 - 2 / 2: 33.0000 34.0000 - 3 / 3: 35.0000 36.0000 - ---- L:3 T: 3 - 1 / 1: 37.0000 38.0000 - 2 / 2: 39.0000 40.0000 - 3 / 3: 41.0000 42.0000 - ---- L:4 T: 4 - 1 / 1: 43.0000 44.0000 - 2 / 2: 45.0000 46.0000 - 3 / 3: 47.0000 48.0000 -cancel data 2 - -! testing short write and read-back -sp rm -f permutedBinaryTest_short.dat -list/i=1:48/form=stream/file=permutedBinaryTest_short.dat/outtype=short i - -file/format=str/var=num,num1/type=i2/grid=mygrid/order=xyztv permutedBinaryTest_short.dat -list num - VARIABLE : num - FILENAME : permutedBinaryTest_short.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 3.0000 4.0000 - 3 / 3: 5.0000 6.0000 - ---- L:2 T: 2 - 1 / 1: 7.0000 8.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 11.0000 12.0000 - ---- L:3 T: 3 - 1 / 1: 13.0000 14.0000 - 2 / 2: 15.0000 16.0000 - 3 / 3: 17.0000 18.0000 - ---- L:4 T: 4 - 1 / 1: 19.0000 20.0000 - 2 / 2: 21.0000 22.0000 - 3 / 3: 23.0000 24.0000 -list num1 - VARIABLE : num1 - FILENAME : permutedBinaryTest_short.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 25.0000 26.0000 - 2 / 2: 27.0000 28.0000 - 3 / 3: 29.0000 30.0000 - ---- L:2 T: 2 - 1 / 1: 31.0000 32.0000 - 2 / 2: 33.0000 34.0000 - 3 / 3: 35.0000 36.0000 - ---- L:3 T: 3 - 1 / 1: 37.0000 38.0000 - 2 / 2: 39.0000 40.0000 - 3 / 3: 41.0000 42.0000 - ---- L:4 T: 4 - 1 / 1: 43.0000 44.0000 - 2 / 2: 45.0000 46.0000 - 3 / 3: 47.0000 48.0000 -cancel data 2 - -! testing byte write and read-back -sp rm -f permutedBinaryTest_byte.dat -list/i=1:48/form=stream/file=permutedBinaryTest_byte.dat/outtype=byte i - -file/format=str/var=num,num1/type=i1/grid=mygrid/order=xyztv permutedBinaryTest_byte.dat -list num - VARIABLE : num - FILENAME : permutedBinaryTest_byte.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 3.0000 4.0000 - 3 / 3: 5.0000 6.0000 - ---- L:2 T: 2 - 1 / 1: 7.0000 8.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 11.0000 12.0000 - ---- L:3 T: 3 - 1 / 1: 13.0000 14.0000 - 2 / 2: 15.0000 16.0000 - 3 / 3: 17.0000 18.0000 - ---- L:4 T: 4 - 1 / 1: 19.0000 20.0000 - 2 / 2: 21.0000 22.0000 - 3 / 3: 23.0000 24.0000 -list num1 - VARIABLE : num1 - FILENAME : permutedBinaryTest_byte.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 25.0000 26.0000 - 2 / 2: 27.0000 28.0000 - 3 / 3: 29.0000 30.0000 - ---- L:2 T: 2 - 1 / 1: 31.0000 32.0000 - 2 / 2: 33.0000 34.0000 - 3 / 3: 35.0000 36.0000 - ---- L:3 T: 3 - 1 / 1: 37.0000 38.0000 - 2 / 2: 39.0000 40.0000 - 3 / 3: 41.0000 42.0000 - ---- L:4 T: 4 - 1 / 1: 43.0000 44.0000 - 2 / 2: 45.0000 46.0000 - 3 / 3: 47.0000 48.0000 -cancel data 2 - - -!---------- - -!! Load file w/o order qualifier (should be same as above) -file/format=str/var=num,num1/grid=mygrid/order=xyztv permutedBinaryTest.dat -list num - VARIABLE : num - FILENAME : permutedBinaryTest.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 1.0000 2.0000 - 2 / 2: 3.0000 4.0000 - 3 / 3: 5.0000 6.0000 - ---- L:2 T: 2 - 1 / 1: 7.0000 8.0000 - 2 / 2: 9.0000 10.0000 - 3 / 3: 11.0000 12.0000 - ---- L:3 T: 3 - 1 / 1: 13.0000 14.0000 - 2 / 2: 15.0000 16.0000 - 3 / 3: 17.0000 18.0000 - ---- L:4 T: 4 - 1 / 1: 19.0000 20.0000 - 2 / 2: 21.0000 22.0000 - 3 / 3: 23.0000 24.0000 -list num1 - VARIABLE : num1 - FILENAME : permutedBinaryTest.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 25.0000 26.0000 - 2 / 2: 27.0000 28.0000 - 3 / 3: 29.0000 30.0000 - ---- L:2 T: 2 - 1 / 1: 31.0000 32.0000 - 2 / 2: 33.0000 34.0000 - 3 / 3: 35.0000 36.0000 - ---- L:3 T: 3 - 1 / 1: 37.0000 38.0000 - 2 / 2: 39.0000 40.0000 - 3 / 3: 41.0000 42.0000 - ---- L:4 T: 4 - 1 / 1: 43.0000 44.0000 - 2 / 2: 45.0000 46.0000 - 3 / 3: 47.0000 48.0000 - - -!! Permute tzyxv -file/format=str/var=num,num1/grid=mygrid/order=tzyxv permutedBinaryTest.dat -list num - VARIABLE : num - FILENAME : permutedBinaryTest.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 1.0000 13.0000 - 2 / 2: 5.0000 17.0000 - 3 / 3: 9.0000 21.0000 - ---- L:2 T: 2 - 1 / 1: 2.0000 14.0000 - 2 / 2: 6.0000 18.0000 - 3 / 3: 10.0000 22.0000 - ---- L:3 T: 3 - 1 / 1: 3.0000 15.0000 - 2 / 2: 7.0000 19.0000 - 3 / 3: 11.0000 23.0000 - ---- L:4 T: 4 - 1 / 1: 4.0000 16.0000 - 2 / 2: 8.0000 20.0000 - 3 / 3: 12.0000 24.0000 -list num1 - VARIABLE : num1 - FILENAME : permutedBinaryTest.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 25.0000 37.0000 - 2 / 2: 29.0000 41.0000 - 3 / 3: 33.0000 45.0000 - ---- L:2 T: 2 - 1 / 1: 26.0000 38.0000 - 2 / 2: 30.0000 42.0000 - 3 / 3: 34.0000 46.0000 - ---- L:3 T: 3 - 1 / 1: 27.0000 39.0000 - 2 / 2: 31.0000 43.0000 - 3 / 3: 35.0000 47.0000 - ---- L:4 T: 4 - 1 / 1: 28.0000 40.0000 - 2 / 2: 32.0000 44.0000 - 3 / 3: 36.0000 48.0000 - -!!Try permuted v -file/format=str/var=num,num1/grid=mygrid/order=vxyzt permutedBinaryTest.dat -list num - VARIABLE : num - FILENAME : permutedBinaryTest.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 1.0000 3.0000 - 2 / 2: 5.0000 7.0000 - 3 / 3: 9.0000 11.0000 - ---- L:2 T: 2 - 1 / 1: 13.0000 15.0000 - 2 / 2: 17.0000 19.0000 - 3 / 3: 21.0000 23.0000 - ---- L:3 T: 3 - 1 / 1: 25.0000 27.0000 - 2 / 2: 29.0000 31.0000 - 3 / 3: 33.0000 35.0000 - ---- L:4 T: 4 - 1 / 1: 37.0000 39.0000 - 2 / 2: 41.0000 43.0000 - 3 / 3: 45.0000 47.0000 -list num1 - VARIABLE : num1 - FILENAME : permutedBinaryTest.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 2.0000 4.0000 - 2 / 2: 6.0000 8.0000 - 3 / 3: 10.0000 12.0000 - ---- L:2 T: 2 - 1 / 1: 14.0000 16.0000 - 2 / 2: 18.0000 20.0000 - 3 / 3: 22.0000 24.0000 - ---- L:3 T: 3 - 1 / 1: 26.0000 28.0000 - 2 / 2: 30.0000 32.0000 - 3 / 3: 34.0000 36.0000 - ---- L:4 T: 4 - 1 / 1: 38.0000 40.0000 - 2 / 2: 42.0000 44.0000 - 3 / 3: 46.0000 48.0000 - -!! Test stuff for different data types (files previously generated by matlab -!! for big endian architecture) -file/format=str/var=num,num1/grid=mygrid/type=i1 byte.dat -list num1 - VARIABLE : num1 - FILENAME : byte.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 24.0000 25.0000 - 2 / 2: 26.0000 27.0000 - 3 / 3: 28.0000 29.0000 - ---- L:2 T: 2 - 1 / 1: 30.0000 31.0000 - 2 / 2: 32.0000 33.0000 - 3 / 3: 34.0000 35.0000 - ---- L:3 T: 3 - 1 / 1: 36.0000 37.0000 - 2 / 2: 38.0000 39.0000 - 3 / 3: 40.0000 41.0000 - ---- L:4 T: 4 - 1 / 1: 42.0000 43.0000 - 2 / 2: 44.0000 45.0000 - 3 / 3: 46.0000 47.0000 - -file/format=str/var=num,num1/grid=mygrid/type=i2/swap short.dat -list num1 - VARIABLE : num1 - FILENAME : short.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 24.0000 25.0000 - 2 / 2: 26.0000 27.0000 - 3 / 3: 28.0000 29.0000 - ---- L:2 T: 2 - 1 / 1: 30.0000 31.0000 - 2 / 2: 32.0000 33.0000 - 3 / 3: 34.0000 35.0000 - ---- L:3 T: 3 - 1 / 1: 36.0000 37.0000 - 2 / 2: 38.0000 39.0000 - 3 / 3: 40.0000 41.0000 - ---- L:4 T: 4 - 1 / 1: 42.0000 43.0000 - 2 / 2: 44.0000 45.0000 - 3 / 3: 46.0000 47.0000 - -file/format=str/var=num,num1/grid=mygrid/type=i4/swap int.dat -list num1 - VARIABLE : num1 - FILENAME : int.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 24.0000 25.0000 - 2 / 2: 26.0000 27.0000 - 3 / 3: 28.0000 29.0000 - ---- L:2 T: 2 - 1 / 1: 30.0000 31.0000 - 2 / 2: 32.0000 33.0000 - 3 / 3: 34.0000 35.0000 - ---- L:3 T: 3 - 1 / 1: 36.0000 37.0000 - 2 / 2: 38.0000 39.0000 - 3 / 3: 40.0000 41.0000 - ---- L:4 T: 4 - 1 / 1: 42.0000 43.0000 - 2 / 2: 44.0000 45.0000 - 3 / 3: 46.0000 47.0000 - -file/format=str/var=num,num1/grid=mygrid/type=r4/swap float.dat -list num1 - VARIABLE : num1 - FILENAME : float.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 24.0000 25.0000 - 2 / 2: 26.0000 27.0000 - 3 / 3: 28.0000 29.0000 - ---- L:2 T: 2 - 1 / 1: 30.0000 31.0000 - 2 / 2: 32.0000 33.0000 - 3 / 3: 34.0000 35.0000 - ---- L:3 T: 3 - 1 / 1: 36.0000 37.0000 - 2 / 2: 38.0000 39.0000 - 3 / 3: 40.0000 41.0000 - ---- L:4 T: 4 - 1 / 1: 42.0000 43.0000 - 2 / 2: 44.0000 45.0000 - 3 / 3: 46.0000 47.0000 - -file/format=str/var=num,num1/grid=mygrid/type=r8/swap double.dat -list num1 - VARIABLE : num1 - FILENAME : double.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 24.0000 25.0000 - 2 / 2: 26.0000 27.0000 - 3 / 3: 28.0000 29.0000 - ---- L:2 T: 2 - 1 / 1: 30.0000 31.0000 - 2 / 2: 32.0000 33.0000 - 3 / 3: 34.0000 35.0000 - ---- L:3 T: 3 - 1 / 1: 36.0000 37.0000 - 2 / 2: 38.0000 39.0000 - 3 / 3: 40.0000 41.0000 - ---- L:4 T: 4 - 1 / 1: 42.0000 43.0000 - 2 / 2: 44.0000 45.0000 - 3 / 3: 46.0000 47.0000 - - -!! Test swapped -file/format=str/var=num,num1/grid=mygrid/type=i1 byteSwapped.dat -list num1 - VARIABLE : num1 - FILENAME : byteSwapped.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 24.0000 25.0000 - 2 / 2: 26.0000 27.0000 - 3 / 3: 28.0000 29.0000 - ---- L:2 T: 2 - 1 / 1: 30.0000 31.0000 - 2 / 2: 32.0000 33.0000 - 3 / 3: 34.0000 35.0000 - ---- L:3 T: 3 - 1 / 1: 36.0000 37.0000 - 2 / 2: 38.0000 39.0000 - 3 / 3: 40.0000 41.0000 - ---- L:4 T: 4 - 1 / 1: 42.0000 43.0000 - 2 / 2: 44.0000 45.0000 - 3 / 3: 46.0000 47.0000 - -file/format=str/var=num,num1/grid=mygrid/type=i2 shortSwapped.dat -list num1 - VARIABLE : num1 - FILENAME : shortSwapped.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 24.0000 25.0000 - 2 / 2: 26.0000 27.0000 - 3 / 3: 28.0000 29.0000 - ---- L:2 T: 2 - 1 / 1: 30.0000 31.0000 - 2 / 2: 32.0000 33.0000 - 3 / 3: 34.0000 35.0000 - ---- L:3 T: 3 - 1 / 1: 36.0000 37.0000 - 2 / 2: 38.0000 39.0000 - 3 / 3: 40.0000 41.0000 - ---- L:4 T: 4 - 1 / 1: 42.0000 43.0000 - 2 / 2: 44.0000 45.0000 - 3 / 3: 46.0000 47.0000 - -file/format=str/var=num,num1/grid=mygrid/type=i4 intSwapped.dat -list num1 - VARIABLE : num1 - FILENAME : intSwapped.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 24.0000 25.0000 - 2 / 2: 26.0000 27.0000 - 3 / 3: 28.0000 29.0000 - ---- L:2 T: 2 - 1 / 1: 30.0000 31.0000 - 2 / 2: 32.0000 33.0000 - 3 / 3: 34.0000 35.0000 - ---- L:3 T: 3 - 1 / 1: 36.0000 37.0000 - 2 / 2: 38.0000 39.0000 - 3 / 3: 40.0000 41.0000 - ---- L:4 T: 4 - 1 / 1: 42.0000 43.0000 - 2 / 2: 44.0000 45.0000 - 3 / 3: 46.0000 47.0000 - -file/format=str/var=num,num1/grid=mygrid/type=r4 floatSwapped.dat -list num1 - VARIABLE : num1 - FILENAME : floatSwapped.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 24.0000 25.0000 - 2 / 2: 26.0000 27.0000 - 3 / 3: 28.0000 29.0000 - ---- L:2 T: 2 - 1 / 1: 30.0000 31.0000 - 2 / 2: 32.0000 33.0000 - 3 / 3: 34.0000 35.0000 - ---- L:3 T: 3 - 1 / 1: 36.0000 37.0000 - 2 / 2: 38.0000 39.0000 - 3 / 3: 40.0000 41.0000 - ---- L:4 T: 4 - 1 / 1: 42.0000 43.0000 - 2 / 2: 44.0000 45.0000 - 3 / 3: 46.0000 47.0000 - -file/format=str/var=num,num1/grid=mygrid/type=r8 doubleSwapped.dat -list num1 - VARIABLE : num1 - FILENAME : doubleSwapped.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 24.0000 25.0000 - 2 / 2: 26.0000 27.0000 - 3 / 3: 28.0000 29.0000 - ---- L:2 T: 2 - 1 / 1: 30.0000 31.0000 - 2 / 2: 32.0000 33.0000 - 3 / 3: 34.0000 35.0000 - ---- L:3 T: 3 - 1 / 1: 36.0000 37.0000 - 2 / 2: 38.0000 39.0000 - 3 / 3: 40.0000 41.0000 - ---- L:4 T: 4 - 1 / 1: 42.0000 43.0000 - 2 / 2: 44.0000 45.0000 - 3 / 3: 46.0000 47.0000 - -! Test skip -!file/format=str/var=num,num1/grid=mygrid/type=r8/skip=4/swap skip.dat -! For double-precision Ferret, /skip=4 stops with error, -! get correct result with /skip=2 (??) -file/format=str/var=num,num1/grid=mygrid/type=r8/skip=2/swap skip.dat -list num1 - VARIABLE : num1 - FILENAME : skip.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 24.0000 25.0000 - 2 / 2: 26.0000 27.0000 - 3 / 3: 28.0000 29.0000 - ---- L:2 T: 2 - 1 / 1: 30.0000 31.0000 - 2 / 2: 32.0000 33.0000 - 3 / 3: 34.0000 35.0000 - ---- L:3 T: 3 - 1 / 1: 36.0000 37.0000 - 2 / 2: 38.0000 39.0000 - 3 / 3: 40.0000 41.0000 - ---- L:4 T: 4 - 1 / 1: 42.0000 43.0000 - 2 / 2: 44.0000 45.0000 - 3 / 3: 46.0000 47.0000 - - -! Try list of types -file/format=str/var=num,num1/grid=mygrid/type=r8,i1/swap twoType.dat -list num - VARIABLE : num - FILENAME : twoType.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 0.0000 1.0000 - 2 / 2: 2.0000 3.0000 - 3 / 3: 4.0000 5.0000 - ---- L:2 T: 2 - 1 / 1: 6.0000 7.0000 - 2 / 2: 8.0000 9.0000 - 3 / 3: 10.0000 11.0000 - ---- L:3 T: 3 - 1 / 1: 12.0000 13.0000 - 2 / 2: 14.0000 15.0000 - 3 / 3: 16.0000 17.0000 - ---- L:4 T: 4 - 1 / 1: 18.0000 19.0000 - 2 / 2: 20.0000 21.0000 - 3 / 3: 22.0000 23.0000 -list num1 - VARIABLE : num1 - FILENAME : twoType.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 24.0000 25.0000 - 2 / 2: 26.0000 27.0000 - 3 / 3: 28.0000 29.0000 - ---- L:2 T: 2 - 1 / 1: 30.0000 31.0000 - 2 / 2: 32.0000 33.0000 - 3 / 3: 34.0000 35.0000 - ---- L:3 T: 3 - 1 / 1: 36.0000 37.0000 - 2 / 2: 38.0000 39.0000 - 3 / 3: 40.0000 41.0000 - ---- L:4 T: 4 - 1 / 1: 42.0000 43.0000 - 2 / 2: 44.0000 45.0000 - 3 / 3: 46.0000 47.0000 - -! Grand finale of xyvzt permutation with r4,i2 types -file/format=str/var=num,num1/grid=mygrid/type=r4,i2/order=xyvzt/swap finale.dat -list num - VARIABLE : num - FILENAME : finale.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 0.0000 1.0000 - 2 / 2: 2.0000 3.0000 - 3 / 3: 4.0000 5.0000 - ---- L:2 T: 2 - 1 / 1: 6.0000 7.0000 - 2 / 2: 8.0000 9.0000 - 3 / 3: 10.0000 11.0000 - ---- L:3 T: 3 - 1 / 1: 12.0000 13.0000 - 2 / 2: 14.0000 15.0000 - 3 / 3: 16.0000 17.0000 - ---- L:4 T: 4 - 1 / 1: 18.0000 19.0000 - 2 / 2: 20.0000 21.0000 - 3 / 3: 22.0000 23.0000 -list num1 - VARIABLE : num1 - FILENAME : finale.dat - SUBSET : 2 by 3 by 4 points (Y-Z-T) - X : 1 - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 0.0000 1.0000 - 2 / 2: 2.0000 3.0000 - 3 / 3: 4.0000 5.0000 - ---- L:2 T: 2 - 1 / 1: 6.0000 7.0000 - 2 / 2: 8.0000 9.0000 - 3 / 3: 10.0000 11.0000 - ---- L:3 T: 3 - 1 / 1: 12.0000 13.0000 - 2 / 2: 14.0000 15.0000 - 3 / 3: 16.0000 17.0000 - ---- L:4 T: 4 - 1 / 1: 18.0000 19.0000 - 2 / 2: 20.0000 21.0000 - 3 / 3: 22.0000 23.0000 - -GO bn_reset bn_define_axes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_define_axes -GO bn_define_axes -! bn_define_axes.jnl -! *sh* 5/99 -! *sh* 12/99 - with streamlined syntax -! *acm* 12/16 - change to a comment only -! 1/2017 *acm* changes in output due to backing off auto-detection of truemonth axes, tkt 2497 - -! exercise the DEFINE AXIS command - - -! ====================== REGULAR ================== -! lo:hi:delta -define axis/x=1:5:1 xax -show axis/x xax - name axis # pts start end - XAX X 5 r 1 5 - Axis span (to cell edges) = 5 - - I X XBOX XBOXLO - 1> 1 1 0.5 - 2> 2 1 1.5 - 3> 3 1 2.5 - 4> 4 1 3.5 - 5> 5 1 4.5 -define axis/x=1:5:1/edges xax -show axis/x xax - name axis # pts start end - XAX X 4 r 1.5 4.5 - Axis span (to cell edges) = 4 - - I X XBOX XBOXLO - 1> 1.5 1 1 - 2> 2.5 1 2 - 3> 3.5 1 3 - 4> 4.5 1 4 - -! lo:hi /NPOINTS>1 -define axis/x=1:5/npoints=5 xax -show axis/x xax - name axis # pts start end - XAX X 5 r 1 5 - Axis span (to cell edges) = 5 - - I X XBOX XBOXLO - 1> 1 1 0.5 - 2> 2 1 1.5 - 3> 3 1 2.5 - 4> 4 1 3.5 - 5> 5 1 4.5 -define axis/x=1:5/npoints=4/edges xax -show axis/x xax - name axis # pts start end - XAX X 4 r 1.5 4.5 - Axis span (to cell edges) = 4 - - I X XBOX XBOXLO - 1> 1.5 1 1 - 2> 2.5 1 2 - 3> 3.5 1 3 - 4> 4.5 1 4 - -! lo:hi /NPOINTS=1 -set mode ignore; define axis/x=1:5/npoints=1 xax; cancel mode ignore -define axis/x=5/npoints=1 xax -show axis/x xax - name axis # pts start end - XAX X 1 r 5 5 - Axis span (to cell edges) = 1 - - I X XBOX XBOXLO - 1> 5 1 4.5 -set mode ignore; define axis/x=5/npoints=1/edges xax; cancel mode ignore -define axis/x=1:5/npoints=1/edges xax -show axis/x xax - name axis # pts start end - XAX X 1 r 3 3 - Axis span (to cell edges) = 4 - - I X XBOX XBOXLO - 1> 3 4 1 - -!======= calendar -! lo:hi:delta -define axis/t=15-jan-1980:25-jan-1980:1/unit=days tax -show axis/t tax - name axis # pts start end - TAX TIME 11 r 15-JAN-1980 00:00 25-JAN-1980 00:00 -T0 = 15-JAN-1901 - Axis span (to cell edges) = 11 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 15-JAN-1980 00:00:00 1 14-JAN-1980 12:00:00 28854 - 2> 16-JAN-1980 00:00:00 1 15-JAN-1980 12:00:00 28855 - 3> 17-JAN-1980 00:00:00 1 16-JAN-1980 12:00:00 28856 - 4> 18-JAN-1980 00:00:00 1 17-JAN-1980 12:00:00 28857 - 5> 19-JAN-1980 00:00:00 1 18-JAN-1980 12:00:00 28858 - 6> 20-JAN-1980 00:00:00 1 19-JAN-1980 12:00:00 28859 - 7> 21-JAN-1980 00:00:00 1 20-JAN-1980 12:00:00 28860 - 8> 22-JAN-1980 00:00:00 1 21-JAN-1980 12:00:00 28861 - 9> 23-JAN-1980 00:00:00 1 22-JAN-1980 12:00:00 28862 - 10> 24-JAN-1980 00:00:00 1 23-JAN-1980 12:00:00 28863 - 11> 25-JAN-1980 00:00:00 1 24-JAN-1980 12:00:00 28864 -define axis/t=15-jan-1980:25-jan-1980:1/unit=days/edges tax -show axis/t tax - name axis # pts start end - TAX TIME 10 r 15-JAN-1980 12:00 24-JAN-1980 12:00 -T0 = 15-JAN-1901 - Axis span (to cell edges) = 10 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 15-JAN-1980 12:00:00 1 15-JAN-1980 00:00:00 28854.5 - 2> 16-JAN-1980 12:00:00 1 16-JAN-1980 00:00:00 28855.5 - 3> 17-JAN-1980 12:00:00 1 17-JAN-1980 00:00:00 28856.5 - 4> 18-JAN-1980 12:00:00 1 18-JAN-1980 00:00:00 28857.5 - 5> 19-JAN-1980 12:00:00 1 19-JAN-1980 00:00:00 28858.5 - 6> 20-JAN-1980 12:00:00 1 20-JAN-1980 00:00:00 28859.5 - 7> 21-JAN-1980 12:00:00 1 21-JAN-1980 00:00:00 28860.5 - 8> 22-JAN-1980 12:00:00 1 22-JAN-1980 00:00:00 28861.5 - 9> 23-JAN-1980 12:00:00 1 23-JAN-1980 00:00:00 28862.5 - 10> 24-JAN-1980 12:00:00 1 24-JAN-1980 00:00:00 28863.5 - -! lo:hi /NPOINTS>1 -define axis/t=15-jan-1980:25-jan-1980/npoints=11/unit=days tax -show axis/t tax - name axis # pts start end - TAX TIME 11 r 15-JAN-1980 00:00 25-JAN-1980 00:00 -T0 = 15-JAN-1901 - Axis span (to cell edges) = 11 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 15-JAN-1980 00:00:00 1 14-JAN-1980 12:00:00 28854 - 2> 16-JAN-1980 00:00:00 1 15-JAN-1980 12:00:00 28855 - 3> 17-JAN-1980 00:00:00 1 16-JAN-1980 12:00:00 28856 - 4> 18-JAN-1980 00:00:00 1 17-JAN-1980 12:00:00 28857 - 5> 19-JAN-1980 00:00:00 1 18-JAN-1980 12:00:00 28858 - 6> 20-JAN-1980 00:00:00 1 19-JAN-1980 12:00:00 28859 - 7> 21-JAN-1980 00:00:00 1 20-JAN-1980 12:00:00 28860 - 8> 22-JAN-1980 00:00:00 1 21-JAN-1980 12:00:00 28861 - 9> 23-JAN-1980 00:00:00 1 22-JAN-1980 12:00:00 28862 - 10> 24-JAN-1980 00:00:00 1 23-JAN-1980 12:00:00 28863 - 11> 25-JAN-1980 00:00:00 1 24-JAN-1980 12:00:00 28864 -define axis/t=15-jan-1980:25-jan-1980/npoints=10/unit=days/edges tax -show axis/t tax - name axis # pts start end - TAX TIME 10 r 15-JAN-1980 12:00 24-JAN-1980 12:00 -T0 = 15-JAN-1901 - Axis span (to cell edges) = 10 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 15-JAN-1980 12:00:00 1 15-JAN-1980 00:00:00 28854.5 - 2> 16-JAN-1980 12:00:00 1 16-JAN-1980 00:00:00 28855.5 - 3> 17-JAN-1980 12:00:00 1 17-JAN-1980 00:00:00 28856.5 - 4> 18-JAN-1980 12:00:00 1 18-JAN-1980 00:00:00 28857.5 - 5> 19-JAN-1980 12:00:00 1 19-JAN-1980 00:00:00 28858.5 - 6> 20-JAN-1980 12:00:00 1 20-JAN-1980 00:00:00 28859.5 - 7> 21-JAN-1980 12:00:00 1 21-JAN-1980 00:00:00 28860.5 - 8> 22-JAN-1980 12:00:00 1 22-JAN-1980 00:00:00 28861.5 - 9> 23-JAN-1980 12:00:00 1 23-JAN-1980 00:00:00 28862.5 - 10> 24-JAN-1980 12:00:00 1 24-JAN-1980 00:00:00 28863.5 - - -! lo:hi /NPOINTS=1 -set mode ignore; define axis/t=15-jan-1980:25-jan-1980/npoints=1/unit=days tax; cancel mode ignore -define axis/t=15-jan-1980/npoints=1/unit=days tax -show axis/t tax - name axis # pts start end - TAX TIME 1 r 15-JAN-1980 00:00 15-JAN-1980 00:00 -T0 = 15-JAN-1901 - Axis span (to cell edges) = 1 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 15-JAN-1980 00:00:00 1 14-JAN-1980 12:00:00 28854 -set mode ignore; define axis/t=15-jan-1980/npoints=1/unit=days/edges tax; cancel mode ignore -define axis/t=15-jan-1980:25-jan-1980/npoints=1/unit=days/edges tax -show axis/t tax - name axis # pts start end - TAX TIME 1 r 20-JAN-1980 00:00 20-JAN-1980 00:00 -T0 = 15-JAN-1901 - Axis span (to cell edges) = 10 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 20-JAN-1980 00:00:00 10 15-JAN-1980 00:00:00 28859 - -! =============== IRREGULAR =================== -define axis/x/from_data/name=xax {1,2,5} -show axis/x xax - name axis # pts start end - XAX X 3 i 1 5 - Axis span (to cell edges) = 6 - - I X XBOX XBOXLO - 1> 1 1 0.5 - 2> 2 2 1.5 - 3> 5 3 3.5 -define axis/x/from_data/name=xax/edges {1,2,5} -show axis/x xax - name axis # pts start end - XAX X 2 i 1.5 3.5 - Axis span (to cell edges) = 4 - - I X XBOX XBOXLO - 1> 1.5 1 1 - 2> 3.5 3 2 - -!======= calendar -define axis/t/from_data/name=tax/unit=days/t0=1-jan-1990 {1,2,5} -show axis/t tax - name axis # pts start end - TAX TIME 3 i 02-JAN-1990 00:00 06-JAN-1990 00:00 -T0 = 1-JAN-1990 - Axis span (to cell edges) = 6 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 02-JAN-1990 00:00:00 1 01-JAN-1990 12:00:00 1 - 2> 03-JAN-1990 00:00:00 2 02-JAN-1990 12:00:00 2 - 3> 06-JAN-1990 00:00:00 3 04-JAN-1990 12:00:00 5 -define axis/t/from_data/name=tax/unit=days/t0=1-jan-1990/edges {1,2,5} -show axis/t tax - name axis # pts start end - TAX TIME 2 i 02-JAN-1990 12:00 04-JAN-1990 12:00 -T0 = 1-JAN-1990 - Axis span (to cell edges) = 4 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 02-JAN-1990 12:00:00 1 02-JAN-1990 00:00:00 1.5 - 2> 04-JAN-1990 12:00:00 3 03-JAN-1990 00:00:00 3.5 - -! real monthly calendar -! (Note: when running pre-true-month Ferret versions, the timestep output from -! show axis/l below was eliminated by the "clean_draconian" script) -! 1/17/2017 changes due to backing off auto-detection of truemonth axes, tkt 2497 - -let month = MOD(l-1,12)+1 -let add_year = INT((l-1)/12) -let tstep = DAYS1900(1980+add_year,month,1) -define axis/from_data/T/units=days/name=tax/t0=1-jan-1900/edges tstep[l=1:`20*12+1`] - !-> define axis/from_data/T/units=days/name=tax/t0=1-jan-1900/edges tstep[l=1:241] -show axis/l=1:20 tax - name axis # pts start end - TAX TIME 240 i 16-JAN-1980 12:00 16-DEC-1999 12:00 -T0 = 1-JAN-1900 - Axis span (to cell edges) = 7305 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 16-JAN-1980 12:00:00 31 01-JAN-1980 00:00:00 29234.5 - 2> 15-FEB-1980 12:00:00 29 01-FEB-1980 00:00:00 29264.5 - 3> 16-MAR-1980 12:00:00 31 01-MAR-1980 00:00:00 29294.5 - 4> 16-APR-1980 00:00:00 30 01-APR-1980 00:00:00 29325 - 5> 16-MAY-1980 12:00:00 31 01-MAY-1980 00:00:00 29355.5 - 6> 16-JUN-1980 00:00:00 30 01-JUN-1980 00:00:00 29386 - 7> 16-JUL-1980 12:00:00 31 01-JUL-1980 00:00:00 29416.5 - 8> 16-AUG-1980 12:00:00 31 01-AUG-1980 00:00:00 29447.5 - 9> 16-SEP-1980 00:00:00 30 01-SEP-1980 00:00:00 29478 - 10> 16-OCT-1980 12:00:00 31 01-OCT-1980 00:00:00 29508.5 - 11> 16-NOV-1980 00:00:00 30 01-NOV-1980 00:00:00 29539 - 12> 16-DEC-1980 12:00:00 31 01-DEC-1980 00:00:00 29569.5 - 13> 16-JAN-1981 12:00:00 31 01-JAN-1981 00:00:00 29600.5 - 14> 15-FEB-1981 00:00:00 28 01-FEB-1981 00:00:00 29630 - 15> 16-MAR-1981 12:00:00 31 01-MAR-1981 00:00:00 29659.5 - 16> 16-APR-1981 00:00:00 30 01-APR-1981 00:00:00 29690 - 17> 16-MAY-1981 12:00:00 31 01-MAY-1981 00:00:00 29720.5 - 18> 16-JUN-1981 00:00:00 30 01-JUN-1981 00:00:00 29751 - 19> 16-JUL-1981 12:00:00 31 01-JUL-1981 00:00:00 29781.5 - 20> 16-AUG-1981 12:00:00 31 01-AUG-1981 00:00:00 29812.5 -show axis/l=1:240:12 tax - name axis # pts start end - TAX TIME 240 i 16-JAN-1980 12:00 16-DEC-1999 12:00 -T0 = 1-JAN-1900 - Axis span (to cell edges) = 7305 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 16-JAN-1980 12:00:00 31 01-JAN-1980 00:00:00 29234.5 - 13> 16-JAN-1981 12:00:00 31 01-JAN-1981 00:00:00 29600.5 - 25> 16-JAN-1982 12:00:00 31 01-JAN-1982 00:00:00 29965.5 - 37> 16-JAN-1983 12:00:00 31 01-JAN-1983 00:00:00 30330.5 - 49> 16-JAN-1984 12:00:00 31 01-JAN-1984 00:00:00 30695.5 - 61> 16-JAN-1985 12:00:00 31 01-JAN-1985 00:00:00 31061.5 - 73> 16-JAN-1986 12:00:00 31 01-JAN-1986 00:00:00 31426.5 - 85> 16-JAN-1987 12:00:00 31 01-JAN-1987 00:00:00 31791.5 - 97> 16-JAN-1988 12:00:00 31 01-JAN-1988 00:00:00 32156.5 - 109> 16-JAN-1989 12:00:00 31 01-JAN-1989 00:00:00 32522.5 - 121> 16-JAN-1990 12:00:00 31 01-JAN-1990 00:00:00 32887.5 - 133> 16-JAN-1991 12:00:00 31 01-JAN-1991 00:00:00 33252.5 - 145> 16-JAN-1992 12:00:00 31 01-JAN-1992 00:00:00 33617.5 - 157> 16-JAN-1993 12:00:00 31 01-JAN-1993 00:00:00 33983.5 - 169> 16-JAN-1994 12:00:00 31 01-JAN-1994 00:00:00 34348.5 - 181> 16-JAN-1995 12:00:00 31 01-JAN-1995 00:00:00 34713.5 - 193> 16-JAN-1996 12:00:00 31 01-JAN-1996 00:00:00 35078.5 - 205> 16-JAN-1997 12:00:00 31 01-JAN-1997 00:00:00 35444.5 - 217> 16-JAN-1998 12:00:00 31 01-JAN-1998 00:00:00 35809.5 - 229> 16-JAN-1999 12:00:00 31 01-JAN-1999 00:00:00 36174.5 - -! modulo axis for arbitrary time interval -define axis/t=1-jan-0001:1-jan-0002:1/unit=days/t0=1-jan-0000 tencoding -let tstep = t[gt=tencoding] -let start_date = tstep[t=15-mar-0001] -let end_date = tstep[t=27-may-0001] -define axis/from_data/T/units=days/name=tax/t0=1-jan-0000/edges/modulo {`start_date,p=7`,`end_date,p=7`,`start_date+365.2425,p=7`} - !-> define axis/from_data/T/units=days/name=tax/t0=1-jan-0000/edges/modulo {439,512,804.2425} -show axis/l=1:6 tax - name axis # pts start end - TAX TIME 2mi 20-APR 12:00 20-OCT 02:54 -T0 = 1-JAN-0000 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 20-APR 12:00:00 73 15-MAR 00:00:00 475.5 - 2> 20-OCT 02:54:35 292.2425 27-MAY 00:00:00 658.1212 - 3> 20-APR 17:49:12 73 15-MAR 05:49:12 840.7425 - 4> 20-OCT 08:43:47 292.2425 27-MAY 05:49:12 1023.364 - 5> 20-APR-0003 23:38:23 73 15-MAR-0003 11:38:23 1205.985 - 6> 20-OCT-0003 14:32:59 292.2425 27-MAY-0003 11:38:23 1388.606 -show axis/l=1:6000:1200 tax - name axis # pts start end - TAX TIME 2mi 20-APR 12:00 20-OCT 02:54 -T0 = 1-JAN-0000 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 20-APR 12:00:00 73 15-MAR 00:00:00 475.5 - 1201> 20-APR-0601 23:59:59 73 15-MAR-0601 11:59:59 219621 - 2401> 20-APR-1201 11:59:59 73 14-MAR-1201 23:59:59 438766.5 - 3601> 20-APR-1801 23:59:59 73 15-MAR-1801 11:59:59 657912 - 4801> 20-APR-2401 11:59:59 73 14-MAR-2401 23:59:59 877057.5 - -! ================ REPEATED VALUES ==================== -! points -define axis/from/x/name=xax {5,6,6,7} -show axis/x xax - name axis # pts start end - XAX X 4 i 5 7 - Axis span (to cell edges) = 2.999999 - - I X XBOX XBOXLO - 1> 5 1 4.5 - 2> 6 0.500001 5.5 - 3> 6.000002 0.5 6.000001 - 4> 7 0.999998 6.500001 -define axis/from/x/name=xax {5,6,6,6,7} -show axis/x xax - name axis # pts start end - XAX X 5 i 5 7 - Axis span (to cell edges) = 2.999998 - - I X XBOX XBOXLO - 1> 5 1 4.5 - 2> 6 0.500001 5.5 - 3> 6.000002 0.000002 6.000001 - 4> 6.000004 0.499999 6.000003 - 5> 7 0.999996 6.500002 -define axis/from/x/name=xax {5,6,6,6} -show axis/x xax - name axis # pts start end - XAX X 4 i 5 6 - Axis span (to cell edges) = 1.500003 - - I X XBOX XBOXLO - 1> 5 1 4.5 - 2> 6 0.5000005 5.5 - 3> 6.000001 0.000001 6.0000005 - 4> 6.000002 0.000001 6.0000015 -define axis/from/x/name=xax {6,6,7} -show axis/x xax - name axis # pts start end - XAX X 3 i 6 7 - Axis span (to cell edges) = 1.5 - - I X XBOX XBOXLO - 1> 6 0.000001 5.9999995 - 2> 6.000001 0.5 6.0000005 - 3> 7 0.999999 6.5000005 -! edges -define axis/from/x/name=xax/edges {5,6,6,7} -show axis/x xax - name axis # pts start end - XAX X 3 i 5.5 6.5 - Axis span (to cell edges) = 2 - - I X XBOX XBOXLO - 1> 5.5 1 5 - 2> 6.000001 0.000002 6 - 3> 6.500001 0.999998 6.000002 -define axis/from/x/name=xax/edges {5,6,6,6,7} -show axis/x xax - name axis # pts start end - XAX X 4 i 5.5 6.5 - Axis span (to cell edges) = 2 - - I X XBOX XBOXLO - 1> 5.5 1 5 - 2> 6.000001 0.000002 6 - 3> 6.000003 0.000002 6.000002 - 4> 6.500002 0.999996 6.000004 -define axis/from/x/name=xax/edges {5,6,6} -show axis/x xax - name axis # pts start end - XAX X 2 i 5.5 6 - Axis span (to cell edges) = 1.000001 - - I X XBOX XBOXLO - 1> 5.5 1 5 - 2> 6.0000005 0.000001 6 -define axis/from/x/name=xax/edges {6,6,7} -show axis/x xax - name axis # pts start end - XAX X 2 i 6 6.5 - Axis span (to cell edges) = 1 - - I X XBOX XBOXLO - 1> 6.0000005 0.000001 6 - 2> 6.5000005 0.999999 6.000001 - -! unresolvable repeated points -set mode ignore -define axis/from/x/name=xax {6,6} -define axis/from/x/name=xax/edges {6,6} -define axis/from/x/name=xax/edges {6,6,6} -define axis/from/x/name=xax {6,6,6.000001,7} -define axis/from/x/name=xax/edges {6,6,6.000001,7} - -! ================= STREAMLINED SYNTAX ================ -! name=expression syntax -define axis/x XAX2 = {1,2,5} -show axis/x xax2 - name axis # pts start end - XAX2 X 3 i 1 5 - Axis span (to cell edges) = 6 - - I X XBOX XBOXLO - 1> 1 1 0.5 - 2> 2 2 1.5 - 3> 5 3 3.5 -define axis/unit=days/t0=1-jan-1990 TAX2 = {1,2,5} ! inferred /T -show axis/t tax2 - name axis # pts start end - TAX2 TIME 3 i 02-JAN-1990 00:00 06-JAN-1990 00:00 -T0 = 1-JAN-1990 - Axis span (to cell edges) = 6 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 02-JAN-1990 00:00:00 1 01-JAN-1990 12:00:00 1 - 2> 03-JAN-1990 00:00:00 2 02-JAN-1990 12:00:00 2 - 3> 06-JAN-1990 00:00:00 3 04-JAN-1990 12:00:00 5 -define axis/depth ZAX2 = {1,2,5} ! inferred /Z -show axis/z zax2 - name axis # pts start end - ZAX2 Z 3 i- 1 5 - Axis span (to cell edges) = 6 - - K Z ZBOX ZBOXLO - 1> 1 1 0.5 - 2> 2 2 1.5 - 3> 5 3 3.5 - -! units inferred from formatting -define axis/X=130e:180:5 xax2 -show axis xax2 - name axis # pts start end - XAX2 LONGITUDE 11mr 130E 180E - Axis span (to cell edges) = 55 (modulo length = 360) -define axis/Y=0:80n:5 yax2 -show axis yax2 - name axis # pts start end - YAX2 LATITUDE 17 r 0 80N - Axis span (to cell edges) = 85 -define axis/X=130e:80w:5/units=blahs xax2 -show axis xax2 - name axis # pts start end - XAX2 X (BLAHS) 31 r 130 280 - Axis span (to cell edges) = 155 - -! cleanup -set mode/last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -! GO bn_external_functions ! move to tests of shared-obj efs. - -GO bn_reset bn_pattern -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_pattern -GO bn_pattern -! pattern_bench.jnl -! Quick demo of Ferret pattern feature *jd* 12.18.98 - - -set view full - -use coads_climatology -set reg/l=3/y=50s:60n/x=100e:60w -set mode cal months - -! Patterns not available in PyFerret -! IF ($program_name"1|PyFerret>1|Ferret>0") THEN EXIT/SCRIPT -set mode ignore - - -! The /pattern qualifier sets patterns to be used, like /palette sets colors. -! Files in $FER_PALETTE with extension .pat are read in to set patterns. -! Use "Fpattern '*'" to find available pattern files. - -! Note that colors are set in the usual way... - -set win 1 - -set mode meta pattern_plot1.plt -shade/pal=black/lev=(10,30,5,-3)/line/key/pattern=4patterns/nolabel sst - -go land thick - -! Colors and patterns can be overlaid; patterns are transparent - -set win 2 - -set data coads_climatology -set data clim_airt_lev.cdf -set reg/l=1:3/y=50s:60n/x=100e:60w -set mode cal months - -set mode meta pattern_plot2.plt -fill/lev=(0,33,3)/nolabel sst[l=@ave,d=1] - -fill/lev=(25,27,1)/over/nolab/pal=black/pat=angled_grid/nolabel airt[l=@ave] -label/user,200,-30,-1,0,.15,@trAIRT gt 25 and lt 27 deg. C - -go land thick - -!can data/all -can win 2 -set win 1 -can mode meta -set mode/last ignore -set mode cal minutes - - -GO bn_reset bn_polygon -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_polygon -GO bn_polygon -! Demo of new POLYGON command -! *jd * 3.99 - -let xsqr = YSEQUENCE({0,.1,.1,0}) -let ysqr = YSEQUENCE({0,0,.1,.1}) - -let ypts = x/10 -let xpts = cos(x/10) - -set win/asp=.4 - -set mode meta polygon_plot.plt -polygon/trans/i=1:100/nolable xpts+xsqr, ypts+ysqr, x*x/10 - -! KMS - changed for PyFerret - patterns not supported, so try translucent -! polygon/trans/line=6/fill/over/lev/i=1:100/pattern=ball_bearings/nolabel xpts+xsqr, ypts+ysqr+.5, x*x/10 -polygon/trans/line=6/fill/over/lev/i=1:100/opac=25/nolabel xpts+xsqr, ypts+ysqr+.5, x*x/10 - -polygon/trans/line=4/over/i=1:100/nolabel xpts+xsqr-.25, ypts+ysqr, x*x/10 - -can mode meta - -GO bn_reset bn500_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn500_bug_fixes -GO bn500_bug_fixes -! bn500_bug_fixes.jnl -! test various fixes that went into version 5.00 -! 5/99 *kob* - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_RESHAPE_ctx.jnl -! err491_RESHAPE_ctx - -! modified 3/2000 to reflect new significance of context limits -! on arg 2 - -! 3/99 *sh* (bug reported by Jennifer Adams) -! Ferret fails to recognize that source and dest T axes are different -! so it erroneously passes T context to src argument - -! fixed 3/99 with change to GCF_IMPOSE_ARG_LIM_DFLT -! (and consequent bug fixes to PARSE_NAM_DSET_GRD and GRID_FROM_NAME) - -! source data in X,TCAL -define axis/x=1:5:1 x5 -define axis/y=1:1:1 y1 -define axis/t=15-jan-1951:15-dec-1952/npoints=24 tcal -define grid/x=x5/y=y1/t=tcal gsrc -LET src = x[g=gsrc] + t[g=gsrc] - -list src - VARIABLE : X[G=GSRC] + T[G=GSRC] - SUBSET : 5 by 24 points (X-TIME) - 1 2 3 4 5 - 1 2 3 4 5 - 15-JAN-1951 / 1: 438289. 438290. 438291. 438292. 438293. - 14-FEB-1951 / 2: 439019. 439020. 439021. 439022. 439023. - 16-MAR-1951 / 3: 439750. 439751. 439752. 439753. 439754. - 16-APR-1951 / 4: 440480. 440481. 440482. 440483. 440484. - 16-MAY-1951 / 5: 441211. 441212. 441213. 441214. 441215. - 16-JUN-1951 / 6: 441941. 441942. 441943. 441944. 441945. - 16-JUL-1951 / 7: 442672. 442673. 442674. 442675. 442676. - 16-AUG-1951 / 8: 443402. 443403. 443404. 443405. 443406. - 15-SEP-1951 / 9: 444132. 444133. 444134. 444135. 444136. - 15-OCT-1951 / 10: 444863. 444864. 444865. 444866. 444867. - 15-NOV-1951 / 11: 445593. 445594. 445595. 445596. 445597. - 15-DEC-1951 / 12: 446324. 446325. 446326. 446327. 446328. - 15-JAN-1952 / 13: 447054. 447055. 447056. 447057. 447058. - 14-FEB-1952 / 14: 447785. 447786. 447787. 447788. 447789. - 16-MAR-1952 / 15: 448515. 448516. 448517. 448518. 448519. - 15-APR-1952 / 16: 449246. 449247. 449248. 449249. 449250. - 15-MAY-1952 / 17: 449976. 449977. 449978. 449979. 449980. - 15-JUN-1952 / 18: 450706. 450707. 450708. 450709. 450710. - 15-JUL-1952 / 19: 451437. 451438. 451439. 451440. 451441. - 15-AUG-1952 / 20: 452167. 452168. 452169. 452170. 452171. - 14-SEP-1952 / 21: 452898. 452899. 452900. 452901. 452902. - 15-OCT-1952 / 22: 453628. 453629. 453630. 453631. 453632. - 14-NOV-1952 / 23: 454359. 454360. 454361. 454362. 454363. - 15-DEC-1952 / 24: 455089. 455090. 455091. 455092. 455093. - -! reshaping grid - TCAL ==> 12 month by years -def axis/t=1951:1952:1 tyear -def axis/z=1:12:1 zmonth -!let out_grid = x[g=gsrc,i=1] + y[g=gsrc,j=1] + z[gz=zmonth,k=1] + t[gt=tyear,l=1] ! pre 3/00 -let out_grid = x[g=gsrc] + y[g=gsrc] + z[gz=zmonth] + t[gt=tyear] - -! reshape the source data -- OK -let out = reshape(src,out_grid) -list out - VARIABLE : RESHAPE(SRC,OUT_GRID) - SUBSET : 5 by 12 by 2 points (X-Z-T) - Y : 0.5 to 1.5 - 1 2 3 4 5 - 1 2 3 4 5 - ---- L:1 T: 1951 - 1 / 1: 438289. 438290. 438291. 438292. 438293. - 2 / 2: 439019. 439020. 439021. 439022. 439023. - 3 / 3: 439750. 439751. 439752. 439753. 439754. - 4 / 4: 440480. 440481. 440482. 440483. 440484. - 5 / 5: 441211. 441212. 441213. 441214. 441215. - 6 / 6: 441941. 441942. 441943. 441944. 441945. - 7 / 7: 442672. 442673. 442674. 442675. 442676. - 8 / 8: 443402. 443403. 443404. 443405. 443406. - 9 / 9: 444132. 444133. 444134. 444135. 444136. - 10 / 10: 444863. 444864. 444865. 444866. 444867. - 11 / 11: 445593. 445594. 445595. 445596. 445597. - 12 / 12: 446324. 446325. 446326. 446327. 446328. - ---- L:2 T: 1952 - 1 / 1: 447054. 447055. 447056. 447057. 447058. - 2 / 2: 447785. 447786. 447787. 447788. 447789. - 3 / 3: 448515. 448516. 448517. 448518. 448519. - 4 / 4: 449246. 449247. 449248. 449249. 449250. - 5 / 5: 449976. 449977. 449978. 449979. 449980. - 6 / 6: 450706. 450707. 450708. 450709. 450710. - 7 / 7: 451437. 451438. 451439. 451440. 451441. - 8 / 8: 452167. 452168. 452169. 452170. 452171. - 9 / 9: 452898. 452899. 452900. 452901. 452902. - 10 / 10: 453628. 453629. 453630. 453631. 453632. - 11 / 11: 454359. 454360. 454361. 454362. 454363. - 12 / 12: 455089. 455090. 455091. 455092. 455093. - -! NOW THE ERROR: L LIMITS PASSED INCORRECTLY(ERRONEOUSLY) TO SRC -list/l=1 out - VARIABLE : RESHAPE(SRC,OUT_GRID) - SUBSET : 5 by 12 points (X-Z) - Y : 0.5 to 1.5 - T : 1951 - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 438289. 438290. 438291. 438292. 438293. - 2 / 2: 439019. 439020. 439021. 439022. 439023. - 3 / 3: 439750. 439751. 439752. 439753. 439754. - 4 / 4: 440480. 440481. 440482. 440483. 440484. - 5 / 5: 441211. 441212. 441213. 441214. 441215. - 6 / 6: 441941. 441942. 441943. 441944. 441945. - 7 / 7: 442672. 442673. 442674. 442675. 442676. - 8 / 8: 443402. 443403. 443404. 443405. 443406. - 9 / 9: 444132. 444133. 444134. 444135. 444136. - 10 / 10: 444863. 444864. 444865. 444866. 444867. - 11 / 11: 445593. 445594. 445595. 445596. 445597. - 12 / 12: 446324. 446325. 446326. 446327. 446328. - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_delete_child_var.jnl -! err491_delete_child_var.jnl -! *sh* 4/99 - -! when a grid-changing variable definition was redefined (replaced) -! Its child variables were not removed, leading to wrong results - -! fixed with mod to XEQ_DEFINE - -! why does ypolymark depend on xpolyshape ?? -let xpolyshape = X[X=1:3:1] -let ypolyshape = X[X=10:30:10] - -! THE ACT OF DEFINING XPOLYMARK CHANGES THE OUTCOME ... -LET xpolymark = XSEQUENCE(xpolyshape) * 1 -LET ypolymark = XSEQUENCE(ypolyshape) * 1 - -list ypolymark ! correct values: 1,2,3 - VARIABLE : XSEQUENCE(YPOLYSHAPE) * 1 - SUBSET : 3 points (X) - 1 / 1: 10.0000 - 2 / 2: 20.0000 - 3 / 3: 30.0000 - -! THE ACT OF DEFINING XPOLYMARK CHANGES THE OUTCOME ... -LET xpolymark = XSEQUENCE(xpolyshape) * 1 -LET ypolymark = XSEQUENCE(ypolyshape) * 1 - -list ypolymark ! incorrect values: 10, 20, 30 - VARIABLE : XSEQUENCE(YPOLYSHAPE) * 1 - SUBSET : 3 points (X) - 1 / 1: 10.0000 - 2 / 2: 20.0000 - 3 / 3: 30.0000 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_dp_time_write.jnl -! err491_dp_time_write.jnl -! *sh* 10/98 - - -! when appending ("synchronizing") a new output time to an existing -! netCDF file, Ferret fails to do a valid double precision comparison - - -define axis/t="18-jul-1997:14:09":"20-jul-1997:00:09":5/units=min t5 -LET my_var = t[gt=t5] - -save/clobber/file=out.cdf my_var[l=1] -sp echo "err491_dp_time_write.jnl --- 1 original file" >> all_ncdump.out -sp ncdump out.cdf >> all_ncdump.out - -save/append/file=out.cdf my_var[l=2] -sp echo "err491_dp_time_write.jnl --- 2 after append" >> all_ncdump.out -sp ncdump out.cdf >> all_ncdump.out - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_gmax.jnl -! err491_gmax.jnl -! 9 Dec. 1998 *sh* - -! .. crash when attempting a time regridding with g=@MAX - -let ts = RANDU(T[T=1-jan-1990:15-jan-1990:1]) -plot ts -define axis/t="1-jan-1990:12:00":"15-jan-1990:12:00":24/unit=hours t24 -plot/over ts[gt=t24@ave] - -! crash when attempting an @MAX regridding -load ts[gt=t24@max] - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_grid_from_name.jnl -! err491_grid_from_name.jnl -! *sh* 3/99 - -! implicit grid, such as "Z[gz=zax]", are allowed in places they shouldn't be - -! fixed with change to GRID_FROM_NAME (and PARSE_NAM_DSET_GRD) - -set mode ignore -define axis/z=1:10:1 z10 -set grid z[gz=z10] -show grid - Default grid for DEFINE VARIABLE is (G012) - Last successful data access was on grid (G012) - GRID (G012) - name axis # pts start end subset - normal X - normal Y - Z10 Z 10 r 1 10 full - normal T -can mode ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_let_d.jnl -! err491_let_d.jnl -! *sh* 10/98 - -! using /d in the definition of a data-set independent variable causes a crash - -let/d a = x+y -stat/i=1:3/j=1:3 a - - X+Y - X: 0.5 to 3.5 - Y: 0.5 to 3.5 - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 9 (3*3*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 2 - Maximum value: 6 - Mean value: 4 (unweighted average) - Standard deviation: 1.2247 - -! 3/01 *kob* uncomment the below - seems to run on all systems -! GO err491_long_gif_name.jnl ! moved to bn_gif.jnl - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_sh_var_templates.jnl -! SHOW VARIABLE templates are not robust - -let mld5dec = 1 - -sho var m*dec ! no response ?? -sho var ml*dec ! no response ?? -sho var mld*dec ! works - MLD5DEC = 1 - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_single_char_replace.jnl -! err491_single_char_replace.jnl - -! 4/99 *sh* - -! erroneous error trap for single character symbol replacement -! **ERROR: command syntax: empty argument replacement string: ($undefined|"h") -SAY ($undefined|"h") - !-> MESSAGE/CONTINUE h -h - -! but OK in this case -SAY ($undefined|"hh") - !-> MESSAGE/CONTINUE hh -hh - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_spawn_quotes.jnl -! err491_spawn_quotes.jnl - -! fixed in xeq_spawn 1/99 *sh* - -! this should be a valid command -SPAWN "date" -Tue Aug 20 12:14:37 PDT 2019 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_time_regridding.jnl -! err491_time_regridding.jnl -! from Jon 10/16/98 - -! this core dumps ... it is unable to reconcile the -! l=13:48 in the current region with the t=15-jan-1995:15-jan-1998 -! (which corresponds to L=1:37) in the definition of "bad" - -!set mode diag -set wind/siz=.3 - -set data TAO_SST_clim.cdf - -define axis/t=15-jan-1995:15-dec-1999:1/unit=mon my_t_axis - -let good = sst_clim[gt=my_t_axis] -let bad = sst_clim[gt=my_t_axis,t=15-jan-1995:15-jan-1998] - -set region/x=125w/y=0n/l=13:48 - -plot good[x=@sbx:3] -plot/over good[y=@sbx:3] -plot/over good[z=@sbx:3] -plot/over good[t=@sbx:3] - - -cancel memory/all -plot/over bad[x=@sbx:3] -plot/over bad[y=@sbx:3] -plot/over bad[z=@sbx:3] -plot/over bad[t=@sbx:3] - -! 3/01 *kob* uncomment the below - seems to run on all systems -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err491_unknown_function.jnl -! err491_unknown_function -! 3/99 *sh* - -! when unknown function occurs in the 2nd (or higher) expression in a line -! a crash occurs - -! crash occurs processing error message in subroutine RPN. -! Cause is incorrect string limits passed from INIT_UVAR_SUB. - -set mode ignore -stat i, noname(i) -can mode ignore - -! *kob* added 6/11/1999 -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err500_IF_THEN_ELSE_quote.jnl -! err500_IF_THEN_ELSE_quote.jnl - -! 6/9/99 - final quotation mark is lost by parser resulting in error. - -! solved 6/11/99 in xeq_if.F - - -IF 1 THEN SAY "I is too big" ENDIF -I is too big - -! ******** V510 Additions below *********** - -GO bn_reset bn_sample -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_sample -GO bn_sample ! internal (optimized) SAMPLE* functions -! bn_sample.jnl -! 10/99 *sh* -! V550 *sh* 11/02 - documentation change only, reflecting subspan modulo - -! test the internally optimized version of the SAMPLE* commands - -! basic file variable access -use coads_climatology -let/quiet a = sst -list sst[I=30:50:10,l=1,y=-2:2] ! reference listing - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - regrid: 20 deg on X - FILENAME : coads_climatology.cdf - SUBSET : 3 by 2 points (LONGITUDE-LATITUDE) - TIME : 16-JAN 06:00 - 79E 99E 119E - 1 2 3 - 1N / 46: 28.2222 28.1992 28.4514 - 1S / 45: 28.1514 28.5607 28.8326 -list SAMPLEI(sst[l=1,y=0],{30,40,50}) - VARIABLE : SAMPLEI(SST[L=1,Y=0],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 1 / 1: 28.1514 - 2 / 2: 28.5607 - 3 / 3: 28.8326 -list SAMPLEI(sst[l=1,y=-2:2],{30,40,50}) - VARIABLE : SAMPLEI(SST[L=1,Y=-2:2],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 2 points (X-LATITUDE) - TIME : 16-JAN 06:00 - 1 2 3 - 1 2 3 - 1N / 46: 28.2222 28.1992 28.4514 - 1S / 45: 28.1514 28.5607 28.8326 -list SAMPLEI(sst[l=1:3,y=-2:2],{30,40,50}) - VARIABLE : SAMPLEI(SST[L=1:3,Y=-2:2],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 2 by 3 points (X-LATITUDE-TIME) - 1 2 3 - 1 2 3 - ---- L:1 T: 16-JAN 06:00 - 1N / 46: 28.2222 28.1992 28.4514 - 1S / 45: 28.1514 28.5607 28.8326 - ---- L:2 T: 15-FEB 16:29 - 1N / 46: 28.5769 28.5925 28.1495 - 1S / 45: 28.3343 28.7146 28.4674 - ---- L:3 T: 17-MAR 02:58 - 1N / 46: 29.1373 28.9243 28.3264 - 1S / 45: 28.8965 28.8240 28.5357 -SHOW MEM/FREE - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 0.31 Kb - Current cache: 0.5 Kb - Total table slots: 500 - Free table slots: 487 - Un-cached variables: 0 - -! these should break sampling up into separate reads -cancel memory/all -set mode diagnostic -list/i=2 SAMPLEI(sst[l=1,y=-2:2],{30,40,50}) ! only I=2 from result - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V02 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C09,V02 C: 10 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 2 2 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V02 C: 7 dset: 1 I: 2 2 J: -999 -999 K: -999 -999 L: -999 -999 - const_v {30,...} M:181 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 3 dset: 1 - eval (C09,V02 C: 11 dset: 1 I: 30 30 J: -999 -999 K: -999 -999 L: -999 -999 - reading SST M:154 dset: 1 I: 30 30 J: 45 46 K: -999 -999 L: 1 1 - eval (C09,V02 C: 11 dset: 1 I: 40 40 J: 45 46 K: -999 -999 L: 1 1 - reading SST M:151 dset: 1 I: 40 40 J: 45 46 K: -999 -999 L: 1 1 - eval (C09,V02 C: 11 dset: 1 I: 50 50 J: 45 46 K: -999 -999 L: 1 1 - reading SST M:142 dset: 1 I: 50 50 J: 45 46 K: -999 -999 L: 1 1 - -DELETE SST M:173 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: 3 3 M: -999 -999 N: -999 -999 - -DELETE SST M:174 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:152 dset: 1 I: 1 3 J: 45 46 K: -999 -999 L: 1 1 - -DELETE {30,...} M:181 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(SST[L=1,Y=-2:2],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 2 points (LATITUDE) - X : 2 - TIME : 16-JAN 06:00 - 2 - 2 - 1N / 46: 28.1992 - 1S / 45: 28.5607 - -DELETE (C01,V02 M:181 dset: 1 I: 2 2 J: 45 46 K: -999 -999 L: 1 1 -cancel memory/all - -DELETE (C09,V02 M:148 dset: 1 I: 40 40 J: 45 46 K: -999 -999 L: 1 1 - -DELETE (C09,V02 M:153 dset: 1 I: 30 30 J: 45 46 K: -999 -999 L: 1 1 - -DELETE (C09,V02 M:175 dset: 1 I: 50 50 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - -DELETE (C01,V02 M:174 dset: 1 I: 1 3 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - -DELETE SST M:142 dset: 1 I: 50 50 J: 45 46 K: -999 -999 L: 1 1 - -DELETE SST M:151 dset: 1 I: 40 40 J: 45 46 K: -999 -999 L: 1 1 - -DELETE SST M:154 dset: 1 I: 30 30 J: 45 46 K: -999 -999 L: 1 1 -list/l=1/y=-2:2 SAMPLEI(sst,{30,40,50}) - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - const_v {30,...} M:154 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 3 dset: 1 - reading SST M:174 dset: 1 I: 30 30 J: 45 46 K: -999 -999 L: 1 1 - reading SST M:153 dset: 1 I: 40 40 J: 45 46 K: -999 -999 L: 1 1 - reading SST M:148 dset: 1 I: 50 50 J: 45 46 K: -999 -999 L: 1 1 - -DELETE SST M:142 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: 3 3 M: -999 -999 N: -999 -999 - -DELETE SST M:151 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:175 dset: 1 I: 1 3 J: 45 46 K: -999 -999 L: 1 1 - -DELETE {30,...} M:154 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(SST,{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 2 points (X-LATITUDE) - TIME : 16-JAN 06:00 - 1 2 3 - 1 2 3 - 1N / 46: 28.2222 28.1992 28.4514 - 1S / 45: 28.1514 28.5607 28.8326 -cancel memory/all - -DELETE EX#1 M:151 dset: 1 I: 1 3 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - -DELETE SST M:148 dset: 1 I: 50 50 J: 45 46 K: -999 -999 L: 1 1 - -DELETE SST M:153 dset: 1 I: 40 40 J: 45 46 K: -999 -999 L: 1 1 - -DELETE SST M:174 dset: 1 I: 30 30 J: 45 46 K: -999 -999 L: 1 1 -list/l=1/y=-2:2 SAMPLEI(a ,{30,40,50}) - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 8 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - const_v {30,...} M:174 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 3 dset: 1 - eval A C: 9 dset: 1 I: 30 30 J: 45 46 K: -999 -999 L: 1 1 - reading SST M:151 dset: 1 I: 30 30 J: 45 46 K: -999 -999 L: 1 1 - eval A C: 9 dset: 1 I: 40 40 J: 45 46 K: -999 -999 L: 1 1 - reading SST M:142 dset: 1 I: 40 40 J: 45 46 K: -999 -999 L: 1 1 - eval A C: 9 dset: 1 I: 50 50 J: 45 46 K: -999 -999 L: 1 1 - reading SST M:152 dset: 1 I: 50 50 J: 45 46 K: -999 -999 L: 1 1 - -DELETE SST M:148 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: 3 3 M: -999 -999 N: -999 -999 - -DELETE SST M:153 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:175 dset: 1 I: 1 3 J: 45 46 K: -999 -999 L: 1 1 - -DELETE {30,...} M:174 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(A ,{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 2 points (X-LATITUDE) - TIME : 16-JAN 06:00 - 1 2 3 - 1 2 3 - 1N / 46: 28.2222 28.1992 28.4514 - 1S / 45: 28.1514 28.5607 28.8326 - -! these should NOT break up the access into chunks -cancel memory/all - -DELETE EX#1 M:153 dset: 1 I: 1 3 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - -DELETE A M:154 dset: 1 I: 30 30 J: 45 46 K: -999 -999 L: 1 1 - -DELETE A M:173 dset: 1 I: 50 50 J: 45 46 K: -999 -999 L: 1 1 - -DELETE A M:181 dset: 1 I: 40 40 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - -DELETE SST M:142 dset: 1 I: 40 40 J: 45 46 K: -999 -999 L: 1 1 - -DELETE SST M:151 dset: 1 I: 30 30 J: 45 46 K: -999 -999 L: 1 1 - -DELETE SST M:152 dset: 1 I: 50 50 J: 45 46 K: -999 -999 L: 1 1 -list/l=1/y=-2:2 SAMPLEI(sst[i=30:40],{30,40,50}) - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V02 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C09,V02 C: 10 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - eval (C01,V02 C: 7 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - const_v {30,...} M:152 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 3 dset: 1 - eval (C09,V02 C: 11 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - reading SST M:181 dset: 1 I: 30 40 J: 45 46 K: -999 -999 L: 1 1 - -DELETE SST M:142 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: 3 3 M: -999 -999 N: -999 -999 - -DELETE SST M:151 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:154 dset: 1 I: 1 3 J: 45 46 K: -999 -999 L: 1 1 - -DELETE {30,...} M:152 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(SST[I=30:40],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 2 points (X-LATITUDE) - TIME : 16-JAN 06:00 - 1 2 3 - 1 2 3 - 1N / 46: 28.2222 28.1992 .... - 1S / 45: 28.1514 28.5607 .... -let/quiet a = sst[i=30:40] - -DELETE (C09,V02 M:173 dset: 1 I: 30 40 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - -DELETE (C01,V02 M:151 dset: 1 I: 1 3 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 -cancel memory/all - -DELETE SST M:181 dset: 1 I: 30 40 J: 45 46 K: -999 -999 L: 1 1 -list/l=1/y=-2:2 SAMPLEI(a,{30,40,50}) - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 8 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - const_v {30,...} M:181 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 3 dset: 1 - eval A C: 9 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - reading SST M:152 dset: 1 I: 30 40 J: 45 46 K: -999 -999 L: 1 1 - -DELETE M:173 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: 3 3 M: -999 -999 N: -999 -999 - -DELETE M:151 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:142 dset: 1 I: 1 3 J: 45 46 K: -999 -999 L: 1 1 - -DELETE {30,...} M:181 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(A,{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 2 points (X-LATITUDE) - TIME : 16-JAN 06:00 - 1 2 3 - 1 2 3 - 1N / 46: 28.2222 28.1992 .... - 1S / 45: 28.1514 28.5607 .... -cancel memory/all - -DELETE EX#1 M:151 dset: 1 I: 1 3 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - -DELETE A M:154 dset: 1 I: 30 40 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - -DELETE SST M:152 dset: 1 I: 30 40 J: 45 46 K: -999 -999 L: 1 1 -list/l=1/y=-2:2 SAMPLEI(a,{30}) ! sample at just 1 point - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 8 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - const_v {30} M:152 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 1 dset: 1 - eval A C: 9 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - reading SST M:181 dset: 1 I: 30 40 J: 45 46 K: -999 -999 L: 1 1 - -DELETE EX#1 M:151 dset: 1 I: 1 1 J: -999 -999 K: -999 -999 L: 1 1 M: -999 -999 N: -999 -999 - -DELETE A M:154 dset: 1 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:173 dset: 1 I: 1 1 J: 45 46 K: -999 -999 L: 1 1 - -DELETE {30} M:152 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(A,{30}) - FILENAME : coads_climatology.cdf - SUBSET : 2 points (LATITUDE) - X : 1 - TIME : 16-JAN 06:00 - 1 - 1 - 1N / 46: 28.2222 - 1S / 45: 28.1514 -cancel memory/all - -DELETE EX#1 M:154 dset: 1 I: 1 1 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - -DELETE A M:142 dset: 1 I: 30 40 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - -DELETE SST M:181 dset: 1 I: 30 40 J: 45 46 K: -999 -999 L: 1 1 -list/l=1/y=-2:2 SAMPLEI(a,30) ! sample at just 1 point - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V02 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C11,V02 C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 10 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - eval (C01,V02 C: 7 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - eval (C11,V02 C: 9 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - constan cnst M:181 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE cnst M:181 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - doing sampling tpry on I axis: 1 1 dset: 1 - eval A C: 11 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - reading SST M:152 dset: 1 I: 30 40 J: 45 46 K: -999 -999 L: 1 1 - -DELETE EX#1 M:154 dset: 1 I: 1 1 J: -999 -999 K: -999 -999 L: 1 1 M: -999 -999 N: -999 -999 - -DELETE cnst M:181 dset: 0 I: 1 1 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:151 dset: 1 I: 1 1 J: 45 46 K: -999 -999 L: 1 1 - VARIABLE : SAMPLEI(A,30) - FILENAME : coads_climatology.cdf - SUBSET : 2 points (LATITUDE) - X : 1 - TIME : 16-JAN 06:00 - 1 - 1 - 1N / 46: 28.2222 - 1S / 45: 28.1514 -cancel memory/all - -DELETE (C11,V02 M:142 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - -DELETE (C01,V02 M:181 dset: 1 I: 1 1 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - -DELETE A M:173 dset: 1 I: 30 40 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - -DELETE SST M:152 dset: 1 I: 30 40 J: 45 46 K: -999 -999 L: 1 1 -let/quiet fsst = sst[x=@fln] ! fill holes to allow @iin to work -let/quiet a = fsst[i=@iin] ! @iin forces all-at-once -list/l=1/y=-2:2 SAMPLEI(a,{30,40,50}) - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 8 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid FSST C: 10 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 46 K: -999 -999 L: 1 1 - const_v {30,...} M:152 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 3 dset: 1 - eval A C: 9 dset: 1 I: 1 180 J: 45 46 K: -999 -999 L: 1 1 - strip --> FSST[X=20E:20E(380)@IIN,D=1] - eval FSST C: 12 dset: 1 I: 1 180 J: 45 46 K: -999 -999 L: 1 1 - strip --> SST[I=1:180@FLN:1,D=1] - strip moduloing SST on X axis: 0 181 dset: 1 - reading SST M:142 dset: 1 I: 1 180 J: 45 46 K: -999 -999 L: 1 1 - doing moduloing SST on X axis: 1 180 dset: 1 - doing --> SST[I=1:180@FLN:1,D=1] - doing --> FSST[X=20E:20E(380)@IIN,D=1] - -DELETE M:181 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: 3 3 M: -999 -999 N: -999 -999 - -DELETE A M:173 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:148 dset: 1 I: 1 3 J: 45 46 K: -999 -999 L: 1 1 - -DELETE {30,...} M:152 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(A,{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 2 points (X-LATITUDE) - TIME : 16-JAN 06:00 - 1 2 3 - 1 2 3 - 1N / 46: 182881720. 245818833. 306844239. - 1S / 45: 183667676. 246892478. 309487473. -cancel memory/all - -DELETE EX#1 M:173 dset: 1 I: 1 3 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - -DELETE A M:175 dset: 1 I: 1 180 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - -DELETE FSST M:153 dset: 1 I: 1 180 J: 45 46 K: -999 -999 L: 1 1 - -DELETE FSST M:174 dset: 1 I: 1 180 J: 45 46 K: -999 -999 L: 1 1 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - -DELETE SST M:142 dset: 1 I: 1 180 J: 45 46 K: -999 -999 L: 1 1 - -DELETE SST M:151 dset: 1 I: 0 181 J: 45 46 K: -999 -999 L: 1 1 - -DELETE SST M:154 dset: 1 I: 1 180 J: 45 46 K: -999 -999 L: 1 1 - -! now test optimization that uses large memory chunks if available -cancel memory/all -load/l=1/y=0 sst[I=30:50] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 45 K: -999 -999 L: 1 1 - reading SST M:154 dset: 1 I: 30 50 J: 45 45 K: -999 -999 L: 1 1 -list/l=1/y=0 SAMPLEI(sst,{30,40,50}) - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 45 K: -999 -999 L: 1 1 - const_v {30,...} M:151 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 3 dset: 1 - found SST M:154 dset: 1 I: 30 50 J: 45 45 K: -999 -999 L: 1 1 - -DELETE FSST M:174 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: 3 3 M: -999 -999 N: -999 -999 - -DELETE SST M:142 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:153 dset: 1 I: 1 3 J: 45 45 K: -999 -999 L: 1 1 - -DELETE {30,...} M:151 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(SST,{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 1 / 1: 28.1514 - 2 / 2: 28.5607 - 3 / 3: 28.8326 -cancel memory/all - -DELETE EX#1 M:142 dset: 1 I: 1 3 J: 45 45 K: -999 -999 L: 1 1 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - -DELETE SST M:154 dset: 1 I: 30 50 J: 45 45 K: -999 -999 L: 1 1 -load/l=1/y=0 sst[I=30:39] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 45 K: -999 -999 L: 1 1 - reading SST M:154 dset: 1 I: 30 39 J: 45 45 K: -999 -999 L: 1 1 -list/l=1/y=0 SAMPLEI(sst,{30,40,50}) - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 45 K: -999 -999 L: 1 1 - const_v {30,...} M:142 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 3 dset: 1 - found SST M:154 dset: 1 I: 30 39 J: 45 45 K: -999 -999 L: 1 1 - reading SST M:175 dset: 1 I: 40 40 J: 45 45 K: -999 -999 L: 1 1 - reading SST M:173 dset: 1 I: 50 50 J: 45 45 K: -999 -999 L: 1 1 - -DELETE tpry M:153 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: 3 3 M: -999 -999 N: -999 -999 - -DELETE EX#1 M:151 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:174 dset: 1 I: 1 3 J: 45 45 K: -999 -999 L: 1 1 - -DELETE {30,...} M:142 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(SST,{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 1 / 1: 28.1514 - 2 / 2: 28.5607 - 3 / 3: 28.8326 -cancel memory/all - -DELETE EX#1 M:151 dset: 1 I: 1 3 J: 45 45 K: -999 -999 L: 1 1 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - -DELETE SST M:154 dset: 1 I: 30 39 J: 45 45 K: -999 -999 L: 1 1 - -DELETE SST M:173 dset: 1 I: 50 50 J: 45 45 K: -999 -999 L: 1 1 - -DELETE SST M:175 dset: 1 I: 40 40 J: 45 45 K: -999 -999 L: 1 1 -load/l=1/y=0 sst[I=30:40] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 45 K: -999 -999 L: 1 1 - reading SST M:175 dset: 1 I: 30 40 J: 45 45 K: -999 -999 L: 1 1 -list/l=1/y=0 SAMPLEI(sst,{30,40,50}) - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 45 K: -999 -999 L: 1 1 - const_v {30,...} M:173 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 3 dset: 1 - found SST M:175 dset: 1 I: 30 40 J: 45 45 K: -999 -999 L: 1 1 - reading SST M:174 dset: 1 I: 50 50 J: 45 45 K: -999 -999 L: 1 1 - -DELETE EX#1 M:151 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: 3 3 M: -999 -999 N: -999 -999 - -DELETE SST M:154 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:142 dset: 1 I: 1 3 J: 45 45 K: -999 -999 L: 1 1 - -DELETE {30,...} M:173 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(SST,{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 1 / 1: 28.1514 - 2 / 2: 28.5607 - 3 / 3: 28.8326 -cancel memory/all - -DELETE EX#1 M:154 dset: 1 I: 1 3 J: 45 45 K: -999 -999 L: 1 1 - dealloc dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - -DELETE SST M:174 dset: 1 I: 50 50 J: 45 45 K: -999 -999 L: 1 1 - -DELETE SST M:175 dset: 1 I: 30 40 J: 45 45 K: -999 -999 L: 1 1 -load/l=1/y=0 sst[I=30:41] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 45 K: -999 -999 L: 1 1 - reading SST M:175 dset: 1 I: 30 41 J: 45 45 K: -999 -999 L: 1 1 -list/l=1/y=0 SAMPLEI(sst,{30,40,50}) - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: 45 45 K: -999 -999 L: 1 1 - const_v {30,...} M:174 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 3 dset: 1 - found SST M:175 dset: 1 I: 30 41 J: 45 45 K: -999 -999 L: 1 1 - reading SST M:151 dset: 1 I: 50 50 J: 45 45 K: -999 -999 L: 1 1 - -DELETE EX#1 M:173 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: 3 3 M: -999 -999 N: -999 -999 - -DELETE EX#1 M:154 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:142 dset: 1 I: 1 3 J: 45 45 K: -999 -999 L: 1 1 - -DELETE {30,...} M:174 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(SST,{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 1 / 1: 28.1514 - 2 / 2: 28.5607 - 3 / 3: 28.8326 -set mode/last diagnostic - -! sampling a user var -let/quiet a = sst + 1 -list SAMPLEI(a[l=1:3,y=-2:2],{30,40,50}) - VARIABLE : SAMPLEI(A[L=1:3,Y=-2:2],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 2 by 3 points (X-LATITUDE-TIME) - 1 2 3 - 1 2 3 - ---- L:1 T: 16-JAN 06:00 - 1N / 46: 29.2222 29.1992 29.4514 - 1S / 45: 29.1514 29.5607 29.8326 - ---- L:2 T: 15-FEB 16:29 - 1N / 46: 29.5769 29.5925 29.1495 - 1S / 45: 29.3343 29.7146 29.4674 - ---- L:3 T: 17-MAR 02:58 - 1N / 46: 30.1373 29.9243 29.3264 - 1S / 45: 29.8965 29.8240 29.5357 -let/quiet a = sst[l=1:3,y=-2:2] + 1 ! same result, different syntax -list SAMPLEI(a, {30,40,50}) - VARIABLE : SAMPLEI(A, {30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 2 by 3 points (X-LATITUDE-TIME) - 1 2 3 - 1 2 3 - ---- L:1 T: 16-JAN 06:00 - 1N / 46: 29.2222 29.1992 29.4514 - 1S / 45: 29.1514 29.5607 29.8326 - ---- L:2 T: 15-FEB 16:29 - 1N / 46: 29.5769 29.5925 29.1495 - 1S / 45: 29.3343 29.7146 29.4674 - ---- L:3 T: 17-MAR 02:58 - 1N / 46: 30.1373 29.9243 29.3264 - 1S / 45: 29.8965 29.8240 29.5357 - -! combined with a dynamic axis -list SAMPLEI(sst[l=1,y=1s:1n:.5],{30,40,50}) - VARIABLE : SAMPLEI(SST[L=1,Y=1S:1N:.5],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 5 points (X-LATITUDE) - TIME : 16-JAN 06:00 - 1 2 3 - 1 2 3 - 1N / 5: 28.2222 28.1992 28.4514 - 0.5N / 4: 28.2045 28.2896 28.5467 - 0 / 3: 28.1868 28.3800 28.6420 - 0.5S / 2: 28.1691 28.4703 28.7373 - 1S / 1: 28.1514 28.5607 28.8326 -show grid/dyn -Dynamic grids: - GRID (G018) use count: 2 - name axis # pts start end - ABSTRACT X 99999999 r 1 1.E+08 - (AX004) LATITUDE 5 r 1S 1N - normal Z - TIME7 TIME 3mr 16-JAN 06:00 17-MAR 02:58 -cancel memory/all -let/quiet a = sst[l=1,y=1s:1n:.5] -list SAMPLEI(a,{30,40,50}) - VARIABLE : SAMPLEI(A,{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 5 points (X-LATITUDE) - TIME : 16-JAN 06:00 - 1 2 3 - 1 2 3 - 1N / 5: 28.2222 28.1992 28.4514 - 0.5N / 4: 28.2045 28.2896 28.5467 - 0 / 3: 28.1868 28.3800 28.6420 - 0.5S / 2: 28.1691 28.4703 28.7373 - 1S / 1: 28.1514 28.5607 28.8326 -show grid/dyn -Dynamic grids: - GRID (G017) use count: 1 - name axis # pts start end - ABSTRACT X 99999999 r 1 1.E+08 - (AX012) LATITUDE 5 r 1S 1N - normal Z - TIME7 TIME 3mr 16-JAN 06:00 17-MAR 02:58 - -! sampling a pseudo-variable -list SAMPLEI(X[x=1:12],{3,4,7,15}) - VARIABLE : SAMPLEI(X[X=1:12],{3,4,7,15}) - SUBSET : 4 points (X) - 1 / 1: 3.00000 - 2 / 2: 4.00000 - 3 / 3: 7.00000 - 4 / 4: .... -list SAMPLEI(X[x=111:120],{3,4,7}) ! indices out of range - VARIABLE : SAMPLEI(X[X=111:120],{3,4,7}) - SUBSET : 3 points (X) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... -list SAMPLEI(X[x=111:120:1],{3,4,7}) ! now OK - VARIABLE : SAMPLEI(X[X=111:120:1],{3,4,7}) - SUBSET : 3 points (X) - 1 / 1: 113.000 - 2 / 2: 114.000 - 3 / 3: 117.000 -list SAMPLEI(X[x=110:200:10],{3,4,7}) - VARIABLE : SAMPLEI(X[X=110:200:10],{3,4,7}) - SUBSET : 3 points (X) - 1 / 1: 130.000 - 2 / 2: 140.000 - 3 / 3: 170.000 -cancel memory/all -let/quiet a = X[x=110:200:10] -list SAMPLEI(a,{3,4,7}) - VARIABLE : SAMPLEI(A,{3,4,7}) - SUBSET : 3 points (X) - 1 / 1: 130.000 - 2 / 2: 140.000 - 3 / 3: 170.000 - -! sampling a constant !!??! -list SAMPLEI(5,{3,,1}) - VARIABLE : SAMPLEI(5,{3,,1}) - SUBSET : 3 points (X) - 1 / 1: .... - 2 / 2: .... - 3 / 3: 5.00000 -let/quiet a = 5 -list SAMPLEI(a,{3,,1}) - VARIABLE : SAMPLEI(A,{3,,1}) - SUBSET : 3 points (X) - 1 / 1: .... - 2 / 2: .... - 3 / 3: 5.00000 - -! sampling a constant list -list SAMPLEI({1,2,3,4,5},{3,,7}) - VARIABLE : SAMPLEI({1,2,3,4,5},{3,,7}) - SUBSET : 3 points (X) - 1 / 1: 3.00000 - 2 / 2: .... - 3 / 3: .... - -! over-defined X axis limits -cancel memory/all -list SAMPLEI(sst[l=1,y=0,i=30:50],{30,40,50}) - VARIABLE : SAMPLEI(SST[L=1,Y=0,I=30:50],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 1 / 1: 28.1514 - 2 / 2: 28.5607 - 3 / 3: 28.8326 -cancel memory/all -list SAMPLEI(sst[l=1,y=0,i=35:38],{30,40,50}) - VARIABLE : SAMPLEI(SST[L=1,Y=0,I=35:38],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - -! sampling with disordered and missing values in the index list -list SAMPLEI(sst[l=1,y=-2:2],{30,40,,50}) - VARIABLE : SAMPLEI(SST[L=1,Y=-2:2],{30,40,,50}) - FILENAME : coads_climatology.cdf - SUBSET : 4 by 2 points (X-LATITUDE) - TIME : 16-JAN 06:00 - 1 2 3 4 - 1 2 3 4 - 1N / 46: 28.2222 28.1992 .... 28.4514 - 1S / 45: 28.1514 28.5607 .... 28.8326 -list SAMPLEI(sst[l=1,y=-2:2],{40,,50,30}) - VARIABLE : SAMPLEI(SST[L=1,Y=-2:2],{40,,50,30}) - FILENAME : coads_climatology.cdf - SUBSET : 4 by 2 points (X-LATITUDE) - TIME : 16-JAN 06:00 - 1 2 3 4 - 1 2 3 4 - 1N / 46: 28.1992 .... 28.4514 28.2222 - 1S / 45: 28.5607 .... 28.8326 28.1514 - -! out of bounds indices -list SAMPLEI(sst[l=1,y=0,i=30:50],{30 ,400,500}) - VARIABLE : SAMPLEI(SST[L=1,Y=0,I=30:50],{30 ,400,500}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 1 / 1: 28.1514 - 2 / 2: .... - 3 / 3: .... -list SAMPLEI(sst[l=1,y=0,i=30:50],{-300,400,500}) - VARIABLE : SAMPLEI(SST[L=1,Y=0,I=30:50],{-300,400,500}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... -list SAMPLEI(X[x=110:200:10],{3,40,7}) - VARIABLE : SAMPLEI(X[X=110:200:10],{3,40,7}) - SUBSET : 3 points (X) - 1 / 1: 130.000 - 2 / 2: .... - 3 / 3: 170.000 - -! sampling along a normal axis -list SAMPLEI(Y[y=110:200:10],{3,4,7}) - VARIABLE : SAMPLEI(Y[Y=110:200:10],{3,4,7}) - SUBSET : 3 by 10 points (X-Y) - 1 2 3 - 1 2 3 - 110 / 1:............ - 120 / 2:............ - 130 / 3:............ - 140 / 4:............ - 150 / 5:............ - 160 / 6:............ - 170 / 7:............ - 180 / 8:............ - 190 / 9:............ - 200 / 10:............ - -! test sampling optimization -cancel memory/all -set mode diagnostic -list SAMPLEI(sst[l=1,y=5N],{31,33,35,37,44,46,48}) - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V02 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C09,V02 C: 10 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - allocate dynamic grid (G017) ABSTRACT COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V02 C: 6 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - const_v {31,...} M:176 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 7 dset: 1 - eval (C09,V02 C: 10 dset: 1 I: 31 35 J: -999 -999 K: -999 -999 L: -999 -999 - reading SST M:146 dset: 1 I: 31 35 J: 48 48 K: -999 -999 L: 1 1 - eval (C09,V02 C: 10 dset: 1 I: 37 37 J: 48 48 K: -999 -999 L: 1 1 - reading SST M:151 dset: 1 I: 37 37 J: 48 48 K: -999 -999 L: 1 1 - eval (C09,V02 C: 10 dset: 1 I: 44 48 J: 48 48 K: -999 -999 L: 1 1 - reading SST M:143 dset: 1 I: 44 48 J: 48 48 K: -999 -999 L: 1 1 - -DELETE SST M:153 dset: 1 I: 1 7 J: -999 -999 K: -999 -999 L: 7 7 M: -999 -999 N: -999 -999 - -DELETE SST M:154 dset: 1 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:161 dset: 1 I: 1 7 J: 48 48 K: -999 -999 L: 1 1 - -DELETE {31,...} M:176 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(SST[L=1,Y=5N],{31,33,35,37,44,46,48}) - FILENAME : coads_climatology.cdf - SUBSET : 7 points (X) - LATITUDE : 5N - TIME : 16-JAN 06:00 - 5N - 48 - 1 / 1: 27.5245 - 2 / 2: 27.8502 - 3 / 3: 27.9891 - 4 / 4: 28.0330 - 5 / 5: 26.2343 - 6 / 6: 27.0648 - 7 / 7: 27.2798 - -! test cache hits -list SAMPLEI(sst[l=1,y=5N],{31,33,35,37,44,46,48}) ! <-- CACHE HIT FAILS!!! - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V02 C: 6 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - const_v {31,...} M:176 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 7 dset: 1 - found (C09,V02 M:142 dset: 1 I: 31 35 J: 48 48 K: -999 -999 L: 1 1 - found (C09,V02 M:157 dset: 1 I: 37 37 J: 48 48 K: -999 -999 L: 1 1 - found (C09,V02 M:177 dset: 1 I: 44 48 J: 48 48 K: -999 -999 L: 1 1 - -DELETE SST M:153 dset: 1 I: 1 7 J: -999 -999 K: -999 -999 L: 7 7 M: -999 -999 N: -999 -999 - -DELETE tpry M:161 dset: 1 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:163 dset: 1 I: 1 7 J: 48 48 K: -999 -999 L: 1 1 - -DELETE {31,...} M:176 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(SST[L=1,Y=5N],{31,33,35,37,44,46,48}) - FILENAME : coads_climatology.cdf - SUBSET : 7 points (X) - LATITUDE : 5N - TIME : 16-JAN 06:00 - 5N - 48 - 1 / 1: 27.5245 - 2 / 2: 27.8502 - 3 / 3: 27.9891 - 4 / 4: 28.0330 - 5 / 5: 26.2343 - 6 / 6: 27.0648 - 7 / 7: 27.2798 -set mode/last diagnostic -let a = SAMPLEI(sst[l=1,y=5N],{31,33,35,37,44,46,48}) -load a -set mode diagnostic -list a ! <-- CACHE HIT FAILS!!! - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval A C: 6 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V01 C: 8 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - const_v {31,...} M:142 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 7 dset: 1 - found (C09,V01 M:157 dset: 1 I: 31 35 J: 48 48 K: -999 -999 L: 1 1 - found (C09,V01 M:176 dset: 1 I: 37 37 J: 48 48 K: -999 -999 L: 1 1 - found (C09,V01 M:163 dset: 1 I: 44 48 J: 48 48 K: -999 -999 L: 1 1 - -DELETE SST M:153 dset: 1 I: 1 7 J: -999 -999 K: -999 -999 L: 7 7 M: -999 -999 N: -999 -999 - -DELETE M:177 dset: 1 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:173 dset: 1 I: 1 7 J: 48 48 K: -999 -999 L: 1 1 - -DELETE {31,...} M:142 dset: 0 I: 1 7 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SAMPLEI(SST[L=1,Y=5N],{31,33,35,37,44,46,48}) - FILENAME : coads_climatology.cdf - SUBSET : 7 points (X) - LATITUDE : 5N - TIME : 16-JAN 06:00 - 5N - 48 - 1 / 1: 27.5245 - 2 / 2: 27.8502 - 3 / 3: 27.9891 - 4 / 4: 28.0330 - 5 / 5: 26.2343 - 6 / 6: 27.0648 - 7 / 7: 27.2798 -set mode/last diagnostic - -SHOW MEM/FREE - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 0.3 Kb - Current cache: 0.4 Kb - Total table slots: 500 - Free table slots: 490 - Un-cached variables: 0 - -! test SAMPLEJ -let/quiet a = sst + Z[z=0:500:5] -list SAMPLEJ(a[l=1,k=1:2,x=180],30) - VARIABLE : SAMPLEJ(A[L=1,K=1:2,X=180],30) - FILENAME : coads_climatology.cdf - SUBSET : 2 points (Z) - LONGITUDE: 179E - Y : 1 - TIME : 16-JAN 06:00 - 179E - 80 - 0 / 1: 22.6389 - 5 / 2: 27.6389 -list SAMPLEJ(a[l=1,k=1:2,x=180],{30,31,35, 40}) - VARIABLE : SAMPLEJ(A[L=1,K=1:2,X=180],{30,31,35, 40}) - FILENAME : coads_climatology.cdf - SUBSET : 4 by 2 points (Y-Z) - LONGITUDE: 179E - TIME : 16-JAN 06:00 - 1 2 3 4 - 1 2 3 4 - 0 / 1: 22.6389 23.5251 26.9131 29.2606 - 5 / 2: 27.6389 28.5251 31.9131 34.2606 -list SAMPLEJ(a[l=1,k=1,x=180],{30,40,50}) - VARIABLE : SAMPLEJ(A[L=1,K=1,X=180],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (Y) - LONGITUDE: 179E - Z : 0 - TIME : 16-JAN 06:00 - 179E - 80 - 1 / 1: 22.6389 - 2 / 2: 29.2606 - 3 / 3: 27.7269 -list SAMPLEJ(a[l=1,k=1,x=160e:160w:5],{30,40,50}) - VARIABLE : SAMPLEJ(A[L=1,K=1,X=160E:160W:5],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 9 by 3 points (LONGITUDE-Y) - Z : 0 - TIME : 16-JAN 06:00 - 160E 165E 170E 175E 180E 175W 170W 165W 160W - 1 2 3 4 5 6 7 8 9 - 1 / 1: 23.5649 22.6150 21.9434 22.5531 22.5856 22.4436 21.9629 22.2754 21.6575 - 2 / 2: 29.3521 29.1692 29.2257 29.4440 29.0923 29.3430 29.1310 28.6520 28.9082 - 3 / 3: 27.9696 28.0578 27.8618 27.9059 27.4280 27.4100 27.3646 27.3974 27.1177 -list SAMPLEJ(Y[y=110:200:10],{3,4,7}) - VARIABLE : SAMPLEJ(Y[Y=110:200:10],{3,4,7}) - SUBSET : 3 points (Y) - 1 / 1: 130.000 - 2 / 2: 140.000 - 3 / 3: 170.000 -list SAMPLEJ(YSEQUENCE({1,2,3,4,5}),{5,2,3,,7,2}) - VARIABLE : SAMPLEJ(YSEQUENCE({1,2,3,4,5}),{5,2,3,,7,2}) - SUBSET : 6 points (Y) - 1 / 1: 5.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: .... - 5 / 5: .... - 6 / 6: 2.00000 -list SAMPLEJ(X[x=110:200:10],{3,4,7}) ! normal axis - VARIABLE : SAMPLEJ(X[X=110:200:10],{3,4,7}) - SUBSET : 10 by 3 points (X-Y) - 110 120 130 140 150 160 170 180 190 200 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1:........................................ - 2 / 2:........................................ - 3 / 3:........................................ - -! test SAMPLEK -let/quiet a = sst + Z[z=0:500:5] -list SAMPLEK(a[l=1,y=0,x=180],30) - VARIABLE : SAMPLEK(A[L=1,Y=0,X=180],30) - FILENAME : coads_climatology.cdf - LONGITUDE: 179E - LATITUDE : 1S - Z : 1 - TIME : 16-JAN 06:00 - 173.202 -list SAMPLEK(a[l=1,y=0,x=180],{30,31,35, 40}) - VARIABLE : SAMPLEK(A[L=1,Y=0,X=180],{30,31,35, 40}) - FILENAME : coads_climatology.cdf - SUBSET : 4 points (Z) - LONGITUDE: 179E - LATITUDE : 1S - TIME : 16-JAN 06:00 - 179E - 80 - 1 / 1: 173.202 - 2 / 2: 178.202 - 3 / 3: 198.202 - 4 / 4: 223.202 -list SAMPLEK(a[l=1,y=0,x=180],{30,40,50}) - VARIABLE : SAMPLEK(A[L=1,Y=0,X=180],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (Z) - LONGITUDE: 179E - LATITUDE : 1S - TIME : 16-JAN 06:00 - 179E - 80 - 1 / 1: 173.202 - 2 / 2: 223.202 - 3 / 3: 273.202 -list SAMPLEK(a[l=1,y=0,x=160e:160w:5],{30,40,50}) - VARIABLE : SAMPLEK(A[L=1,Y=0,X=160E:160W:5],{30,40,50}) - FILENAME : coads_climatology.cdf - SUBSET : 9 by 3 points (LONGITUDE-Z) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 160E 165E 170E 175E 180E 175W 170W 165W 160W - 1 2 3 4 5 6 7 8 9 - 1 / 1: 174.169 174.225 173.963 173.313 173.532 172.803 172.991 172.548 171.929 - 2 / 2: 224.169 224.225 223.963 223.313 223.532 222.803 222.991 222.548 221.929 - 3 / 3: 274.169 274.225 273.963 273.313 273.532 272.803 272.991 272.548 271.929 -list SAMPLEK(Z[z=110:200:10],{3,4,7}) - VARIABLE : SAMPLEK(Z[Z=110:200:10],{3,4,7}) - SUBSET : 3 points (Z) - 1 / 1: 130.000 - 2 / 2: 140.000 - 3 / 3: 170.000 -list SAMPLEK(ZSEQUENCE({1,2,3,4,5}),{5,2,3,,7,2}) - VARIABLE : SAMPLEK(ZSEQUENCE({1,2,3,4,5}),{5,2,3,,7,2}) - SUBSET : 6 points (Z) - 1 / 1: 5.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: .... - 5 / 5: .... - 6 / 6: 2.00000 -list SAMPLEK(X[x=110:200:10],{3,4,7}) ! normal axis - VARIABLE : SAMPLEK(X[X=110:200:10],{3,4,7}) - SUBSET : 10 by 3 points (X-Z) - 110 120 130 140 150 160 170 180 190 200 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1:........................................ - 2 / 2:........................................ - 3 / 3:........................................ - -! test SAMPLEL -let/quiet a = sst + Z[z=0:500:5] -! Note: (V550) In the SAMPLEL examples which follow the L index values -! which exceed L=3 lie outside of the time axis range. As of V550 this -! triggers a subspan modulo operation (3 months from the full year of 12) -list SAMPLEL(a[y=0,k=1:2,x=180],5) - VARIABLE : SAMPLEL(A[Y=0,K=1:2,X=180],5) - FILENAME : coads_climatology.cdf - SUBSET : 2 points (Z) - LONGITUDE: 179E - LATITUDE : 1S - T : 1 - 179E - 80 - 0 / 1: 28.2022 - 5 / 2: 33.2022 -list SAMPLEL(a[y=0,k=1:2,x=180],{2,3,5, 10}) - VARIABLE : SAMPLEL(A[Y=0,K=1:2,X=180],{2,3,5, 10}) - FILENAME : coads_climatology.cdf - SUBSET : 2 by 4 points (Z-T) - LONGITUDE: 179E - LATITUDE : 1S - 0 5 - 1 2 - 1 / 1: 28.3646 33.3646 - 2 / 2: 28.3538 33.3538 - 3 / 3: 28.2022 33.2022 - 4 / 4: 28.3646 33.3646 -list SAMPLEL(a[y=0,k=1,x=180],{1,5,10}) - VARIABLE : SAMPLEL(A[Y=0,K=1,X=180],{1,5,10}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (T) - LONGITUDE: 179E - LATITUDE : 1S - Z : 0 - 179E - 80 - 1 / 1: 28.2022 - 2 / 2: 28.2022 - 3 / 3: 28.3646 -list SAMPLEL(a[y=0,k=1,x=160e:160w:5],{1,5,10}) - VARIABLE : SAMPLEL(A[Y=0,K=1,X=160E:160W:5],{1,5,10}) - FILENAME : coads_climatology.cdf - SUBSET : 9 by 3 points (LONGITUDE-T) - LATITUDE : 1S - Z : 0 - 160E 165E 170E 175E 180E 175W 170W 165W 160W - 1 2 3 4 5 6 7 8 9 - 1 / 1: 29.1694 29.2247 28.9631 28.3130 28.5324 27.8029 27.9907 27.5481 26.9291 - 2 / 2: 29.1694 29.2247 28.9631 28.3130 28.5324 27.8029 27.9907 27.5481 26.9291 - 3 / 3: 29.0509 29.1878 28.7239 29.5150 28.3287 28.1944 27.4815 27.4749 26.7886 -list SAMPLEL(T[t=110:200:10],{3,4,7}) - VARIABLE : SAMPLEL(T[T=110:200:10],{3,4,7}) - SUBSET : 3 points (T) - 1 / 1: 130.000 - 2 / 2: 140.000 - 3 / 3: 170.000 -list SAMPLEL(TSEQUENCE({1,2,3,4,5}),{5,2,3,,7,2}) - VARIABLE : SAMPLEL(TSEQUENCE({1,2,3,4,5}),{5,2,3,,7,2}) - SUBSET : 6 points (T) - 1 / 1: 5.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: .... - 5 / 5: .... - 6 / 6: 2.00000 -list SAMPLEL(X[x=110:200:10],{3,4,7}) ! normal axis - VARIABLE : SAMPLEL(X[X=110:200:10],{3,4,7}) - SUBSET : 10 by 3 points (X-T) - 110 120 130 140 150 160 170 180 190 200 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1:........................................ - 2 / 2:........................................ - 3 / 3:........................................ - - -GO bn_reset bn_strides_revs_perms -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_strides_revs_perms -GO bn_strides_revs_perms ! netCDF fancy reads -! bn_strides_revs_perms.jnl -! *sh* 6/99 - -! exercise special netCDF performance and robustness enhancements to allow -! reading with strides and permuting and reversing axes - -! * * * * * PERMUTATIONS * * * * * -! How to evaluate the correct ordering: -! The data in bn_strides.cdf is ordered with the 1's digit -! moving fastert, then the 10's, then 100's, etc. - -! If (say) /ORDER=ZXY is given we should see the 100's digit -! moving fastest (left to right on each line), the 1's next -! (vertically within each block of output), and the 10's next -! advancing from block to block - -canc data/all -cancel mode diagnostic - -! first with an XYZT variable -set region/i=3:6/j=2:4/k=1:2/l=1 -use bn_strides -list bigvar - VARIABLE : VAR - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 4 5 6 - 3 4 5 6 - ---- K:1 Z: 1 - 2 / 2: 1123.00 1124.00 1125.00 1126.00 - 3 / 3: 1133.00 1134.00 1135.00 1136.00 - 4 / 4: 1143.00 1144.00 1145.00 1146.00 - ---- K:2 Z: 2 - 2 / 2: 1223.00 1224.00 1225.00 1226.00 - 3 / 3: 1233.00 1234.00 1235.00 1236.00 - 4 / 4: 1243.00 1244.00 1245.00 1246.00 -canc data/all - -use/order=yx bn_strides -list bigvar - VARIABLE : VAR - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 4 5 6 - 3 4 5 6 - ---- K:1 Z: 1 - 2 / 2: 1132.00 1142.00 1152.00 1162.00 - 3 / 3: 1133.00 1143.00 1153.00 1163.00 - 4 / 4: 1134.00 1144.00 1154.00 1164.00 - ---- K:2 Z: 2 - 2 / 2: 1232.00 1242.00 1252.00 1262.00 - 3 / 3: 1233.00 1243.00 1253.00 1263.00 - 4 / 4: 1234.00 1244.00 1254.00 1264.00 -canc data/all - -use/order=zyx bn_strides -list bigvar - VARIABLE : VAR - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 4 5 6 - 3 4 5 6 - ---- K:1 Z: 1 - 2 / 2: 1321.00 1421.00 1521.00 1621.00 - 3 / 3: 1331.00 1431.00 1531.00 1631.00 - 4 / 4: 1341.00 1441.00 1541.00 1641.00 - ---- K:2 Z: 2 - 2 / 2: 1322.00 1422.00 1522.00 1622.00 - 3 / 3: 1332.00 1432.00 1532.00 1632.00 - 4 / 4: 1342.00 1442.00 1542.00 1642.00 -canc data/all - -use/order=zxy bn_strides -list bigvar - VARIABLE : VAR - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 4 5 6 - 3 4 5 6 - ---- K:1 Z: 1 - 2 / 2: 1312.00 1412.00 1512.00 1612.00 - 3 / 3: 1313.00 1413.00 1513.00 1613.00 - 4 / 4: 1314.00 1414.00 1514.00 1614.00 - ---- K:2 Z: 2 - 2 / 2: 1322.00 1422.00 1522.00 1622.00 - 3 / 3: 1323.00 1423.00 1523.00 1623.00 - 4 / 4: 1324.00 1424.00 1524.00 1624.00 -canc data/all - -! now with an XYT variable -cancel region -set region/i=1:4/j=1:3/l=1:2 -use bn_strides -show grid xytvar - GRID GPC5 - name axis # pts start end subset - XLON LONGITUDE 40mr 141E 180E full - YLAT LATITUDE 30 r 1N 30N full - normal Z - TTIME TIME 20 r 01-JAN-1995 00:00 20-JAN-1995 00:00 full -list xytvar - VARIABLE : L*1000 + J*10 + I - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (LONGITUDE-LATITUDE-TIME) - 141E 142E 143E 144E - 1 2 3 4 - ---- L:1 T: 01-JAN-1995 00:00 - 3N / 3: 1031.00 1032.00 1033.00 1034.00 - 2N / 2: 1021.00 1022.00 1023.00 1024.00 - 1N / 1: 1011.00 1012.00 1013.00 1014.00 - ---- L:2 T: 02-JAN-1995 00:00 - 3N / 3: 2031.00 2032.00 2033.00 2034.00 - 2N / 2: 2021.00 2022.00 2023.00 2024.00 - 1N / 1: 2011.00 2012.00 2013.00 2014.00 -canc data/all - -use/order=yx bn_strides -show grid xytvar - GRID GPC5 - name axis # pts start end subset - YLAT X (degrees_north) 30 r 1 30 full - XLON Y (degrees_east) 40mr 141 180 full - normal Z - TTIME TIME 20 r 01-JAN-1995 00:00 20-JAN-1995 00:00 full -list xytvar - VARIABLE : L*1000 + J*10 + I - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (degrees_north)-Y (degrees_east)-TIME) - 1 2 3 4 - 1 2 3 4 - ---- L:1 T: 01-JAN-1995 00:00 - 141 / 1: 1011.00 1021.00 1031.00 1041.00 - 142 / 2: 1012.00 1022.00 1032.00 1042.00 - 143 / 3: 1013.00 1023.00 1033.00 1043.00 - ---- L:2 T: 02-JAN-1995 00:00 - 141 / 1: 2011.00 2021.00 2031.00 2041.00 - 142 / 2: 2012.00 2022.00 2032.00 2042.00 - 143 / 3: 2013.00 2023.00 2033.00 2043.00 -canc data/all - -use/order=tyx bn_strides -show grid xytvar - GRID GPC5 - name axis # pts start end subset - TTIME X (DAYS) 20 r 34319 34338 full - YLAT LATITUDE 30 r 1N 30N full - normal Z - XLON T (degrees_east) 40mr 141 180 full -list xytvar - VARIABLE : L*1000 + J*10 + I - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-LATITUDE-T (degrees_east)) - 34319 34320 34321 34322 - 1 2 3 4 - ---- L:1 T: 141 - 3N / 3: 1031.00 2031.00 3031.00 4031.00 - 2N / 2: 1021.00 2021.00 3021.00 4021.00 - 1N / 1: 1011.00 2011.00 3011.00 4011.00 - ---- L:2 T: 142 - 3N / 3: 1032.00 2032.00 3032.00 4032.00 - 2N / 2: 1022.00 2022.00 3022.00 4022.00 - 1N / 1: 1012.00 2012.00 3012.00 4012.00 -canc data/all - -use/order=txy bn_strides -show grid xytvar - GRID GPC5 - name axis # pts start end subset - TTIME X (DAYS) 20 r 34319 34338 full - XLON Y (degrees_east) 40mr 141 180 full - normal Z - YLAT T (degrees_north) 30 r 1 30 full -list xytvar - VARIABLE : L*1000 + J*10 + I - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-Y (degrees_east)-T (degrees_north)) - 34319 34320 34321 34322 - 1 2 3 4 - ---- L:1 T: 1 - 141 / 1: 1011.00 2011.00 3011.00 4011.00 - 142 / 2: 1012.00 2012.00 3012.00 4012.00 - 143 / 3: 1013.00 2013.00 3013.00 4013.00 - ---- L:2 T: 2 - 141 / 1: 1021.00 2021.00 3021.00 4021.00 - 142 / 2: 1022.00 2022.00 3022.00 4022.00 - 143 / 3: 1023.00 2023.00 3023.00 4023.00 -canc data/all - -! map into Z instead of T -use/order=zxy bn_strides -show grid xytvar - GRID GPC5 - name axis # pts start end subset - TTIME X (DAYS) 20 r 34319 34338 full - XLON Y (degrees_east) 40mr 141 180 full - YLAT Z (degrees_north) 30 r 1 30 full - normal T -list/k=1:2 xytvar - VARIABLE : L*1000 + J*10 + I - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-Y (degrees_east)-Z (degrees_north)) - 34319 34320 34321 34322 - 1 2 3 4 - ---- K:1 Z: 1 - 141 / 1: 1011.00 2011.00 3011.00 4011.00 - 142 / 2: 1012.00 2012.00 3012.00 4012.00 - 143 / 3: 1013.00 2013.00 3013.00 4013.00 - ---- K:2 Z: 2 - 141 / 1: 1021.00 2021.00 3021.00 4021.00 - 142 / 2: 1022.00 2022.00 3022.00 4022.00 - 143 / 3: 1023.00 2023.00 3023.00 4023.00 -canc data/all - -! ambiguous mapping -use/order=tx bn_strides -show grid xytvar - GRID GPC5 - name axis # pts start end subset - TTIME X (DAYS) 20 r 34319 34338 full - XLON Y (degrees_east) 40mr 141 180 full - normal Z - YLAT T (degrees_north) 30 r 1 30 full -list xytvar - VARIABLE : L*1000 + J*10 + I - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-Y (degrees_east)-T (degrees_north)) - 34319 34320 34321 34322 - 1 2 3 4 - ---- L:1 T: 1 - 141 / 1: 1011.00 2011.00 3011.00 4011.00 - 142 / 2: 1012.00 2012.00 3012.00 4012.00 - 143 / 3: 1013.00 2013.00 3013.00 4013.00 - ---- L:2 T: 2 - 141 / 1: 1021.00 2021.00 3021.00 4021.00 - 142 / 2: 1022.00 2022.00 3022.00 4022.00 - 143 / 3: 1023.00 2023.00 3023.00 4023.00 -canc data/all - -! final "z" goes beyond the 3D -- no effect -use/order=txyz bn_strides -show grid xytvar - GRID GPC5 - name axis # pts start end subset - TTIME X (DAYS) 20 r 34319 34338 full - XLON Y (degrees_east) 40mr 141 180 full - normal Z - YLAT T (degrees_north) 30 r 1 30 full -show grid var - GRID GPC1 - name axis # pts start end subset - TAX1_1 X 1 r 1 1 full - XAX1_4 Y 4 r 1 4 full - YAX1_3 Z 3 r 1 3 full - ZAX1_2 T 2 r 1 2 full -canc data/all - -! * * * * * STRIDES * * * * * -use bn_strides -set mode diag -cancel memory/all - -SHOW DATA - currently SET data sets: - 1> ./data/bn_strides.cdf (default) - name title I J K L - VAR L*1000 + K*100 + J*10 + I 1:4 1:3 1:2 1:1 - MIDVAR VAR 1:9 1:8 1:7 1:6 - BIGVAR VAR 1:40 1:30 1:20 1:10 - UNEVENVAR - L*1000 + K*100 + J[GY=YUNEVEN]* 1:10 1:8 1:6 1:4 - XYTVAR L*1000 + J*10 + I 1:40 1:30 ... 1:20 - - -! basic strides -LIST VAR[i=2:4:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - dealloc dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - allocate dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G011) @XACT - rdstride VAR C: 7 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - nulrgd VAR M:179 dset: 1 I: 1 2 J: 1 3 K: 1 2 L: 1 1 - -DELETE VAR M:180 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 2 delta on X - FILENAME : bn_strides.cdf - SUBSET : 2 by 3 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1112.00 1114.00 - 2 / 2: 1122.00 1124.00 - 3 / 3: 1132.00 1134.00 - ---- K:2 Z: 2 - 1 / 1: 1212.00 1214.00 - 2 / 2: 1222.00 1224.00 - 3 / 3: 1232.00 1234.00 - -! cache hit after changes to COMPLETE_MISSING_LIMS and FLESH_OUT_AXIS -LIST VAR[i=2:4:2] - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - found VAR M:179 dset: 1 I: 1 2 J: 1 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 2 delta on X - FILENAME : bn_strides.cdf - SUBSET : 2 by 3 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1112.00 1114.00 - 2 / 2: 1122.00 1124.00 - 3 / 3: 1132.00 1134.00 - ---- K:2 Z: 2 - 1 / 1: 1212.00 1214.00 - 2 / 2: 1222.00 1224.00 - 3 / 3: 1232.00 1234.00 - -! cache hit through non-file variable -let a = VAR[i=2:4:2] -list a - dealloc dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - -DELETE VAR M:179 dset: 1 I: 1 2 J: 1 3 K: 1 2 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - dealloc dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - allocate dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - allocate dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - eval A C: 6 dset: 1 I: -999 -999 J: 1 3 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G011) @XACT - rdstride VAR C: 9 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - nulrgd VAR M:180 dset: 1 I: 1 2 J: 1 3 K: 1 2 L: 1 1 - -DELETE VAR M:179 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - VARIABLE : VAR[I=2:4:2] - FILENAME : bn_strides.cdf - SUBSET : 2 by 3 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1112.00 1114.00 - 2 / 2: 1122.00 1124.00 - 3 / 3: 1132.00 1134.00 - ---- K:2 Z: 2 - 1 / 1: 1212.00 1214.00 - 2 / 2: 1222.00 1224.00 - 3 / 3: 1232.00 1234.00 -list a ! from cache ... - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - found A M:179 dset: 1 I: 1 2 J: 1 3 K: 1 2 L: 1 1 - VARIABLE : VAR[I=2:4:2] - FILENAME : bn_strides.cdf - SUBSET : 2 by 3 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1112.00 1114.00 - 2 / 2: 1122.00 1124.00 - 3 / 3: 1132.00 1134.00 - ---- K:2 Z: 2 - 1 / 1: 1212.00 1214.00 - 2 / 2: 1222.00 1224.00 - 3 / 3: 1232.00 1234.00 - -! cache hit from full region cache -- bypass use of strides -cancel memory/all - dealloc dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - -DELETE A M:179 dset: 1 I: 1 2 J: 1 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - -DELETE VAR M:180 dset: 1 I: 1 2 J: 1 3 K: 1 2 L: 1 1 -load var - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC1 XAX1_4 YAX1_3 ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - reading VAR M:180 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 -LIST VAR[i=2:4:2] - dealloc dynamic grid GPC1 XAX1_4 YAX1_3 ZAX1_2 TAX1_1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - dealloc dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - allocate dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G011) @XACT - rdstride VAR C: 7 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - nulrgd VAR M:173 dset: 1 I: 1 2 J: 1 3 K: 1 2 L: 1 1 - -DELETE VAR M:179 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 2 delta on X - FILENAME : bn_strides.cdf - SUBSET : 2 by 3 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1112.00 1114.00 - 2 / 2: 1122.00 1124.00 - 3 / 3: 1132.00 1134.00 - ---- K:2 Z: 2 - 1 / 1: 1212.00 1214.00 - 2 / 2: 1222.00 1224.00 - 3 / 3: 1232.00 1234.00 -LIST VAR[i=2:4:2,j=1:3:2] - dealloc dynamic grid (G011) (AX030) YAX1_3 ZAX1_2 TAX1_1 - -DELETE VAR M:173 dset: 1 I: 1 2 J: 1 3 K: 1 2 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) (AX031) ZAX1_2 TAX1_1 - dealloc dynamic grid (G011) (AX029) (AX031) ZAX1_2 TAX1_1 - allocate dynamic grid (G011) (AX029) (AX031) ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX029) (AX031) ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G011) @XACT - rdstride VAR C: 7 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - nulrgd VAR M:179 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE VAR M:173 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) (AX029) (AX031) ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 2 delta on X, 2 delta on Y - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1112.00 1114.00 - 3 / 2: 1132.00 1134.00 - ---- K:2 Z: 2 - 1 / 1: 1212.00 1214.00 - 3 / 2: 1232.00 1234.00 -CANC MEM/ALL - dealloc dynamic grid (G011) (AX029) (AX031) ZAX1_2 TAX1_1 - -DELETE VAR M:179 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE VAR M:180 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - -! modulo requests cannot use strides (as this example shows) -set axis/modulo XAX1_4 -LIST VAR[I=1:10:3,j=1,k=1,l=1] ! 1, 4, 7(3), 10(2) - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - dealloc dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - allocate dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G011) @XACT - strip moduloing VAR on X axis: 1 10 dset: 1 - reading VAR M:180 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - doing moduloing VAR on X axis: 1 4 dset: 1 - regrid VAR M:173 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 3 delta on X - FILENAME : bn_strides.cdf - SUBSET : 4 points (X) - Y : 1 - Z : 1 - T : 1 - 1 - 1 - 1 / 1: 1111.00 - 4 / 2: 1114.00 - 7 / 3: 1113.00 - 10 / 4: 1112.00 -cancel axis/modulo XAX1_4 - -DELETE VAR M:173 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - -DELETE VAR M:179 dset: 1 I: 1 10 J: 1 1 K: 1 1 L: 1 1 - -DELETE VAR M:180 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - -! strides applied to more than one axis need special attention in IS_REGRID -LIST VAR[i=2:4:2,j=1:3:2] - dealloc dynamic grid (G011) (AX029) YAX1_3 ZAX1_2 TAX1_1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX031) (AX030) ZAX1_2 TAX1_1 - dealloc dynamic grid (G011) (AX031) (AX030) ZAX1_2 TAX1_1 - allocate dynamic grid (G011) (AX031) (AX030) ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX031) (AX030) ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G011) @XACT - rdstride VAR C: 7 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - nulrgd VAR M:179 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE VAR M:180 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) (AX031) (AX030) ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 2 delta on X, 2 delta on Y - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1112.00 1114.00 - 3 / 2: 1132.00 1134.00 - ---- K:2 Z: 2 - 1 / 1: 1212.00 1214.00 - 3 / 2: 1232.00 1234.00 -LIST VAR[i=2:6:2,j=1:5:2] - dealloc dynamic grid (G011) (AX031) (AX030) ZAX1_2 TAX1_1 - -DELETE VAR M:179 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX031) (AX029) ZAX1_2 TAX1_1 - dealloc dynamic grid (G011) (AX031) (AX029) ZAX1_2 TAX1_1 - allocate dynamic grid (G011) (AX031) (AX029) ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX031) (AX029) ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G011) @XACT - rdstride VAR C: 7 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - nulrgd VAR M:180 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE VAR M:179 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) (AX031) (AX029) ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 2 delta on X, 2 delta on Y - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1112.00 1114.00 - 3 / 2: 1132.00 1134.00 - ---- K:2 Z: 2 - 1 / 1: 1212.00 1214.00 - 3 / 2: 1232.00 1234.00 - -! deliberate error -set mode ignore; LIST/i=2:4:2 VAR; cancel mode ignore - dealloc dynamic grid (G011) (AX031) (AX029) ZAX1_2 TAX1_1 - -DELETE VAR M:180 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC1 XAX1_4 YAX1_3 ZAX1_2 TAX1_1 - -! averaging causes bypass of strides -LIST VAR[i=2:4:2@ave] - dealloc dynamic grid GPC1 XAX1_4 YAX1_3 ZAX1_2 TAX1_1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX031) YAX1_3 ZAX1_2 TAX1_1 - dealloc dynamic grid (G011) (AX031) YAX1_3 ZAX1_2 TAX1_1 - allocate dynamic grid (G011) (AX031) YAX1_3 ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX031) YAX1_3 ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G011) @AVE - reading VAR M:180 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - regrid VAR M:179 dset: 1 I: 1 2 J: 1 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) (AX031) YAX1_3 ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 2 delta on X@AVE - FILENAME : bn_strides.cdf - SUBSET : 2 by 3 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1112.00 1113.67 - 2 / 2: 1122.00 1123.67 - 3 / 3: 1132.00 1133.67 - ---- K:2 Z: 2 - 1 / 1: 1212.00 1213.67 - 2 / 2: 1222.00 1223.67 - 3 / 3: 1232.00 1233.67 - -! test sub-region selection on strides axis -let a = bigvar[i=1:40:5] - dealloc dynamic grid (G011) (AX031) YAX1_3 ZAX1_2 TAX1_1 - -DELETE VAR M:179 dset: 1 I: 1 2 J: 1 3 K: 1 2 L: 1 1 -list/j=1/k=1/l=1 a[i=3:5] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - dealloc dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - allocate dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - allocate dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - eval A C: 7 dset: 1 I: 3 5 J: 1 1 K: 1 1 L: 1 1 - allocate dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - strip regrid on X: BIGVAR --> (G011) @XACT - rdstride BIGVAR C: 10 dset: 1 I: 1 36 J: 1 1 K: 1 1 L: 1 1 - nulrgd BIGVAR M:173 dset: 1 I: 1 8 J: 1 1 K: 1 1 L: 1 1 - -DELETE BIGVAR M:179 dset: 1 I: 1 36 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - VARIABLE : BIGVAR[I=1:40:5] - FILENAME : bn_strides.cdf - SUBSET : 3 points (X) - Y : 1 - Z : 1 - T : 1 - 1 - 1 - 11 / 3: 1121.00 - 16 / 4: 1126.00 - 21 / 5: 1131.00 - -DELETE A M:170 dset: 1 I: 1 1 J: 3 5 K: 1 1 L: 1 1 -list/k=1/l=1 a[i=3:5,j=1:8:2] - dealloc dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G002) (AX029) (AX030) ZAX1_20 TAX1_10 - dealloc dynamic grid (G002) (AX029) (AX030) ZAX1_20 TAX1_10 - allocate dynamic grid (G002) (AX029) (AX030) ZAX1_20 TAX1_10 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 3 K: 1 1 L: 1 1 - allocate dynamic grid (G002) (AX029) (AX030) ZAX1_20 TAX1_10 - strip regrid on Y: A --> (G002) @XACT - eval A C: 8 dset: 1 I: 3 5 J: 1 7 K: 1 1 L: 1 1 - allocate dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - strip regrid on X: BIGVAR --> (G011) @XACT - rdstride BIGVAR C: 11 dset: 1 I: 1 36 J: 1 7 K: 1 1 L: 1 1 - nulrgd BIGVAR M:166 dset: 1 I: 1 8 J: 1 7 K: 1 1 L: 1 1 - -DELETE BIGVAR M:170 dset: 1 I: 1 36 J: 1 7 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - regrid A M:161 dset: 1 I: 3 5 J: 1 4 K: 1 1 L: 1 1 - dealloc dynamic grid (G002) (AX029) (AX030) ZAX1_20 TAX1_10 - VARIABLE : BIGVAR[I=1:40:5] - regrid: 2 delta on Y - FILENAME : bn_strides.cdf - SUBSET : 3 by 4 points (X-Y) - Z : 1 - T : 1 - 11 16 21 - 3 4 5 - 1 / 1: 1121.00 1126.00 1131.00 - 3 / 2: 1141.00 1146.00 1151.00 - 5 / 3: 1161.00 1166.00 1171.00 - 7 / 4: 1181.00 1186.00 1191.00 - -! ****** unequally spaced points on parent axis -! reference data -LIST/order=x/j=1/k=1/l=1 UNEVENVAR - dealloc dynamic grid (G002) (AX029) (AX030) ZAX1_20 TAX1_10 - -DELETE A M:161 dset: 1 I: 3 5 J: 1 4 K: 1 1 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC4 XUNEVEN YUNEVEN ZAX1_6 TAX1_4 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - reading UNE-NVAR M:161 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN] - FILENAME : bn_strides.cdf - SUBSET : 4 points (X) - Y : 0 - Z : 1 - T : 1 - 0 0.3 0.48 0.6 - 1 2 3 4 - 1111.00 1112.00 1113.00 1114.00 -cancel mem/all - dealloc dynamic grid GPC4 XUNEVEN YUNEVEN ZAX1_6 TAX1_4 - -DELETE A M:170 dset: 1 I: 1 8 J: 1 7 K: 1 1 L: 1 1 - -DELETE A M:179 dset: 1 I: 1 8 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - -DELETE BIGVAR M:166 dset: 1 I: 1 8 J: 1 7 K: 1 1 L: 1 1 - -DELETE BIGVAR M:173 dset: 1 I: 1 8 J: 1 1 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:161 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - -DELETE VAR M:180 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - -! basic strides -LIST/order=x/j=1/k=1/l=1 UNEVENVAR[i=2:4:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - dealloc dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - allocate dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - allocate dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - strip regrid on X: UNEVENVAR --> (G011) @XACT - rdstride UNE-NVAR C: 8 dset: 1 I: 2 4 J: 1 1 K: 1 1 L: 1 1 - nulrgd UNE-NVAR M:161 dset: 1 I: 1 2 J: 1 1 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:180 dset: 1 I: 2 4 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN] - regrid: on X - FILENAME : bn_strides.cdf - SUBSET : 2 points (X) - Y : 0 - Z : 1 - T : 1 - 0.3 0.6 - 1 2 - 1112.00 1114.00 - -! cache hit after changes to COMPLETE_MISSING_LIMS and FLESH_OUT_AXIS -LIST/order=x/j=1/k=1/l=1 UNEVENVAR[i=2:4:2] - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - allocate dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - found UNE-NVAR M:161 dset: 1 I: 1 2 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN] - regrid: on X - FILENAME : bn_strides.cdf - SUBSET : 2 points (X) - Y : 0 - Z : 1 - T : 1 - 0.3 0.6 - 1 2 - 1112.00 1114.00 - -! cache hit through non-file variable -let a = UNEVENVAR[i=2:4:2] - dealloc dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - -DELETE UNE-NVAR M:161 dset: 1 I: 1 2 J: 1 1 K: 1 1 L: 1 1 -list/order=x/j=1/k=1/l=1 a - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - dealloc dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - allocate dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - allocate dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - eval A C: 7 dset: 1 I: -999 -999 J: 1 1 K: 1 1 L: 1 1 - allocate dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - strip regrid on X: UNEVENVAR --> (G011) @XACT - rdstride UNE-NVAR C: 10 dset: 1 I: 2 4 J: 1 1 K: 1 1 L: 1 1 - nulrgd UNE-NVAR M:180 dset: 1 I: 1 2 J: 1 1 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:161 dset: 1 I: 2 4 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - VARIABLE : UNEVENVAR[I=2:4:2] - FILENAME : bn_strides.cdf - SUBSET : 2 points (X) - Y : 0 - Z : 1 - T : 1 - 0.3 0.6 - 1 2 - 1112.00 1114.00 -list/order=x/j=1/k=1/l=1 a ! from cache ... - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - found A M:161 dset: 1 I: 1 2 J: 1 1 K: 1 1 L: 1 1 - VARIABLE : UNEVENVAR[I=2:4:2] - FILENAME : bn_strides.cdf - SUBSET : 2 points (X) - Y : 0 - Z : 1 - T : 1 - 0.3 0.6 - 1 2 - 1112.00 1114.00 - -! cache hit from full region cache -- bypass use of strides -cancel memory/all - dealloc dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - -DELETE A M:161 dset: 1 I: 1 2 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - -DELETE UNE-NVAR M:180 dset: 1 I: 1 2 J: 1 1 K: 1 1 L: 1 1 -load/k=1/l=1 UNEVENVAR - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC4 XUNEVEN YUNEVEN ZAX1_6 TAX1_4 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 3 K: 1 1 L: 1 1 - reading UNE-NVAR M:180 dset: 1 I: 1 4 J: 1 3 K: 1 1 L: 1 1 -LIST/j=1/k=1/l=1 UNEVENVAR[i=2:4:2] - dealloc dynamic grid GPC4 XUNEVEN YUNEVEN ZAX1_6 TAX1_4 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - dealloc dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - allocate dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - allocate dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - strip regrid on X: UNEVENVAR --> (G011) @XACT - rdstride UNE-NVAR C: 8 dset: 1 I: 2 4 J: 1 1 K: 1 1 L: 1 1 - nulrgd UNE-NVAR M:173 dset: 1 I: 1 2 J: 1 1 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:161 dset: 1 I: 2 4 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN] - regrid: on X - FILENAME : bn_strides.cdf - SUBSET : 2 points (X) - Y : 0 - Z : 1 - T : 1 - 0 - 1 - 0.3 / 1: 1112.00 - 0.6 / 2: 1114.00 -LIST/j=1/k=1/l=1 UNEVENVAR[i=2:4:2,j=1:5:2] - dealloc dynamic grid (G011) (AX030) YUNEVEN ZAX1_6 TAX1_4 - -DELETE UNE-NVAR M:173 dset: 1 I: 1 2 J: 1 1 K: 1 1 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) (AX031) ZAX1_6 TAX1_4 - dealloc dynamic grid (G011) (AX029) (AX031) ZAX1_6 TAX1_4 - allocate dynamic grid (G011) (AX029) (AX031) ZAX1_6 TAX1_4 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - allocate dynamic grid (G011) (AX029) (AX031) ZAX1_6 TAX1_4 - strip regrid on X: UNEVENVAR --> (G011) @XACT - rdstride UNE-NVAR C: 8 dset: 1 I: 2 4 J: 1 5 K: 1 1 L: 1 1 - nulrgd UNE-NVAR M:161 dset: 1 I: 1 2 J: 1 3 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:173 dset: 1 I: 2 4 J: 1 5 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX029) (AX031) ZAX1_6 TAX1_4 - doing limits reconciliation on Y axis: UNEVENVAR - VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN] - regrid: on X, on Y - FILENAME : bn_strides.cdf - SUBSET : 2 points (X) - Y : 0 - Z : 1 - T : 1 - 0 - 1 - 0.3 / 1: 1112.00 - 0.6 / 2: 1114.00 - -DELETE UNE-NVAR M:173 dset: 1 I: 1 1 J: 1 2 K: 1 1 L: 1 1 -CANC MEM/ALL - dealloc dynamic grid (G011) (AX029) (AX031) ZAX1_6 TAX1_4 - -DELETE UNE-NVAR M:161 dset: 1 I: 1 2 J: 1 3 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:180 dset: 1 I: 1 4 J: 1 3 K: 1 1 L: 1 1 - -! modulo requests cannot use strides (as this example shows) -set axis/modulo XUNEVEN -LIST/order=x UNEVENVAR[I=1:30:7,j=1,k=1,l=1] ! 1, 8, 15(5), 22(2) - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - dealloc dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - allocate dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - strip regrid on X: UNEVENVAR --> (G011) @XACT - strip moduloing UNEVENVAR on X axis: 1 29 dset: 1 - reading UNE-NVAR M:180 dset: 1 I: 1 10 J: 1 1 K: 1 1 L: 1 1 - doing moduloing UNEVENVAR on X axis: 1 10 dset: 1 - regrid UNE-NVAR M:173 dset: 1 I: 1 5 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN] - regrid: on X - FILENAME : bn_strides.cdf - SUBSET : 5 points (X) - Y : 0 - Z : 1 - T : 1 - 0 0.9 1.87 2.65 3.3 - 1 2 3 4 5 - 1111.00 1118.00 1115.00 1112.00 1119.00 -cancel axis/modulo XUNEVEN - -DELETE UNE-NVAR M:161 dset: 1 I: 1 29 J: 1 1 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:173 dset: 1 I: 1 5 J: 1 1 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:180 dset: 1 I: 1 10 J: 1 1 K: 1 1 L: 1 1 - -! strides applied to more than one axis need special attention in IS_REGRID -LIST/k=1/l=1 UNEVENVAR[i=2:4:2,j=1:3:2] - dealloc dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX031) (AX030) ZAX1_6 TAX1_4 - dealloc dynamic grid (G011) (AX031) (AX030) ZAX1_6 TAX1_4 - allocate dynamic grid (G011) (AX031) (AX030) ZAX1_6 TAX1_4 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 3 K: 1 1 L: 1 1 - allocate dynamic grid (G011) (AX031) (AX030) ZAX1_6 TAX1_4 - strip regrid on X: UNEVENVAR --> (G011) @XACT - rdstride UNE-NVAR C: 8 dset: 1 I: 2 4 J: 1 3 K: 1 1 L: 1 1 - nulrgd UNE-NVAR M:173 dset: 1 I: 1 2 J: 1 2 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:180 dset: 1 I: 2 4 J: 1 3 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX031) (AX030) ZAX1_6 TAX1_4 - VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN] - regrid: on X, on Y - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 points (X-Y) - Z : 1 - T : 1 - 0.3 0.6 - 1 2 - 0 / 1: 1112.00 1114.00 - 0.95 / 2: 1132.00 1134.00 -LIST/k=1/l=1 UNEVENVAR[i=2:6:2,j=1:5:2] - dealloc dynamic grid (G011) (AX031) (AX030) ZAX1_6 TAX1_4 - -DELETE UNE-NVAR M:173 dset: 1 I: 1 2 J: 1 2 K: 1 1 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX031) (AX029) ZAX1_6 TAX1_4 - dealloc dynamic grid (G011) (AX031) (AX029) ZAX1_6 TAX1_4 - allocate dynamic grid (G011) (AX031) (AX029) ZAX1_6 TAX1_4 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 3 K: 1 1 L: 1 1 - allocate dynamic grid (G011) (AX031) (AX029) ZAX1_6 TAX1_4 - strip regrid on X: UNEVENVAR --> (G011) @XACT - rdstride UNE-NVAR C: 8 dset: 1 I: 2 6 J: 1 5 K: 1 1 L: 1 1 - nulrgd UNE-NVAR M:180 dset: 1 I: 1 3 J: 1 3 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:173 dset: 1 I: 2 6 J: 1 5 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX031) (AX029) ZAX1_6 TAX1_4 - VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN] - regrid: on X, on Y - FILENAME : bn_strides.cdf - SUBSET : 3 by 3 points (X-Y) - Z : 1 - T : 1 - 0.3 0.6 0.78 - 1 2 3 - 0 / 1: 1112.00 1114.00 1116.00 - 0.95 / 2: 1132.00 1134.00 1136.00 - 1.4 / 3: 1152.00 1154.00 1156.00 - -! averaging causes bypass of strides -LIST/j=1/k=1/l=1/precision=9 UNEVENVAR[i=2:8:2@ave] - dealloc dynamic grid (G011) (AX031) (AX029) ZAX1_6 TAX1_4 - -DELETE UNE-NVAR M:180 dset: 1 I: 1 3 J: 1 3 K: 1 1 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX031) YUNEVEN ZAX1_6 TAX1_4 - dealloc dynamic grid (G011) (AX031) YUNEVEN ZAX1_6 TAX1_4 - allocate dynamic grid (G011) (AX031) YUNEVEN ZAX1_6 TAX1_4 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - allocate dynamic grid (G011) (AX031) YUNEVEN ZAX1_6 TAX1_4 - strip regrid on X: UNEVENVAR --> (G011) @AVE - reading UNE-NVAR M:180 dset: 1 I: 1 9 J: 1 1 K: 1 1 L: 1 1 - regrid UNE-NVAR M:173 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX031) YUNEVEN ZAX1_6 TAX1_4 - VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN] - regrid: on X@AVE - FILENAME : bn_strides.cdf - SUBSET : 4 points (X) - Y : 0 - Z : 1 - T : 1 - 0 - 1 - 0.3 / 1: 1111.60376 - 0.6 / 2: 1113.79689 - 0.78 / 3: 1115.87072 - 0.9 / 4: 1117.90449 -LIST/j=1/k=1/l=1/precision=9 UNEVENVAR[i=2:8:2] ! for comparison - dealloc dynamic grid (G011) (AX031) YUNEVEN ZAX1_6 TAX1_4 - -DELETE UNE-NVAR M:173 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - dealloc dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - allocate dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - allocate dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - strip regrid on X: UNEVENVAR --> (G011) @XACT - rdstride UNE-NVAR C: 8 dset: 1 I: 2 8 J: 1 1 K: 1 1 L: 1 1 - nulrgd UNE-NVAR M:161 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:173 dset: 1 I: 2 8 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN] - regrid: on X - FILENAME : bn_strides.cdf - SUBSET : 4 points (X) - Y : 0 - Z : 1 - T : 1 - 0 - 1 - 0.3 / 1: 1112.00000 - 0.6 / 2: 1114.00000 - 0.78 / 3: 1116.00000 - 0.9 / 4: 1118.00000 - -! test special logic in tm_world_recur for endpoints of strides on irreg axis -LIST/j=1/k=1/l=1/precision=9 UNEVENVAR[i=1:10:2@ave] - dealloc dynamic grid (G011) (AX029) YUNEVEN ZAX1_6 TAX1_4 - -DELETE UNE-NVAR M:161 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX031) YUNEVEN ZAX1_6 TAX1_4 - dealloc dynamic grid (G011) (AX031) YUNEVEN ZAX1_6 TAX1_4 - allocate dynamic grid (G011) (AX031) YUNEVEN ZAX1_6 TAX1_4 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - allocate dynamic grid (G011) (AX031) YUNEVEN ZAX1_6 TAX1_4 - strip regrid on X: UNEVENVAR --> (G011) @AVE - reading UNE-NVAR M:161 dset: 1 I: 1 10 J: 1 1 K: 1 1 L: 1 1 - regrid UNE-NVAR M:173 dset: 1 I: 1 5 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G011) (AX031) YUNEVEN ZAX1_6 TAX1_4 - VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN] - regrid: on X@AVE - FILENAME : bn_strides.cdf - SUBSET : 5 points (X) - Y : 0 - Z : 1 - T : 1 - 0 - 1 - 0 / 1: 1111.22629 - 0.48 / 2: 1112.70797 - 0.7 / 3: 1114.84240 - 0.85 / 4: 1116.89020 - 0.95 / 5: 1119.13604 - - -! * * * * * MIXED STRIDES and PERMUTATIONS * * * * * - -set region/i=3:6/j=2:4/k=1:2/l=1 - -use/order=yx bn_strides -list bigvar[i=3:9:2] - dealloc dynamic grid (G011) (AX031) YUNEVEN ZAX1_6 TAX1_4 - -DELETE UNE-NVAR M:173 dset: 1 I: 1 5 J: 1 1 K: 1 1 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - dealloc dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - allocate dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - strip regrid on X: BIGVAR --> (G011) @XACT - rdstride BIGVAR C: 7 dset: 1 I: 3 9 J: 2 4 K: 1 2 L: 1 1 - nulrgd BIGVAR M:166 dset: 1 I: 1 4 J: 2 4 K: 1 2 L: 1 1 - -DELETE BIGVAR M:173 dset: 1 I: 3 9 J: 2 4 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - VARIABLE : VAR - regrid: 2 delta on X - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 5 7 9 - 1 2 3 4 - ---- K:1 Z: 1 - 2 / 2: 1123.00 1125.00 1127.00 1129.00 - 3 / 3: 1133.00 1135.00 1137.00 1139.00 - 4 / 4: 1143.00 1145.00 1147.00 1149.00 - ---- K:2 Z: 2 - 2 / 2: 1223.00 1225.00 1227.00 1229.00 - 3 / 3: 1233.00 1235.00 1237.00 1239.00 - 4 / 4: 1243.00 1245.00 1247.00 1249.00 -list bigvar[j=2:6:2] - dealloc dynamic grid (G011) (AX029) YAX1_30 ZAX1_20 TAX1_10 - -DELETE BIGVAR M:166 dset: 1 I: 1 4 J: 2 4 K: 1 2 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) XAX1_40 (AX031) ZAX1_20 TAX1_10 - dealloc dynamic grid (G011) XAX1_40 (AX031) ZAX1_20 TAX1_10 - allocate dynamic grid (G011) XAX1_40 (AX031) ZAX1_20 TAX1_10 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G011) XAX1_40 (AX031) ZAX1_20 TAX1_10 - strip regrid on Y: BIGVAR --> (G011) @XACT - rdstride BIGVAR C: 7 dset: 1 I: 3 6 J: 2 6 K: 1 2 L: 1 1 - nulrgd BIGVAR M:173 dset: 1 I: 3 6 J: 1 3 K: 1 2 L: 1 1 - -DELETE BIGVAR M:166 dset: 1 I: 3 6 J: 2 6 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) XAX1_40 (AX031) ZAX1_20 TAX1_10 - VARIABLE : VAR - regrid: 2 delta on Y - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 4 5 6 - 3 4 5 6 - ---- K:1 Z: 1 - 2 / 1: 1123.00 1124.00 1125.00 1126.00 - 4 / 2: 1143.00 1144.00 1145.00 1146.00 - 6 / 3: 1163.00 1164.00 1165.00 1166.00 - ---- K:2 Z: 2 - 2 / 1: 1223.00 1224.00 1225.00 1226.00 - 4 / 2: 1243.00 1244.00 1245.00 1246.00 - 6 / 3: 1263.00 1264.00 1265.00 1266.00 -list bigvar[i=3:9:2, j=2:6:2, k=1:3:2] - dealloc dynamic grid (G011) XAX1_40 (AX031) ZAX1_20 TAX1_10 - -DELETE BIGVAR M:173 dset: 1 I: 3 6 J: 1 3 K: 1 2 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_10 - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_10 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_10 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_10 - strip regrid on X: BIGVAR --> (G011) @XACT - rdstride BIGVAR C: 7 dset: 1 I: 3 9 J: 2 6 K: 1 3 L: 1 1 - nulrgd BIGVAR M:166 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - -DELETE BIGVAR M:173 dset: 1 I: 3 9 J: 2 6 K: 1 3 L: 1 1 - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_10 - VARIABLE : VAR - regrid: 2 delta on X, 2 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 5 7 9 - 1 2 3 4 - ---- K:1 Z: 1 - 2 / 1: 1123.00 1125.00 1127.00 1129.00 - 4 / 2: 1143.00 1145.00 1147.00 1149.00 - 6 / 3: 1163.00 1165.00 1167.00 1169.00 - ---- K:2 Z: 3 - 2 / 1: 1323.00 1325.00 1327.00 1329.00 - 4 / 2: 1343.00 1345.00 1347.00 1349.00 - 6 / 3: 1363.00 1365.00 1367.00 1369.00 -canc data/all - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_10 - -DELETE BIGVAR M:166 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -DELETE UNE-NVAR M:161 dset: 1 I: 1 10 J: 1 1 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:180 dset: 1 I: 1 9 J: 1 1 K: 1 1 L: 1 1 - -use/order=zyx bn_strides -list bigvar[i=3:9:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) YAX1_30 XAX1_40 TAX1_10 - dealloc dynamic grid (G011) (AX030) YAX1_30 XAX1_40 TAX1_10 - allocate dynamic grid (G011) (AX030) YAX1_30 XAX1_40 TAX1_10 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX030) YAX1_30 XAX1_40 TAX1_10 - strip regrid on X: BIGVAR --> (G011) @XACT - rdstride BIGVAR C: 7 dset: 1 I: 3 9 J: 2 4 K: 1 2 L: 1 1 - nulrgd BIGVAR M:161 dset: 1 I: 1 4 J: 2 4 K: 1 2 L: 1 1 - -DELETE BIGVAR M:180 dset: 1 I: 3 9 J: 2 4 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) (AX030) YAX1_30 XAX1_40 TAX1_10 - VARIABLE : VAR - regrid: 2 delta on X - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 5 7 9 - 1 2 3 4 - ---- K:1 Z: 1 - 2 / 2: 1321.00 1521.00 1721.00 1921.00 - 3 / 3: 1331.00 1531.00 1731.00 1931.00 - 4 / 4: 1341.00 1541.00 1741.00 1941.00 - ---- K:2 Z: 2 - 2 / 2: 1322.00 1522.00 1722.00 1922.00 - 3 / 3: 1332.00 1532.00 1732.00 1932.00 - 4 / 4: 1342.00 1542.00 1742.00 1942.00 -list bigvar[j=2:6:2] - dealloc dynamic grid (G011) (AX030) YAX1_30 XAX1_40 TAX1_10 - -DELETE BIGVAR M:161 dset: 1 I: 1 4 J: 2 4 K: 1 2 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) ZAX1_20 (AX032) XAX1_40 TAX1_10 - dealloc dynamic grid (G011) ZAX1_20 (AX032) XAX1_40 TAX1_10 - allocate dynamic grid (G011) ZAX1_20 (AX032) XAX1_40 TAX1_10 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G011) ZAX1_20 (AX032) XAX1_40 TAX1_10 - strip regrid on Y: BIGVAR --> (G011) @XACT - rdstride BIGVAR C: 7 dset: 1 I: 3 6 J: 2 6 K: 1 2 L: 1 1 - nulrgd BIGVAR M:180 dset: 1 I: 3 6 J: 1 3 K: 1 2 L: 1 1 - -DELETE BIGVAR M:161 dset: 1 I: 3 6 J: 2 6 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) ZAX1_20 (AX032) XAX1_40 TAX1_10 - VARIABLE : VAR - regrid: 2 delta on Y - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 4 5 6 - 3 4 5 6 - ---- K:1 Z: 1 - 2 / 1: 1321.00 1421.00 1521.00 1621.00 - 4 / 2: 1341.00 1441.00 1541.00 1641.00 - 6 / 3: 1361.00 1461.00 1561.00 1661.00 - ---- K:2 Z: 2 - 2 / 1: 1322.00 1422.00 1522.00 1622.00 - 4 / 2: 1342.00 1442.00 1542.00 1642.00 - 6 / 3: 1362.00 1462.00 1562.00 1662.00 -list bigvar[i=3:9:2, j=2:6:2, k=1:3:2] - dealloc dynamic grid (G011) ZAX1_20 (AX032) XAX1_40 TAX1_10 - -DELETE BIGVAR M:180 dset: 1 I: 3 6 J: 1 3 K: 1 2 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) TAX1_10 - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) TAX1_10 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) TAX1_10 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) TAX1_10 - strip regrid on X: BIGVAR --> (G011) @XACT - rdstride BIGVAR C: 7 dset: 1 I: 3 9 J: 2 6 K: 1 3 L: 1 1 - nulrgd BIGVAR M:161 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - -DELETE BIGVAR M:180 dset: 1 I: 3 9 J: 2 6 K: 1 3 L: 1 1 - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) TAX1_10 - VARIABLE : VAR - regrid: 2 delta on X, 2 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 5 7 9 - 1 2 3 4 - ---- K:1 Z: 1 - 2 / 1: 1321.00 1521.00 1721.00 1921.00 - 4 / 2: 1341.00 1541.00 1741.00 1941.00 - 6 / 3: 1361.00 1561.00 1761.00 1961.00 - ---- K:2 Z: 3 - 2 / 1: 1323.00 1523.00 1723.00 1923.00 - 4 / 2: 1343.00 1543.00 1743.00 1943.00 - 6 / 3: 1363.00 1563.00 1763.00 1963.00 -canc data/all - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) TAX1_10 - -DELETE BIGVAR M:161 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -use/order=zxy bn_strides -list bigvar[i=3:9:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) XAX1_40 YAX1_30 TAX1_10 - dealloc dynamic grid (G011) (AX029) XAX1_40 YAX1_30 TAX1_10 - allocate dynamic grid (G011) (AX029) XAX1_40 YAX1_30 TAX1_10 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX029) XAX1_40 YAX1_30 TAX1_10 - strip regrid on X: BIGVAR --> (G011) @XACT - rdstride BIGVAR C: 7 dset: 1 I: 3 9 J: 2 4 K: 1 2 L: 1 1 - nulrgd BIGVAR M:180 dset: 1 I: 1 4 J: 2 4 K: 1 2 L: 1 1 - -DELETE BIGVAR M:161 dset: 1 I: 3 9 J: 2 4 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) (AX029) XAX1_40 YAX1_30 TAX1_10 - VARIABLE : VAR - regrid: 2 delta on X - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 5 7 9 - 1 2 3 4 - ---- K:1 Z: 1 - 2 / 2: 1312.00 1512.00 1712.00 1912.00 - 3 / 3: 1313.00 1513.00 1713.00 1913.00 - 4 / 4: 1314.00 1514.00 1714.00 1914.00 - ---- K:2 Z: 2 - 2 / 2: 1322.00 1522.00 1722.00 1922.00 - 3 / 3: 1323.00 1523.00 1723.00 1923.00 - 4 / 4: 1324.00 1524.00 1724.00 1924.00 -list bigvar[j=2:6:2] - dealloc dynamic grid (G011) (AX029) XAX1_40 YAX1_30 TAX1_10 - -DELETE BIGVAR M:180 dset: 1 I: 1 4 J: 2 4 K: 1 2 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) ZAX1_20 (AX031) YAX1_30 TAX1_10 - dealloc dynamic grid (G011) ZAX1_20 (AX031) YAX1_30 TAX1_10 - allocate dynamic grid (G011) ZAX1_20 (AX031) YAX1_30 TAX1_10 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G011) ZAX1_20 (AX031) YAX1_30 TAX1_10 - strip regrid on Y: BIGVAR --> (G011) @XACT - rdstride BIGVAR C: 7 dset: 1 I: 3 6 J: 2 6 K: 1 2 L: 1 1 - nulrgd BIGVAR M:161 dset: 1 I: 3 6 J: 1 3 K: 1 2 L: 1 1 - -DELETE BIGVAR M:180 dset: 1 I: 3 6 J: 2 6 K: 1 2 L: 1 1 - dealloc dynamic grid (G011) ZAX1_20 (AX031) YAX1_30 TAX1_10 - VARIABLE : VAR - regrid: 2 delta on Y - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 4 5 6 - 3 4 5 6 - ---- K:1 Z: 1 - 2 / 1: 1312.00 1412.00 1512.00 1612.00 - 4 / 2: 1314.00 1414.00 1514.00 1614.00 - 6 / 3: 1316.00 1416.00 1516.00 1616.00 - ---- K:2 Z: 2 - 2 / 1: 1322.00 1422.00 1522.00 1622.00 - 4 / 2: 1324.00 1424.00 1524.00 1624.00 - 6 / 3: 1326.00 1426.00 1526.00 1626.00 -list bigvar[i=3:9:2, j=2:6:2, k=1:3:2] - dealloc dynamic grid (G011) ZAX1_20 (AX031) YAX1_30 TAX1_10 - -DELETE BIGVAR M:161 dset: 1 I: 3 6 J: 1 3 K: 1 2 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_10 - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_10 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_10 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_10 - strip regrid on X: BIGVAR --> (G011) @XACT - rdstride BIGVAR C: 7 dset: 1 I: 3 9 J: 2 6 K: 1 3 L: 1 1 - nulrgd BIGVAR M:180 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - -DELETE BIGVAR M:161 dset: 1 I: 3 9 J: 2 6 K: 1 3 L: 1 1 - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_10 - VARIABLE : VAR - regrid: 2 delta on X, 2 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 5 7 9 - 1 2 3 4 - ---- K:1 Z: 1 - 2 / 1: 1312.00 1512.00 1712.00 1912.00 - 4 / 2: 1314.00 1514.00 1714.00 1914.00 - 6 / 3: 1316.00 1516.00 1716.00 1916.00 - ---- K:2 Z: 3 - 2 / 1: 1332.00 1532.00 1732.00 1932.00 - 4 / 2: 1334.00 1534.00 1734.00 1934.00 - 6 / 3: 1336.00 1536.00 1736.00 1936.00 -canc data/all - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_10 - -DELETE BIGVAR M:180 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -! now with xytvar -cancel region -set region/i=1:4/j=1:3/l=1:2 -use bn_strides -show grid xytvar - getgrid EX#1 C: 6 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC5 XLON YLAT NORMAL TTIME - GRID GPC5 - name axis # pts start end subset - XLON LONGITUDE 40mr 141E 180E full - YLAT LATITUDE 30 r 1N 30N full - normal Z - TTIME TIME 20 r 01-JAN-1995 00:00 20-JAN-1995 00:00 full -list xytvar[i=1:7:2] - dealloc dynamic grid GPC5 XLON YLAT NORMAL TTIME - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) YLAT NORMAL TTIME - dealloc dynamic grid (G011) (AX030) YLAT NORMAL TTIME - allocate dynamic grid (G011) (AX030) YLAT NORMAL TTIME - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) (AX030) YLAT NORMAL TTIME - strip regrid on X: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 7 J: 1 3 K: -999 -999 L: 1 2 - nulrgd XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:180 dset: 1 I: 1 7 J: 1 3 K: -999 -999 L: 1 2 - dealloc dynamic grid (G011) (AX030) YLAT NORMAL TTIME - VARIABLE : L*1000 + J*10 + I - regrid: 2 deg on X - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (LONGITUDE-LATITUDE-TIME) - 141E 143E 145E 147E - 1 2 3 4 - ---- L:1 T: 01-JAN-1995 00:00 - 3N / 3: 1031.00 1033.00 1035.00 1037.00 - 2N / 2: 1021.00 1023.00 1025.00 1027.00 - 1N / 1: 1011.00 1013.00 1015.00 1017.00 - ---- L:2 T: 02-JAN-1995 00:00 - 3N / 3: 2031.00 2033.00 2035.00 2037.00 - 2N / 2: 2021.00 2023.00 2025.00 2027.00 - 1N / 1: 2011.00 2013.00 2015.00 2017.00 -list xytvar[j=2:6:2] - dealloc dynamic grid (G011) (AX030) YLAT NORMAL TTIME - -DELETE XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) XLON (AX032) NORMAL TTIME - dealloc dynamic grid (G011) XLON (AX032) NORMAL TTIME - allocate dynamic grid (G011) XLON (AX032) NORMAL TTIME - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) XLON (AX032) NORMAL TTIME - strip regrid on Y: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 4 J: 2 6 K: -999 -999 L: 1 2 - nulrgd XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:161 dset: 1 I: 1 4 J: 2 6 K: -999 -999 L: 1 2 - dealloc dynamic grid (G011) XLON (AX032) NORMAL TTIME - VARIABLE : L*1000 + J*10 + I - regrid: 2 deg on Y - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (LONGITUDE-LATITUDE-TIME) - 141E 142E 143E 144E - 1 2 3 4 - ---- L:1 T: 01-JAN-1995 00:00 - 6N / 3: 1061.00 1062.00 1063.00 1064.00 - 4N / 2: 1041.00 1042.00 1043.00 1044.00 - 2N / 1: 1021.00 1022.00 1023.00 1024.00 - ---- L:2 T: 02-JAN-1995 00:00 - 6N / 3: 2061.00 2062.00 2063.00 2064.00 - 4N / 2: 2041.00 2042.00 2043.00 2044.00 - 2N / 1: 2021.00 2022.00 2023.00 2024.00 -list xytvar[i=1:7:2,j=2:6:2,l=3:5:2] - dealloc dynamic grid (G011) XLON (AX032) NORMAL TTIME - -DELETE XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) (AX029) NORMAL (AX031) - dealloc dynamic grid (G011) (AX030) (AX029) NORMAL (AX031) - allocate dynamic grid (G011) (AX030) (AX029) NORMAL (AX031) - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) (AX030) (AX029) NORMAL (AX031) - strip regrid on X: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 7 J: 2 6 K: -999 -999 L: 3 5 - nulrgd XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:180 dset: 1 I: 1 7 J: 2 6 K: -999 -999 L: 3 5 - dealloc dynamic grid (G011) (AX030) (AX029) NORMAL (AX031) - VARIABLE : L*1000 + J*10 + I - regrid: 2 deg on X, 2 deg on Y, 2 day on T - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (LONGITUDE-LATITUDE-TIME) - 141E 143E 145E 147E - 1 2 3 4 - ---- L:1 T: 03-JAN-1995 00:00 - 6N / 3: 3061.00 3063.00 3065.00 3067.00 - 4N / 2: 3041.00 3043.00 3045.00 3047.00 - 2N / 1: 3021.00 3023.00 3025.00 3027.00 - ---- L:2 T: 05-JAN-1995 00:00 - 6N / 3: 5061.00 5063.00 5065.00 5067.00 - 4N / 2: 5041.00 5043.00 5045.00 5047.00 - 2N / 1: 5021.00 5023.00 5025.00 5027.00 -canc data/all - dealloc dynamic grid (G011) (AX030) (AX029) NORMAL (AX031) - -DELETE XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - canceling dset ./data/bn_strides.cdf - -use/order=yx bn_strides -show grid xytvar - getgrid EX#1 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC5 YLAT XLON NORMAL TTIME - GRID GPC5 - name axis # pts start end subset - YLAT X (degrees_north) 30 r 1 30 full - XLON Y (degrees_east) 40mr 141 180 full - normal Z - TTIME TIME 20 r 01-JAN-1995 00:00 20-JAN-1995 00:00 full -list xytvar[i=1:7:2] - dealloc dynamic grid GPC5 YLAT XLON NORMAL TTIME - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) XLON NORMAL TTIME - dealloc dynamic grid (G011) (AX029) XLON NORMAL TTIME - allocate dynamic grid (G011) (AX029) XLON NORMAL TTIME - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) (AX029) XLON NORMAL TTIME - strip regrid on X: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 7 J: 1 3 K: -999 -999 L: 1 2 - nulrgd XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:161 dset: 1 I: 1 7 J: 1 3 K: -999 -999 L: 1 2 - dealloc dynamic grid (G011) (AX029) XLON NORMAL TTIME - VARIABLE : L*1000 + J*10 + I - regrid: 2 deg on X - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (degrees_north)-Y (degrees_east)-TIME) - 1 3 5 7 - 1 2 3 4 - ---- L:1 T: 01-JAN-1995 00:00 - 141 / 1: 1011.00 1031.00 1051.00 1071.00 - 142 / 2: 1012.00 1032.00 1052.00 1072.00 - 143 / 3: 1013.00 1033.00 1053.00 1073.00 - ---- L:2 T: 02-JAN-1995 00:00 - 141 / 1: 2011.00 2031.00 2051.00 2071.00 - 142 / 2: 2012.00 2032.00 2052.00 2072.00 - 143 / 3: 2013.00 2033.00 2053.00 2073.00 -list xytvar[j=2:6:2] - dealloc dynamic grid (G011) (AX029) XLON NORMAL TTIME - -DELETE XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) YLAT (AX031) NORMAL TTIME - dealloc dynamic grid (G011) YLAT (AX031) NORMAL TTIME - allocate dynamic grid (G011) YLAT (AX031) NORMAL TTIME - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) YLAT (AX031) NORMAL TTIME - strip regrid on Y: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 4 J: 2 6 K: -999 -999 L: 1 2 - nulrgd XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:180 dset: 1 I: 1 4 J: 2 6 K: -999 -999 L: 1 2 - dealloc dynamic grid (G011) YLAT (AX031) NORMAL TTIME - VARIABLE : L*1000 + J*10 + I - regrid: 2 deg on Y - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (degrees_north)-Y (degrees_east)-TIME) - 1 2 3 4 - 1 2 3 4 - ---- L:1 T: 01-JAN-1995 00:00 - 142 / 1: 1012.00 1022.00 1032.00 1042.00 - 144 / 2: 1014.00 1024.00 1034.00 1044.00 - 146 / 3: 1016.00 1026.00 1036.00 1046.00 - ---- L:2 T: 02-JAN-1995 00:00 - 142 / 1: 2012.00 2022.00 2032.00 2042.00 - 144 / 2: 2014.00 2024.00 2034.00 2044.00 - 146 / 3: 2016.00 2026.00 2036.00 2046.00 -list xytvar[i=1:7:2,j=2:6:2,l=3:5:2] - dealloc dynamic grid (G011) YLAT (AX031) NORMAL TTIME - -DELETE XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) NORMAL (AX032) - dealloc dynamic grid (G011) (AX029) (AX030) NORMAL (AX032) - allocate dynamic grid (G011) (AX029) (AX030) NORMAL (AX032) - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) (AX029) (AX030) NORMAL (AX032) - strip regrid on X: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 7 J: 2 6 K: -999 -999 L: 3 5 - nulrgd XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:161 dset: 1 I: 1 7 J: 2 6 K: -999 -999 L: 3 5 - dealloc dynamic grid (G011) (AX029) (AX030) NORMAL (AX032) - VARIABLE : L*1000 + J*10 + I - regrid: 2 deg on X, 2 deg on Y, 2 day on T - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (degrees_north)-Y (degrees_east)-TIME) - 1 3 5 7 - 1 2 3 4 - ---- L:1 T: 03-JAN-1995 00:00 - 142 / 1: 3012.00 3032.00 3052.00 3072.00 - 144 / 2: 3014.00 3034.00 3054.00 3074.00 - 146 / 3: 3016.00 3036.00 3056.00 3076.00 - ---- L:2 T: 05-JAN-1995 00:00 - 142 / 1: 5012.00 5032.00 5052.00 5072.00 - 144 / 2: 5014.00 5034.00 5054.00 5074.00 - 146 / 3: 5016.00 5036.00 5056.00 5076.00 -canc data/all - dealloc dynamic grid (G011) (AX029) (AX030) NORMAL (AX032) - -DELETE XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - canceling dset ./data/bn_strides.cdf - -use/order=tyx bn_strides -show grid xytvar - getgrid EX#1 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC5 TTIME YLAT NORMAL XLON - GRID GPC5 - name axis # pts start end subset - TTIME X (DAYS) 20 r 34319 34338 full - YLAT LATITUDE 30 r 1N 30N full - normal Z - XLON T (degrees_east) 40mr 141 180 full -list xytvar[i=1:7:2] - dealloc dynamic grid GPC5 TTIME YLAT NORMAL XLON - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) YLAT NORMAL XLON - dealloc dynamic grid (G011) (AX030) YLAT NORMAL XLON - allocate dynamic grid (G011) (AX030) YLAT NORMAL XLON - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) (AX030) YLAT NORMAL XLON - strip regrid on X: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 7 J: 1 3 K: -999 -999 L: 1 2 - nulrgd XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:180 dset: 1 I: 1 7 J: 1 3 K: -999 -999 L: 1 2 - dealloc dynamic grid (G011) (AX030) YLAT NORMAL XLON - VARIABLE : L*1000 + J*10 + I - regrid: 2 day on X - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-LATITUDE-T (degrees_east)) - 34319 34321 34323 34325 - 1 2 3 4 - ---- L:1 T: 141 - 3N / 3: 1031.00 3031.00 5031.00 7031.00 - 2N / 2: 1021.00 3021.00 5021.00 7021.00 - 1N / 1: 1011.00 3011.00 5011.00 7011.00 - ---- L:2 T: 142 - 3N / 3: 1032.00 3032.00 5032.00 7032.00 - 2N / 2: 1022.00 3022.00 5022.00 7022.00 - 1N / 1: 1012.00 3012.00 5012.00 7012.00 -list xytvar[j=2:6:2] - dealloc dynamic grid (G011) (AX030) YLAT NORMAL XLON - -DELETE XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) TTIME (AX032) NORMAL XLON - dealloc dynamic grid (G011) TTIME (AX032) NORMAL XLON - allocate dynamic grid (G011) TTIME (AX032) NORMAL XLON - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) TTIME (AX032) NORMAL XLON - strip regrid on Y: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 4 J: 2 6 K: -999 -999 L: 1 2 - nulrgd XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:161 dset: 1 I: 1 4 J: 2 6 K: -999 -999 L: 1 2 - dealloc dynamic grid (G011) TTIME (AX032) NORMAL XLON - VARIABLE : L*1000 + J*10 + I - regrid: 2 deg on Y - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-LATITUDE-T (degrees_east)) - 34319 34320 34321 34322 - 1 2 3 4 - ---- L:1 T: 141 - 6N / 3: 1061.00 2061.00 3061.00 4061.00 - 4N / 2: 1041.00 2041.00 3041.00 4041.00 - 2N / 1: 1021.00 2021.00 3021.00 4021.00 - ---- L:2 T: 142 - 6N / 3: 1062.00 2062.00 3062.00 4062.00 - 4N / 2: 1042.00 2042.00 3042.00 4042.00 - 2N / 1: 1022.00 2022.00 3022.00 4022.00 -list xytvar[i=1:7:2,j=2:6:2,l=3:5:2] - dealloc dynamic grid (G011) TTIME (AX032) NORMAL XLON - -DELETE XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) (AX029) NORMAL (AX031) - dealloc dynamic grid (G011) (AX030) (AX029) NORMAL (AX031) - allocate dynamic grid (G011) (AX030) (AX029) NORMAL (AX031) - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) (AX030) (AX029) NORMAL (AX031) - strip regrid on X: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 7 J: 2 6 K: -999 -999 L: 3 5 - nulrgd XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:180 dset: 1 I: 1 7 J: 2 6 K: -999 -999 L: 3 5 - dealloc dynamic grid (G011) (AX030) (AX029) NORMAL (AX031) - VARIABLE : L*1000 + J*10 + I - regrid: 2 day on X, 2 deg on Y, 2 deg on T - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-LATITUDE-T (degrees_east)) - 34319 34321 34323 34325 - 1 2 3 4 - ---- L:1 T: 143 - 6N / 3: 1063.00 3063.00 5063.00 7063.00 - 4N / 2: 1043.00 3043.00 5043.00 7043.00 - 2N / 1: 1023.00 3023.00 5023.00 7023.00 - ---- L:2 T: 145 - 6N / 3: 1065.00 3065.00 5065.00 7065.00 - 4N / 2: 1045.00 3045.00 5045.00 7045.00 - 2N / 1: 1025.00 3025.00 5025.00 7025.00 -canc data/all - dealloc dynamic grid (G011) (AX030) (AX029) NORMAL (AX031) - -DELETE XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - canceling dset ./data/bn_strides.cdf - -use/order=txy bn_strides -show grid xytvar - getgrid EX#1 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC5 TTIME XLON NORMAL YLAT - GRID GPC5 - name axis # pts start end subset - TTIME X (DAYS) 20 r 34319 34338 full - XLON Y (degrees_east) 40mr 141 180 full - normal Z - YLAT T (degrees_north) 30 r 1 30 full -list xytvar[i=1:7:2] - dealloc dynamic grid GPC5 TTIME XLON NORMAL YLAT - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) XLON NORMAL YLAT - dealloc dynamic grid (G011) (AX029) XLON NORMAL YLAT - allocate dynamic grid (G011) (AX029) XLON NORMAL YLAT - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) (AX029) XLON NORMAL YLAT - strip regrid on X: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 7 J: 1 3 K: -999 -999 L: 1 2 - nulrgd XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:161 dset: 1 I: 1 7 J: 1 3 K: -999 -999 L: 1 2 - dealloc dynamic grid (G011) (AX029) XLON NORMAL YLAT - VARIABLE : L*1000 + J*10 + I - regrid: 2 day on X - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-Y (degrees_east)-T (degrees_north)) - 34319 34321 34323 34325 - 1 2 3 4 - ---- L:1 T: 1 - 141 / 1: 1011.00 3011.00 5011.00 7011.00 - 142 / 2: 1012.00 3012.00 5012.00 7012.00 - 143 / 3: 1013.00 3013.00 5013.00 7013.00 - ---- L:2 T: 2 - 141 / 1: 1021.00 3021.00 5021.00 7021.00 - 142 / 2: 1022.00 3022.00 5022.00 7022.00 - 143 / 3: 1023.00 3023.00 5023.00 7023.00 -list xytvar[j=2:6:2] - dealloc dynamic grid (G011) (AX029) XLON NORMAL YLAT - -DELETE XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) TTIME (AX031) NORMAL YLAT - dealloc dynamic grid (G011) TTIME (AX031) NORMAL YLAT - allocate dynamic grid (G011) TTIME (AX031) NORMAL YLAT - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) TTIME (AX031) NORMAL YLAT - strip regrid on Y: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 4 J: 2 6 K: -999 -999 L: 1 2 - nulrgd XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:180 dset: 1 I: 1 4 J: 2 6 K: -999 -999 L: 1 2 - dealloc dynamic grid (G011) TTIME (AX031) NORMAL YLAT - VARIABLE : L*1000 + J*10 + I - regrid: 2 deg on Y - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-Y (degrees_east)-T (degrees_north)) - 34319 34320 34321 34322 - 1 2 3 4 - ---- L:1 T: 1 - 142 / 1: 1012.00 2012.00 3012.00 4012.00 - 144 / 2: 1014.00 2014.00 3014.00 4014.00 - 146 / 3: 1016.00 2016.00 3016.00 4016.00 - ---- L:2 T: 2 - 142 / 1: 1022.00 2022.00 3022.00 4022.00 - 144 / 2: 1024.00 2024.00 3024.00 4024.00 - 146 / 3: 1026.00 2026.00 3026.00 4026.00 -list xytvar[i=1:7:2,j=2:6:2,l=3:5:2] - dealloc dynamic grid (G011) TTIME (AX031) NORMAL YLAT - -DELETE XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) NORMAL (AX032) - dealloc dynamic grid (G011) (AX029) (AX030) NORMAL (AX032) - allocate dynamic grid (G011) (AX029) (AX030) NORMAL (AX032) - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) (AX029) (AX030) NORMAL (AX032) - strip regrid on X: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 7 J: 2 6 K: -999 -999 L: 3 5 - nulrgd XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:161 dset: 1 I: 1 7 J: 2 6 K: -999 -999 L: 3 5 - dealloc dynamic grid (G011) (AX029) (AX030) NORMAL (AX032) - VARIABLE : L*1000 + J*10 + I - regrid: 2 day on X, 2 deg on Y, 2 deg on T - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-Y (degrees_east)-T (degrees_north)) - 34319 34321 34323 34325 - 1 2 3 4 - ---- L:1 T: 3 - 142 / 1: 1032.00 3032.00 5032.00 7032.00 - 144 / 2: 1034.00 3034.00 5034.00 7034.00 - 146 / 3: 1036.00 3036.00 5036.00 7036.00 - ---- L:2 T: 5 - 142 / 1: 1052.00 3052.00 5052.00 7052.00 - 144 / 2: 1054.00 3054.00 5054.00 7054.00 - 146 / 3: 1056.00 3056.00 5056.00 7056.00 -canc data/all - dealloc dynamic grid (G011) (AX029) (AX030) NORMAL (AX032) - -DELETE XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - canceling dset ./data/bn_strides.cdf - -! map into Z instead of T -use/order=zxy bn_strides -show grid xytvar - getgrid EX#1 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC5 TTIME XLON YLAT NORMAL - GRID GPC5 - name axis # pts start end subset - TTIME X (DAYS) 20 r 34319 34338 full - XLON Y (degrees_east) 40mr 141 180 full - YLAT Z (degrees_north) 30 r 1 30 full - normal T -list/k=1:2 xytvar[i=1:7:2] - dealloc dynamic grid GPC5 TTIME XLON YLAT NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) XLON YLAT NORMAL - dealloc dynamic grid (G011) (AX030) XLON YLAT NORMAL - allocate dynamic grid (G011) (AX030) XLON YLAT NORMAL - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 2 - allocate dynamic grid (G011) (AX030) XLON YLAT NORMAL - strip regrid on X: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 8 dset: 1 I: 1 7 J: 1 3 K: 1 2 L: -999 -999 - nulrgd XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: -999 -999 - -DELETE XYTVAR M:180 dset: 1 I: 1 7 J: 1 3 K: 1 2 L: -999 -999 - dealloc dynamic grid (G011) (AX030) XLON YLAT NORMAL - VARIABLE : L*1000 + J*10 + I - regrid: 2 day on X - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-Y (degrees_east)-Z (degrees_north)) - 34319 34321 34323 34325 - 1 2 3 4 - ---- K:1 Z: 1 - 141 / 1: 1011.00 3011.00 5011.00 7011.00 - 142 / 2: 1012.00 3012.00 5012.00 7012.00 - 143 / 3: 1013.00 3013.00 5013.00 7013.00 - ---- K:2 Z: 2 - 141 / 1: 1021.00 3021.00 5021.00 7021.00 - 142 / 2: 1022.00 3022.00 5022.00 7022.00 - 143 / 3: 1023.00 3023.00 5023.00 7023.00 -list/k=1:2 xytvar[j=2:6:2] - dealloc dynamic grid (G011) (AX030) XLON YLAT NORMAL - -DELETE XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: -999 -999 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) TTIME (AX032) YLAT NORMAL - dealloc dynamic grid (G011) TTIME (AX032) YLAT NORMAL - allocate dynamic grid (G011) TTIME (AX032) YLAT NORMAL - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 2 - allocate dynamic grid (G011) TTIME (AX032) YLAT NORMAL - strip regrid on Y: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 8 dset: 1 I: 1 4 J: 2 6 K: 1 2 L: -999 -999 - nulrgd XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: -999 -999 - -DELETE XYTVAR M:161 dset: 1 I: 1 4 J: 2 6 K: 1 2 L: -999 -999 - dealloc dynamic grid (G011) TTIME (AX032) YLAT NORMAL - VARIABLE : L*1000 + J*10 + I - regrid: 2 deg on Y - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-Y (degrees_east)-Z (degrees_north)) - 34319 34320 34321 34322 - 1 2 3 4 - ---- K:1 Z: 1 - 142 / 1: 1012.00 2012.00 3012.00 4012.00 - 144 / 2: 1014.00 2014.00 3014.00 4014.00 - 146 / 3: 1016.00 2016.00 3016.00 4016.00 - ---- K:2 Z: 2 - 142 / 1: 1022.00 2022.00 3022.00 4022.00 - 144 / 2: 1024.00 2024.00 3024.00 4024.00 - 146 / 3: 1026.00 2026.00 3026.00 4026.00 -list xytvar[i=1:7:2,j=2:6:2,k=3:5:2] - dealloc dynamic grid (G011) TTIME (AX032) YLAT NORMAL - -DELETE XYTVAR M:180 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: -999 -999 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) NORMAL - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) NORMAL - allocate dynamic grid (G011) (AX030) (AX029) (AX031) NORMAL - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) NORMAL - strip regrid on X: XYTVAR --> (G011) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 7 J: 2 6 K: 3 5 L: -999 -999 - nulrgd XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: -999 -999 - -DELETE XYTVAR M:180 dset: 1 I: 1 7 J: 2 6 K: 3 5 L: -999 -999 - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) NORMAL - VARIABLE : L*1000 + J*10 + I - regrid: 2 day on X, 2 deg on Y, 2 deg on Z - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-Y (degrees_east)-Z (degrees_north)) - 34319 34321 34323 34325 - 1 2 3 4 - ---- K:1 Z: 3 - 142 / 1: 1032.00 3032.00 5032.00 7032.00 - 144 / 2: 1034.00 3034.00 5034.00 7034.00 - 146 / 3: 1036.00 3036.00 5036.00 7036.00 - ---- K:2 Z: 5 - 142 / 1: 1052.00 3052.00 5052.00 7052.00 - 144 / 2: 1054.00 3054.00 5054.00 7054.00 - 146 / 3: 1056.00 3056.00 5056.00 7056.00 -canc data/all - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) NORMAL - -DELETE XYTVAR M:161 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: -999 -999 - canceling dset ./data/bn_strides.cdf - - -! * * * * * MIXED STRIDES, PERMUTATIONS and REVERSALS * * * * * -! to evaluate the output remember -! 1) the axis lengths on disk are 9,8,7,6 for X,Y,Z,T, respectively -! 2) the negatives apply to the axis in memory (after permutation) -! Thus, with /ORDER=y-x we expect the 2nd disk axis (the 10's place) to -! be reversed and the values 1:5:4 to be replaced by 9-(1:5:4) => 8:4:4 - -! Note that the logic of the /ORDER syntax when BOTH permutations and -! reversals are aplied would be more natural if the reversal were applied -! BEFORE the permutation. This should occur in routine TM_AXIS_ORDER. -! However, the logic changes needed were messay compared to the rare -! usage of complex combinations of reversals and permutations, so it was -! left as-is. - -cancel region; set region/l=1 - -! reference output -use/order=yx bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_6 - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_6 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_6 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_6 - strip regrid on X: MIDVAR --> (G011) @XACT - rdstride MIDVAR C: 7 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:180 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:161 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_6 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 1312.00 1352.00 - 5 / 2: 1315.00 1355.00 - ---- K:2 Z: 5 - 2 / 1: 1512.00 1552.00 - 5 / 2: 1515.00 1555.00 -canc data/all - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_6 - -DELETE MIDVAR M:180 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -use/order=-yx bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) TAX1_6 - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) TAX1_6 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) TAX1_6 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) TAX1_6 - strip regrid on X: MIDVAR --> (G011) @XACT - strip reversing MIDVAR on Y axis: 2 5 dset: 1 - rdstride MIDVAR C: 8 dset: 1 I: 1 5 J: 5 8 K: 3 5 L: 1 1 - doing reversing MIDVAR on Y axis: 2 5 dset: 1 - -DELETE MIDVAR M:180 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:180 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:161 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) TAX1_6 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 1318.00 1358.00 - 5 / 2: 1315.00 1355.00 - ---- K:2 Z: 5 - 2 / 1: 1518.00 1558.00 - 5 / 2: 1515.00 1555.00 -canc data/all - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) TAX1_6 - -DELETE MIDVAR M:180 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -use/order=y-x bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_6 - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_6 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_6 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_6 - strip regrid on X: MIDVAR --> (G011) @XACT - strip reversing MIDVAR on X axis: 1 5 dset: 1 - rdstride MIDVAR C: 8 dset: 1 I: 4 8 J: 2 5 K: 3 5 L: 1 1 - doing reversing MIDVAR on X axis: 1 5 dset: 1 - -DELETE MIDVAR M:180 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:180 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:161 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_6 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 1382.00 1342.00 - 5 / 2: 1385.00 1345.00 - ---- K:2 Z: 5 - 2 / 1: 1582.00 1542.00 - 5 / 2: 1585.00 1545.00 -canc data/all - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) TAX1_6 - -DELETE MIDVAR M:180 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -! reference output -use/order=tyx bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) ZAX1_7 - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) ZAX1_7 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) ZAX1_7 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) ZAX1_7 - strip regrid on X: MIDVAR --> (G011) @XACT - rdstride MIDVAR C: 7 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:161 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:180 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) ZAX1_7 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 1123.00 5123.00 - 5 / 2: 1153.00 5153.00 - ---- K:2 Z: 5 - 2 / 1: 1125.00 5125.00 - 5 / 2: 1155.00 5155.00 -canc data/all - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) ZAX1_7 - -DELETE MIDVAR M:161 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -! note the reversal on axes 1,2 and 3 (X,Y,Z in memory -- NOT T) -use/order=-t-y-x bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) ZAX1_7 - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) ZAX1_7 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) ZAX1_7 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) ZAX1_7 - strip regrid on X: MIDVAR --> (G011) @XACT - strip reversing MIDVAR on X axis: 1 5 dset: 1 - rdstride MIDVAR C: 8 dset: 1 I: 2 6 J: 4 7 K: 3 5 L: 7 7 - doing reversing MIDVAR on X axis: 1 5 dset: 1 - -DELETE MIDVAR M:161 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:161 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:180 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) ZAX1_7 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 6773.00 2773.00 - 5 / 2: 6743.00 2743.00 - ---- K:2 Z: 5 - 2 / 1: 6775.00 2775.00 - 5 / 2: 6745.00 2745.00 -canc data/all - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) ZAX1_7 - -DELETE MIDVAR M:161 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -! reference output -use/order=txy bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) ZAX1_7 - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) ZAX1_7 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) ZAX1_7 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G011) (AX030) (AX029) (AX031) ZAX1_7 - strip regrid on X: MIDVAR --> (G011) @XACT - rdstride MIDVAR C: 7 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:180 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:161 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) ZAX1_7 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 1132.00 5132.00 - 5 / 2: 1135.00 5135.00 - ---- K:2 Z: 5 - 2 / 1: 1152.00 5152.00 - 5 / 2: 1155.00 5155.00 -canc data/all - dealloc dynamic grid (G011) (AX030) (AX029) (AX031) ZAX1_7 - -DELETE MIDVAR M:180 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -use/order=-t-x-y bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) ZAX1_7 - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) ZAX1_7 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) ZAX1_7 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G011) (AX029) (AX030) (AX032) ZAX1_7 - strip regrid on X: MIDVAR --> (G011) @XACT - strip reversing MIDVAR on Y axis: 2 5 dset: 1 - rdstride MIDVAR C: 8 dset: 1 I: 2 6 J: 5 8 K: 3 5 L: 7 7 - doing reversing MIDVAR on Y axis: 2 5 dset: 1 - -DELETE MIDVAR M:180 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:180 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:161 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) ZAX1_7 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 6738.00 2738.00 - 5 / 2: 6735.00 2735.00 - ---- K:2 Z: 5 - 2 / 1: 6758.00 2758.00 - 5 / 2: 6755.00 2755.00 -canc data/all - dealloc dynamic grid (G011) (AX029) (AX030) (AX032) ZAX1_7 - -DELETE MIDVAR M:180 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -GO bn_reset bn_non_COARDS_netCDF -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_non_COARDS_netCDF -GO bn_non_COARDS_netCDF ! non-standard netCDF files -! bn_non_COARDS_netCDF.jnl -! *sh* 3/99 -! *sh* 6/00 -- added true scalar variable, TRUE_SCALAR - -! test robust treatment of non-standard netCDF files - -use non_COARDS - -show data - currently SET data sets: - 1> ./data/non_COARDS.cdf (default) - name title I J K L - UNORDERED_AXIS - disordered axis 1:5 ... ... ... - (invalid coordinate axis) - GAPPY_AXIS - gappy axis 1:5 ... ... ... - (invalid coordinate axis) - SCALAR_VAR - a good way to encode model parm 1:1 ... ... ... - TRUE_SCALAR - with no dims at all ... ... ... ... - MASKED_SST - SST * MP_MASK 1:180 1:90 ... 1:1 - COADSX Longitude page positions 1:180 1:90 ... ... - COADSY Latitude page positions 1:180 1:90 ... ... - HAS_NO_AXIS - variable with no axis 1:5 ... ... ... - HAS_UNORDERED_AXIS - variable with disordered axis 1:5 ... ... ... - HAS_GAPPY_AXIS - variable with gappy axis 1:5 ... ... ... - HAS_BACKWARDS_AXIS - variable with backwards axis 1:5 ... ... ... - USES_BIG_IRREG - variable defined on too-long ir ... ... ... 1:200000 - -show grid/x HAS_NO_AXIS - GRID GAB7 - name axis # pts start end subset - NO_AXIS X 5 r 1 5 full - normal Y - normal Z - normal T - - I X XBOX XBOXLO - 1> 1 1 0.5 - 2> 2 1 1.5 - 3> 3 1 2.5 - 4> 4 1 3.5 - 5> 5 1 4.5 -show grid/x HAS_UNORDERED_AXIS - GRID GAB1 - name axis # pts start end subset - UNORDERED_AXIS X 5 r 1 5 full - normal Y - normal Z - normal T - - I X XBOX XBOXLO - 1> 1 1 0.5 - 2> 2 1 1.5 - 3> 3 1 2.5 - 4> 4 1 3.5 - 5> 5 1 4.5 -show grid/x HAS_GAPPY_AXIS - GRID GAB2 - name axis # pts start end subset - GAPPY_AXIS X 5 r 1 5 full - normal Y - normal Z - normal T - - I X XBOX XBOXLO - 1> 1 1 0.5 - 2> 2 1 1.5 - 3> 3 1 2.5 - 4> 4 1 3.5 - 5> 5 1 4.5 -show grid/x HAS_BACKWARDS_AXIS - GRID GAB8 - name axis # pts start end subset - BACKWARDS_AXIS X 5 r 1 5 full - normal Y - normal Z - normal T - - I X XBOX XBOXLO - 1> 1 1 0.5 - 2> 2 1 1.5 - 3> 3 1 2.5 - 4> 4 1 3.5 - 5> 5 1 4.5 -show grid/x SCALAR_VAR - GRID GAB3 - name axis # pts start end subset - SCALAR X 1 r 1 1 full - normal Y - normal Z - normal T - - I X XBOX XBOXLO - 1> 1 1 0.5 - -show grid/i=1:5 USES_BIG_IRREG - GRID GAB9 - name axis # pts start end subset - normal X - normal Y - normal Z - BIG_IRREG T (hours) 200000 i 1 2.E+05 full - -show grid MASKED_SST - GRID GAB5 - name axis # pts start end subset - COADSX1 LONGITUDE 180 r 1E 180E full - COADSY1 LATITUDE 90 r 1N 90N full - normal Z - TIME7 TIME 1mr 16-JAN 06:00 16-JAN 06:00 full -show grid COADSX - GRID GAB6 - name axis # pts start end subset - COADSX1 LONGITUDE 180 r 1E 180E full - COADSY1 LATITUDE 90 r 1N 90N full - normal Z - normal T -show grid COADSY - GRID GAB6 - name axis # pts start end subset - COADSX1 LONGITUDE 180 r 1E 180E full - COADSY1 LATITUDE 90 r 1N 90N full - normal Z - normal T - -show data - currently SET data sets: - 1> ./data/non_COARDS.cdf (default) - name title I J K L - UNORDERED_AXIS - disordered axis 1:5 ... ... ... - (invalid coordinate axis) - GAPPY_AXIS - gappy axis 1:5 ... ... ... - (invalid coordinate axis) - SCALAR_VAR - a good way to encode model parm 1:1 ... ... ... - TRUE_SCALAR - with no dims at all ... ... ... ... - MASKED_SST - SST * MP_MASK 1:180 1:90 ... 1:1 - COADSX Longitude page positions 1:180 1:90 ... ... - COADSY Latitude page positions 1:180 1:90 ... ... - HAS_NO_AXIS - variable with no axis 1:5 ... ... ... - HAS_UNORDERED_AXIS - variable with disordered axis 1:5 ... ... ... - HAS_GAPPY_AXIS - variable with gappy axis 1:5 ... ... ... - HAS_BACKWARDS_AXIS - variable with backwards axis 1:5 ... ... ... - USES_BIG_IRREG - variable defined on too-long ir ... ... ... 1:200000 - -list UNORDERED_AXIS - VARIABLE : disordered axis - invalid coordinate axis - FILENAME : non_COARDS.cdf - SUBSET : 5 points (X) - 1 / 1: 1.00000 - 2 / 2: 3.00000 - 3 / 3: 5.00000 - 4 / 4: 2.00000 - 5 / 5: 4.00000 -list GAPPY_AXIS - VARIABLE : gappy axis - invalid coordinate axis - FILENAME : non_COARDS.cdf - SUBSET : 5 points (X) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: .... - 4 / 4: 4.00000 - 5 / 5: 5.00000 -list SCALAR_VAR - VARIABLE : a good way to encode model parms - FILENAME : non_COARDS.cdf - X : 1 - 99.0000 -list TRUE_SCALAR - VARIABLE : with no dims at all - FILENAME : non_COARDS.cdf - .... -list HAS_BACKWARDS_AXIS - VARIABLE : variable with backwards axis - FILENAME : non_COARDS.cdf - SUBSET : 5 points (X) - 1 / 1: 50.0000 - 2 / 2: 40.0000 - 3 / 3: 30.0000 - 4 / 4: 20.0000 - 5 / 5: 10.0000 - -! With 250000 irregular coordinate storage locations, the variable BIG_IRREG -! is not created; if irreg axis too long for coord storage, a variable -! is generated with its values. - -! list/i=1:5 BIG_IRREG - -GO bn_reset bn_cache_hits -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cache_hits -GO bn_cache_hits ! cache hits on unspecified (full) regions -! bn_cache_hits.jnl - -! 3/99 *sh* -! Test the success of Ferret in recalling past results - -! 7/01 -- added bn_cache_hits_gcfcn.sub - -define alias CONFUSE load/i=1:5 i - -set mode diag -use coads_climatology -set region/l=1 - -GO bn_cache_hits.sub sst -! bn_cache_hits.sub -! *sh* 3/99 -! usage: GO bn_cache_hits.sub variable - -stat $1 - !-> stat sst - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - reading SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - - SEA SURFACE TEMPERATURE - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 6694 - Minimum value: -1.8 - Maximum value: 31 - Mean value: 16.52 (unweighted average) - Standard deviation: 10.139 -CONFUSE - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:173 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1 - !-> stat sst - -DELETE I M:173 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - - SEA SURFACE TEMPERATURE - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 6694 - Minimum value: -1.8 - Maximum value: 31 - Mean value: 16.52 (unweighted average) - Standard deviation: 10.139 - -define axis/x=130e:80w:1 xtrop -stat $1[gx=xtrop] - !-> stat sst[gx=xtrop] - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - strip regrid on X: SST --> (G010) @LIN - found SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - regrid SST M:173 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - - SEA SURFACE TEMPERATURE - regrid: 1 deg on X - LONGITUDE: 129.5E to 79.5W - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 13590 (151*90*1*1*1*1) - # flagged as bad data: 4962 - Minimum value: -1.7 - Maximum value: 31 - Mean value: 17.605 (unweighted average) - Standard deviation: 9.8848 -CONFUSE - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - -DELETE SST M:173 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:173 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1[gx=xtrop] - !-> stat sst[gx=xtrop] - -DELETE I M:173 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - strip regrid on X: SST --> (G010) @LIN - found SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - regrid SST M:173 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - - SEA SURFACE TEMPERATURE - regrid: 1 deg on X - LONGITUDE: 129.5E to 79.5W - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 13590 (151*90*1*1*1*1) - # flagged as bad data: 4962 - Minimum value: -1.7 - Maximum value: 31 - Mean value: 17.605 (unweighted average) - Standard deviation: 9.8848 - -let $1x = $1[gx=xtrop] - !-> DEFINE VARIABLE sstx = sst[gx=xtrop] -stat $1x - !-> stat sstx - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - -DELETE SST M:173 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SSTX C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - eval SSTX C: 6 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - strip regrid on X: SST --> (G010) @LIN - found SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - regrid SST M:173 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - - SST[GX=XTROP] - LONGITUDE: 129.5E to 79.5W - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 13590 (151*90*1*1*1*1) - # flagged as bad data: 4962 - Minimum value: -1.7 - Maximum value: 31 - Mean value: 17.605 (unweighted average) - Standard deviation: 9.8848 -CONFUSE - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:166 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1x - !-> stat sstx - -DELETE I M:166 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - found SSTX M:170 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - - SST[GX=XTROP] - LONGITUDE: 129.5E to 79.5W - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 13590 (151*90*1*1*1*1) - # flagged as bad data: 4962 - Minimum value: -1.7 - Maximum value: 31 - Mean value: 17.605 (unweighted average) - Standard deviation: 9.8848 - -define grid/x=xtrop gx - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - -DELETE SSTX M:170 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - -DELETE SST M:173 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 -stat $1[g=gx] - !-> stat sst[g=gx] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - strip regrid on X: SST --> (G010) @LIN - found SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - regrid SST M:173 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - - SEA SURFACE TEMPERATURE - regrid: 1 deg on X - LONGITUDE: 129.5E to 79.5W - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 13590 (151*90*1*1*1*1) - # flagged as bad data: 4962 - Minimum value: -1.7 - Maximum value: 31 - Mean value: 17.605 (unweighted average) - Standard deviation: 9.8848 -CONFUSE - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - -DELETE SST M:173 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:173 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1[g=gx] - !-> stat sst[g=gx] - -DELETE I M:173 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - strip regrid on X: SST --> (G010) @LIN - found SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - regrid SST M:173 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - - SEA SURFACE TEMPERATURE - regrid: 1 deg on X - LONGITUDE: 129.5E to 79.5W - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 13590 (151*90*1*1*1*1) - # flagged as bad data: 4962 - Minimum value: -1.7 - Maximum value: 31 - Mean value: 17.605 (unweighted average) - Standard deviation: 9.8848 - -define axis/y=20s:20n:1 ytrop -stat $1[gx=xtrop,gy=ytrop] - !-> stat sst[gx=xtrop,gy=ytrop] - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - -DELETE SST M:173 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP YTROP NORMAL TIME7 - dealloc dynamic grid (G010) XTROP YTROP NORMAL TIME7 - allocate dynamic grid (G010) XTROP YTROP NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - allocate dynamic grid (G010) XTROP YTROP NORMAL TIME7 - strip regrid on X: SST --> (G010) @LIN - found SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - regrid XY - regrid SST M:173 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP YTROP NORMAL TIME7 - - SEA SURFACE TEMPERATURE - regrid: 1 deg on X, 1 deg on Y - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 20.428 - Maximum value: 31 - Mean value: 26.908 (unweighted average) - Standard deviation: 1.778 -CONFUSE - dealloc dynamic grid (G010) XTROP YTROP NORMAL TIME7 - -DELETE SST M:173 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:173 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1[gx=xtrop,gy=ytrop] - !-> stat sst[gx=xtrop,gy=ytrop] - -DELETE I M:173 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP YTROP NORMAL TIME7 - dealloc dynamic grid (G010) XTROP YTROP NORMAL TIME7 - allocate dynamic grid (G010) XTROP YTROP NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - allocate dynamic grid (G010) XTROP YTROP NORMAL TIME7 - strip regrid on X: SST --> (G010) @LIN - found SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - regrid XY - regrid SST M:173 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP YTROP NORMAL TIME7 - - SEA SURFACE TEMPERATURE - regrid: 1 deg on X, 1 deg on Y - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 20.428 - Maximum value: 31 - Mean value: 26.908 (unweighted average) - Standard deviation: 1.778 - -define grid/like=$1/x=xtrop/y=ytrop gxyt - !-> define grid/like=sst/x=xtrop/y=ytrop gxyt - dealloc dynamic grid (G010) XTROP YTROP NORMAL TIME7 - -DELETE SST M:173 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - getgrid EX#1 C: 6 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 -stat $1[g=gxyt] - !-> stat sst[g=gxyt] - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - strip regrid on X: SST --> GXYT @LIN - found SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - regrid XY - regrid SST M:173 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SEA SURFACE TEMPERATURE - regrid: GXYT - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 20.428 - Maximum value: 31 - Mean value: 26.908 (unweighted average) - Standard deviation: 1.778 -CONFUSE - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:170 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1[g=gxyt] - !-> stat sst[g=gxyt] - -DELETE I M:170 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - found SST M:173 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SEA SURFACE TEMPERATURE - regrid: GXYT - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 20.428 - Maximum value: 31 - Mean value: 26.908 (unweighted average) - Standard deviation: 1.778 - -let $1xyt = $1[g=gxyt] - !-> DEFINE VARIABLE sstxyt = sst[g=gxyt] -stat $1xyt - !-> stat sstxyt - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SSTXYT C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - eval SSTXYT C: 6 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - found SST M:173 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SST[G=GXYT] - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 20.428 - Maximum value: 31 - Mean value: 26.908 (unweighted average) - Standard deviation: 1.778 -CONFUSE - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:166 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1xyt - !-> stat sstxyt - -DELETE I M:166 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - found SSTXYT M:170 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SST[G=GXYT] - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 20.428 - Maximum value: 31 - Mean value: 26.908 (unweighted average) - Standard deviation: 1.778 - -let $1xyt = $1[g=gxyt] - !-> DEFINE VARIABLE sstxyt = sst[g=gxyt] - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - -DELETE SSTXYT M:170 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 -stat $1xyt - !-> stat sstxyt - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SSTXYT C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - eval SSTXYT C: 6 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - found SST M:173 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SST[G=GXYT] - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 20.428 - Maximum value: 31 - Mean value: 26.908 (unweighted average) - Standard deviation: 1.778 -CONFUSE - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:166 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1xyt - !-> stat sstxyt - -DELETE I M:166 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - found SSTXYT M:170 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SST[G=GXYT] - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 20.428 - Maximum value: 31 - Mean value: 26.908 (unweighted average) - Standard deviation: 1.778 - -stat $1[x=@ave] - !-> stat sst[x=@ave] - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - strip --> SST[X=20E:20E(380)@AVE,D=1] - found SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - doing --> SST[X=20E:20E(380)@AVE,D=1] - final --> SST[X=20E:20E(380)@AVE,D=1] - - SEA SURFACE TEMPERATURE - LONGITUDE: 20E to 20E(380) (averaged) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 90 (1*90*1*1*1*1) - # flagged as bad data: 12 - Minimum value: -0.69743 - Maximum value: 27.612 - Mean value: 14.429 (unweighted average) - Standard deviation: 10.445 -CONFUSE - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:161 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1[x=@ave] - !-> stat sst[x=@ave] - -DELETE I M:161 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST M:166 dset: 1 I: -999 -999 J: 1 90 K: -999 -999 L: 1 1 - - SEA SURFACE TEMPERATURE - LONGITUDE: 20E to 20E(380) (averaged) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 90 (1*90*1*1*1*1) - # flagged as bad data: 12 - Minimum value: -0.69743 - Maximum value: 27.612 - Mean value: 14.429 (unweighted average) - Standard deviation: 10.445 - -let $1xave = $1[x=@ave] - !-> DEFINE VARIABLE sstxave = sst[x=@ave] -stat $1xave - !-> stat sstxave - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SSTXAVE C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - eval SSTXAVE C: 6 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST M:166 dset: 1 I: -999 -999 J: 1 90 K: -999 -999 L: 1 1 - - SST[X=@AVE] - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 90 (1*90*1*1*1*1) - # flagged as bad data: 12 - Minimum value: -0.69743 - Maximum value: 27.612 - Mean value: 14.429 (unweighted average) - Standard deviation: 10.445 -CONFUSE - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:179 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1xave - !-> stat sstxave - -DELETE I M:179 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SSTXAVE M:161 dset: 1 I: -999 -999 J: 1 90 K: -999 -999 L: 1 1 - - SST[X=@AVE] - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 90 (1*90*1*1*1*1) - # flagged as bad data: 12 - Minimum value: -0.69743 - Maximum value: 27.612 - Mean value: 14.429 (unweighted average) - Standard deviation: 10.445 - -stat $1[x=@sbx] - !-> stat sst[x=@sbx] - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - strip --> SST[X=20E:20E(380)@SBX:3,D=1] - strip moduloing SST on X axis: 0 181 dset: 1 - found SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - doing moduloing SST on X axis: 1 180 dset: 1 - doing --> SST[X=20E:20E(380)@SBX:3,D=1] - - SEA SURFACE TEMPERATURE - box smoothed by 3 pts on X - LONGITUDE: 20E to 20E(380) (box smoothed by 3 pts) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 7173 - Minimum value: -1.3854 - Maximum value: 30.382 - Mean value: 16.633 (unweighted average) - Standard deviation: 10.112 -CONFUSE - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:154 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1[x=@sbx] - !-> stat sst[x=@sbx] - -DELETE I M:154 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST M:157 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - - SEA SURFACE TEMPERATURE - box smoothed by 3 pts on X - LONGITUDE: 20E to 20E(380) (box smoothed by 3 pts) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 7173 - Minimum value: -1.3854 - Maximum value: 30.382 - Mean value: 16.633 (unweighted average) - Standard deviation: 10.112 - -let $1sbx = $1[x=@sbx] - !-> DEFINE VARIABLE sstsbx = sst[x=@sbx] -stat $1sbx - !-> stat sstsbx - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SSTSBX C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - eval SSTSBX C: 6 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST M:157 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - - SST[X=@SBX] - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 7173 - Minimum value: -1.3854 - Maximum value: 30.382 - Mean value: 16.633 (unweighted average) - Standard deviation: 10.112 -CONFUSE - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:152 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1sbx - !-> stat sstsbx - -DELETE I M:152 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SSTSBX M:154 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - - SST[X=@SBX] - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 7173 - Minimum value: -1.3854 - Maximum value: 30.382 - Mean value: 16.633 (unweighted average) - Standard deviation: 10.112 - - - -LET sst5 = sst+5 -GO bn_cache_hits.sub sst5 -! bn_cache_hits.sub -! *sh* 3/99 -! usage: GO bn_cache_hits.sub variable - -stat $1 - !-> stat sst5 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SST5 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - eval SST5 C: 6 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST M:179 dset: 1 I: 0 181 J: 1 90 K: -999 -999 L: 1 1 - constan cnst M:152 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE cnst M:152 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - - SST+5 - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 6694 - Minimum value: 3.2 - Maximum value: 36 - Mean value: 21.52 (unweighted average) - Standard deviation: 10.139 -CONFUSE - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:152 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1 - !-> stat sst5 - -DELETE I M:152 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST5 M:151 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - - SST+5 - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 6694 - Minimum value: 3.2 - Maximum value: 36 - Mean value: 21.52 (unweighted average) - Standard deviation: 10.139 - -define axis/x=130e:80w:1 xtrop -stat $1[gx=xtrop] - !-> stat sst5[gx=xtrop] - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - strip regrid on X: SST5 --> (G010) @LIN - found SST5 M:151 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - regrid SST5 M:152 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - - SST+5 - regrid: 1 deg on X - LONGITUDE: 129.5E to 79.5W - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 13590 (151*90*1*1*1*1) - # flagged as bad data: 4962 - Minimum value: 3.3 - Maximum value: 36 - Mean value: 22.605 (unweighted average) - Standard deviation: 9.8848 -CONFUSE - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - -DELETE SST5 M:152 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:152 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1[gx=xtrop] - !-> stat sst5[gx=xtrop] - -DELETE I M:152 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - strip regrid on X: SST5 --> (G010) @LIN - found SST5 M:151 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - regrid SST5 M:152 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - - SST+5 - regrid: 1 deg on X - LONGITUDE: 129.5E to 79.5W - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 13590 (151*90*1*1*1*1) - # flagged as bad data: 4962 - Minimum value: 3.3 - Maximum value: 36 - Mean value: 22.605 (unweighted average) - Standard deviation: 9.8848 - -let $1x = $1[gx=xtrop] - !-> DEFINE VARIABLE sst5x = sst5[gx=xtrop] -stat $1x - !-> stat sst5x - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - -DELETE SST5 M:152 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SST5X C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - eval SST5X C: 6 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - strip regrid on X: SST5 --> (G010) @LIN - found SST5 M:151 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - regrid SST5 M:152 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - - SST5[GX=XTROP] - LONGITUDE: 129.5E to 79.5W - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 13590 (151*90*1*1*1*1) - # flagged as bad data: 4962 - Minimum value: 3.3 - Maximum value: 36 - Mean value: 22.605 (unweighted average) - Standard deviation: 9.8848 -CONFUSE - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:148 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1x - !-> stat sst5x - -DELETE I M:148 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - found SST5X M:150 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - - SST5[GX=XTROP] - LONGITUDE: 129.5E to 79.5W - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 13590 (151*90*1*1*1*1) - # flagged as bad data: 4962 - Minimum value: 3.3 - Maximum value: 36 - Mean value: 22.605 (unweighted average) - Standard deviation: 9.8848 - -define grid/x=xtrop gx -stat $1[g=gx] - !-> stat sst5[g=gx] - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - found SST5 M:152 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - - SST+5 - regrid: 1 deg on X - LONGITUDE: 129.5E to 79.5W - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 13590 (151*90*1*1*1*1) - # flagged as bad data: 4962 - Minimum value: 3.3 - Maximum value: 36 - Mean value: 22.605 (unweighted average) - Standard deviation: 9.8848 -CONFUSE - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:148 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1[g=gx] - !-> stat sst5[g=gx] - -DELETE I M:148 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - allocate dynamic grid (G010) XTROP COADSY NORMAL TIME7 - found SST5 M:152 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - - SST+5 - regrid: 1 deg on X - LONGITUDE: 129.5E to 79.5W - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 13590 (151*90*1*1*1*1) - # flagged as bad data: 4962 - Minimum value: 3.3 - Maximum value: 36 - Mean value: 22.605 (unweighted average) - Standard deviation: 9.8848 - -define axis/y=20s:20n:1 ytrop -stat $1[gx=xtrop,gy=ytrop] - !-> stat sst5[gx=xtrop,gy=ytrop] - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - strip regrid on X: SST5 --> GXYT @LIN - found SST5 M:151 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - regrid XY - regrid SST5 M:148 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SST+5 - regrid: GXYT - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 25.428 - Maximum value: 36 - Mean value: 31.908 (unweighted average) - Standard deviation: 1.778 -CONFUSE - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:146 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1[gx=xtrop,gy=ytrop] - !-> stat sst5[gx=xtrop,gy=ytrop] - -DELETE I M:146 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - found SST5 M:148 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SST+5 - regrid: GXYT - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 25.428 - Maximum value: 36 - Mean value: 31.908 (unweighted average) - Standard deviation: 1.778 - -define grid/like=$1/x=xtrop/y=ytrop gxyt - !-> define grid/like=sst5/x=xtrop/y=ytrop gxyt - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - getgrid EX#1 C: 6 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 -stat $1[g=gxyt] - !-> stat sst5[g=gxyt] - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - found SST5 M:148 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SST+5 - regrid: GXYT - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 25.428 - Maximum value: 36 - Mean value: 31.908 (unweighted average) - Standard deviation: 1.778 -CONFUSE - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:146 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1[g=gxyt] - !-> stat sst5[g=gxyt] - -DELETE I M:146 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - found SST5 M:148 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SST+5 - regrid: GXYT - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 25.428 - Maximum value: 36 - Mean value: 31.908 (unweighted average) - Standard deviation: 1.778 - -let $1xyt = $1[g=gxyt] - !-> DEFINE VARIABLE sst5xyt = sst5[g=gxyt] -stat $1xyt - !-> stat sst5xyt - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SST5XYT C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - eval SST5XYT C: 6 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - found SST5 M:148 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SST5[G=GXYT] - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 25.428 - Maximum value: 36 - Mean value: 31.908 (unweighted average) - Standard deviation: 1.778 -CONFUSE - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:143 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1xyt - !-> stat sst5xyt - -DELETE I M:143 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - found SST5XYT M:146 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SST5[G=GXYT] - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 25.428 - Maximum value: 36 - Mean value: 31.908 (unweighted average) - Standard deviation: 1.778 - -let $1xyt = $1[g=gxyt] - !-> DEFINE VARIABLE sst5xyt = sst5[g=gxyt] - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - -DELETE SST5XYT M:146 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - -DELETE SST5X M:150 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) XTROP COADSY NORMAL TIME7 - -DELETE SST5 M:152 dset: 1 I: 1 151 J: 1 90 K: -999 -999 L: 1 1 - -DELETE SST5 M:148 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - -DELETE SST5 M:151 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - -DELETE SSTSBX M:154 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - -DELETE SSTXAVE M:161 dset: 1 I: -999 -999 J: 1 90 K: -999 -999 L: 1 1 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - -DELETE SSTXYT M:170 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 -stat $1xyt - !-> stat sst5xyt - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SST5XYT C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SST5 C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - eval SST5XYT C: 6 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - strip regrid on X: SST5 --> GXYT @LIN - eval SST5 C: 9 dset: 1 I: 55 131 J: 35 56 K: -999 -999 L: 1 1 - found SST M:179 dset: 1 I: 0 181 J: 1 90 K: -999 -999 L: 1 1 - constan cnst M:170 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE cnst M:170 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - regrid XY - regrid SST5 M:170 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SST5[G=GXYT] - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 25.428 - Maximum value: 36 - Mean value: 31.908 (unweighted average) - Standard deviation: 1.778 -CONFUSE - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:151 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1xyt - !-> stat sst5xyt - -DELETE I M:151 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - found SST5XYT M:154 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - - SST5[G=GXYT] - LONGITUDE: 129.5E to 79.5W - LATITUDE: 20.5S to 20.5N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 6191 (151*41*1*1*1*1) - # flagged as bad data: 151 - Minimum value: 25.428 - Maximum value: 36 - Mean value: 31.908 (unweighted average) - Standard deviation: 1.778 - -stat $1[x=@ave] - !-> stat sst5[x=@ave] - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - strip --> SST5[X=20E:20E(380)@AVE,D=1] - eval SST5 C: 7 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST M:179 dset: 1 I: 0 181 J: 1 90 K: -999 -999 L: 1 1 - constan cnst M:151 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE cnst M:151 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - doing --> SST5[X=20E:20E(380)@AVE,D=1] - final --> SST5[X=20E:20E(380)@AVE,D=1] - - SST+5 - LONGITUDE: 20E to 20E(380) (averaged) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 90 (1*90*1*1*1*1) - # flagged as bad data: 12 - Minimum value: 4.3026 - Maximum value: 32.612 - Mean value: 19.429 (unweighted average) - Standard deviation: 10.445 -CONFUSE - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:152 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1[x=@ave] - !-> stat sst5[x=@ave] - -DELETE I M:152 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST5 M:151 dset: 1 I: -999 -999 J: 1 90 K: -999 -999 L: 1 1 - - SST+5 - LONGITUDE: 20E to 20E(380) (averaged) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 90 (1*90*1*1*1*1) - # flagged as bad data: 12 - Minimum value: 4.3026 - Maximum value: 32.612 - Mean value: 19.429 (unweighted average) - Standard deviation: 10.445 - -let $1xave = $1[x=@ave] - !-> DEFINE VARIABLE sst5xave = sst5[x=@ave] -stat $1xave - !-> stat sst5xave - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SST5XAVE C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - eval SST5XAVE C: 6 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST5 M:151 dset: 1 I: -999 -999 J: 1 90 K: -999 -999 L: 1 1 - - SST5[X=@AVE] - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 90 (1*90*1*1*1*1) - # flagged as bad data: 12 - Minimum value: 4.3026 - Maximum value: 32.612 - Mean value: 19.429 (unweighted average) - Standard deviation: 10.445 -CONFUSE - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:150 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1xave - !-> stat sst5xave - -DELETE I M:150 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST5XAVE M:152 dset: 1 I: -999 -999 J: 1 90 K: -999 -999 L: 1 1 - - SST5[X=@AVE] - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 90 (1*90*1*1*1*1) - # flagged as bad data: 12 - Minimum value: 4.3026 - Maximum value: 32.612 - Mean value: 19.429 (unweighted average) - Standard deviation: 10.445 - -stat $1[x=@sbx] - !-> stat sst5[x=@sbx] - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - strip --> SST5[X=20E:20E(380)@SBX:3,D=1] - strip moduloing SST5 on X axis: 0 181 dset: 1 - found SST5 M:148 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - doing moduloing SST5 on X axis: 1 180 dset: 1 - doing --> SST5[X=20E:20E(380)@SBX:3,D=1] - - SST+5 - box smoothed by 3 pts on X - LONGITUDE: 20E to 20E(380) (box smoothed by 3 pts) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 7173 - Minimum value: 3.6146 - Maximum value: 35.382 - Mean value: 21.633 (unweighted average) - Standard deviation: 10.112 -CONFUSE - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:143 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1[x=@sbx] - !-> stat sst5[x=@sbx] - -DELETE I M:143 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST5 M:146 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - - SST+5 - box smoothed by 3 pts on X - LONGITUDE: 20E to 20E(380) (box smoothed by 3 pts) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 7173 - Minimum value: 3.6146 - Maximum value: 35.382 - Mean value: 21.633 (unweighted average) - Standard deviation: 10.112 - -let $1sbx = $1[x=@sbx] - !-> DEFINE VARIABLE sst5sbx = sst5[x=@sbx] -stat $1sbx - !-> stat sst5sbx - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid SST5SBX C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - eval SST5SBX C: 6 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST5 M:146 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - - SST5[X=@SBX] - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 7173 - Minimum value: 3.6146 - Maximum value: 35.382 - Mean value: 21.633 (unweighted average) - Standard deviation: 10.112 -CONFUSE - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 5 J: -999 -999 K: -999 -999 L: 1 1 - pseudo I M:142 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 -stat $1sbx - !-> stat sst5sbx - -DELETE I M:142 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - found SST5SBX M:143 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - - SST5[X=@SBX] - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 7173 - Minimum value: 3.6146 - Maximum value: 35.382 - Mean value: 21.633 (unweighted average) - Standard deviation: 10.112 - - - -GO bn_cache_hits_gcfcn.sub -! bn_cache_hits_gcfcn.sub -! 7/01 *sh* - -! test cache hits on grid-changing functions - -! caching that happens because gcf_impose_axes sets uvlim_hidden -set mode diag - -let a = i[i=1:10] -say `a,return=isize` ! no evaluation of a required -- just context - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - dealloc dynamic grid GXYT XTROP YTROP NORMAL TIME7 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - eval A C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo I M:142 dset: 0 I: 1 10 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE I M:142 dset: 0 I: 1 10 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE A M:177 dset: 0 I: 1 10 J: -999 -999 K: -999 -999 L: -999 -999 - !-> MESSAGE/CONTINUE 10 -10 -list/nohead a ! evaluate it now - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - eval A C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo I M:177 dset: 0 I: 1 10 J: -999 -999 K: -999 -999 L: -999 -999 - 1 / 1: 1.0000 - 2 / 2: 2.0000 - 3 / 3: 3.0000 - 4 / 4: 4.0000 - 5 / 5: 5.0000 - 6 / 6: 6.0000 - 7 / 7: 7.0000 - 8 / 8: 8.0000 - 9 / 9: 9.0000 - 10 / 10: 10.0000 - -let a = XSEQUENCE(j[j=1:5]) - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE A M:142 dset: 0 I: 1 10 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE I M:177 dset: 0 I: 1 10 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE SST5SBX M:143 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - -DELETE SST5XAVE M:152 dset: 1 I: -999 -999 J: 1 90 K: -999 -999 L: 1 1 - -DELETE SST5XYT M:154 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - -DELETE SST5 M:146 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - -DELETE SST5 M:148 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - -DELETE SST5 M:150 dset: 1 I: 0 181 J: 1 90 K: -999 -999 L: 1 1 - -DELETE SST5 M:151 dset: 1 I: -999 -999 J: 1 90 K: -999 -999 L: 1 1 - -DELETE SST5 M:161 dset: 1 I: 55 131 J: 35 56 K: -999 -999 L: 1 1 - -DELETE SST5 M:170 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 -say `a,return=isize` ! evaluate it now - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V11 C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C11,V11 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 (C11,V11 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - eval A C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V11 C: 8 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C11,V11 C: 10 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo J M:170 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - dealloc dynamic grid YABSTRACT NORMAL ABSTRACT NORMAL NORMAL - -DELETE (C11,V11 M:161 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - -DELETE J M:170 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE A M:150 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE (C01,V11 M:151 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - !-> MESSAGE/CONTINUE 5 -5 -list/nohead a ! cache hit - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V11 C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C11,V11 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 (C11,V11 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - eval A C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V11 C: 8 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C11,V11 C: 10 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo J M:151 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 - -let a = SAMPLEI(I[i=1:100], {8,5,3}) - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE (C11,V11 M:150 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - dealloc dynamic grid YABSTRACT NORMAL ABSTRACT NORMAL NORMAL - -DELETE J M:151 dset: 0 I: -999 -999 J: 1 5 K: -999 -999 L: -999 -999 - -DELETE (C01,V11 M:170 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE A M:161 dset: 0 I: 1 5 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL -say `a,return=isize` ! evaluate it now - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V11 C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C09,V11 C: 12 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 (C09,V11 C: 12 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - eval A C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V11 C: 8 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - const_v {8,5,3} M:161 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 3 dset: 0 - eval (C09,V11 C: 12 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo I M:150 dset: 0 I: 1 100 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE J M:151 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: 3 3 M: -999 -999 N: -999 -999 - -DELETE (C01,V11 M:170 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:146 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE {8,5,3} M:161 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE (C09,V11 M:148 dset: 0 I: 1 100 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE I M:150 dset: 0 I: 1 100 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE A M:161 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE (C01,V11 M:170 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - !-> MESSAGE/CONTINUE 3 -3 -list/nohead a ! cache hit - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V11 C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C09,V11 C: 12 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 (C09,V11 C: 12 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - eval A C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V11 C: 8 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - const_v {8,5,3} M:170 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - doing sampling tpry on I axis: 1 3 dset: 0 - eval (C09,V11 C: 12 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo I M:148 dset: 0 I: 1 100 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE I M:150 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: 3 3 M: -999 -999 N: -999 -999 - -DELETE A M:161 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:151 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE {8,5,3} M:170 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - 1 / 1: 8.00000 - 2 / 2: 5.00000 - 3 / 3: 3.00000 - -spawn rm -f foo.bar* -spawn touch foo.bar1 foo.bar2 foo.bar3 -let a = SPAWN("ls foo.bar*") - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE (C09,V11 M:146 dset: 0 I: 1 100 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE (C01,V11 M:161 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE A M:170 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE I M:148 dset: 0 I: 1 100 J: -999 -999 K: -999 -999 L: -999 -999 -say `a,return=isize` ! evaluate it now - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - eval A C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - string str M:148 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE A M:161 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE tpry M:170 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - !-> MESSAGE/CONTINUE 3 -3 -list/nohead a ! cache hit - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - eval A C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - string str M:170 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - 1 / 1:"foo.bar1" - 2 / 2:"foo.bar2" - 3 / 3:"foo.bar3" - -! RESHAPE, alone, is set to require matched limits in order to make a cache hit -let a = RESHAPE(I[I=1:3]+10*j[j=1:3], I[i=1:9]) - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE A M:146 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE tpry M:161 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 -say `a,return=isize` - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V11 C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C31,V11 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 (C31,V11 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C09,V11 C: 12 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 (C09,V11 C: 12 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) ABSTRACT ABSTRACT NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - eval A C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V11 C: 8 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C09,V11 C: 10 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo I M:161 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - constan cnst M:146 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo J M:151 dset: 0 I: -999 -999 J: 1 3 K: -999 -999 L: -999 -999 - -DELETE J M:151 dset: 0 I: -999 -999 J: 1 3 K: -999 -999 L: -999 -999 - -DELETE cnst M:146 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE tpry M:150 dset: 0 I: -999 -999 J: 1 3 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE I M:161 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C31,V11 C: 11 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo I M:161 dset: 0 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid (G010) ABSTRACT ABSTRACT NORMAL NORMAL - -DELETE (C09,V11 M:146 dset: 0 I: 1 3 J: 1 3 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE (C31,V11 M:150 dset: 0 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE (C01,V11 M:151 dset: 0 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE A M:154 dset: 0 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE I M:161 dset: 0 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - !-> MESSAGE/CONTINUE 9 -9 -list/nohead a ! no cache hit - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C01,V11 C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C31,V11 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 (C31,V11 C: 11 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid (C09,V11 C: 12 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - pass #2 (C09,V11 C: 12 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) ABSTRACT ABSTRACT NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - eval A C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C01,V11 C: 8 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C09,V11 C: 10 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo I M:161 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - constan cnst M:154 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo J M:151 dset: 0 I: -999 -999 J: 1 3 K: -999 -999 L: -999 -999 - -DELETE J M:151 dset: 0 I: -999 -999 J: 1 3 K: -999 -999 L: -999 -999 - -DELETE cnst M:154 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE tpry M:150 dset: 0 I: -999 -999 J: 1 3 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE I M:161 dset: 0 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - eval (C31,V11 C: 11 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo I M:161 dset: 0 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - 1 / 1: 11.0000 - 2 / 2: 12.0000 - 3 / 3: 13.0000 - 4 / 4: 21.0000 - 5 / 5: 22.0000 - 6 / 6: 23.0000 - 7 / 7: 31.0000 - 8 / 8: 32.0000 - 9 / 9: 33.0000 - -set mode/last diag - -! v5.4 *kob* 10/01 - need to add exit/script - new exit command qualifiers -EXIT/SCRIPT - -GO bn_reset bn_regrid_to_user -cancel mode verify - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE (C31,V11 M:150 dset: 0 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE (C09,V11 M:154 dset: 0 I: 1 3 J: 1 3 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G010) ABSTRACT ABSTRACT NORMAL NORMAL - -DELETE (C01,V11 M:151 dset: 0 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE A M:146 dset: 0 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE I M:161 dset: 0 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - canceling dset ./data/coads_climatology.cdf - -DELETE SST M:157 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - -DELETE SST M:166 dset: 1 I: -999 -999 J: 1 90 K: -999 -999 L: 1 1 - -DELETE SST M:173 dset: 1 I: 1 151 J: 1 41 K: -999 -999 L: 1 1 - -DELETE SST M:179 dset: 1 I: 0 181 J: 1 90 K: -999 -999 L: 1 1 - -DELETE SST M:180 dset: 1 I: 1 180 J: 1 90 K: -999 -999 L: 1 1 - -DELETE str M:148 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE str M:170 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_to_user -GO bn_regrid_to_user ! G=user_var and related -! bn_regrid_to_user -! 8/99 *sh* -! 5/01 *sh* - changes to accomodate truncated levitus_climatology.cdf -! - additions to test use of expressions in SET/SHOW/DEFINE grid - -! test various regridding combos that involve user-defined variables -! for the target grids - -use coads_climatology -use levitus_climatology - -! define test objects -let a = sst[d=coads_climatology] + 1 -let b = sst + 1 ! data set unspecified -DEFINE AXIS/Y=20s:20n:.5/units=degrees yax -DEFINE GRID/like=sst[d=coads_climatology]/y=yax gg - -! reference data -list/x=158e:161e/y=6s:4s temp[d=2,k=1] - VARIABLE : TEMPERATURE (DEG C) - FILENAME : levitus_climatology.cdf - SUBSET : 3 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 0 - 158.5E 159.5E 160.5E - 139 140 141 - 4.5S / 86: 29.5110 29.4430 29.3800 - 5.5S / 85: 29.5890 29.5250 29.4570 - -! basic regrid (implicit grid -- sst and temp geometries are mismatched) -list/x=160e/y=5s temp[d=2,k=1,g=a[d=1]] - VARIABLE : TEMPERATURE (DEG C) - regrid: 2 deg on X, 2 deg on Y - FILENAME : levitus_climatology.cdf - LONGITUDE: 159E - LATITUDE : 5S - DEPTH (m): 0 - 29.5170 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G017) - GRID (G017) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 1 pt - normal T - -! per axis regrid -! 5/01 note: changed from y=0 yo y=5s to accomodate Y-truncated -! levitus_climatology.cdf -list/x=160e/y=5s temp[d=2,k=1,gx=a[d=1],gy=yax] - VARIABLE : TEMPERATURE (DEG C) - regrid: 2 deg on X, 0.5 deg on Y - FILENAME : levitus_climatology.cdf - LONGITUDE: 159E - LATITUDE : 5S - DEPTH (m): 0 - 29.5170 -list/x=160e/y=5s temp[d=2,k=1,gy=yax,gx=a[d=1]] - VARIABLE : TEMPERATURE (DEG C) - regrid: 2 deg on X, 0.5 deg on Y - FILENAME : levitus_climatology.cdf - LONGITUDE: 159E - LATITUDE : 5S - DEPTH (m): 0 - 29.5170 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G017) - GRID (G017) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - YAX LATITUDE 81 r 20S 20N full - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 1 pt - normal T - -! combined full grid and per-axis -list/x=160e/y=5s temp[d=2,k=1,g=gg,gx=a[d=1]] - VARIABLE : TEMPERATURE (DEG C) - regrid: 2 deg on X, 0.5 deg on Y - FILENAME : levitus_climatology.cdf - LONGITUDE: 159E - LATITUDE : 5S - DEPTH (m): 0 - 29.5170 -list/x=160e/y=5s temp[d=2,k=1,gx=a[d=1],g=gg] - VARIABLE : TEMPERATURE (DEG C) - regrid: 2 deg on X, 0.5 deg on Y - FILENAME : levitus_climatology.cdf - LONGITUDE: 159E - LATITUDE : 5S - DEPTH (m): 0 - 29.5170 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G017) - GRID (G017) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - YAX LATITUDE 81 r 20S 20N full - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 1 pt - normal T - -! pseudo-variable access -list/i=1:4 i[g=a] ! a is previously loaded - VARIABLE : I - axis COADSX - SUBSET : 4 points (LONGITUDE) - 21E / 1: 1.00000 - 23E / 2: 2.00000 - 25E / 3: 3.00000 - 27E / 4: 4.00000 -let c = a -list/i=1:4 i[g=c] ! c is not previously loaded - VARIABLE : I - axis COADSX - SUBSET : 4 points (LONGITUDE) - 21E / 1: 1.00000 - 23E / 2: 2.00000 - 25E / 3: 3.00000 - 27E / 4: 4.00000 -let d = c -list/i=1:4 x[gx=d] - VARIABLE : X - axis COADSX - SUBSET : 4 points (LONGITUDE) - 21E / 1: 21.0000 - 23E / 2: 23.0000 - 25E / 3: 25.0000 - 27E / 4: 27.0000 - -! DEFINE GRID based on a user-defined variable -let e = d -DEFINE GRID/LIKE=e/x=temp[d=levitus_climatology] gg1 -show grid gg1 - GRID GG1 - name axis # pts start end - XAXLEVITR1_160 LONGITUDE 160mr 20.5E 179.5E - COADSY LATITUDE 90 r 89S 89N - normal Z - TIME7 TIME 3mr 16-JAN 06:00 17-MAR 02:58 -let f = sst[y=20s:20n:.1,d=coads_climatology] -DEFINE GRID/LIKE=f/x=temp[d=levitus_climatology] gg2 -cancel variable f -show grid gg2 - GRID GG2 - name axis # pts start end - XAXLEVITR1_160 LONGITUDE 160mr 20.5E 179.5E - (AX009) LATITUDE 401 r 20S 20N - normal Z - TIME7 TIME 3mr 16-JAN 06:00 17-MAR 02:58 -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - AXIS (AX009) use count: 1 - -! demonstrate proper management of dynamic axes -DEFINE GRID/LIKE=gg2 gg3 -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - AXIS (AX009) use count: 2 -DEFINE GRID/like=temp[d=levitus_climatology] gg2 -show grid gg2 - GRID GG2 - name axis # pts start end - XAXLEVITR1_160 LONGITUDE 160mr 20.5E 179.5E - YAXLEVITR1_90 LATITUDE 90 r 89.5S 0.5S - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 - normal T -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - AXIS (AX009) use count: 1 - -! SET GRID using a user-defined variable -let g = sst[x=0:30:.1,d=coads_climatology] -set grid g -show grid - Default grid for DEFINE VARIABLE is (G017) - Last successful data access was on grid (G017) - GRID (G017) - name axis # pts start end subset - (AX026) LONGITUDE 301 r 0E 30E full - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME7 TIME 3mr 16-JAN 06:00 17-MAR 02:58 full - -! The SET GRID (default) definition should be protected -- not altered -load/d=coads_climatology sst[y=-10:10:.1,l=1,x=160e] -show grid - Default grid for DEFINE VARIABLE is (G017) - Last successful data access was on grid (G012) - GRID (G012) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) 1 pt - (AX018) LATITUDE 201 r 10S 10N 201 pts - normal Z - TIME7 TIME 3mr 16-JAN 06:00 17-MAR 02:58 1 pt -show grid/dynamic -Dynamic grids: - GRID (G012) use count: 1 - name axis # pts start end - COADSX LONGITUDE 180mr 21E 19E(379) - (AX018) LATITUDE 201 r 10S 10N - normal Z - TIME7 TIME 3mr 16-JAN 06:00 17-MAR 02:58 - -! deliberate errors -set mode ignore -load/x=160e/y=5s temp[d=2,k=1,g=no_exist] ! non-existent target variable -let v2 = temp[d=2,k=1,gx=a[d=1],gy=yax] -load/x=160e/y=5s v2 -cancel variable a -load/x=160e/y=5s v2 ! non-existent target grid -set mode/last ignore - -! 12/99 -! bug fix: g=abstract now works -! new multiple axis syntax: GXY=gg -define axis/x=1:6:1 x1 -define axis/y=1:4:1 y1 -define axis/z=1:3:1 z1 -define axis/x=1:6:2 x2 -define axis/y=1:4:2 y2 -define axis/z=1:3:2 z2 -let a1 = x[gx=x1]+y[gy=y1]+z[gz=z1] -let a2 = x[gx=x2]+y[gy=y2]+z[gz=z2] -list a1 - VARIABLE : X[GX=X1]+Y[GY=Y1]+Z[GZ=Z1] - SUBSET : 6 by 4 by 3 points (X-Y-Z) - 1 2 3 4 5 6 - 1 2 3 4 5 6 - ---- K:1 Z: 1 - 1 / 1: 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 - 2 / 2: 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 - 3 / 3: 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 - 4 / 4: 6.0000 7.0000 8.0000 9.0000 10.0000 11.0000 - ---- K:2 Z: 2 - 1 / 1: 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 - 2 / 2: 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 - 3 / 3: 6.0000 7.0000 8.0000 9.0000 10.0000 11.0000 - 4 / 4: 7.0000 8.0000 9.0000 10.0000 11.0000 12.0000 - ---- K:3 Z: 3 - 1 / 1: 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 - 2 / 2: 6.0000 7.0000 8.0000 9.0000 10.0000 11.0000 - 3 / 3: 7.0000 8.0000 9.0000 10.0000 11.0000 12.0000 - 4 / 4: 8.0000 9.0000 10.0000 11.0000 12.0000 13.0000 -list a1[gx=a2] - VARIABLE : X[GX=X1]+Y[GY=Y1]+Z[GZ=Z1] - regrid: 2 delta on X - SUBSET : 4 by 4 by 3 points (X-Y-Z) - 1 3 5 7 - 1 2 3 4 - ---- K:1 Z: 1 - 1 / 1: 3.0000 5.0000 7.0000 .... - 2 / 2: 4.0000 6.0000 8.0000 .... - 3 / 3: 5.0000 7.0000 9.0000 .... - 4 / 4: 6.0000 8.0000 10.0000 .... - ---- K:2 Z: 2 - 1 / 1: 4.0000 6.0000 8.0000 .... - 2 / 2: 5.0000 7.0000 9.0000 .... - 3 / 3: 6.0000 8.0000 10.0000 .... - 4 / 4: 7.0000 9.0000 11.0000 .... - ---- K:3 Z: 3 - 1 / 1: 5.0000 7.0000 9.0000 .... - 2 / 2: 6.0000 8.0000 10.0000 .... - 3 / 3: 7.0000 9.0000 11.0000 .... - 4 / 4: 8.0000 10.0000 12.0000 .... -list a1[gxy=a2] - VARIABLE : X[GX=X1]+Y[GY=Y1]+Z[GZ=Z1] - regrid: 2 delta on X, 2 delta on Y - SUBSET : 4 by 3 by 3 points (X-Y-Z) - 1 3 5 7 - 1 2 3 4 - ---- K:1 Z: 1 - 1 / 1: 3.0000 5.0000 7.0000 .... - 3 / 2: 5.0000 7.0000 9.0000 .... - 5 / 3: .... .... .... .... - ---- K:2 Z: 2 - 1 / 1: 4.0000 6.0000 8.0000 .... - 3 / 2: 6.0000 8.0000 10.0000 .... - 5 / 3: .... .... .... .... - ---- K:3 Z: 3 - 1 / 1: 5.0000 7.0000 9.0000 .... - 3 / 2: 7.0000 9.0000 11.0000 .... - 5 / 3: .... .... .... .... -list a1[gzxy=a2] - VARIABLE : X[GX=X1]+Y[GY=Y1]+Z[GZ=Z1] - regrid: 2 delta on X, 2 delta on Y, 2 delta on Z - SUBSET : 4 by 3 by 2 points (X-Y-Z) - 1 3 5 7 - 1 2 3 4 - ---- K:1 Z: 1 - 1 / 1: 3.0000 5.0000 7.0000 .... - 3 / 2: 5.0000 7.0000 9.0000 .... - 5 / 3: .... .... .... .... - ---- K:2 Z: 3 - 1 / 1: 5.0000 7.0000 9.0000 .... - 3 / 2: 7.0000 9.0000 11.0000 .... - 5 / 3: .... .... .... .... -list a1[gxz=a2] - VARIABLE : X[GX=X1]+Y[GY=Y1]+Z[GZ=Z1] - regrid: 2 delta on X, 2 delta on Z - SUBSET : 4 by 4 by 2 points (X-Y-Z) - 1 3 5 7 - 1 2 3 4 - ---- K:1 Z: 1 - 1 / 1: 3.0000 5.0000 7.0000 .... - 2 / 2: 4.0000 6.0000 8.0000 .... - 3 / 3: 5.0000 7.0000 9.0000 .... - 4 / 4: 6.0000 8.0000 10.0000 .... - ---- K:2 Z: 3 - 1 / 1: 5.0000 7.0000 9.0000 .... - 2 / 2: 6.0000 8.0000 10.0000 .... - 3 / 3: 7.0000 9.0000 11.0000 .... - 4 / 4: 8.0000 10.0000 12.0000 .... - -! 6/01 -! test use of expressions in dynamic grid commands -SHOW GRID temp[d=2,gx=sst[d=1],y=10s:2s:.2] ! implicit Y axis - GRID (G011) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - (AX025) LATITUDE 41 r 10S 2S 41 pts - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 full - normal T -SHOW GRID "temp[d=2,gx=sst[d=1],y=10s:2s:.2] + 5" - GRID (G011) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - (AX018) LATITUDE 41 r 10S 2S 41 pts - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 full - normal T -SHOW GRID FFTA(sst[d=1,gx=temp[d=2],y=10s:2s:.2,l=1:5]) ! imposed T axis - GRID (G006) - name axis # pts start end subset - XAXLEVITR1_160 LONGITUDE 160mr 20.5E 179.5E full - (AX025) LATITUDE 41 r 10S 2S 41 pts - normal Z - (AX012) T (CYC/hour) 2 r 3.4224E-04 6.8448E-04 (axis from grid-changing func) -SHOW GRID SORTI(temp[d=2,gx=sst[d=1],y=10s:2s:.2]) ! abstract X axis - GRID (G011) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 (axis from grid-changing func) - (AX025) LATITUDE 41 r 10S 2S 41 pts - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 full - normal T -SHOW GRID "temp[d=2,gx=sst[d=1],y=10s:2s:.2] + 5",FFTA(sst[d=1,gx=temp[d=2],y=10s:2s:.2,l=1:5]),SORTI(temp[d=2,gx=sst[d=1],y=10s:2s:.2]) - GRID (G011) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - (AX012) LATITUDE 41 r 10S 2S 41 pts - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 full - normal T - GRID (G006) - name axis # pts start end subset - XAXLEVITR1_160 LONGITUDE 160mr 20.5E 179.5E full - (AX025) LATITUDE 41 r 10S 2S 41 pts - normal Z - (AX018) T (CYC/hour) 2 r 3.4224E-04 6.8448E-04 (axis from grid-changing func) - GRID (G011) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 (axis from grid-changing func) - (AX025) LATITUDE 41 r 10S 2S 41 pts - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 full - normal T - -load/x=160e/y=5s temp[d=2,gx=sst[d=1],y=10s:2s:.2] + 5 -SHOW GRID - Default grid for DEFINE VARIABLE is (G017) - Last successful data access was on grid (G011) - GRID (G011) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - (AX018) LATITUDE 41 r 10S 2S 41 pts - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 full - normal T -SET GRID FFTA(sst[d=1,gx=temp[d=2],y=10s:2s:.2,l=1:5]) + 5 -SHOW GRID - Default grid for DEFINE VARIABLE is (G006) - Last successful data access was on grid (G006) - GRID (G006) - name axis # pts start end subset - XAXLEVITR1_160 LONGITUDE 160mr 20.5E 179.5E full - (AX025) LATITUDE 41 r 10S 2S full - normal Z - (AX012) T (CYC/hour) 2 r 3.4224E-04 6.8448E-04 full -list/j=1:5 j - VARIABLE : J - axis (AX025) - SUBSET : 5 points (LATITUDE) - 9.2S / 5: 5.00000 - 9.4S / 4: 4.00000 - 9.6S / 3: 3.00000 - 9.8S / 2: 2.00000 - 10S / 1: 1.00000 -DEFINE GRID/LIKE="temp[d=2,gx=sst[d=1],y=10s:2s:.2] + 5" mygrid -SHOW GRID MYGRID - GRID MYGRID - name axis # pts start end - COADSX LONGITUDE 180mr 21E 19E(379) - (AX025) LATITUDE 41 r 10S 2S - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 - normal T -SHOW GRID/DYNAMIC -Dynamic grids: - GRID (G006) use count: 1 - name axis # pts start end - XAXLEVITR1_160 LONGITUDE 160mr 20.5E 179.5E - (AX025) LATITUDE 41 r 10S 2S - normal Z - (AX012) T (CYC/hour) 2 r 3.4224E-04 6.8448E-04 - - -! ******** V53 Additions below *********** - -GO bn_reset bn_calendar -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_calendar -GO bn_calendar -! bn_calendar.jnl -! Version 5.3 -! Add definitions of calendar axes as a NetCDF attribute of the time axis -! DEFINE AXIS/CALENDAR -! regridding between different calendar axes -! write and read NetCDF files with the new attribute. - -define axis/t="1-jan-1988":"1-jan-1990":1/units=days/calendar=360DAY tdays -define grid/t=tdays tgrid -let my_data = sin(l[g=tgrid]) -list my_data[t="27-feb-1988":"1-mar-1988"] - VARIABLE : SIN(L[G=TGRID]) - SUBSET : 5 points (TIME) - CALENDAR : 360DAY - 27-FEB-1988 00 / 57: 0.436165 - 28-FEB-1988 00 / 58: 0.992873 - 29-FEB-1988 00 / 59: 0.636738 - 30-FEB-1988 00 / 60: -0.304811 - 01-MAR-1988 00 / 61: -0.966118 - -define axis/t="1-jan-1988":"1-jan-1990":1/units=days/calendar=noleap tdays -define grid/t=tdays tgrid -let my_data = sin(l[g=tgrid]) -list my_data[t="27-feb-1988":"1-mar-1988"] - VARIABLE : SIN(L[G=TGRID]) - SUBSET : 3 points (TIME) - CALENDAR : NOLEAP - 27-FEB-1988 00 / 58: 0.992873 - 28-FEB-1988 00 / 59: 0.636738 - 01-MAR-1988 00 / 60: -0.304811 - - - -define axis/t="1-jan-1988":"1-jan-1990":1/units=days/calendar=julian tdays -define grid/t=tdays tgrid -let my_data = sin(l[g=tgrid]) -list my_data[t="27-feb-1988":"1-mar-1988"] - VARIABLE : SIN(L[G=TGRID]) - SUBSET : 4 points (TIME) - CALENDAR : JULIAN - 27-FEB-1988 00 / 58: 0.992873 - 28-FEB-1988 00 / 59: 0.636738 - 29-FEB-1988 00 / 60: -0.304811 - 01-MAR-1988 00 / 61: -0.966118 - -define axis/t="1-jan-1988":"1-jan-1990":1/units=days/calendar=gregorian tdays -define grid/t=tdays tgrid -let my_data = sin(l[g=tgrid]) -list my_data[t="27-feb-1988":"1-mar-1988"] - VARIABLE : SIN(L[G=TGRID]) - SUBSET : 4 points (TIME) - 27-FEB-1988 00 / 58: 0.992873 - 28-FEB-1988 00 / 59: 0.636738 - 29-FEB-1988 00 / 60: -0.304811 - 01-MAR-1988 00 / 61: -0.966118 - - - -! Regrid between different calendar axes using @lin(default) @asn and @nrst -use gt4d011 - -set region/x=132w/y=2n/k=1 -define axis/t="20-aug-1982":"1-jan-1983":7/units=days/calendar=noleap tweeks -define grid/t=tweeks tgrid -let ndata = temp[gt=tgrid] -list/l=15:18 ndata - VARIABLE : TEMP[GT=TGRID] - FILENAME : gt4d011.cdf - SUBSET : 4 points (TIME) - CALENDAR : NOLEAP - LONGITUDE: 132.5W - LATITUDE : 1.833N - DEPTH (m): 5 - 132.5W - 98 - 26-NOV-1982 00 / 15: 32.8979 - 03-DEC-1982 00 / 16: 32.9221 - 10-DEC-1982 00 / 17: 32.9583 - 17-DEC-1982 00 / 18: 32.9707 - -define axis/t="20-aug-1982":"1-jan-1983":7/units=days/calendar=360day tweeks -let ndata = temp[gt=tgrid@asn] -list/l=15:18 ndata - VARIABLE : TEMP[GT=TGRID@ASN] - FILENAME : gt4d011.cdf - SUBSET : 4 points (TIME) - CALENDAR : 360DAY - LONGITUDE: 132.5W - LATITUDE : 1.833N - DEPTH (m): 5 - 132.5W - 98 - 28-NOV-1982 00 / 15: 32.9508 - 05-DEC-1982 00 / 16: 32.9011 - 12-DEC-1982 00 / 17: 32.8862 - 19-DEC-1982 00 / 18: 32.9099 - - -define axis/t="20-aug-1982":"1-jan-1983":7/units=days/calendar=julian tweeks -let ndata = temp[gt=tgrid@nrst] -list/t="25-nov-1982":"18-dec-1982" ndata - VARIABLE : TEMP[GT=TGRID@NRST] - FILENAME : gt4d011.cdf - SUBSET : 4 points (TIME) - CALENDAR : JULIAN - LONGITUDE: 132.5W - LATITUDE : 1.833N - DEPTH (m): 5 - 132.5W - 98 - 26-NOV-1982 00 / 15: 32.9099 - 03-DEC-1982 00 / 16: 32.9287 - 10-DEC-1982 00 / 17: 32.9658 - 17-DEC-1982 00 / 18: 32.9710 - - - - -! Regrid to a new calendar, write to NetCDF file and read back in. -can data/all -can region -can var/all - -use gt4d011 - -set region/k=1 -define axis/t="20-aug-1982":"1-jan-1983":7/units=days/calendar=noleap tweeks -define grid/t=tweeks tgrid -let ndata = temp[gt=tgrid] - -save/clobber/file=calsst.cdf/x=140w:130w/y=2s:2n ndata - -can data/all -can var/all -can region - -use calsst -sh data - currently SET data sets: - 1> ./calsst.cdf (default) - name title I J K L - NDATA TEMP[GT=TGRID] 1:10 1:13 1:1 1:21 - -sh grid ndata - GRID GSH1 - name axis # pts start end subset - PSXT91_100 LONGITUDE 10mr 139.5W 130.5W full - PSYT39_51 LATITUDE 13 i 2.167S 1.833N full - PSZT1_1 DEPTH (m) 1 r- 5 5 full - TWEEKS TIME 21 r 20-AUG-1982 00:00 07-JAN-1983 00:00 full -sh axis tweeks - name axis # pts start end - TWEEKS TIME 21 r 20-AUG-1982 00:00 07-JAN-1983 00:00 -T0 = 15-JAN-1901 -CALENDAR = NOLEAP - Axis span (to cell edges) = 147 - -stat/x=135w/y=0 ndata - - TEMP[GT=TGRID] - LONGITUDE: 135.5W - LATITUDE: 0.167S - DEPTH (m): 5 - TIME: 16-AUG-1982 12:00 to 10-JAN-1983 12:00 NOLEAP - E: N/A - F: N/A - DATA SET: ./calsst.cdf - - Total # of data points: 21 (1*1*1*21*1*1) - # flagged as bad data: 0 - Minimum value: 26.228 - Maximum value: 32.608 - Mean value: 30.454 (unweighted average) - Standard deviation: 2.4414 - -sp rm -f calsst.cdf - - -can data/all -can var/all -can region - -! regrid between weekly, daily, monthly axes. -use gt4d011 -set region/x=132w/y=2n/k=1 - -define axis/t="18-aug-1982":"1-jan-1983":1/units=months/calendar=360day tmonths -define grid/t=tmonths tgrid -let ndata = temp[gt=tgrid@nrst] -list/t="25-sep-1982":"18-dec-1982" ndata - VARIABLE : TEMP[GT=TGRID@NRST] - FILENAME : gt4d011.cdf - SUBSET : 4 points (TIME) - CALENDAR : 360DAY - LONGITUDE: 132.5W - LATITUDE : 1.833N - DEPTH (m): 5 - 132.5W - 98 - 18-SEP-1982 / 2: 27.2694 - 18-OCT-1982 / 3: 31.3241 - 18-NOV-1982 / 4: 32.9011 - 18-DEC-1982 / 5: 32.9710 - - -define axis/t="20-aug-1982":"1-jan-1983":1/units=days/calendar=noleap tdays -define grid/t=tdays tgrid -let ndata = temp[gt=tgrid] -list/t="5-dec-1982":"8-dec-1982" ndata - VARIABLE : TEMP[GT=TGRID] - FILENAME : gt4d011.cdf - SUBSET : 4 points (TIME) - CALENDAR : NOLEAP - LONGITUDE: 132.5W - LATITUDE : 1.833N - DEPTH (m): 5 - 132.5W - 98 - 05-DEC-1982 00 / 108: 32.9283 - 06-DEC-1982 00 / 109: 32.9340 - 07-DEC-1982 00 / 110: 32.9401 - 08-DEC-1982 00 / 111: 32.9462 - - - -! Regrid to a modulo calendar axis. - -can data/all -can var/all -can region - -use coads_climatology -set region/x=180/y=0 - -define axis/t="1-jan-0000":"1-dec-0000":1/units=months/calendar=julian/modulo jmonths -define grid/t=jmonths jgrid -let jsst = sst[gt=jgrid] -let nsst = sst[gt=jgrid@nrst] - -list/l=1:4 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 4 points (TIME) - LONGITUDE: 179E - LATITUDE : 1S - 179E - 80 - 16-JAN / 1: 28.2022 - 15-FEB / 2: 28.3646 - 17-MAR / 3: 28.3538 - 16-AUG / 4: .... -list/l=1:4 jsst, nsst - DATA SET: ./data/coads_climatology.cdf - TIME: 01-JAN 00:00 to 16-APR 12:45 JULIAN - LONGITUDE: 179E - LATITUDE: 1S - Column 1: JSST is SST[GT=JGRID] - Column 2: NSST is SST[GT=JGRID@NRST] - JSST NSST -01-JAN / 1: .... 28.2022 -31-JAN / 2: 28.2832 28.2022 -01-MAR / 3: 28.3592 28.3646 -01-APR / 4: .... 28.3538 - -! test negative time step formatting -- added 7/01 *sh* -! this is not specifically a calendar test, but it is a change in V5.3x -define axis/units=days/t/t0=1-jan-1980 tax_neg = {-3,-2,-1} -show axis/l tax_neg - name axis # pts start end - TAX_NEG TIME 3 r 29-DEC-1979 00:00 31-DEC-1979 00:00 -T0 = 1-JAN-1980 - Axis span (to cell edges) = 3 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 29-DEC-1979 00:00:00 1 28-DEC-1979 12:00:00 -3 - 2> 30-DEC-1979 00:00:00 1 29-DEC-1979 12:00:00 -2 - 3> 31-DEC-1979 00:00:00 1 30-DEC-1979 12:00:00 -1 - -! also see bn_all_leap.jnl, 6/2004 -! Added ALL_LEAP, or 366_DAY calendar (which is in the CF conventions). - -GO bn_reset bn_dash_dot -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dash_dot -GO bn_dash_dot -! new PLOT/DASH and PLOT/SYMBOL=DOT qualifiers -! *acm* 5/01 -! *acm* 8/02 Remove calls to SYMBOL=DOT until postscript issues are resolved. -! *kms* 3/18 - size qualifiers for /symbol=dot not an error in pyferret - -plot/dash/i=1:1000 sin(62.8*i) -plot/over/dash=(0.4,0.1,0.4,0.1)/color=red/thick/i=1:1000 sin(62.8*(i+10) ) -plot/over/dash=(0.1,0.1,0.04,0.05)/color=blue/thick=1/i=1:1000 sin(62.8*(i+20) ) - -!plot/symbol=dot/i=1:1000 sin(62.8*i) -!plot/symbol=dot/color=red/over/i=1:1000 sin(62.8*(i+20)) - -! test warnings -!plot/symbol=dot/thick/over/i=1:1000 sin(62.8*(i+10) ) -!plot/symbol=dot/size=0.5/over/i=1:1000 sin(62.8*(i+10) ) - -! intentional errors -set mode ignore -plot/dash=(1., 2.)/color=red/thick/i=1:1000 sin(62.8*(i+10) ) -plot/dash=(-1., 2., 3., 4.)/i=1:1000 sin(62.8*(i+20) ) - -GO bn_reset bn_flowlines -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_flowlines -GO bn_flowlines -! bn_flowlines.jnl -! VECTOR/FLOW -! 6/2001 -! ACM 4/2005 set mode meta to save one of the plots for the metafile checks. -! and cancel mode logo, so that .plt files are comparable. -! ACM 4/2006 new qualifier /LENGTH sets the length of the arrow heads -! 2/18 *acm* keep mode logo turned off - -set window/asp=1/siz=0.5 -use gtbc011 -set reg/k=1/l=1/y=0:20 -vector/aspect u,v -vector/flow/over u,v - -! /LEN= for setting size of arrow heads -vector/aspect u,v -vector/flow/over/len=10 u,v - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -set mode meta flowlines.plt - -can region -vector/i=1:50/j=1:50/length=50/aspect/nolabel sin(i/20)*10+j-20,-1*cos(j/10)*10+i-20 -flow/i=1:50/j=1:50/over/color=blue/thick/den=1 sin(i/20)*10+j-20,-1*cos(j/10)*10+i-20 -flow/i=1:50/j=1:50/over/color=green/den=4/len=20 sin(i/20)*10+j-20,-1*cos(j/10)*10+i-20 - -can mode meta -! curvilinear flowline plots -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -use coads_climatology -go mp_sinusoidal -set grid sst - - -let fsst = missing(sst,5) -let yy = if abs(y[gt=sst]) le 20 then 10 else (100-abs(y[gt=sst]+1))/ 10. - -set reg/l=1 -vec/noax/xskip=16/yskip=8/len=15/title="Sinusoidal Projection" fsst*0,fsst*0+yy*mp_mask, x_page,y_page -vec/over/flow/noax/xskip=16/yskip=8/len=5/title="Sinusoidal Projection" fsst*0,fsst*0+yy*mp_mask, x_page,y_page - -! ******** V533 Additions below *********** - -GO bn_reset bn_logaxes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_logaxes -GO bn_logaxes -! Test the qualifiers /HLOG and /VLOG for setting -! log axes. On a depth axis, inverse log plot. - -! use /VLOG -def axis/z zlog=exp(k[k=1:10]) -let fcn = k[gz=zlog] -set view lower -plot/vlog/vlimits=1:100000 fcn -! The same plot, calling axtype using old syntax -set view upper -plot/vlimits=0:5/set fcn -ppl axtype,1,3 -ppl plot - -! use /HLOG, and then /VLOG/HLOG both -def axis/x dlog = exp(-1*(10-i[i=1:10])) -let fcn = (i[gx=dlog])^2 -set view upper -plot/vlog fcn -set view lower -plot/vlog/hlog fcn -can view - -! transpose axes for /HLOG on depth axis -def axis/z/depth dlog=exp(k[k=1:10]) -let fcnd = k[gz=dlog] -plot/trans/hlog fcnd - -! add test for /VLOG on depth axis -! (prev to v6.3+ the right-hand axis had incorrect tic marks) -def axis/z/depth dlog=exp(k[k=1:10]) -let fcnd = k[gz=dlog] -plot/vlog fcnd - -! intentional error -! This wont work - no log of negative values on axis - -set mode ignore -def axis/x dlog = -1*(10-i[i=1:10]) -let fcn = (i[gx=dlog])^2 -plot/hlog fcn - -! *kob* same tests for internal external functions but moved out of -! the bn_external_function jnl file. -GO bn_reset bn_internal_external_functions -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_internal_external_functions -GO bn_internal_external_functions -! test internal external functions. These moved from bn_external_functions -! 6/01 because on systems w/out external functions support, the internal -! functions were not being tested - most notably win32 *kob* - -! 8/02/01 *acm* add bench_eof; now internally-linked. -! 10/22/01 *acm* add bench_compress_by (compressi_by, compressj_by, ...) -! 06/02 *kob* add bench_internal_string_functions (strlen, strcat, strindex, etc) -! 05/05 *acm* move bench_compress here; internally linked. -! 05/07 *acm* move tax_* functions and fill_xy here; internally linked. -! 3/12 *acm* new script bn_scat2grid tests scat2grid functions in all directions -! 4/12 *kms* new scripts bn_scat2grid_gl, bn_scat2gridlaplace_tarasoff, -! bn_scat2grid_nobs, bn_scat2grid_t, bn_transpose, bn_unique_str2int - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bench_fft -! Benchmark Ferret script for FFT. Uses analytic function of time. - -! 5/99 ACM -! FFTA function computes the FFT amplitude spectrum. -! FFTP function computes the FFT phase -! -! The script bench_fft_visual.jnl plots the results - -SET MODE IGNORE_ERRORS -SAY The message *** NOTE: unknown axis units: FREQ is informational. fcn still works. -The message *** NOTE: unknown axis units: FREQ is informational. fcn still works. - -! Note, previously the time axis was defined as follows. When the -! function is defined in terms of the time coordinate data, tpts, -! tpts is single-precision and so its use has precision problems. -! (Saw this when changing to double-precision Ferret) - -DEFINE AXIS/t=1-Jan-1990:31-Dec-1990:24 dayt - - - -DEFINE AXIS/t=1-Jan-1990:31-Dec-1990:24/t0=1-jan-1980 dayt - - -DEFINE GRID/T=dayt tgrid -SH GRID tgrid - GRID TGRID - name axis # pts start end - normal X - normal Y - normal Z - DAYT TIME 365 r 01-JAN-1990 00:00 31-DEC-1990 00:00 -SET GRID tgrid - -LET fcn1 = sin(kt*tpts - phase) /2. -LET fcn2 = cos(pt*tpts) -LET phase = 6. -LET kt = 0.5 -LET pt = 0.3 - -! Use an analytic function. - -LET sample_function = fcn1 - fcn2 -LET tpts = t -LET days_fft = ffta(sample_function[l=1:365]) - -LIST/L=30:35 days_fft - VARIABLE : FFTA(SAMPLE_FUNCTION[L=1:365]) - SUBSET : 6 points (T (CYC/HOURS)) - 0.00343 / 30: 0.013664 - 0.00355 / 31: 0.021183 - 0.00366 / 32: 0.048189 - 0.00378 / 33: 0.498982 - 0.00389 / 34: 0.052353 - 0.00401 / 35: 0.032474 -LIST/L=50:55 days_fft - VARIABLE : FFTA(SAMPLE_FUNCTION[L=1:365]) - SUBSET : 6 points (T (CYC/HOURS)) - 0.00572 / 50: 0.072791 - 0.00584 / 51: 0.104108 - 0.00595 / 52: 0.185372 - 0.00607 / 53: 0.894540 - 0.00618 / 54: 0.311122 - 0.0063 / 55: 0.131705 - -! Compute the phase spectrum - -LET days_fftp = fftp(sample_function[l=1:365]) - -LIST/l=1:20 days_fftp - VARIABLE : FFTP(SAMPLE_FUNCTION[L=1:365]) - SUBSET : 20 points (T (CYC/HOURS)) - 0.00011 / 1: -178.057 - 0.00023 / 2: -176.112 - 0.00034 / 3: -174.161 - 0.00046 / 4: -172.203 - 0.00057 / 5: -170.234 - 0.00069 / 6: -168.251 - 0.0008 / 7: -166.250 - 0.00092 / 8: -164.228 - 0.00103 / 9: -162.179 - 0.00114 / 10: -160.100 - 0.00126 / 11: -157.983 - 0.00137 / 12: -155.821 - 0.00149 / 13: -153.606 - 0.0016 / 14: -151.326 - 0.00172 / 15: -148.970 - 0.00183 / 16: -146.520 - 0.00195 / 17: -143.957 - 0.00206 / 18: -141.255 - 0.00217 / 19: -138.381 - 0.00229 / 20: -135.294 - - -!PAUSE - - -USE coads_vwnd.cdf -SET REGION/I=90/J=65 - -SAY This should bail out with error msg about Time axis must be regular -This should bail out with error msg about Time axis must be regular - -LET vw_fft = ffta(vwnd[l=37:60]) -LIST vw_fft - -DEFINE AXIS/T=16-Jan-1949:16-Dec-1950:730.5@ave montht -DEFINE GRID/T=montht tgrid -LET vw_tim = vwnd[gt=tgrid] -LET vw_fft = ffta(vw_tim[l=2:23]) - -SAY This one is ok -This one is ok -LIST vw_fft - VARIABLE : FFTA(VW_TIM[L=2:23]) - FILENAME : coads_vwnd.cdf - SUBSET : 11 points (T (CYC/HOURS)) - LONGITUDE: 161W - LATITUDE : 39N - 161W - 90 - 0.000062 / 1: 1.99605 - 0.000124 / 2: 2.16839 - 0.000187 / 3: 0.17387 - 0.000249 / 4: 2.01530 - 0.000311 / 5: 0.35361 - 0.000373 / 6: 1.72488 - 0.000436 / 7: 1.25348 - 0.000498 / 8: 0.30416 - 0.00056 / 9: 1.65059 - 0.000622 / 10: 0.81359 - 0.000684 / 11: 0.15377 - -CANCEL MODE IGNORE_ERRORS - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bench_gridding -! bench_gridding.jnl -! *acm* 8/99 - -! Call scat2gridlaplace_xy and scat2gridgauss_xy -! to put scattered data onto a regularly spaced grid. - -! function definition from objective_analysis_demo.jnl - -! 2/2005 changed number of arguments to the Gaussing gridding functions - - -define axis/x=0:10:0.05 x10 -define axis/y=0:10:0.05 y10 -define grid/x=x10/y=y10 g10x10 -set grid g10x10 - -let WAVE = SIN(KX*XPTS + KY*YPTS - PHASE) / 3 -let PHASE = 0 -let KAPPA = 0.4 -let KX = 0.4 -let KY = 0.7 -let FCN1 = SIN(R)/(R+1) -let R = ((XPTS-X0)^2+ 5*(YPTS-Y0)^2)^0.5 -let X0 = 3 -let Y0 = 8 - -LET sample_function = fcn1 + wave - -let xpts = x; let ypts = y - -list/x=4:5/y=1 sample_function - VARIABLE : FCN1 + WAVE - SUBSET : 21 points (X) - Y : 1 - 1 - 21 - 4 / 81: 0.249981 - 4.05 / 82: 0.245294 - 4.1 / 83: 0.240500 - 4.15 / 84: 0.235600 - 4.2 / 85: 0.230597 - 4.25 / 86: 0.225493 - 4.3 / 87: 0.220289 - 4.35 / 88: 0.214988 - 4.4 / 89: 0.209592 - 4.45 / 90: 0.204102 - 4.5 / 91: 0.198521 - 4.55 / 92: 0.192851 - 4.6 / 93: 0.187094 - 4.65 / 94: 0.181253 - 4.7 / 95: 0.175329 - 4.75 / 96: 0.169325 - 4.8 / 97: 0.163243 - 4.85 / 98: 0.157086 - 4.9 / 99: 0.150856 - 4.95 / 100: 0.144555 - 5 / 101: 0.138186 - -can mem /all - -let xpts = 10*randu(i); let ypts = 10*randu(i+2) - -set region/i=1:200 -define axis/x=1:10:.5 xax5 -define axis/y=1:10:.5 yax5 - -let sgrid = scat2gridlaplace_xy (xpts, ypts, sample_function, x[gx=xax5], y[gy=yax5], 5., 5) -! the following in now needed since the result grid axes are no longer extended -! load sgrid -! otherwise the following would use a 3-element X axis and 1-element Y axis -! list/x=4:5/y=1 sgrid -list /order=yx sgrid - VARIABLE : SCAT2GRIDLAPLACE_XY (XPTS, YPTS, SAMPLE_FUNCTION, X[GX=XAX5], Y[GY=YAX5], 5., 5) - SUBSET : 19 by 19 points (Y-X) - ... listing every 2th point - 1 2 3 4 5 6 7 8 9 10 - 1 3 5 7 9 11 13 15 17 19 - 1 / 1: 0.308984 0.361972 0.109085 -0.004967 -0.136744 -0.408450 -0.225496 0.151670 0.225024 0.073150 - 1.5 / 2: 0.315638 0.371230 0.093750 -0.037386 -0.201756 -0.452435 -0.150009 0.278155 0.330914 0.069854 - 2 / 3: 0.378812 0.315634 0.037083 -0.088708 -0.253832 -0.492242 -0.073700 0.374786 0.450968 0.081332 - 2.5 / 4: 0.420045 0.252191 -0.063598 -0.144131 -0.252740 -0.466614 0.019391 0.439631 0.491399 0.089314 - 3 / 5: 0.406392 0.198397 -0.139974 -0.197140 -0.279040 -0.425529 0.118978 0.432969 0.545303 0.085462 - 3.5 / 6: 0.351014 0.169762 -0.201579 -0.257493 -0.283843 -0.357982 0.185850 0.585861 0.530755 0.058808 - 4 / 7: 0.277107 0.096747 -0.246534 -0.289021 -0.258951 -0.329342 0.312474 0.641602 0.518714 0.021205 - 4.5 / 8: 0.188951 0.044707 -0.312641 -0.319182 -0.213513 -0.222475 0.302121 0.626625 0.412068 -0.008475 - 5 / 9: 0.139939 -0.037119 -0.323878 -0.333812 -0.199768 -0.134206 0.265570 0.577839 0.312094 -0.056718 - 5.5 / 10: 0.078577 -0.096394 -0.338922 -0.312885 -0.172743 -0.085023 0.206702 0.482419 0.235803 -0.079778 - 6 / 11: 0.007372 -0.135345 -0.377702 -0.274110 -0.121663 -0.019270 0.173802 0.354012 0.148779 -0.122582 - 6.5 / 12: -0.071091 -0.209142 -0.370362 -0.249289 -0.041035 0.069505 0.148512 0.236838 0.045584 -0.173237 - 7 / 13: -0.137482 -0.254334 -0.378632 -0.228148 0.063018 0.183000 0.135520 0.132174 -0.050976 -0.215292 - 7.5 / 14: -0.202760 -0.266868 -0.346402 -0.210460 0.168372 0.279647 0.178541 0.064025 -0.115153 -0.228150 - 8 / 15: -0.275191 -0.259180 -0.300179 -0.155421 0.233304 0.351951 0.219702 0.033928 -0.135697 -0.218938 - 8.5 / 16: -0.326812 -0.273253 -0.245151 -0.113795 0.264889 0.402452 0.253275 0.029382 -0.138544 -0.200463 - 9 / 17: -0.351551 -0.266762 -0.164899 -0.032110 0.276385 0.437033 0.281707 0.036426 -0.134209 -0.191118 - 9.5 / 18: -0.364215 -0.240170 -0.093384 0.038122 0.276072 0.442607 0.294658 0.049712 -0.140883 -0.217410 - 10 / 19: -0.369196 -0.210353 -0.040323 0.103110 0.280278 0.405237 0.298599 0.066760 -0.138644 -0.252572 - -let sgrid = scat2gridlaplace_xy (xpts, ypts, sample_function, x[gx=xax5], y[gy=yax5], 1.,1) -! the following in now needed since the result grid axes are no longer extended -! load sgrid -! otherwise the following would use a 3-element X axis and 1-element Y axis -! list/x=4:5/y=1 sgrid -list /order=yx sgrid - VARIABLE : SCAT2GRIDLAPLACE_XY (XPTS, YPTS, SAMPLE_FUNCTION, X[GX=XAX5], Y[GY=YAX5], 1.,1) - SUBSET : 19 by 19 points (Y-X) - ... listing every 2th point - 1 2 3 4 5 6 7 8 9 10 - 1 3 5 7 9 11 13 15 17 19 - 1 / 1: 0.290994 0.424162 0.097006 0.003143 -0.136744 -0.412297 -0.207808 .... 0.241076 .... - 1.5 / 2: 0.314929 0.373640 0.124083 -0.001456 -0.201756 -0.441151 -0.189145 0.331034 0.333491 0.005624 - 2 / 3: 0.337643 0.312076 0.046130 -0.011788 -0.267158 -0.486359 -0.073700 .... 0.461555 .... - 2.5 / 4: 0.359734 0.242399 -0.066085 .... -0.243857 -0.457333 -0.031104 0.417939 0.473995 0.200894 - 3 / 5: .... 0.198698 -0.131262 -0.203700 -0.277160 -0.388506 0.065758 0.434211 0.539378 .... - 3.5 / 6: 0.310287 0.169976 -0.216298 -0.249436 -0.282498 -0.336468 0.156727 0.537358 0.505391 0.142444 - 4 / 7: 0.274766 0.091884 -0.274252 -0.239529 -0.262206 -0.333969 0.312474 0.580377 0.520608 0.093618 - 4.5 / 8: 0.184044 0.041657 -0.304953 .... -0.210582 -0.196012 0.326227 0.576412 0.366262 0.059061 - 5 / 9: 0.146796 -0.044536 -0.353323 -0.375483 -0.190888 -0.106617 0.284743 0.521940 0.278387 -0.035055 - 5.5 / 10: 0.041582 -0.109698 -0.335399 -0.325452 .... -0.088590 0.221990 0.438637 0.235803 0.041225 - 6 / 11: -0.012273 -0.174380 -0.371063 -0.263403 .... .... 0.172629 0.346297 0.219052 .... - 6.5 / 12: -0.064809 -0.127226 -0.366128 -0.245270 .... 0.104409 0.165680 0.242858 0.095140 .... - 7 / 13: -0.138619 .... -0.379843 -0.230018 .... 0.181947 0.135892 0.164309 -0.026041 -0.204659 - 7.5 / 14: -0.203907 -0.289087 -0.346009 -0.209873 0.169451 0.272161 0.184553 0.103343 -0.114248 .... - 8 / 15: -0.285911 -0.258721 -0.300520 -0.170515 0.240968 0.352162 0.229361 0.066151 -0.135985 .... - 8.5 / 16: -0.329428 -0.279209 -0.236667 -0.125716 0.292407 0.388989 0.256564 .... -0.139683 -0.183944 - 9 / 17: -0.341597 -0.268585 -0.177502 -0.064298 0.277369 0.431662 0.288204 0.023055 -0.139178 -0.195303 - 9.5 / 18: -0.343919 -0.225702 -0.093580 0.013191 0.253357 0.442399 0.294693 0.034103 -0.137639 -0.211783 - 10 / 19: .... -0.204222 -0.021547 .... .... 0.421118 0.287954 .... -0.144731 -0.203650 - -let sgrid = scat2gridgauss_xy (xpts, ypts, sample_function, x[gx=xax5], y[gy=yax5], 0.5, 0.5, 2, 2) -! list/x=4:5/y=1 sgrid -list /order=yx sgrid - VARIABLE : SCAT2GRIDGAUSS_XY (XPTS, YPTS, SAMPLE_FUNCTION, X[GX=XAX5], Y[GY=YAX5], 0.5, 0.5, 2, 2) - SUBSET : 19 by 19 points (Y-X) - ... listing every 2th point - 1 2 3 4 5 6 7 8 9 10 - 1 3 5 7 9 11 13 15 17 19 - 1 / 1: 0.274901 0.351990 0.125870 0.000547 -0.130676 -0.409444 -0.196473 0.113026 0.291807 0.128390 - 1.5 / 2: 0.299222 0.340543 0.124519 -0.061100 -0.263759 -0.435083 -0.176723 0.348424 0.372371 0.128390 - 2 / 3: 0.281567 0.320514 0.026296 -0.110384 -0.295665 -0.434870 -0.190697 0.460511 0.445156 0.191902 - 2.5 / 4: 0.290517 0.274621 -0.063970 -0.166628 -0.264776 -0.417589 -0.116164 0.537969 0.442169 0.264943 - 3 / 5: 0.291464 0.248219 -0.125567 -0.223844 -0.256285 -0.371561 0.247717 0.497526 0.452304 0.276328 - 3.5 / 6: 0.267037 0.177128 -0.170576 -0.230988 -0.274809 -0.281194 0.254637 0.510104 0.422794 0.248322 - 4 / 7: 0.225394 0.114379 -0.176660 -0.227903 -0.272403 -0.244676 0.280180 0.544886 0.397193 0.212214 - 4.5 / 8: 0.189285 0.081180 -0.332907 -0.343445 -0.230804 -0.244260 0.339829 0.530983 0.335082 0.061286 - 5 / 9: 0.127042 0.039043 -0.356226 -0.369075 -0.177935 -0.153186 0.253590 0.499044 0.303545 0.025609 - 5.5 / 10: 0.048635 -0.126901 -0.331398 -0.289789 -0.162591 -0.082396 0.192227 0.401098 0.303746 0.055576 - 6 / 11: -0.037713 -0.136552 -0.336681 -0.268753 -0.197051 0.016254 0.209390 0.295370 0.263940 -0.135684 - 6.5 / 12: -0.064917 -0.134912 -0.359398 -0.220212 -0.011644 0.110802 0.164667 0.259319 0.078530 -0.137706 - 7 / 13: -0.103972 -0.140560 -0.362975 -0.166853 0.066535 0.193231 0.149487 0.141794 -0.113016 -0.143405 - 7.5 / 14: -0.199710 -0.279592 -0.339043 -0.191829 0.185240 0.262158 0.152165 0.039367 -0.115781 -0.151274 - 8 / 15: -0.235285 -0.278212 -0.283035 -0.157240 0.250258 0.333134 0.204490 0.017943 -0.115931 -0.171603 - 8.5 / 16: -0.306008 -0.278546 -0.240470 -0.100659 0.251651 0.363846 0.251194 0.080410 -0.130532 -0.187823 - 9 / 17: -0.335648 -0.266336 -0.213641 0.013456 0.288406 0.405273 0.272644 0.141238 -0.142601 -0.193561 - 9.5 / 18: -0.349458 -0.212960 -0.108340 0.097657 0.205467 0.422547 0.294706 0.116317 -0.143410 -0.195569 - 10 / 19: -0.353035 -0.181573 -0.086119 0.078837 0.108731 0.420380 0.321587 0.036216 -0.151253 -0.191472 - -let sgrid = scat2gridgauss_xy (xpts, ypts, sample_function, x[gx=xax5], y[gy=yax5], 1., 1., 6, 6) -! list/x=4:5/y=1 sgrid -list /order=yx sgrid - VARIABLE : SCAT2GRIDGAUSS_XY (XPTS, YPTS, SAMPLE_FUNCTION, X[GX=XAX5], Y[GY=YAX5], 1., 1., 6, 6) - SUBSET : 19 by 19 points (Y-X) - ... listing every 2th point - 1 2 3 4 5 6 7 8 9 10 - 1 3 5 7 9 11 13 15 17 19 - 1 / 1: 0.281552 0.312213 0.193558 -0.030592 -0.206961 -0.317374 -0.200235 0.035776 0.251615 0.217897 - 1.5 / 2: 0.275271 0.296173 0.155526 -0.085149 -0.266966 -0.350539 -0.202341 0.168678 0.341517 0.274690 - 2 / 3: 0.267170 0.260868 0.085385 -0.139671 -0.296632 -0.356898 -0.159219 0.302176 0.393862 0.319020 - 2.5 / 4: 0.256878 0.203678 0.000735 -0.176300 -0.300338 -0.332200 -0.037496 0.393557 0.416391 0.336288 - 3 / 5: 0.242290 0.152878 -0.057424 -0.197874 -0.288975 -0.265744 0.103144 0.430207 0.412825 0.327333 - 3.5 / 6: 0.222556 0.121831 -0.090666 -0.216330 -0.271362 -0.184480 0.187704 0.436022 0.391648 0.301597 - 4 / 7: 0.199438 0.094153 -0.126981 -0.240001 -0.252964 -0.137926 0.223192 0.431619 0.360695 0.262091 - 4.5 / 8: 0.165055 0.052904 -0.183379 -0.267119 -0.231965 -0.117235 0.236822 0.416791 0.325354 0.213933 - 5 / 9: 0.103166 -0.013463 -0.234016 -0.283000 -0.207964 -0.093414 0.234809 0.379625 0.299928 0.181999 - 5.5 / 10: 0.019557 -0.082190 -0.253614 -0.280357 -0.179994 -0.046106 0.219394 0.327974 0.276824 0.165491 - 6 / 11: -0.043123 -0.124439 -0.262702 -0.257404 -0.115678 0.036003 0.200459 0.273757 0.219858 0.088693 - 6.5 / 12: -0.080238 -0.159570 -0.282392 -0.216326 0.011196 0.126375 0.181603 0.207992 0.109108 -0.036546 - 7 / 13: -0.125137 -0.215907 -0.293904 -0.180571 0.098961 0.191463 0.171154 0.130122 -0.005575 -0.104958 - 7.5 / 14: -0.186850 -0.262803 -0.283642 -0.149158 0.150674 0.242358 0.181345 0.073483 -0.066151 -0.129099 - 8 / 15: -0.238052 -0.273211 -0.262614 -0.116643 0.191858 0.284230 0.210919 0.059208 -0.090155 -0.143986 - 8.5 / 16: -0.274654 -0.269613 -0.239107 -0.087178 0.223535 0.315867 0.242668 0.071672 -0.107088 -0.159422 - 9 / 17: -0.300031 -0.259464 -0.211792 -0.059935 0.246533 0.340287 0.266976 0.081553 -0.124034 -0.168991 - 9.5 / 18: -0.314125 -0.241656 -0.177924 -0.031561 0.260916 0.358325 0.284307 0.073478 -0.135647 -0.172063 - 10 / 19: -0.318713 -0.220992 -0.146630 -0.009841 0.266488 0.369766 0.296933 0.053734 -0.142473 -0.172360 - -can mem /all -can var /all -can axis yax5 -can axis xax5 -set grid abstract -can grid g10x10 -can axis y10 -can axis x10 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bn_scat2grid_test -! bn_scat2grid_test.jnl -! From JonCallahan's insitu_gaussian_*.jnl - -! Description: Test functions for XY XZ XT YZ YT ZT gridding of insitu data - -set data scat2grid.nc - -define axis/x=50:70/npoints=20/units=degrees_east x_20 -define axis/y=10:20/npoints=20/units=degrees_north y_20 -define axis/z=0:100/npoints=20/depth/units=meters z_20 -define axis/t=0:8736/unit=hours/t0="01-JAN-1995 00:00:00"/npoints=20 t_20 - -!********* -! SCAT2GRIDGAUSS functions -! XY - -let xy_gauss_gridded = scat2gridgauss_xy(xax,yax,O2_umol_kg,x[gx=x_20],y[gy=y_20],1.5,1.0,5.0,3.0) -fill/lev=30v xy_gauss_gridded -plot/vs/over/nolab xax,yax -ppl shaset reset - -! XZ - -let xz_gauss_gridded = scat2gridgauss_xz(xax,zax,O2_umol_kg,x[gx=x_20],z[gz=z_20],1.5,10,2,20) -fill/lev=30v xz_gauss_gridded -plot/vs/over/nolab xax,zax -ppl shaset reset - -! XT - -let xt_gauss_gridded = scat2gridgauss_xt(xax,tax,O2_umol_kg,x[gx=x_20],t[gt=t_20],1.5,720.0,5.0,2160.0) -fill/lev=30v xt_gauss_gridded -plot/vs/over/nolab xax,tax -ppl shaset reset - -! YZ - -let yz_gauss_gridded = scat2gridgauss_yz(yax,zax,ysequence(O2_umol_kg),y[gy=y_20],z[gz=z_20],1.0,10,3,50) -fill/lev=30v yz_gauss_gridded -plot/vs/over/nolab yax,zax -ppl shaset reset - -! YT - -let yt_gauss_gridded = scat2gridgauss_yt(yax,tax,ysequence(O2_umol_kg),y[gy=y_20],t[gt=t_20],1.0,720,3,2160) -fill/lev=30v yt_gauss_gridded -plot/vs/over/nolab tax,yax -ppl shaset reset - -! ZT - -let zt_gauss_gridded = scat2gridgauss_zt(zax,tax,zsequence(O2_umol_kg),z[gz=z_20],t[gt=t_20],10,720,50,2160) -fill/lev=30v zt_gauss_gridded -plot/vs/over/nolab tax, zax - -can mem/all - -! SCAT2GRIDLAPLACE functions - -! XY - -let xy_laplace_gridded = scat2gridlaplace_xy(xax,yax,O2_umol_kg,x[gx=x_20],y[gy=y_20],2,2) -show grid xy_laplace_gridded - GRID (G006) - name axis # pts start end subset - X_20 LONGITUDE 20mr 50E 70E full - Y_20 LATITUDE 20 r 10N 20N full - normal Z - normal T -! when the result grid axes were extended, the axis coordinates in the following were messed up -list xy_laplace_gridded - VARIABLE : SCAT2GRIDLAPLACE_XY(XAX,YAX,O2_UMOL_KG,X[GX=X_20],Y[GY=Y_20],2,2) - FILENAME : scat2grid.nc - SUBSET : 20 by 20 points (LONGITUDE-LATITUDE) - ... listing every 2th point - 50E 52.1E 54.2E 56.3E 58.4E 60.5E 62.6E 64.7E 66.8E 68.9E - 1 3 5 7 9 11 13 15 17 19 - 20N / 20: .... .... .... .... 143.990 241.090 .... .... .... .... - 19.47N / 19: .... .... .... .... 117.831 207.449 172.925 .... .... .... - 18.95N / 18: .... .... .... 137.758 107.307 98.003 .... .... .... .... - 18.42N / 17: .... .... .... 161.079 156.071 7.072 16.239 .... .... .... - 17.89N / 16: .... .... .... 179.862 189.128 81.665 .... .... .... .... - 17.37N / 15: .... .... .... 165.097 200.741 145.418 .... .... .... .... - 16.84N / 14: .... .... .... 128.322 183.027 168.029 182.582 .... .... .... - 16.32N / 13: .... .... 76.347 92.413 158.520 190.506 197.367 .... .... .... - 15.79N / 12: .... .... .... 80.307 .... 189.841 195.829 .... .... .... - 15.26N / 11: .... .... .... 72.161 .... 187.475 191.467 .... .... .... - 14.74N / 10: .... .... .... .... .... .... .... .... .... .... - 14.21N / 9: .... .... .... .... .... .... .... .... .... .... - 13.68N / 8: .... .... .... .... .... .... .... .... .... .... - 13.16N / 7: .... .... .... .... .... .... .... .... .... .... - 12.63N / 6: .... .... .... .... .... .... .... .... .... .... - 12.11N / 5: .... .... .... .... .... .... .... .... .... .... - 11.58N / 4: .... .... .... .... .... .... .... .... .... .... - 11.05N / 3: .... .... .... .... .... .... .... .... .... .... - 10.53N / 2: .... .... .... .... .... .... .... .... .... .... - 10N / 1: .... .... .... .... .... .... .... .... .... .... -fill/lev=30v xy_laplace_gridded -plot/vs/over/nolab xax,yax -ppl shaset reset - -! XZ - -let xz_laplace_gridded = scat2gridlaplace_xz(xax,zax,O2_umol_kg,x[gx=x_20],z[gz=z_20],2,2) -fill/lev=30v xz_laplace_gridded -plot/vs/over/nolab xax,zax -ppl shaset reset - -! XT - -let xt_laplace_gridded = scat2gridlaplace_xt(xax,tax,O2_umol_kg,x[gx=x_20],t[gt=t_20],2,2) -fill/lev=30v xt_laplace_gridded -plot/vs/over/nolab xax,tax -ppl shaset reset - -! YZ - -let yz_laplace_gridded = scat2gridlaplace_yz(yax,zax,ysequence(O2_umol_kg),y[gy=y_20],z[gz=z_20],2,2) -fill/lev=30v yz_laplace_gridded -plot/vs/over/nolab yax,zax -ppl shaset reset - -! YT - -let yt_laplace_gridded = scat2gridlaplace_yt(yax,tax,ysequence(O2_umol_kg),y[gy=y_20],t[gt=t_20],2,2) -fill/lev=30v yt_laplace_gridded -plot/vs/over/nolab tax,yax -ppl shaset reset - -! ZT - -let zt_laplace_gridded = scat2gridlaplace_zt(zax,tax,zsequence(O2_umol_kg),z[gz=z_20],t[gt=t_20],2,2) -fill/lev=30v zt_laplace_gridded -plot/vs/over/nolab tax, zax - -can mem /all -can var /all -can data /all -can axis t_20 -can axis z_20 -can axis y_20 -can axis x_20 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bn_scat2grid_gl -! bn_scat2grid_gl.jnl -! test the scat2gridgauss and scat2gridlaplace functions, -! listing the results which can be checked against input - -define axis/x=173:187/unit=degrees_east/npoints=15 x_15 -define axis/y=13:27/unit=degrees_north/npoints=15 y_15 -define axis/z=15:85/units=meters/depth/npoints=15 z_15 -define axis/t=0:8760/unit=hours/t0="01-JAN-1995 00:00:00"/edges/npoints=16 t_16 - -let sinx = sin(X[gx=x_15] * 3.14159265 / 180.0) -let cosyp70 = cos((Y[gy=y_15] + 70.0) * 3.14159265 / 180.0) -let logzp10 = log(Z[gz=z_15] + 10.0) -let logtp50 = log(T[gt=t_16] + 50.0) - -let smxy = xsequence(sinx + cosyp70) -let smxy_xs_pos = xsequence(1.0 * X[gx=x_15] + 0.0 * Y[gy=y_15]) -let smxy_xs = if ( smxy_xs_pos gt 180 ) then (smxy_xs_pos - 360) else smxy_xs_pos -let smxy_ys = xsequence(0.0 * X[gx=x_15] + 1.0 * Y[gy=y_15]) - -let smxz = xsequence(sinx + logzp10) -let smxz_xs_pos = xsequence(1.0 * X[gx=x_15] + 0.0 * Z[gz=z_15]) -let smxz_xs = if ( smxz_xs_pos gt 180 ) then (smxz_xs_pos - 360) else smxz_xs_pos -let smxz_zs = xsequence(0.0 * X[gx=x_15] + 1.0 * Z[gz=z_15]) - -let smxt = xsequence(sinx + logtp50) -let smxt_xs_pos = xsequence(1.0 * X[gx=x_15] + 0.0 * T[gt=t_16]) -let smxt_xs = if ( smxt_xs_pos gt 180 ) then (smxt_xs_pos - 360) else smxt_xs_pos -let smxt_ts = xsequence(0.0 * X[gx=x_15] + 1.0 * T[gt=t_16]) - -let smyz = ysequence(cosyp70 + logzp10) -let smyz_ys = ysequence(1.0 * Y[gy=y_15] + 0.0 * Z[gz=z_15]) -let smyz_zs = ysequence(0.0 * Y[gy=y_15] + 1.0 * Z[gz=z_15]) - -let smyt = ysequence(cosyp70 + logtp50) -let smyt_ys = ysequence(1.0 * Y[gy=y_15] + 0.0 * T[gt=t_16]) -let smyt_ts = ysequence(0.0 * Y[gy=y_15] + 1.0 * T[gt=t_16]) - -let smzt = zsequence(logzp10 + logtp50) -let smzt_zs = zsequence(1.0 * Z[gz=z_15] + 0.0 * T[gt=t_16]) -let smzt_ts = zsequence(0.0 * Z[gz=z_15] + 1.0 * T[gt=t_16]) - -define axis/x=170:190/unit=degrees_east/npoints=11 x_11 -define axis/y=10:30/units=degrees_north/npoints=11 y_11 -define axis/z=0:100/depth/units=meters/npoints=11 z_11 -define axis/t=0:8760/unit=hours/t0="01-JAN-1995 00:00:00"/edges/npoints=12 t_12 - -list X[gx=x_11] - VARIABLE : X - axis X_11 - SUBSET : 11 points (LONGITUDE) - 170E / 1: 170.000 - 172E / 2: 172.000 - 174E / 3: 174.000 - 176E / 4: 176.000 - 178E / 5: 178.000 - 180E / 6: 180.000 - 178W / 7: 182.000 - 176W / 8: 184.000 - 174W / 9: 186.000 - 172W / 10: 188.000 - 170W / 11: 190.000 - -list /i=1:33 smxy_xs, smxy_ys, smxy - X: 0.5 to 33.5 - Column 1: SMXY_XS is IF ( SMXY_XS_POS GT 180 ) THEN (SMXY_XS_POS - 360) ELSE SMXY_XS_POS - Column 2: SMXY_YS is XSEQUENCE(0.0 * X[GX=X_15] + 1.0 * Y[GY=Y_15]) - Column 3: SMXY is XSEQUENCE(SINX + COSYP70) - SMXY_XS SMXY_YS SMXY -1 / 1: 173.000 13.0000 0.243739 -2 / 2: 174.000 13.0000 0.226398 -3 / 3: 175.000 13.0000 0.209025 -4 / 4: 176.000 13.0000 0.191626 -5 / 5: 177.000 13.0000 0.174205 -6 / 6: 178.000 13.0000 0.156769 -7 / 7: 179.000 13.0000 0.139322 -8 / 8: 180.000 13.0000 0.121869 -9 / 9: -179.000 13.0000 0.104417 -10 / 10: -178.000 13.0000 0.086970 -11 / 11: -177.000 13.0000 0.069533 -12 / 12: -176.000 13.0000 0.052113 -13 / 13: -175.000 13.0000 0.034714 -14 / 14: -174.000 13.0000 0.017341 -15 / 15: -173.000 13.0000 0.000000 -16 / 16: 173.000 14.0000 0.226398 -17 / 17: 174.000 14.0000 0.209057 -18 / 18: 175.000 14.0000 0.191684 -19 / 19: 176.000 14.0000 0.174285 -20 / 20: 177.000 14.0000 0.156864 -21 / 21: 178.000 14.0000 0.139428 -22 / 22: 179.000 14.0000 0.121981 -23 / 23: 180.000 14.0000 0.104528 -24 / 24: -179.000 14.0000 0.087076 -25 / 25: -178.000 14.0000 0.069629 -26 / 26: -177.000 14.0000 0.052193 -27 / 27: -176.000 14.0000 0.034772 -28 / 28: -175.000 14.0000 0.017373 -29 / 29: -174.000 14.0000 0.000000 -30 / 30: -173.000 14.0000 -0.017341 -31 / 31: 173.000 15.0000 0.209025 -32 / 32: 174.000 15.0000 0.191684 -33 / 33: 175.000 15.0000 0.174311 -let xy_gauss_gridded = scat2gridgauss_xy(smxy_xs,smxy_ys,smxy,X[gx=x_11],Y[gy=y_11],1.0,1.0,1.0,0.0) -list xy_gauss_gridded - VARIABLE : SCAT2GRIDGAUSS_XY(SMXY_XS,SMXY_YS,SMXY,X[GX=X_11],Y[GY=Y_11],1.0,1.0,1.0,0.0) - SUBSET : 11 by 11 points (LONGITUDE-LATITUDE) - 170E 172E 174E 176E 178E 180E 178W 176W 174W 172W 170W - 1 2 3 4 5 6 7 8 9 10 11 - 30N / 11: .... .... .... .... .... .... .... .... .... .... .... - 28N / 10: .... 0.000000 -0.017348 -0.052117 -0.086972 -0.121869 -0.156767 -0.191621 -0.226391 -0.243739 .... - 26N / 9: .... 0.017348 0.000000 -0.034770 -0.069624 -0.104522 -0.139419 -0.174274 -0.209043 -0.226391 .... - 24N / 8: .... 0.052117 0.034770 0.000000 -0.034855 -0.069752 -0.104649 -0.139504 -0.174274 -0.191621 .... - 22N / 7: .... 0.086972 0.069624 0.034855 0.000000 -0.034897 -0.069794 -0.104649 -0.139419 -0.156767 .... - 20N / 6: .... 0.121869 0.104522 0.069752 0.034897 0.000000 -0.034897 -0.069752 -0.104522 -0.121869 .... - 18N / 5: .... 0.156767 0.139419 0.104649 0.069794 0.034897 0.000000 -0.034855 -0.069624 -0.086972 .... - 16N / 4: .... 0.191621 0.174274 0.139504 0.104649 0.069752 0.034855 0.000000 -0.034770 -0.052117 .... - 14N / 3: .... 0.226391 0.209043 0.174274 0.139419 0.104522 0.069624 0.034770 0.000000 -0.017348 .... - 12N / 2: .... 0.243739 0.226391 0.191621 0.156767 0.121869 0.086972 0.052117 0.017348 0.000000 .... - 10N / 1: .... .... .... .... .... .... .... .... .... .... .... -let xy_laplace_gridded = scat2gridlaplace_xy(smxy_xs,smxy_ys,smxy,X[gx=x_11],Y[gy=y_11],2.0,1) -list xy_laplace_gridded - VARIABLE : SCAT2GRIDLAPLACE_XY(SMXY_XS,SMXY_YS,SMXY,X[GX=X_11],Y[GY=Y_11],2.0,1) - SUBSET : 11 by 11 points (LONGITUDE-LATITUDE) - 170E 172E 174E 176E 178E 180E 178W 176W 174W 172W 170W - 1 2 3 4 5 6 7 8 9 10 11 - 30N / 11: .... .... -0.057531 -0.086987 -0.119152 -0.153259 -0.187881 -0.221435 -0.252146 -0.279109 .... - 28N / 10: .... 0.001469 -0.031719 -0.066314 -0.100631 -0.135459 -0.170322 -0.204898 -0.238648 -0.268796 -0.279109 - 26N / 9: .... 0.030054 0.001289 -0.034598 -0.069227 -0.104122 -0.139020 -0.173835 -0.208160 -0.238648 -0.252146 - 24N / 8: .... 0.062225 0.036296 -0.000330 -0.034822 -0.069721 -0.104621 -0.139444 -0.173835 -0.204898 -0.221435 - 22N / 7: .... 0.096660 0.071306 0.034440 0.000001 -0.034898 -0.069798 -0.104621 -0.139020 -0.170322 -0.187881 - 20N / 6: .... 0.131820 0.106170 0.069324 0.034901 0.000001 -0.034898 -0.069721 -0.104122 -0.135459 -0.153259 - 18N / 5: .... 0.166766 0.141022 0.104198 0.069800 0.034901 0.000001 -0.034822 -0.069227 -0.100631 -0.119152 - 16N / 4: .... 0.200738 0.175293 0.138438 0.104198 0.069324 0.034440 -0.000330 -0.034598 -0.066314 -0.086987 - 14N / 3: .... 0.233148 0.215255 0.175293 0.141022 0.106170 0.071306 0.036296 0.001289 -0.031719 -0.057531 - 12N / 2: .... .... 0.233148 0.200738 0.166766 0.131820 0.096660 0.062225 0.030054 0.001469 .... - 10N / 1: .... .... .... .... .... .... .... .... .... .... .... - -list /i=1:33 smxz_xs, smxz_zs, smxz - X: 0.5 to 33.5 - Column 1: SMXZ_XS is IF ( SMXZ_XS_POS GT 180 ) THEN (SMXZ_XS_POS - 360) ELSE SMXZ_XS_POS - Column 2: SMXZ_ZS is XSEQUENCE(0.0 * X[GX=X_15] + 1.0 * Z[GZ=Z_15]) - Column 3: SMXZ is XSEQUENCE(SINX + LOGZP10) - SMXZ_XS SMXZ_ZS SMXZ -1 / 1: 173.000 15.0000 1.51981 -2 / 2: 174.000 15.0000 1.50247 -3 / 3: 175.000 15.0000 1.48510 -4 / 4: 176.000 15.0000 1.46770 -5 / 5: 177.000 15.0000 1.45028 -6 / 6: 178.000 15.0000 1.43284 -7 / 7: 179.000 15.0000 1.41539 -8 / 8: 180.000 15.0000 1.39794 -9 / 9: -179.000 15.0000 1.38049 -10 / 10: -178.000 15.0000 1.36304 -11 / 11: -177.000 15.0000 1.34560 -12 / 12: -176.000 15.0000 1.32818 -13 / 13: -175.000 15.0000 1.31078 -14 / 14: -174.000 15.0000 1.29341 -15 / 15: -173.000 15.0000 1.27607 -16 / 16: 173.000 20.0000 1.59899 -17 / 17: 174.000 20.0000 1.58165 -18 / 18: 175.000 20.0000 1.56428 -19 / 19: 176.000 20.0000 1.54688 -20 / 20: 177.000 20.0000 1.52946 -21 / 21: 178.000 20.0000 1.51202 -22 / 22: 179.000 20.0000 1.49457 -23 / 23: 180.000 20.0000 1.47712 -24 / 24: -179.000 20.0000 1.45967 -25 / 25: -178.000 20.0000 1.44222 -26 / 26: -177.000 20.0000 1.42479 -27 / 27: -176.000 20.0000 1.40736 -28 / 28: -175.000 20.0000 1.38997 -29 / 29: -174.000 20.0000 1.37259 -30 / 30: -173.000 20.0000 1.35525 -31 / 31: 173.000 25.0000 1.66594 -32 / 32: 174.000 25.0000 1.64860 -33 / 33: 175.000 25.0000 1.63122 -let xz_gauss_gridded = scat2gridgauss_xz(smxz_xs,smxz_zs,smxz,X[gx=x_11],Z[gz=z_11],1.0,5.0,1.0,0.0) -list xz_gauss_gridded - VARIABLE : SCAT2GRIDGAUSS_XZ(SMXZ_XS,SMXZ_ZS,SMXZ,X[GX=X_11],Z[GZ=Z_11],1.0,5.0,1.0,0.0) - SUBSET : 11 by 11 points (LONGITUDE-DEPTH (m)) - 170E 172E 174E 176E 178E 180E 178W 176W 174W 172W 170W - 1 2 3 4 5 6 7 8 9 10 11 - 0 / 1: .... .... .... .... .... .... .... .... .... .... .... - 10 / 2: .... 1.51981 1.50246 1.46769 1.43284 1.39794 1.36304 1.32819 1.29342 1.27607 .... - 20 / 3: .... 1.59640 1.57905 1.54428 1.50943 1.47453 1.43963 1.40478 1.37001 1.35266 .... - 30 / 4: .... 1.72248 1.70513 1.67036 1.63551 1.60061 1.56571 1.53086 1.49609 1.47874 .... - 40 / 5: .... 1.81991 1.80257 1.76780 1.73294 1.69804 1.66315 1.62829 1.59352 1.57618 .... - 50 / 6: .... 1.89938 1.88203 1.84726 1.81241 1.77751 1.74261 1.70776 1.67299 1.65564 .... - 60 / 7: .... 1.96650 1.94915 1.91438 1.87952 1.84463 1.80973 1.77488 1.74011 1.72276 .... - 70 / 8: .... 2.02460 2.00725 1.97248 1.93763 1.90273 1.86783 1.83298 1.79821 1.78086 .... - 80 / 9: .... 2.07583 2.05848 2.02371 1.98886 1.95396 1.91906 1.88421 1.84944 1.83209 .... - 90 / 10: .... 2.09959 2.08225 2.04748 2.01262 1.97772 1.94283 1.90797 1.87320 1.85585 .... - 100 / 11: .... .... .... .... .... .... .... .... .... .... .... -let xz_laplace_gridded = scat2gridlaplace_xz(smxz_xs,smxz_zs,smxz,X[gx=x_11],Z[gz=z_11],2.0,1) -list xz_laplace_gridded - VARIABLE : SCAT2GRIDLAPLACE_XZ(SMXZ_XS,SMXZ_ZS,SMXZ,X[GX=X_11],Z[GZ=Z_11],2.0,1) - SUBSET : 11 by 11 points (LONGITUDE-DEPTH (m)) - 170E 172E 174E 176E 178E 180E 178W 176W 174W 172W 170W - 1 2 3 4 5 6 7 8 9 10 11 - 0 / 1: .... .... .... .... .... .... .... .... .... .... .... - 10 / 2: .... .... 1.45967 1.43260 1.40123 1.36726 1.33267 1.29921 1.26926 1.24478 .... - 20 / 3: .... 1.62568 1.56605 1.53557 1.49928 1.46429 1.42936 1.39419 1.35912 1.33376 1.35199 - 30 / 4: .... 1.73005 1.71421 1.67498 1.64062 1.60574 1.57082 1.53602 1.50175 1.46915 1.44866 - 40 / 5: .... 1.82542 1.80687 1.76803 1.73385 1.69895 1.66405 1.62922 1.59477 1.56211 1.53941 - 50 / 6: .... 1.90691 1.88519 1.84729 1.81306 1.77816 1.74326 1.70844 1.67399 1.64174 1.61939 - 60 / 7: .... 1.97533 1.95176 1.91432 1.88001 1.84511 1.81021 1.77539 1.74096 1.70894 1.68765 - 70 / 8: .... 2.03275 2.00991 1.97225 1.93796 1.90306 1.86816 1.83334 1.79890 1.76672 1.74494 - 80 / 9: .... 2.08017 2.06127 2.02279 1.98867 1.95377 1.91888 1.88407 1.84963 1.81693 1.79226 - 90 / 10: .... 2.11888 2.10181 2.06484 2.03087 1.99606 1.96125 1.92672 1.89288 1.86059 1.83186 - 100 / 11: .... .... 2.11777 2.08710 2.05439 2.02031 1.98599 1.95272 1.92201 1.89466 .... - -list /i=1:33 smxt_xs, smxt_ts, smxt - X: 0.5 to 33.5 - Column 1: SMXT_XS is IF ( SMXT_XS_POS GT 180 ) THEN (SMXT_XS_POS - 360) ELSE SMXT_XS_POS - Column 2: SMXT_TS is XSEQUENCE(0.0 * X[GX=X_15] + 1.0 * T[GT=T_16]) - Column 3: SMXT is XSEQUENCE(SINX + LOGTP50) - SMXT_XS SMXT_TS SMXT -1 / 1: 173.000 273.75 2.63208 -2 / 2: 174.000 273.75 2.61474 -3 / 3: 175.000 273.75 2.59737 -4 / 4: 176.000 273.75 2.57997 -5 / 5: 177.000 273.75 2.56255 -6 / 6: 178.000 273.75 2.54511 -7 / 7: 179.000 273.75 2.52766 -8 / 8: 180.000 273.75 2.51021 -9 / 9: -179.000 273.75 2.49276 -10 / 10: -178.000 273.75 2.47531 -11 / 11: -177.000 273.75 2.45787 -12 / 12: -176.000 273.75 2.44045 -13 / 13: -175.000 273.75 2.42305 -14 / 14: -174.000 273.75 2.40568 -15 / 15: -173.000 273.75 2.38834 -16 / 16: 173.000 821.25 3.06201 -17 / 17: 174.000 821.25 3.04467 -18 / 18: 175.000 821.25 3.02730 -19 / 19: 176.000 821.25 3.00990 -20 / 20: 177.000 821.25 2.99248 -21 / 21: 178.000 821.25 2.97504 -22 / 22: 179.000 821.25 2.95760 -23 / 23: 180.000 821.25 2.94014 -24 / 24: -179.000 821.25 2.92269 -25 / 25: -178.000 821.25 2.90524 -26 / 26: -177.000 821.25 2.88781 -27 / 27: -176.000 821.25 2.87039 -28 / 28: -175.000 821.25 2.85299 -29 / 29: -174.000 821.25 2.83561 -30 / 30: -173.000 821.25 2.81827 -31 / 31: 173.000 1368.75 3.27378 -32 / 32: 174.000 1368.75 3.25643 -33 / 33: 175.000 1368.75 3.23906 -let xt_gauss_gridded = scat2gridgauss_xt(smxt_xs,smxt_ts,smxt,X[gx=x_11],T[gt=t_12],1.0,436.8,1.0,0.0) -list xt_gauss_gridded - VARIABLE : SCAT2GRIDGAUSS_XT(SMXT_XS,SMXT_TS,SMXT,X[GX=X_11],T[GT=T_12],1.0,436.8,1.0,0.0) - SUBSET : 11 by 12 points (LONGITUDE-TIME) - 170E 172E 174E 176E 178E 180E 178W 176W 174W 172W 170W - 1 2 3 4 5 6 7 8 9 10 11 - 16-JAN-1995 / 1: .... 2.63208 2.61473 2.57996 2.54511 2.51021 2.47531 2.44046 2.40569 2.38834 .... - 15-FEB-1995 / 2: .... 3.16789 3.15055 3.11578 3.08092 3.04602 3.01113 2.97627 2.94150 2.92415 .... - 18-MAR-1995 / 3: .... 3.41551 3.39816 3.36339 3.32854 3.29364 3.25874 3.22389 3.18912 3.17177 .... - 17-APR-1995 / 4: .... 3.52219 3.50484 3.47007 3.43522 3.40032 3.36542 3.33057 3.29580 3.27845 .... - 17-MAY-1995 / 5: .... 3.64350 3.62615 3.59138 3.55653 3.52163 3.48673 3.45188 3.41711 3.39976 .... - 17-JUN-1995 / 6: .... 3.74057 3.72322 3.68845 3.65360 3.61870 3.58380 3.54895 3.51418 3.49683 .... - 17-JUL-1995 / 7: .... 3.79431 3.77697 3.74220 3.70734 3.67244 3.63755 3.60269 3.56792 3.55057 .... - 17-AUG-1995 / 8: .... 3.86367 3.84632 3.81155 3.77670 3.74180 3.70690 3.67205 3.63728 3.61993 .... - 16-SEP-1995 / 9: .... 3.92439 3.90704 3.87227 3.83741 3.80252 3.76762 3.73277 3.69800 3.68065 .... - 16-OCT-1995 / 10: .... 3.96032 3.94298 3.90821 3.87335 3.83846 3.80356 3.76870 3.73393 3.71659 .... - 16-NOV-1995 / 11: .... 4.00893 3.99158 3.95681 3.92196 3.88706 3.85217 3.81731 3.78254 3.76519 .... - 16-DEC-1995 / 12: .... 4.05314 4.03579 4.00102 3.96616 3.93127 3.89637 3.86152 3.82675 3.80940 .... -let xt_laplace_gridded = scat2gridlaplace_xt(smxt_xs,smxt_ts,smxt,X[gx=x_11],T[gt=t_12],2.0,1) -list xt_laplace_gridded - VARIABLE : SCAT2GRIDLAPLACE_XT(SMXT_XS,SMXT_TS,SMXT,X[GX=X_11],T[GT=T_12],2.0,1) - SUBSET : 11 by 12 points (LONGITUDE-TIME) - 170E 172E 174E 176E 178E 180E 178W 176W 174W 172W 170W - 1 2 3 4 5 6 7 8 9 10 11 - 16-JAN-1995 / 1: .... 2.80021 2.65506 2.64695 2.61209 2.57719 2.54229 2.50743 2.47319 2.46266 2.52519 - 15-FEB-1995 / 2: .... 3.11975 3.18472 3.13605 3.10119 3.06629 3.03139 2.99653 2.96230 2.92477 2.84506 - 18-MAR-1995 / 3: .... 3.36860 3.39079 3.34236 3.30750 3.27260 3.23770 3.20284 3.16860 3.13125 3.09408 - 17-APR-1995 / 4: .... 3.53416 3.52162 3.48422 3.44936 3.41446 3.37956 3.34470 3.31046 3.28049 3.25971 - 17-MAY-1995 / 5: .... 3.65364 3.63083 3.59310 3.55824 3.52333 3.48843 3.45357 3.41934 3.38914 3.37928 - 17-JUN-1995 / 6: .... 3.74421 3.71833 3.67938 3.64452 3.60962 3.57471 3.53986 3.50562 3.47462 3.46992 - 17-JUL-1995 / 7: .... 3.81408 3.78571 3.74978 3.71492 3.68002 3.64512 3.61026 3.57602 3.54703 3.53974 - 17-AUG-1995 / 8: .... 3.87631 3.84944 3.81217 3.77731 3.74241 3.70751 3.67265 3.63841 3.60850 3.60176 - 16-SEP-1995 / 9: .... 3.93114 3.90481 3.86643 3.83157 3.79667 3.76177 3.72691 3.69268 3.66199 3.65626 - 16-OCT-1995 / 10: .... 3.97707 3.94990 3.91341 3.87855 3.84364 3.80874 3.77388 3.73965 3.71017 3.70185 - 16-NOV-1995 / 11: .... 4.01929 3.99483 3.95714 3.92228 3.88737 3.85247 3.81761 3.78338 3.75307 3.74382 - 16-DEC-1995 / 12: .... 4.05753 4.03432 3.99551 3.96065 3.92574 3.89084 3.85598 3.82175 3.79068 3.78192 - -list /j=1:33 smyz_ys, smyz_zs, smyz - Y: 0.5 to 33.5 - Column 1: SMYZ_YS is YSEQUENCE(1.0 * Y[GY=Y_15] + 0.0 * Z[GZ=Z_15]) - Column 2: SMYZ_ZS is YSEQUENCE(0.0 * Y[GY=Y_15] + 1.0 * Z[GZ=Z_15]) - Column 3: SMYZ is YSEQUENCE(COSYP70 + LOGZP10) - SMYZ_YS SMYZ_ZS SMYZ -1 / 1: 13.0000 15.0000 1.51981 -2 / 2: 14.0000 15.0000 1.50247 -3 / 3: 15.0000 15.0000 1.48510 -4 / 4: 16.0000 15.0000 1.46770 -5 / 5: 17.0000 15.0000 1.45028 -6 / 6: 18.0000 15.0000 1.43284 -7 / 7: 19.0000 15.0000 1.41539 -8 / 8: 20.0000 15.0000 1.39794 -9 / 9: 21.0000 15.0000 1.38049 -10 / 10: 22.0000 15.0000 1.36304 -11 / 11: 23.0000 15.0000 1.34560 -12 / 12: 24.0000 15.0000 1.32818 -13 / 13: 25.0000 15.0000 1.31078 -14 / 14: 26.0000 15.0000 1.29341 -15 / 15: 27.0000 15.0000 1.27607 -16 / 16: 13.0000 20.0000 1.59899 -17 / 17: 14.0000 20.0000 1.58165 -18 / 18: 15.0000 20.0000 1.56428 -19 / 19: 16.0000 20.0000 1.54688 -20 / 20: 17.0000 20.0000 1.52946 -21 / 21: 18.0000 20.0000 1.51202 -22 / 22: 19.0000 20.0000 1.49457 -23 / 23: 20.0000 20.0000 1.47712 -24 / 24: 21.0000 20.0000 1.45967 -25 / 25: 22.0000 20.0000 1.44222 -26 / 26: 23.0000 20.0000 1.42479 -27 / 27: 24.0000 20.0000 1.40736 -28 / 28: 25.0000 20.0000 1.38997 -29 / 29: 26.0000 20.0000 1.37259 -30 / 30: 27.0000 20.0000 1.35525 -31 / 31: 13.0000 25.0000 1.66594 -32 / 32: 14.0000 25.0000 1.64860 -33 / 33: 15.0000 25.0000 1.63122 -let yz_gauss_gridded = scat2gridgauss_yz(smyz_ys,smyz_zs,smyz,Y[gy=y_11],Z[gz=z_11],1.0,5.0,1.0,0.0) -list yz_gauss_gridded - VARIABLE : SCAT2GRIDGAUSS_YZ(SMYZ_YS,SMYZ_ZS,SMYZ,Y[GY=Y_11],Z[GZ=Z_11],1.0,5.0,1.0,0.0) - SUBSET : 11 by 11 points (LATITUDE-DEPTH (m)) - 10N 12N 14N 16N 18N 20N 22N 24N 26N 28N 30N - 1 2 3 4 5 6 7 8 9 10 11 - 0 / 1: .... .... .... .... .... .... .... .... .... .... .... - 10 / 2: .... 1.51981 1.50246 1.46769 1.43284 1.39794 1.36304 1.32819 1.29342 1.27607 .... - 20 / 3: .... 1.59640 1.57905 1.54428 1.50943 1.47453 1.43963 1.40478 1.37001 1.35266 .... - 30 / 4: .... 1.72248 1.70513 1.67036 1.63551 1.60061 1.56571 1.53086 1.49609 1.47874 .... - 40 / 5: .... 1.81991 1.80257 1.76780 1.73294 1.69804 1.66315 1.62829 1.59352 1.57618 .... - 50 / 6: .... 1.89938 1.88203 1.84726 1.81241 1.77751 1.74261 1.70776 1.67299 1.65564 .... - 60 / 7: .... 1.96650 1.94915 1.91438 1.87952 1.84463 1.80973 1.77488 1.74011 1.72276 .... - 70 / 8: .... 2.02460 2.00725 1.97248 1.93763 1.90273 1.86783 1.83298 1.79821 1.78086 .... - 80 / 9: .... 2.07583 2.05848 2.02371 1.98886 1.95396 1.91906 1.88421 1.84944 1.83209 .... - 90 / 10: .... 2.09959 2.08225 2.04748 2.01262 1.97772 1.94283 1.90797 1.87320 1.85585 .... - 100 / 11: .... .... .... .... .... .... .... .... .... .... .... -let yz_laplace_gridded = scat2gridlaplace_yz(smyz_ys,smyz_zs,smyz,Y[gy=y_11],Z[gz=z_11],2.0,1) -list yz_laplace_gridded - VARIABLE : SCAT2GRIDLAPLACE_YZ(SMYZ_YS,SMYZ_ZS,SMYZ,Y[GY=Y_11],Z[GZ=Z_11],2.0,1) - SUBSET : 11 by 11 points (LATITUDE-DEPTH (m)) - 10N 12N 14N 16N 18N 20N 22N 24N 26N 28N 30N - 1 2 3 4 5 6 7 8 9 10 11 - 0 / 1: .... .... .... .... .... .... .... .... .... .... .... - 10 / 2: .... .... 1.45967 1.43260 1.40123 1.36726 1.33267 1.29921 1.26926 1.24478 .... - 20 / 3: .... 1.62568 1.56605 1.53557 1.49928 1.46429 1.42936 1.39419 1.35912 1.33376 1.35199 - 30 / 4: .... 1.73005 1.71421 1.67498 1.64062 1.60574 1.57082 1.53602 1.50175 1.46915 1.44866 - 40 / 5: .... 1.82542 1.80687 1.76803 1.73385 1.69895 1.66405 1.62922 1.59477 1.56211 1.53941 - 50 / 6: .... 1.90691 1.88519 1.84729 1.81306 1.77816 1.74326 1.70844 1.67399 1.64174 1.61939 - 60 / 7: .... 1.97533 1.95176 1.91432 1.88001 1.84511 1.81021 1.77539 1.74096 1.70894 1.68765 - 70 / 8: .... 2.03275 2.00991 1.97225 1.93796 1.90306 1.86816 1.83334 1.79890 1.76672 1.74494 - 80 / 9: .... 2.08017 2.06127 2.02279 1.98867 1.95377 1.91888 1.88407 1.84963 1.81693 1.79226 - 90 / 10: .... 2.11888 2.10181 2.06484 2.03087 1.99606 1.96125 1.92672 1.89288 1.86059 1.83186 - 100 / 11: .... .... 2.11777 2.08710 2.05439 2.02031 1.98599 1.95272 1.92201 1.89466 .... - -list /j=1:33 smyt_ys, smyt_ts, smyt - Y: 0.5 to 33.5 - Column 1: SMYT_YS is YSEQUENCE(1.0 * Y[GY=Y_15] + 0.0 * T[GT=T_16]) - Column 2: SMYT_TS is YSEQUENCE(0.0 * Y[GY=Y_15] + 1.0 * T[GT=T_16]) - Column 3: SMYT is YSEQUENCE(COSYP70 + LOGTP50) - SMYT_YS SMYT_TS SMYT -1 / 1: 13.0000 273.75 2.63208 -2 / 2: 14.0000 273.75 2.61474 -3 / 3: 15.0000 273.75 2.59737 -4 / 4: 16.0000 273.75 2.57997 -5 / 5: 17.0000 273.75 2.56255 -6 / 6: 18.0000 273.75 2.54511 -7 / 7: 19.0000 273.75 2.52766 -8 / 8: 20.0000 273.75 2.51021 -9 / 9: 21.0000 273.75 2.49276 -10 / 10: 22.0000 273.75 2.47531 -11 / 11: 23.0000 273.75 2.45787 -12 / 12: 24.0000 273.75 2.44045 -13 / 13: 25.0000 273.75 2.42305 -14 / 14: 26.0000 273.75 2.40568 -15 / 15: 27.0000 273.75 2.38834 -16 / 16: 13.0000 821.25 3.06201 -17 / 17: 14.0000 821.25 3.04467 -18 / 18: 15.0000 821.25 3.02730 -19 / 19: 16.0000 821.25 3.00990 -20 / 20: 17.0000 821.25 2.99248 -21 / 21: 18.0000 821.25 2.97504 -22 / 22: 19.0000 821.25 2.95760 -23 / 23: 20.0000 821.25 2.94014 -24 / 24: 21.0000 821.25 2.92269 -25 / 25: 22.0000 821.25 2.90524 -26 / 26: 23.0000 821.25 2.88781 -27 / 27: 24.0000 821.25 2.87039 -28 / 28: 25.0000 821.25 2.85299 -29 / 29: 26.0000 821.25 2.83561 -30 / 30: 27.0000 821.25 2.81827 -31 / 31: 13.0000 1368.75 3.27378 -32 / 32: 14.0000 1368.75 3.25643 -33 / 33: 15.0000 1368.75 3.23906 -let yt_gauss_gridded = scat2gridgauss_yt(smyt_ys,smyt_ts,smyt,Y[gy=y_11],T[gt=t_12],1.0,436.8,1.0,0.0) -list yt_gauss_gridded - VARIABLE : SCAT2GRIDGAUSS_YT(SMYT_YS,SMYT_TS,SMYT,Y[GY=Y_11],T[GT=T_12],1.0,436.8,1.0,0.0) - SUBSET : 11 by 12 points (LATITUDE-TIME) - 10N 12N 14N 16N 18N 20N 22N 24N 26N 28N 30N - 1 2 3 4 5 6 7 8 9 10 11 - 16-JAN-1995 / 1: .... 2.63208 2.61473 2.57996 2.54511 2.51021 2.47531 2.44046 2.40569 2.38834 .... - 15-FEB-1995 / 2: .... 3.16789 3.15055 3.11578 3.08092 3.04602 3.01113 2.97627 2.94150 2.92415 .... - 18-MAR-1995 / 3: .... 3.41551 3.39816 3.36339 3.32854 3.29364 3.25874 3.22389 3.18912 3.17177 .... - 17-APR-1995 / 4: .... 3.52219 3.50484 3.47007 3.43522 3.40032 3.36542 3.33057 3.29580 3.27845 .... - 17-MAY-1995 / 5: .... 3.64350 3.62615 3.59138 3.55653 3.52163 3.48673 3.45188 3.41711 3.39976 .... - 17-JUN-1995 / 6: .... 3.74057 3.72322 3.68845 3.65360 3.61870 3.58380 3.54895 3.51418 3.49683 .... - 17-JUL-1995 / 7: .... 3.79431 3.77697 3.74220 3.70734 3.67244 3.63755 3.60269 3.56792 3.55057 .... - 17-AUG-1995 / 8: .... 3.86367 3.84632 3.81155 3.77670 3.74180 3.70690 3.67205 3.63728 3.61993 .... - 16-SEP-1995 / 9: .... 3.92439 3.90704 3.87227 3.83741 3.80252 3.76762 3.73277 3.69800 3.68065 .... - 16-OCT-1995 / 10: .... 3.96032 3.94298 3.90821 3.87335 3.83846 3.80356 3.76870 3.73393 3.71659 .... - 16-NOV-1995 / 11: .... 4.00893 3.99158 3.95681 3.92196 3.88706 3.85217 3.81731 3.78254 3.76519 .... - 16-DEC-1995 / 12: .... 4.05314 4.03579 4.00102 3.96616 3.93127 3.89637 3.86152 3.82675 3.80940 .... -let yt_laplace_gridded = scat2gridlaplace_yt(smyt_ys,smyt_ts,smyt,Y[gy=y_11],T[gt=t_12],2.0,1) -list yt_laplace_gridded - VARIABLE : SCAT2GRIDLAPLACE_YT(SMYT_YS,SMYT_TS,SMYT,Y[GY=Y_11],T[GT=T_12],2.0,1) - SUBSET : 11 by 12 points (LATITUDE-TIME) - 10N 12N 14N 16N 18N 20N 22N 24N 26N 28N 30N - 1 2 3 4 5 6 7 8 9 10 11 - 16-JAN-1995 / 1: .... 2.80021 2.65506 2.64695 2.61209 2.57719 2.54229 2.50743 2.47319 2.46266 2.52519 - 15-FEB-1995 / 2: .... 3.11975 3.18472 3.13605 3.10119 3.06629 3.03139 2.99653 2.96230 2.92477 2.84506 - 18-MAR-1995 / 3: .... 3.36860 3.39079 3.34236 3.30750 3.27260 3.23770 3.20284 3.16860 3.13125 3.09408 - 17-APR-1995 / 4: .... 3.53416 3.52162 3.48422 3.44936 3.41446 3.37956 3.34470 3.31046 3.28049 3.25971 - 17-MAY-1995 / 5: .... 3.65364 3.63083 3.59310 3.55824 3.52333 3.48843 3.45357 3.41934 3.38914 3.37928 - 17-JUN-1995 / 6: .... 3.74421 3.71833 3.67938 3.64452 3.60962 3.57471 3.53986 3.50562 3.47462 3.46992 - 17-JUL-1995 / 7: .... 3.81408 3.78571 3.74978 3.71492 3.68002 3.64512 3.61026 3.57602 3.54703 3.53974 - 17-AUG-1995 / 8: .... 3.87631 3.84944 3.81217 3.77731 3.74241 3.70751 3.67265 3.63841 3.60850 3.60176 - 16-SEP-1995 / 9: .... 3.93114 3.90481 3.86643 3.83157 3.79667 3.76177 3.72691 3.69268 3.66199 3.65626 - 16-OCT-1995 / 10: .... 3.97707 3.94990 3.91341 3.87855 3.84364 3.80874 3.77388 3.73965 3.71017 3.70185 - 16-NOV-1995 / 11: .... 4.01929 3.99483 3.95714 3.92228 3.88737 3.85247 3.81761 3.78338 3.75307 3.74382 - 16-DEC-1995 / 12: .... 4.05753 4.03432 3.99551 3.96065 3.92574 3.89084 3.85598 3.82175 3.79068 3.78192 - -list /k=1:33 smzt_zs, smzt_ts, smzt - Z: 0.5 to 33.5 - Column 1: SMZT_ZS is ZSEQUENCE(1.0 * Z[GZ=Z_15] + 0.0 * T[GT=T_16]) - Column 2: SMZT_TS is ZSEQUENCE(0.0 * Z[GZ=Z_15] + 1.0 * T[GT=T_16]) - Column 3: SMZT is ZSEQUENCE(LOGZP10 + LOGTP50) - SMZT_ZS SMZT_TS SMZT -1 / 1: 15.0000 273.75 3.90815 -2 / 2: 20.0000 273.75 3.98733 -3 / 3: 25.0000 273.75 4.05428 -4 / 4: 30.0000 273.75 4.11227 -5 / 5: 35.0000 273.75 4.16342 -6 / 6: 40.0000 273.75 4.20918 -7 / 7: 45.0000 273.75 4.25057 -8 / 8: 50.0000 273.75 4.28836 -9 / 9: 55.0000 273.75 4.32312 -10 / 10: 60.0000 273.75 4.35531 -11 / 11: 65.0000 273.75 4.38527 -12 / 12: 70.0000 273.75 4.41330 -13 / 13: 75.0000 273.75 4.43963 -14 / 14: 80.0000 273.75 4.46445 -15 / 15: 85.0000 273.75 4.48793 -16 / 16: 15.0000 821.25 4.33808 -17 / 17: 20.0000 821.25 4.41726 -18 / 18: 25.0000 821.25 4.48421 -19 / 19: 30.0000 821.25 4.54220 -20 / 20: 35.0000 821.25 4.59336 -21 / 21: 40.0000 821.25 4.63911 -22 / 22: 45.0000 821.25 4.68051 -23 / 23: 50.0000 821.25 4.71829 -24 / 24: 55.0000 821.25 4.75306 -25 / 25: 60.0000 821.25 4.78524 -26 / 26: 65.0000 821.25 4.81520 -27 / 27: 70.0000 821.25 4.84323 -28 / 28: 75.0000 821.25 4.86956 -29 / 29: 80.0000 821.25 4.89439 -30 / 30: 85.0000 821.25 4.91787 -31 / 31: 15.0000 1368.75 4.54985 -32 / 32: 20.0000 1368.75 4.62903 -33 / 33: 25.0000 1368.75 4.69597 -let zt_gauss_gridded = scat2gridgauss_zt(smzt_zs,smzt_ts,smzt,Z[gz=z_11],T[gt=t_12],5.0,436.8,1.0,0.0) -list zt_gauss_gridded - VARIABLE : SCAT2GRIDGAUSS_ZT(SMZT_ZS,SMZT_TS,SMZT,Z[GZ=Z_11],T[GT=T_12],5.0,436.8,1.0,0.0) - SUBSET : 11 by 12 points (DEPTH (m)-TIME) - 0 10 20 30 40 50 60 70 80 90 100 - 1 2 3 4 5 6 7 8 9 10 11 - 16-JAN-1995 / 1: .... 3.90815 3.98474 4.11082 4.20825 4.28772 4.35484 4.41294 4.46417 4.48793 .... - 15-FEB-1995 / 2: .... 4.44396 4.52055 4.64663 4.74407 4.82353 4.89065 4.94875 4.99998 5.02375 .... - 18-MAR-1995 / 3: .... 4.69158 4.76817 4.89425 4.99168 5.07115 5.13827 5.19637 5.24760 5.27136 .... - 17-APR-1995 / 4: .... 4.79826 4.87485 5.00093 5.09837 5.17783 5.24495 5.30305 5.35428 5.37805 .... - 17-MAY-1995 / 5: .... 4.91957 4.99616 5.12224 5.21967 5.29914 5.36626 5.42436 5.47559 5.49935 .... - 17-JUN-1995 / 6: .... 5.01664 5.09323 5.21931 5.31675 5.39621 5.46333 5.52143 5.57266 5.59643 .... - 17-JUL-1995 / 7: .... 5.07038 5.14697 5.27305 5.37049 5.44995 5.51707 5.57517 5.62640 5.65017 .... - 17-AUG-1995 / 8: .... 5.13974 5.21633 5.34241 5.43984 5.51931 5.58643 5.64453 5.69576 5.71952 .... - 16-SEP-1995 / 9: .... 5.20046 5.27705 5.40313 5.50056 5.58003 5.64714 5.70525 5.75648 5.78024 .... - 16-OCT-1995 / 10: .... 5.23640 5.31298 5.43907 5.53650 5.61597 5.68308 5.74119 5.79241 5.81618 .... - 16-NOV-1995 / 11: .... 5.28500 5.36159 5.48767 5.58511 5.66457 5.73169 5.78979 5.84102 5.86479 .... - 16-DEC-1995 / 12: .... 5.32921 5.40580 5.53188 5.62931 5.70878 5.77589 5.83400 5.88523 5.90899 .... -let zt_laplace_gridded = scat2gridlaplace_zt(smzt_zs,smzt_ts,smzt,Z[gz=z_11],T[gt=t_12],2.0,1) -list zt_laplace_gridded - VARIABLE : SCAT2GRIDLAPLACE_ZT(SMZT_ZS,SMZT_TS,SMZT,Z[GZ=Z_11],T[GT=T_12],2.0,1) - SUBSET : 11 by 12 points (DEPTH (m)-TIME) - 0 10 20 30 40 50 60 70 80 90 100 - 1 2 3 4 5 6 7 8 9 10 11 - 16-JAN-1995 / 1: .... 4.01260 4.01103 4.18210 4.27779 4.35640 4.42302 4.48082 4.53115 4.59056 4.66549 - 15-FEB-1995 / 2: .... 4.33307 4.54051 4.67120 4.76690 4.84550 4.91213 4.96992 5.02025 5.05263 4.98503 - 18-MAR-1995 / 3: .... 4.58238 4.74650 4.87751 4.97320 5.05181 5.11843 5.17623 5.22656 5.25909 5.23387 - 17-APR-1995 / 4: .... 4.74816 4.87728 5.01937 5.11506 5.19367 5.26030 5.31809 5.36842 5.40831 5.39943 - 17-MAY-1995 / 5: .... 4.86788 4.98645 5.12825 5.22394 5.30254 5.36917 5.42697 5.47730 5.51696 5.51891 - 17-JUN-1995 / 6: .... 4.95864 5.07392 5.21453 5.31022 5.38882 5.45545 5.51325 5.56358 5.60243 5.60948 - 17-JUL-1995 / 7: .... 5.02839 5.14132 5.28493 5.38062 5.45923 5.52585 5.58365 5.63398 5.67485 5.67935 - 17-AUG-1995 / 8: .... 5.09002 5.20515 5.34732 5.44301 5.52162 5.58824 5.64604 5.69637 5.73635 5.74158 - 16-SEP-1995 / 9: .... 5.14392 5.26070 5.40159 5.49728 5.57588 5.64251 5.70031 5.75064 5.78987 5.79641 - 16-OCT-1995 / 10: .... 5.18891 5.30597 5.44856 5.54425 5.62285 5.68948 5.74728 5.79761 5.83810 5.84235 - 16-NOV-1995 / 11: .... 5.23042 5.35103 5.49229 5.58798 5.66658 5.73321 5.79101 5.84134 5.88103 5.88458 - 16-DEC-1995 / 12: .... 5.26827 5.39059 5.53066 5.62635 5.70495 5.77158 5.82938 5.87971 5.91865 5.92282 - -can mem /all -can var /all -can axis t_12 -can axis z_11 -can axis y_11 -can axis x_11 -can axis t_16 -can axis z_15 -can axis y_15 -can axis x_15 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bn_scat2gridlaplace_tarasoff -! bn_scat2gridlaplace_tarasoff -! check for error reported by Lev Tarasoff 5/10/2006 -! trac ticket #1412 -! tests modulo of the X axis in the scat2gridlaplace_xy function - -let xlnb = { -4.06, -5.07, -3.77, -3.02, 0.83, 0.31, 1.02, 0.33, -1.35, -2.54, \ - -3.75, -5.48, -5.25, 2.98, 3.50, 36.15, 29.40, 19.45, 19.00} -let ylt = { 52.47, 51.66, 51.58, 51.35, 51.70, 51.46, 51.07, 50.84, 50.80, 50.62, \ - 50.39, 50.13, 56.07, 55.02, 52.50, 69.10, 70.09, 70.15, 69.80} -let wgt = {0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.03,0.02,0.00,1.34,1.17,0.22,0.49} - -def axis/x=12.5w:119.5e/npoints=133/units=deg/modulo xlonef -def axis/y=47.25N:83.25n/npoints=73/units=deg ylatef - -let xln = if xlnb lt 0. then xlnb+360. else xlnb -let wgtl = scat2gridlaplace_xy(xln,ylt, wgt, x[gx=xlonef], y[gy=ylatef], 2., 1) - -show grid wgtl - GRID (G009) - name axis # pts start end subset - XLONEF LONGITUDE 133mr 12.5W 119.5E(479.5) full - YLATEF LATITUDE 73 r 47.25N 83.25N full - normal Z - normal T -load wgtl -! shade wgtl ! Result is shifted in X: -! data shows up at 70e that should be at 35e - -! the folowing are listed /order=yx so no data will be skipped - -! the following should show three regions of data -list /order=yx wgtl[X=15E:40E,Y=68N:72N] - VARIABLE : SCAT2GRIDLAPLACE_XY(XLN,YLT, WGT, X[GX=XLONEF], Y[GY=YLATEF], 2., 1) - SUBSET : 8 by 25 points (LATITUDE-LONGITUDE) - 68.25N 68.75N 69.25N 69.75N 70.25N 70.75N 71.25N 71.75N - 43 44 45 46 47 48 49 50 - 15.5E / -105: .... .... .... .... .... .... .... .... - 16.5E / -104: .... .... .... .... .... .... .... .... - 17.5E / -103: .... .... .... .... .... .... .... .... - 18.5E / -102: .... .... .... 0.45146 0.25859 .... .... .... - 19.5E / -101: .... .... 0.67000 0.52258 0.17310 0.04000 .... .... - 20.5E / -100: .... .... .... 0.45141 0.25856 .... .... .... - 21.5E / -99: .... .... .... .... .... .... .... .... - 22.5E / -98: .... .... .... .... .... .... .... .... - 23.5E / -97: .... .... .... .... .... .... .... .... - 24.5E / -96: .... .... .... .... .... .... .... .... - 25.5E / -95: .... .... .... .... .... .... .... .... - 26.5E / -94: .... .... .... .... .... .... .... .... - 27.5E / -93: .... .... .... .... .... .... .... .... - 28.5E / -92: .... .... .... .... 1.17000 .... .... .... - 29.5E / -91: .... .... .... 1.17000 1.17000 1.17000 .... .... - 30.5E / -90: .... .... .... .... 1.17000 .... .... .... - 31.5E / -89: .... .... .... .... .... .... .... .... - 32.5E / -88: .... .... .... .... .... .... .... .... - 33.5E / -87: .... .... .... .... .... .... .... .... - 34.5E / -86: .... .... .... .... .... .... .... .... - 35.5E / -85: .... .... 1.34000 .... .... .... .... .... - 36.5E / -84: .... 1.34000 1.34000 1.34000 .... .... .... .... - 37.5E / -83: .... .... 1.34000 .... .... .... .... .... - 38.5E / -82: .... .... .... .... .... .... .... .... - 39.5E / -81: .... .... .... .... .... .... .... .... -! the following should completely undefined -list /order=yx wgtl[X=55E:80E,Y=68N:72N] - VARIABLE : SCAT2GRIDLAPLACE_XY(XLN,YLT, WGT, X[GX=XLONEF], Y[GY=YLATEF], 2., 1) - SUBSET : 8 by 25 points (LATITUDE-LONGITUDE) - 68N 69N 69N 70N 70N 71N 71N 72N - 43 44 45 46 47 48 49 50 - 55.5E / -65:................................ - 56.5E / -64:................................ - 57.5E / -63:................................ - 58.5E / -62:................................ - 59.5E / -61:................................ - 60.5E / -60:................................ - 61.5E / -59:................................ - 62.5E / -58:................................ - 63.5E / -57:................................ - 64.5E / -56:................................ - 65.5E / -55:................................ - 66.5E / -54:................................ - 67.5E / -53:................................ - 68.5E / -52:................................ - 69.5E / -51:................................ - 70.5E / -50:................................ - 71.5E / -49:................................ - 72.5E / -48:................................ - 73.5E / -47:................................ - 74.5E / -46:................................ - 75.5E / -45:................................ - 76.5E / -44:................................ - 77.5E / -43:................................ - 78.5E / -42:................................ - 79.5E / -41:................................ - -cancel data /all -cancel var /all -cancel axis xlonef -cancel axis ylatef - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bn_scat2grid_nobs -! bn_scat2grid_nobs.jnl -! test of scat2grid_nobs functions, -! listing the results which can be checked against input - -define axis/x=173:187/unit=degrees_east/npoints=15 x_15 -define axis/y=13:27/unit=degrees_north/npoints=15 y_15 -define axis/t=0:8760/unit=hours/t0="01-JAN-1995 00:00:00"/edges/npoints=16 t_16 - -let sinx = sin(X[gx=x_15] * 3.14159265 / 180.0) -let cosyp70 = cos((Y[gy=y_15] + 70.0) * 3.14159265 / 180.0) -let logtp50 = log(T[gt=t_16] + 50.0) - -let smxy = xsequence(sinx + cosyp70) -let smxy_xs_pos = xsequence(1.0 * X[gx=x_15] + 0.0 * Y[gy=y_15]) -let smxy_xs = if ( smxy_xs_pos gt 180 ) then (smxy_xs_pos - 360) else smxy_xs_pos -let smxy_ys = xsequence(0.0 * X[gx=x_15] + 1.0 * Y[gy=y_15]) - -let smxyt = xsequence(sinx + cosyp70 + logtp50) -let smxyt_xs_pos = xsequence(1.0 * X[gx=x_15] + 0.0 * Y[gy=y_15] + 0.0 * T[gt=t_16]) -let smxyt_xs = if ( smxyt_xs_pos gt 180 ) then (smxyt_xs_pos - 360) else smxyt_xs_pos -let smxyt_ys = xsequence(0.0 * X[gx=x_15] + 1.0 * Y[gy=y_15] + 0.0 * T[gt=t_16]) -let smxyt_ts = xsequence(0.0 * X[gx=x_15] + 0.0 * Y[gy=y_15] + 1.0 * T[gt=t_16]) - -define axis/x=170:190/unit=degrees_east/npoints=11 x_11 -define axis/y=10:30/units=degrees_north/npoints=11 y_11 -define axis/t=0:8760/unit=hours/t0="01-JAN-1995 00:00:00"/edges/npoints=12 t_12 - -list X[gx=x_11] - VARIABLE : X - axis X_11 - SUBSET : 11 points (LONGITUDE) - 170E / 1: 170.000 - 172E / 2: 172.000 - 174E / 3: 174.000 - 176E / 4: 176.000 - 178E / 5: 178.000 - 180E / 6: 180.000 - 178W / 7: 182.000 - 176W / 8: 184.000 - 174W / 9: 186.000 - 172W / 10: 188.000 - 170W / 11: 190.000 - -list /i=1:33 smxy_xs, smxy_ys, smxy - X: 0.5 to 33.5 - Column 1: SMXY_XS is IF ( SMXY_XS_POS GT 180 ) THEN (SMXY_XS_POS - 360) ELSE SMXY_XS_POS - Column 2: SMXY_YS is XSEQUENCE(0.0 * X[GX=X_15] + 1.0 * Y[GY=Y_15]) - Column 3: SMXY is XSEQUENCE(SINX + COSYP70) - SMXY_XS SMXY_YS SMXY -1 / 1: 173.000 13.0000 0.243739 -2 / 2: 174.000 13.0000 0.226398 -3 / 3: 175.000 13.0000 0.209025 -4 / 4: 176.000 13.0000 0.191626 -5 / 5: 177.000 13.0000 0.174205 -6 / 6: 178.000 13.0000 0.156769 -7 / 7: 179.000 13.0000 0.139322 -8 / 8: 180.000 13.0000 0.121869 -9 / 9: -179.000 13.0000 0.104417 -10 / 10: -178.000 13.0000 0.086970 -11 / 11: -177.000 13.0000 0.069533 -12 / 12: -176.000 13.0000 0.052113 -13 / 13: -175.000 13.0000 0.034714 -14 / 14: -174.000 13.0000 0.017341 -15 / 15: -173.000 13.0000 0.000000 -16 / 16: 173.000 14.0000 0.226398 -17 / 17: 174.000 14.0000 0.209057 -18 / 18: 175.000 14.0000 0.191684 -19 / 19: 176.000 14.0000 0.174285 -20 / 20: 177.000 14.0000 0.156864 -21 / 21: 178.000 14.0000 0.139428 -22 / 22: 179.000 14.0000 0.121981 -23 / 23: 180.000 14.0000 0.104528 -24 / 24: -179.000 14.0000 0.087076 -25 / 25: -178.000 14.0000 0.069629 -26 / 26: -177.000 14.0000 0.052193 -27 / 27: -176.000 14.0000 0.034772 -28 / 28: -175.000 14.0000 0.017373 -29 / 29: -174.000 14.0000 0.000000 -30 / 30: -173.000 14.0000 -0.017341 -31 / 31: 173.000 15.0000 0.209025 -32 / 32: 174.000 15.0000 0.191684 -33 / 33: 175.000 15.0000 0.174311 -let xy_nobs = scat2grid_nobs_xy(smxy_xs, smxy_ys, X[gx=x_11], Y[gy=y_11]) -list xy_nobs - VARIABLE : SCAT2GRID_NOBS_XY(SMXY_XS, SMXY_YS, X[GX=X_11], Y[GY=Y_11]) - SUBSET : 11 by 11 points (LONGITUDE-LATITUDE) - 170E 172E 174E 176E 178E 180E 178W 176W 174W 172W 170W - 1 2 3 4 5 6 7 8 9 10 11 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 0.00000 - 26N / 9: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 24N / 8: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 22N / 7: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 20N / 6: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 18N / 5: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 16N / 4: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 14N / 3: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - -list /i=1:33 smxyt_xs, smxyt_ys, smxyt_ts, smxyt - X: 0.5 to 33.5 - Column 1: SMXYT_XS is IF ( SMXYT_XS_POS GT 180 ) THEN (SMXYT_XS_POS - 360) ELSE SMXYT_XS_POS - Column 2: SMXYT_YS is XSEQUENCE(0.0 * X[GX=X_15] + 1.0 * Y[GY=Y_15] + 0.0 * T[GT=T_16]) - Column 3: SMXYT_TS is XSEQUENCE(0.0 * X[GX=X_15] + 0.0 * Y[GY=Y_15] + 1.0 * T[GT=T_16]) - Column 4: SMXYT is XSEQUENCE(SINX + COSYP70 + LOGTP50) - SMXYT_XS SMXYT_YS SMXYT_TS SMXYT -1 / 1: 173.000 13.0000 273.750 2.75395 -2 / 2: 174.000 13.0000 273.750 2.73661 -3 / 3: 175.000 13.0000 273.750 2.71923 -4 / 4: 176.000 13.0000 273.750 2.70184 -5 / 5: 177.000 13.0000 273.750 2.68442 -6 / 6: 178.000 13.0000 273.750 2.66698 -7 / 7: 179.000 13.0000 273.750 2.64953 -8 / 8: 180.000 13.0000 273.750 2.63208 -9 / 9: -179.000 13.0000 273.750 2.61463 -10 / 10: -178.000 13.0000 273.750 2.59718 -11 / 11: -177.000 13.0000 273.750 2.57974 -12 / 12: -176.000 13.0000 273.750 2.56232 -13 / 13: -175.000 13.0000 273.750 2.54492 -14 / 14: -174.000 13.0000 273.750 2.52755 -15 / 15: -173.000 13.0000 273.750 2.51021 -16 / 16: 173.000 14.0000 273.750 2.73661 -17 / 17: 174.000 14.0000 273.750 2.71927 -18 / 18: 175.000 14.0000 273.750 2.70189 -19 / 19: 176.000 14.0000 273.750 2.68449 -20 / 20: 177.000 14.0000 273.750 2.66707 -21 / 21: 178.000 14.0000 273.750 2.64964 -22 / 22: 179.000 14.0000 273.750 2.63219 -23 / 23: 180.000 14.0000 273.750 2.61474 -24 / 24: -179.000 14.0000 273.750 2.59729 -25 / 25: -178.000 14.0000 273.750 2.57984 -26 / 26: -177.000 14.0000 273.750 2.56240 -27 / 27: -176.000 14.0000 273.750 2.54498 -28 / 28: -175.000 14.0000 273.750 2.52758 -29 / 29: -174.000 14.0000 273.750 2.51021 -30 / 30: -173.000 14.0000 273.750 2.49287 -31 / 31: 173.000 15.0000 273.750 2.71923 -32 / 32: 174.000 15.0000 273.750 2.70189 -33 / 33: 175.000 15.0000 273.750 2.68452 -let xyt_nobs = scat2grid_nobs_xyt(smxyt_xs, smxyt_ys, smxyt_ts, X[gx=x_11], Y[gy=y_11], T[gt=t_12]) -list xyt_nobs - VARIABLE : SCAT2GRID_NOBS_XYT(SMXYT_XS, SMXYT_YS, SMXYT_TS, X[GX=X_11], Y[GY=Y_11], T[GT=T_12]) - SUBSET : 11 by 11 by 12 points (LONGITUDE-LATITUDE-TIME) - 170E 172E 174E 176E 178E 180E 178W 176W 174W 172W 170W - 1 2 3 4 5 6 7 8 9 10 11 - ---- L:1 T: 16-JAN-1995 05:00 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 0.00000 - 26N / 9: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 24N / 8: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 22N / 7: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 20N / 6: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 18N / 5: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 16N / 4: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 14N / 3: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - ---- L:2 T: 15-FEB-1995 15:00 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 26N / 9: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 24N / 8: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 22N / 7: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 20N / 6: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 18N / 5: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 16N / 4: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 14N / 3: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - ---- L:3 T: 18-MAR-1995 01:00 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 0.00000 - 26N / 9: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 24N / 8: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 22N / 7: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 20N / 6: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 18N / 5: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 16N / 4: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 14N / 3: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - ---- L:4 T: 17-APR-1995 11:00 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 0.00000 - 26N / 9: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 24N / 8: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 22N / 7: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 20N / 6: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 18N / 5: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 16N / 4: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 14N / 3: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - ---- L:5 T: 17-MAY-1995 21:00 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 26N / 9: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 24N / 8: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 22N / 7: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 20N / 6: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 18N / 5: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 16N / 4: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 14N / 3: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - ---- L:6 T: 17-JUN-1995 07:00 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 0.00000 - 26N / 9: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 24N / 8: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 22N / 7: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 20N / 6: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 18N / 5: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 16N / 4: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 14N / 3: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - ---- L:7 T: 17-JUL-1995 17:00 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 0.00000 - 26N / 9: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 24N / 8: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 22N / 7: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 20N / 6: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 18N / 5: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 16N / 4: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 14N / 3: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - ---- L:8 T: 17-AUG-1995 03:00 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 26N / 9: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 24N / 8: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 22N / 7: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 20N / 6: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 18N / 5: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 16N / 4: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 14N / 3: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - ---- L:9 T: 16-SEP-1995 13:00 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 0.00000 - 26N / 9: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 24N / 8: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 22N / 7: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 20N / 6: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 18N / 5: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 16N / 4: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 14N / 3: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - ---- L:10 T: 16-OCT-1995 23:00 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 0.00000 - 26N / 9: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 24N / 8: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 22N / 7: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 20N / 6: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 18N / 5: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 16N / 4: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 14N / 3: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - ---- L:11 T: 16-NOV-1995 09:00 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 26N / 9: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 24N / 8: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 22N / 7: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 20N / 6: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 18N / 5: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 16N / 4: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 14N / 3: 0.00000 0.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 8.00000 4.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - ---- L:12 T: 16-DEC-1995 19:00 - 30N / 11: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 28N / 10: 0.00000 0.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 2.00000 1.00000 0.00000 - 26N / 9: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 24N / 8: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 22N / 7: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 20N / 6: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 18N / 5: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 16N / 4: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 14N / 3: 0.00000 0.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 4.00000 2.00000 0.00000 - 12N / 2: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - 10N / 1: 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 - -can var /all -can axis t_12 -can axis y_11 -can axis x_11 -can axis t_16 -can axis y_15 -can axis x_15 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bn_scat2grid_t -! bn_scat2grid_t.jnl -! test the ave_scat2grid_t and scat2grid_t functions, -! listing the results which can be checked against input - -define axis/t=0:8760/unit=hours/t0="01-JAN-1995 00:00:00"/edges/npoints=32 t_32 - -let logtp50 = log(T[gt=t_32] + 50.0) -let ltp50_tax = T[gt=t_32] -list ltp50_tax, logtp50 - TIME: 01-JAN-1995 00:00 to 01-JAN-1996 00:00 - Column 1: LTP50_TAX is T[GT=T_32] - Column 2: LOGTP50 is LOG(T[GT=T_32] + 50.0) - LTP50_TAX LOGTP50 -06-JAN-1995 16 / 1: 136.88 2.27155 -18-JAN-1995 02 / 2: 410.63 2.66335 -29-JAN-1995 12 / 3: 684.38 2.86592 -09-FEB-1995 22 / 4: 958.13 3.00351 -21-FEB-1995 07 / 5: 1231.88 3.10785 -04-MAR-1995 17 / 6: 1505.63 3.19190 -16-MAR-1995 03 / 7: 1779.38 3.26230 -27-MAR-1995 13 / 8: 2053.13 3.32287 -07-APR-1995 22 / 9: 2326.88 3.37601 -19-APR-1995 08 / 10: 2600.63 3.42335 -30-APR-1995 18 / 11: 2874.38 3.46603 -12-MAY-1995 04 / 12: 3148.13 3.50490 -23-MAY-1995 13 / 13: 3421.88 3.54056 -03-JUN-1995 23 / 14: 3695.63 3.57352 -15-JUN-1995 09 / 15: 3969.38 3.60416 -26-JUN-1995 19 / 16: 4243.13 3.63277 -08-JUL-1995 04 / 17: 4516.88 3.65962 -19-JUL-1995 14 / 18: 4790.63 3.68490 -31-JUL-1995 00 / 19: 5064.38 3.70879 -11-AUG-1995 10 / 20: 5338.13 3.73144 -22-AUG-1995 19 / 21: 5611.88 3.75296 -03-SEP-1995 05 / 22: 5885.63 3.77347 -14-SEP-1995 15 / 23: 6159.38 3.79305 -26-SEP-1995 01 / 24: 6433.13 3.81178 -07-OCT-1995 10 / 25: 6706.88 3.82975 -18-OCT-1995 20 / 26: 6980.63 3.84699 -30-OCT-1995 06 / 27: 7254.38 3.86358 -10-NOV-1995 16 / 28: 7528.13 3.87956 -22-NOV-1995 01 / 29: 7801.88 3.89497 -03-DEC-1995 11 / 30: 8075.63 3.90986 -14-DEC-1995 21 / 31: 8349.38 3.92425 -26-DEC-1995 07 / 32: 8623.13 3.93818 - -define axis/t=0:8760/unit=hours/t0="01-JAN-1995 00:00:00"/edges/npoints=12 t_12 -let new_tax = T[gt=t_12] - -let ave_t = ave_scat2grid_t(ltp50_tax, logtp50, new_tax) -let t_cnt = scat2grid_t(ltp50_tax, new_tax) -list new_tax, ave_t, t_cnt - TIME: 01-JAN-1995 00:00 to 01-JAN-1996 00:00 - Column 1: NEW_TAX is T[GT=T_12] - Column 2: AVE_T is AVE_SCAT2GRID_T(LTP50_TAX, LOGTP50, NEW_TAX) - Column 3: T_CNT is SCAT2GRID_T(LTP50_TAX, NEW_TAX) - NEW_TAX AVE_T T_CNT -16-JAN-1995 / 1: 365.00 2.60027 3.00000 -15-FEB-1995 / 2: 1095.00 3.05568 2.00000 -18-MAR-1995 / 3: 1825.00 3.25902 3.00000 -17-APR-1995 / 4: 2555.00 3.42180 3.00000 -17-MAY-1995 / 5: 3285.00 3.52273 2.00000 -17-JUN-1995 / 6: 4015.00 3.60349 3.00000 -17-JUL-1995 / 7: 4745.00 3.68444 3.00000 -17-AUG-1995 / 8: 5475.00 3.74220 2.00000 -16-SEP-1995 / 9: 6205.00 3.79277 3.00000 -16-OCT-1995 / 10: 6935.00 3.84677 3.00000 -16-NOV-1995 / 11: 7665.00 3.88727 2.00000 -16-DEC-1995 / 12: 8395.00 3.92409 3.00000 - -can mem /all -can var /all -can axis t_12 -can axis t_32 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bn_transpose -! bn_tranpose.jnl -! test the transpose functions, -! listing the results which can be checked against input - -def axis /X=0.0:4.0:1.0 xaxs -def axis /Y=0.0:3.0:1.0 yaxs -def axis /Z=0.0:2.0:1.0 zaxs -def axis /T=0.0:1.0:1.0 taxs - -def grid /X=xaxs /Y=yaxs /Z=zaxs /T=taxs mygrd -set grid mygrd - -let myvar = X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) - -list myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) - SUBSET : 5 by 4 by 3 by 2 points (X-Y-Z-T) - 0 1 2 3 4 - 1 2 3 4 5 - ---- L:1 T: 0 - ---- K:1 Z: 0 - 0 / 1: 0.000 1.000 2.000 3.000 4.000 - 1 / 2: 5.000 6.000 7.000 8.000 9.000 - 2 / 3: 10.000 11.000 12.000 13.000 14.000 - 3 / 4: 15.000 16.000 17.000 18.000 19.000 - ---- K:2 Z: 1 - 0 / 1: 20.000 21.000 22.000 23.000 24.000 - 1 / 2: 25.000 26.000 27.000 28.000 29.000 - 2 / 3: 30.000 31.000 32.000 33.000 34.000 - 3 / 4: 35.000 36.000 37.000 38.000 39.000 - ---- K:3 Z: 2 - 0 / 1: 40.000 41.000 42.000 43.000 44.000 - 1 / 2: 45.000 46.000 47.000 48.000 49.000 - 2 / 3: 50.000 51.000 52.000 53.000 54.000 - 3 / 4: 55.000 56.000 57.000 58.000 59.000 - ---- L:2 T: 1 - ---- K:1 Z: 0 - 0 / 1: 60.000 61.000 62.000 63.000 64.000 - 1 / 2: 65.000 66.000 67.000 68.000 69.000 - 2 / 3: 70.000 71.000 72.000 73.000 74.000 - 3 / 4: 75.000 76.000 77.000 78.000 79.000 - ---- K:2 Z: 1 - 0 / 1: 80.000 81.000 82.000 83.000 84.000 - 1 / 2: 85.000 86.000 87.000 88.000 89.000 - 2 / 3: 90.000 91.000 92.000 93.000 94.000 - 3 / 4: 95.000 96.000 97.000 98.000 99.000 - ---- K:3 Z: 2 - 0 / 1: 100.000 101.000 102.000 103.000 104.000 - 1 / 2: 105.000 106.000 107.000 108.000 109.000 - 2 / 3: 110.000 111.000 112.000 113.000 114.000 - 3 / 4: 115.000 116.000 117.000 118.000 119.000 -list transpose_xy(myvar) - VARIABLE : TRANSPOSE_XY(MYVAR) - SUBSET : 4 by 5 by 3 by 2 points (X-Y-Z-T) - 1 2 3 4 - 1 2 3 4 - ---- L:1 T: 0 - ---- K:1 Z: 0 - 1 / 1: 0.000 5.000 10.000 15.000 - 2 / 2: 1.000 6.000 11.000 16.000 - 3 / 3: 2.000 7.000 12.000 17.000 - 4 / 4: 3.000 8.000 13.000 18.000 - 5 / 5: 4.000 9.000 14.000 19.000 - ---- K:2 Z: 1 - 1 / 1: 20.000 25.000 30.000 35.000 - 2 / 2: 21.000 26.000 31.000 36.000 - 3 / 3: 22.000 27.000 32.000 37.000 - 4 / 4: 23.000 28.000 33.000 38.000 - 5 / 5: 24.000 29.000 34.000 39.000 - ---- K:3 Z: 2 - 1 / 1: 40.000 45.000 50.000 55.000 - 2 / 2: 41.000 46.000 51.000 56.000 - 3 / 3: 42.000 47.000 52.000 57.000 - 4 / 4: 43.000 48.000 53.000 58.000 - 5 / 5: 44.000 49.000 54.000 59.000 - ---- L:2 T: 1 - ---- K:1 Z: 0 - 1 / 1: 60.000 65.000 70.000 75.000 - 2 / 2: 61.000 66.000 71.000 76.000 - 3 / 3: 62.000 67.000 72.000 77.000 - 4 / 4: 63.000 68.000 73.000 78.000 - 5 / 5: 64.000 69.000 74.000 79.000 - ---- K:2 Z: 1 - 1 / 1: 80.000 85.000 90.000 95.000 - 2 / 2: 81.000 86.000 91.000 96.000 - 3 / 3: 82.000 87.000 92.000 97.000 - 4 / 4: 83.000 88.000 93.000 98.000 - 5 / 5: 84.000 89.000 94.000 99.000 - ---- K:3 Z: 2 - 1 / 1: 100.000 105.000 110.000 115.000 - 2 / 2: 101.000 106.000 111.000 116.000 - 3 / 3: 102.000 107.000 112.000 117.000 - 4 / 4: 103.000 108.000 113.000 118.000 - 5 / 5: 104.000 109.000 114.000 119.000 -list transpose_xz(myvar) - VARIABLE : TRANSPOSE_XZ(MYVAR) - SUBSET : 3 by 4 by 5 by 2 points (X-Y-Z-T) - 1 2 3 - 1 2 3 - ---- L:1 T: 0 - ---- K:1 Z: 1 - 0 / 1: 0.000 20.000 40.000 - 1 / 2: 5.000 25.000 45.000 - 2 / 3: 10.000 30.000 50.000 - 3 / 4: 15.000 35.000 55.000 - ---- K:2 Z: 2 - 0 / 1: 1.000 21.000 41.000 - 1 / 2: 6.000 26.000 46.000 - 2 / 3: 11.000 31.000 51.000 - 3 / 4: 16.000 36.000 56.000 - ---- K:3 Z: 3 - 0 / 1: 2.000 22.000 42.000 - 1 / 2: 7.000 27.000 47.000 - 2 / 3: 12.000 32.000 52.000 - 3 / 4: 17.000 37.000 57.000 - ---- K:4 Z: 4 - 0 / 1: 3.000 23.000 43.000 - 1 / 2: 8.000 28.000 48.000 - 2 / 3: 13.000 33.000 53.000 - 3 / 4: 18.000 38.000 58.000 - ---- K:5 Z: 5 - 0 / 1: 4.000 24.000 44.000 - 1 / 2: 9.000 29.000 49.000 - 2 / 3: 14.000 34.000 54.000 - 3 / 4: 19.000 39.000 59.000 - ---- L:2 T: 1 - ---- K:1 Z: 1 - 0 / 1: 60.000 80.000 100.000 - 1 / 2: 65.000 85.000 105.000 - 2 / 3: 70.000 90.000 110.000 - 3 / 4: 75.000 95.000 115.000 - ---- K:2 Z: 2 - 0 / 1: 61.000 81.000 101.000 - 1 / 2: 66.000 86.000 106.000 - 2 / 3: 71.000 91.000 111.000 - 3 / 4: 76.000 96.000 116.000 - ---- K:3 Z: 3 - 0 / 1: 62.000 82.000 102.000 - 1 / 2: 67.000 87.000 107.000 - 2 / 3: 72.000 92.000 112.000 - 3 / 4: 77.000 97.000 117.000 - ---- K:4 Z: 4 - 0 / 1: 63.000 83.000 103.000 - 1 / 2: 68.000 88.000 108.000 - 2 / 3: 73.000 93.000 113.000 - 3 / 4: 78.000 98.000 118.000 - ---- K:5 Z: 5 - 0 / 1: 64.000 84.000 104.000 - 1 / 2: 69.000 89.000 109.000 - 2 / 3: 74.000 94.000 114.000 - 3 / 4: 79.000 99.000 119.000 -list transpose_xt(myvar) - VARIABLE : TRANSPOSE_XT(MYVAR) - SUBSET : 2 by 4 by 3 by 5 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 0 - 0 / 1: 0.000 60.000 - 1 / 2: 5.000 65.000 - 2 / 3: 10.000 70.000 - 3 / 4: 15.000 75.000 - ---- K:2 Z: 1 - 0 / 1: 20.000 80.000 - 1 / 2: 25.000 85.000 - 2 / 3: 30.000 90.000 - 3 / 4: 35.000 95.000 - ---- K:3 Z: 2 - 0 / 1: 40.000 100.000 - 1 / 2: 45.000 105.000 - 2 / 3: 50.000 110.000 - 3 / 4: 55.000 115.000 - ---- L:2 T: 2 - ---- K:1 Z: 0 - 0 / 1: 1.000 61.000 - 1 / 2: 6.000 66.000 - 2 / 3: 11.000 71.000 - 3 / 4: 16.000 76.000 - ---- K:2 Z: 1 - 0 / 1: 21.000 81.000 - 1 / 2: 26.000 86.000 - 2 / 3: 31.000 91.000 - 3 / 4: 36.000 96.000 - ---- K:3 Z: 2 - 0 / 1: 41.000 101.000 - 1 / 2: 46.000 106.000 - 2 / 3: 51.000 111.000 - 3 / 4: 56.000 116.000 - ---- L:3 T: 3 - ---- K:1 Z: 0 - 0 / 1: 2.000 62.000 - 1 / 2: 7.000 67.000 - 2 / 3: 12.000 72.000 - 3 / 4: 17.000 77.000 - ---- K:2 Z: 1 - 0 / 1: 22.000 82.000 - 1 / 2: 27.000 87.000 - 2 / 3: 32.000 92.000 - 3 / 4: 37.000 97.000 - ---- K:3 Z: 2 - 0 / 1: 42.000 102.000 - 1 / 2: 47.000 107.000 - 2 / 3: 52.000 112.000 - 3 / 4: 57.000 117.000 - ---- L:4 T: 4 - ---- K:1 Z: 0 - 0 / 1: 3.000 63.000 - 1 / 2: 8.000 68.000 - 2 / 3: 13.000 73.000 - 3 / 4: 18.000 78.000 - ---- K:2 Z: 1 - 0 / 1: 23.000 83.000 - 1 / 2: 28.000 88.000 - 2 / 3: 33.000 93.000 - 3 / 4: 38.000 98.000 - ---- K:3 Z: 2 - 0 / 1: 43.000 103.000 - 1 / 2: 48.000 108.000 - 2 / 3: 53.000 113.000 - 3 / 4: 58.000 118.000 - ---- L:5 T: 5 - ---- K:1 Z: 0 - 0 / 1: 4.000 64.000 - 1 / 2: 9.000 69.000 - 2 / 3: 14.000 74.000 - 3 / 4: 19.000 79.000 - ---- K:2 Z: 1 - 0 / 1: 24.000 84.000 - 1 / 2: 29.000 89.000 - 2 / 3: 34.000 94.000 - 3 / 4: 39.000 99.000 - ---- K:3 Z: 2 - 0 / 1: 44.000 104.000 - 1 / 2: 49.000 109.000 - 2 / 3: 54.000 114.000 - 3 / 4: 59.000 119.000 -list transpose_yz(myvar) - VARIABLE : TRANSPOSE_YZ(MYVAR) - SUBSET : 5 by 3 by 4 by 2 points (X-Y-Z-T) - 0 1 2 3 4 - 1 2 3 4 5 - ---- L:1 T: 0 - ---- K:1 Z: 1 - 1 / 1: 0.000 1.000 2.000 3.000 4.000 - 2 / 2: 20.000 21.000 22.000 23.000 24.000 - 3 / 3: 40.000 41.000 42.000 43.000 44.000 - ---- K:2 Z: 2 - 1 / 1: 5.000 6.000 7.000 8.000 9.000 - 2 / 2: 25.000 26.000 27.000 28.000 29.000 - 3 / 3: 45.000 46.000 47.000 48.000 49.000 - ---- K:3 Z: 3 - 1 / 1: 10.000 11.000 12.000 13.000 14.000 - 2 / 2: 30.000 31.000 32.000 33.000 34.000 - 3 / 3: 50.000 51.000 52.000 53.000 54.000 - ---- K:4 Z: 4 - 1 / 1: 15.000 16.000 17.000 18.000 19.000 - 2 / 2: 35.000 36.000 37.000 38.000 39.000 - 3 / 3: 55.000 56.000 57.000 58.000 59.000 - ---- L:2 T: 1 - ---- K:1 Z: 1 - 1 / 1: 60.000 61.000 62.000 63.000 64.000 - 2 / 2: 80.000 81.000 82.000 83.000 84.000 - 3 / 3: 100.000 101.000 102.000 103.000 104.000 - ---- K:2 Z: 2 - 1 / 1: 65.000 66.000 67.000 68.000 69.000 - 2 / 2: 85.000 86.000 87.000 88.000 89.000 - 3 / 3: 105.000 106.000 107.000 108.000 109.000 - ---- K:3 Z: 3 - 1 / 1: 70.000 71.000 72.000 73.000 74.000 - 2 / 2: 90.000 91.000 92.000 93.000 94.000 - 3 / 3: 110.000 111.000 112.000 113.000 114.000 - ---- K:4 Z: 4 - 1 / 1: 75.000 76.000 77.000 78.000 79.000 - 2 / 2: 95.000 96.000 97.000 98.000 99.000 - 3 / 3: 115.000 116.000 117.000 118.000 119.000 -list transpose_yt(myvar) - VARIABLE : TRANSPOSE_YT(MYVAR) - SUBSET : 5 by 2 by 3 by 4 points (X-Y-Z-T) - 0 1 2 3 4 - 1 2 3 4 5 - ---- L:1 T: 1 - ---- K:1 Z: 0 - 1 / 1: 0.000 1.000 2.000 3.000 4.000 - 2 / 2: 60.000 61.000 62.000 63.000 64.000 - ---- K:2 Z: 1 - 1 / 1: 20.000 21.000 22.000 23.000 24.000 - 2 / 2: 80.000 81.000 82.000 83.000 84.000 - ---- K:3 Z: 2 - 1 / 1: 40.000 41.000 42.000 43.000 44.000 - 2 / 2: 100.000 101.000 102.000 103.000 104.000 - ---- L:2 T: 2 - ---- K:1 Z: 0 - 1 / 1: 5.000 6.000 7.000 8.000 9.000 - 2 / 2: 65.000 66.000 67.000 68.000 69.000 - ---- K:2 Z: 1 - 1 / 1: 25.000 26.000 27.000 28.000 29.000 - 2 / 2: 85.000 86.000 87.000 88.000 89.000 - ---- K:3 Z: 2 - 1 / 1: 45.000 46.000 47.000 48.000 49.000 - 2 / 2: 105.000 106.000 107.000 108.000 109.000 - ---- L:3 T: 3 - ---- K:1 Z: 0 - 1 / 1: 10.000 11.000 12.000 13.000 14.000 - 2 / 2: 70.000 71.000 72.000 73.000 74.000 - ---- K:2 Z: 1 - 1 / 1: 30.000 31.000 32.000 33.000 34.000 - 2 / 2: 90.000 91.000 92.000 93.000 94.000 - ---- K:3 Z: 2 - 1 / 1: 50.000 51.000 52.000 53.000 54.000 - 2 / 2: 110.000 111.000 112.000 113.000 114.000 - ---- L:4 T: 4 - ---- K:1 Z: 0 - 1 / 1: 15.000 16.000 17.000 18.000 19.000 - 2 / 2: 75.000 76.000 77.000 78.000 79.000 - ---- K:2 Z: 1 - 1 / 1: 35.000 36.000 37.000 38.000 39.000 - 2 / 2: 95.000 96.000 97.000 98.000 99.000 - ---- K:3 Z: 2 - 1 / 1: 55.000 56.000 57.000 58.000 59.000 - 2 / 2: 115.000 116.000 117.000 118.000 119.000 -list transpose_zt(myvar) - VARIABLE : TRANSPOSE_ZT(MYVAR) - SUBSET : 5 by 4 by 2 by 3 points (X-Y-Z-T) - 0 1 2 3 4 - 1 2 3 4 5 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 0 / 1: 0.000 1.000 2.000 3.000 4.000 - 1 / 2: 5.000 6.000 7.000 8.000 9.000 - 2 / 3: 10.000 11.000 12.000 13.000 14.000 - 3 / 4: 15.000 16.000 17.000 18.000 19.000 - ---- K:2 Z: 2 - 0 / 1: 60.000 61.000 62.000 63.000 64.000 - 1 / 2: 65.000 66.000 67.000 68.000 69.000 - 2 / 3: 70.000 71.000 72.000 73.000 74.000 - 3 / 4: 75.000 76.000 77.000 78.000 79.000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 0 / 1: 20.000 21.000 22.000 23.000 24.000 - 1 / 2: 25.000 26.000 27.000 28.000 29.000 - 2 / 3: 30.000 31.000 32.000 33.000 34.000 - 3 / 4: 35.000 36.000 37.000 38.000 39.000 - ---- K:2 Z: 2 - 0 / 1: 80.000 81.000 82.000 83.000 84.000 - 1 / 2: 85.000 86.000 87.000 88.000 89.000 - 2 / 3: 90.000 91.000 92.000 93.000 94.000 - 3 / 4: 95.000 96.000 97.000 98.000 99.000 - ---- L:3 T: 3 - ---- K:1 Z: 1 - 0 / 1: 40.000 41.000 42.000 43.000 44.000 - 1 / 2: 45.000 46.000 47.000 48.000 49.000 - 2 / 3: 50.000 51.000 52.000 53.000 54.000 - 3 / 4: 55.000 56.000 57.000 58.000 59.000 - ---- K:2 Z: 2 - 0 / 1: 100.000 101.000 102.000 103.000 104.000 - 1 / 2: 105.000 106.000 107.000 108.000 109.000 - 2 / 3: 110.000 111.000 112.000 113.000 114.000 - 3 / 4: 115.000 116.000 117.000 118.000 119.000 - -def axis /X=0.0:4.0:1.0/units=degrees_east xaxs -def axis /Y=0.0:3.0:1.0/units=degrees_north yaxs -def axis /Z=0.0:1.4:0.2/units=m/depth zaxs -def axis /T=0.0:6.0:1.0/units=days/t0=1-jan-2001 taxs -def axis /E=0.0:10.0:5 eaxs -def axis /F=0.0:100.0:20 faxs -def grid /X=xaxs /Y=yaxs /Z=zaxs /T=taxs /E=eaxs /F=faxs mygrd - -set grid mygrd -let myvar = X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - - -! * * * * Simple XYZTEF examples * * * - -list/x=1/y=1/z=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 3 by 6 points (E-F) - LONGITUDE: 1E - LATITUDE : 1N - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - 0 5 10 - 1 2 3 - 0 / 1: 86.0000 91.0000 96.0000 - 20 / 2: 66.0000 71.0000 76.0000 - 40 / 3: 46.0000 51.0000 56.0000 - 60 / 4: 26.0000 31.0000 36.0000 - 80 / 5: 6.0000 11.0000 16.0000 - 100 / 6: -14.0000 -9.0000 -4.0000 -list/x=1/y=1/z=1/t=1 transpose_ef(myvar) - VARIABLE : TRANSPOSE_EF(MYVAR) - SUBSET : 6 by 3 points (E-F) - LONGITUDE: 1E - LATITUDE : 1N - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - 1 2 3 4 5 6 - 1 2 3 4 5 6 - 1 / 1: 86.0000 66.0000 46.0000 26.0000 6.0000 -14.0000 - 2 / 2: 91.0000 71.0000 51.0000 31.0000 11.0000 -9.0000 - 3 / 3: 96.0000 76.0000 56.0000 36.0000 16.0000 -4.0000 - -list/e=5/y=1/z=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 5 by 6 points (LONGITUDE-F) - LATITUDE : 1N - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - E : 5 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - 0 / 1: 90.0000 91.0000 92.0000 93.0000 94.0000 - 20 / 2: 70.0000 71.0000 72.0000 73.0000 74.0000 - 40 / 3: 50.0000 51.0000 52.0000 53.0000 54.0000 - 60 / 4: 30.0000 31.0000 32.0000 33.0000 34.0000 - 80 / 5: 10.0000 11.0000 12.0000 13.0000 14.0000 - 100 / 6: -10.0000 -9.0000 -8.0000 -7.0000 -6.0000 -list/e=5/y=1/z=1/t=1 transpose_xf(myvar) - VARIABLE : TRANSPOSE_XF(MYVAR) - SUBSET : 6 by 5 points (X-F) - LATITUDE : 1N - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - E : 5 - 1 2 3 4 5 6 - 1 2 3 4 5 6 - 1 / 1: 90.0000 70.0000 50.0000 30.0000 10.0000 -10.0000 - 2 / 2: 91.0000 71.0000 51.0000 31.0000 11.0000 -9.0000 - 3 / 3: 92.0000 72.0000 52.0000 32.0000 12.0000 -8.0000 - 4 / 4: 93.0000 73.0000 53.0000 33.0000 13.0000 -7.0000 - 5 / 5: 94.0000 74.0000 54.0000 34.0000 14.0000 -6.0000 -list/F=25/y=1/z=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 5 by 3 points (LONGITUDE-E) - LATITUDE : 1N - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - F : 20 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - 0 / 1: 65.0000 66.0000 67.0000 68.0000 69.0000 - 5 / 2: 70.0000 71.0000 72.0000 73.0000 74.0000 - 10 / 3: 75.0000 76.0000 77.0000 78.0000 79.0000 -list/F=25/y=1/z=1/t=1 transpose_xe(myvar) - VARIABLE : TRANSPOSE_XE(MYVAR) - SUBSET : 3 by 5 points (X-E) - LATITUDE : 1N - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - F : 20 - 1 2 3 - 1 2 3 - 1 / 1: 65.0000 70.0000 75.0000 - 2 / 2: 66.0000 71.0000 76.0000 - 3 / 3: 67.0000 72.0000 77.0000 - 4 / 4: 68.0000 73.0000 78.0000 - 5 / 5: 69.0000 74.0000 79.0000 - -list/e=5/x=1/z=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 4 by 6 points (LATITUDE-F) - LONGITUDE: 1E - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - E : 5 - 0 1N 2N 3N - 1 2 3 4 - 0 / 1: 86.000 91.000 96.000 101.000 - 20 / 2: 66.000 71.000 76.000 81.000 - 40 / 3: 46.000 51.000 56.000 61.000 - 60 / 4: 26.000 31.000 36.000 41.000 - 80 / 5: 6.000 11.000 16.000 21.000 - 100 / 6: -14.000 -9.000 -4.000 1.000 -list/e=5/x=1/z=1/t=1 transpose_yf(myvar) - VARIABLE : TRANSPOSE_YF(MYVAR) - SUBSET : 6 by 4 points (Y-F) - LONGITUDE: 1E - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - E : 5 - 1 2 3 4 5 6 - 1 2 3 4 5 6 - 1 / 1: 86.000 66.000 46.000 26.000 6.000 -14.000 - 2 / 2: 91.000 71.000 51.000 31.000 11.000 -9.000 - 3 / 3: 96.000 76.000 56.000 36.000 16.000 -4.000 - 4 / 4: 101.000 81.000 61.000 41.000 21.000 1.000 -list/F=25/x=1/z=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 4 by 3 points (LATITUDE-E) - LONGITUDE: 1E - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - F : 20 - 0 1N 2N 3N - 1 2 3 4 - 0 / 1: 61.0000 66.0000 71.0000 76.0000 - 5 / 2: 66.0000 71.0000 76.0000 81.0000 - 10 / 3: 71.0000 76.0000 81.0000 86.0000 -list/F=25/x=1/z=1/t=1 transpose_ye(myvar) - VARIABLE : TRANSPOSE_YE(MYVAR) - SUBSET : 3 by 4 points (Y-E) - LONGITUDE: 1E - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - F : 20 - 1 2 3 - 1 2 3 - 1 / 1: 61.0000 66.0000 71.0000 - 2 / 2: 66.0000 71.0000 76.0000 - 3 / 3: 71.0000 76.0000 81.0000 - 4 / 4: 76.0000 81.0000 86.0000 - -list/e=5/x=1/y=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 8 by 6 points (DEPTH (m)-F) - LONGITUDE: 1E - LATITUDE : 1N - TIME : 02-JAN-2001 00:00 - E : 5 - 0 0.2 0.4 0.6 0.8 1 1.2 1.4 - 1 2 3 4 5 6 7 8 - 0 / 1: 71.0000 75.0000 79.0000 83.0000 87.0000 91.0000 95.0000 99.0000 - 20 / 2: 51.0000 55.0000 59.0000 63.0000 67.0000 71.0000 75.0000 79.0000 - 40 / 3: 31.0000 35.0000 39.0000 43.0000 47.0000 51.0000 55.0000 59.0000 - 60 / 4: 11.0000 15.0000 19.0000 23.0000 27.0000 31.0000 35.0000 39.0000 - 80 / 5: -9.0000 -5.0000 -1.0000 3.0000 7.0000 11.0000 15.0000 19.0000 - 100 / 6: -29.0000 -25.0000 -21.0000 -17.0000 -13.0000 -9.0000 -5.0000 -1.0000 -list/e=5/x=1/y=1/t=1 transpose_zf(myvar) - VARIABLE : TRANSPOSE_ZF(MYVAR) - SUBSET : 6 by 8 points (Z-F) - LONGITUDE: 1E - LATITUDE : 1N - TIME : 02-JAN-2001 00:00 - E : 5 - 1 2 3 4 5 6 - 1 2 3 4 5 6 - 1 / 1: 71.0000 51.0000 31.0000 11.0000 -9.0000 -29.0000 - 2 / 2: 75.0000 55.0000 35.0000 15.0000 -5.0000 -25.0000 - 3 / 3: 79.0000 59.0000 39.0000 19.0000 -1.0000 -21.0000 - 4 / 4: 83.0000 63.0000 43.0000 23.0000 3.0000 -17.0000 - 5 / 5: 87.0000 67.0000 47.0000 27.0000 7.0000 -13.0000 - 6 / 6: 91.0000 71.0000 51.0000 31.0000 11.0000 -9.0000 - 7 / 7: 95.0000 75.0000 55.0000 35.0000 15.0000 -5.0000 - 8 / 8: 99.0000 79.0000 59.0000 39.0000 19.0000 -1.0000 -list/F=25/x=1/y=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 8 by 3 points (DEPTH (m)-E) - LONGITUDE: 1E - LATITUDE : 1N - TIME : 02-JAN-2001 00:00 - F : 20 - 0 0.2 0.4 0.6 0.8 1 1.2 1.4 - 1 2 3 4 5 6 7 8 - 0 / 1: 46.0000 50.0000 54.0000 58.0000 62.0000 66.0000 70.0000 74.0000 - 5 / 2: 51.0000 55.0000 59.0000 63.0000 67.0000 71.0000 75.0000 79.0000 - 10 / 3: 56.0000 60.0000 64.0000 68.0000 72.0000 76.0000 80.0000 84.0000 -list/F=25/x=1/y=1/t=1 transpose_ze(myvar) - VARIABLE : TRANSPOSE_ZE(MYVAR) - SUBSET : 3 by 8 points (Z-E) - LONGITUDE: 1E - LATITUDE : 1N - TIME : 02-JAN-2001 00:00 - F : 20 - 1 2 3 - 1 2 3 - 1 / 1: 46.0000 51.0000 56.0000 - 2 / 2: 50.0000 55.0000 60.0000 - 3 / 3: 54.0000 59.0000 64.0000 - 4 / 4: 58.0000 63.0000 68.0000 - 5 / 5: 62.0000 67.0000 72.0000 - 6 / 6: 66.0000 71.0000 76.0000 - 7 / 7: 70.0000 75.0000 80.0000 - 8 / 8: 74.0000 79.0000 84.0000 - -list/e=5/x=1/y=1/z=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 7 by 6 points (TIME-F) - LONGITUDE: 1E - LATITUDE : 1N - DEPTH (m): 1 - E : 5 - 2001 2001 2001 2001 2001 2001 2001 - 1 2 3 4 5 6 7 - 0 / 1: 31.000 91.000 151.000 211.000 271.000 331.000 391.000 - 20 / 2: 11.000 71.000 131.000 191.000 251.000 311.000 371.000 - 40 / 3: -9.000 51.000 111.000 171.000 231.000 291.000 351.000 - 60 / 4: -29.000 31.000 91.000 151.000 211.000 271.000 331.000 - 80 / 5: -49.000 11.000 71.000 131.000 191.000 251.000 311.000 - 100 / 6: -69.000 -9.000 51.000 111.000 171.000 231.000 291.000 -list/e=5/x=1/y=1/z=1 transpose_tf(myvar) - VARIABLE : TRANSPOSE_TF(MYVAR) - SUBSET : 6 by 7 points (T-F) - LONGITUDE: 1E - LATITUDE : 1N - DEPTH (m): 1 - E : 5 - 1 2 3 4 5 6 - 1 2 3 4 5 6 - 1 / 1: 31.000 11.000 -9.000 -29.000 -49.000 -69.000 - 2 / 2: 91.000 71.000 51.000 31.000 11.000 -9.000 - 3 / 3: 151.000 131.000 111.000 91.000 71.000 51.000 - 4 / 4: 211.000 191.000 171.000 151.000 131.000 111.000 - 5 / 5: 271.000 251.000 231.000 211.000 191.000 171.000 - 6 / 6: 331.000 311.000 291.000 271.000 251.000 231.000 - 7 / 7: 391.000 371.000 351.000 331.000 311.000 291.000 -list/F=25/x=1/y=1/z=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 7 by 3 points (TIME-E) - LONGITUDE: 1E - LATITUDE : 1N - DEPTH (m): 1 - F : 20 - 2001 2001 2001 2001 2001 2001 2001 - 1 2 3 4 5 6 7 - 0 / 1: 6.000 66.000 126.000 186.000 246.000 306.000 366.000 - 5 / 2: 11.000 71.000 131.000 191.000 251.000 311.000 371.000 - 10 / 3: 16.000 76.000 136.000 196.000 256.000 316.000 376.000 -list/F=25/x=1/y=1/z=1 transpose_te(myvar) - VARIABLE : TRANSPOSE_TE(MYVAR) - SUBSET : 3 by 7 points (T-E) - LONGITUDE: 1E - LATITUDE : 1N - DEPTH (m): 1 - F : 20 - 1 2 3 - 1 2 3 - 1 / 1: 6.000 11.000 16.000 - 2 / 2: 66.000 71.000 76.000 - 3 / 3: 126.000 131.000 136.000 - 4 / 4: 186.000 191.000 196.000 - 5 / 5: 246.000 251.000 256.000 - 6 / 6: 306.000 311.000 316.000 - 7 / 7: 366.000 371.000 376.000 - - -! * * * * XYZTEF examples with another dimension * * * - -list/y=1/z=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 5 by 3 by 6 points (LONGITUDE-E-F) - LATITUDE : 1N - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- N:1 F: 0 - 0 / 1: 85.0000 86.0000 87.0000 88.0000 89.0000 - 5 / 2: 90.0000 91.0000 92.0000 93.0000 94.0000 - 10 / 3: 95.0000 96.0000 97.0000 98.0000 99.0000 - ---- N:2 F: 20 - 0 / 1: 65.0000 66.0000 67.0000 68.0000 69.0000 - 5 / 2: 70.0000 71.0000 72.0000 73.0000 74.0000 - 10 / 3: 75.0000 76.0000 77.0000 78.0000 79.0000 - ---- N:3 F: 40 - 0 / 1: 45.0000 46.0000 47.0000 48.0000 49.0000 - 5 / 2: 50.0000 51.0000 52.0000 53.0000 54.0000 - 10 / 3: 55.0000 56.0000 57.0000 58.0000 59.0000 - ---- N:4 F: 60 - 0 / 1: 25.0000 26.0000 27.0000 28.0000 29.0000 - 5 / 2: 30.0000 31.0000 32.0000 33.0000 34.0000 - 10 / 3: 35.0000 36.0000 37.0000 38.0000 39.0000 - ---- N:5 F: 80 - 0 / 1: 5.0000 6.0000 7.0000 8.0000 9.0000 - 5 / 2: 10.0000 11.0000 12.0000 13.0000 14.0000 - 10 / 3: 15.0000 16.0000 17.0000 18.0000 19.0000 - ---- N:6 F: 100 - 0 / 1: -15.0000 -14.0000 -13.0000 -12.0000 -11.0000 - 5 / 2: -10.0000 -9.0000 -8.0000 -7.0000 -6.0000 - 10 / 3: -5.0000 -4.0000 -3.0000 -2.0000 -1.0000 -list/y=1/z=1/t=1 transpose_ef(myvar) - VARIABLE : TRANSPOSE_EF(MYVAR) - SUBSET : 5 by 6 by 3 points (LONGITUDE-E-F) - LATITUDE : 1N - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- N:1 F: 1 - 1 / 1: 85.0000 86.0000 87.0000 88.0000 89.0000 - 2 / 2: 65.0000 66.0000 67.0000 68.0000 69.0000 - 3 / 3: 45.0000 46.0000 47.0000 48.0000 49.0000 - 4 / 4: 25.0000 26.0000 27.0000 28.0000 29.0000 - 5 / 5: 5.0000 6.0000 7.0000 8.0000 9.0000 - 6 / 6: -15.0000 -14.0000 -13.0000 -12.0000 -11.0000 - ---- N:2 F: 2 - 1 / 1: 90.0000 91.0000 92.0000 93.0000 94.0000 - 2 / 2: 70.0000 71.0000 72.0000 73.0000 74.0000 - 3 / 3: 50.0000 51.0000 52.0000 53.0000 54.0000 - 4 / 4: 30.0000 31.0000 32.0000 33.0000 34.0000 - 5 / 5: 10.0000 11.0000 12.0000 13.0000 14.0000 - 6 / 6: -10.0000 -9.0000 -8.0000 -7.0000 -6.0000 - ---- N:3 F: 3 - 1 / 1: 95.0000 96.0000 97.0000 98.0000 99.0000 - 2 / 2: 75.0000 76.0000 77.0000 78.0000 79.0000 - 3 / 3: 55.0000 56.0000 57.0000 58.0000 59.0000 - 4 / 4: 35.0000 36.0000 37.0000 38.0000 39.0000 - 5 / 5: 15.0000 16.0000 17.0000 18.0000 19.0000 - 6 / 6: -5.0000 -4.0000 -3.0000 -2.0000 -1.0000 - -list/e=5/z=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 5 by 4 by 6 points (LONGITUDE-LATITUDE-F) - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - E : 5 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- N:1 F: 0 - 3N / 4: 100.000 101.000 102.000 103.000 104.000 - 2N / 3: 95.000 96.000 97.000 98.000 99.000 - 1N / 2: 90.000 91.000 92.000 93.000 94.000 - 0 / 1: 85.000 86.000 87.000 88.000 89.000 - ---- N:2 F: 20 - 3N / 4: 80.000 81.000 82.000 83.000 84.000 - 2N / 3: 75.000 76.000 77.000 78.000 79.000 - 1N / 2: 70.000 71.000 72.000 73.000 74.000 - 0 / 1: 65.000 66.000 67.000 68.000 69.000 - ---- N:3 F: 40 - 3N / 4: 60.000 61.000 62.000 63.000 64.000 - 2N / 3: 55.000 56.000 57.000 58.000 59.000 - 1N / 2: 50.000 51.000 52.000 53.000 54.000 - 0 / 1: 45.000 46.000 47.000 48.000 49.000 - ---- N:4 F: 60 - 3N / 4: 40.000 41.000 42.000 43.000 44.000 - 2N / 3: 35.000 36.000 37.000 38.000 39.000 - 1N / 2: 30.000 31.000 32.000 33.000 34.000 - 0 / 1: 25.000 26.000 27.000 28.000 29.000 - ---- N:5 F: 80 - 3N / 4: 20.000 21.000 22.000 23.000 24.000 - 2N / 3: 15.000 16.000 17.000 18.000 19.000 - 1N / 2: 10.000 11.000 12.000 13.000 14.000 - 0 / 1: 5.000 6.000 7.000 8.000 9.000 - ---- N:6 F: 100 - 3N / 4: 0.000 1.000 2.000 3.000 4.000 - 2N / 3: -5.000 -4.000 -3.000 -2.000 -1.000 - 1N / 2: -10.000 -9.000 -8.000 -7.000 -6.000 - 0 / 1: -15.000 -14.000 -13.000 -12.000 -11.000 -list/e=5/z=1/t=1 transpose_xf(myvar) - VARIABLE : TRANSPOSE_XF(MYVAR) - SUBSET : 6 by 4 by 5 points (X-LATITUDE-F) - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - E : 5 - 1 2 3 4 5 6 - 1 2 3 4 5 6 - ---- N:1 F: 1 - 3N / 4: 100.000 80.000 60.000 40.000 20.000 0.000 - 2N / 3: 95.000 75.000 55.000 35.000 15.000 -5.000 - 1N / 2: 90.000 70.000 50.000 30.000 10.000 -10.000 - 0 / 1: 85.000 65.000 45.000 25.000 5.000 -15.000 - ---- N:2 F: 2 - 3N / 4: 101.000 81.000 61.000 41.000 21.000 1.000 - 2N / 3: 96.000 76.000 56.000 36.000 16.000 -4.000 - 1N / 2: 91.000 71.000 51.000 31.000 11.000 -9.000 - 0 / 1: 86.000 66.000 46.000 26.000 6.000 -14.000 - ---- N:3 F: 3 - 3N / 4: 102.000 82.000 62.000 42.000 22.000 2.000 - 2N / 3: 97.000 77.000 57.000 37.000 17.000 -3.000 - 1N / 2: 92.000 72.000 52.000 32.000 12.000 -8.000 - 0 / 1: 87.000 67.000 47.000 27.000 7.000 -13.000 - ---- N:4 F: 4 - 3N / 4: 103.000 83.000 63.000 43.000 23.000 3.000 - 2N / 3: 98.000 78.000 58.000 38.000 18.000 -2.000 - 1N / 2: 93.000 73.000 53.000 33.000 13.000 -7.000 - 0 / 1: 88.000 68.000 48.000 28.000 8.000 -12.000 - ---- N:5 F: 5 - 3N / 4: 104.000 84.000 64.000 44.000 24.000 4.000 - 2N / 3: 99.000 79.000 59.000 39.000 19.000 -1.000 - 1N / 2: 94.000 74.000 54.000 34.000 14.000 -6.000 - 0 / 1: 89.000 69.000 49.000 29.000 9.000 -11.000 -list/F=25/z=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 5 by 4 by 3 points (LONGITUDE-LATITUDE-E) - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - F : 20 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- M:1 E: 0 - 3N / 4: 75.0000 76.0000 77.0000 78.0000 79.0000 - 2N / 3: 70.0000 71.0000 72.0000 73.0000 74.0000 - 1N / 2: 65.0000 66.0000 67.0000 68.0000 69.0000 - 0 / 1: 60.0000 61.0000 62.0000 63.0000 64.0000 - ---- M:2 E: 5 - 3N / 4: 80.0000 81.0000 82.0000 83.0000 84.0000 - 2N / 3: 75.0000 76.0000 77.0000 78.0000 79.0000 - 1N / 2: 70.0000 71.0000 72.0000 73.0000 74.0000 - 0 / 1: 65.0000 66.0000 67.0000 68.0000 69.0000 - ---- M:3 E: 10 - 3N / 4: 85.0000 86.0000 87.0000 88.0000 89.0000 - 2N / 3: 80.0000 81.0000 82.0000 83.0000 84.0000 - 1N / 2: 75.0000 76.0000 77.0000 78.0000 79.0000 - 0 / 1: 70.0000 71.0000 72.0000 73.0000 74.0000 -list/F=25/z=1/t=1 transpose_xe(myvar) - VARIABLE : TRANSPOSE_XE(MYVAR) - SUBSET : 3 by 4 by 5 points (X-LATITUDE-E) - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - F : 20 - 1 2 3 - 1 2 3 - ---- M:1 E: 1 - 3N / 4: 75.0000 80.0000 85.0000 - 2N / 3: 70.0000 75.0000 80.0000 - 1N / 2: 65.0000 70.0000 75.0000 - 0 / 1: 60.0000 65.0000 70.0000 - ---- M:2 E: 2 - 3N / 4: 76.0000 81.0000 86.0000 - 2N / 3: 71.0000 76.0000 81.0000 - 1N / 2: 66.0000 71.0000 76.0000 - 0 / 1: 61.0000 66.0000 71.0000 - ---- M:3 E: 3 - 3N / 4: 77.0000 82.0000 87.0000 - 2N / 3: 72.0000 77.0000 82.0000 - 1N / 2: 67.0000 72.0000 77.0000 - 0 / 1: 62.0000 67.0000 72.0000 - ---- M:4 E: 4 - 3N / 4: 78.0000 83.0000 88.0000 - 2N / 3: 73.0000 78.0000 83.0000 - 1N / 2: 68.0000 73.0000 78.0000 - 0 / 1: 63.0000 68.0000 73.0000 - ---- M:5 E: 5 - 3N / 4: 79.0000 84.0000 89.0000 - 2N / 3: 74.0000 79.0000 84.0000 - 1N / 2: 69.0000 74.0000 79.0000 - 0 / 1: 64.0000 69.0000 74.0000 - -list/e=5/z=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 5 by 4 by 6 points (LONGITUDE-LATITUDE-F) - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - E : 5 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- N:1 F: 0 - 3N / 4: 100.000 101.000 102.000 103.000 104.000 - 2N / 3: 95.000 96.000 97.000 98.000 99.000 - 1N / 2: 90.000 91.000 92.000 93.000 94.000 - 0 / 1: 85.000 86.000 87.000 88.000 89.000 - ---- N:2 F: 20 - 3N / 4: 80.000 81.000 82.000 83.000 84.000 - 2N / 3: 75.000 76.000 77.000 78.000 79.000 - 1N / 2: 70.000 71.000 72.000 73.000 74.000 - 0 / 1: 65.000 66.000 67.000 68.000 69.000 - ---- N:3 F: 40 - 3N / 4: 60.000 61.000 62.000 63.000 64.000 - 2N / 3: 55.000 56.000 57.000 58.000 59.000 - 1N / 2: 50.000 51.000 52.000 53.000 54.000 - 0 / 1: 45.000 46.000 47.000 48.000 49.000 - ---- N:4 F: 60 - 3N / 4: 40.000 41.000 42.000 43.000 44.000 - 2N / 3: 35.000 36.000 37.000 38.000 39.000 - 1N / 2: 30.000 31.000 32.000 33.000 34.000 - 0 / 1: 25.000 26.000 27.000 28.000 29.000 - ---- N:5 F: 80 - 3N / 4: 20.000 21.000 22.000 23.000 24.000 - 2N / 3: 15.000 16.000 17.000 18.000 19.000 - 1N / 2: 10.000 11.000 12.000 13.000 14.000 - 0 / 1: 5.000 6.000 7.000 8.000 9.000 - ---- N:6 F: 100 - 3N / 4: 0.000 1.000 2.000 3.000 4.000 - 2N / 3: -5.000 -4.000 -3.000 -2.000 -1.000 - 1N / 2: -10.000 -9.000 -8.000 -7.000 -6.000 - 0 / 1: -15.000 -14.000 -13.000 -12.000 -11.000 -list/e=5/z=1/t=1 transpose_yf(myvar) - VARIABLE : TRANSPOSE_YF(MYVAR) - SUBSET : 5 by 6 by 4 points (LONGITUDE-Y-F) - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - E : 5 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- N:1 F: 1 - 1 / 1: 85.000 86.000 87.000 88.000 89.000 - 2 / 2: 65.000 66.000 67.000 68.000 69.000 - 3 / 3: 45.000 46.000 47.000 48.000 49.000 - 4 / 4: 25.000 26.000 27.000 28.000 29.000 - 5 / 5: 5.000 6.000 7.000 8.000 9.000 - 6 / 6: -15.000 -14.000 -13.000 -12.000 -11.000 - ---- N:2 F: 2 - 1 / 1: 90.000 91.000 92.000 93.000 94.000 - 2 / 2: 70.000 71.000 72.000 73.000 74.000 - 3 / 3: 50.000 51.000 52.000 53.000 54.000 - 4 / 4: 30.000 31.000 32.000 33.000 34.000 - 5 / 5: 10.000 11.000 12.000 13.000 14.000 - 6 / 6: -10.000 -9.000 -8.000 -7.000 -6.000 - ---- N:3 F: 3 - 1 / 1: 95.000 96.000 97.000 98.000 99.000 - 2 / 2: 75.000 76.000 77.000 78.000 79.000 - 3 / 3: 55.000 56.000 57.000 58.000 59.000 - 4 / 4: 35.000 36.000 37.000 38.000 39.000 - 5 / 5: 15.000 16.000 17.000 18.000 19.000 - 6 / 6: -5.000 -4.000 -3.000 -2.000 -1.000 - ---- N:4 F: 4 - 1 / 1: 100.000 101.000 102.000 103.000 104.000 - 2 / 2: 80.000 81.000 82.000 83.000 84.000 - 3 / 3: 60.000 61.000 62.000 63.000 64.000 - 4 / 4: 40.000 41.000 42.000 43.000 44.000 - 5 / 5: 20.000 21.000 22.000 23.000 24.000 - 6 / 6: 0.000 1.000 2.000 3.000 4.000 -list/F=25/z=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 5 by 4 by 3 points (LONGITUDE-LATITUDE-E) - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - F : 20 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- M:1 E: 0 - 3N / 4: 75.0000 76.0000 77.0000 78.0000 79.0000 - 2N / 3: 70.0000 71.0000 72.0000 73.0000 74.0000 - 1N / 2: 65.0000 66.0000 67.0000 68.0000 69.0000 - 0 / 1: 60.0000 61.0000 62.0000 63.0000 64.0000 - ---- M:2 E: 5 - 3N / 4: 80.0000 81.0000 82.0000 83.0000 84.0000 - 2N / 3: 75.0000 76.0000 77.0000 78.0000 79.0000 - 1N / 2: 70.0000 71.0000 72.0000 73.0000 74.0000 - 0 / 1: 65.0000 66.0000 67.0000 68.0000 69.0000 - ---- M:3 E: 10 - 3N / 4: 85.0000 86.0000 87.0000 88.0000 89.0000 - 2N / 3: 80.0000 81.0000 82.0000 83.0000 84.0000 - 1N / 2: 75.0000 76.0000 77.0000 78.0000 79.0000 - 0 / 1: 70.0000 71.0000 72.0000 73.0000 74.0000 -list/F=25/z=1/t=1 transpose_ye(myvar) - VARIABLE : TRANSPOSE_YE(MYVAR) - SUBSET : 5 by 3 by 4 points (LONGITUDE-Y-E) - DEPTH (m): 1 - TIME : 02-JAN-2001 00:00 - F : 20 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- M:1 E: 1 - 1 / 1: 60.0000 61.0000 62.0000 63.0000 64.0000 - 2 / 2: 65.0000 66.0000 67.0000 68.0000 69.0000 - 3 / 3: 70.0000 71.0000 72.0000 73.0000 74.0000 - ---- M:2 E: 2 - 1 / 1: 65.0000 66.0000 67.0000 68.0000 69.0000 - 2 / 2: 70.0000 71.0000 72.0000 73.0000 74.0000 - 3 / 3: 75.0000 76.0000 77.0000 78.0000 79.0000 - ---- M:3 E: 3 - 1 / 1: 70.0000 71.0000 72.0000 73.0000 74.0000 - 2 / 2: 75.0000 76.0000 77.0000 78.0000 79.0000 - 3 / 3: 80.0000 81.0000 82.0000 83.0000 84.0000 - ---- M:4 E: 4 - 1 / 1: 75.0000 76.0000 77.0000 78.0000 79.0000 - 2 / 2: 80.0000 81.0000 82.0000 83.0000 84.0000 - 3 / 3: 85.0000 86.0000 87.0000 88.0000 89.0000 - -list/e=5/y=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 5 by 8 by 6 points (LONGITUDE-DEPTH (m)-F) - LATITUDE : 1N - TIME : 02-JAN-2001 00:00 - E : 5 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- N:1 F: 0 - 0 / 1: 70.000 71.000 72.000 73.000 74.000 - 0.2 / 2: 74.000 75.000 76.000 77.000 78.000 - 0.4 / 3: 78.000 79.000 80.000 81.000 82.000 - 0.6 / 4: 82.000 83.000 84.000 85.000 86.000 - 0.8 / 5: 86.000 87.000 88.000 89.000 90.000 - 1 / 6: 90.000 91.000 92.000 93.000 94.000 - 1.2 / 7: 94.000 95.000 96.000 97.000 98.000 - 1.4 / 8: 98.000 99.000 100.000 101.000 102.000 - ---- N:2 F: 20 - 0 / 1: 50.000 51.000 52.000 53.000 54.000 - 0.2 / 2: 54.000 55.000 56.000 57.000 58.000 - 0.4 / 3: 58.000 59.000 60.000 61.000 62.000 - 0.6 / 4: 62.000 63.000 64.000 65.000 66.000 - 0.8 / 5: 66.000 67.000 68.000 69.000 70.000 - 1 / 6: 70.000 71.000 72.000 73.000 74.000 - 1.2 / 7: 74.000 75.000 76.000 77.000 78.000 - 1.4 / 8: 78.000 79.000 80.000 81.000 82.000 - ---- N:3 F: 40 - 0 / 1: 30.000 31.000 32.000 33.000 34.000 - 0.2 / 2: 34.000 35.000 36.000 37.000 38.000 - 0.4 / 3: 38.000 39.000 40.000 41.000 42.000 - 0.6 / 4: 42.000 43.000 44.000 45.000 46.000 - 0.8 / 5: 46.000 47.000 48.000 49.000 50.000 - 1 / 6: 50.000 51.000 52.000 53.000 54.000 - 1.2 / 7: 54.000 55.000 56.000 57.000 58.000 - 1.4 / 8: 58.000 59.000 60.000 61.000 62.000 - ---- N:4 F: 60 - 0 / 1: 10.000 11.000 12.000 13.000 14.000 - 0.2 / 2: 14.000 15.000 16.000 17.000 18.000 - 0.4 / 3: 18.000 19.000 20.000 21.000 22.000 - 0.6 / 4: 22.000 23.000 24.000 25.000 26.000 - 0.8 / 5: 26.000 27.000 28.000 29.000 30.000 - 1 / 6: 30.000 31.000 32.000 33.000 34.000 - 1.2 / 7: 34.000 35.000 36.000 37.000 38.000 - 1.4 / 8: 38.000 39.000 40.000 41.000 42.000 - ---- N:5 F: 80 - 0 / 1: -10.000 -9.000 -8.000 -7.000 -6.000 - 0.2 / 2: -6.000 -5.000 -4.000 -3.000 -2.000 - 0.4 / 3: -2.000 -1.000 0.000 1.000 2.000 - 0.6 / 4: 2.000 3.000 4.000 5.000 6.000 - 0.8 / 5: 6.000 7.000 8.000 9.000 10.000 - 1 / 6: 10.000 11.000 12.000 13.000 14.000 - 1.2 / 7: 14.000 15.000 16.000 17.000 18.000 - 1.4 / 8: 18.000 19.000 20.000 21.000 22.000 - ---- N:6 F: 100 - 0 / 1: -30.000 -29.000 -28.000 -27.000 -26.000 - 0.2 / 2: -26.000 -25.000 -24.000 -23.000 -22.000 - 0.4 / 3: -22.000 -21.000 -20.000 -19.000 -18.000 - 0.6 / 4: -18.000 -17.000 -16.000 -15.000 -14.000 - 0.8 / 5: -14.000 -13.000 -12.000 -11.000 -10.000 - 1 / 6: -10.000 -9.000 -8.000 -7.000 -6.000 - 1.2 / 7: -6.000 -5.000 -4.000 -3.000 -2.000 - 1.4 / 8: -2.000 -1.000 0.000 1.000 2.000 -list/e=5/y=1/t=1 transpose_zf(myvar) - VARIABLE : TRANSPOSE_ZF(MYVAR) - SUBSET : 5 by 6 by 8 points (LONGITUDE-Z-F) - LATITUDE : 1N - TIME : 02-JAN-2001 00:00 - E : 5 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- N:1 F: 1 - 1 / 1: 70.000 71.000 72.000 73.000 74.000 - 2 / 2: 50.000 51.000 52.000 53.000 54.000 - 3 / 3: 30.000 31.000 32.000 33.000 34.000 - 4 / 4: 10.000 11.000 12.000 13.000 14.000 - 5 / 5: -10.000 -9.000 -8.000 -7.000 -6.000 - 6 / 6: -30.000 -29.000 -28.000 -27.000 -26.000 - ---- N:2 F: 2 - 1 / 1: 74.000 75.000 76.000 77.000 78.000 - 2 / 2: 54.000 55.000 56.000 57.000 58.000 - 3 / 3: 34.000 35.000 36.000 37.000 38.000 - 4 / 4: 14.000 15.000 16.000 17.000 18.000 - 5 / 5: -6.000 -5.000 -4.000 -3.000 -2.000 - 6 / 6: -26.000 -25.000 -24.000 -23.000 -22.000 - ---- N:3 F: 3 - 1 / 1: 78.000 79.000 80.000 81.000 82.000 - 2 / 2: 58.000 59.000 60.000 61.000 62.000 - 3 / 3: 38.000 39.000 40.000 41.000 42.000 - 4 / 4: 18.000 19.000 20.000 21.000 22.000 - 5 / 5: -2.000 -1.000 0.000 1.000 2.000 - 6 / 6: -22.000 -21.000 -20.000 -19.000 -18.000 - ---- N:4 F: 4 - 1 / 1: 82.000 83.000 84.000 85.000 86.000 - 2 / 2: 62.000 63.000 64.000 65.000 66.000 - 3 / 3: 42.000 43.000 44.000 45.000 46.000 - 4 / 4: 22.000 23.000 24.000 25.000 26.000 - 5 / 5: 2.000 3.000 4.000 5.000 6.000 - 6 / 6: -18.000 -17.000 -16.000 -15.000 -14.000 - ---- N:5 F: 5 - 1 / 1: 86.000 87.000 88.000 89.000 90.000 - 2 / 2: 66.000 67.000 68.000 69.000 70.000 - 3 / 3: 46.000 47.000 48.000 49.000 50.000 - 4 / 4: 26.000 27.000 28.000 29.000 30.000 - 5 / 5: 6.000 7.000 8.000 9.000 10.000 - 6 / 6: -14.000 -13.000 -12.000 -11.000 -10.000 - ---- N:6 F: 6 - 1 / 1: 90.000 91.000 92.000 93.000 94.000 - 2 / 2: 70.000 71.000 72.000 73.000 74.000 - 3 / 3: 50.000 51.000 52.000 53.000 54.000 - 4 / 4: 30.000 31.000 32.000 33.000 34.000 - 5 / 5: 10.000 11.000 12.000 13.000 14.000 - 6 / 6: -10.000 -9.000 -8.000 -7.000 -6.000 - ---- N:7 F: 7 - 1 / 1: 94.000 95.000 96.000 97.000 98.000 - 2 / 2: 74.000 75.000 76.000 77.000 78.000 - 3 / 3: 54.000 55.000 56.000 57.000 58.000 - 4 / 4: 34.000 35.000 36.000 37.000 38.000 - 5 / 5: 14.000 15.000 16.000 17.000 18.000 - 6 / 6: -6.000 -5.000 -4.000 -3.000 -2.000 - ---- N:8 F: 8 - 1 / 1: 98.000 99.000 100.000 101.000 102.000 - 2 / 2: 78.000 79.000 80.000 81.000 82.000 - 3 / 3: 58.000 59.000 60.000 61.000 62.000 - 4 / 4: 38.000 39.000 40.000 41.000 42.000 - 5 / 5: 18.000 19.000 20.000 21.000 22.000 - 6 / 6: -2.000 -1.000 0.000 1.000 2.000 -list/F=25/y=1/t=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 5 by 8 by 3 points (LONGITUDE-DEPTH (m)-E) - LATITUDE : 1N - TIME : 02-JAN-2001 00:00 - F : 20 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- M:1 E: 0 - 0 / 1: 45.0000 46.0000 47.0000 48.0000 49.0000 - 0.2 / 2: 49.0000 50.0000 51.0000 52.0000 53.0000 - 0.4 / 3: 53.0000 54.0000 55.0000 56.0000 57.0000 - 0.6 / 4: 57.0000 58.0000 59.0000 60.0000 61.0000 - 0.8 / 5: 61.0000 62.0000 63.0000 64.0000 65.0000 - 1 / 6: 65.0000 66.0000 67.0000 68.0000 69.0000 - 1.2 / 7: 69.0000 70.0000 71.0000 72.0000 73.0000 - 1.4 / 8: 73.0000 74.0000 75.0000 76.0000 77.0000 - ---- M:2 E: 5 - 0 / 1: 50.0000 51.0000 52.0000 53.0000 54.0000 - 0.2 / 2: 54.0000 55.0000 56.0000 57.0000 58.0000 - 0.4 / 3: 58.0000 59.0000 60.0000 61.0000 62.0000 - 0.6 / 4: 62.0000 63.0000 64.0000 65.0000 66.0000 - 0.8 / 5: 66.0000 67.0000 68.0000 69.0000 70.0000 - 1 / 6: 70.0000 71.0000 72.0000 73.0000 74.0000 - 1.2 / 7: 74.0000 75.0000 76.0000 77.0000 78.0000 - 1.4 / 8: 78.0000 79.0000 80.0000 81.0000 82.0000 - ---- M:3 E: 10 - 0 / 1: 55.0000 56.0000 57.0000 58.0000 59.0000 - 0.2 / 2: 59.0000 60.0000 61.0000 62.0000 63.0000 - 0.4 / 3: 63.0000 64.0000 65.0000 66.0000 67.0000 - 0.6 / 4: 67.0000 68.0000 69.0000 70.0000 71.0000 - 0.8 / 5: 71.0000 72.0000 73.0000 74.0000 75.0000 - 1 / 6: 75.0000 76.0000 77.0000 78.0000 79.0000 - 1.2 / 7: 79.0000 80.0000 81.0000 82.0000 83.0000 - 1.4 / 8: 83.0000 84.0000 85.0000 86.0000 87.0000 -list/F=25/y=1/t=1 transpose_ze(myvar) - VARIABLE : TRANSPOSE_ZE(MYVAR) - SUBSET : 5 by 3 by 8 points (LONGITUDE-Z-E) - LATITUDE : 1N - TIME : 02-JAN-2001 00:00 - F : 20 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- M:1 E: 1 - 1 / 1: 45.0000 46.0000 47.0000 48.0000 49.0000 - 2 / 2: 50.0000 51.0000 52.0000 53.0000 54.0000 - 3 / 3: 55.0000 56.0000 57.0000 58.0000 59.0000 - ---- M:2 E: 2 - 1 / 1: 49.0000 50.0000 51.0000 52.0000 53.0000 - 2 / 2: 54.0000 55.0000 56.0000 57.0000 58.0000 - 3 / 3: 59.0000 60.0000 61.0000 62.0000 63.0000 - ---- M:3 E: 3 - 1 / 1: 53.0000 54.0000 55.0000 56.0000 57.0000 - 2 / 2: 58.0000 59.0000 60.0000 61.0000 62.0000 - 3 / 3: 63.0000 64.0000 65.0000 66.0000 67.0000 - ---- M:4 E: 4 - 1 / 1: 57.0000 58.0000 59.0000 60.0000 61.0000 - 2 / 2: 62.0000 63.0000 64.0000 65.0000 66.0000 - 3 / 3: 67.0000 68.0000 69.0000 70.0000 71.0000 - ---- M:5 E: 5 - 1 / 1: 61.0000 62.0000 63.0000 64.0000 65.0000 - 2 / 2: 66.0000 67.0000 68.0000 69.0000 70.0000 - 3 / 3: 71.0000 72.0000 73.0000 74.0000 75.0000 - ---- M:6 E: 6 - 1 / 1: 65.0000 66.0000 67.0000 68.0000 69.0000 - 2 / 2: 70.0000 71.0000 72.0000 73.0000 74.0000 - 3 / 3: 75.0000 76.0000 77.0000 78.0000 79.0000 - ---- M:7 E: 7 - 1 / 1: 69.0000 70.0000 71.0000 72.0000 73.0000 - 2 / 2: 74.0000 75.0000 76.0000 77.0000 78.0000 - 3 / 3: 79.0000 80.0000 81.0000 82.0000 83.0000 - ---- M:8 E: 8 - 1 / 1: 73.0000 74.0000 75.0000 76.0000 77.0000 - 2 / 2: 78.0000 79.0000 80.0000 81.0000 82.0000 - 3 / 3: 83.0000 84.0000 85.0000 86.0000 87.0000 - -list/e=5/y=1/z=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 5 by 7 by 6 points (LONGITUDE-TIME-F) - LATITUDE : 1N - DEPTH (m): 1 - E : 5 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- N:1 F: 0 - 01-JAN-2001 00 / 1: 30.000 31.000 32.000 33.000 34.000 - 02-JAN-2001 00 / 2: 90.000 91.000 92.000 93.000 94.000 - 03-JAN-2001 00 / 3: 150.000 151.000 152.000 153.000 154.000 - 04-JAN-2001 00 / 4: 210.000 211.000 212.000 213.000 214.000 - 05-JAN-2001 00 / 5: 270.000 271.000 272.000 273.000 274.000 - 06-JAN-2001 00 / 6: 330.000 331.000 332.000 333.000 334.000 - 07-JAN-2001 00 / 7: 390.000 391.000 392.000 393.000 394.000 - ---- N:2 F: 20 - 01-JAN-2001 00 / 1: 10.000 11.000 12.000 13.000 14.000 - 02-JAN-2001 00 / 2: 70.000 71.000 72.000 73.000 74.000 - 03-JAN-2001 00 / 3: 130.000 131.000 132.000 133.000 134.000 - 04-JAN-2001 00 / 4: 190.000 191.000 192.000 193.000 194.000 - 05-JAN-2001 00 / 5: 250.000 251.000 252.000 253.000 254.000 - 06-JAN-2001 00 / 6: 310.000 311.000 312.000 313.000 314.000 - 07-JAN-2001 00 / 7: 370.000 371.000 372.000 373.000 374.000 - ---- N:3 F: 40 - 01-JAN-2001 00 / 1: -10.000 -9.000 -8.000 -7.000 -6.000 - 02-JAN-2001 00 / 2: 50.000 51.000 52.000 53.000 54.000 - 03-JAN-2001 00 / 3: 110.000 111.000 112.000 113.000 114.000 - 04-JAN-2001 00 / 4: 170.000 171.000 172.000 173.000 174.000 - 05-JAN-2001 00 / 5: 230.000 231.000 232.000 233.000 234.000 - 06-JAN-2001 00 / 6: 290.000 291.000 292.000 293.000 294.000 - 07-JAN-2001 00 / 7: 350.000 351.000 352.000 353.000 354.000 - ---- N:4 F: 60 - 01-JAN-2001 00 / 1: -30.000 -29.000 -28.000 -27.000 -26.000 - 02-JAN-2001 00 / 2: 30.000 31.000 32.000 33.000 34.000 - 03-JAN-2001 00 / 3: 90.000 91.000 92.000 93.000 94.000 - 04-JAN-2001 00 / 4: 150.000 151.000 152.000 153.000 154.000 - 05-JAN-2001 00 / 5: 210.000 211.000 212.000 213.000 214.000 - 06-JAN-2001 00 / 6: 270.000 271.000 272.000 273.000 274.000 - 07-JAN-2001 00 / 7: 330.000 331.000 332.000 333.000 334.000 - ---- N:5 F: 80 - 01-JAN-2001 00 / 1: -50.000 -49.000 -48.000 -47.000 -46.000 - 02-JAN-2001 00 / 2: 10.000 11.000 12.000 13.000 14.000 - 03-JAN-2001 00 / 3: 70.000 71.000 72.000 73.000 74.000 - 04-JAN-2001 00 / 4: 130.000 131.000 132.000 133.000 134.000 - 05-JAN-2001 00 / 5: 190.000 191.000 192.000 193.000 194.000 - 06-JAN-2001 00 / 6: 250.000 251.000 252.000 253.000 254.000 - 07-JAN-2001 00 / 7: 310.000 311.000 312.000 313.000 314.000 - ---- N:6 F: 100 - 01-JAN-2001 00 / 1: -70.000 -69.000 -68.000 -67.000 -66.000 - 02-JAN-2001 00 / 2: -10.000 -9.000 -8.000 -7.000 -6.000 - 03-JAN-2001 00 / 3: 50.000 51.000 52.000 53.000 54.000 - 04-JAN-2001 00 / 4: 110.000 111.000 112.000 113.000 114.000 - 05-JAN-2001 00 / 5: 170.000 171.000 172.000 173.000 174.000 - 06-JAN-2001 00 / 6: 230.000 231.000 232.000 233.000 234.000 - 07-JAN-2001 00 / 7: 290.000 291.000 292.000 293.000 294.000 -list/e=5/y=1/z=1 transpose_tf(myvar) - VARIABLE : TRANSPOSE_TF(MYVAR) - SUBSET : 5 by 6 by 7 points (LONGITUDE-T-F) - LATITUDE : 1N - DEPTH (m): 1 - E : 5 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- N:1 F: 1 - 1 / 1: 30.000 31.000 32.000 33.000 34.000 - 2 / 2: 10.000 11.000 12.000 13.000 14.000 - 3 / 3: -10.000 -9.000 -8.000 -7.000 -6.000 - 4 / 4: -30.000 -29.000 -28.000 -27.000 -26.000 - 5 / 5: -50.000 -49.000 -48.000 -47.000 -46.000 - 6 / 6: -70.000 -69.000 -68.000 -67.000 -66.000 - ---- N:2 F: 2 - 1 / 1: 90.000 91.000 92.000 93.000 94.000 - 2 / 2: 70.000 71.000 72.000 73.000 74.000 - 3 / 3: 50.000 51.000 52.000 53.000 54.000 - 4 / 4: 30.000 31.000 32.000 33.000 34.000 - 5 / 5: 10.000 11.000 12.000 13.000 14.000 - 6 / 6: -10.000 -9.000 -8.000 -7.000 -6.000 - ---- N:3 F: 3 - 1 / 1: 150.000 151.000 152.000 153.000 154.000 - 2 / 2: 130.000 131.000 132.000 133.000 134.000 - 3 / 3: 110.000 111.000 112.000 113.000 114.000 - 4 / 4: 90.000 91.000 92.000 93.000 94.000 - 5 / 5: 70.000 71.000 72.000 73.000 74.000 - 6 / 6: 50.000 51.000 52.000 53.000 54.000 - ---- N:4 F: 4 - 1 / 1: 210.000 211.000 212.000 213.000 214.000 - 2 / 2: 190.000 191.000 192.000 193.000 194.000 - 3 / 3: 170.000 171.000 172.000 173.000 174.000 - 4 / 4: 150.000 151.000 152.000 153.000 154.000 - 5 / 5: 130.000 131.000 132.000 133.000 134.000 - 6 / 6: 110.000 111.000 112.000 113.000 114.000 - ---- N:5 F: 5 - 1 / 1: 270.000 271.000 272.000 273.000 274.000 - 2 / 2: 250.000 251.000 252.000 253.000 254.000 - 3 / 3: 230.000 231.000 232.000 233.000 234.000 - 4 / 4: 210.000 211.000 212.000 213.000 214.000 - 5 / 5: 190.000 191.000 192.000 193.000 194.000 - 6 / 6: 170.000 171.000 172.000 173.000 174.000 - ---- N:6 F: 6 - 1 / 1: 330.000 331.000 332.000 333.000 334.000 - 2 / 2: 310.000 311.000 312.000 313.000 314.000 - 3 / 3: 290.000 291.000 292.000 293.000 294.000 - 4 / 4: 270.000 271.000 272.000 273.000 274.000 - 5 / 5: 250.000 251.000 252.000 253.000 254.000 - 6 / 6: 230.000 231.000 232.000 233.000 234.000 - ---- N:7 F: 7 - 1 / 1: 390.000 391.000 392.000 393.000 394.000 - 2 / 2: 370.000 371.000 372.000 373.000 374.000 - 3 / 3: 350.000 351.000 352.000 353.000 354.000 - 4 / 4: 330.000 331.000 332.000 333.000 334.000 - 5 / 5: 310.000 311.000 312.000 313.000 314.000 - 6 / 6: 290.000 291.000 292.000 293.000 294.000 -list/F=25/y=1/z=1 myvar - VARIABLE : X + 5.0 * (Y + 4.0 * (Z + 3.0 * T)) + _E - _F - SUBSET : 5 by 7 by 3 points (LONGITUDE-TIME-E) - LATITUDE : 1N - DEPTH (m): 1 - F : 20 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- M:1 E: 0 - 01-JAN-2001 00 / 1: 5.000 6.000 7.000 8.000 9.000 - 02-JAN-2001 00 / 2: 65.000 66.000 67.000 68.000 69.000 - 03-JAN-2001 00 / 3: 125.000 126.000 127.000 128.000 129.000 - 04-JAN-2001 00 / 4: 185.000 186.000 187.000 188.000 189.000 - 05-JAN-2001 00 / 5: 245.000 246.000 247.000 248.000 249.000 - 06-JAN-2001 00 / 6: 305.000 306.000 307.000 308.000 309.000 - 07-JAN-2001 00 / 7: 365.000 366.000 367.000 368.000 369.000 - ---- M:2 E: 5 - 01-JAN-2001 00 / 1: 10.000 11.000 12.000 13.000 14.000 - 02-JAN-2001 00 / 2: 70.000 71.000 72.000 73.000 74.000 - 03-JAN-2001 00 / 3: 130.000 131.000 132.000 133.000 134.000 - 04-JAN-2001 00 / 4: 190.000 191.000 192.000 193.000 194.000 - 05-JAN-2001 00 / 5: 250.000 251.000 252.000 253.000 254.000 - 06-JAN-2001 00 / 6: 310.000 311.000 312.000 313.000 314.000 - 07-JAN-2001 00 / 7: 370.000 371.000 372.000 373.000 374.000 - ---- M:3 E: 10 - 01-JAN-2001 00 / 1: 15.000 16.000 17.000 18.000 19.000 - 02-JAN-2001 00 / 2: 75.000 76.000 77.000 78.000 79.000 - 03-JAN-2001 00 / 3: 135.000 136.000 137.000 138.000 139.000 - 04-JAN-2001 00 / 4: 195.000 196.000 197.000 198.000 199.000 - 05-JAN-2001 00 / 5: 255.000 256.000 257.000 258.000 259.000 - 06-JAN-2001 00 / 6: 315.000 316.000 317.000 318.000 319.000 - 07-JAN-2001 00 / 7: 375.000 376.000 377.000 378.000 379.000 -list/F=25/y=1/z=1 transpose_te(myvar) - VARIABLE : TRANSPOSE_TE(MYVAR) - SUBSET : 5 by 3 by 7 points (LONGITUDE-T-E) - LATITUDE : 1N - DEPTH (m): 1 - F : 20 - 0E 1E 2E 3E 4E - 1 2 3 4 5 - ---- M:1 E: 1 - 1 / 1: 5.000 6.000 7.000 8.000 9.000 - 2 / 2: 10.000 11.000 12.000 13.000 14.000 - 3 / 3: 15.000 16.000 17.000 18.000 19.000 - ---- M:2 E: 2 - 1 / 1: 65.000 66.000 67.000 68.000 69.000 - 2 / 2: 70.000 71.000 72.000 73.000 74.000 - 3 / 3: 75.000 76.000 77.000 78.000 79.000 - ---- M:3 E: 3 - 1 / 1: 125.000 126.000 127.000 128.000 129.000 - 2 / 2: 130.000 131.000 132.000 133.000 134.000 - 3 / 3: 135.000 136.000 137.000 138.000 139.000 - ---- M:4 E: 4 - 1 / 1: 185.000 186.000 187.000 188.000 189.000 - 2 / 2: 190.000 191.000 192.000 193.000 194.000 - 3 / 3: 195.000 196.000 197.000 198.000 199.000 - ---- M:5 E: 5 - 1 / 1: 245.000 246.000 247.000 248.000 249.000 - 2 / 2: 250.000 251.000 252.000 253.000 254.000 - 3 / 3: 255.000 256.000 257.000 258.000 259.000 - ---- M:6 E: 6 - 1 / 1: 305.000 306.000 307.000 308.000 309.000 - 2 / 2: 310.000 311.000 312.000 313.000 314.000 - 3 / 3: 315.000 316.000 317.000 318.000 319.000 - ---- M:7 E: 7 - 1 / 1: 365.000 366.000 367.000 368.000 369.000 - 2 / 2: 370.000 371.000 372.000 373.000 374.000 - 3 / 3: 375.000 376.000 377.000 378.000 379.000 - -can var /all -set grid abstract -can grid mygrd -can axis taxs -can axis zaxs -can axis yaxs -can axis xaxs -can axis eaxs -can axis faxs - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bn_unique_str2int -! bn_unique_str2int.jnl - -SHOW FUNC/DETAIL unique_str2int -UNIQUE_STR2INT(A) - Returns an ID number for each unique string in the input array of strings (case sensitive) - Axes of result: - X: inherited from argument(s) - Y: inherited from argument(s) - Z: inherited from argument(s) - T: inherited from argument(s) - E: inherited from argument(s) - F: inherited from argument(s) - A: Array of Strings (STRING) - Influence on output axes: - X: passed to result grid - Y: passed to result grid - Z: passed to result grid - T: passed to result grid - E: passed to result grid - F: passed to result grid - -let alist = { \ - "a rat in the house will eat the zucchini", \ - "a rat in the house will eat the ice cream", \ - "ze rats in the house will eat the ice cream",\ - "A rat in the house will eat the ICE CREAM", \ - "", \ - "", \ - "A rat in the house will eat the ICE CREAM", \ - "A rat in the house will eat the ICE CREAM", \ - "ze rats in the house will eat the ice cream",\ - "ze rats in the house will eat the ice cream",\ - "" \ -} - -let blist = { \ - "ze rats in the house will eat the ice cream",\ - "", \ - "Something new has been added", \ - "A rat in the house will eat the ICE CREAM", \ - "A rat in the house will eat the ICE CREAM", \ - "" \ -} - -! check that it works when first called -list unique_str2int(alist), alist - X: 0.5 to 11.5 - Column 1: EX#1 is UNIQUE_STR2INT(ALIST) - Column 2: ALIST is { "a rat in the house will eat the zucchini", "a rat in the house will eat the ice cream", "ze rats in the house will eat the ice cream", "A rat in the house will eat th - EX#1 ALIST -1 / 1: 1.00000 "a rat in the house will eat the zucchini" -2 / 2: 2.00000 "a rat in the house will eat the ice cream" -3 / 3: 3.00000 "ze rats in the house will eat the ice cream" -4 / 4: 4.00000 "A rat in the house will eat the ICE CREAM" -5 / 5: 5.00000 "" -6 / 6: 5.00000 "" -7 / 7: 4.00000 "A rat in the house will eat the ICE CREAM" -8 / 8: 4.00000 "A rat in the house will eat the ICE CREAM" -9 / 9: 3.00000 "ze rats in the house will eat the ice cream" -10 / 10: 3.00000 "ze rats in the house will eat the ice cream" -11 / 11: 5.00000 "" - -! check if the same values are returned for a second call matching strings -list unique_str2int(blist), blist - X: 0.5 to 6.5 - Column 1: EX#1 is UNIQUE_STR2INT(BLIST) - Column 2: BLIST is { "ze rats in the house will eat the ice cream", "", "Something new has been added", "A rat in the house will eat the ICE CREAM", "A rat in the house will eat the ICE - EX#1 BLIST -1 / 1: 3.00000 "ze rats in the house will eat the ice cream" -2 / 2: 5.00000 "" -3 / 3: 6.00000 "Something new has been added" -4 / 4: 4.00000 "A rat in the house will eat the ICE CREAM" -5 / 5: 4.00000 "A rat in the house will eat the ICE CREAM" -6 / 6: 5.00000 "" - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bench_sort - - -! Benchmark for sort and sample external Functions -! ACM 5/99 -! ACM 8/99 sorti,sortj,sortl have "visual" versions - -sh func/ext sort* -SORTI(DAT) - Returns indices of data, sorted on the I axis in increasing order - DAT: variable to sort in I -SORTI_STR(STR) - Returns indices of string data, sorted on the I axis in increasing order, null strings at the end - STR: String variable to sort in I (STRING) -SORTJ(DAT) - Returns indices of data, sorted on the J axis in increasing order - DAT: variable to sort in J -SORTJ_STR(STR) - Returns indices of string data, sorted on the J axis in increasing order, null strings at the end - STR: String variable to sort in J (STRING) -SORTK(DAT) - Returns indices of data, sorted on the K axis in increasing order - DAT: variable to sort in K -SORTK_STR(STR) - Returns indices of string data, sorted on the K axis in increasing order, null strings at the end - STR: String variable to sort in K (STRING) -SORTL(DAT) - Returns indices of data, sorted on the L axis in increasing order - DAT: variable to sort in L -SORTL_STR(STR) - Returns indices of string data, sorted on the L axis in increasing order, null strings at the end - STR: String variable to sort in L (STRING) -SORTM(DAT) - Returns indices of data, sorted on the M axis in increasing order - DAT: variable to sort in M -SORTM_STR(STR) - Returns indices of string data, sorted on the M axis in increasing order, null strings at the end - STR: String variable to sort in L (STRING) -SORTN(DAT) - Returns indices of data, sorted on the N axis in increasing order - DAT: variable to sort in N -SORTN_STR(STR) - Returns indices of string data, sorted on the N axis in increasing order, null strings at the end - STR: String variable to sort in N (STRING) -sh func/ext sample* -SAMPLEI(TO_BE_SAMPLED,X_INDICES) - sample a field at a list of X indices - TO_BE_SAMPLED: data to sample at list of X indices supplied - X_INDICES: list of X indices at which to sample -SAMPLEJ(TO_BE_SAMPLED,Y_INDICES) - sample a field at a list of Y indices - TO_BE_SAMPLED: data to sample at list of Y indices supplied - Y_INDICES: list of Y indices at which to sample -SAMPLEK(TO_BE_SAMPLED,Z_INDICES) - sample a field at a list of Z indices - TO_BE_SAMPLED: data to sample at list of Z indices supplied - Z_INDICES: list of Z indices at which to sample -SAMPLEL(TO_BE_SAMPLED,T_INDICES) - sample a field at a list of T indices - TO_BE_SAMPLED: data to sample at list of T indices supplied - T_INDICES: list of T indices at which to sample -SAMPLEM(TO_BE_SAMPLED,E_INDICES) - sample a field at a list of E indices - TO_BE_SAMPLED: data to sample at list of E indices supplied - E_INDICES: list of E indices at which to sample -SAMPLEN(TO_BE_SAMPLED,F_INDICES) - sample a field at a list of F indices - TO_BE_SAMPLED: data to sample at list of F indices supplied - F_INDICES: list of F indices at which to sample -SAMPLE_FAST_I(V,Indices) - Fast 1D sample variable using set of indices - V: 1-D variable in X direction - Indices: List of indices at which to sample -SAMPLE_FAST_I_STR(S,Indices) - Fast 1D sample string variable using set of indices - S: 1-D string variable in X direction (STRING) - Indices: List of indices at which to sample -SAMPLEF_DATE(DAT_TO_SAMPLE,YR,MO,DAY,HR,MIN,SEC) - Returns data sampled by interpolating to a set of times in F direction - DAT_TO_SAMPLE: data to sample at set of times in F - YR: Year(s) yyyy - MO: Month(s), integer mm - DAY: Day(s) of month dd - HR: Hour(s) hh - MIN: Minute(s) mm - SEC: Second(s) ss -SAMPLEIJ(DAT_TO_SAMPLE,XPTS,YPTS) - Returns data sampled by matching coordinates at a subset of grid points, defined by (XPTS, YPTS) - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X coordinates of grid points - YPTS: Y coordinates of grid points -SAMPLEI_MULTI(DAT_TO_SAMPLE,I_INDICES) - Returns data sampled according to I indices which may vary in JKLMN - DAT_TO_SAMPLE: data to sample using I indices - I_INDICES: ordered indices -SAMPLEJ_MULTI(DAT_TO_SAMPLE,J_INDICES) - Returns data sampled according to J indices which may vary in IKLMN - DAT_TO_SAMPLE: data to sample using J indices - J_INDICES: ordered indices -SAMPLEK_MULTI(DAT_TO_SAMPLE,K_INDICES) - Returns data sampled according to K indices which may vary in IJLMN - DAT_TO_SAMPLE: data to sample using K indices - K_INDICES: ordered indices -SAMPLEL_MULTI(DAT_TO_SAMPLE,L_INDICES) - Returns data sampled according to L indices which may vary in IJKMN - DAT_TO_SAMPLE: data to sample using L indices - L_INDICES: ordered indices -SAMPLEM_MULTI(DAT_TO_SAMPLE,M_INDICES) - Returns data sampled according to M indices which may vary in IJKLN - DAT_TO_SAMPLE: data to sample using M indices - M_INDICES: ordered indices -SAMPLEN_MULTI(DAT_TO_SAMPLE,N_INDICES) - Returns data sampled according to N indices which may vary in IJKLM - DAT_TO_SAMPLE: data to sample using N indices - N_INDICES: ordered indices -SAMPLET_DATE(DAT_TO_SAMPLE,YR,MO,DAY,HR,MIN,SEC) - Returns data sampled by interpolating to a set of times in T direction - DAT_TO_SAMPLE: data to sample at set of times - YR: Year(s) yyyy - MO: Month(s), integer mm - DAY: Day(s) of month dd - HR: Hour(s) hh - MIN: Minute(s) mm - SEC: Second(s) ss -SAMPLEXY(DAT_TO_SAMPLE,XPTS,YPTS) - Returns data sampled at a set of (X,Y) points, using linear interpolation - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X values of sample points - YPTS: Y values of sample points -SAMPLEXY_CLOSEST(DAT_TO_SAMPLE,XPTS,YPTS) - This function is deprecated. It is renamed to SAMPLEXY_NRST - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X values of sample points - YPTS: Y values of sample points -SAMPLEXY_CURV(DAT_TO_SAMPLE,DAT_LON,DAT_LAT,XPTS,YPTS) - Returns data sampled at a set of (X,Y) points, using linear interpolation - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - DAT_LON: longitudes of input variable - DAT_LAT: latitudes of input variable - XPTS: X values of sample points - YPTS: Y values of sample points -SAMPLEXY_CURV_AVG(DAT_TO_SAMPLE,DAT_LON,DAT_LAT,XPTS,YPTS) - Returns data sampled at a set of (X,Y) points, using unweighted averaging - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - DAT_LON: longitudes of input variable - DAT_LAT: latitudes of input variable - XPTS: X values of sample points - YPTS: Y values of sample points -SAMPLEXY_CURV_NRST(DAT_TO_SAMPLE,DAT_LON,DAT_LAT,XPTS,YPTS) - Returns data at a set of (X,Y) points, from nearest loc on XY curvilinear grid - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - DAT_LON: longitudes of input variable - DAT_LAT: latitudes of input variable - XPTS: X values of sample points - YPTS: Y values of sample points -SAMPLEXY_NRST(DAT_TO_SAMPLE,XPTS,YPTS) - Returns data sampled at a set of (X,Y) points, using nearest grid intersection - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X values of sample points - YPTS: Y values of sample points -SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS) - Returns data sampled at a set of (X,Y,T) points, using nearest grid intersection - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X values of sample points - YPTS: Y values of sample points - TPTS: T values of sample points -SAMPLEXYT(DAT_TO_SAMPLE,XPTS,YPTS,TPTS) - Returns data sampled at a set of (X,Y,T) points, using linear interpolation - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X values of sample points - YPTS: Y values of sample points - TPTS: T values of sample points -SAMPLEXYZ(DAT_TO_SAMPLE,XPTS,YPTS,ZPTS) - Returns data sampled at a set of (X,Y,Z) points, using linear interpolation - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X values of sample points - YPTS: Y values of sample points - ZPTS: Z values of sample points -SAMPLEXYZT(DAT_TO_SAMPLE,XPTS,YPTS,ZPTS,TPTS) - Returns data sampled at a set of points in X,Y,Z,T, using linear interpolation - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X values of sample points - YPTS: Y values of sample points - ZPTS: Z values of sample points - TPTS: T values of sample points -SAMPLEXZ(DAT_TO_SAMPLE,XPTS,ZPTS) - Returns data sampled at a set of (X,Z) points, using linear interpolation - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X values of sample points - ZPTS: Z values of sample points -SAMPLEYZ(DAT_TO_SAMPLE,YPTS,ZPTS) - Returns data sampled at a set of (Y,Z) points, using linear interpolation - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - YPTS: Y values of sample points - ZPTS: Z values of sample points -SAMPLE_FAST_I(V,Indices) - Fast 1D sample variable using set of indices - V: Variable to sample - Indices: List of indices at which to sample - -go bench_sorti.jnl - - -! Benchmark for sort and sample external Functions -! ACM 5/99 - -! V550 *sh* 11/02 - documentation change only, reflecting subspan modulo -! The use of L=5 on a 3 point time axis triggers a valid subspan modulo calculation -! V581 *ACM 3/05 Changes in specifying context for arg 2 of SAMPLEI -! see notes in Bugzilla under bug 1187. - -can region -use coads_climatology -set region/x=141:151/y=39/z=0/l=2 - -list sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 6 points (LONGITUDE) - LATITUDE : 39N - TIME : 15-FEB 16:29 - 39N - 65 - 141E / 61: 8.8575 - 143E / 62: 8.5178 - 145E / 63: 9.2910 - 147E / 64: 10.2489 - 149E / 65: 10.9823 - 151E / 66: 10.8754 - -let tsorted_indices = sorti( sst[i=61:66,y=39,z=0,l=2]) -let tsorted_sst = samplei(sst, tsorted_indices) - -list tsorted_indices, tsorted_sst - DATA SET: ./data/coads_climatology.cdf - X: 0.5 to 6.5 - TIME: 15-FEB 16:29 - Column 1: TSORTED_INDICES[Y=39N] is SORTI( SST[I=61:66,Y=39,Z=0,L=2]) - Column 2: TSORTED_SST[Y=39N] is SAMPLEI(SST, TSORTED_INDICES) - TSORTED_ TSORTED_SST -1 / 1: 62.0000 8.5178 -2 / 2: 61.0000 8.8575 -3 / 3: 63.0000 9.2910 -4 / 4: 64.0000 10.2489 -5 / 5: 66.0000 10.8754 -6 / 6: 65.0000 10.9823 - - -! test on 2-d data - -can region -!set data coads_climatology -set region/l=5 - -let xsorted_indices = sorti(sst) -let xsorted_sst = samplei(sst, xsorted_indices[y=0,l=5]) -! shade xsorted_sst -list/y=0/i=1:15 xsorted_sst - VARIABLE : SAMPLEI(SST, XSORTED_INDICES[Y=0,L=5]) - FILENAME : coads_climatology.cdf - SUBSET : 15 points (X) - LATITUDE : 1S - TIME : 15-JAN 11:49 - 1S - 45 - 1 / 1: 23.7595 - 2 / 2: 23.8632 - 3 / 3: 23.8882 - 4 / 4: 23.9519 - 5 / 5: 23.9616 - 6 / 6: 24.0241 - 7 / 7: 24.0481 - 8 / 8: 24.0854 - 9 / 9: 24.2126 - 10 / 10: 24.2807 - 11 / 11: 24.3114 - 12 / 12: 24.3562 - 13 / 13: 24.3861 - 14 / 14: 24.4567 - 15 / 15: 24.4717 - -set region/l=5/y=1 -let len = xsorted_sst[i=@ngd] -list len - VARIABLE : XSORTED_SST[I=@NGD] - FILENAME : coads_climatology.cdf - X : 0.5 to 180.5 - LATITUDE : 1N - TIME : 15-JAN 11:49 - 147.000 - -go bench_sortj.jnl - - - -! Benchmark for sort and sample external Functions -! ACM 5/99 - -! V550 *sh* 11/02 - documentation change only, reflecting subspan modulo -! The use of L=5 on a 3 point time axis triggers a valid subspan modulo calculation -! V581 *ACM 3/05 Changes in specifying context for arg 2 of SAMPLEJ -! see notes in Bugzilla under bug 1187. - -can region -use coads_climatology -set region/x=141/y=39:49/z=0/l=2 - -list sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 6 points (LATITUDE) - LONGITUDE: 141E - TIME : 15-FEB 16:29 - 141E - 61 - 49N / 70: 1.88296 - 47N / 69: 2.01405 - 45N / 68: 3.44455 - 43N / 67: 4.55859 - 41N / 66: 6.47285 - 39N / 65: 8.85749 - -let tsorted_indices = sortj( sst[j=65:70,x=141,z=0,l=2]) -let tsorted_sst = samplej(sst, tsorted_indices) - -list tsorted_indices, tsorted_sst - DATA SET: ./data/coads_climatology.cdf - Y: 0.5 to 6.5 - TIME: 15-FEB 16:29 - Column 1: TSORTED_INDICES[X=141E] is SORTJ( SST[J=65:70,X=141,Z=0,L=2]) - Column 2: TSORTED_SST[X=141E] is SAMPLEJ(SST, TSORTED_INDICES) - TSORTED_ TSORTED_SST -1 / 1: 70.0000 1.88296 -2 / 2: 69.0000 2.01405 -3 / 3: 68.0000 3.44455 -4 / 4: 67.0000 4.55859 -5 / 5: 66.0000 6.47285 -6 / 6: 65.0000 8.85749 - -! test on 2-D data. - -can region -!set data coads_climatology -set region/l=5 - -let ysorted_indices = sortj(sst) -let ysorted_sst = samplej(sst, ysorted_indices[i=0,l=5]) -!shade ysorted_sst -list/i=0/j=1:15 ysorted_sst - VARIABLE : SAMPLEJ(SST, YSORTED_INDICES[I=0,L=5]) - FILENAME : coads_climatology.cdf - SUBSET : 15 points (Y) - LONGITUDE: 19E - TIME : 15-JAN 11:49 - 19E - 0 - 1 / 1: -0.12500 - 2 / 2: 0.05400 - 3 / 3: 0.18556 - 4 / 4: 0.30000 - 5 / 5: 0.43875 - 6 / 6: 0.62500 - 7 / 7: 0.66000 - 8 / 8: 0.72750 - 9 / 9: 0.79955 - 10 / 10: 1.29667 - 11 / 11: 1.58765 - 12 / 12: 1.60684 - 13 / 13: 1.91667 - 14 / 14: 2.05857 - 15 / 15: 2.69400 - -set region/l=5/x=181 -let len = ysorted_sst[j=@ngd] -list len - VARIABLE : YSORTED_SST[J=@NGD] - FILENAME : coads_climatology.cdf - LONGITUDE: 179W - Y : 0.5 to 90.5 - TIME : 15-JAN 11:49 - 32.0000 - - -go bench_sortk.jnl -! Benchmark for sort and sample external Functions -! ACM 7/99 -! Changes with v5.81 and after, specifying context for arg 2 of SAMPLEK -! see notes in Bugzilla under bug 1187. - -! test sortk, samplek - -can region -use gt4d011 -set region/i=99/j=40/l=1 - -let zsorted_indices = sortk(temp) -let zsorted_temp = samplek(temp, zsorted_indices[i=99,j=40,l=1]) -list zsorted_temp - VARIABLE : SAMPLEK(TEMP, ZSORTED_INDICES[I=99,J=40,L=1]) - FILENAME : gt4d011.cdf - SUBSET : 10 points (Z) - LONGITUDE: 131.5W - LATITUDE : 1.833S - TIME : 17-AUG-1982 12:00 - 131.5W - 99 - 1 / 1: 24.6576 - 2 / 2: 25.2599 - 3 / 3: 25.7023 - 4 / 4: 26.0588 - 5 / 5: 26.1281 - 6 / 6: 26.1309 - 7 / 7: 26.1387 - 8 / 8: 26.1637 - 9 / 9: 26.2191 - 10 / 10: 26.3090 - - -can region -use ocean_atlas_temp - -set region/i=70/j=90/l=1 -list temp - VARIABLE : Temperature (Deg C) - FILENAME : ocean_atlas_temp.cdf - LONGITUDE: 89.5E - LATITUDE : 0.5S - DEPTH (m): 0 - TIME : 16-JAN 06:00 - 28.8626 - -let zsorted_indices = sortk(temp) -let zsorted_temp = samplek(temp, zsorted_indices[i=70,j=90,l=1]) -list zsorted_temp - VARIABLE : SAMPLEK(TEMP, ZSORTED_INDICES[I=70,J=90,L=1]) - FILENAME : ocean_atlas_temp.cdf - LONGITUDE: 89.5E - LATITUDE : 0.5S - Z : 1 - TIME : 16-JAN 06:00 - 28.8626 - -! this should bail out with indices out of range: - -let zsorted_indices = sortk(temp[i=70,j=90,l=1]) - 100 -let zsorted_temp = samplek(temp, zsorted_indices) -list zsorted_temp - VARIABLE : SAMPLEK(TEMP, ZSORTED_INDICES) - FILENAME : ocean_atlas_temp.cdf - LONGITUDE: 89.5E - LATITUDE : 0.5S - Z : 1 - TIME : 16-JAN 06:00 - .... - - -go bench_sortl.jnl - - -! Benchmark for sort and sample external Functions -! ACM 5/99 -! *sh* 3/00 - indicate that test of illegal indices should produce an error - -! V550 *sh* 11/02 - documentation change only, reflecting subspan modulo -! The use of L=5 on a 3 point time axis triggers a valid subspan modulo calculation -! V581 *ACM 3/05 Changes in specifying context for arg 2 of SAMPLEL -! see notes in Bugzilla under bug 1187. - -use coads_climatology -set region/x=141/y=39/z=0/l=1:6 - -list sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 6 points (TIME) - LONGITUDE: 141E - LATITUDE : 39N - 141E - 61 - 16-JAN / 1: 11.0274 - 15-FEB / 2: 8.8575 - 17-MAR / 3: 8.3911 - 16-AUG / 4: .... - 15-JAN / 5: 11.0274 - 14-FEB / 6: 8.8575 -list samplel(sst, {1,3,5}) - VARIABLE : SAMPLEL(SST, {1,3,5}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (T) - LONGITUDE: 141E - LATITUDE : 39N - 141E - 61 - 1 / 1: 11.0274 - 2 / 2: 8.3911 - 3 / 3: 11.0274 - -let tsorted_indices = sortl(sst) -let tsorted_sst = samplel(sst, tsorted_indices[x=141,y=39,z=0]) - -list tsorted_indices, tsorted_sst - DATA SET: ./data/coads_climatology.cdf - T: 0.5 to 3.5 - LONGITUDE: 141E - LATITUDE: 39N - Column 1: TSORTED_INDICES is SORTL(SST) - Column 2: TSORTED_SST is SAMPLEL(SST, TSORTED_INDICES[X=141,Y=39,Z=0]) - TSORTED_ TSORTED_SST -1 / 1: 3.00000 8.3911 -2 / 2: 2.00000 8.8575 -3 / 3: 1.00000 11.0274 - -! test sortt with data containing bad/missing data. - -can region - -use coads_vwnd.cdf -set region/i=90/j=65 -list vwnd - VARIABLE : MERIDIONAL WIND (M/S) - FILENAME : coads_vwnd.cdf - SUBSET : 60 points (TIME) - LONGITUDE: 161W - LATITUDE : 39N - 161W - 90 - 16-JAN-1946 12 / 1: .... - 15-FEB-1946 00 / 2: .... - 16-MAR-1946 12 / 3: .... - 16-APR-1946 00 / 4: .... - 16-MAY-1946 12 / 5: .... - 16-JUN-1946 00 / 6: .... - 16-JUL-1946 12 / 7: .... - 16-AUG-1946 12 / 8: .... - 16-SEP-1946 00 / 9: .... - 16-OCT-1946 12 / 10: .... - 16-NOV-1946 00 / 11: .... - 16-DEC-1946 12 / 12: 12.3500 - 16-JAN-1947 12 / 13: .... - 15-FEB-1947 00 / 14: .... - 16-MAR-1947 12 / 15: .... - 16-APR-1947 00 / 16: 0.0000 - 16-MAY-1947 12 / 17: .... - 16-JUN-1947 00 / 18: .... - 16-JUL-1947 12 / 19: .... - 16-AUG-1947 12 / 20: .... - 16-SEP-1947 00 / 21: 6.6000 - 16-OCT-1947 12 / 22: .... - 16-NOV-1947 00 / 23: .... - 16-DEC-1947 12 / 24: .... - 16-JAN-1948 12 / 25: 4.5000 - 15-FEB-1948 12 / 26: .... - 16-MAR-1948 12 / 27: .... - 16-APR-1948 00 / 28: .... - 16-MAY-1948 12 / 29: .... - 16-JUN-1948 00 / 30: 4.7000 - 16-JUL-1948 12 / 31: .... - 16-AUG-1948 12 / 32: .... - 16-SEP-1948 00 / 33: -5.8000 - 16-OCT-1948 12 / 34: 0.4500 - 16-NOV-1948 00 / 35: .... - 16-DEC-1948 12 / 36: .... - 16-JAN-1949 12 / 37: 4.2300 - 15-FEB-1949 00 / 38: -1.0800 - 16-MAR-1949 12 / 39: 2.0700 - 16-APR-1949 00 / 40: 0.8300 - 16-MAY-1949 12 / 41: 0.0000 - 16-JUN-1949 00 / 42: 5.3700 - 16-JUL-1949 12 / 43: -1.3000 - 16-AUG-1949 12 / 44: 1.3800 - 16-SEP-1949 00 / 45: 5.9200 - 16-OCT-1949 12 / 46: 0.7100 - 16-NOV-1949 00 / 47: -0.9400 - 16-DEC-1949 12 / 48: -0.5200 - 16-JAN-1950 12 / 49: 1.5800 - 15-FEB-1950 00 / 50: 4.9300 - 16-MAR-1950 12 / 51: 3.5100 - 16-APR-1950 00 / 52: 4.5400 - 16-MAY-1950 12 / 53: 1.6000 - 16-JUN-1950 00 / 54: 1.3300 - 16-JUL-1950 12 / 55: 0.9000 - 16-AUG-1950 12 / 56: -0.4500 - 16-SEP-1950 00 / 57: 3.5700 - 16-OCT-1950 12 / 58: -8.7500 - 16-NOV-1950 00 / 59: -5.2400 - 16-DEC-1950 12 / 60: -6.4700 - -let tsorted_indices = sortl(vwnd) -let tsorted_wnd = samplel(vwnd, tsorted_indices[i=90,j=65]) -list tsorted_indices, tsorted_wnd - DATA SET: ./data/coads_vwnd.cdf - T: 0.5 to 60.5 - LONGITUDE: 161W - LATITUDE: 39N - Column 1: TSORTED_INDICES is SORTL(VWND) - Column 2: TSORTED_WND is SAMPLEL(VWND, TSORTED_INDICES[I=90,J=65]) - TSORTED_IN TSORTED_WND -1 / 1: 58.0000 -8.7500 -2 / 2: 60.0000 -6.4700 -3 / 3: 33.0000 -5.8000 -4 / 4: 59.0000 -5.2400 -5 / 5: 43.0000 -1.3000 -6 / 6: 38.0000 -1.0800 -7 / 7: 47.0000 -0.9400 -8 / 8: 48.0000 -0.5200 -9 / 9: 56.0000 -0.4500 -10 / 10: 41.0000 0.0000 -11 / 11: 16.0000 0.0000 -12 / 12: 34.0000 0.4500 -13 / 13: 46.0000 0.7100 -14 / 14: 40.0000 0.8300 -15 / 15: 55.0000 0.9000 -16 / 16: 54.0000 1.3300 -17 / 17: 44.0000 1.3800 -18 / 18: 49.0000 1.5800 -19 / 19: 53.0000 1.6000 -20 / 20: 39.0000 2.0700 -21 / 21: 51.0000 3.5100 -22 / 22: 57.0000 3.5700 -23 / 23: 37.0000 4.2300 -24 / 24: 25.0000 4.5000 -25 / 25: 52.0000 4.5400 -26 / 26: 30.0000 4.7000 -27 / 27: 50.0000 4.9300 -28 / 28: 42.0000 5.3700 -29 / 29: 45.0000 5.9200 -30 / 30: 21.0000 6.6000 -31 / 31: 12.0000 12.3500 -32 / 32: .... .... -33 / 33: .... .... -34 / 34: .... .... -35 / 35: .... .... -36 / 36: .... .... -37 / 37: .... .... -38 / 38: .... .... -39 / 39: .... .... -40 / 40: .... .... -41 / 41: .... .... -42 / 42: .... .... -43 / 43: .... .... -44 / 44: .... .... -45 / 45: .... .... -46 / 46: .... .... -47 / 47: .... .... -48 / 48: .... .... -49 / 49: .... .... -50 / 50: .... .... -51 / 51: .... .... -52 / 52: .... .... -53 / 53: .... .... -54 / 54: .... .... -55 / 55: .... .... -56 / 56: .... .... -57 / 57: .... .... -58 / 58: .... .... -59 / 59: .... .... -60 / 60: .... .... - -let len = tsorted_wnd[l=@ngd] -list len - VARIABLE : TSORTED_WND[L=@NGD] - FILENAME : coads_vwnd.cdf - LONGITUDE: 161W - LATITUDE : 39N - T : 0.5 to 60.5 - 31.0000 - -! deliberately sample at invalid points -! Note: in MOST circumstances this would simply result in a result of -! missing values, however, the underlying data set has an "enhanced heading" -! so that these indices appear to be valid -SET MODE ignore_error -let tsorted_indices = sortl(vwnd) + 90 -let tsorted_wnd = samplel(vwnd, tsorted_indices[i=90,j=65]) -list tsorted_indices, tsorted_wnd -SET MODE/LAST ignore_error - -! deliberately sample at invalid points that are outside of the axis range -let tsorted_indices = sortl(vwnd) + 999 -let tsorted_wnd = samplel(vwnd, tsorted_indices[i=90,j=65]) -stat tsorted_wnd - - SAMPLEL(VWND, TSORTED_INDICES[I=90,J=65]) - LONGITUDE: 161W - LATITUDE: 39N - Z: N/A - T: 0.5 to 60.5 - E: N/A - F: N/A - DATA SET: ./data/coads_vwnd.cdf - - Total # of data points: 60 (1*1*1*60*1*1) - # flagged as bad data: 60 - - -go bench_samplexy.jnl - ! NOAA/PMEL TMAP - ! Program FERRET (debug) - ! Version 5.00 - 04/12/99 - ! 13-Apr-99 14:36 - -use coads_climatology - -let asst = samplexy(sst, {171,173,305}, {-1,1,13}) -list asst - VARIABLE : SAMPLEXY(SST, {171,173,305}, {-1,1,13}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 3 points (X-TIME) - 1 2 3 - 1 2 3 - 16-JAN / 1: 29.0045 27.8955 26.7131 - 15-FEB / 2: 28.5508 28.2499 26.3700 - 17-MAR / 3: 28.8764 28.4775 26.3180 - -let asst = samplexy(sst, {171,172,305}, {-1,1,13}) -list asst - VARIABLE : SAMPLEXY(SST, {171,172,305}, {-1,1,13}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 3 points (X-TIME) - 1 2 3 - 1 2 3 - 16-JAN / 1: 29.0045 28.2696 26.7131 - 15-FEB / 2: 28.5508 28.4857 26.3700 - 17-MAR / 3: 28.8764 28.6147 26.3180 - -go bench_samplet_date.jnl -! -! Data coads_vwnd in ~kobrien/FERRET/benc -! -use coads_vwnd -set region/x=161w/y=39n - -let my_vwnd = samplet_date(vwnd,1950,2,0,0,0,0) -list my_vwnd - VARIABLE : SAMPLET_DATE(VWND,1950,2,0,0,0,0) - FILENAME : coads_vwnd.cdf - LONGITUDE: 161W - LATITUDE : 39N - T : 1 - 3.22661 - - -let my_vwnd = samplet_date(vwnd,{1950,1950},{5,8},{16,15},{12,12},{0,0},{0,0}) -list my_vwnd - VARIABLE : SAMPLET_DATE(VWND,{1950,1950},{5,8},{16,15},{12,12},{0,0},{0,0}) - FILENAME : coads_vwnd.cdf - SUBSET : 2 points (T) - LONGITUDE: 161W - LATITUDE : 39N - 161W - 90 - 1 / 1: 1.60000 - 2 / 2: -0.40645 - - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bench_eof -! Benchmark for EOF functions -! Statically linked as of ferret V5.34 -! Ansley Manke 8/2/2001 - -! In version 6.8 (double precision), the old eof functions are not available -! Run the script calling eofsvd functions and exit, leaving old eof function calls. - -! Test the bail-out from eof_space, eof_stat, eof_tfunc -set mode ignore - -USE coads_climatology -LET eofxyfcn = eof_space(sst[X=27w:23w,Y=1S:3N], 1.) -list/l=1:2 eofxyfcn - -LET eofstat = eof_stat(sst[X=27w:23w,Y=1S:3N], 1.) -list/i=1:3/j=1:3 eofstat - -LET eoftime = eof_tfunc(SST[X=27W:23W,Y=1S:3N], 1.) -list/i=1:2 eoftime - -set mode/last ignore - -! Test functions eofsvd* - -USE coads_climatology -LET eofxyfcn = eofsvd_space(sst[X=27w:23w,Y=1S:3N]) -list/l=1:2 eofxyfcn - VARIABLE : EOFSVD_SPACE(SST[X=27W:23W,Y=1S:3N]) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 3 by 2 points (LONGITUDE-LATITUDE-T) - 27W 25W 23W - 157 158 159 - ---- L:1 T: 1 - 3N / 47: -0.175348 -0.178392 -0.309239 - 1N / 46: -0.308620 -0.280936 -0.291017 - 1S / 45: -0.271470 -0.497559 -0.595639 - ---- L:2 T: 2 - 3N / 47: -0.052492 -0.002775 -0.124133 - 1N / 46: 0.064590 0.057180 -0.069549 - 1S / 45: 0.121296 0.039745 -0.034207 - -LET eofstat = eofsvd_stat(sst[X=27w:23w,Y=1S:3N]) -list/i=1:3/j=1:3 eofstat - VARIABLE : EOFSVD_STAT(SST[X=27W:23W,Y=1S:3N]) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 3 points (X-Y) - 1 2 3 - 1 2 3 - 1 / 1: 9.0000 9.0000 9.0000 - 2 / 2: 95.8009 4.1991 0.0000 - 3 / 3: 1.0931 0.0479 0.0000 - -LET eoftime = eofsvd_tfunc(SST[X=27W:23W,Y=1S:3N]) -list/i=1:2 eoftime - VARIABLE : EOFSVD_TFUNC(SST[X=27W:23W,Y=1S:3N]) - FILENAME : coads_climatology.cdf - SUBSET : 2 by 3 points (X-TIME) - 1 2 - 1 2 - 16-JAN / 1: 1.17837 -0.78194 - 15-FEB / 2: 0.08800 1.41147 - 17-MAR / 3: -1.26637 -0.62953 - -! The functions need updating for double precision Ferret -exit/script - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bench_compress_by -let mask = {1,,1,,1} + 0*L[l=101:102] + 0*K[k=10:11] -list compressi_by({10,20,30,40,50},mask) - VARIABLE : COMPRESSI_BY({10,20,30,40,50},MASK) - SUBSET : 5 by 2 by 2 points (X-Z-T) - 1 2 3 4 5 - 1 2 3 4 5 - ---- L:101 T: 101 - 10 / 10: 10.0000 30.0000 50.0000 .... .... - 11 / 11: 10.0000 30.0000 50.0000 .... .... - ---- L:102 T: 102 - 10 / 10: 10.0000 30.0000 50.0000 .... .... - 11 / 11: 10.0000 30.0000 50.0000 .... .... -let mask2 = IF J[j=201:202] eq 201 then mask else 1/(MISSING(mask,4)-1) -list compressi_by({10,20,30,40,50},mask2) - VARIABLE : COMPRESSI_BY({10,20,30,40,50},MASK2) - SUBSET : 5 by 2 by 2 by 2 points (X-Y-Z-T) - 1 2 3 4 5 - 1 2 3 4 5 - ---- L:101 T: 101 - ---- K:10 Z: 10 - 201 / 201: 10.0000 30.0000 50.0000 .... .... - 202 / 202: 20.0000 40.0000 .... .... .... - ---- K:11 Z: 11 - 201 / 201: 10.0000 30.0000 50.0000 .... .... - 202 / 202: 20.0000 40.0000 .... .... .... - ---- L:102 T: 102 - ---- K:10 Z: 10 - 201 / 201: 10.0000 30.0000 50.0000 .... .... - 202 / 202: 20.0000 40.0000 .... .... .... - ---- K:11 Z: 11 - 201 / 201: 10.0000 30.0000 50.0000 .... .... - 202 / 202: 20.0000 40.0000 .... .... .... - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bench_compress - ! NOAA/PMEL TMAP - ! Program FERRET - ! Version 5.21 - 06/15/00 - ! 10-Jul-00 10:39 - -! V550 *sh* 11/02 - documentation change only reflecting subspan modulo - -use coads_climatology -! Note that L=5 lies outside the time axis range of 3 points -! As of V550 this triggers a subspan modulo calculation (correctly) -list sst[l=5,j=66,i=125:131] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 7 points (LONGITUDE) - LATITUDE : 41N - TIME : 15-JAN 11:49 - 41N - 66 - 91W / 125:.... - 89W / 126:.... - 87W / 127:.... - 85W / 128:.... - 83W / 129:.... - 81W / 130:.... - 79W / 131:.... -list compressi(sst[l=5,j=66,i=125:131]) - VARIABLE : COMPRESSI(SST[L=5,J=66,I=125:131]) - FILENAME : coads_climatology.cdf - SUBSET : 7 points (X) - LATITUDE : 41N - TIME : 15-JAN 11:49 - 41N - 66 - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - 4 / 4:.... - 5 / 5:.... - 6 / 6:.... - 7 / 7:.... - -list sst[l=5,j=63:73,i=125] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 11 points (LATITUDE) - LONGITUDE: 91W - TIME : 15-JAN 11:49 - 91W - 125 - 55N / 73: .... - 53N / 72: .... - 51N / 71: .... - 49N / 70: .... - 47N / 69: 2.6969 - 45N / 68: 13.3500 - 43N / 67: .... - 41N / 66: .... - 39N / 65: .... - 37N / 64: .... - 35N / 63: .... -list compressj(sst[l=5,j=63:73,i=125]) - VARIABLE : COMPRESSJ(SST[L=5,J=63:73,I=125]) - FILENAME : coads_climatology.cdf - SUBSET : 11 points (Y) - LONGITUDE: 91W - TIME : 15-JAN 11:49 - 91W - 125 - 1 / 1: 13.3500 - 2 / 2: 2.6969 - 3 / 3: .... - 4 / 4: .... - 5 / 5: .... - 6 / 6: .... - 7 / 7: .... - 8 / 8: .... - 9 / 9: .... - 10 / 10: .... - 11 / 11: .... - -list sst[j=67,i=125] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (TIME) - LONGITUDE: 91W - LATITUDE : 43N - 91W - 125 - 16-JAN / 1:.... - 15-FEB / 2:.... - 17-MAR / 3:.... -list compressl(sst[j=67,i=125]) - VARIABLE : COMPRESSL(SST[J=67,I=125]) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (T) - LONGITUDE: 91W - LATITUDE : 43N - 91W - 125 - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - - -use gt4d011 ! as in bench_sortk -let a = if temp le 27 then temp -list a[i=91,j=35,l=1] - VARIABLE : IF TEMP LE 27 THEN TEMP - FILENAME : gt4d011.cdf - SUBSET : 10 points (DEPTH (m)) - LONGITUDE: 139.5W - LATITUDE : 3.5S - TIME : 17-AUG-1982 12:00 - 139.5W - 91 - 5 / 1: .... - 15 / 2: .... - 25 / 3: .... - 35 / 4: .... - 45 / 5: .... - 55 / 6: .... - 65 / 7: 26.3984 - 75 / 8: 26.0190 - 85 / 9: 25.6663 - 95 / 10: 25.3181 -list compressk(a[i=91,j=35,l=1]) - VARIABLE : COMPRESSK(A[I=91,J=35,L=1]) - FILENAME : gt4d011.cdf - SUBSET : 10 points (Z) - LONGITUDE: 139.5W - LATITUDE : 3.5S - TIME : 17-AUG-1982 12:00 - 139.5W - 91 - 1 / 1: 26.3984 - 2 / 2: 26.0190 - 3 / 3: 25.6663 - 4 / 4: 25.3181 - 5 / 5: .... - 6 / 6: .... - 7 / 7: .... - 8 / 8: .... - 9 / 9: .... - 10 / 10: .... - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO bench_internal_string_functions -! test internal string functions: -! strlen -! upcase -! dncase -! strindex -! strrindex -! substring -! strcat -! float - return float value from string -! -! *kob* 6/02 Ferret v5.41 - - -! STRLEN -! Result should be 35 -list strlen("This string should be 35 characters") - VARIABLE : STRLEN("This string should be 35 characters") - 35.0000 -! Result should be 0 -list strlen("") - VARIABLE : STRLEN("") - 0.000000 - - -! UPCASE -! Result should be in all caps -list upcase ("this String sHould be iN aLl Caps") - VARIABLE : UPCASE ("this String sHould be iN aLl Caps") - "THIS STRING SHOULD BE IN ALL CAPS" - -! DNCASE -! Result should be all lower case -list dncase ("this String sHould be iN loWer caSE") - VARIABLE : DNCASE ("this String sHould be iN loWer caSE") - "this string should be in lower case" - -! STRINDEX -! Find first occurence string "fun" in longer string -! Result should be 11 -list strindex("Ferret is fun for the whole family - real fun, family fun", "fun"); - VARIABLE : STRINDEX("Ferret is fun for the whole family - real fun, family fun", "fun") - 11.0000 - -! STRRINDEX -! Find last occurence string "fun" in longer string -! Result should be 55 -list strrindex("Ferret is fun for the whole family - real fun, family fun", "fun"); - VARIABLE : STRRINDEX("Ferret is fun for the whole family - real fun, family fun", "fun") - 55.0000 - -! SUBSTRING -! Clip a substring from a string - result should be "ferret" -list substring("Have you fed your ferret today", 19, 6) - VARIABLE : SUBSTRING("Have you fed your ferret today", 19, 6) - "ferret" -! Ask for offset greater than string lenght - result should be "" -list substring("Have you fed your ferret today", 50, 6) - VARIABLE : SUBSTRING("Have you fed your ferret today", 50, 6) - "" -! Ask for more chars than in string - result should be "ferret today" -list substring("Have you fed your ferret today", 19, 60) - VARIABLE : SUBSTRING("Have you fed your ferret today", 19, 60) - "ferret today" - - -! STRCAT -! concatenate two strings -list strcat ("All work and no play", " makes Ferret a dull boy") - VARIABLE : STRCAT ("All work and no play", " makes Ferret a dull boy") - "All work and no play makes Ferret a dull boy" - - -! FLOAT -! return float value - result should be 7.85 -! list (strfloat("3.14")*10)/4 ! crashes on linux rh5 gfortran... -list .25*strfloat("3.14") - VARIABLE : .25*STRFLOAT("3.14") - 0.785000 - - -! the below are deliberate errors for incorrect argument detection -set mode ignore -list strindex("Ferret is fun for the whole family - real family fun"); -list strrindex("Ferret is fun for the whole family - real family fun"); -list substring("Have you fed your ferret today", 19) -list substring("Have you fed your ferret today") -list strcat ("All work and no play") - -set mode/last ignore - -! 4/2006 these functions now are also internally linked - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO bn_ef_bench_extrema.jnl -! bench_extrema.jnl -! benchmark tests for findhi and findlo -! external functions; installed as .so files -! Ferret version 5.4 - -! ACM 28-Jan-02 - -use coads_climatology -set region/l=1/x=100:360/y=-20:60 - -list/x=1:10 findhi(sst,4,4) - VARIABLE : FINDHI(SST,4,4) - FILENAME : coads_climatology.cdf - SUBSET : 10 by 3 points (X-Y) - TIME : 16-JAN 06:00 - 1 2 3 4 5 6 7 8 9 10 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1: 335.000 359.000 269.000 57.000 195.000 73.000 101.000 209.000 87.000 167.000 - 2 / 2: -69.000 -63.000 -25.000 -13.000 -13.000 -11.000 -11.000 -11.000 -9.000 -9.000 - 3 / 3: 0.340 0.863 23.271 28.382 29.675 28.470 28.341 28.881 28.429 29.847 -list/x=1:10 findlo(sst,4,4) - VARIABLE : FINDLO(SST,4,4) - FILENAME : coads_climatology.cdf - SUBSET : 10 by 3 points (X-Y) - TIME : 16-JAN 06:00 - 1 2 3 4 5 6 7 8 9 10 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1: 331.000 365.000 147.000 79.000 119.000 65.000 83.000 125.000 157.000 237.000 - 2 / 2: -65.000 -61.000 -59.000 -53.000 -9.000 -7.000 -7.000 -7.000 -3.000 -1.000 - 3 / 3: -0.766 -0.063 0.400 1.607 28.333 27.646 27.757 28.387 28.721 23.888 - -let a = findlo(sst,4,4) -list a[i=@ngd] - VARIABLE : FINDLO(SST,4,4) (# of points) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (Y) - X : 0.5 to 1.62E+04 (number of valid) - TIME : 16-JAN 06:00 - 1 / 1: 13.0000 - 2 / 2: 13.0000 - 3 / 3: 13.0000 - -let a = findlo(sst,2,2) -list a[i=@ngd] - VARIABLE : FINDLO(SST,2,2) (# of points) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (Y) - X : 0.5 to 1.62E+04 (number of valid) - TIME : 16-JAN 06:00 - 1 / 1: 113.000 - 2 / 2: 113.000 - 3 / 3: 113.000 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO bn_ef_err541_date_delim.jnl -! err541_date_delim.jnl -! Fix errors occurring with delimted reads - four digit years were -! being accuratly calculated. -! -! *kob* 11/02 - -set data/var="date1"/type="date,date"/form=delim dates_bug.dat -! first date is 12-27-1999 which is unacceptable so should be missing values -list days1900toymdhms(date1) - VARIABLE : DAYS1900TOYMDHMS(DATE1) - FILENAME : dates_bug.dat - SUBSET : 6 by 6 points (X-Z) - 1 2 3 4 5 6 - 1 2 3 4 5 6 - 1 / 1: .... 1999.00 2001.00 2001.00 2003.00 999.00 - 2 / 2: .... 7.00 7.00 7.00 7.00 8.00 - 3 / 3: .... 28.00 29.00 30.00 31.00 1.00 - 4 / 4: .... 0.00 0.00 0.00 0.00 0.00 - 5 / 5: .... 0.00 0.00 0.00 0.00 0.00 - 6 / 6: .... 0.00 0.00 0.00 0.00 0.00 - - -! now test accuracy of dates -DEFINE AXIS/T0=1-jan-1900/T=1-jan-1900:1-jan-2005:1/units=days ttt - -let date_check = date1[i=2] - T[gt=ttt,t="28-jul-1999"] -if `date_check` then say **** DELIMTED READ DATE CHECK FAILED - !-> if 0 then say **** DELIMTED READ DATE CHECK FAILED -let date_check = date1[i=3] - T[gt=ttt,t="29-jul-2001"] -if `date_check` then say **** DELIMTED READ DATE CHECK FAILED - !-> if 0 then say **** DELIMTED READ DATE CHECK FAILED -let date_check = date1[i=4] - T[gt=ttt,t="30-jul-2001"] -if `date_check` then say **** DELIMTED READ DATE CHECK FAILED - !-> if 0 then say **** DELIMTED READ DATE CHECK FAILED -let date_check = date1[i=5] - T[gt=ttt,t="31-jul-2003"] -if `date_check` then say **** DELIMTED READ DATE CHECK FAILED - !-> if 0 then say **** DELIMTED READ DATE CHECK FAILED - - - -! now test eurodate format -can data/all -set data/var="date1"/type="eurodate,eurodate"/form=delim euro_dates_bug.dat -! first date is 27-07-1999 which is unacceptable so should be missing values -list days1900toymdhms(date1) - VARIABLE : DAYS1900TOYMDHMS(DATE1) - FILENAME : euro_dates_bug.dat - SUBSET : 5 by 6 points (X-Z) - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: .... 2001.00 2001.00 2003.00 999.00 - 2 / 2: .... 7.00 7.00 7.00 8.00 - 3 / 3: .... 28.00 30.00 31.00 1.00 - 4 / 4: .... 0.00 0.00 0.00 0.00 - 5 / 5: .... 0.00 0.00 0.00 0.00 - 6 / 6: .... 0.00 0.00 0.00 0.00 - -!test accuracy of eurodates -let date_check = date1[i=2] - T[gt=ttt,t="28-jul-2001"] -if `date_check` then say **** DELIMTED READ DATE CHECK FAILED - !-> if 0 then say **** DELIMTED READ DATE CHECK FAILED -let date_check = date1[i=3] - T[gt=ttt,t="30-jul-2001"] -if `date_check` then say **** DELIMTED READ DATE CHECK FAILED - !-> if 0 then say **** DELIMTED READ DATE CHECK FAILED -let date_check = date1[i=4] - T[gt=ttt,t="31-jul-2003"] -if `date_check` then say **** DELIMTED READ DATE CHECK FAILED - !-> if 0 then say **** DELIMTED READ DATE CHECK FAILED - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO bn_ef_zaxr_fcns.jnl -! bn_ef_zaxr_functions.jnl -! 04-apr-05 *acm* move to tests of shared-obj efs. -! -! bn_zaxr_functions.jnl -! Compare the various zaxreplace functions - - -! Define some original source data: - -let ddat = zsequence({1126,1136,1146,1156,1166}) -let cycle = zsequence({346, 347, 349, 350, 351}) - -! Put that data on the following original source grid: - -Define axis/z=10:50:10 zaxis_orig - -let cycle_orig = cycle[gz=zaxis_orig@asn] -let ddat_orig = ddat[gz=zaxis_orig@asn] - -! Define a destination axis - -define axis/z=345:353:1 zaxis_des -let dummy = z[GZ=zaxis_des] - -let ddat_a = zaxreplace(ddat_orig, cycle_orig, dummy) - -let ddat_b = zaxreplace_avg(ddat_orig, cycle_orig, dummy) - -let ddat_c = zaxreplace_bin(ddat_orig, cycle_orig, dummy) - -! Compare result of zaxreplace, zaxreplace_avg, zaxreplace_bin -list ddat_a, ddat_b, ddat_c - Z: 344.5 to 353.5 - Column 1: DDAT_A is ZAXREPLACE(DDAT_ORIG, CYCLE_ORIG, DUMMY) - Column 2: DDAT_B is ZAXREPLACE_AVG(DDAT_ORIG, CYCLE_ORIG, DUMMY) - Column 3: DDAT_C is ZAXREPLACE_BIN(DDAT_ORIG, CYCLE_ORIG, DUMMY) - DDAT_A DDAT_B DDAT_C -345 / 1: .... .... .... -346 / 2: .... 1126.00 1126.00 -347 / 3: 1136.00 1136.00 1136.00 -348 / 4: 1141.00 1141.00 .... -349 / 5: 1146.00 1146.00 1146.00 -350 / 6: 1156.00 1156.00 1156.00 -351 / 7: 1166.00 1166.00 1166.00 -352 / 8: .... .... .... -353 / 9: .... .... .... - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO bn_ef_curv_to_rect.jnl -! bn_ef_curv_to_rect.jnl -! Test of curvilinear to rectilinear regridding -! Uses shared-object external functions -! ACM 5/4/05 - -show func curv* -CURV_RANGE(LONGITUDES,LATITUDES,xrange_lo,xrange_hi,yrange_lo,yrange_hi,modulo flag for X coordinates) - find i,j bounds for subset of a variable in curvilinear coordinates - LONGITUDES: 2-D longitudes of curvilinear grid - LATITUDES: 2-D latitudes of curvilinear grid - xrange_lo: Minimum of longitude range - xrange_hi: Maximum of longitude range - yrange_lo: Minimum of latitude range - yrange_hi: Maximum of latitude range - modulo flag for X coordinates: 1= X modulo; 0= X not modulo -CURV_TO_RECT(V,mapping) - Apply mapping to regrid from curvilinear to rectangular grid - V: Variable to regrid, on curvilinear grid V(x,y,z,t,e,f) - mapping: mapping computed by curv_to_rect_MAP -CURV_TO_RECT_FSU(V,mapping) - Alt func to Apply mapping to regrid from curvilinear to rectangular grid - V: Variable to regrid, on curvilinear grid V(x,y,z,t) - mapping: mapping computed by curv_to_rect_MAP -CURV_TO_RECT_MAP(lon_in,lat_in,grid_out,radius) - Compute mapping for regridding: curvilinear to rectangular grid. - lon_in: Source grid longitudes (2-D) (degrees) - lat_in: Source grid latitudes (2-D) (degrees) - grid_out: Any variable on destination Longitude-Latitude grid, Lon and Lat (degrees) - radius: Source points falling within radius are included in mapping to destination point (degrees) -CURV2RECT(CurvData,CurvCenterLons,CurvCenterLats,CurvCornerLons,CurvCornerLats,TemplateRectVar,Method) - Regrids data from curvilinear lon,lat center and/or corner grid to rectilinear using ESMP/ESMF - CurvData: Curvilinear X,Y data positioned at centers - CurvCenterLons: Curvilinear center longitudes on an X,Y grid - CurvCenterLats: Curvilinear center latitudes on an X,Y grid - CurvCornerLons: Curvilinear corner longitudes on an X,Y (maybe Z) grid - CurvCornerLats: Curvilinear corner latitudes on an X,Y (maybe Z) grid - TemplateRectVar: Template variable on the desired rectilinear grid - Method: Regrid method: BILINEAR, PATCH, CONSERVE (STRING) -CURV3SRECT(CurvData,CurvLons,CurvLats,CurvBaths,CurvZetas,TemplateRectVar,Method) - Regrids data from curvilinear lon, lat, sigma, bathymetry, zeta (centers) grid to rectilinear lon, lat, depth using ESMP/ESMF - CurvData: Curvilinear X,Y,Z,[T,E,F] data where Z is sigma values - CurvLons: Longitudes of curvilinear data on an X,Y grid - CurvLats: Latitudes of curvilinear data on an X,Y grid - CurvBaths: Bathymetry (as depths) of curvilinear data on an X,Y grid - CurvZetas: Water surface elevations of curvilinear data on an X,Y,[T] grid (optional) - TemplateRectVar: Template variable on the desired rectilinear X,Y,Z,[T,E,F] grid where Z is depths - Method: Regrid method: BILINEAR, PATCH (STRING) - -use tripolar_subset.nc -shade ht, geolon_vert_t, geolat_vert_t - -! Define output grid - -def axis/x=-300:100:10 xout -def axis/y=60:90:3 yout -let a = x[gx=xout] + y[gy=yout] - -! Define mapping -let my_map = curv_to_rect_map (geolon_vert_t, geolat_vert_t, a, 10) - -! apply mapping -let mapped = curv_to_rect (ht, my_map) -shade mapped -stat mapped - - CURV_TO_RECT (HT, MY_MAP) - X: -305 to 105 - Y: 58.5 to 91.5 - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: ./data/tripolar_subset.nc - - Total # of data points: 451 (41*11*1*1*1*1) - # flagged as bad data: 79 - Minimum value: 0 - Maximum value: 4298.8 - Mean value: 963.12 (unweighted average) - Standard deviation: 1380.9 - - -! tax_ functions -use gt4d011 - -list/L=15:20 tax_datestring(t[gt=temp],temp,"hour") - VARIABLE : TAX_DATESTRING(T[GT=TEMP],TEMP,"hour") - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - 10-NOV-1982 16 / 15:"10-NOV-1982 16" - 16-NOV-1982 18 / 16:"16-NOV-1982 18" - 22-NOV-1982 20 / 17:"22-NOV-1982 20" - 28-NOV-1982 22 / 18:"28-NOV-1982 22" - 05-DEC-1982 00 / 19:"05-DEC-1982 00" - 11-DEC-1982 02 / 20:"11-DEC-1982 02" -list/L=15:20 tax_datestring(t[gt=temp],temp,"day") - VARIABLE : TAX_DATESTRING(T[GT=TEMP],TEMP,"day") - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - 10-NOV-1982 16 / 15:"10-NOV-1982" - 16-NOV-1982 18 / 16:"16-NOV-1982" - 22-NOV-1982 20 / 17:"22-NOV-1982" - 28-NOV-1982 22 / 18:"28-NOV-1982" - 05-DEC-1982 00 / 19:"05-DEC-1982" - 11-DEC-1982 02 / 20:"11-DEC-1982" -list/L=15:20 tax_dayfrac(t[gt=temp],temp), tax_dayfrac(t[gt=temp],temp)*24. - DATA SET: ./data/gt4d011.cdf - TIME: 07-NOV-1982 15:00 to 14-DEC-1982 03:00 - Column 1: TAX_DAYFRAC(T[GT=TEMP],TEMP) - Column 2: EX#2 is TAX_DAYFRAC(T[GT=TEMP],TEMP)*24. - (C001,V001) EX#2 -10-NOV-1982 16 / 15: 0.666667 16.0000 -16-NOV-1982 18 / 16: 0.750000 18.0000 -22-NOV-1982 20 / 17: 0.833333 20.0000 -28-NOV-1982 22 / 18: 0.916667 22.0000 -05-DEC-1982 00 / 19: 0.000000 0.0000 -11-DEC-1982 02 / 20: 0.083333 2.0000 -list/L=15:20 tax_day(t[gt=temp],temp), tax_jday(t[gt=temp],temp) - DATA SET: ./data/gt4d011.cdf - TIME: 07-NOV-1982 15:00 to 14-DEC-1982 03:00 - Column 1: TAX_DAY(T[GT=TEMP],TEMP) - Column 2: TAX_JDAY(T[GT=TEMP],TEMP) - (C001,V001) (C001,V009) -10-NOV-1982 16 / 15: 10.0000 314.000 -16-NOV-1982 18 / 16: 16.0000 320.000 -22-NOV-1982 20 / 17: 22.0000 326.000 -28-NOV-1982 22 / 18: 28.0000 332.000 -05-DEC-1982 00 / 19: 5.0000 339.000 -11-DEC-1982 02 / 20: 11.0000 345.000 -list/L=15:20 tax_month(t[gt=temp],temp), tax_yearfrac(t[gt=temp],temp) - DATA SET: ./data/gt4d011.cdf - TIME: 07-NOV-1982 15:00 to 14-DEC-1982 03:00 - Column 1: TAX_MONTH(T[GT=TEMP],TEMP) - Column 2: TAX_YEARFRAC(T[GT=TEMP],TEMP) - (C001,V001) (C001,V009) -10-NOV-1982 16 / 15: 11.0000 0.862100 -16-NOV-1982 18 / 16: 11.0000 0.878767 -22-NOV-1982 20 / 17: 11.0000 0.895434 -28-NOV-1982 22 / 18: 11.0000 0.912100 -05-DEC-1982 00 / 19: 12.0000 0.928767 -11-DEC-1982 02 / 20: 12.0000 0.945434 -list/L=15:20 tax_year(t[gt=temp],temp) - VARIABLE : TAX_YEAR(T[GT=TEMP],TEMP) - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - 10-NOV-1982 16 / 15: 1982.00 - 16-NOV-1982 18 / 16: 1982.00 - 22-NOV-1982 20 / 17: 1982.00 - 28-NOV-1982 22 / 18: 1982.00 - 05-DEC-1982 00 / 19: 1982.00 - 11-DEC-1982 02 / 20: 1982.00 -list tax_units(temp) - VARIABLE : TAX_UNITS(TEMP) - FILENAME : gt4d011.cdf - 3600.00 - -! fill_xy -can data/all -use coads_climatology -let mask = 0*x[gx=sst] + y[gy=sst] + 1 -shade fill_xy(sst[l=1], mask[l=1], 1) -shade fill_xy(sst[l=1], mask[l=1], 4) - -! Compare SAMPLEXY and SAMPLEIJ -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO bn_samplexy_sampleij -! bn_samplexy_sampleij - -! Simple tests of SAMPLEXY and SAMPLEIJ - -sh func samplexy, sampleij -SAMPLEXY(DAT_TO_SAMPLE,XPTS,YPTS) - Returns data sampled at a set of (X,Y) points, using linear interpolation - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X values of sample points - YPTS: Y values of sample points -SAMPLEIJ(DAT_TO_SAMPLE,XPTS,YPTS) - Returns data sampled by matching coordinates at a subset of grid points, defined by (XPTS, YPTS) - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X coordinates of grid points - YPTS: Y coordinates of grid points -use coads_climatology - -! Both functions take world coordinate values -! as arguements for the points at which to sample. -! -! SAMPLEXY will interpolate to geth the result, -! SAMPLEIJ requires an exact match. -list/l=1 samplexy(sst,{321,323.5,325}, {1,1,1}), sampleij(sst,{321,323,324.5}, {1,1,1}) - DATA SET: ./data/coads_climatology.cdf - X: 0.5 to 3.5 - TIME: 16-JAN 06:00 - Column 1: EX#1 is SAMPLEXY(SST,{321,323.5,325}, {1,1,1}) - Column 2: EX#2 is SAMPLEIJ(SST,{321,323,324.5}, {1,1,1}) - EX#1 EX#2 -1 / 1: 27.4849 27.4849 -2 / 2: 27.4030 27.4655 -3 / 3: 27.2157 .... - - - -GO bn_reset bn_modulo_strides -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_modulo_strides -GO bn_modulo_strides -! bn_modulo_strides.jnl -! 6/01 *sh* -! exercise the combination of modulo and netCDF strides IO - -define axis/modulo/x=1:20:1 x20 -LET a = X[gx=x20] -LET str_raw = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t"} -!list b_raw -let str = str_raw[gx=x20@asn] -save/clobber/file=test_modulo.cdf a, str -cancel variable a, str -use test_modulo - -! verify that both single IO and double IO cases are doing rdstride -cancel memory/all -set mode diag -let b = a[i=18:23:2] -list/nohead b ! using rdstride - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid B C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - dealloc dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - allocate dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - allocate dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval B C: 6 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - strip regrid on X: A --> (G022) @XACT - strip moduloing A on X axis: 18 22 dset: 1 - rdstride A C: 11 dset: 1 I: 18 20 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing A on X axis: 18 20 dset: 1 - -DELETE A M:161 dset: 1 I: 18 20 J: -999 -999 K: -999 -999 L: -999 -999 - rdstride A C: 11 dset: 1 I: 2 2 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing A on X axis: 2 2 dset: 1 - -DELETE A M:161 dset: 1 I: 2 2 J: -999 -999 K: -999 -999 L: -999 -999 - nulrgd A M:161 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE A M:171 dset: 1 I: 18 22 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - 18 / 1: 18.0000 - 20 / 2: 20.0000 - 22 / 3: 2.0000 -list/nohead a[i=1:25:3] ! no strides --> reads full region without strides - dealloc dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G023) (AX018) NORMAL NORMAL NORMAL - dealloc dynamic grid (G023) (AX018) NORMAL NORMAL NORMAL - allocate dynamic grid (G023) (AX018) NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G023) (AX018) NORMAL NORMAL NORMAL - strip regrid on X: A --> (G023) @XACT - strip moduloing A on X axis: 1 25 dset: 1 - reading A M:165 dset: 1 I: 1 20 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing A on X axis: 1 20 dset: 1 - regrid A M:153 dset: 1 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G023) (AX018) NORMAL NORMAL NORMAL - 1 / 1: 1.0000 - 4 / 2: 4.0000 - 7 / 3: 7.0000 - 10 / 4: 10.0000 - 13 / 5: 13.0000 - 16 / 6: 16.0000 - 19 / 7: 19.0000 - 22 / 8: 2.0000 - 25 / 9: 5.0000 -list/nohead b ! reuse of cached result - dealloc dynamic grid (G023) (AX018) NORMAL NORMAL NORMAL - -DELETE A M:153 dset: 1 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - found B M:171 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - 18 / 1: 18.0000 - 20 / 2: 20.0000 - 22 / 3: 2.0000 -set mode/last diag - -! less than one modulo cycle -- grab in 2 pieces -! ... delta(2) a factor of npts(20) -list/nohead a[i=18:23:2] - 18 / 1: 18.0000 - 20 / 2: 20.0000 - 22 / 3: 2.0000 -list/nohead a[i=19:23:2] - 19 / 1: 19.0000 - 21 / 2: 1.0000 - 23 / 3: 3.0000 -list/nohead a[i=20:23:2] - 20 / 1: 20.0000 - 22 / 2: 2.0000 -list/nohead a[i=18:24:2] - 18 / 1: 18.0000 - 20 / 2: 20.0000 - 22 / 3: 2.0000 - 24 / 4: 4.0000 -list/nohead a[i=19:24:2] - 19 / 1: 19.0000 - 21 / 2: 1.0000 - 23 / 3: 3.0000 -list/nohead a[i=20:24:2] - 20 / 1: 20.0000 - 22 / 2: 2.0000 - 24 / 3: 4.0000 - -! ... delta(3) not a factor of npts(20) -list/nohead a[i=17:23:3] - 17 / 1: 17.0000 - 20 / 2: 20.0000 - 23 / 3: 3.0000 -list/nohead a[i=18:23:3] - 18 / 1: 18.0000 - 21 / 2: 1.0000 -list/nohead a[i=19:23:3] - 19 / 1: 19.0000 - 22 / 2: 2.0000 -list/nohead a[i=20:23:3] - 20 / 1: 20.0000 - 23 / 2: 3.0000 -list/nohead a[i=17:24:3] - 17 / 1: 17.0000 - 20 / 2: 20.0000 - 23 / 3: 3.0000 -list/nohead a[i=18:24:3] - 18 / 1: 18.0000 - 21 / 2: 1.0000 - 24 / 3: 4.0000 -list/nohead a[i=19:24:3] - 19 / 1: 19.0000 - 22 / 2: 2.0000 -list/nohead a[i=20:24:3] - 20 / 1: 20.0000 - 23 / 2: 3.0000 -list/nohead a[i=17:25:3] - 17 / 1: 17.0000 - 20 / 2: 20.0000 - 23 / 3: 3.0000 -list/nohead a[i=18:25:3] - 18 / 1: 18.0000 - 21 / 2: 1.0000 - 24 / 3: 4.0000 -list/nohead a[i=19:25:3] - 19 / 1: 19.0000 - 22 / 2: 2.0000 - 25 / 3: 5.0000 -list/nohead a[i=20:25:3] - 20 / 1: 20.0000 - 23 / 2: 3.0000 - -! more than one modulo cycle -- grab in one piece -list/nohead a[i=1:45:5] - 1 / 1: 1.0000 - 6 / 2: 6.0000 - 11 / 3: 11.0000 - 16 / 4: 16.0000 - 21 / 5: 1.0000 - 26 / 6: 6.0000 - 31 / 7: 11.0000 - 36 / 8: 16.0000 - 41 / 9: 1.0000 -list/nohead a[i=2:45:5] - 2 / 1: 2.0000 - 7 / 2: 7.0000 - 12 / 3: 12.0000 - 17 / 4: 17.0000 - 22 / 5: 2.0000 - 27 / 6: 7.0000 - 32 / 7: 12.0000 - 37 / 8: 17.0000 - 42 / 9: 2.0000 -list/nohead a[i=3:45:5] - 3 / 1: 3.0000 - 8 / 2: 8.0000 - 13 / 3: 13.0000 - 18 / 4: 18.0000 - 23 / 5: 3.0000 - 28 / 6: 8.0000 - 33 / 7: 13.0000 - 38 / 8: 18.0000 - 43 / 9: 3.0000 -list/nohead a[i=4:45:5] - 4 / 1: 4.0000 - 9 / 2: 9.0000 - 14 / 3: 14.0000 - 19 / 4: 19.0000 - 24 / 5: 4.0000 - 29 / 6: 9.0000 - 34 / 7: 14.0000 - 39 / 8: 19.0000 - 44 / 9: 4.0000 -list/nohead a[i=5:45:5] - 5 / 1: 5.0000 - 10 / 2: 10.0000 - 15 / 3: 15.0000 - 20 / 4: 20.0000 - 25 / 5: 5.0000 - 30 / 6: 10.0000 - 35 / 7: 15.0000 - 40 / 8: 20.0000 - 45 / 9: 5.0000 -list/nohead a[i=6:45:5] - 6 / 1: 6.0000 - 11 / 2: 11.0000 - 16 / 3: 16.0000 - 21 / 4: 1.0000 - 26 / 5: 6.0000 - 31 / 6: 11.0000 - 36 / 7: 16.0000 - 41 / 8: 1.0000 -list/nohead a[i=101:145:5] - 101 / 1: 1.0000 - 106 / 2: 6.0000 - 111 / 3: 11.0000 - 116 / 4: 16.0000 - 121 / 5: 1.0000 - 126 / 6: 6.0000 - 131 / 7: 11.0000 - 136 / 8: 16.0000 - 141 / 9: 1.0000 -list/nohead a[i=102:145:5] - 102 / 1: 2.0000 - 107 / 2: 7.0000 - 112 / 3: 12.0000 - 117 / 4: 17.0000 - 122 / 5: 2.0000 - 127 / 6: 7.0000 - 132 / 7: 12.0000 - 137 / 8: 17.0000 - 142 / 9: 2.0000 -list/nohead a[i=103:145:5] - 103 / 1: 3.0000 - 108 / 2: 8.0000 - 113 / 3: 13.0000 - 118 / 4: 18.0000 - 123 / 5: 3.0000 - 128 / 6: 8.0000 - 133 / 7: 13.0000 - 138 / 8: 18.0000 - 143 / 9: 3.0000 -list/nohead a[i=104:145:5] - 104 / 1: 4.0000 - 109 / 2: 9.0000 - 114 / 3: 14.0000 - 119 / 4: 19.0000 - 124 / 5: 4.0000 - 129 / 6: 9.0000 - 134 / 7: 14.0000 - 139 / 8: 19.0000 - 144 / 9: 4.0000 -list/nohead a[i=105:145:5] - 105 / 1: 5.0000 - 110 / 2: 10.0000 - 115 / 3: 15.0000 - 120 / 4: 20.0000 - 125 / 5: 5.0000 - 130 / 6: 10.0000 - 135 / 7: 15.0000 - 140 / 8: 20.0000 - 145 / 9: 5.0000 -list/nohead a[i=106:145:5] - 106 / 1: 6.0000 - 111 / 2: 11.0000 - 116 / 3: 16.0000 - 121 / 4: 1.0000 - 126 / 5: 6.0000 - 131 / 6: 11.0000 - 136 / 7: 16.0000 - 141 / 8: 1.0000 - - -! ***** STRING TESTS ***** -set mode diag -list/nohead str[i=18:23:2] ! using rdstride - dealloc dynamic grid (G023) (AX028) NORMAL NORMAL NORMAL - -DELETE A M:153 dset: 1 I: 1 8 J: -999 -999 K: -999 -999 L: -999 -999 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - dealloc dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - allocate dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - strip regrid on X: STR --> (G022) @XACT - strip moduloing STR on X axis: 18 22 dset: 1 - rdstride STR C: 9 dset: 1 I: 18 20 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing STR on X axis: 18 20 dset: 1 - -DELETE STR M:153 dset: 1 I: 18 20 J: -999 -999 K: -999 -999 L: -999 -999 - rdstride STR C: 9 dset: 1 I: 2 2 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing STR on X axis: 2 2 dset: 1 - -DELETE STR M:153 dset: 1 I: 2 2 J: -999 -999 K: -999 -999 L: -999 -999 - nulrgd STR M:153 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE STR M:172 dset: 1 I: 18 22 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - 18 / 1:"r" - 20 / 2:"t" - 22 / 3:"b" -list/nohead str[i=1:25:3] ! no strides --> reads full region without strides - dealloc dynamic grid (G022) (AX015) NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G023) (AX018) NORMAL NORMAL NORMAL - dealloc dynamic grid (G023) (AX018) NORMAL NORMAL NORMAL - allocate dynamic grid (G023) (AX018) NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G023) (AX018) NORMAL NORMAL NORMAL - strip regrid on X: STR --> (G023) @XACT - strip moduloing STR on X axis: 1 25 dset: 1 - reading STR M:172 dset: 1 I: 1 20 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing STR on X axis: 1 20 dset: 1 - regrid STR M:163 dset: 1 I: 1 9 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G023) (AX018) NORMAL NORMAL NORMAL - 1 / 1:"a" - 4 / 2:"d" - 7 / 3:"g" - 10 / 4:"j" - 13 / 5:"m" - 16 / 6:"p" - 19 / 7:"s" - 22 / 8:"b" - 25 / 9:"e" -set mode/last diag - -! less than one modulo cycle -- grab in 2 pieces -! ... delta(2) a factor of npts(20) -list/nohead str[i=18:23:2] - 18 / 1:"r" - 20 / 2:"t" - 22 / 3:"b" -list/nohead str[i=20:23:2] - 20 / 1:"t" - 22 / 2:"b" - -! ... delta(3) not a factor of npts(20) -list/nohead str[i=17:23:3] - 17 / 1:"q" - 20 / 2:"t" - 23 / 3:"c" -list/nohead str[i=18:23:3] - 18 / 1:"r" - 21 / 2:"a" - -! more than one modulo cycle -- grab in one piece -list/nohead str[i=1:45:5] - 1 / 1:"a" - 6 / 2:"f" - 11 / 3:"k" - 16 / 4:"p" - 21 / 5:"a" - 26 / 6:"f" - 31 / 7:"k" - 36 / 8:"p" - 41 / 9:"a" -list/nohead str[i=5:45:5] - 5 / 1:"e" - 10 / 2:"j" - 15 / 3:"o" - 20 / 4:"t" - 25 / 5:"e" - 30 / 6:"j" - 35 / 7:"o" - 40 / 8:"t" - 45 / 9:"e" -list/nohead str[i=101:145:5] - 101 / 1:"a" - 106 / 2:"f" - 111 / 3:"k" - 116 / 4:"p" - 121 / 5:"a" - 126 / 6:"f" - 131 / 7:"k" - 136 / 8:"p" - 141 / 9:"a" -list/nohead str[i=105:145:5] - 105 / 1:"e" - 110 / 2:"j" - 115 / 3:"o" - 120 / 4:"t" - 125 / 5:"e" - 130 / 6:"j" - 135 / 7:"o" - 140 / 8:"t" - 145 / 9:"e" - -! ******** V54 Additions below *********** - -GO bn_reset bn_axis_viewports -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_viewports -GO bn_axis_viewports -! bn_axis_viewports -! *sh* 9/01 -! do not use /text= in def view in PyFerret - -! demonstrate vieport layout using the /AXES qualifier -set wind/clear/aspect=1 -def view/axes allax - -! make guide lines -show view allax - - name text xlimits ylimits mode - - ALLAX 1.00 0.00,1.00 0.00,1.00 axes - current viewport is NONE -set view allax -plot/vs/line/hlim=0:1/vlim=0:1/nolab {0.5,0.5,,0,1},{0,1,,0.5,0.5} -plot/vs/line/over/nolab {0.25,0.25,,0,1},{0,1,,0.25,0.25} -plot/vs/line/over/nolab {0.75,0.75,,0,1},{0,1,,0.75,0.75} -label 0.26,0.95,-1,0,.2 @P2@AC<-At 0.25 -label 0.76,0.95,-1,0,.2 @P3@AC<-At 0.75 - -! a plot from 0.25 to 0.75 -def view /xlim=0.25:0.75/ylim=0.25:0.75/axes mid -set view mid -plot/vs/hlim=-1:1/vlim=-1:1/line/i=1:200 cos(i/15),sin(i/15) -show view mid - - name text xlimits ylimits mode - - MID 0.72 0.25,0.75 0.25,0.75 axes - current viewport is MID -ppl list xaxis - - - XAXIS QUALITIES - LO=-1.00E+00 HI= 1.00E+00 TIC= 2.00E-01 LEN= 5.57E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 1.20E+00 AUTO LABELLING -ppl list yaxis - - - YAXIS QUALITIES - LO=-1.00E+00 HI= 1.00E+00 TIC= 2.00E-01 LEN= 5.57E+00 CSIZE= 1.00E-01 - LEFT AXIS= ON RIGHT AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - YORG= 1.40E+00 AUTO LABELLING - -! guidelines showing origin, axlen, white space -def view /xlim=0.25:0.75/ylim=0.25:0.75/axes mid2 -set view mid2 -ppl origin 0,0 -define symbol xaxl `($PPL$WIDTH)/2` - !-> define symbol xaxl 4.737 -define symbol yaxl `($PPL$HEIGHT)/2` - !-> define symbol yaxl 4.737 -ppl axlen `1.2 + ($xaxl) + 1.0`,`1.4 + ($yaxl) + 1.4` - !-> ppl axlen 6.937,7.537000000000001 -plot/vs/hlim=-1.2:`($xaxl)+1.0`:0.2/vlim=-1.4:`($yaxl)+1.4`:0.2/nolab/nolab {0,($xaxl)}, {0,($yaxl)} - !-> plot/vs/hlim=-1.2:5.737:0.2/vlim=-1.4:6.137:0.2/nolab/nolab {0,4.737}, {0,4.737} - -! again with scale determined automatically -! make guide lines -set window/clear -set view allax -plot/vs/line/hlim=0:1/vlim=0:1/nolab {0.5,0.5,,0,1},{0,1,,0.5,0.5} -plot/vs/line/over/nolab {0.25,0.25,,0,1},{0,1,,0.25,0.25} -plot/vs/line/over/nolab {0.75,0.75,,0,1},{0,1,,0.75,0.75} -label 0.26,0.95,-1,0,.2 @P2@AC<-At 0.25 -label 0.76,0.95,-1,0,.2 @P3@AC<-At 0.75 - -! a plot from 0.25 to 0.75 -def view /xlim=0.25:0.75/ylim=0.25:0.75/axes mid -set view mid -plot/vs/hlim=-1:1/vlim=-1:1/line/i=1:200/noyadj cos(i/15),sin(i/15) -show view mid - - name text xlimits ylimits mode - - MID 0.72 0.25,0.75 0.25,0.75 axes - current viewport is MID -ppl list xaxis - - - XAXIS QUALITIES - LO=-1.00E+00 HI= 1.00E+00 TIC= 2.00E-01 LEN= 5.57E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 1.20E+00 AUTO LABELLING -ppl list yaxis - - - YAXIS QUALITIES - LO=-1.00E+00 HI= 1.00E+00 TIC= 2.00E-01 LEN= 5.57E+00 CSIZE= 1.00E-01 - LEFT AXIS= ON RIGHT AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - YORG= 1.40E+00 AUTO LABELLING - -! guidelines showing origin, axlen, white space -def view /xlim=0.25:0.75/ylim=0.25:0.75/axes mid2 -set view mid2 -ppl origin 0,0 -define symbol xaxl `($PPL$WIDTH)/2` - !-> define symbol xaxl 4.737 -define symbol yaxl `($PPL$HEIGHT)/2` - !-> define symbol yaxl 4.737 -ppl axlen `1.2 + ($xaxl) + 1.0`,`1.4 + ($yaxl) + 1.4` - !-> ppl axlen 6.937,7.537000000000001 -plot/vs/hlim=-1.2:`($xaxl)+1.0`:0.2/vlim=-1.4:`($yaxl)+1.4`:0.2/nolab/line {0,($xaxl)}, {0,($yaxl)} - !-> plot/vs/hlim=-1.2:5.737:0.2/vlim=-1.4:6.137:0.2/nolab/line {0,4.737}, {0,4.737} - -set wind/clear - -! a full window plot -set view allax -plot/vs/hlim=-1:1/vlim=-1:1/line/i=1:200/noyadj cos(i/15),sin(i/15) -show view mid - - name text xlimits ylimits mode - - MID 0.72 0.25,0.75 0.25,0.75 axes - current viewport is ALLAX - -set wind/clear - -def view/axes/xlim=0:0.5/ylim=0:0.5 llax -set view llax -PLOT/VS/LINE/I=1:314/noyadj i*cos(i/20),i*sin(i/20) -ppl list xaxis - - - XAXIS QUALITIES - LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.13E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 0.00E+00 AUTO LABELLING -ppl list yaxis - - - YAXIS QUALITIES - LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.13E+00 CSIZE= 1.00E-01 - LEFT AXIS= ON RIGHT AXIS= ON - AUTO NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - YORG= 0.00E+00 AUTO LABELLING - -def view/axes/xlim=0:0.5/ylim=0.5:1 lrax -set view lrax -PLOT/VS/LINE/I=1:314/noyadj i*cos(i/20),i*sin(i/20) -ppl list xaxis - - - XAXIS QUALITIES - LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.13E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 0.00E+00 AUTO LABELLING -ppl list yaxis - - - YAXIS QUALITIES - LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.13E+00 CSIZE= 1.00E-01 - LEFT AXIS= ON RIGHT AXIS= ON - AUTO NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - YORG= 1.40E+00 AUTO LABELLING - -def view/axes/xlim=0.5:1/ylim=0:0.5 ulax -set view ulax -PLOT/VS/LINE/I=1:314/noyadj i*cos(i/20),i*sin(i/20) -ppl list xaxis - - - XAXIS QUALITIES - LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.08E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 1.20E+00 AUTO LABELLING -ppl list yaxis - - - YAXIS QUALITIES - LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.08E+00 CSIZE= 1.00E-01 - LEFT AXIS= ON RIGHT AXIS= ON - AUTO NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - YORG= 0.00E+00 AUTO LABELLING - -def view/axes/xlim=0.5:1/ylim=0.5:1 urax -set view urax -PLOT/VS/LINE/I=1:314/noyadj i*cos(i/20),i*sin(i/20) -ppl list xaxis - - - XAXIS QUALITIES - LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.08E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 1.20E+00 AUTO LABELLING -ppl list yaxis - - - YAXIS QUALITIES - LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.08E+00 CSIZE= 1.00E-01 - LEFT AXIS= ON RIGHT AXIS= ON - AUTO NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - YORG= 1.40E+00 AUTO LABELLING - -! again with viewport scaling determined automatically -set wind/clear - -def view/axes/xlim=0:0.5/ylim=0:0.5 llax -show view llax - - name text xlimits ylimits mode - - LLAX 0.60 0.00,0.50 0.00,0.50 axes - current viewport is URAX -set view llax -PLOT/VS/LINE/I=1:314/nolab i*cos(i/20),i*sin(i/20) -ppl list xaxis - - - XAXIS QUALITIES - LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.13E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 0.00E+00 AUTO LABELLING -ppl list yaxis - - - YAXIS QUALITIES - LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.13E+00 CSIZE= 1.00E-01 - LEFT AXIS= ON RIGHT AXIS= ON - AUTO NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - YORG= 0.00E+00 AUTO LABELLING - -def view/axes/xlim=0:0.5/ylim=0.5:1 lrax -show view lrax - - name text xlimits ylimits mode - - LRAX 0.60 0.00,0.50 0.50,1.00 axes - current viewport is LLAX -set view lrax -PLOT/VS/LINE/I=1:314/nolab i*cos(i/20),i*sin(i/20) -ppl list xaxis - - - XAXIS QUALITIES - LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.13E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 0.00E+00 AUTO LABELLING -ppl list yaxis - - - YAXIS QUALITIES - LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.13E+00 CSIZE= 1.00E-01 - LEFT AXIS= ON RIGHT AXIS= ON - AUTO NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - YORG= 1.40E+00 AUTO LABELLING - -def view/axes/xlim=0.5:1/ylim=0:0.5 ulax -show view ulax - - name text xlimits ylimits mode - - ULAX 0.61 0.50,1.00 0.00,0.50 axes - current viewport is LRAX -set view ulax -PLOT/VS/LINE/I=1:314/nolab i*cos(i/20),i*sin(i/20) -ppl list xaxis - - - XAXIS QUALITIES - LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.08E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 1.20E+00 AUTO LABELLING -ppl list yaxis - - - YAXIS QUALITIES - LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.08E+00 CSIZE= 1.00E-01 - LEFT AXIS= ON RIGHT AXIS= ON - AUTO NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - YORG= 0.00E+00 AUTO LABELLING - -def view/axes/xlim=0.5:1/ylim=0.5:1 urax -show view urax - - name text xlimits ylimits mode - - URAX 0.61 0.50,1.00 0.50,1.00 axes - current viewport is ULAX -set view urax -PLOT/VS/LINE/I=1:314/nolab i*cos(i/20),i*sin(i/20) -ppl list xaxis - - - XAXIS QUALITIES - LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 6.08E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 1.20E+00 AUTO LABELLING -ppl list yaxis - - - YAXIS QUALITIES - LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.08E+00 CSIZE= 1.00E-01 - LEFT AXIS= ON RIGHT AXIS= ON - AUTO NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - YORG= 1.40E+00 AUTO LABELLING - -cancel view -go ptest -! Description: create a simple test line plot - -! spirograph picture ... -PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20) - -ppl list xaxis - - - XAXIS QUALITIES - LO=-3.14E+02 HI= 2.52E+02 TIC= 5.00E+01 LEN= 7.27E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 1.20E+00 AUTO LABELLING -ppl list yaxis - - - YAXIS QUALITIES - LO=-2.50E+02 HI= 3.00E+02 TIC= 5.00E+01 LEN= 6.67E+00 CSIZE= 1.00E-01 - LEFT AXIS= ON RIGHT AXIS= ON - AUTO NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - YORG= 1.40E+00 AUTO LABELLING - -GO bn_reset bn_strings -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_strings -GO bn_strings -! bn_strings.jnl - -! 7/01 - test string syntax and behaviors - -! 5/4/05 acm remove calls to writev5d, shared obj external function -! (put in separate file bn_ef_v5d_strings) - -sh mode stupid - MODE STATE ARGUMENT - STUPID CANCELED -cancel mode stupid ! for testing in double precision - - -! some test files -sp rm -f *.str_test *.string_tst -sp touch dummy1.str_test dummy2.str_test dummy3.str_test dummy4.str_test dummy5.str_test dummy6.str_test dummy7.str_test dummy8.str_test dummy9.str_test -sp touch dummy1.string_tst dummy2.string_tst dummy3.string_tst dummy4.string_tst dummy5.string_tst dummy6.string_tst dummy7.string_tst dummy8.string_tst - -cancel data/all - -let a = "testa.v5d" -list a - VARIABLE : "testa.v5d" - "testa.v5d" - -let b = "goodbye" -list a,b - Column 1: A is "testa.v5d" - Column 2: B is "goodbye" - A B -I / *: "testa.v5d" "goodbye" - -let a = {"hello","goodbye", "wave to me"} -list a - VARIABLE : {"hello","goodbye", "wave to me"} - SUBSET : 3 points (X) - 1 / 1:"hello" - 2 / 2:"goodbye" - 3 / 3:"wave to me" -list a[i=2:3] - VARIABLE : {"hello","goodbye", "wave to me"} - SUBSET : 2 points (X) - 2 / 2:"goodbye" - 3 / 3:"wave to me" -list/order=x a[i=2:3] - VARIABLE : {"hello","goodbye", "wave to me"} - SUBSET : 2 points (X) - 2 3 - 2 3 - "goodbye" "wave to me" - -let e = {,"string1",, "string2"} -list e - VARIABLE : {,"string1",, "string2"} - SUBSET : 4 points (X) - 1 / 1:"" - 2 / 2:"string1" - 3 / 3:"" - 4 / 4:"string2" - -list {"string","s2","very long string"},5 - X: 0.5 to 3.5 - Column 1: {"string","s2","very long string"} - Column 2: cnst is constant - {"string cnst -1 / 1: "string" 5.00000 -2 / 2: "s2" 5.00000 -3 / 3: "very long string" 5.00000 - -set mode ignore - let e = {"string1" "string2"} - list e - let e = {,"string1",5, "string2"} - list e -set mode/last ignore - -* mixed single and double quotes -list/nohead {",a",',b'} - 1 / 1:",a" - 2 / 2:",b" -list/nohead {'"'}, {"'"} -I / *: """ "'" - -let d = {"INITIALIZE", spawn:"ls *.str_test", "INSERT", spawn:"ls *.string_tst"} -list d - VARIABLE : {"INITIALIZE", SPAWN:"ls *.str_test", "INSERT", SPAWN:"ls *.string_tst"} - SUBSET : 19 points (X) - 1 / 1:"INITIALIZE" - 2 / 2:"dummy1.str_test" - 3 / 3:"dummy2.str_test" - 4 / 4:"dummy3.str_test" - 5 / 5:"dummy4.str_test" - 6 / 6:"dummy5.str_test" - 7 / 7:"dummy6.str_test" - 8 / 8:"dummy7.str_test" - 9 / 9:"dummy8.str_test" - 10 / 10:"dummy9.str_test" - 11 / 11:"INSERT" - 12 / 12:"dummy1.string_tst" - 13 / 13:"dummy2.string_tst" - 14 / 14:"dummy3.string_tst" - 15 / 15:"dummy4.string_tst" - 16 / 16:"dummy5.string_tst" - 17 / 17:"dummy6.string_tst" - 18 / 18:"dummy7.string_tst" - 19 / 19:"dummy8.string_tst" -stat d - - {"INITIALIZE", SPAWN:"ls *.str_test", "INSERT", SPAWN:"ls *.string_tst"} - X: 0.5 to 19.5 - Y: N/A - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - Total # of strings: 19 (19*1*1*1*1*1) - Maximum string length: 17 -load d - -set mode ignore - plot d - define axis/x xax = d -set mode/last ignore - -! netCDF file IO -let a = {"hello"} ! note - a is an array of length 1 -save/clobber/file=test_string.cdf a -canc var a -use test_string -sh dat test_string - currently SET data sets: - 1> ./test_string.cdf (default) - name title I J K L - A {"hello"} 1:1 ... ... ... - -list a - VARIABLE : {"hello"} - FILENAME : test_string.cdf - X : 1 - "hello" -canc data test_string - -let b = "one line of text" ! note - b is scalar -save/clobber/file=test_string.cdf b -canc var b -use test_string -sh dat test_string - currently SET data sets: - 1> ./test_string.cdf (default) - name title I J K L - B "one line of text" ... ... ... ... - -list b - VARIABLE : "one line of text" - FILENAME : test_string.cdf - "one line of text" -canc data test_string - -let a = {"hello","goodbye", "wave to me"} -let b = "one line of text" -save/clobber/file=test_string.cdf a,b -sp echo "bn_strings.jnl --- 1 original file" >> all_ncdump.out -sp ncdump test_string.cdf >> all_ncdump.out -save/append/file=test_string.cdf d -let b2 = "two line of text" ! the same string length as b -sp echo "bn_strings.jnl --- 2 append to file" >> all_ncdump.out -save/append/file=test_string.cdf b2 -canc var/all -use test_string.cdf -show data test_string - currently SET data sets: - 1> ./test_string.cdf (default) - name title I J K L - A {"hello","goodbye", "wave to me 1:3 ... ... ... - B "one line of text" ... ... ... ... - D {"INITIALIZE", SPAWN:"ls *.str_ 1:19 ... ... ... - B2 "two line of text" ... ... ... ... - -list/nohead a - 1 / 1:"hello" - 2 / 2:"goodbye" - 3 / 3:"wave to me" -list/nohead b - "one line of text" - -set var/title="partial filename list" d -save/clobber/file=test_string2.cdf/heading=enhanced d[i=2:5] -sp mv test_string2.cdf test_string.cdf -sp echo "bn_strings.jnl --- 3 enhanced heading" >> all_ncdump.out -sp ncdump test_string.cdf >> all_ncdump.out -canc data/all -use test_string -show data test_string - currently SET data sets: - 1> ./test_string.cdf (default) - name title I J K L - D partial filename list 2:5 ... ... ... - -list d - VARIABLE : partial filename list - FILENAME : test_string.cdf - SUBSET : 4 points (X) - 2 / 2:"dummy1.str_test" - 3 / 3:"dummy2.str_test" - 4 / 4:"dummy3.str_test" - 5 / 5:"dummy4.str_test" - -! regridding tests -let a = {spawn:"ls *.str_test"} -list a - VARIABLE : {SPAWN:"ls *.str_test"} - SUBSET : 9 points (X) - 1 / 1:"dummy1.str_test" - 2 / 2:"dummy2.str_test" - 3 / 3:"dummy3.str_test" - 4 / 4:"dummy4.str_test" - 5 / 5:"dummy5.str_test" - 6 / 6:"dummy6.str_test" - 7 / 7:"dummy7.str_test" - 8 / 8:"dummy8.str_test" - 9 / 9:"dummy9.str_test" -define axis/x=0.1:0.7:.1 xasn -list a[gx=xasn@asn] - VARIABLE : {SPAWN:"ls *.str_test"} - regrid: 0.1 delta on X@ASN - SUBSET : 7 points (X) - 0.1 / 1:"dummy1.str_test" - 0.2 / 2:"dummy2.str_test" - 0.3 / 3:"dummy3.str_test" - 0.4 / 4:"dummy4.str_test" - 0.5 / 5:"dummy5.str_test" - 0.6 / 6:"dummy6.str_test" - 0.7 / 7:"dummy7.str_test" -define axis/x=1:6:.5 xxact -list a[gx=xxact@xact] - VARIABLE : {SPAWN:"ls *.str_test"} - regrid: 0.5 delta on X@XACT - SUBSET : 11 points (X) - 1 / 1:"dummy1.str_test" - 1.5 / 2:"" - 2 / 3:"dummy2.str_test" - 2.5 / 4:"" - 3 / 5:"dummy3.str_test" - 3.5 / 6:"" - 4 / 7:"dummy4.str_test" - 4.5 / 8:"" - 5 / 9:"dummy5.str_test" - 5.5 / 10:"" - 6 / 11:"dummy6.str_test" -define axis/x=1:6:.4 xnrst -list a[gx=xnrst@nrst] - VARIABLE : {SPAWN:"ls *.str_test"} - regrid: 0.4 delta on X@NRST - SUBSET : 14 points (X) - 1 / 1:"dummy1.str_test" - 1.4 / 2:"dummy1.str_test" - 1.8 / 3:"dummy2.str_test" - 2.2 / 4:"dummy2.str_test" - 2.6 / 5:"dummy3.str_test" - 3 / 6:"dummy3.str_test" - 3.4 / 7:"dummy3.str_test" - 3.8 / 8:"dummy4.str_test" - 4.2 / 9:"dummy4.str_test" - 4.6 / 10:"dummy5.str_test" - 5 / 11:"dummy5.str_test" - 5.4 / 12:"dummy5.str_test" - 5.8 / 13:"dummy6.str_test" - 6.2 / 14:"dummy6.str_test" -set mode ignore - list a[gx=xnrst] - list a[gx=xnrst@ave] - list a[gx=xnrst@var] - list a[gx=xnrst@ngd] - list a[gx=xnrst@max] - list a[gx=xnrst@sum] - set axis/modulo xnrst - list a[gx=xnrst@mod] -set mode/last ignore - -! functions returning strings -list/nohead xsequence({"a","b","c","d","e"}) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"c" - 4 / 4:"d" - 5 / 5:"e" -sh grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid XABSTRACT - GRID XABSTRACT - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 full - normal Y - normal Z - normal T -list/nohead ysequence({"a","b","c","d","e"}) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"c" - 4 / 4:"d" - 5 / 5:"e" -sh grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid YABSTRACT - GRID YABSTRACT - name axis # pts start end subset - normal X - ABSTRACT Y 99999999 r 1 1.E+08 full - normal Z - normal T -list/nohead zsequence({"a","b","c","d","e"}) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"c" - 4 / 4:"d" - 5 / 5:"e" -sh grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid ZABSTRACT - GRID ZABSTRACT - name axis # pts start end subset - normal X - normal Y - ABSTRACT Z 99999999 r 1 1.E+08 full - normal T -list/nohead tsequence({"a","b","c","d","e"}) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"c" - 4 / 4:"d" - 5 / 5:"e" -sh grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid TABSTRACT - GRID TABSTRACT - name axis # pts start end subset - normal X - normal Y - normal Z - ABSTRACT T 99999999 r 1 1.E+08 full -let a = TSEQUENCE({"a","b","c","d","e"}) -list/l=2:3 a - VARIABLE : TSEQUENCE({"a","b","c","d","e"}) - SUBSET : 2 points (T) - 2 / 2:"b" - 3 / 3:"c" - -list/nohead {"a",,"b"} - 1 / 1:"a" - 2 / 2:"" - 3 / 3:"b" -list/nohead samplei({"a","b",,"d","e","f"},{3,2,,1}) - 1 / 1:"" - 2 / 2:"b" - 3 / 3:"" - 4 / 4:"a" -list/nohead samplej(YSEQUENCE({"a","b",,"d","e","f"}),{3,2,,1}) - 1 / 1:"" - 2 / 2:"b" - 3 / 3:"" - 4 / 4:"a" -list/nohead samplek(ZSEQUENCE({"a","b",,"d","e","f"}),{3,2,,1}) - 1 / 1:"" - 2 / 2:"b" - 3 / 3:"" - 4 / 4:"a" -list/nohead samplel(TSEQUENCE({"a","b",,"d","e","f"}),{3,2,,1}) - 1 / 1:"" - 2 / 2:"b" - 3 / 3:"" - 4 / 4:"a" - -let a = {"a",," ",""} -let b = samplej(YSEQUENCE({"a","b",,"d","e","f"}),{2,,1}) -save/clobber/file=foo.cdf a,b -sp echo "bn_strings.jnl --- 4 sample and ysequence functions on string var" >> all_ncdump.out -sp ncdump foo.cdf >> all_ncdump.out - -let a = RESHAPE({"a","b",,"d","e","f"},I[i=1:3]+j[j=1:2]) -list a - VARIABLE : RESHAPE({"a","b",,"d","e","f"},I[I=1:3]+J[J=1:2]) - SUBSET : 3 by 2 points (X-Y) - 1 2 3 - 1 2 3 - 1 / 1:"a""b""" - 2 / 2:"d""e""f" -list/i=2:3 a - VARIABLE : RESHAPE({"a","b",,"d","e","f"},I[I=1:3]+J[J=1:2]) - SUBSET : 2 by 2 points (X-Y) - 2 3 - 2 3 - 1 / 1:"b""" - 2 / 2:"e""f" -list reshape(a,I[I=1:2]+J[J=1:3]) - VARIABLE : RESHAPE(A,I[I=1:2]+J[J=1:3]) - SUBSET : 2 by 3 points (X-Y) - 1 2 - 1 2 - 1 / 1:"a""b" - 2 / 2:"" "d" - 3 / 3:"e""f" -list reshape(a,I[I=1:3]+J[J=1:3]) - VARIABLE : RESHAPE(A,I[I=1:3]+J[J=1:3]) - SUBSET : 3 by 2 points (X-Y) - 1 2 3 - 1 2 3 - 1 / 1:"a""b""" - 2 / 2:"d""e""f" -list reshape(a,I[I=1:1]+J[J=1:3]) - VARIABLE : RESHAPE(A,I[I=1:1]+J[J=1:3]) - SUBSET : 3 points (Y) - X : 1 - 1 - 1 - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"" - -! logical operators applied to strings -list {"a","b","c"} EQ YSEQUENCE({"A","B","C"}) ! case insensitive - VARIABLE : {"a","b","c"} EQ YSEQUENCE({"A","B","C"}) - SUBSET : 3 by 3 points (X-Y) - 1 2 3 - 1 2 3 - 1 / 1: 1.00000 0.00000 0.00000 - 2 / 2: 0.00000 1.00000 0.00000 - 3 / 3: 0.00000 0.00000 1.00000 -list {"a","b","c"} NE YSEQUENCE({"a","B","c"}) - VARIABLE : {"a","b","c"} NE YSEQUENCE({"a","B","c"}) - SUBSET : 3 by 3 points (X-Y) - 1 2 3 - 1 2 3 - 1 / 1: 0.00000 1.00000 1.00000 - 2 / 2: 1.00000 0.00000 1.00000 - 3 / 3: 1.00000 1.00000 0.00000 -list/nohead "b" LT {"a","b","c"} - 1 / 1: 0.00000 - 2 / 2: 0.00000 - 3 / 3: 1.00000 -list/nohead "b" LE {"a","b","c"} - 1 / 1: 0.00000 - 2 / 2: 1.00000 - 3 / 3: 1.00000 -list/nohead "b" EQ {"a","b","c"} - 1 / 1: 0.00000 - 2 / 2: 1.00000 - 3 / 3: 0.00000 -list/nohead "b" GE {"a","b","c"} - 1 / 1: 1.00000 - 2 / 2: 1.00000 - 3 / 3: 0.00000 -list/nohead "b" GT {"a","b","c"} - 1 / 1: 1.00000 - 2 / 2: 0.00000 - 3 / 3: 0.00000 - -! special hacks allow "+" to be a concatenation operator -list/nohead "hello" + ", friend" - "hello, friend" -list/nohead {"hello","goodbye"}+", "+YSEQUENCE({"old","new"})+" "+"friend" - 1 / 1:"hello, old friend" "goodbye, old friend" - 2 / 2:"hello, new friend" "goodbye, new friend" -list/nohead SAMPLEI(XSEQUENCE({"hello","goodbye"}+", "+YSEQUENCE({"old","new"})+" "+"friend"), {2,3}) - 1 / 1:"goodbye, old friend" - 2 / 2:"hello, new friend" - -! special hacks allow IF-THEN-ELSE to apply to strings -list/nohead if {0,1} THEN "hello" - 1 / 1:"" - 2 / 2:"hello" -list/nohead if {0,1} THEN "hello" ELSE "goodbye" - 1 / 1:"goodbye" - 2 / 2:"hello" -list/nohead ysequence({"now","then"})+", " + (if {0,1} THEN "hello"+", ") + "friend" - 1 / 1:"now, friend" "now, hello, friend" - 2 / 2:"then, friend" "then, hello, friend" -list/nohead ysequence({"now","then"})+", " + (if {0,1} THEN "hello"+", " ELSE "goodbye"+", my ") + "friend" - 1 / 1:"now, goodbye, my friend" "now, hello, friend" - 2 / 2:"then, goodbye, my friend""then, hello, friend" - -SET MODE IGNORE -! list/nohead ysequence({98, 99})+", " + (if {0,1} THEN "hello"+", " ELSE "goodbye"+", my ") + "friend" -list/nohead ysequence({"now","then"})+", " + (if {0,1} THEN "hello"+99 ELSE "goodbye"+", my ") + "friend" - 1 / 1:........ - 2 / 2:........ -list/nohead ysequence({"now","then"})+", " + (if {0,1} THEN "hello"+", " ELSE "goodbye"+99) + "friend" - 1 / 1:........ - 2 / 2:........ -list/nohead ysequence({"now","then"})+", " + (if {0,1} THEN "hello"+", " ELSE "goodbye"+", my ") + 99 - 1 / 1:........ - 2 / 2:........ - -! numerical operators applied to strings - -list/nohead "b" - {"a","b"} -list/nohead "b" * {"a","b"} -list/nohead "b" / {"a","b"} -list/nohead "b" ^ {"a","b"} -list/nohead {"a","b"} + 1 - 1 / 1:.... - 2 / 2:.... -list/nohead 1 + {"a","b"} - 1 / 1:.... - 2 / 2:.... -list/nohead 1 - {"a","b"} - 1 / 1:.... - 2 / 2:.... -list/nohead SIN({"a","b","c"}) -list/nohead MAX("a",{"a","b","c"}) -list/nohead MAX(1,{"a","b","c"}) - 1 / 1:.... - 2 / 2:.... - 3 / 3:.... - -CANCEL MODE IGNORE - -! transformations applied to strings -let a = {"a","b","c","d"} -list a[i=@shf] - VARIABLE : {"a","b","c","d"} - shifted by 1 pts on X - SUBSET : 4 points (X) - 1 / 1:"b" - 2 / 2:"c" - 3 / 3:"d" - 4 / 4:"" -list a[i=@shf:-1] - VARIABLE : {"a","b","c","d"} - shifted by -1 pts on X - SUBSET : 4 points (X) - 1 / 1:"" - 2 / 2:"a" - 3 / 3:"b" - 4 / 4:"c" -list a[i=@ave] - VARIABLE : {"a","b","c","d"} - X : 0.5 to 4.5 (averaged) - "" -list a[i=@sbx] - VARIABLE : {"a","b","c","d"} - box smoothed by 3 pts on X - SUBSET : 4 points (X) - 1 / 1:"" - 2 / 2:"" - 3 / 3:"" - 4 / 4:"" -list a[i=@rsum] - VARIABLE : {"a","b","c","d"} - running sum on X - SUBSET : 4 points (X) - 1 / 1:"" - 2 / 2:"" - 3 / 3:"" - 4 / 4:"" - -set mode/last stupid - -GO bn_reset bn_axcontrol -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axcontrol -GO bn_axcontrol - ! NOAA/PMEL TMAP - ! Program FERRET (alpha) - ! Version 5.33 - 07/12/01 - ! 12-Jul-01 14:47 - -define axis/t=1-jan-0001:20-jan-0001:1 begtime -let tpts = t[gt=begtime] -set view ul -plot/axes=1,0,0,1 sin(tpts/15) - -set view ur -plot/axes=1,0,0,1/trans sin(tpts/15) - -set view ll -plot/axes/trans sin(tpts/15) - -set view lr -plot/noaxes sin(tpts/15) - -! contour shade and fill, with /TRANS - -use coads_climatology -set view ul -contour/l=1/axes=0,1,1,0 sst - -set view ur -shade/l=1/axes=1,0,1,0/trans sst - -set view ll -contour/l=1/axes=0,0,0,0/trans sst - -set view lr -fill/l=1/axes sst - -! polygon - -can view -polygon/thick/color=red/palette=blue/axes=1,0,1,0 {1,2,1}, {2,1,0.5} - -GO bn_reset bn_vec_curv -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_vec_curv -GO bn_vec_curv -! bn_vec_curv.jnl -! -! vector plots with curvilinear coordinates -! -! ACM 10/23/01 -! 9/12/02 vary the lengths of the vectors in 1st two plots. -! ACM 4/2005 set mode meta to save one of the plots for the metafile checks. -! and cancel mode logo, so that .plt files are comparable. -! 2/18 *acm* keep mode logo turned off - -set mode meta vec_curv.plt -use coads_climatology -set reg/l=1 -go mp_orthographic 230 60 -set grid sst -go mp_aspect - -let yy = if abs(y[gt=sst]) le 20 then 10 else (100-abs(y[gt=sst]+1))/ 10. - -vec/noax/xskip=6/yskip=6/len=20/title="View From Space" sst*0,(sst*0+yy)*mp_mask, x_page,y_page -vec/over/xskip=6/yskip=6/len=20 (sst*0+yy)*mp_mask,sst*0, x_page,y_page -vec/over/xskip=6/yskip=6/color=blue/len=20 (sst*0+yy)*mp_mask,(sst*0+yy)*mp_mask, x_page,y_page - -can mode meta - -! Sinusoidal projection; put data at the poles - -use coads_climatology -go mp_sinusoidal -set grid sst -go mp_aspect - -let fsst = missing(sst,5) -let yy = if abs(y[gt=sst]) le 20 then 10 else (100-abs(y[gt=sst]+1))/ 10. - -set reg/l=1 -vec/noax/xskip=16/yskip=8/len=15/title="Sinusoidal Projection" fsst*0,fsst*0+yy*mp_mask, x_page,y_page -vec/over/xskip=16/yskip=8/len=15 fsst*0+yy*mp_mask,fsst*0, x_page,y_page - -! Irregular axes, and manual axis scaling -set win/asp=1 -set mode meta vec_curv2.plt - -def axis/from_data/x/name=xirr {0,1,2,4,6,7,8,10,14,16,20,23,24} -def axis/from_data/y/name=yirr {0,2,4,5,6,7,8,9,12,13,14,15,18} -let a = 0.1*x[gx=xirr] + 4*y[gy=yirr] -let b = 3*x[gx=xirr] + y[gy=yirr] -set view ul -vec a,b - -! project it to a regular grid -let mx = i[i=1:13] -let my = j[j=1:13] -let mxpage = mx + 0*my -let mypage = my+0*mx -set view ll -vec/title="Regular grid" a,b,mxpage,mypage - -! Now stretch the grid - -set view lr -let mx = exp(x[x=2:4.4:0.2]) -let my = exp(y[y=1:3.4:0.2]) - -let mxpage = mx + 0*my -let mypage = my + 0*mx -vec/title="Stretched grid" a,b,mxpage,mypage - -can mode meta - -GO bn_reset bn_delimited_read -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_delimited_read -GO bn_delimited_read -! bn_delimited_read.jnl -! 10/01 *sh* - -! test delimiited (spreadsheet) reads in Ferret - -! look at the file -spawn cat data/bn_delimited_read_1.dat -col1,col2,col3,col4,col5 -one,,1.1,24S,130E,,1e1,"word 1" - two,,2.2,24N,130W,2S,,"word 2" -three,,3.3,24,130,3N,3e-2," wd 3 " - -five,,4.4,-24,-130,91, -4e2 , "word 4" , aa , 77 -extra line - -! try the file as-is: record 1 contains 5 column headings (text) -! so V1 through V5 analyze to be text -file/format=delim bn_delimited_read_1.dat -show data/var - currently SET data sets: - 1> ./data/bn_delimited_read_1.dat (default) - - name title I J K L - V1 V1 1:7 ... ... ... - Data type = TEXT - Conversion /TYPE=TEXT - on grid (G023) with -1.E+34 for missing data - X=0.5:7.5 - V2 V2 1:7 ... ... ... - Data type = TEXT - Conversion /TYPE=TEXT - on grid (G023) with -1.E+34 for missing data - X=0.5:7.5 - V3 V3 1:7 ... ... ... - Data type = TEXT - Conversion /TYPE=TEXT - on grid (G023) with -1.E+34 for missing data - X=0.5:7.5 - V4 V4 1:7 ... ... ... - Data type = TEXT - Conversion /TYPE=TEXT - on grid (G023) with -1.E+34 for missing data - X=0.5:7.5 - V5 V5 1:7 ... ... ... - Data type = TEXT - Conversion /TYPE=TEXT - on grid (G023) with -1.E+34 for missing data - X=0.5:7.5 - V6 V6 1:7 ... ... ... - Data type = TEXT - Conversion /TYPE=TEXT - on grid (G023) with -1.E+34 for missing data - X=0.5:7.5 - V7 V7 1:7 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G023) with -1.E+34 for missing data - X=0.5:7.5 - V8 V8 1:7 ... ... ... - Data type = TEXT - Conversion /TYPE=TEXT - on grid (G023) with -1.E+34 for missing data - X=0.5:7.5 - V9 V9 1:7 ... ... ... - Data type = TEXT - Conversion /TYPE=TEXT - on grid (G023) with -1.E+34 for missing data - X=0.5:7.5 - V10 V10 1:7 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G023) with -1.E+34 for missing data - X=0.5:7.5 - - /DELIMITERS="\t,\," -list v1,v2,v3,v4,v5,v6,v7,v8,v9,v10 - DATA SET: ./data/bn_delimited_read_1.dat - X: 0.5 to 7.5 - Column 1: V1 - Column 2: V2 - Column 3: V3 - Column 4: V4 - Column 5: V5 - Column 6: V6 - Column 7: V7 - Column 8: V8 - Column 9: V9 - Column 10: V10 - V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 -1 / 1: "col1" "col2" "col3" "col4" "col5" " " .... " " " " .... -2 / 2: "one" " " "1.1" "24S" "130E" " " 10.000 "word 1" " " .... -3 / 3: "two" " " "2.2" "24N" "130W" "2S" .... "word 2" " " .... -4 / 4: "three" " " "3.3" "24" "130" "3N" 0.030 " wd 3 " " " .... -5 / 5: " " " " " " " " " " " " .... " " " " .... -6 / 6: "five" " " "4.4" "-24" "-130" "91" -400.000 "word 4" "aa" 77.0000 -7 / 7: "extra line" " " " " " " " " " " .... " " " " .... - -! manually name the variables while still automatically analyzing data types -file/format=delim/var=a1,a2,a3,a4,a5,a6,a7 bn_delimited_read_1.dat -list a1,a2,a3,a4,a5,a6,a7 - DATA SET: ./data/bn_delimited_read_1.dat - X: 0.5 to 7.5 - Column 1: A1 is a1 - Column 2: A2 is a2 - Column 3: A3 is a3 - Column 4: A4 is a4 - Column 5: A5 is a5 - Column 6: A6 is a6 - Column 7: A7 is a7 - A1 A2 A3 A4 A5 A6 A7 -1 / 1: "col1" "col2" "col3" "col4" "col5" " " .... -2 / 2: "one" " " "1.1" "24S" "130E" " " 10.000 -3 / 3: "two" " " "2.2" "24N" "130W" "2S" .... -4 / 4: "three" " " "3.3" "24" "130" "3N" 0.030 -5 / 5: " " " " " " " " " " " " .... -6 / 6: "five" " " "4.4" "-24" "-130" "91" -400.000 -7 / 7: "extra line" " " " " " " " " " " .... - -! skip the first record to do a better "analysis" of the file fields -! note that v3 is correctly analyzed as numeric -file/format=delim/skip=1 bn_delimited_read_1.dat -list v1,v2,v3,v4,v5,v6,v7,v8,v9,v10 - DATA SET: ./data/bn_delimited_read_1.dat - X: 0.5 to 6.5 - Column 1: V1 - Column 2: V2 is V2 (all values missing) - Column 3: V3 - Column 4: V4 is V4 (degrees_north)(Latitude) - Column 5: V5 is V5 (degrees_east)(Longitude) - Column 6: V6 - Column 7: V7 - Column 8: V8 - Column 9: V9 - Column 10: V10 - V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 -1 / 1: "one" .... 1.10000 -24.0000 130.000 " " 10.000 "word 1" " " .... -2 / 2: "two" .... 2.20000 24.0000 -130.000 "2S" .... "word 2" " " .... -3 / 3: "three" .... 3.30000 24.0000 130.000 "3N" 0.030 " wd 3 " " " .... -4 / 4: " " .... .... .... .... " " .... " " " " .... -5 / 5: "five" .... 4.40000 -24.0000 -130.000 "91" -400.000 "word 4" "aa" 77.0000 -6 / 6: "extra line" .... .... .... .... " " .... " " " " .... - -! insist that all columns be treated as string -file/format=delim/skip=1/type=text bn_delimited_read_1.dat -list v1,v2,v3,v4,v5,v6,v7,v8,v9,v10 - DATA SET: ./data/bn_delimited_read_1.dat - X: 0.5 to 6.5 - Column 1: V1 - Column 2: V2 - Column 3: V3 - Column 4: V4 - Column 5: V5 - Column 6: V6 - Column 7: V7 - Column 8: V8 - Column 9: V9 - Column 10: V10 - V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 -1 / 1: "one" " " "1.1" "24S" "130E" " " "1e1" "word 1" " " " " -2 / 2: "two" " " "2.2" "24N" "130W" "2S" " " "word 2" " " " " -3 / 3: "three" " " "3.3" "24" "130" "3N" "3e-2" " wd 3 " " " " " -4 / 4: " " " " " " " " " " " " " " " " " " " " -5 / 5: "five" " " "4.4" "-24" "-130" "91" "-4e2" "word 4" "aa" "77" -6 / 6: "extra line" " " " " " " " " " " " " " " " " " " - -! insist that all columns be treated as string and name the columns -file/format=delim/skip=1/type=text/var=a1,a2,a3,a4,a5 bn_delimited_read_1.dat -show data - currently SET data sets: - 1> ./data/bn_delimited_read_1.dat (default) - name title I J K L - A1 a1 1:6 ... ... ... - A2 a2 1:6 ... ... ... - A3 a3 1:6 ... ... ... - A4 a4 1:6 ... ... ... - A5 a5 1:6 ... ... ... - -list a1,a2,a3,a4,a5 - DATA SET: ./data/bn_delimited_read_1.dat - X: 0.5 to 6.5 - Column 1: A1 is a1 - Column 2: A2 is a2 - Column 3: A3 is a3 - Column 4: A4 is a4 - Column 5: A5 is a5 - A1 A2 A3 A4 A5 -1 / 1: "one" " " "1.1" "24S" "130E" -2 / 2: "two" " " "2.2" "24N" "130W" -3 / 3: "three" " " "3.3" "24" "130" -4 / 4: " " " " " " " " " " -5 / 5: "five" " " "4.4" "-24" "-130" -6 / 6: "extra line" " " " " " " " " - -! insist that all columns be treated as numeric -file/format=delim/skip=1/type=numeric bn_delimited_read_1.dat -list v1,v2,v3,v4,v5,v6,v7,v8,v9,v10 - DATA SET: ./data/bn_delimited_read_1.dat - X: 0.5 to 6.5 - Column 1: V1 - Column 2: V2 - Column 3: V3 - Column 4: V4 - Column 5: V5 - Column 6: V6 - Column 7: V7 - Column 8: V8 - Column 9: V9 - Column 10: V10 - V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 -1 / 1: .... .... 1.10000 .... .... .... 10.000 .... .... .... -2 / 2: .... .... 2.20000 .... .... .... .... .... .... .... -3 / 3: .... .... 3.30000 24.0000 130.000 .... 0.030 .... .... .... -4 / 4: .... .... .... .... .... .... .... .... .... .... -5 / 5: .... .... 4.40000 -24.0000 -130.000 91.0000 -400.000 .... .... 77.0000 -6 / 6: .... .... .... .... .... .... .... .... .... .... - -! insist that all columns be treated as latitude -file/format=delim/skip=1/type=latitude bn_delimited_read_1.dat -list v1,v2,v3,v4,v5,v6,v7,v8,v9,v10 - DATA SET: ./data/bn_delimited_read_1.dat - X: 0.5 to 6.5 - Column 1: V1 is V1 (degrees_north)(Latitude) - Column 2: V2 is V2 (degrees_north)(Latitude) - Column 3: V3 is V3 (degrees_north)(Latitude) - Column 4: V4 is V4 (degrees_north)(Latitude) - Column 5: V5 is V5 (degrees_north)(Latitude) - Column 6: V6 is V6 (degrees_north)(Latitude) - Column 7: V7 is V7 (degrees_north)(Latitude) - Column 8: V8 is V8 (degrees_north)(Latitude) - Column 9: V9 is V9 (degrees_north)(Latitude) - Column 10: V10 is V10 (degrees_north)(Latitude) - V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 -1 / 1: .... .... 1.10000 -24.0000 .... .... 10.000 .... .... .... -2 / 2: .... .... 2.20000 24.0000 .... -2.0000 .... .... .... .... -3 / 3: .... .... 3.30000 24.0000 130.000 3.0000 0.030 .... .... .... -4 / 4: .... .... .... .... .... .... .... .... .... .... -5 / 5: .... .... 4.40000 -24.0000 -130.000 91.0000 -400.000 .... .... 77.0000 -6 / 6: .... .... .... .... .... .... .... .... .... .... - -! read only the first line of the file -spawn head -1 data/bn_delimited_read_1.dat -col1,col2,col3,col4,col5 -define axis/x=1:1:1 x1 -define grid/x=x1 g1 -columns/grid=g1 bn_delimited_read_1.dat - ! note 10 columns because auto-analysis of file doesnt stop at 1st record -list v1,v2,v3,v4,v5,v6,v7,v8,v9,v10 - DATA SET: ./data/bn_delimited_read_1.dat - X: 1 - Column 1: V1 - Column 2: V2 - Column 3: V3 - Column 4: V4 - Column 5: V5 - Column 6: V6 - Column 7: V7 - Column 8: V8 - Column 9: V9 - Column 10: V10 - V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 -I / *: "col1" "col2" "col3" "col4" "col5" " " .... " " " " .... -columns/grid=g1/var=c1,c2,c3,c4,c5 bn_delimited_read_1.dat -list c1,c2,c3,c4,c5 - DATA SET: ./data/bn_delimited_read_1.dat - X: 1 - Column 1: C1 is c1 - Column 2: C2 is c2 - Column 3: C3 is c3 - Column 4: C4 is c4 - Column 5: C5 is c5 - C1 C2 C3 C4 C5 -I / *: "col1" "col2" "col3" "col4" "col5" - -! ========== -cancel data/all -! file using blank as a delimiter -! Note record 1 has blanks at end of record -! Note record of many blanks sandwiched in as record 2 -! (note prev. to 7/13/2016 the file had incorrect date formats with the year first. -! File replaced so it can be read after the fix for ticket 2449.) -file/form=delimited bn_delimited_read_2.dat -show data - currently SET data sets: - 1> ./data/bn_delimited_read_2.dat (default) - name title I J K L - V1 V1 1:3 ... ... ... - -file/form=delimited/delimiter=" " bn_delimited_read_2.dat -show data - currently SET data sets: - 1> ./data/bn_delimited_read_2.dat (default) - name title I J K L - V1 V1 1:3 ... ... ... - (Julian days since 1-Jan-1900) - V2 V2 1:3 ... ... ... - (Time of day) - V3 V3 1:3 ... ... ... - (all values missing) - -list v1,v2 - DATA SET: ./data/bn_delimited_read_2.dat - X: 0.5 to 3.5 - Column 1: V1 is V1 (days)(Julian days since 1-Jan-1900) - Column 2: V2 is V2 (hours)(Time of day) - V1 V2 -1 / 1: 29921.0 12.5833 -2 / 2: .... .... -3 / 3: -1790.0 13.7514 - -! ========== -! look at the date/time file -spawn cat data/bn_delimited_read_date_time.dat -12/1/99,1999-03-01,12:00, 13:45:36.5,12/1/99,1999-03-01,12:00, 13:45:36.5 -12/2/99,1999-03-02,01:00:13.5, 14:45:36.5,12/2/99,1999-03-02,01:00:13.5, 14:45:36.5 -12/3/99x,1999-03-03x,2:00x, 15:45x,12/3/99,1999-03-03,2:00, 15:45 -12/4/99,1999-03-04,03:00, 16:45:36.5, 12/4/99,1999-03-04,03:00, 16:45:36.5 - -! try the file as-is -! Note that record 3 has syntax errors in the first 4 fields -columns bn_delimited_read_date_time.dat -list v1,v2,v3,v4,v5,v6,v7,v8 - DATA SET: ./data/bn_delimited_read_date_time.dat - X: 0.5 to 4.5 - Column 1: V1 - Column 2: V2 - Column 3: V3 - Column 4: V4 - Column 5: V5 is V5 (days)(Julian days since 1-Jan-1900) - Column 6: V6 is V6 (days)(Julian days since 1-Jan-1900) - Column 7: V7 is V7 (hours)(Time of day) - Column 8: V8 is V8 (hours)(Time of day) - V1 V2 V3 V4 V5 V6 V7 V8 -1 / 1: "12/1/99" "1999-03-01" "12:00" "13:45:36.5" 36493.0 36218.0 12.0000 13.7601 -2 / 2: "12/2/99" "1999-03-02" "01:00:13.5" "14:45:36.5" 36494.0 36219.0 1.0037 14.7601 -3 / 3: "12/3/99x" "1999-03-03x" "2:00x" "15:45x" 36495.0 36220.0 2.0000 15.7500 -4 / 4: "12/4/99" "1999-03-04" "03:00" "16:45:36.5" 36496.0 36221.0 3.0000 16.7601 -show data 2 - currently SET data sets: - 2> ./data/bn_delimited_read_date_time.dat (default) - name title I J K L - V1 V1 1:4 ... ... ... - V2 V2 1:4 ... ... ... - V3 V3 1:4 ... ... ... - V4 V4 1:4 ... ... ... - V5 V5 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V6 V6 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V7 V7 1:4 ... ... ... - (Time of day) - V8 V8 1:4 ... ... ... - (Time of day) - - -! sanity check date encodings -define axis/t/units=days/T0=1-jan-1900 tax = v5 -show axis tax - name axis # pts start end - TAX TIME 4 r 01-DEC-1999 00:00 04-DEC-1999 00:00 -T0 = 1-JAN-1900 - Axis span (to cell edges) = 4 -define axis/t/units=days/T0=1-jan-1900 tax = v6 -show axis tax - name axis # pts start end - TAX TIME 4 r 01-MAR-1999 00:00 04-MAR-1999 00:00 -T0 = 1-JAN-1900 - Axis span (to cell edges) = 4 - -columns/type=date bn_delimited_read_date_time.dat -list v1,v2,v3,v4,v5,v6,v7,v8 - DATA SET: ./data/bn_delimited_read_date_time.dat - X: 0.5 to 4.5 - Column 1: V1 is V1 (days)(Julian days since 1-Jan-1900) - Column 2: V2 is V2 (days)(Julian days since 1-Jan-1900) - Column 3: V3 is V3 (days)(Julian days since 1-Jan-1900) - Column 4: V4 is V4 (days)(Julian days since 1-Jan-1900) - Column 5: V5 is V5 (days)(Julian days since 1-Jan-1900) - Column 6: V6 is V6 (days)(Julian days since 1-Jan-1900) - Column 7: V7 is V7 (days)(Julian days since 1-Jan-1900) - Column 8: V8 is V8 (days)(Julian days since 1-Jan-1900) - V1 V2 V3 V4 V5 V6 V7 V8 -1 / 1: 36493.0 36218.0 .... .... 36493.0 36218.0 .... .... -2 / 2: 36494.0 36219.0 .... .... 36494.0 36219.0 .... .... -3 / 3: .... .... .... .... 36495.0 36220.0 .... .... -4 / 4: 36496.0 36221.0 .... .... 36496.0 36221.0 .... .... -show data 2 - currently SET data sets: - 2> ./data/bn_delimited_read_date_time.dat (default) - name title I J K L - V1 V1 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V2 V2 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V3 V3 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V4 V4 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V5 V5 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V6 V6 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V7 V7 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V8 V8 1:4 ... ... ... - (Julian days since 1-Jan-1900) - - -columns/type=time bn_delimited_read_date_time.dat -list v1,v2,v3,v4,v5,v6,v7,v8 - DATA SET: ./data/bn_delimited_read_date_time.dat - X: 0.5 to 4.5 - Column 1: V1 is V1 (hours)(Time of day) - Column 2: V2 is V2 (hours)(Time of day) - Column 3: V3 is V3 (hours)(Time of day) - Column 4: V4 is V4 (hours)(Time of day) - Column 5: V5 is V5 (hours)(Time of day) - Column 6: V6 is V6 (hours)(Time of day) - Column 7: V7 is V7 (hours)(Time of day) - Column 8: V8 is V8 (hours)(Time of day) - V1 V2 V3 V4 V5 V6 V7 V8 -1 / 1: .... .... 12.0000 13.7601 .... .... 12.0000 13.7601 -2 / 2: .... .... 1.0037 14.7601 .... .... 1.0037 14.7601 -3 / 3: .... .... .... .... .... .... 2.0000 15.7500 -4 / 4: .... .... 3.0000 16.7601 .... .... 3.0000 16.7601 -show data 2 - currently SET data sets: - 2> ./data/bn_delimited_read_date_time.dat (default) - name title I J K L - V1 V1 1:4 ... ... ... - (Time of day) - V2 V2 1:4 ... ... ... - (Time of day) - V3 V3 1:4 ... ... ... - (Time of day) - V4 V4 1:4 ... ... ... - (Time of day) - V5 V5 1:4 ... ... ... - (Time of day) - V6 V6 1:4 ... ... ... - (Time of day) - V7 V7 1:4 ... ... ... - (Time of day) - V8 V8 1:4 ... ... ... - (Time of day) - - -columns/type="da,dat,ti,tim,date, date, time, time" bn_delimited_read_date_time.dat -list v1,v2,v3,v4,v5,v6,v7,v8 - DATA SET: ./data/bn_delimited_read_date_time.dat - X: 0.5 to 4.5 - Column 1: V1 is V1 (days)(Julian days since 1-Jan-1900) - Column 2: V2 is V2 (days)(Julian days since 1-Jan-1900) - Column 3: V3 is V3 (hours)(Time of day) - Column 4: V4 is V4 (hours)(Time of day) - Column 5: V5 is V5 (days)(Julian days since 1-Jan-1900) - Column 6: V6 is V6 (days)(Julian days since 1-Jan-1900) - Column 7: V7 is V7 (hours)(Time of day) - Column 8: V8 is V8 (hours)(Time of day) - V1 V2 V3 V4 V5 V6 V7 V8 -1 / 1: 36493.0 36218.0 12.0000 13.7601 36493.0 36218.0 12.0000 13.7601 -2 / 2: 36494.0 36219.0 1.0037 14.7601 36494.0 36219.0 1.0037 14.7601 -3 / 3: .... .... .... .... 36495.0 36220.0 2.0000 15.7500 -4 / 4: 36496.0 36221.0 3.0000 16.7601 36496.0 36221.0 3.0000 16.7601 -show data 2 - currently SET data sets: - 2> ./data/bn_delimited_read_date_time.dat (default) - name title I J K L - V1 V1 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V2 V2 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V3 V3 1:4 ... ... ... - (Time of day) - V4 V4 1:4 ... ... ... - (Time of day) - V5 V5 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V6 V6 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V7 V7 1:4 ... ... ... - (Time of day) - V8 V8 1:4 ... ... ... - (Time of day) - - -columns/type="da,-,ti,-,date,-,time,-" bn_delimited_read_date_time.dat -list v1,v3,v5,v7 - DATA SET: ./data/bn_delimited_read_date_time.dat - X: 0.5 to 4.5 - Column 1: V1 is V1 (days)(Julian days since 1-Jan-1900) - Column 2: V3 is V3 (hours)(Time of day) - Column 3: V5 is V5 (days)(Julian days since 1-Jan-1900) - Column 4: V7 is V7 (hours)(Time of day) - V1 V3 V5 V7 -1 / 1: 36493.0 12.0000 36493.0 12.0000 -2 / 2: 36494.0 1.0037 36494.0 1.0037 -3 / 3: .... .... 36495.0 2.0000 -4 / 4: 36496.0 3.0000 36496.0 3.0000 -show data 2 - currently SET data sets: - 2> ./data/bn_delimited_read_date_time.dat (default) - name title I J K L - V1 V1 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V3 V3 1:4 ... ... ... - (Time of day) - V5 V5 1:4 ... ... ... - (Julian days since 1-Jan-1900) - V7 V7 1:4 ... ... ... - (Time of day) - - -! delimiters can be used to break up individual fields -file/form=delim/delim="/" bn_delimited_read_date_time.dat -list V1,V2,V3,V4 - DATA SET: ./data/bn_delimited_read_date_time.dat - X: 0.5 to 4.5 - Column 1: V1 - Column 2: V2 - Column 3: V3 - Column 4: V4 - V1 V2 V3 V4 -1 / 1: 12.0000 1.00000 "99,1999-03-01,12:00, 13:45:36.5,12" 1.00000 -2 / 2: 12.0000 2.00000 "99,1999-03-02,01:00:13.5, 14:45:36.5,12" 2.00000 -3 / 3: 12.0000 3.00000 "99x,1999-03-03x,2:00x, 15:45x,12" 3.00000 -4 / 4: 12.0000 4.00000 "99,1999-03-04,03:00, 16:45:36.5, 12" 4.00000 -! --- -sp cat data/bn_delimited_read_date_time.dat -12/1/99,1999-03-01,12:00, 13:45:36.5,12/1/99,1999-03-01,12:00, 13:45:36.5 -12/2/99,1999-03-02,01:00:13.5, 14:45:36.5,12/2/99,1999-03-02,01:00:13.5, 14:45:36.5 -12/3/99x,1999-03-03x,2:00x, 15:45x,12/3/99,1999-03-03,2:00, 15:45 -12/4/99,1999-03-04,03:00, 16:45:36.5, 12/4/99,1999-03-04,03:00, 16:45:36.5 -! --- -file/form=delim/delim="/,\," bn_delimited_read_date_time.dat -list V1,V2,V3,V4,v5,v6,v7,v8 - DATA SET: ./data/bn_delimited_read_date_time.dat - X: 0.5 to 4.5 - Column 1: V1 - Column 2: V2 - Column 3: V3 - Column 4: V4 - Column 5: V5 - Column 6: V6 - Column 7: V7 - Column 8: V8 - V1 V2 V3 V4 V5 V6 V7 V8 -1 / 1: 12.0000 1.00000 "99" "1999-03-01" "12:00" "13:45:36.5" 12.0000 1.00000 -2 / 2: 12.0000 2.00000 "99" "1999-03-02" "01:00:13.5" "14:45:36.5" 12.0000 2.00000 -3 / 3: 12.0000 3.00000 "99x" "1999-03-03x" "2:00x" "15:45x" 12.0000 3.00000 -4 / 4: 12.0000 4.00000 "99" "1999-03-04" "03:00" "16:45:36.5" 12.0000 4.00000 - file/form=delim/delim="/,\,,-" bn_delimited_read_date_time.dat -list V1,V2,V3,V4,v5,v6,v7,v8,v9,v10 - DATA SET: ./data/bn_delimited_read_date_time.dat - X: 0.5 to 4.5 - Column 1: V1 - Column 2: V2 - Column 3: V3 - Column 4: V4 - Column 5: V5 - Column 6: V6 - Column 7: V7 - Column 8: V8 - Column 9: V9 - Column 10: V10 - V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 -1 / 1: 12.0000 1.00000 "99" 1999.00 3.00000 "01" "12:00" "13:45:36.5" 12.0000 1.00000 -2 / 2: 12.0000 2.00000 "99" 1999.00 3.00000 "02" "01:00:13.5" "14:45:36.5" 12.0000 2.00000 -3 / 3: 12.0000 3.00000 "99x" 1999.00 3.00000 "03x" "2:00x" "15:45x" 12.0000 3.00000 -4 / 4: 12.0000 4.00000 "99" 1999.00 3.00000 "04" "03:00" "16:45:36.5" 12.0000 4.00000 - file/form=delim/delim="/,\,,-,:" bn_delimited_read_date_time.dat -list V1,V2,V3,V4,v5,v6,v7,v8,v9,v10 - DATA SET: ./data/bn_delimited_read_date_time.dat - X: 0.5 to 4.5 - Column 1: V1 - Column 2: V2 - Column 3: V3 - Column 4: V4 - Column 5: V5 - Column 6: V6 - Column 7: V7 - Column 8: V8 - Column 9: V9 - Column 10: V10 - V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 -1 / 1: 12.0000 1.00000 "99" 1999.00 3.00000 "01" 12.0000 "00" 13.0000 "45" -2 / 2: 12.0000 2.00000 "99" 1999.00 3.00000 "02" 1.0000 "00" 13.5000 "14" -3 / 3: 12.0000 3.00000 "99x" 1999.00 3.00000 "03x" 2.0000 "00x" 15.0000 "45x" -4 / 4: 12.0000 4.00000 "99" 1999.00 3.00000 "04" 3.0000 "00" 16.0000 "45" - -! read (beginning of) CO2 data file provided by Chris Sabine (like ODV files) -cancel data/all -columns/skip=1 bn_delimited_read_CO2.dat -show data/full - currently SET data sets: - 1> ./data/bn_delimited_read_CO2.dat (default) - - name title I J K L - V1 V1 1:19 ... ... ... - Data type = TEXT - Conversion /TYPE=TEXT - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V2 V2 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V3 V3 1:19 ... ... ... - Data type = TEXT - Conversion /TYPE=TEXT - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V4 V4 1:19 ... ... ... - (Julian days since 1-Jan-1900) - Data type = NUMERIC - Conversion /TYPE=DATE - days on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V5 V5 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V6 V6 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V7 V7 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V8 V8 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V9 V9 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V10 V10 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V11 V11 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V12 V12 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V13 V13 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V14 V14 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V15 V15 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V16 V16 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V17 V17 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V18 V18 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V19 V19 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V20 V20 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V21 V21 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V22 V22 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V23 V23 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V24 V24 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V25 V25 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V26 V26 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V27 V27 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V28 V28 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V29 V29 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V30 V30 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V31 V31 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V32 V32 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V33 V33 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V34 V34 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V35 V35 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V36 V36 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V37 V37 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V38 V38 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V39 V39 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V40 V40 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V41 V41 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V42 V42 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V43 V43 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V44 V44 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V45 V45 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V46 V46 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V47 V47 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V48 V48 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V49 V49 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V50 V50 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V51 V51 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V52 V52 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V53 V53 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V54 V54 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V55 V55 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V56 V56 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V57 V57 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V58 V58 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V59 V59 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V60 V60 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V61 V61 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V62 V62 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V63 V63 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V64 V64 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V65 V65 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V66 V66 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V67 V67 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V68 V68 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V69 V69 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V70 V70 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V71 V71 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - V72 V72 1:19 ... ... ... - Data type = NUMERIC - Conversion /TYPE=NUMERIC - on grid (G022) with -1.E+34 for missing data - X=0.5:19.5 - - /DELIMITERS="\t,\," - /FORMAT = DELIMITED - /SKIP = 1 - /COLUMNS = 72 -list v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26 - DATA SET: ./data/bn_delimited_read_CO2.dat - X: 0.5 to 19.5 - Column 1: V1 - Column 2: V2 - Column 3: V3 - Column 4: V4 is V4 (days)(Julian days since 1-Jan-1900) - Column 5: V5 - Column 6: V6 - Column 7: V7 - Column 8: V8 - Column 9: V9 - Column 10: V10 - Column 11: V11 - Column 12: V12 - Column 13: V13 - Column 14: V14 - Column 15: V15 - Column 16: V16 - Column 17: V17 - Column 18: V18 - Column 19: V19 - Column 20: V20 - Column 21: V21 - Column 22: V22 - Column 23: V23 - Column 24: V24 - Column 25: V25 - Column 26: V26 - V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 -1 / 1: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 10.00 21.1028 35.9408 0.00000 36.0000 0.000000 1.00000 9.80 224.641 0.000000 0.1172 0.00000 0.000000 0.00000 1.0156 0.00000 0.11621 0.00000 2.22900 -2 / 2: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 54.00 19.8913 35.9437 0.00000 35.0000 0.000000 1.00000 54.70 233.185 0.000000 0.1465 0.00000 0.000000 0.00000 1.0351 0.00000 0.13769 0.00000 2.43100 -3 / 3: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 79.00 19.0138 35.9186 0.00000 34.0000 0.000000 1.00000 79.50 237.026 0.000000 0.1660 0.00000 0.000000 0.00000 1.0449 0.00000 0.13085 0.00000 2.51600 -4 / 4: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 104.00 18.0026 35.8627 0.00000 33.0000 0.000000 1.00000 104.60 233.766 0.000000 0.1855 0.00000 0.000000 0.00000 1.0645 0.00000 0.16602 0.00000 2.65000 -5 / 5: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 154.00 16.3595 35.7126 0.00000 32.0000 0.000000 1.00000 155.10 230.216 0.000000 0.9083 0.00000 0.146501 0.00000 0.8985 0.00000 0.26566 0.00000 2.84600 -6 / 6: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 204.00 14.8461 35.5541 0.00000 31.0000 0.000000 1.00000 206.00 222.307 0.000000 3.7899 0.00000 0.009768 0.00000 1.4359 0.00000 0.44542 0.00000 2.95400 -7 / 7: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 253.00 13.7175 35.3809 0.00000 29.0000 0.000000 1.00000 255.20 227.612 0.000000 5.5293 0.00000 0.009769 0.00000 1.6315 0.00000 0.55880 0.00000 3.00600 -8 / 8: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 254.00 13.7070 35.3835 0.00000 30.0000 0.000000 1.00000 255.60 227.350 0.000000 5.5098 0.00000 0.009769 0.00000 1.7877 0.00000 0.55489 0.00000 2.99600 -9 / 9: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 305.00 12.6234 35.2123 0.00000 28.0000 0.000000 1.00000 307.20 230.868 0.000000 7.6502 0.00000 0.009770 0.00000 2.1593 0.00000 0.68588 0.00000 3.13400 -10 / 10: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 353.00 12.0102 35.1165 0.00000 27.0000 0.000000 1.00000 355.70 235.378 0.000000 8.7158 0.00000 0.009771 0.00000 2.5209 0.00000 0.75335 0.00000 3.19000 -11 / 11: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 404.00 11.4592 .... 9.00000 26.0000 0.000000 1.00000 406.90 .... 0.000000 .... 9.00000 .... 9.00000 .... 9.00000 .... 9.00000 3.25500 -12 / 12: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 452.00 11.0375 34.9575 0.00000 25.0000 0.000000 1.00000 455.90 239.899 0.000000 10.9546 0.00000 0.000000 0.00000 3.0489 0.00000 0.88438 0.00000 3.24500 -13 / 13: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 502.00 10.5797 34.8825 0.00000 24.0000 0.000000 1.00000 506.00 241.090 0.000000 12.1377 0.00000 0.000000 0.00000 3.4009 0.00000 0.95871 0.00000 3.19500 -14 / 14: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 601.00 9.8037 34.7585 0.00000 23.0000 0.000000 1.00000 605.90 238.538 0.000000 14.4357 0.00000 0.000000 0.00000 4.2711 0.00000 1.11419 0.00000 .... -15 / 15: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 701.00 9.0245 34.6510 0.00000 22.0000 0.000000 1.00000 706.70 229.219 0.000000 17.5353 0.00000 0.000000 0.00000 6.1774 0.00000 1.31173 0.00000 2.45400 -16 / 16: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 800.00 7.6879 34.5292 0.00000 21.0000 0.000000 1.00000 807.00 206.678 0.000000 22.7373 0.00000 0.000000 0.00000 13.2162 0.00000 1.63345 0.00000 1.32000 -17 / 17: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 899.00 6.2124 34.4434 0.00000 20.0000 0.000000 1.00000 907.30 194.602 0.000000 27.2943 0.00000 0.000000 0.00000 23.8630 0.00000 1.92683 0.00000 0.73200 -18 / 18: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 999.00 4.9587 34.4055 0.00000 19.0000 0.000000 1.00000 1008.40 186.926 0.000000 30.2768 0.00000 0.000000 0.00000 36.3870 0.00000 2.15272 0.00000 0.42900 -19 / 19: "I8SI9S" 4.00000 "B" 34671.0 94.9940 -30.3000 1945.00 1098.00 4.3083 34.4383 0.00000 18.0000 0.000000 1.00000 1109.00 171.821 0.000000 32.2020 0.00000 0.000000 0.00000 50.4537 0.00000 2.29735 0.00000 0.19800 -list/i=8:14 v11,v19,v21,v23,v25 - DATA SET: ./data/bn_delimited_read_CO2.dat - X: 7.5 to 14.5 - Column 1: V11 - Column 2: V19 - Column 3: V21 - Column 4: V23 - Column 5: V25 - V11 V19 V21 V23 V25 -8 / 8: 0.00000 0.00000 0.00000 0.00000 0.00000 -9 / 9: 0.00000 0.00000 0.00000 0.00000 0.00000 -10 / 10: 0.00000 0.00000 0.00000 0.00000 0.00000 -11 / 11: 9.00000 9.00000 9.00000 9.00000 9.00000 -12 / 12: 0.00000 0.00000 0.00000 0.00000 0.00000 -13 / 13: 0.00000 0.00000 0.00000 0.00000 0.00000 -14 / 14: 0.00000 0.00000 0.00000 0.00000 0.00000 -(set variable/bad=9 v11; set variable/bad=9 v19;set variable/bad=9 v21;set variable/bad=9 v23;set variable/bad=9 v25) -list/i=8:14 v11,v19,v21,v23,v25 - DATA SET: ./data/bn_delimited_read_CO2.dat - X: 7.5 to 14.5 - Column 1: V11 - Column 2: V19 - Column 3: V21 - Column 4: V23 - Column 5: V25 - V11 V19 V21 V23 V25 -8 / 8: 0.000000 0.000000 0.000000 0.000000 0.000000 -9 / 9: 0.000000 0.000000 0.000000 0.000000 0.000000 -10 / 10: 0.000000 0.000000 0.000000 0.000000 0.000000 -11 / 11: .... .... .... .... .... -12 / 12: 0.000000 0.000000 0.000000 0.000000 0.000000 -13 / 13: 0.000000 0.000000 0.000000 0.000000 0.000000 -14 / 14: 0.000000 0.000000 0.000000 0.000000 0.000000 -! ... read column headings, only -- 1 record -define axis/z=1:1:1 z1 -define grid/z=z1 g1 -columns/grid=g1 bn_delimited_read_CO2.dat -list/nohead v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,v17,v18,v19,v20,v21,v22,v23,v24,v25,v26 -I / *: "Cruise" "Station" "Type" "mm/dd/yy" "Lon[E]" "Lat[N]" "BotDep[m]" "Depth[m]" "Temperature[C]" "Salinity" "QF" "Bottle" "QF" "Cast" "Pressure[dbar]" "Oxygen[umol/kg]" "QF" "Nitrate[umol/kg]" "QF" "Nitrite[umol/kg]" "QF" "Silicate[umol/kg]" "QF" "Phosphate[umol/kg]" "QF" "CFC-11[pmol/kg]" - -! deliberate syntax errors -set mode ignore -columns/type="d, da2,date2" bn_delimited_read_date_time.dat -columns/type="da,da2,date2" bn_delimited_read_date_time.dat -columns/type="da,da, date2" bn_delimited_read_date_time.dat -columns/var="aa.b" bn_delimited_read_date_time.dat -file/form=delim/delim="/,,,:" bn_delimited_read_date_time.dat -cancel mode ignore - - -! ******** V5.41 Additions below *********** - -GO bn_reset bn541_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn541_bug_fixes -GO bn541_bug_fixes -! bn541_bug_fixes.jnl -! test various fixes that went into version 5.41 -! 3/02 *acm* -! -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -! tics on horiz log axes were wrong; (plot only) -! GO bn_reset -! tested in bn_logaxes (the plots will be different in 5.40 and 5.41) - - -!missing vertices in polygon call -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_polymissing -! err540_polymissing.jnl -! 3/02 *acm* -! A previous fix to polygon cut off loading of poly's if a vertex was -! missing. restore old behavior. (polygon_set_up.F) - - -use coads_climatology -let xpts0=x[g=sst,x=110:150,y=20:40,l=1]*y[g=sst,x=110:150,y=20:40,l=1]*0+x[g=sst,x=110:150,y=20:40,l=1] -let ypts0=x[g=sst,x=110:150,y=20:40,l=1]*y[g=sst,x=110:150,y=20:40,l=1]*0+y[g=sst,x=110:150,y=20:40,l=1] -let values0=sst[x=110:150,y=20:40,l=1] -LET xpts=ysequence(xpts0) -LET ypts=ysequence(ypts0) -LET values=ysequence(values0) - -LET xtriangle = {0,1,2} -LET ytriangle = {0,2,0} -LET xvertex = xpts+xtriangle -LET yvertex = ypts+ytriangle -polygon xvertex,yvertex,values - -let xvertex1= IF values NE -1E+34 THEN xvertex -polygon xvertex1,yvertex,values - -! dynamic memory setup for POLYGON -! GO bn_reset -! see ~ansley/ans_ferret/users/brockmann/err540/err540_polygon2.jnl - -! formatting axis label numbers -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_ill_format.jnl -! err540_ill_format.jnl -! 3/02 *acm* - -! formatting of small-magnitude negative numbers on axes is wrong -! e.g. -0.002 becomes ****** -! fix in frmt.F - -plot/i=1:100 0.001 - 0.002/ i - -plot/trans/i=1:100 0.001 - 0.002/ i - - - - -! variable permutation in netCDF writes -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_write_order -! err540_write_order.jnl -! *sh* 3/02 - -! the permutation of gridsvariables during writing is inferred *incorrectly* -! from the context of the first variable only in xeq_list.F - -! I think (??) that we need to replace this -! * ... if no axis order was specified determine the permutation -! IF (.NOT.permute) CALL GET_CX_DIMS(cx,ndim, perm ) -! DO 200 ilist = 1, num_uvars_in_cmnd -! CALL CREATE_PERMUTATION( memory, - -! with this -! * ... if no axis order was specified determine the permutation -! DO 200 ilist = 1, num_uvars_in_cmnd -! IF (.NOT.permute) CALL GET_CX_DIMS(is_cx(ilist),ndim, perm ) -! CALL CREATE_PERMUTATION( memory, - - -define axis/x=1:2:1 x12 -define axis/y=3:4:1 y34 -define axis/z=5:6:1 z56 - -let yz = 10*y[gy=y34] + 100*z[gz=z56] -let xyz = x[gx=x12] + 10*y[gy=y34] + 100*z[gz=z56] - -! before -list xyz - VARIABLE : X[GX=X12] + 10*Y[GY=Y34] + 100*Z[GZ=Z56] - SUBSET : 2 by 2 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 5 - 3 / 1: 531.000 532.000 - 4 / 2: 541.000 542.000 - ---- K:2 Z: 6 - 3 / 1: 631.000 632.000 - 4 / 2: 641.000 642.000 - -save/clobber/file=test_good_order.cdf xyz, yz -save/clobber/file=test_bad_order.cdf yz, xyz -cancel var/all - -! after -use test_good_order -list xyz - VARIABLE : X[GX=X12] + 10*Y[GY=Y34] + 100*Z[GZ=Z56] - FILENAME : test_good_order.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 5 - 3 / 1: 531.000 532.000 - 4 / 2: 541.000 542.000 - ---- K:2 Z: 6 - 3 / 1: 631.000 632.000 - 4 / 2: 641.000 642.000 -use test_bad_order -list xyz - VARIABLE : X[GX=X12] + 10*Y[GY=Y34] + 100*Z[GZ=Z56] - FILENAME : test_bad_order.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - 1 2 - 1 2 - ---- K:1 Z: 5 - 3 / 1: 531.000 532.000 - 4 / 2: 541.000 542.000 - ---- K:2 Z: 6 - 3 / 1: 631.000 632.000 - 4 / 2: 641.000 642.000 - -sp rm -f test_good_order.cdf -sp rm -f test_bad_order.cdf - -!@AVE error when plotting unlike grids together -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_ax_ave -!err540_ax_ave.jnl -! 3/02 *acm -! @AVE getting wrong set of indices for forming the average, having -! loaded range of indices on the first plot. ave_regrid_1_axis.F - -use coads_climatology -def axis/edges/t=1:7306:1461/t0="01-jan-0000"/unit=hour t2 -plot/x=140w/y=0/sym/line sst,sst[gt=t2@ave] - -def axis/edges/t=1:1600:731/t0="01-jan-0000"/unit=hour t2 -plot/x=140w/y=0/sym/line sst,sst[gt=t2@ave] - -!Make PPL AXSET settings persist, but not settings made w/ qualifiers /AXES= or /NOAXES -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_axset -!err540_axset.jnl -! 3/02 *acm -! backwards compatibility: PPL AXSET settings persist, and -! PLOT/AXES or PLOT/NOAXES override these, but only for one plot. - -! define a 6 viewport window -def view/xlim= 0,.333/ylim=0,.5 ll6 -def view/xlim= 0,.333/ylim=.5,1 ul6 -def view/xlim=.333,.666/ylim=0,.5 lm6 -def view/xlim=.333,.666/ylim=.5,1 um6 -def view/xlim=.666, 1/ylim=0,.5 lr6 -def view/xlim=.666, 1/ylim=.5,1 ur6 - -SET VIEW ul6;PLOT/NOAXES/I=1:10/TITLE="PLOT/NOAXES" 1./I -SET VIEW um6;SHADE/I=1:10/J=1:7/TITLE="No qualifiers" I+J - -PPL AXSET 0,1,1,0 -SET VIEW ur6;FILL/I=1:10/J=1:7/TITLE="with PPL AXSET 0,1,1,0" I+J - -SET VIEW ll6;CONTOUR/AXES=1,0,0,1/I=1:10/J=1:7/TITLE="CONTOUR/AXES=" I+J - -SET VIEW lm6;VECTOR/I=1:10/J=1:7/TITLE="Prev. PPL AXSET setting" I+J, I-0.5*J - -SET VIEW lr6;PLOT/i=1:10/SET/TITLE="plot/SET, new setting" 1./I -PPL AXSET 0,1,0,0 -PPL PLOT - -PPL axset 1,1,1,1 - - -!Previously couldn't do PLOT/VS/DASH, but no reason not to allow it. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_vs_dash -! PLOT/VS/DASH previously was not allowed. - -define axis/x=20e:10w:10/unit=degree xax -define axis/y=60s:60n/unit=degree/npoints=41 yax -define axis/z=0:1000:40/unit=meter/depth zax -define axis/t=1-jan-1960:15-dec-1999:5/unit=days tax -define grid/x=xax/y=yax/z=zax/t=tax gformat - -* XZ shade with VS/DASH/OVER -set grid gformat -shade/y=-60:60/z=0:1000 sin(y/3)*ABS(z)^1.5 - -let ypts = {-60,-50,-40,-30,-20,-10, 0, 8, 15, 30, 35, 40, 60} -let zpts = {700,667,669,801,732,755,765,789,808,788,822,699,700} - -plot/vs/over/thick/line/dash ypts,zpts -plot/vs/over/thick=3/line/dash=0.05,0.05,0.15,0.15 ypts,zpts+100 - -* XY shade with VS/DASH/OVER -set grid abstract -shade/pal=grayscale/x=1:100/y=101:200 sin(x/6)*cos(y/9) - -let xpts = { 0, 8, 12, 15, 23, 28, 30, 35, 40, 44, 54, 60, 75} -let ypts = {142,147,149,141,142,155,145,149,148,148,152,146,143} - -plot/vs/over/thick/color=red/dash xpts,ypts -plot/vs/over/thick=3/color=red/dash=0.05,0.05,0.15,0.15 xpts+10,ypts+30 - -! Here, test that settings made with PPL LINE command persist, -! whereas PLOT/DASH settings do not. - -let ypts=y[gy=1:80:1] -ppl line, 2, 0, 4, 0, 0, 0.04, 0.04, 0.15,0.15 -ppl line, 3, 0, 4, 0, 0, 0.2, 0.2, 0.2,0.2 -plot/thick/dash/vlimits=0:1000 50*sin(ypts/3)+100, 30*cos(ypts/3)+200 -plot/over/color=red/thick/dash=0.04,0.04,0.04,0.04 50*sin(ypts/3)+400, 30*cos(ypts/3)+500 -plot/over/thick/dash/color=blue 50*sin(ypts/3)+700, 30*cos(ypts/3)+800, 20*cos(ypts/5)+900, 20*sin(ypts)+950 - - -!overlay on polygon plots -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_poly_overlay -!overlay on polygon plots - -polygon/thick/color=red/palette=blue/axes=1,0,1,0 {1,2,1}, {2,1,0.5} -! KMS - changed for PyFerret - patterns not supported, so try translucent -! shade/over/i=1:2/j=0:2/patt i+j -shade/over/i=1:2/j=0:2/opac=25 i+j - -!polytube failed on plot/over; go polytube, because YAXIS_MIN, _MAX not defined. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_axis_symbols -! err540_axis_symbols.jnl -! 3/02 *acm* -! Define YAXIS_MIN and YAXIS_MAX after PPLUS auto-scaling is done. -! e.g. polytube failed overlaying on PLOT/VS plots, because symbols -! YAXIS_MIN and YAXIS_MAX or the XAXIS symbols aren't set. -! Note: when running in the benchmark suite, the go polytube command -! causes the job to hang. - -can var/all - -let xpts = i[i=1:100] -set view left -plot/line/vs xpts, sin(xpts/10) -sh sym YAXIS_MAX -YAXIS_MAX = "1.000000" -!go polytube polygon/over xpts, sin(xpts/10), sin(xpts/10) - -set view right - -let xpts = {3,5,6,7,8,9,10,13,15,16,17,18,19,21,22} -let ypts = {1,2,3,4,5,6, 7, 8, 9, 4, 5, 6, 7, 8, 9} -let zpts = {1,2,3,4,5,1, 2, 3, 4, 5, 1, 2, 3, 4, 5} - -plot/vs/trans/line xpts,ypts -sh sym XAXIS_MAX -XAXIS_MAX = "10.00000" -!go polytube polygon/trans/over xpts,ypts,zpts - -!nested repeat loops and parsing parentheses -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_parse_repeat -! err540_parse_repeat.jnl -! 3/03 *acm - -!yes? rep/k=1:2 (rep/j=1:1 (say hello)) -!-> REPEAT: K=1 -!-> REPEAT: J=1 <-----------lots of these -!-> REPEAT: J=1 -!... -! **ERROR: stack overflow -!rep/j=1:1 (rep/j=1:1 (say hello)) -!Command file, command group, or REPEAT execution aborted - - -!Cause is parsing parentheses in REPEAT section of parse_command.F - -rep/k=1:2 (rep/j=1:1 (say hello)) -!-> REPEAT: K=1 -!-> REPEAT: J=1 -hello -!-> REPEAT: K=2 -!-> REPEAT: J=1 -hello -rep/k=1:2 (rep/j=1:1 say hello; say why not) -!-> REPEAT: K=1 -!-> REPEAT: J=1 -hello -why not -!-> REPEAT: K=2 -!-> REPEAT: J=1 -hello -why not -rep/k=1:2 (rep/j=1:1 (say hello; (say why not))) -!-> REPEAT: K=1 -!-> REPEAT: J=1 -hello -why not -!-> REPEAT: K=2 -!-> REPEAT: J=1 -hello -why not - -! appending a scalar to NetCDF file -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_cd_use_recdim -! err540_cd_use_recdim -! 3/02 *sh* - -! crash appending scalar variable into file - -define axis/x=1:50:1 xprofile -define axis/y=0:360/npoints=10/edges ylon -define axis/z=-90:90/npoints=10/edges zlat -define axis/t=1-jan-1900:31-dec-1995/T0=1-jan-1900/npoints=10/edges tdate - -let maxprof = 5 -let temp = X[gx=xprofile] + Y[gy=ylon] + Z[gz=zlat] + T[gt=tdate] - -save/clobber/file=profiles.nc temp ! 4D variable -save/append/file=profiles.nc maxprof ! append a scalar variable - -use profiles.nc -sh data - currently SET data sets: - 1> ./profiles.nc (default) - name title I J K L - TEMP X[GX=XPROFILE] + Y[GY=YLON] + Z 1:50 1:10 1:10 1:10 - MAXPROF 5 ... ... ... ... - -sp rm -f profiles.nc - -! ================================= quit -!save/append/file=profiles.nc maxprof -! -! LISTing to file profiles.nc -!Subscript out of range on file cd_use_recdim.F, line 97, -!procedure cd_use_recdim. -!Subscript number 1 has value 0 in array vdims. -!Abort - - - - -!missing data in xpts,ypts sample points wasnt checked -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_samplexy_missing -! err540_samplexy_missing.jnl -! 3/03 *acm - -! previously missing data in the sample points caused Ferret to hang - -use coads_climatology -let asst = samplexy(sst, {171,173,-1.e34}, {-1,1,13}) -list asst - VARIABLE : SAMPLEXY(SST, {171,173,-1.E34}, {-1,1,13}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 3 points (X-TIME) - 1 2 3 - 1 2 3 - 16-JAN / 1: 29.0045 27.8955 .... - 15-FEB / 2: 28.5508 28.2499 .... - 17-MAR / 3: 28.8764 28.4775 .... - -let asst = samplexy(sst, {171,173,169}, {-1,,13}) -list asst - VARIABLE : SAMPLEXY(SST, {171,173,169}, {-1,,13}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 3 points (X-TIME) - 1 2 3 - 1 2 3 - 16-JAN / 1: 29.0045 .... 26.9596 - 15-FEB / 2: 28.5508 .... 26.7875 - 17-MAR / 3: 28.8764 .... 27.1092 - -! test the fixed delta stride bug -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_strides_rev.jnl -! err540_strides_rev.jnl -! V702: *sh* 2/2017 - modified this bench script -! V751:*acm* 6/2019 - memory is restored to the default in bn_reset - -! reported Feb '02 -! fixed April 17, '02 - -! Symptom: plots appear to be "tiled" -- repreating content - -! file test_100x100 has a diagonal line of 1s in a field of 0s -sp rm -f test_100x100.nc -set region/i=1:100/j=1:100 -let a0 = 0 -let a = if i eq j then 1 else a0 -!shade a -save/file=test_100x100.nc a -cancel data/all -cancel var/all - -! works fine in V5.33 -! try these lines for reference -! yes? use test_100x100.nc -! yes? shade a -! yes? shade a[i=1:100:10] - -! explanation of bug: -! Following the implicit regrid in IS_REGRID the resultant cx did not -! have the delta value(s) removed, so the mr thinks -! that it is 1:10:10 instead of simply 1:10 - -! this causes an inadequate amount of memory to be allocated and -! subsequent variables try to occupy the same memory already in use -! COPY_GRID is where the tiling effect happens, though it is not the -! cause of the problem - -set mode stupid -set mode diag -! *sh* 2/17 - such a small memory size makes it impossible to succeed -! with the command under the new dynamic memory management -!set mem/size=0.05 -set mem/size=1 ! use this larger size, instead -show mem/free - SET MEMORY/SIZE: 8 Mb (1000000 words) - Peak demand: 0 Kb - Current cache: 0 Kb - Total table slots: 500 - Free table slots: 500 - Un-cached variables: 0 - -use/ord=x-y test_100x100.nc -list/prec=1 a[i=1:100:10] ! this looks just right!! - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G022) (AX015) YAX1_100 NORMAL NORMAL - dealloc dynamic grid (G022) (AX015) YAX1_100 NORMAL NORMAL - allocate dynamic grid (G022) (AX015) YAX1_100 NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: 1 100 J: 1 100 K: -999 -999 L: -999 -999 - allocate dynamic grid (G022) (AX015) YAX1_100 NORMAL NORMAL - strip regrid on X: A --> (G022) @XACT - strip reversing A on Y axis: 1 100 dset: 1 - rdstride A C: 8 dset: 1 I: 1 91 J: 1 100 K: -999 -999 L: -999 -999 - doing reversing A on Y axis: 1 100 dset: 1 - -DELETE A M:206 dset: 1 I: 1 91 J: 1 100 K: -999 -999 L: -999 -999 - nulrgd A M:206 dset: 1 I: 1 10 J: 1 100 K: -999 -999 L: -999 -999 - -DELETE A M:182 dset: 1 I: 1 91 J: 1 100 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G022) (AX015) YAX1_100 NORMAL NORMAL - VARIABLE : IF I EQ J THEN 1 ELSE A0 - regrid: 10 delta on X - FILENAME : test_100x100.nc - SUBSET : 10 by 100 points (X-Y) - 1 11 21 31 41 51 61 71 81 91 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 2 / 2: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 3 / 3: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 4 / 4: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 5 / 5: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 6 / 6: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 7 / 7: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 8 / 8: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 9 / 9: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 10 / 10: 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. - 11 / 11: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 12 / 12: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 13 / 13: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 14 / 14: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 15 / 15: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 16 / 16: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 17 / 17: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 18 / 18: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 19 / 19: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 20 / 20: 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. - 21 / 21: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 22 / 22: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 23 / 23: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 24 / 24: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 25 / 25: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 26 / 26: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 27 / 27: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 28 / 28: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 29 / 29: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 30 / 30: 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. - 31 / 31: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 32 / 32: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 33 / 33: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 34 / 34: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 35 / 35: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 36 / 36: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 37 / 37: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 38 / 38: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 39 / 39: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 40 / 40: 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. - 41 / 41: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 42 / 42: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 43 / 43: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 44 / 44: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 45 / 45: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 46 / 46: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 47 / 47: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 48 / 48: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 49 / 49: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 50 / 50: 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. - 51 / 51: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 52 / 52: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 53 / 53: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 54 / 54: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 55 / 55: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 56 / 56: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 57 / 57: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 58 / 58: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 59 / 59: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 60 / 60: 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. - 61 / 61: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 62 / 62: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 63 / 63: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 64 / 64: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 65 / 65: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 66 / 66: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 67 / 67: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 68 / 68: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 69 / 69: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 70 / 70: 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. - 71 / 71: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 72 / 72: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 73 / 73: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 74 / 74: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 75 / 75: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 76 / 76: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 77 / 77: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 78 / 78: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 79 / 79: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 80 / 80: 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. - 81 / 81: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 82 / 82: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 83 / 83: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 84 / 84: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 85 / 85: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 86 / 86: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 87 / 87: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 88 / 88: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 89 / 89: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 90 / 90: 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. - 91 / 91: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 92 / 92: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 93 / 93: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 94 / 94: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 95 / 95: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 96 / 96: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 97 / 97: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 98 / 98: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 99 / 99: 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. - 100 / 100: 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G022) - GRID (G022) - name axis # pts start end subset - (AX015) X 10 r 1 91 10 pts - YAX1_100 Y 100 r 1 100 full - normal Z - normal T - -! should be a diagonal path of steps all the way across the plot -shade a[i=1:100:10] - eval EX#1 C: 4 dset: 1 I: 1 100 J: 1 100 K: -999 -999 L: -999 -999 - allocate dynamic grid (G022) (AX015) YAX1_100 NORMAL NORMAL - strip regrid on X: A --> (G022) @XACT - strip reversing A on Y axis: 1 100 dset: 1 - rdstride A C: 8 dset: 1 I: 1 91 J: 1 100 K: -999 -999 L: -999 -999 - doing reversing A on Y axis: 1 100 dset: 1 - -DELETE A M:182 dset: 1 I: 1 91 J: 1 100 K: -999 -999 L: -999 -999 - nulrgd A M:182 dset: 1 I: 1 10 J: 1 100 K: -999 -999 L: -999 -999 - -DELETE A M:204 dset: 1 I: 1 91 J: 1 100 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G022) (AX015) YAX1_100 NORMAL NORMAL -setting up 2D plot - -DELETE A M:204 dset: 1 I: 1 10 J: 1 100 K: -999 -999 L: -999 -999 -PPL plot 276 complete -ppl list stats - - - DATA OF TYPE CONTOUR - MIN MAX - X 1.0000E+00 9.1000E+01 - Y 1.0000E+00 1.0000E+02 - Z 0.0000E+00 1.0000E+00 - NX= 10 NY= 100 -ppl list data ! make screen wide -- shows the 1's matching the plot - - - DATA OF TYPE CONTOUR - MIN MAX - X 1.0000E+00 9.1000E+01 - Y 1.0000E+00 1.0000E+02 - Z 0.0000E+00 1.0000E+00 - NX= 10 NY= 100 - 1 2 3 4 5 6 7 - 1 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 2 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 3 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 4 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 5 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 6 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 7 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 8 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 9 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 10 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 11 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 12 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 13 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 14 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 15 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 16 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 17 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 18 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 19 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 20 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 21 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 22 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 23 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 24 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 25 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 26 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 27 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 28 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 29 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 30 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 31 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 32 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 33 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 34 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 35 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 36 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 37 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 38 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 39 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 40 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 1.00E+00 - 41 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 42 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 43 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 44 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 45 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 46 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 47 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 48 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 49 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 50 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 1.00E+00 0.00E+00 - 51 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 52 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 53 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 54 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 55 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 56 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 57 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 58 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 59 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 60 0.00E+00 0.00E+00 0.00E+00 0.00E+00 1.00E+00 0.00E+00 0.00E+00 - 61 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 62 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 63 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 64 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 65 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 66 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 67 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 68 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 69 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 70 0.00E+00 0.00E+00 0.00E+00 1.00E+00 0.00E+00 0.00E+00 0.00E+00 - 71 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 72 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 73 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 74 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 75 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 76 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 77 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 78 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 79 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 80 0.00E+00 0.00E+00 1.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 81 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 82 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 83 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 84 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 85 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 86 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 87 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 88 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 89 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 90 0.00E+00 1.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 91 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 92 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 93 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 94 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 95 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 96 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 97 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 98 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 99 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - 100 1.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 - - - 8 9 10 - 1 0.00E+00 0.00E+00 0.00E+00 - 2 0.00E+00 0.00E+00 0.00E+00 - 3 0.00E+00 0.00E+00 0.00E+00 - 4 0.00E+00 0.00E+00 0.00E+00 - 5 0.00E+00 0.00E+00 0.00E+00 - 6 0.00E+00 0.00E+00 0.00E+00 - 7 0.00E+00 0.00E+00 0.00E+00 - 8 0.00E+00 0.00E+00 0.00E+00 - 9 0.00E+00 0.00E+00 0.00E+00 - 10 0.00E+00 0.00E+00 1.00E+00 - 11 0.00E+00 0.00E+00 0.00E+00 - 12 0.00E+00 0.00E+00 0.00E+00 - 13 0.00E+00 0.00E+00 0.00E+00 - 14 0.00E+00 0.00E+00 0.00E+00 - 15 0.00E+00 0.00E+00 0.00E+00 - 16 0.00E+00 0.00E+00 0.00E+00 - 17 0.00E+00 0.00E+00 0.00E+00 - 18 0.00E+00 0.00E+00 0.00E+00 - 19 0.00E+00 0.00E+00 0.00E+00 - 20 0.00E+00 1.00E+00 0.00E+00 - 21 0.00E+00 0.00E+00 0.00E+00 - 22 0.00E+00 0.00E+00 0.00E+00 - 23 0.00E+00 0.00E+00 0.00E+00 - 24 0.00E+00 0.00E+00 0.00E+00 - 25 0.00E+00 0.00E+00 0.00E+00 - 26 0.00E+00 0.00E+00 0.00E+00 - 27 0.00E+00 0.00E+00 0.00E+00 - 28 0.00E+00 0.00E+00 0.00E+00 - 29 0.00E+00 0.00E+00 0.00E+00 - 30 1.00E+00 0.00E+00 0.00E+00 - 31 0.00E+00 0.00E+00 0.00E+00 - 32 0.00E+00 0.00E+00 0.00E+00 - 33 0.00E+00 0.00E+00 0.00E+00 - 34 0.00E+00 0.00E+00 0.00E+00 - 35 0.00E+00 0.00E+00 0.00E+00 - 36 0.00E+00 0.00E+00 0.00E+00 - 37 0.00E+00 0.00E+00 0.00E+00 - 38 0.00E+00 0.00E+00 0.00E+00 - 39 0.00E+00 0.00E+00 0.00E+00 - 40 0.00E+00 0.00E+00 0.00E+00 - 41 0.00E+00 0.00E+00 0.00E+00 - 42 0.00E+00 0.00E+00 0.00E+00 - 43 0.00E+00 0.00E+00 0.00E+00 - 44 0.00E+00 0.00E+00 0.00E+00 - 45 0.00E+00 0.00E+00 0.00E+00 - 46 0.00E+00 0.00E+00 0.00E+00 - 47 0.00E+00 0.00E+00 0.00E+00 - 48 0.00E+00 0.00E+00 0.00E+00 - 49 0.00E+00 0.00E+00 0.00E+00 - 50 0.00E+00 0.00E+00 0.00E+00 - 51 0.00E+00 0.00E+00 0.00E+00 - 52 0.00E+00 0.00E+00 0.00E+00 - 53 0.00E+00 0.00E+00 0.00E+00 - 54 0.00E+00 0.00E+00 0.00E+00 - 55 0.00E+00 0.00E+00 0.00E+00 - 56 0.00E+00 0.00E+00 0.00E+00 - 57 0.00E+00 0.00E+00 0.00E+00 - 58 0.00E+00 0.00E+00 0.00E+00 - 59 0.00E+00 0.00E+00 0.00E+00 - 60 0.00E+00 0.00E+00 0.00E+00 - 61 0.00E+00 0.00E+00 0.00E+00 - 62 0.00E+00 0.00E+00 0.00E+00 - 63 0.00E+00 0.00E+00 0.00E+00 - 64 0.00E+00 0.00E+00 0.00E+00 - 65 0.00E+00 0.00E+00 0.00E+00 - 66 0.00E+00 0.00E+00 0.00E+00 - 67 0.00E+00 0.00E+00 0.00E+00 - 68 0.00E+00 0.00E+00 0.00E+00 - 69 0.00E+00 0.00E+00 0.00E+00 - 70 0.00E+00 0.00E+00 0.00E+00 - 71 0.00E+00 0.00E+00 0.00E+00 - 72 0.00E+00 0.00E+00 0.00E+00 - 73 0.00E+00 0.00E+00 0.00E+00 - 74 0.00E+00 0.00E+00 0.00E+00 - 75 0.00E+00 0.00E+00 0.00E+00 - 76 0.00E+00 0.00E+00 0.00E+00 - 77 0.00E+00 0.00E+00 0.00E+00 - 78 0.00E+00 0.00E+00 0.00E+00 - 79 0.00E+00 0.00E+00 0.00E+00 - 80 0.00E+00 0.00E+00 0.00E+00 - 81 0.00E+00 0.00E+00 0.00E+00 - 82 0.00E+00 0.00E+00 0.00E+00 - 83 0.00E+00 0.00E+00 0.00E+00 - 84 0.00E+00 0.00E+00 0.00E+00 - 85 0.00E+00 0.00E+00 0.00E+00 - 86 0.00E+00 0.00E+00 0.00E+00 - 87 0.00E+00 0.00E+00 0.00E+00 - 88 0.00E+00 0.00E+00 0.00E+00 - 89 0.00E+00 0.00E+00 0.00E+00 - 90 0.00E+00 0.00E+00 0.00E+00 - 91 0.00E+00 0.00E+00 0.00E+00 - 92 0.00E+00 0.00E+00 0.00E+00 - 93 0.00E+00 0.00E+00 0.00E+00 - 94 0.00E+00 0.00E+00 0.00E+00 - 95 0.00E+00 0.00E+00 0.00E+00 - 96 0.00E+00 0.00E+00 0.00E+00 - 97 0.00E+00 0.00E+00 0.00E+00 - 98 0.00E+00 0.00E+00 0.00E+00 - 99 0.00E+00 0.00E+00 0.00E+00 - 100 0.00E+00 0.00E+00 0.00E+00 - - - -can mode stupid -can mode diag - - -! unknown data type for clauses with constants only -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_data_type.jnl -! err540_data_type -! 2/19/02 *sh* - -! Ferret fails to identifies the data type and gets -! "**ERROR: illegal data type (float,string,...) for operation: A" - -! in disp_data_set_up XEQ_PLOT is insisting on ptype_float. -! The type that is coming back from "a" is "0" (ptype_unknown) - -! The problem is that uvar_data_type(uvar=1="A", dset=0) is ptype_unknown=0 -! this is happening because its correct value is lost in IS_UVAR_GRID - -! solved 4/02: -! The constant ("1") was being ignored -- needed to get its data type -! change to IS_UVAR_GRID.F - -! Note - initial soln lead to further problems to resolve for -! IF cond THEN pseudo + const - -!set mode diag - -! bad -plot IF {1,3,5} GE 3 THEN 1 ! data type unknown - -! ok -- no error if constant is buried within a user variable -!let V = 1 -!plot IF {1,3,5} GE 3 THEN v - - -! gridding scattered points to modulo axis had bug -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_modscat.jnl -! test gridding scattered points to modulo axis. -! Show Southern hemisphere. - -use coads_climatology - -let xpts = 360*randu(i+10)-180; let ypts = 80*randu(i) -80 -let sstpts = samplexy(sst[l=1], xpts[i=1:1000], ypts[i=1:1000]) - -def axis/x=180w:180e:1/modulo xax -def axis/y=-89:0:1 yax -def grid/x=xax/y=yax mygrid - -let a = scat2gridgauss_xy (xpts[i=1:1000], ypts[i=1:1000], sstpts, x[gx=mygrid], y[gy=mygrid], 6, 1, 6, 6) - -let b = if sst[l=1,gx=mygrid,gy=mygrid] then a - -shade b -plot/vs/over xpts[i=1:1000]+360, ypts[i=1:1000] - -! make sure the USE bug reported 5/01 by A Wittenberg is fixed -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err540_use.jnl -! err540_use.jnl -! -! very subtle bug fix in the "USE" command. What would happen is if dataset A and -! dataset B were "used", then dset A was cancelled, if the next dataset (dataset C) -! "used" had a similarly named variable as dataset B, then Ferret would mistakingly -! set the similarly named variable in dataset C to lower case, making it inaccessible. -! This was because the logic in cd_scan_vars.F didn't take into account that variables from -! different datasets may be overlapped in the ds_var_code array. - -! Create three simple files containing variables with lowercase names. -let a = 1 -let b = 2 -save/q/clob/file=f.nc a -save/q/clob/file=f2.nc a,b -save/q/clob/file=g.nc b -can var a b - -sp ncrename -h -v A,a f.nc -sp ncrename -h -v A,a -v B,b f2.nc -sp ncrename -h -v B,b g.nc -use f.nc -use f2.nc -use g.nc -sh data - currently SET data sets: - 1> ./f.nc - name title I J K L - A 1 ... ... ... ... - - 2> ./f2.nc - name title I J K L - A 1 ... ... ... ... - B 2 ... ... ... ... - - 3> ./g.nc (default) - name title I J K L - B 2 ... ... ... ... - -can data/all - -! Use two of the files and cancel the first one. -use f.nc -sh data - currently SET data sets: - 1> ./f.nc (default) - name title I J K L - A 1 ... ... ... ... - -use g.nc -sh data - currently SET data sets: - 1> ./f.nc - name title I J K L - A 1 ... ... ... ... - - 2> ./g.nc (default) - name title I J K L - B 2 ... ... ... ... - -can dat 1 - -! Now open the f2 file which as both a and b variables -use f2.nc - -! All variables from BOTH datasets should be capitals. -show dat - currently SET data sets: - 1> ./f2.nc (default) - name title I J K L - A 1 ... ... ... ... - B 2 ... ... ... ... - - 2> ./g.nc - name title I J K L - B 2 ... ... ... ... - - -! This should work -list b[d=1] - VARIABLE : 2 - FILENAME : f2.nc - 2.00000 - - - -GO bn_reset bn_cancel_axes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cancel_axes -GO bn_cancel_axes -! bn_cancel_axes.jnl - -let ind1 = 1*i -let tim1 = 20500*randu(ind1[i=1:20500]) -let ind2 = sorti(tim1) -let tim2 = samplei(tim1, ind2) -list/format=comma/file=longax.dat/clobber tim2 -set data/skip=4/ez/col=2/var="cnt,tim" longax.dat - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -! longax cancel axis axname -repeat/k=1:10 go bn_cancel_axes_1.sub -!-> REPEAT: K=1 -! cancel axis axname -! Defining lots of irregular axes, used up coordinate storage. -! Now coordinage storage is recovered; also have the option to cancel axis/all - -set data/skip=4/ez/col=2/var="cnt,tim" longax.dat -def axis/from_data/t/units=days tim_ax=tim -def grid/t=tim_ax tim_grd -can grid tim_grd -can axis tim_ax -can data longax.dat - -!-> REPEAT: K=2 -! cancel axis axname -! Defining lots of irregular axes, used up coordinate storage. -! Now coordinage storage is recovered; also have the option to cancel axis/all - -set data/skip=4/ez/col=2/var="cnt,tim" longax.dat -def axis/from_data/t/units=days tim_ax=tim -def grid/t=tim_ax tim_grd -can grid tim_grd -can axis tim_ax -can data longax.dat - -!-> REPEAT: K=3 -! cancel axis axname -! Defining lots of irregular axes, used up coordinate storage. -! Now coordinage storage is recovered; also have the option to cancel axis/all - -set data/skip=4/ez/col=2/var="cnt,tim" longax.dat -def axis/from_data/t/units=days tim_ax=tim -def grid/t=tim_ax tim_grd -can grid tim_grd -can axis tim_ax -can data longax.dat - -!-> REPEAT: K=4 -! cancel axis axname -! Defining lots of irregular axes, used up coordinate storage. -! Now coordinage storage is recovered; also have the option to cancel axis/all - -set data/skip=4/ez/col=2/var="cnt,tim" longax.dat -def axis/from_data/t/units=days tim_ax=tim -def grid/t=tim_ax tim_grd -can grid tim_grd -can axis tim_ax -can data longax.dat - -!-> REPEAT: K=5 -! cancel axis axname -! Defining lots of irregular axes, used up coordinate storage. -! Now coordinage storage is recovered; also have the option to cancel axis/all - -set data/skip=4/ez/col=2/var="cnt,tim" longax.dat -def axis/from_data/t/units=days tim_ax=tim -def grid/t=tim_ax tim_grd -can grid tim_grd -can axis tim_ax -can data longax.dat - -!-> REPEAT: K=6 -! cancel axis axname -! Defining lots of irregular axes, used up coordinate storage. -! Now coordinage storage is recovered; also have the option to cancel axis/all - -set data/skip=4/ez/col=2/var="cnt,tim" longax.dat -def axis/from_data/t/units=days tim_ax=tim -def grid/t=tim_ax tim_grd -can grid tim_grd -can axis tim_ax -can data longax.dat - -!-> REPEAT: K=7 -! cancel axis axname -! Defining lots of irregular axes, used up coordinate storage. -! Now coordinage storage is recovered; also have the option to cancel axis/all - -set data/skip=4/ez/col=2/var="cnt,tim" longax.dat -def axis/from_data/t/units=days tim_ax=tim -def grid/t=tim_ax tim_grd -can grid tim_grd -can axis tim_ax -can data longax.dat - -!-> REPEAT: K=8 -! cancel axis axname -! Defining lots of irregular axes, used up coordinate storage. -! Now coordinage storage is recovered; also have the option to cancel axis/all - -set data/skip=4/ez/col=2/var="cnt,tim" longax.dat -def axis/from_data/t/units=days tim_ax=tim -def grid/t=tim_ax tim_grd -can grid tim_grd -can axis tim_ax -can data longax.dat - -!-> REPEAT: K=9 -! cancel axis axname -! Defining lots of irregular axes, used up coordinate storage. -! Now coordinage storage is recovered; also have the option to cancel axis/all - -set data/skip=4/ez/col=2/var="cnt,tim" longax.dat -def axis/from_data/t/units=days tim_ax=tim -def grid/t=tim_ax tim_grd -can grid tim_grd -can axis tim_ax -can data longax.dat - -!-> REPEAT: K=10 -! cancel axis axname -! Defining lots of irregular axes, used up coordinate storage. -! Now coordinage storage is recovered; also have the option to cancel axis/all - -set data/skip=4/ez/col=2/var="cnt,tim" longax.dat -def axis/from_data/t/units=days tim_ax=tim -def grid/t=tim_ax tim_grd -can grid tim_grd -can axis tim_ax -can data longax.dat - - - go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -! longax cancel axis/all - -! Note: cancel axes/all tested in err541_cancel_axes.jnl -! Here, it causes huge output because previous benchmarks -! leave lots of grids defined. -! repeat/k=1:10 (go bn_cancel_axes_2.sub; cancel grid tim_grd; cancel axis/all) - -! test remaining axes are intact when we cancel one. -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -define axis/x ax1={2,4,5,6,9} -define axis/x ax2={30,60,90,100} -sh axis/x ax2 - name axis # pts start end - AX2 X 4 i 30 100 - Axis span (to cell edges) = 90 - - I X XBOX XBOXLO - 1> 30 30 15 - 2> 60 30 45 - 3> 90 20 75 - 4> 100 10 95 -can axis ax1 -sh axis/x ax2 - name axis # pts start end - AX2 X 4 i 30 100 - Axis span (to cell edges) = 90 - - I X XBOX XBOXLO - 1> 30 30 15 - 2> 60 30 45 - 3> 90 20 75 - 4> 100 10 95 - -! Test interaction with irreg axes from datasets - -use test_axes -cancel data test_axes -sh axis/t test_irreg - name axis # pts start end - TEST_IRREG TIME 12mi 16-JAN 12:00 15-DEC 17:49 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 16-JAN 12:00:00 31 01-JAN 00:00:00 15.5 - 2> 15-FEB 02:54:36 28.2425 01-FEB 00:00:00 45.12125 - 3> 15-MAR 17:49:12 31 29-FEB 05:49:12 74.7425 - 4> 15-APR 05:49:12 30 31-MAR 05:49:12 105.2425 - 5> 15-MAY 17:49:12 31 30-APR 05:49:12 135.7425 - 6> 15-JUN 05:49:12 30 31-MAY 05:49:12 166.2425 - 7> 15-JUL 17:49:12 31 30-JUN 05:49:12 196.7425 - 8> 15-AUG 17:49:12 31 31-JUL 05:49:12 227.7425 - 9> 15-SEP 05:49:12 30 31-AUG 05:49:12 258.2425 - 10> 15-OCT 17:49:12 31 30-SEP 05:49:12 288.7425 - 11> 15-NOV 05:49:12 30 31-OCT 05:49:12 319.2425 - 12> 15-DEC 17:49:12 31 30-NOV 05:49:12 349.7425 - -def axis/x ax1 = {1, 3, 4, 5, 9} -can axis ax1 -sh axis/t test_irreg - name axis # pts start end - TEST_IRREG TIME 12mi 16-JAN 12:00 15-DEC 17:49 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 16-JAN 12:00:00 31 01-JAN 00:00:00 15.5 - 2> 15-FEB 02:54:36 28.2425 01-FEB 00:00:00 45.12125 - 3> 15-MAR 17:49:12 31 29-FEB 05:49:12 74.7425 - 4> 15-APR 05:49:12 30 31-MAR 05:49:12 105.2425 - 5> 15-MAY 17:49:12 31 30-APR 05:49:12 135.7425 - 6> 15-JUN 05:49:12 30 31-MAY 05:49:12 166.2425 - 7> 15-JUL 17:49:12 31 30-JUN 05:49:12 196.7425 - 8> 15-AUG 17:49:12 31 31-JUL 05:49:12 227.7425 - 9> 15-SEP 05:49:12 30 31-AUG 05:49:12 258.2425 - 10> 15-OCT 17:49:12 31 30-SEP 05:49:12 288.7425 - 11> 15-NOV 05:49:12 30 31-OCT 05:49:12 319.2425 - 12> 15-DEC 17:49:12 31 30-NOV 05:49:12 349.7425 - -cancel axis test_irreg - -def axis/x ax1 = {1, 3, 4, 5, 9} -sh axis/x ax1 - name axis # pts start end - AX1 X 5 i 1 9 - Axis span (to cell edges) = 11 - - I X XBOX XBOXLO - 1> 1 2 0 - 2> 3 1.5 2 - 3> 4 1 3.5 - 4> 5 2.5 4.5 - 5> 9 4 7 -can axis ax1 - -sh axis/t test_irreg - name axis # pts start end -sh axis/t test_seas - name axis # pts start end - TEST_SEAS TIME 4mr 15-FEB 15:43 15-NOV 14:05 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 8765.82 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (HOURS) - 1> 15-FEB 15:43:39 2191.455 01-JAN 00:00:00 1095.727 - 2> 16-MAY 23:10:57 2191.455 01-APR 07:27:18 3287.182 - 3> 16-AUG 06:38:15 2191.455 01-JUL 14:54:36 5478.637 - 4> 15-NOV 14:05:33 2191.455 30-SEP 22:21:54 7670.092 - -! test reading space delimited values - trac #2549 -columns/skip=3/var="v1,v2"/typ="num,num" longax.dat -list/clobber/file=longaxspace.dat/norow/nohead v1, v2 -let nrecs = `v1,return=isize` - !-> DEFINE VARIABLE nrecs = 20500 -can data/all -define axis/x=1:`nrecs`:1 xax - !-> define axis/x=1:20500:1 xax -define grid/x=xax xgrid -columns/grid=xgrid/delim="\b"/var="v1,v2"/typ="num,num" longaxspace.dat -! this used to cause a crash (due to improper memory advancing to skip spaces) -load v1 - - -! ******** V5.42 Additions below *********** - -GO bn_reset bn542_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn542_bug_fixes -GO bn542_bug_fixes -! bn542_bug_fixes.jnl -! test various fixes that went into version 5.42 -! 10/02 *acm* -! - -! Interior tics disappear on FILL plots -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err541_fill_tics -! pplus tics bug - pre 5.42, fill plots overlaid interior tics. - -use coads_climatology -ppl tics 0.,.35,0.,.35,0,0 - -set view upper -shade/l=1/x=150e:110w/y=40s:40n sst - -set view lower -fill/l=1/x=150e:110w/y=40s:40n sst - -ppl tics,,.25,,.25,-1,-1 - -! non-Gregorian axes not properly defined when time steps -! are used rather than date specifications -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err541_non_gregorian -!From Andrew Wittenberg, non-Gregorian time axis bug 01 Oct 2002 -! pre-542, second axis has just one point. - -def ax/cal=Gregorian/t=.5:11.5:1/unit=month/t0=1-jan-1980 tax1 -show ax tax2 - name axis # pts start end - TAX2 TIME 3 i 02-JAN-1990 00:00 06-JAN-1990 00:00 -T0 = 1-JAN-1990 - Axis span (to cell edges) = 6 - -def ax/cal=Julian/t=.5:11.5:1/unit=month/t0=1-jan-1980 tax2 -show ax tax2 - name axis # pts start end - TAX2 TIME 12 r 16-JAN-1980 05:15 16-DEC-1980 00:45 -T0 = 1-JAN-1980 -CALENDAR = JULIAN - Axis span (to cell edges) = 12 - -! For comparison, use the dates that start and end tax2 -def ax/cal=Julian/t="16-jan-1980:05:15":"16-dec-1980:00:45":1/unit=month/t0=1-jan-1980 tax3 -show ax tax3 - name axis # pts start end - TAX3 TIME 12 r 16-JAN-1980 05:15 16-DEC-1980 00:45 -T0 = 1-JAN-1980 -CALENDAR = JULIAN - Axis span (to cell edges) = 12 - - -! Could not write or read a NetCDF file with a 4-D string variable. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err541_string4d - ! Write a 4-D NetCDF file with a string variable. - -sp rm -f string4d.nc - -def axis/x=1:2:1 x2ax -def axis/y=1:3:1 y3ax -def axis/z=1:4:1 z4ax -def axis/t=1:2:1 t2ax - -let a = {"alpha","a2","a3","a4","a5","a6","a7","a8","a9","a10",\ -"bravo","b2","b3","b4","b5","b6","b7","b8","b9","b10",\ -"c1","c2","c3","c4","c5","c6","c7","c8","c9","c10",\ -"d1","d2","d3","d4","d5","d6","d7","d8","d9","d10",\ -"echo","e2","e3","e4","e5","e6","e7","e8"} - -let rvar = x[gx=x2ax] + y[gy=y3ax] + z[gz=z4ax] + t[gt=t2ax] -stat rvar - - X[GX=X2AX] + Y[GY=Y3AX] + Z[GZ=Z4AX] + T[GT=T2AX] - X: 0.5 to 2.5 - Y: 0.5 to 3.5 - Z: 0.5 to 4.5 - T: 0.5 to 2.5 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 48 (2*3*4*2*1*1) - # flagged as bad data: 0 - Minimum value: 4 - Maximum value: 11 - Mean value: 7.5 (unweighted average) - Standard deviation: 1.571 - -let axy = reshape (a,rvar) -!list axy -stat axy - - RESHAPE (A,RVAR) - X: 0.5 to 2.5 - Y: 0.5 to 3.5 - Z: 0.5 to 4.5 - T: 0.5 to 2.5 - E: N/A - F: N/A - DATA SET: N/A - Total # of strings: 48 (2*3*4*2*1*1) - Maximum string length: 5 -save/clobber/file=string4d.nc axy - -can var/all -can data/all -use string4d.nc -sh data - currently SET data sets: - 1> ./string4d.nc (default) - name title I J K L - AXY RESHAPE (A,RVAR) 1:2 1:3 1:4 1:2 - -list axy - VARIABLE : RESHAPE (A,RVAR) - FILENAME : string4d.nc - SUBSET : 2 by 3 by 4 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1:"alpha""a2" - 2 / 2:"a3" "a4" - 3 / 3:"a5" "a6" - ---- K:2 Z: 2 - 1 / 1:"a7" "a8" - 2 / 2:"a9" "a10" - 3 / 3:"bravo""b2" - ---- K:3 Z: 3 - 1 / 1:"b3" "b4" - 2 / 2:"b5" "b6" - 3 / 3:"b7" "b8" - ---- K:4 Z: 4 - 1 / 1:"b9" "b10" - 2 / 2:"c1" "c2" - 3 / 3:"c3" "c4" - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1:"c5" "c6" - 2 / 2:"c7" "c8" - 3 / 3:"c9" "c10" - ---- K:2 Z: 2 - 1 / 1:"d1" "d2" - 2 / 2:"d3" "d4" - 3 / 3:"d5" "d6" - ---- K:3 Z: 3 - 1 / 1:"d7" "d8" - 2 / 2:"d9" "d10" - 3 / 3:"echo" "e2" - ---- K:4 Z: 4 - 1 / 1:"e3" "e4" - 2 / 2:"e5" "e6" - 3 / 3:"e7" "e8" - - -! Cancel axis/all did not check whether axes were in use -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err541_cancel_axes -! Check that an axis in use cannot be cancelled. -! 4/2013 changes for Ferret with climatological axes -! defined internally. Use a different datset for this test - -use test_axes -cancel data test_axes - -let tt = t[gt=test_irreg] + 50*x[i=1:10] -load tt - -show axis test_i* - name axis # pts start end - TEST_IRREG TIME 12mi 16-JAN 12:00 15-DEC 17:49 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) -cancel axis test_irreg - -show axis test_i* - name axis # pts start end - TEST_IRREG TIME 12mi 16-JAN 12:00 15-DEC 17:49 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - -! Pre V5.42, this causes a crash: axes were cancelled, but not fully. -cancel axis/all -show axis test_i* - name axis # pts start end - TEST_IRREG TIME 12mi 16-JAN 12:00 15-DEC 17:49 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - -cancel var tt -cancel axis/all - -show axis test_i* - name axis # pts start end - - - -! Make sure delimited reads are processing dates correctly -! *kob* -! 5/4/05 *acm* Move to bn_ef_err541_date_delim; pulling all jnls that call shared-obj efs out -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -! GO err541_date_delim - - -! ******** V5.50 Additions below *********** - -GO bn_reset bn_subspan_modulo -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_subspan_modulo -GO bn_subspan_modulo -! bn_subspan_modulo.jnl -! *sh* 11/02 - -! a subspan modulo axis is one which is modulo, but the wrapping length -! exceeds the span of the axis. Ferret generates a phantom "void point" -! in order to bring the axis length equal to the modulo length. The void -! point is automatically filled with a missing value (psuedo-vars excluded) - -! test defining of subspan modulo axes -! any longitude axis less than 360 degrees -define axis/x=130e:80w:10 xsub ! yes -GO bn_subspan_modulo.sub1 X -Axis as created: - name axis # pts start end - XSUB LONGITUDE 16mr 130E 80W - Axis span (to cell edges) = 160 (modulo length = 360) -Axis as inferred from netCDF file: - name axis # pts start end - XSUB LONGITUDE 16mr 130E 80W - Axis span (to cell edges) = 160 (modulo length = 360) -define axis/x=-180:179:1/units=longitude/edges xsub ! yes -GO bn_subspan_modulo.sub1 X -Axis as created: - name axis # pts start end - XSUB LONGITUDE 359mr 179.5W(-179.5) 178.5E - Axis span (to cell edges) = 359 (modulo length = 360) -Axis as inferred from netCDF file: - name axis # pts start end - XSUB LONGITUDE 359mr 179.5W(-179.5) 178.5E - Axis span (to cell edges) = 359 (modulo length = 360) -define axis/x=-180:181:1/units=longitude/edges xsub ! no -GO bn_subspan_modulo.sub1 X -Axis as created: - name axis # pts start end - XSUB LONGITUDE 361 r 179.5W(-179.5) 179.5W - Axis span (to cell edges) = 361 -Axis as inferred from netCDF file: - name axis # pts start end - XSUB LONGITUDE 361 r 179.5W(-179.5) 179.5W - Axis span (to cell edges) = 361 - -! not allowed for axis length to exceed modulo length -set mode ignore - define axis/x=130e:500:10/modulo=360 xsub -canc mode ignore - -! automatic detection of climatologies -def ax/t=1-jan-0000:1-apr-0000/np=3 tsub ! yes -GO bn_subspan_modulo.sub1 T -Axis as created: - name axis # pts start end - TSUB TIME 3mr 01-JAN 00:00 01-APR 00:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 3276 (modulo length = 8765.82) -Axis as inferred from netCDF file: - name axis # pts start end - TSUB TIME 3mr 01-JAN 00:00 01-APR 00:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 3276 (modulo length = 8765.82) -def ax/t=1-jan-0000:1-apr-0000/np=3/edge/units=days tsub ! yes -GO bn_subspan_modulo.sub1 T -Axis as created: - name axis # pts start end - TSUB TIME 3mr 16-JAN 04:00 16-MAR 20:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 91 (modulo length = 365.2425) -Axis as inferred from netCDF file: - name axis # pts start end - TSUB TIME 3mr 16-JAN 04:00 16-MAR 19:59 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 91 (modulo length = 365.2425) -def ax/t=1-aug-0000:1-aug-0001/np=3/edge/units=days tsub ! yes -GO bn_subspan_modulo.sub1 T -Axis as created: - name axis # pts start end - TSUB TIME 3mr 30-SEP 20:00 01-JUN 04:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 365 (modulo length = 365.2425) -Axis as inferred from netCDF file: - name axis # pts start end - TSUB TIME 3mr 30-SEP 19:59 01-JUN 04:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 365 (modulo length = 365.2425) -def ax/t=31-dec-0000:1-may-0001/np=3/units=days tsub ! yes -GO bn_subspan_modulo.sub1 T -Axis as created: - name axis # pts start end - TSUB TIME 3mr 31-DEC 00:00 01-MAY 00:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 181.5 (modulo length = 365.2425) -Axis as inferred from netCDF file: - name axis # pts start end - TSUB TIME 3mr 31-DEC 00:00 01-MAY 00:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 181.5 (modulo length = 365.2425) -! the following start in year 0001 -def ax/t=31-dec-0000:1-may-0001/np=3/edges/units=days tsub ! no -GO bn_subspan_modulo.sub1 T -Axis as created: - name axis # pts start end - TSUB TIME 3 r 20-JAN-0001 04:00 10-APR-0001 20:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 121 -Axis as inferred from netCDF file: - name axis # pts start end - TSUB TIME 3mr 20-JAN 04:00 10-APR 19:59 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 121 (modulo length = 365.2425) -def ax/t=1-jan-0001:1-sep-0001/np=3/units=days tsub ! no -GO bn_subspan_modulo.sub1 T -Axis as created: - name axis # pts start end - TSUB TIME 3 r 01-JAN-0001 00:00 01-SEP-0001 00:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 364.5 -Axis as inferred from netCDF file: - name axis # pts start end - TSUB TIME 3mr 01-JAN 00:00 01-SEP 00:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 364.5 (modulo length = 365.2425) -! the following is too long to be a climatological axis -def ax/t=29-dec-0000:31-dec-0001/np=3/units=days tsub ! no -GO bn_subspan_modulo.sub1 T -Axis as created: - name axis # pts start end - TSUB TIME 3 r 29-DEC-0000 00:00 31-DEC-0001 00:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 550.5 -Axis as inferred from netCDF file: - name axis # pts start end - TSUB TIME 3 r 29-DEC-0000 00:00 31-DEC-0001 00:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 550.5 - - -! now test Ferret handling of the axes -! make a test file with a subspan modulo variable -! (need to postpone setting /modulo=100 cuz pseudo-vars have value on void pt) -sp rm -f test_subspan_modulo.nc -define axis/x=41:46:1/modulo=100 xax_subspan - -! almost identical irregular axis -define axis/x/modulo=100 Xirreg_subspan = {41,42,42.1,44,45,46} -set axis/modulo=100 Xirreg_subspan - -let vreg = X[gx=xax_subspan] -40 + 10 -let virr = X[gx=Xirreg_subspan] -40 + 10 -save/file=test_subspan_modulo.nc vreg, virr - -! noisy field to test smoothing -let noise = 0.2 * RANDN(0*vreg+1) -let vreg_ragged = vreg + noise -let virr_ragged = virr + noise[g=virr@asn] -save/file=test_subspan_modulo.nc/append vreg_ragged, virr_ragged - -! gappy field to test hole-filling -let vreg_void = if x[g=vreg] LT 43 OR x[g=vreg] GT 45 THEN vreg -let virr_void = if x[g=virr] LT 43 OR x[g=virr] GT 45 THEN virr -save/file=test_subspan_modulo.nc/append vreg_void, virr_void -save/file=test_subspan_modulo.nc/append vreg_void, virr_void - -! now define two-dimensional variables -- modulo in time as well -define axis/t=0:150:30/edges/units=days/modulo=365.2485/t0=1-jan-0000 tax_subspan -define axis/T0=1-jan-0000/units=days/modulo=365.2485/edges Tirreg_subspan = {0,31,59.2485,90.2485,120.2485,150.2485} -let treg = TBOXLO[gt=tax_subspan] -let tirr = TBOXLO[gt=tirreg_subspan] -let v2d_reg = vreg + treg -let v2d_irr = virr + tirr -save/file=test_subspan_modulo.nc/append v2d_reg, v2d_irr - -! 2d with voids -let treg_void = if L[g=v2d_reg] NE 3 THEN treg -let tirr_void = if L[g=v2d_irr] NE 3 THEN tirr -let v2d_reg_void = vreg_void + treg_void -let v2d_irr_void = virr_void + tirr_void -save/file=test_subspan_modulo.nc/append v2d_reg_void, v2d_irr_void - -! string variable on subspan modulo axis -let my_strings = {"a1","a2","a3","a4","a5","a6"} -let vreg_strings = my_strings[gx=xax_subspan@asn] -let virr_strings = my_strings[gx=Xirreg_subspan@asn] -save/file=test_subspan_modulo.nc/append vreg_strings, virr_strings - -canc var/all -use test_subspan_modulo.nc - -go bn_subspan_modulo.sub2 vreg v2d_reg -! bn_subspan_modulo.sub -! *sh* 11/02 - -! subroutine for benchmark test bn_subspan_modulo.jnl -! call with -! yes? GO bn_subspan_modulo.sub vreg ! test regular axis -! yes? GO bn_subspan_modulo.sub virr ! test irregular axis - -define alias lsx list/order=x -define alias lsxn list/order=x/nohead - -! check the modulo behavior of the X and T axes -define symbox xaxname `$1,return=xaxis` - !-> define symbox xaxname XAX_SUBSPAN -show axis/x=-60:141 ($XAXNAME) - !-> show axis/x=-60:141 XAX_SUBSPAN - name axis # pts start end - XAX_SUBSPAN X 6mr 41 46 - Axis span (to cell edges) = 6 (modulo length = 100) - - I X XBOX XBOXLO - -7> -106.5 94 -153.5 - -6> -59 1 -59.5 - -5> -58 1 -58.5 - -4> -57 1 -57.5 - -3> -56 1 -56.5 - -2> -55 1 -55.5 - -1> -54 1 -54.5 - 0> -6.5 94 -53.5 - 1> 41 1 40.5 - 2> 42 1 41.5 - 3> 43 1 42.5 - 4> 44 1 43.5 - 5> 45 1 44.5 - 6> 46 1 45.5 - 7> 93.5 94 46.5 - 8> 141 1 140.5 -show axis/x=-60:141:2 ($XAXNAME) - !-> show axis/x=-60:141:2 XAX_SUBSPAN - name axis # pts start end - XAX_SUBSPAN X 6mr 41 46 - Axis span (to cell edges) = 6 (modulo length = 100) - - I X XBOX XBOXLO - -7> -106.5 94 -153.5 - -5> -58 1 -58.5 - -3> -56 1 -56.5 - -1> -54 1 -54.5 - 1> 41 1 40.5 - 3> 43 1 42.5 - 5> 45 1 44.5 - 7> 93.5 94 46.5 -show axis/x=-60:141:7 ($XAXNAME) - !-> show axis/x=-60:141:7 XAX_SUBSPAN - name axis # pts start end - XAX_SUBSPAN X 6mr 41 46 - Axis span (to cell edges) = 6 (modulo length = 100) - - I X XBOX XBOXLO - -7> -106.5 94 -153.5 - 0> -6.5 94 -53.5 - 7> 93.5 94 46.5 - -define symbox taxname `$2,return=taxis` - !-> define symbox taxname TAX_SUBSPAN1 -show axis/l=3:10 ($TAXNAME) - !-> show axis/l=3:10 TAX_SUBSPAN1 - name axis # pts start end - TAX_SUBSPAN1 TIME 5mr 16-JAN 00:00 15-MAY 00:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 150 (modulo length = 365.2485) - - L T TBOX TBOXLO TSTEP (days) - 3> 16-MAR 00:00:00 30 01-MAR 00:00:00 75 - 4> 15-APR 00:00:00 30 31-MAR 00:00:00 105 - 5> 15-MAY 00:00:00 30 30-APR 00:00:00 135 - 6> 14-SEP 14:58:55 215.2485 30-MAY 00:00:00 257.6242 - 7> 15-JAN 05:57:50 30 31-DEC 05:57:50 380.2485 - 8> 14-FEB 05:57:50 30 30-JAN 05:57:50 410.2485 - 9> 16-MAR 05:57:50 30 01-MAR 05:57:50 440.2485 - 10> 15-APR 05:57:50 30 31-MAR 05:57:50 470.2485 -show axis/l=3:10:3 ($TAXNAME) - !-> show axis/l=3:10:3 TAX_SUBSPAN1 - name axis # pts start end - TAX_SUBSPAN1 TIME 5mr 16-JAN 00:00 15-MAY 00:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 150 (modulo length = 365.2485) - - L T TBOX TBOXLO TSTEP (days) - 3> 16-MAR 00:00:00 30 01-MAR 00:00:00 75 - 6> 14-SEP 14:58:55 215.2485 30-MAY 00:00:00 257.6242 - 9> 16-MAR 05:57:50 30 01-MAR 05:57:50 440.2485 -show axis/l=3:10:6 ($TAXNAME) - !-> show axis/l=3:10:6 TAX_SUBSPAN1 - name axis # pts start end - TAX_SUBSPAN1 TIME 5mr 16-JAN 00:00 15-MAY 00:00 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 150 (modulo length = 365.2485) - - L T TBOX TBOXLO TSTEP (days) - 3> 16-MAR 00:00:00 30 01-MAR 00:00:00 75 - 9> 16-MAR 05:57:50 30 01-MAR 05:57:50 440.2485 - -set mode diag -set mode stupid ! always re-read and recompute -lsx $1 ! default avoids void points - !-> list/order=x vreg - dealloc dynamic grid GFJ3 XAX_SUBSPANORMAL NORMAL TAX_SUBSPA - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GFJ1 XAX_SUBSPANORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: 1 6 J: -999 -999 K: -999 -999 L: -999 -999 - reading VREG M:204 dset: 1 I: 1 6 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : X[GX=XAX_SUBSPAN] -40 + 10 - FILENAME : test_subspan_modulo.nc - SUBSET : 6 points (X) - 41 42 43 44 45 46 - 1 2 3 4 5 6 - 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 -lsxn/x=100 $1 ! void point above, alone (via "modulo-void-filling") - !-> list/order=x/nohead/x=100 vreg - strip limits reconciliation : EX#1 - strip modulo-void-filling EX#1 on X axis: 7 7 dset: 1 - eval EX#1 C: 6 dset: 1 I: 6 6 J: -999 -999 K: -999 -999 L: -999 -999 - reading VREG M:206 dset: 1 I: 6 6 J: -999 -999 K: -999 -999 L: -999 -999 - doing modulo-void-filling VREG on X axis: 6 6 dset: 1 - .... -lsxn/x=0 $1 ! void point below, alone (via modulo) - !-> list/order=x/nohead/x=0 vreg - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 0 0 J: -999 -999 K: -999 -999 L: -999 -999 - strip moduloing VREG on X axis: 0 0 dset: 1 - reading VREG M:176 dset: 1 I: 6 6 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing VREG on X axis: 6 6 dset: 1 - .... -lsxn/x=45:100 $1 ! void above (via subspan-fill) - !-> list/order=x/nohead/x=45:100 vreg - strip limits reconciliation : EX#1 - strip modulo-void-filling EX#1 on X axis: 5 7 dset: 1 - eval EX#1 C: 6 dset: 1 I: 5 6 J: -999 -999 K: -999 -999 L: -999 -999 - reading VREG M:188 dset: 1 I: 5 6 J: -999 -999 K: -999 -999 L: -999 -999 - doing modulo-void-filling VREG on X axis: 5 6 dset: 1 - 15.0000 16.0000 .... -lsxn/x=0:100 $1 ! voids above & below (via modulo) - !-> list/order=x/nohead/x=0:100 vreg - strip limits reconciliation : EX#1 - strip modulo-void-filling EX#1 on X axis: 0 7 dset: 1 - eval EX#1 C: 6 dset: 1 I: 0 6 J: -999 -999 K: -999 -999 L: -999 -999 - strip moduloing VREG on X axis: 0 6 dset: 1 - reading VREG M:205 dset: 1 I: 1 6 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing VREG on X axis: 1 6 dset: 1 - doing modulo-void-filling VREG on X axis: 0 6 dset: 1 - .... 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 .... -set mode/last diag -lsxn/x=50:160 $1 ! modulo above - !-> list/order=x/nohead/x=50:160 vreg - .... 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 .... -lsxn/x=-100:40 $1 ! modulo below - !-> list/order=x/nohead/x=-100:40 vreg - .... 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 .... -lsxn/x=-100:160 $1 ! modulo above & below - !-> list/order=x/nohead/x=-100:160 vreg - ... listing every 2th point - . .... 12.0000 14.0000 16.0000 11.0000 13.0000 15.0000 .... 12.0000 14.0000 16.0000 - -! end point testing -lsxn/i=-8:-2 $1 - !-> list/order=x/nohead/i=-8:-2 vreg - 16.0000 .... 11.0000 12.0000 13.0000 14.0000 15.0000 -lsxn/i=-7:-2 $1 - !-> list/order=x/nohead/i=-7:-2 vreg - .... 11.0000 12.0000 13.0000 14.0000 15.0000 -lsxn/i=-6:-2 $1 - !-> list/order=x/nohead/i=-6:-2 vreg - 11.0000 12.0000 13.0000 14.0000 15.0000 -lsxn/i=17:20 $1 - !-> list/order=x/nohead/i=17:20 vreg - 13.0000 14.0000 15.0000 16.0000 -lsxn/i=17:21 $1 - !-> list/order=x/nohead/i=17:21 vreg - 13.0000 14.0000 15.0000 16.0000 .... -lsxn/i=17:22 $1 - !-> list/order=x/nohead/i=17:22 vreg - 13.0000 14.0000 15.0000 16.0000 .... 11.0000 -set mode/last stupid - -! test smoothers - pos and neg modulo and combined mod and context edges -lsx/x=500:600 $1_ragged - !-> list/order=x/x=500:600 vreg_ragged - VARIABLE : VREG + NOISE - FILENAME : test_subspan_modulo.nc - SUBSET : 8 points (X) - 493.5 541 542 543 544 545 546 593.5 - 35 36 37 38 39 40 41 42 - .... 10.9466 12.0566 12.9354 14.2434 14.9391 15.9921 .... -lsxn/x=500:600 $1_ragged[x=@sbx] - !-> list/order=x/nohead/x=500:600 vreg_ragged[x=@sbx] - .... .... 11.9795 13.0784 14.0393 15.0582 .... .... -lsxn/x=500:545 $1_ragged[x=@sbx] - !-> list/order=x/nohead/x=500:545 vreg_ragged[x=@sbx] - .... .... 11.9795 13.0784 14.0393 15.0582 -lsxn/x=545:600 $1_ragged[x=@sbx] - !-> list/order=x/nohead/x=545:600 vreg_ragged[x=@sbx] - 15.0582 .... .... - -lsxn/x=-100:0 $1_ragged - !-> list/order=x/nohead/x=-100:0 vreg_ragged - .... 10.9466 12.0566 12.9354 14.2434 14.9391 15.9921 .... -lsxn/x=-100:0 $1_ragged[x=@sbx] - !-> list/order=x/nohead/x=-100:0 vreg_ragged[x=@sbx] - .... .... 11.9795 13.0784 14.0393 15.0582 .... .... -lsxn/x=-100:-55 $1_ragged[x=@sbx] - !-> list/order=x/nohead/x=-100:-55 vreg_ragged[x=@sbx] - .... .... 11.9795 13.0784 14.0393 15.0582 -lsxn/x=-56:0 $1_ragged[x=@sbx] - !-> list/order=x/nohead/x=-56:0 vreg_ragged[x=@sbx] - 14.0393 15.0582 .... .... - -lsxn/x=-100:142/wid=200 $1_ragged - !-> list/order=x/nohead/x=-100:142/wid=200 vreg_ragged - .... 10.9466 12.0566 12.9354 14.2434 14.9391 15.9921 .... 10.9466 12.0566 12.9354 14.2434 14.9391 15.9921 .... 10.9466 12.0566 -lsxn/x=-100:142/wid=200 $1_ragged[x=@sbx:3] - !-> list/order=x/nohead/x=-100:142/wid=200 vreg_ragged[x=@sbx:3] - .... .... 11.9795 13.0784 14.0393 15.0582 .... .... .... 11.9795 13.0784 14.0393 15.0582 .... .... .... 11.9795 -lsxn/x=-100:142/wid=200 $1_ragged[x=@swl:5] - !-> list/order=x/nohead/x=-100:142/wid=200 vreg_ragged[x=@swl:5] - .... .... .... 13.0356 14.0408 .... .... .... .... .... 13.0356 14.0408 .... .... .... .... .... -lsxn/x=-100:142/wid=200 $1_ragged[x=@swl:35] - !-> list/order=x/nohead/x=-100:142/wid=200 vreg_ragged[x=@swl:35] - .................................................................... - -! test fillers - pos and neg modulo and combined mod and context edges -! @FAV -lsx/x=500:600 $1_void - !-> list/order=x/x=500:600 vreg_void - VARIABLE : IF X[G=VREG] LT 43 OR X[G=VREG] GT 45 THEN VREG - FILENAME : test_subspan_modulo.nc - SUBSET : 8 points (X) - 493.5 541 542 543 544 545 546 593.5 - 35 36 37 38 39 40 41 42 - .... 11.0000 12.0000 .... .... .... 16.0000 .... -lsxn/x=500:600 $1_void[x=@fav] - !-> list/order=x/nohead/x=500:600 vreg_void[x=@fav] - .... 11.0000 12.0000 12.0000 .... 16.0000 16.0000 .... - -lsxn/x=-100:0 $1_void - !-> list/order=x/nohead/x=-100:0 vreg_void - .... 11.0000 12.0000 .... .... .... 16.0000 .... -lsxn/x=-100:0 $1_void[x=@fav] - !-> list/order=x/nohead/x=-100:0 vreg_void[x=@fav] - .... 11.0000 12.0000 12.0000 .... 16.0000 16.0000 .... - -lsxn/x=-100:142/wid=200 $1_void - !-> list/order=x/nohead/x=-100:142/wid=200 vreg_void - .... 11.0000 12.0000 .... .... .... 16.0000 .... 11.0000 12.0000 .... .... .... 16.0000 .... 11.0000 12.0000 -lsxn/x=-100:142/wid=200 $1_void[x=@fav:3] - !-> list/order=x/nohead/x=-100:142/wid=200 vreg_void[x=@fav:3] - .... 11.0000 12.0000 12.0000 .... 16.0000 16.0000 .... 11.0000 12.0000 12.0000 .... 16.0000 16.0000 .... 11.0000 12.0000 -lsxn/x=-100:142/wid=200 $1_void[x=@fav:5] - !-> list/order=x/nohead/x=-100:142/wid=200 vreg_void[x=@fav:5] - .... 11.0000 12.0000 11.5000 14.0000 16.0000 16.0000 .... 11.0000 12.0000 11.5000 14.0000 16.0000 16.0000 .... 11.0000 12.0000 -lsxn/x=-100:142/wid=200 $1_void[x=@fav:35] - !-> list/order=x/nohead/x=-100:142/wid=200 vreg_void[x=@fav:35] - .... 11.0000 12.0000 13.0000 13.0000 13.0000 16.0000 .... 11.0000 12.0000 13.0000 13.0000 13.0000 16.0000 .... 11.0000 12.0000 - -! @FLN -lsxn/x=500:600 $1_void - !-> list/order=x/nohead/x=500:600 vreg_void - .... 11.0000 12.0000 .... .... .... 16.0000 .... -lsxn/x=500:600 $1_void[x=@fln] - !-> list/order=x/nohead/x=500:600 vreg_void[x=@fln] - .... 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 .... - -lsxn/x=-100:0 $1_void - !-> list/order=x/nohead/x=-100:0 vreg_void - .... 11.0000 12.0000 .... .... .... 16.0000 .... -lsxn/x=-100:0 $1_void[x=@fln] - !-> list/order=x/nohead/x=-100:0 vreg_void[x=@fln] - .... 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 .... - -lsxn/x=-100:142/wid=200 $1_void - !-> list/order=x/nohead/x=-100:142/wid=200 vreg_void - .... 11.0000 12.0000 .... .... .... 16.0000 .... 11.0000 12.0000 .... .... .... 16.0000 .... 11.0000 12.0000 -lsxn/x=-100:142/wid=200 $1_void[x=@fln:35] - !-> list/order=x/nohead/x=-100:142/wid=200 vreg_void[x=@fln:35] - .... 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 .... 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 .... 11.0000 12.0000 - -! @FNR -lsxn/x=500:600 $1_void - !-> list/order=x/nohead/x=500:600 vreg_void - .... 11.0000 12.0000 .... .... .... 16.0000 .... -lsxn/x=500:600 $1_void[x=@fnr] - !-> list/order=x/nohead/x=500:600 vreg_void[x=@fnr] - .... 11.0000 12.0000 12.0000 14.0000 16.0000 16.0000 .... - -lsxn/x=-100:0 $1_void - !-> list/order=x/nohead/x=-100:0 vreg_void - .... 11.0000 12.0000 .... .... .... 16.0000 .... -lsxn/x=-100:0 $1_void[x=@fnr] - !-> list/order=x/nohead/x=-100:0 vreg_void[x=@fnr] - .... 11.0000 12.0000 12.0000 14.0000 16.0000 16.0000 .... - -lsxn/x=-100:142/wid=200 $1_void - !-> list/order=x/nohead/x=-100:142/wid=200 vreg_void - .... 11.0000 12.0000 .... .... .... 16.0000 .... 11.0000 12.0000 .... .... .... 16.0000 .... 11.0000 12.0000 -lsxn/x=-100:142/wid=200 $1_void[x=@fnr:35] - !-> list/order=x/nohead/x=-100:142/wid=200 vreg_void[x=@fnr:35] - .... 11.0000 12.0000 12.0000 14.0000 16.0000 16.0000 .... 11.0000 12.0000 12.0000 14.0000 16.0000 16.0000 .... 11.0000 12.0000 - -! Test 2-axis modulo (longitude and time) -define alias l200 list/width=200 -define alias l200n list/width=200/nohead -l200/i=1:13 $2 - !-> list/width=200/nohead/i=1:13 v2d_reg - 16-JAN / 1: 11.000 12.000 13.000 14.000 15.000 16.000 .... 11.000 12.000 13.000 14.000 15.000 16.000 - 15-FEB / 2: 41.000 42.000 43.000 44.000 45.000 46.000 .... 41.000 42.000 43.000 44.000 45.000 46.000 - 16-MAR / 3: 71.000 72.000 73.000 74.000 75.000 76.000 .... 71.000 72.000 73.000 74.000 75.000 76.000 - 15-APR / 4: 101.000 102.000 103.000 104.000 105.000 106.000 .... 101.000 102.000 103.000 104.000 105.000 106.000 - 15-MAY / 5: 131.000 132.000 133.000 134.000 135.000 136.000 .... 131.000 132.000 133.000 134.000 135.000 136.000 -l200n/l=1:12 $2 - !-> list/width=200/nohead/l=1:12 v2d_reg - 16-JAN / 1: 11.000 12.000 13.000 14.000 15.000 16.000 - 15-FEB / 2: 41.000 42.000 43.000 44.000 45.000 46.000 - 16-MAR / 3: 71.000 72.000 73.000 74.000 75.000 76.000 - 15-APR / 4: 101.000 102.000 103.000 104.000 105.000 106.000 - 15-MAY / 5: 131.000 132.000 133.000 134.000 135.000 136.000 - 14-SEP / 6: .... .... .... .... .... .... - 15-JAN / 7: 11.000 12.000 13.000 14.000 15.000 16.000 - 14-FEB / 8: 41.000 42.000 43.000 44.000 45.000 46.000 - 16-MAR / 9: 71.000 72.000 73.000 74.000 75.000 76.000 - 15-APR / 10: 101.000 102.000 103.000 104.000 105.000 106.000 - 15-MAY / 11: 131.000 132.000 133.000 134.000 135.000 136.000 - 14-SEP / 12: .... .... .... .... .... .... -l200n/l=1:12/i=1:11 $2 - !-> list/width=200/nohead/l=1:12/i=1:11 v2d_reg - 16-JAN / 1: 11.000 12.000 13.000 14.000 15.000 16.000 .... 11.000 12.000 13.000 14.000 - 15-FEB / 2: 41.000 42.000 43.000 44.000 45.000 46.000 .... 41.000 42.000 43.000 44.000 - 16-MAR / 3: 71.000 72.000 73.000 74.000 75.000 76.000 .... 71.000 72.000 73.000 74.000 - 15-APR / 4: 101.000 102.000 103.000 104.000 105.000 106.000 .... 101.000 102.000 103.000 104.000 - 15-MAY / 5: 131.000 132.000 133.000 134.000 135.000 136.000 .... 131.000 132.000 133.000 134.000 - 14-SEP / 6: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN / 7: 11.000 12.000 13.000 14.000 15.000 16.000 .... 11.000 12.000 13.000 14.000 - 14-FEB / 8: 41.000 42.000 43.000 44.000 45.000 46.000 .... 41.000 42.000 43.000 44.000 - 16-MAR / 9: 71.000 72.000 73.000 74.000 75.000 76.000 .... 71.000 72.000 73.000 74.000 - 15-APR / 10: 101.000 102.000 103.000 104.000 105.000 106.000 .... 101.000 102.000 103.000 104.000 - 15-MAY / 11: 131.000 132.000 133.000 134.000 135.000 136.000 .... 131.000 132.000 133.000 134.000 - 14-SEP / 12: .... .... .... .... .... .... .... .... .... .... .... -! list outside the native range with /L=1:21. Date listings show years beyond 0002 -l200n/l=12:21/i=-19:-9 $2 - !-> list/width=200/nohead/l=12:21/i=-19:-9 v2d_reg - 14-SEP / 12: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN / 13: 12.000 13.000 14.000 15.000 16.000 .... 11.000 12.000 13.000 14.000 15.000 - 14-FEB / 14: 42.000 43.000 44.000 45.000 46.000 .... 41.000 42.000 43.000 44.000 45.000 - 16-MAR / 15: 72.000 73.000 74.000 75.000 76.000 .... 71.000 72.000 73.000 74.000 75.000 - 15-APR / 16: 102.000 103.000 104.000 105.000 106.000 .... 101.000 102.000 103.000 104.000 105.000 - 15-MAY / 17: 132.000 133.000 134.000 135.000 136.000 .... 131.000 132.000 133.000 134.000 135.000 - 15-SEP / 18: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN-0003 / 19: 12.000 13.000 14.000 15.000 16.000 .... 11.000 12.000 13.000 14.000 15.000 - 14-FEB-0003 / 20: 42.000 43.000 44.000 45.000 46.000 .... 41.000 42.000 43.000 44.000 45.000 - 16-MAR-0003 / 21: 72.000 73.000 74.000 75.000 76.000 .... 71.000 72.000 73.000 74.000 75.000 -l200n/l=12:21/i=-19:-9 $2_void - !-> list/width=200/nohead/l=12:21/i=-19:-9 v2d_reg_void - 14-SEP / 12: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN / 13: 12.000 .... .... .... 16.000 .... 11.000 12.000 .... .... .... - 14-FEB / 14: 42.000 .... .... .... 46.000 .... 41.000 42.000 .... .... .... - 16-MAR / 15: .... .... .... .... .... .... .... .... .... .... .... - 15-APR / 16: 102.000 .... .... .... 106.000 .... 101.000 102.000 .... .... .... - 15-MAY / 17: 132.000 .... .... .... 136.000 .... 131.000 132.000 .... .... .... - 15-SEP / 18: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN-0003 / 19: 12.000 .... .... .... 16.000 .... 11.000 12.000 .... .... .... - 14-FEB-0003 / 20: 42.000 .... .... .... 46.000 .... 41.000 42.000 .... .... .... - 16-MAR-0003 / 21: .... .... .... .... .... .... .... .... .... .... .... -l200n/l=12:21/i=-19:-9 $2_void[x=@fnr,t=@fnr] - !-> list/width=200/nohead/l=12:21/i=-19:-9 v2d_reg_void[x=@fnr,t=@fnr] - 14-SEP / 12: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN / 13: 12.000 12.000 14.000 16.000 16.000 .... 11.000 12.000 12.000 14.000 16.000 - 14-FEB / 14: 42.000 42.000 44.000 46.000 46.000 .... 41.000 42.000 42.000 44.000 46.000 - 16-MAR / 15: 72.000 72.000 74.000 76.000 76.000 .... 71.000 72.000 72.000 74.000 76.000 - 15-APR / 16: 102.000 102.000 104.000 106.000 106.000 .... 101.000 102.000 102.000 104.000 106.000 - 15-MAY / 17: 132.000 132.000 134.000 136.000 136.000 .... 131.000 132.000 132.000 134.000 136.000 - 15-SEP / 18: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN-0003 / 19: 12.000 12.000 14.000 16.000 16.000 .... 11.000 12.000 12.000 14.000 16.000 - 14-FEB-0003 / 20: 42.000 42.000 44.000 46.000 46.000 .... 41.000 42.000 42.000 44.000 46.000 - 16-MAR-0003 / 21: 72.000 72.000 74.000 76.000 76.000 .... 71.000 72.000 72.000 74.000 76.000 - -! test shift -l200n/l=12:21/i=-19:-9 $2[x=@shf:2,t=@shf:-2] - !-> list/width=200/nohead/l=12:21/i=-19:-9 v2d_reg[x=@shf:2,t=@shf:-2] - 14-SEP / 12: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN / 13: 134.000 135.000 136.000 .... 131.000 .... 133.000 134.000 135.000 136.000 .... - 14-FEB / 14: .... .... .... .... .... .... .... .... .... .... .... - 16-MAR / 15: 14.000 15.000 16.000 .... 11.000 .... 13.000 14.000 15.000 16.000 .... - 15-APR / 16: 44.000 45.000 46.000 .... 41.000 .... 43.000 44.000 45.000 46.000 .... - 15-MAY / 17: 74.000 75.000 76.000 .... 71.000 .... 73.000 74.000 75.000 76.000 .... - 15-SEP / 18: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN-0003 / 19: 134.000 135.000 136.000 .... 131.000 .... 133.000 134.000 135.000 136.000 .... - 14-FEB-0003 / 20: .... .... .... .... .... .... .... .... .... .... .... - 16-MAR-0003 / 21: 14.000 15.000 16.000 .... 11.000 .... 13.000 14.000 15.000 16.000 .... - -! test strides -l200n/order=x $2[l=1,i=0:14] - !-> list/width=200/nohead/order=x v2d_reg[l=1,i=0:14] - .... 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 .... 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 .... -set mode diag; l200n/order=x $2[l=1,i=0:14:2]; set mode/last diag - !-> list/width=200/nohead/order=x v2d_reg[l=1,i=0:14:2] - dealloc dynamic grid GFJ3 XAX_SUBSPANORMAL NORMAL TAX_SUBSPA - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) (AX025) NORMAL NORMAL TAX_SUBSPA - dealloc dynamic grid (G010) (AX025) NORMAL NORMAL TAX_SUBSPA - allocate dynamic grid (G010) (AX025) NORMAL NORMAL TAX_SUBSPA - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G010) (AX025) NORMAL NORMAL TAX_SUBSPA - strip regrid on X: V2D_REG --> (G010) @XACT - found V2D_REG M:111 dset: 1 I: 0 14 J: -999 -999 K: -999 -999 L: 1 1 - regrid V2D_REG M:110 dset: 1 I: 1 8 J: -999 -999 K: -999 -999 L: 1 1 - dealloc dynamic grid (G010) (AX025) NORMAL NORMAL TAX_SUBSPA - .... 12.0000 14.0000 16.0000 11.0000 13.0000 15.0000 .... -l200n/order=x $2[l=1,i=0:14:7] - !-> list/width=200/nohead/order=x v2d_reg[l=1,i=0:14:7] - ............ -set mode diag; l200n $2[i=1,l=1:15:2]; set mode/last diag - !-> list/width=200/nohead v2d_reg[i=1,l=1:15:2] - dealloc dynamic grid (G010) (AX018) NORMAL NORMAL TAX_SUBSPA - -DELETE V2D_REG M:109 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G010) XAX_SUBSPANORMAL NORMAL (AX025) - dealloc dynamic grid (G010) XAX_SUBSPANORMAL NORMAL (AX025) - allocate dynamic grid (G010) XAX_SUBSPANORMAL NORMAL (AX025) - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G010) XAX_SUBSPANORMAL NORMAL (AX025) - strip regrid on T: V2D_REG --> (G010) @XACT - strip moduloing V2D_REG on T axis: 1 15 dset: 1 - rdstride V2D_REG C: 9 dset: 1 I: 1 1 J: -999 -999 K: -999 -999 L: 1 5 - doing moduloing V2D_REG on T axis: 1 5 dset: 1 - -DELETE V2D_REG M:109 dset: 1 I: 1 1 J: -999 -999 K: -999 -999 L: 1 5 - nulrgd V2D_REG M:109 dset: 1 I: 1 1 J: -999 -999 K: -999 -999 L: 1 8 - -DELETE V2D_REG M:107 dset: 1 I: 1 1 J: -999 -999 K: -999 -999 L: 1 15 - dealloc dynamic grid (G010) XAX_SUBSPANORMAL NORMAL (AX025) - 16-JAN-0000 / 1: 11.000 - 16-MAR-0000 / 2: 71.000 - 15-MAY-0000 / 3: 131.000 - 15-JAN-0001 / 4: 11.000 - 16-MAR-0001 / 5: 71.000 - 15-MAY-0001 / 6: 131.000 - 15-JAN-0002 / 7: 11.000 - 16-MAR-0002 / 8: 71.000 -l200n $2[i=1,l=1:15:3] - !-> list/width=200/nohead v2d_reg[i=1,l=1:15:3] - 16-JAN-0000 / 1: 11.000 - 15-APR-0000 / 2: 101.000 - 15-JAN-0001 / 3: 11.000 - 15-APR-0001 / 4: 101.000 - 15-JAN-0002 / 5: 11.000 -l200n $2[i=1,l=1:15:4] - !-> list/width=200/nohead v2d_reg[i=1,l=1:15:4] - 16-JAN-0000 / 1: 11.000 - 15-MAY-0000 / 2: 131.000 - 16-MAR-0001 / 3: 71.000 - 15-JAN-0002 / 4: 11.000 -l200n $2[i=0:14:2,l=1:15:3] - !-> list/width=200/nohead v2d_reg[i=0:14:2,l=1:15:3] - 16-JAN-0000 / 1: .... 12.000 14.000 16.000 11.000 13.000 15.000 .... - 15-APR-0000 / 2: .... 102.000 104.000 106.000 101.000 103.000 105.000 .... - 15-JAN-0001 / 3: .... 12.000 14.000 16.000 11.000 13.000 15.000 .... - 15-APR-0001 / 4: .... 102.000 104.000 106.000 101.000 103.000 105.000 .... - 15-JAN-0002 / 5: .... 12.000 14.000 16.000 11.000 13.000 15.000 .... - -! test modulo regridding -define axis/t=15-jan-1981:15-dec-1990/npoints=120 t1980s -LET/quiet time_series = MOD(L[gt=t1980s]-1,12)+1 -list time_series[gt=($TAXNAME)@mod] - !-> list time_series[gt=TAX_SUBSPAN1@mod] - VARIABLE : MOD(L[GT=T1980S]-1,12)+1 - regrid: 30 day on T@MOD - SUBSET : 5 points (TIME) - 16-JAN / 1: 1.00000 - 15-FEB / 2: 2.00000 - 16-MAR / 3: 3.00000 - 15-APR / 4: 4.00000 - 15-MAY / 5: 5.00000 -list time_series[gt=($TAXNAME)@modngd] - !-> list time_series[gt=TAX_SUBSPAN1@modngd] - VARIABLE : MOD(L[GT=T1980S]-1,12)+1 (# of points) - regrid: 30 day on T@MODNGD - SUBSET : 5 points (TIME) - 16-JAN / 1: 10.0000 - 15-FEB / 2: 10.0000 - 16-MAR / 3: 10.0000 - 15-APR / 4: 10.0000 - 15-MAY / 5: 10.0000 -list/nohead/l=1001:1009 time_series[gt=($TAXNAME)@mod] - !-> list/nohead/l=1001:1009 time_series[gt=TAX_SUBSPAN1@mod] - 16-MAY-0166 / 1001: 5.00000 - 15-SEP-0166 / 1002: .... - 16-JAN-0167 / 1003: 1.00000 - 15-FEB-0167 / 1004: 2.00000 - 17-MAR-0167 / 1005: 3.00000 - 16-APR-0167 / 1006: 4.00000 - 16-MAY-0167 / 1007: 5.00000 - 16-SEP-0167 / 1008: .... - 16-JAN-0168 / 1009: 1.00000 - -! test modulo string arrays -list $1_strings[i=5:7] ! via IS_SUBSPAN_FILL - !-> list vreg_strings[i=5:7] - VARIABLE : MY_STRINGS[GX=XAX_SUBSPAN@ASN] - FILENAME : test_subspan_modulo.nc - SUBSET : 3 points (X) - 45 / 5:"a5" - 46 / 6:"a6" - 93.5 / 7:"" -list $1_strings[i=1013:1024] ! via IS_MODULO - !-> list vreg_strings[i=1013:1024] - VARIABLE : MY_STRINGS[GX=XAX_SUBSPAN@ASN] - FILENAME : test_subspan_modulo.nc - SUBSET : 12 points (X) - 14445 / 1013:"a5" - 14446 / 1014:"a6" - 14493.5 / 1015:"" - 14541 / 1016:"a1" - 14542 / 1017:"a2" - 14543 / 1018:"a3" - 14544 / 1019:"a4" - 14545 / 1020:"a5" - 14546 / 1021:"a6" - 14593.5 / 1022:"" - 14641 / 1023:"a1" - 14642 / 1024:"a2" -SAY ********** END OF REGULAR AXIS TEST ************** -********** END OF REGULAR AXIS TEST ************** -SAY ********** START OF IRREGULAR AXIS TEST ************** -********** START OF IRREGULAR AXIS TEST ************** -go bn_subspan_modulo.sub2 virr v2d_irr -! bn_subspan_modulo.sub -! *sh* 11/02 - -! subroutine for benchmark test bn_subspan_modulo.jnl -! call with -! yes? GO bn_subspan_modulo.sub vreg ! test regular axis -! yes? GO bn_subspan_modulo.sub virr ! test irregular axis - -define alias lsx list/order=x -define alias lsxn list/order=x/nohead - -! check the modulo behavior of the X and T axes -define symbox xaxname `$1,return=xaxis` - !-> define symbox xaxname XIRREG_SUBSPAN -show axis/x=-60:141 ($XAXNAME) - !-> show axis/x=-60:141 XIRREG_SUBSPAN - name axis # pts start end - XIRREG_SUBSPAN X 6mi 41 46 - Axis span (to cell edges) = 6 (modulo length = 100) - - I X XBOX XBOXLO - -7> -106.5 94 -153.5 - -6> -59 1 -59.5 - -5> -58 0.55 -58.5 - -4> -57.9 1 -57.95 - -3> -56 1.45 -56.95 - -2> -55 1 -55.5 - -1> -54 1 -54.5 - 0> -6.5 94 -53.5 - 1> 41 1 40.5 - 2> 42 0.55 41.5 - 3> 42.1 1 42.05 - 4> 44 1.45 43.05 - 5> 45 1 44.5 - 6> 46 1 45.5 - 7> 93.5 94 46.5 - 8> 141 1 140.5 -show axis/x=-60:141:2 ($XAXNAME) - !-> show axis/x=-60:141:2 XIRREG_SUBSPAN - name axis # pts start end - XIRREG_SUBSPAN X 6mi 41 46 - Axis span (to cell edges) = 6 (modulo length = 100) - - I X XBOX XBOXLO - -7> -106.5 94 -153.5 - -5> -58 0.55 -58.5 - -3> -56 1.45 -56.95 - -1> -54 1 -54.5 - 1> 41 1 40.5 - 3> 42.1 1 42.05 - 5> 45 1 44.5 - 7> 93.5 94 46.5 -show axis/x=-60:141:7 ($XAXNAME) - !-> show axis/x=-60:141:7 XIRREG_SUBSPAN - name axis # pts start end - XIRREG_SUBSPAN X 6mi 41 46 - Axis span (to cell edges) = 6 (modulo length = 100) - - I X XBOX XBOXLO - -7> -106.5 94 -153.5 - 0> -6.5 94 -53.5 - 7> 93.5 94 46.5 - -define symbox taxname `$2,return=taxis` - !-> define symbox taxname TIRREG_SUBSPAN1 -show axis/l=3:10 ($TAXNAME) - !-> show axis/l=3:10 TIRREG_SUBSPAN1 - name axis # pts start end - TIRREG_SUBSPAN1 TIME 5mi 16-JAN 12:00 15-MAY 05:57 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 150.2485 (modulo length = 365.2485) - - L T TBOX TBOXLO TSTEP (days) - 3> 15-MAR 17:57:50 31 29-FEB 05:57:50 74.7485 - 4> 15-APR 05:57:50 30 31-MAR 05:57:50 105.2485 - 5> 15-MAY 05:57:50 30 30-APR 05:57:50 135.2485 - 6> 14-SEP 17:57:50 215 30-MAY 05:57:50 257.7485 - 7> 15-JAN 17:57:50 31 31-DEC 05:57:50 380.7485 - 8> 14-FEB 08:56:45 28.2485 31-JAN 05:57:50 410.3727 - 9> 15-MAR 23:55:40 31 28-FEB 11:55:40 439.997 - 10> 15-APR 11:55:40 30 31-MAR 11:55:40 470.497 -show axis/l=3:10:3 ($TAXNAME) - !-> show axis/l=3:10:3 TIRREG_SUBSPAN1 - name axis # pts start end - TIRREG_SUBSPAN1 TIME 5mi 16-JAN 12:00 15-MAY 05:57 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 150.2485 (modulo length = 365.2485) - - L T TBOX TBOXLO TSTEP (days) - 3> 15-MAR 17:57:50 31 29-FEB 05:57:50 74.7485 - 6> 14-SEP 17:57:50 215 30-MAY 05:57:50 257.7485 - 9> 15-MAR 23:55:40 31 28-FEB 11:55:40 439.997 -show axis/l=3:10:6 ($TAXNAME) - !-> show axis/l=3:10:6 TIRREG_SUBSPAN1 - name axis # pts start end - TIRREG_SUBSPAN1 TIME 5mi 16-JAN 12:00 15-MAY 05:57 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 150.2485 (modulo length = 365.2485) - - L T TBOX TBOXLO TSTEP (days) - 3> 15-MAR 17:57:50 31 29-FEB 05:57:50 74.7485 - 9> 15-MAR 23:55:40 31 28-FEB 11:55:40 439.997 - -set mode diag -set mode stupid ! always re-read and recompute -lsx $1 ! default avoids void points - !-> list/order=x virr - dealloc dynamic grid GFJ4 XIRREG_SUBNORMAL NORMAL TIRREG_SUB - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GFJ2 XIRREG_SUBNORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: 1 6 J: -999 -999 K: -999 -999 L: -999 -999 - reading VIRR M: 96 dset: 1 I: 1 6 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : X[GX=XIRREG_SUBSPAN] -40 + 10 - FILENAME : test_subspan_modulo.nc - SUBSET : 6 points (X) - 41 42 42.1 44 45 46 - 1 2 3 4 5 6 - 11.0000 12.0000 12.1000 14.0000 15.0000 16.0000 -lsxn/x=100 $1 ! void point above, alone (via "modulo-void-filling") - !-> list/order=x/nohead/x=100 virr - strip limits reconciliation : EX#1 - strip modulo-void-filling EX#1 on X axis: 7 7 dset: 1 - eval EX#1 C: 6 dset: 1 I: 6 6 J: -999 -999 K: -999 -999 L: -999 -999 - reading VIRR M: 90 dset: 1 I: 6 6 J: -999 -999 K: -999 -999 L: -999 -999 - doing modulo-void-filling VIRR on X axis: 6 6 dset: 1 - .... -lsxn/x=0 $1 ! void point below, alone (via modulo) - !-> list/order=x/nohead/x=0 virr - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 0 0 J: -999 -999 K: -999 -999 L: -999 -999 - strip moduloing VIRR on X axis: 0 0 dset: 1 - reading VIRR M: 87 dset: 1 I: 6 6 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing VIRR on X axis: 6 6 dset: 1 - .... -lsxn/x=45:100 $1 ! void above (via subspan-fill) - !-> list/order=x/nohead/x=45:100 virr - strip limits reconciliation : EX#1 - strip modulo-void-filling EX#1 on X axis: 5 7 dset: 1 - eval EX#1 C: 6 dset: 1 I: 5 6 J: -999 -999 K: -999 -999 L: -999 -999 - reading VIRR M: 85 dset: 1 I: 5 6 J: -999 -999 K: -999 -999 L: -999 -999 - doing modulo-void-filling VIRR on X axis: 5 6 dset: 1 - 15.0000 16.0000 .... -lsxn/x=0:100 $1 ! voids above & below (via modulo) - !-> list/order=x/nohead/x=0:100 virr - strip limits reconciliation : EX#1 - strip modulo-void-filling EX#1 on X axis: 0 7 dset: 1 - eval EX#1 C: 6 dset: 1 I: 0 6 J: -999 -999 K: -999 -999 L: -999 -999 - strip moduloing VIRR on X axis: 0 6 dset: 1 - reading VIRR M: 83 dset: 1 I: 1 6 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing VIRR on X axis: 1 6 dset: 1 - doing modulo-void-filling VIRR on X axis: 0 6 dset: 1 - .... 11.0000 12.0000 12.1000 14.0000 15.0000 16.0000 .... -set mode/last diag -lsxn/x=50:160 $1 ! modulo above - !-> list/order=x/nohead/x=50:160 virr - .... 11.0000 12.0000 12.1000 14.0000 15.0000 16.0000 .... -lsxn/x=-100:40 $1 ! modulo below - !-> list/order=x/nohead/x=-100:40 virr - .... 11.0000 12.0000 12.1000 14.0000 15.0000 16.0000 .... -lsxn/x=-100:160 $1 ! modulo above & below - !-> list/order=x/nohead/x=-100:160 virr - ... listing every 2th point - . .... 12.0000 14.0000 16.0000 11.0000 12.1000 15.0000 .... 12.0000 14.0000 16.0000 - -! end point testing -lsxn/i=-8:-2 $1 - !-> list/order=x/nohead/i=-8:-2 virr - 16.0000 .... 11.0000 12.0000 12.1000 14.0000 15.0000 -lsxn/i=-7:-2 $1 - !-> list/order=x/nohead/i=-7:-2 virr - .... 11.0000 12.0000 12.1000 14.0000 15.0000 -lsxn/i=-6:-2 $1 - !-> list/order=x/nohead/i=-6:-2 virr - 11.0000 12.0000 12.1000 14.0000 15.0000 -lsxn/i=17:20 $1 - !-> list/order=x/nohead/i=17:20 virr - 12.1000 14.0000 15.0000 16.0000 -lsxn/i=17:21 $1 - !-> list/order=x/nohead/i=17:21 virr - 12.1000 14.0000 15.0000 16.0000 .... -lsxn/i=17:22 $1 - !-> list/order=x/nohead/i=17:22 virr - 12.1000 14.0000 15.0000 16.0000 .... 11.0000 -set mode/last stupid - -! test smoothers - pos and neg modulo and combined mod and context edges -lsx/x=500:600 $1_ragged - !-> list/order=x/x=500:600 virr_ragged - VARIABLE : VIRR + NOISE[G=VIRR@ASN] - FILENAME : test_subspan_modulo.nc - SUBSET : 8 points (X) - 493.5 541 542 542.1 544 545 546 593.5 - 35 36 37 38 39 40 41 42 - .... 10.9466 12.0566 12.0354 14.2434 14.9391 15.9921 .... -lsxn/x=500:600 $1_ragged[x=@sbx] - !-> list/order=x/nohead/x=500:600 virr_ragged[x=@sbx] - .... .... 11.6795 12.7784 13.7393 15.0582 .... .... -lsxn/x=500:545 $1_ragged[x=@sbx] - !-> list/order=x/nohead/x=500:545 virr_ragged[x=@sbx] - .... .... 11.6795 12.7784 13.7393 15.0582 -lsxn/x=545:600 $1_ragged[x=@sbx] - !-> list/order=x/nohead/x=545:600 virr_ragged[x=@sbx] - 15.0582 .... .... - -lsxn/x=-100:0 $1_ragged - !-> list/order=x/nohead/x=-100:0 virr_ragged - .... 10.9466 12.0566 12.0354 14.2434 14.9391 15.9921 .... -lsxn/x=-100:0 $1_ragged[x=@sbx] - !-> list/order=x/nohead/x=-100:0 virr_ragged[x=@sbx] - .... .... 11.6795 12.7784 13.7393 15.0582 .... .... -lsxn/x=-100:-55 $1_ragged[x=@sbx] - !-> list/order=x/nohead/x=-100:-55 virr_ragged[x=@sbx] - .... .... 11.6795 12.7784 13.7393 15.0582 -lsxn/x=-56:0 $1_ragged[x=@sbx] - !-> list/order=x/nohead/x=-56:0 virr_ragged[x=@sbx] - 13.7393 15.0582 .... .... - -lsxn/x=-100:142/wid=200 $1_ragged - !-> list/order=x/nohead/x=-100:142/wid=200 virr_ragged - .... 10.9466 12.0566 12.0354 14.2434 14.9391 15.9921 .... 10.9466 12.0566 12.0354 14.2434 14.9391 15.9921 .... 10.9466 12.0566 -lsxn/x=-100:142/wid=200 $1_ragged[x=@sbx:3] - !-> list/order=x/nohead/x=-100:142/wid=200 virr_ragged[x=@sbx:3] - .... .... 11.6795 12.7784 13.7393 15.0582 .... .... .... 11.6795 12.7784 13.7393 15.0582 .... .... .... 11.6795 -lsxn/x=-100:142/wid=200 $1_ragged[x=@swl:5] - !-> list/order=x/nohead/x=-100:142/wid=200 virr_ragged[x=@swl:5] - .... .... .... 12.8042 13.8351 .... .... .... .... .... 12.8042 13.8351 .... .... .... .... .... -lsxn/x=-100:142/wid=200 $1_ragged[x=@swl:35] - !-> list/order=x/nohead/x=-100:142/wid=200 virr_ragged[x=@swl:35] - .................................................................... - -! test fillers - pos and neg modulo and combined mod and context edges -! @FAV -lsx/x=500:600 $1_void - !-> list/order=x/x=500:600 virr_void - VARIABLE : IF X[G=VIRR] LT 43 OR X[G=VIRR] GT 45 THEN VIRR - FILENAME : test_subspan_modulo.nc - SUBSET : 8 points (X) - 493.5 541 542 542.1 544 545 546 593.5 - 35 36 37 38 39 40 41 42 - .... 11.0000 12.0000 12.1000 .... .... 16.0000 .... -lsxn/x=500:600 $1_void[x=@fav] - !-> list/order=x/nohead/x=500:600 virr_void[x=@fav] - .... 11.0000 12.0000 12.1000 12.1000 16.0000 16.0000 .... - -lsxn/x=-100:0 $1_void - !-> list/order=x/nohead/x=-100:0 virr_void - .... 11.0000 12.0000 12.1000 .... .... 16.0000 .... -lsxn/x=-100:0 $1_void[x=@fav] - !-> list/order=x/nohead/x=-100:0 virr_void[x=@fav] - .... 11.0000 12.0000 12.1000 12.1000 16.0000 16.0000 .... - -lsxn/x=-100:142/wid=200 $1_void - !-> list/order=x/nohead/x=-100:142/wid=200 virr_void - .... 11.0000 12.0000 12.1000 .... .... 16.0000 .... 11.0000 12.0000 12.1000 .... .... 16.0000 .... 11.0000 12.0000 -lsxn/x=-100:142/wid=200 $1_void[x=@fav:3] - !-> list/order=x/nohead/x=-100:142/wid=200 virr_void[x=@fav:3] - .... 11.0000 12.0000 12.1000 12.1000 16.0000 16.0000 .... 11.0000 12.0000 12.1000 12.1000 16.0000 16.0000 .... 11.0000 12.0000 -lsxn/x=-100:142/wid=200 $1_void[x=@fav:5] - !-> list/order=x/nohead/x=-100:142/wid=200 virr_void[x=@fav:5] - .... 11.0000 12.0000 12.1000 13.3667 14.0500 16.0000 .... 11.0000 12.0000 12.1000 13.3667 14.0500 16.0000 .... 11.0000 12.0000 -lsxn/x=-100:142/wid=200 $1_void[x=@fav:35] - !-> list/order=x/nohead/x=-100:142/wid=200 virr_void[x=@fav:35] - .... 11.0000 12.0000 12.1000 12.7750 12.7750 16.0000 .... 11.0000 12.0000 12.1000 12.7750 12.7750 16.0000 .... 11.0000 12.0000 - -! @FLN -lsxn/x=500:600 $1_void - !-> list/order=x/nohead/x=500:600 virr_void - .... 11.0000 12.0000 12.1000 .... .... 16.0000 .... -lsxn/x=500:600 $1_void[x=@fln] - !-> list/order=x/nohead/x=500:600 virr_void[x=@fln] - .... 11.0000 12.0000 12.1000 14.0000 15.0000 16.0000 .... - -lsxn/x=-100:0 $1_void - !-> list/order=x/nohead/x=-100:0 virr_void - .... 11.0000 12.0000 12.1000 .... .... 16.0000 .... -lsxn/x=-100:0 $1_void[x=@fln] - !-> list/order=x/nohead/x=-100:0 virr_void[x=@fln] - .... 11.0000 12.0000 12.1000 14.0000 15.0000 16.0000 .... - -lsxn/x=-100:142/wid=200 $1_void - !-> list/order=x/nohead/x=-100:142/wid=200 virr_void - .... 11.0000 12.0000 12.1000 .... .... 16.0000 .... 11.0000 12.0000 12.1000 .... .... 16.0000 .... 11.0000 12.0000 -lsxn/x=-100:142/wid=200 $1_void[x=@fln:35] - !-> list/order=x/nohead/x=-100:142/wid=200 virr_void[x=@fln:35] - .... 11.0000 12.0000 12.1000 14.0000 15.0000 16.0000 .... 11.0000 12.0000 12.1000 14.0000 15.0000 16.0000 .... 11.0000 12.0000 - -! @FNR -lsxn/x=500:600 $1_void - !-> list/order=x/nohead/x=500:600 virr_void - .... 11.0000 12.0000 12.1000 .... .... 16.0000 .... -lsxn/x=500:600 $1_void[x=@fnr] - !-> list/order=x/nohead/x=500:600 virr_void[x=@fnr] - .... 11.0000 12.0000 12.1000 12.1000 16.0000 16.0000 .... - -lsxn/x=-100:0 $1_void - !-> list/order=x/nohead/x=-100:0 virr_void - .... 11.0000 12.0000 12.1000 .... .... 16.0000 .... -lsxn/x=-100:0 $1_void[x=@fnr] - !-> list/order=x/nohead/x=-100:0 virr_void[x=@fnr] - .... 11.0000 12.0000 12.1000 12.1000 16.0000 16.0000 .... - -lsxn/x=-100:142/wid=200 $1_void - !-> list/order=x/nohead/x=-100:142/wid=200 virr_void - .... 11.0000 12.0000 12.1000 .... .... 16.0000 .... 11.0000 12.0000 12.1000 .... .... 16.0000 .... 11.0000 12.0000 -lsxn/x=-100:142/wid=200 $1_void[x=@fnr:35] - !-> list/order=x/nohead/x=-100:142/wid=200 virr_void[x=@fnr:35] - .... 11.0000 12.0000 12.1000 12.1000 16.0000 16.0000 .... 11.0000 12.0000 12.1000 12.1000 16.0000 16.0000 .... 11.0000 12.0000 - -! Test 2-axis modulo (longitude and time) -define alias l200 list/width=200 -define alias l200n list/width=200/nohead -l200/i=1:13 $2 - !-> list/width=200/nohead/i=1:13 v2d_irr - 16-JAN 12 / 1: 11.000 12.000 12.100 14.000 15.000 16.000 .... 11.000 12.000 12.100 14.000 15.000 16.000 - 15-FEB 02 / 2: 42.000 43.000 43.100 45.000 46.000 47.000 .... 42.000 43.000 43.100 45.000 46.000 47.000 - 15-MAR 17 / 3: 70.249 71.249 71.349 73.249 74.249 75.249 .... 70.249 71.249 71.349 73.249 74.249 75.249 - 15-APR 05 / 4: 101.249 102.249 102.349 104.249 105.249 106.249 .... 101.249 102.249 102.349 104.249 105.249 106.249 - 15-MAY 05 / 5: 131.249 132.249 132.349 134.249 135.249 136.249 .... 131.249 132.249 132.349 134.249 135.249 136.249 -l200n/l=1:12 $2 - !-> list/width=200/nohead/l=1:12 v2d_irr - 16-JAN 12 / 1: 11.000 12.000 12.100 14.000 15.000 16.000 - 15-FEB 02 / 2: 42.000 43.000 43.100 45.000 46.000 47.000 - 15-MAR 17 / 3: 70.249 71.249 71.349 73.249 74.249 75.249 - 15-APR 05 / 4: 101.249 102.249 102.349 104.249 105.249 106.249 - 15-MAY 05 / 5: 131.249 132.249 132.349 134.249 135.249 136.249 - 14-SEP 17 / 6: .... .... .... .... .... .... - 15-JAN 17 / 7: 11.000 12.000 12.100 14.000 15.000 16.000 - 14-FEB 08 / 8: 42.000 43.000 43.100 45.000 46.000 47.000 - 15-MAR 23 / 9: 70.249 71.249 71.349 73.249 74.249 75.249 - 15-APR 11 / 10: 101.249 102.249 102.349 104.249 105.249 106.249 - 15-MAY 11 / 11: 131.249 132.249 132.349 134.249 135.249 136.249 - 14-SEP 23 / 12: .... .... .... .... .... .... -l200n/l=1:12/i=1:11 $2 - !-> list/width=200/nohead/l=1:12/i=1:11 v2d_irr - 16-JAN 12 / 1: 11.000 12.000 12.100 14.000 15.000 16.000 .... 11.000 12.000 12.100 14.000 - 15-FEB 02 / 2: 42.000 43.000 43.100 45.000 46.000 47.000 .... 42.000 43.000 43.100 45.000 - 15-MAR 17 / 3: 70.249 71.249 71.349 73.249 74.249 75.249 .... 70.249 71.249 71.349 73.249 - 15-APR 05 / 4: 101.249 102.249 102.349 104.249 105.249 106.249 .... 101.249 102.249 102.349 104.249 - 15-MAY 05 / 5: 131.249 132.249 132.349 134.249 135.249 136.249 .... 131.249 132.249 132.349 134.249 - 14-SEP 17 / 6: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN 17 / 7: 11.000 12.000 12.100 14.000 15.000 16.000 .... 11.000 12.000 12.100 14.000 - 14-FEB 08 / 8: 42.000 43.000 43.100 45.000 46.000 47.000 .... 42.000 43.000 43.100 45.000 - 15-MAR 23 / 9: 70.249 71.249 71.349 73.249 74.249 75.249 .... 70.249 71.249 71.349 73.249 - 15-APR 11 / 10: 101.249 102.249 102.349 104.249 105.249 106.249 .... 101.249 102.249 102.349 104.249 - 15-MAY 11 / 11: 131.249 132.249 132.349 134.249 135.249 136.249 .... 131.249 132.249 132.349 134.249 - 14-SEP 23 / 12: .... .... .... .... .... .... .... .... .... .... .... -! list outside the native range with /L=1:21. Date listings show years beyond 0002 -l200n/l=12:21/i=-19:-9 $2 - !-> list/width=200/nohead/l=12:21/i=-19:-9 v2d_irr - 14-SEP 23 / 12: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN 23 / 13: 12.000 12.100 14.000 15.000 16.000 .... 11.000 12.000 12.100 14.000 15.000 - 14-FEB 14 / 14: 43.000 43.100 45.000 46.000 47.000 .... 42.000 43.000 43.100 45.000 46.000 - 16-MAR 05 / 15: 71.249 71.349 73.249 74.249 75.249 .... 70.249 71.249 71.349 73.249 74.249 - 15-APR 17 / 16: 102.249 102.349 104.249 105.249 106.249 .... 101.249 102.249 102.349 104.249 105.249 - 15-MAY 17 / 17: 132.249 132.349 134.249 135.249 136.249 .... 131.249 132.249 132.349 134.249 135.249 - 15-SEP 05 / 18: .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-0003 05 / 19: 12.000 12.100 14.000 15.000 16.000 .... 11.000 12.000 12.100 14.000 15.000 - 14-FEB-0003 20 / 20: 43.000 43.100 45.000 46.000 47.000 .... 42.000 43.000 43.100 45.000 46.000 - 16-MAR-0003 11 / 21: 71.249 71.349 73.249 74.249 75.249 .... 70.249 71.249 71.349 73.249 74.249 -l200n/l=12:21/i=-19:-9 $2_void - !-> list/width=200/nohead/l=12:21/i=-19:-9 v2d_irr_void - 14-SEP 23 / 12: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN 23 / 13: 12.000 12.100 .... .... 16.000 .... 11.000 12.000 12.100 .... .... - 14-FEB 14 / 14: 43.000 43.100 .... .... 47.000 .... 42.000 43.000 43.100 .... .... - 16-MAR 05 / 15: .... .... .... .... .... .... .... .... .... .... .... - 15-APR 17 / 16: 102.249 102.349 .... .... 106.249 .... 101.249 102.249 102.349 .... .... - 15-MAY 17 / 17: 132.249 132.349 .... .... 136.249 .... 131.249 132.249 132.349 .... .... - 15-SEP 05 / 18: .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-0003 05 / 19: 12.000 12.100 .... .... 16.000 .... 11.000 12.000 12.100 .... .... - 14-FEB-0003 20 / 20: 43.000 43.100 .... .... 47.000 .... 42.000 43.000 43.100 .... .... - 16-MAR-0003 11 / 21: .... .... .... .... .... .... .... .... .... .... .... -l200n/l=12:21/i=-19:-9 $2_void[x=@fnr,t=@fnr] - !-> list/width=200/nohead/l=12:21/i=-19:-9 v2d_irr_void[x=@fnr,t=@fnr] - 14-SEP 23 / 12: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN 23 / 13: 12.000 12.100 12.100 16.000 16.000 .... 11.000 12.000 12.100 12.100 16.000 - 14-FEB 14 / 14: 43.000 43.100 43.100 47.000 47.000 .... 42.000 43.000 43.100 43.100 47.000 - 16-MAR 05 / 15: 72.624 72.724 72.724 76.624 76.624 .... 71.624 72.624 72.724 72.724 76.624 - 15-APR 17 / 16: 102.249 102.349 102.349 106.249 106.249 .... 101.249 102.249 102.349 102.349 106.249 - 15-MAY 17 / 17: 132.249 132.349 132.349 136.249 136.249 .... 131.249 132.249 132.349 132.349 136.249 - 15-SEP 05 / 18: .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-0003 05 / 19: 12.000 12.100 12.100 16.000 16.000 .... 11.000 12.000 12.100 12.100 16.000 - 14-FEB-0003 20 / 20: 43.000 43.100 43.100 47.000 47.000 .... 42.000 43.000 43.100 43.100 47.000 - 16-MAR-0003 11 / 21: 72.624 72.724 72.724 76.624 76.624 .... 71.624 72.624 72.724 72.724 76.624 - -! test shift -l200n/l=12:21/i=-19:-9 $2[x=@shf:2,t=@shf:-2] - !-> list/width=200/nohead/l=12:21/i=-19:-9 v2d_irr[x=@shf:2,t=@shf:-2] - 14-SEP 23 / 12: .... .... .... .... .... .... .... .... .... .... .... - 15-JAN 23 / 13: 134.249 135.249 136.249 .... 131.249 .... 132.349 134.249 135.249 136.249 .... - 14-FEB 14 / 14: .... .... .... .... .... .... .... .... .... .... .... - 16-MAR 05 / 15: 14.000 15.000 16.000 .... 11.000 .... 12.100 14.000 15.000 16.000 .... - 15-APR 17 / 16: 45.000 46.000 47.000 .... 42.000 .... 43.100 45.000 46.000 47.000 .... - 15-MAY 17 / 17: 73.249 74.249 75.249 .... 70.249 .... 71.349 73.249 74.249 75.249 .... - 15-SEP 05 / 18: .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-0003 05 / 19: 134.249 135.249 136.249 .... 131.249 .... 132.349 134.249 135.249 136.249 .... - 14-FEB-0003 20 / 20: .... .... .... .... .... .... .... .... .... .... .... - 16-MAR-0003 11 / 21: 14.000 15.000 16.000 .... 11.000 .... 12.100 14.000 15.000 16.000 .... - -! test strides -l200n/order=x $2[l=1,i=0:14] - !-> list/width=200/nohead/order=x v2d_irr[l=1,i=0:14] - .... 11.0000 12.0000 12.1000 14.0000 15.0000 16.0000 .... 11.0000 12.0000 12.1000 14.0000 15.0000 16.0000 .... -set mode diag; l200n/order=x $2[l=1,i=0:14:2]; set mode/last diag - !-> list/width=200/nohead/order=x v2d_irr[l=1,i=0:14:2] - dealloc dynamic grid GFJ4 XIRREG_SUBNORMAL NORMAL TIRREG_SUB - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G017) (AX018) NORMAL NORMAL TIRREG_SUB - dealloc dynamic grid (G017) (AX018) NORMAL NORMAL TIRREG_SUB - allocate dynamic grid (G017) (AX018) NORMAL NORMAL TIRREG_SUB - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G017) (AX018) NORMAL NORMAL TIRREG_SUB - strip regrid on X: V2D_IRR --> (G017) @XACT - found V2D_IRR M:228 dset: 1 I: 0 14 J: -999 -999 K: -999 -999 L: 1 1 - regrid V2D_IRR M:223 dset: 1 I: 1 8 J: -999 -999 K: -999 -999 L: 1 1 - dealloc dynamic grid (G017) (AX018) NORMAL NORMAL TIRREG_SUB - .... 12.0000 14.0000 16.0000 11.0000 12.1000 15.0000 .... -l200n/order=x $2[l=1,i=0:14:7] - !-> list/width=200/nohead/order=x v2d_irr[l=1,i=0:14:7] - ............ -set mode diag; l200n $2[i=1,l=1:15:2]; set mode/last diag - !-> list/width=200/nohead v2d_irr[i=1,l=1:15:2] - dealloc dynamic grid (G017) (AX015) NORMAL NORMAL TIRREG_SUB - -DELETE V2D_IRR M:216 dset: 1 I: 1 3 J: -999 -999 K: -999 -999 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G017) XIRREG_SUBNORMAL NORMAL (AX018) - dealloc dynamic grid (G017) XIRREG_SUBNORMAL NORMAL (AX018) - allocate dynamic grid (G017) XIRREG_SUBNORMAL NORMAL (AX018) - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G017) XIRREG_SUBNORMAL NORMAL (AX018) - strip regrid on T: V2D_IRR --> (G017) @XACT - strip moduloing V2D_IRR on T axis: 1 15 dset: 1 - rdstride V2D_IRR C: 9 dset: 1 I: 1 1 J: -999 -999 K: -999 -999 L: 1 5 - doing moduloing V2D_IRR on T axis: 1 5 dset: 1 - -DELETE V2D_IRR M:216 dset: 1 I: 1 1 J: -999 -999 K: -999 -999 L: 1 5 - nulrgd V2D_IRR M:216 dset: 1 I: 1 1 J: -999 -999 K: -999 -999 L: 1 8 - -DELETE V2D_IRR M:230 dset: 1 I: 1 1 J: -999 -999 K: -999 -999 L: 1 15 - dealloc dynamic grid (G017) XIRREG_SUBNORMAL NORMAL (AX018) - 16-JAN-0000 / 1: 11.000 - 15-MAR-0000 / 2: 70.249 - 15-MAY-0000 / 3: 131.249 - 15-JAN-0001 / 4: 11.000 - 15-MAR-0001 / 5: 70.249 - 15-MAY-0001 / 6: 131.249 - 15-JAN-0002 / 7: 11.000 - 16-MAR-0002 / 8: 70.249 -l200n $2[i=1,l=1:15:3] - !-> list/width=200/nohead v2d_irr[i=1,l=1:15:3] - 16-JAN-0000 / 1: 11.000 - 15-APR-0000 / 2: 101.249 - 15-JAN-0001 / 3: 11.000 - 15-APR-0001 / 4: 101.249 - 15-JAN-0002 / 5: 11.000 -l200n $2[i=1,l=1:15:4] - !-> list/width=200/nohead v2d_irr[i=1,l=1:15:4] - 16-JAN-0000 / 1: 11.000 - 15-MAY-0000 / 2: 131.249 - 15-MAR-0001 / 3: 70.249 - 15-JAN-0002 / 4: 11.000 -l200n $2[i=0:14:2,l=1:15:3] - !-> list/width=200/nohead v2d_irr[i=0:14:2,l=1:15:3] - 16-JAN-0000 / 1: .... 12.000 14.000 16.000 11.000 12.100 15.000 .... - 15-APR-0000 / 2: .... 102.249 104.249 106.249 101.249 102.349 105.249 .... - 15-JAN-0001 / 3: .... 12.000 14.000 16.000 11.000 12.100 15.000 .... - 15-APR-0001 / 4: .... 102.249 104.249 106.249 101.249 102.349 105.249 .... - 15-JAN-0002 / 5: .... 12.000 14.000 16.000 11.000 12.100 15.000 .... - -! test modulo regridding -define axis/t=15-jan-1981:15-dec-1990/npoints=120 t1980s -LET/quiet time_series = MOD(L[gt=t1980s]-1,12)+1 -list time_series[gt=($TAXNAME)@mod] - !-> list time_series[gt=TIRREG_SUBSPAN1@mod] - VARIABLE : MOD(L[GT=T1980S]-1,12)+1 - regrid: on T@MOD - SUBSET : 5 points (TIME) - 16-JAN 12 / 1: 1.00000 - 15-FEB 02 / 2: 2.00000 - 15-MAR 17 / 3: 3.00000 - 15-APR 05 / 4: 4.00000 - 15-MAY 05 / 5: 5.00000 -list time_series[gt=($TAXNAME)@modngd] - !-> list time_series[gt=TIRREG_SUBSPAN1@modngd] - VARIABLE : MOD(L[GT=T1980S]-1,12)+1 (# of points) - regrid: on T@MODNGD - SUBSET : 5 points (TIME) - 16-JAN 12 / 1: 10.0000 - 15-FEB 02 / 2: 10.0000 - 15-MAR 17 / 3: 10.0000 - 15-APR 05 / 4: 10.0000 - 15-MAY 05 / 5: 10.0000 -list/nohead/l=1001:1009 time_series[gt=($TAXNAME)@mod] - !-> list/nohead/l=1001:1009 time_series[gt=TIRREG_SUBSPAN1@mod] - 16-MAY-0166 11 / 1001: 5.00000 - 15-SEP-0166 23 / 1002: .... - 16-JAN-0167 23 / 1003: 1.00000 - 15-FEB-0167 14 / 1004: 2.00000 - 17-MAR-0167 05 / 1005: 3.00000 - 16-APR-0167 17 / 1006: 4.00000 - 16-MAY-0167 17 / 1007: 5.00000 - 16-SEP-0167 05 / 1008: .... - 17-JAN-0168 05 / 1009: 1.00000 - -! test modulo string arrays -list $1_strings[i=5:7] ! via IS_SUBSPAN_FILL - !-> list virr_strings[i=5:7] - VARIABLE : MY_STRINGS[GX=XIRREG_SUBSPAN@ASN] - FILENAME : test_subspan_modulo.nc - SUBSET : 3 points (X) - 45 / 5:"a5" - 46 / 6:"a6" - 93.5 / 7:"" -list $1_strings[i=1013:1024] ! via IS_MODULO - !-> list virr_strings[i=1013:1024] - VARIABLE : MY_STRINGS[GX=XIRREG_SUBSPAN@ASN] - FILENAME : test_subspan_modulo.nc - SUBSET : 12 points (X) - 14445 / 1013:"a5" - 14446 / 1014:"a6" - 14493.5 / 1015:"" - 14541 / 1016:"a1" - 14542 / 1017:"a2" - 14542.1 / 1018:"a3" - 14544 / 1019:"a4" - 14545 / 1020:"a5" - 14546 / 1021:"a6" - 14593.5 / 1022:"" - 14641 / 1023:"a1" - 14642 / 1024:"a2" - - - -GO bn_reset bn_dots -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dots -GO bn_dots -! PLOT/SYMBOL=DOT qualifiers -! *acm* 12/02 -! ACM 4/2005 set mode meta to save this plot for the metafile checks. -! and cancel mode logo, so that .plt files are comparable. -! 2/18 *acm* keep mode logo turned off -! *kms* 3/18 - size qualifiers for /symbol=dot not an error in pyferret - -set mode meta dots.plt -plot/symbol=dot/i=1:1000 sin(62.8*i) -plot/symbol=dot/color=red/over/i=1:1000 sin(62.8*(i+20)) -can mode meta - -! test warnings -! plot/symbol=dot/thick/i=1:1000 sin(62.8*(i+10) ) -! plot/symbol=dot/size=0.5/over/i=1:1000 -0.5*sin(62.8*(i+10) ) - -! Vector plots with null-size vectors - -vector/i=1:5/j=1:5 0.*(i+j),0*(i+j) - -GO bn_reset bn_lev_symbols -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_lev_symbols -GO bn_lev_symbols -! Test symbols which capture the latest LEVELS settings -! LEV_TEXT The argument, if any, to the LEV qualifier -! LEV_MIN Minimum level -! LEV_MAX Maximum level -! LEV_NUM Number of levels -! LEV_DEL Delta level (irregular) - -can sym lev* -define symbol lev_text = "" - -shade/i=1:15/j=1:5 i*j -sho sym lev* -LEV_TEXT = """" -LEV_MIN = "0" -LEV_MAX = "76" -LEV_NUM = "38" -LEV_DEL = "2" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76" - -contour/over/i=1:15/j=1:5 i*j -sho sym lev* -LEV_TEXT = """" -LEV_MIN = "0" -LEV_MAX = "80" -LEV_NUM = "8" -LEV_DEL = "10" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "0,10,20,30,40,50,60,70,80" - -contour/over/i=1:15/j=1:5/lev=(0,50,3) i*j -sho sym lev* -LEV_TEXT = "(0,50,3)" -LEV_MIN = "0" -LEV_MAX = "51" -LEV_NUM = "17" -LEV_DEL = "3" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51" - -fill/i=1:15/j=1:5/lev=(0,50,5) i*j -sho sym lev* -LEV_TEXT = "(0,50,5)" -LEV_MIN = "0" -LEV_MAX = "50" -LEV_NUM = "10" -LEV_DEL = "5" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "0,5,10,15,20,25,30,35,40,45,50" - -contour/over/i=1:15/j=1:5/lev=(0,80,3),(56),DARK(56) i*j -sho sym lev* -LEV_TEXT = "(0,80,3),(56),DARK(56)" -LEV_MIN = "0" -LEV_MAX = "81" -LEV_NUM = "28" -LEV_DEL = "irregular" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,56,57,60,63,66,69,72,75,78,81" - -contour/over/i=1:15/j=1:5/lev=50 i*j -sho sym lev* -LEV_TEXT = "50" -LEV_MIN = "0" -LEV_MAX = "76" -LEV_NUM = "38" -LEV_DEL = "2" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76" - - -shade/i=1:15/j=1:5/lev=(0,80,1) i*j -sho sym lev* -LEV_ALL = "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80" -LEV_TEXT = "(0,80,1)" -LEV_MIN = "0" -LEV_MAX = "80" -LEV_NUM = "80" -LEV_DEL = "1" -LEV_CENTERED_LABELS = "off" - -contour/over/i=1:15/j=1:5/lev=(33) i*j -sh sym lev* -LEV_TEXT = "(33)" -LEV_MIN = "33" -LEV_MAX = "33" -LEV_NUM = "1" -LEV_DEL = "none" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "33" - -! GO bn_reset -! GO bench_extrema ! moved to bn_ef_bench_extrema; tests of shared-obj efs. - -GO bn_reset bn_mode_logo_lab -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_mode_logo_lab -GO bn_mode_logo_lab - -! bn_mode_logo_lab.jnl -! cancel both logo and labels -! NOTE this script redefined the pre-defined viewports ul, ur, ll, lr... - - -def view /xlim=0.:0.33/ylim=0.5:1 ul3 -def view /xlim=0.33:0.66/ylim=0.5:1 um3 -def view /xlim=0.66:1./ylim=0.5:1 ur3 - -def view /xlim=0.:0.33/ylim=0.:0.5 ll3 -def view /xlim=0.33:0.66/ylim=0.:0.5 lm3 -def view /xlim=0.66:1./ylim=0.:0.5 lr3 - - -! can mode labels would not plot the logo anyway -set view ul3 -can mode labels -can mode logo -show modes - MODE STATE ARGUMENT - DIAGNOSTIC CANCELED 99 - VERIFY SET DEFAULT - INTERPOLATE CANCELED - IGNORE_ERROR CANCELED - STUPID CANCELED - JOURNAL CANCELED ferret.jnl - LONG_LABEL SET -4 - LATIT_LABEL SET -4 - DEPTH_LABEL SET 4 - CALENDAR SET minutes - E_LABEL SET 4 - F_LABEL SET minutes - ASCII_FONT SET - SEGMENT SET - WAIT CANCELED - DESPERATE CANCELED 0 - GKS SET - REFRESH CANCELED - METAFILE CANCELED dots.plt - PPLLIST CANCELED ppllist.out - GUI CANCELED - LOGO CANCELED - LABELS CANCELED - GRATICULE CANCELED - LINECOLORS SET 6 - UPCASE_OUTPU SET - NLEVELS SET 30 - NODATA_LAB SET - SHRINK_YLAB CANCELED - CURVILINEAR CANCELED - LAYERZ CANCELED - 6D_LAB SET - FRUGAL SET 30 - DATE_FORMAT SET DEFAULT -contour/i=1:10/j=1:10 i/j - -! restore the labels, logo still gone -set view um3 -set mode labels -wire/view=0,0,2/i=1:20/j=1:20/title="My Egg Carton"/nolabel sin(i/3)*cos(j/4) - - -! put only labels, not logo -set view ur3 -set mode labels -can mode logo -go ptest -! Description: create a simple test line plot - -! spirograph picture ... -PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20) - - -! Labels restored, not logo. -! logo is not restored on an /overlay plot -set view ll3 -set mode labels -shade/i=1:10/j=1:10 i*j -set mode logo -! KMS - white changed to green for PyFerret - white causing problems -plot/vs/over/line/color=green {1,4}, {1,9} - -! but the logo is restored on the next plot command. -set view lm3 -fill/i=1:10/j=1:10 i/j - -! Verify for polygon command too -set view lr3 -can mode logo -can mode labels -polygon/axes=1,0,1,0 {1,2,1}, {2,1,0.5} - -! restore state of modes -cancel view -set mode labels - -GO bn_reset bn_modulo_attribute -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_modulo_attribute -GO bn_modulo_attribute -! Ferret V5.50 m - -! Modulo attribute can take numerical values to indicate -! the modulo length of axis (subspan modulo changes) -! This script tests various string values of the attribute -! *acm* list the axis names, otherwise get random TIME* axes defined right now -use modulo_lon_time - -sh ax lon_true, lon_moderr, lon_false, lon_mod_nounits, lon_usual - name axis # pts start end - LON_TRUE LONGITUDE 5mr 1.875W(-1.875) 13.125E - Axis span (to cell edges) = 18.75 (modulo length = 360) - LON_MODERR X (meters) 5 r 0 15 - Axis span (to cell edges) = 18.75 - LON_FALSE LONGITUDE 5 r 1.875W(-1.875) 13.125E - Axis span (to cell edges) = 18.75 - LON_MOD_NOUNITS X 5mr 0 15 - Axis span (to cell edges) = 18.75 (modulo length = axis span) - LON_USUAL LONGITUDE 5mr 0E 15E - Axis span (to cell edges) = 18.75 (modulo length = 360) -sh ax time_true, time_moderr, time_false, time_mod_nounits, time_usual - name axis # pts start end - TIME_TRUE T (days) 4mi 30 150 -T0 = %% - Axis span (to cell edges) = 165 (modulo length = axis span) - TIME_MODERR T (meters) 4 i 30 150 -T0 = %% - Axis span (to cell edges) = 165 - TIME_FALSE T (days) 4 r 120 150 -T0 = %% - Axis span (to cell edges) = 40 - TIME_MOD_NOUNITS T 4mr 120 150 -T0 = %% - Axis span (to cell edges) = 40 (modulo length = axis span) - TIME_USUAL T (days) 4mr 120 150 -T0 = %% - Axis span (to cell edges) = 40 (modulo length = axis span) - -GO bn_reset bn550_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn550_bug_fixes -GO bn550_bug_fixes -! bn550_bug_fixes.jnl -! test various fixes that went into version 5.5 -! 10/02 *acm* -! - -! Polygon/overlay calendar axis bug -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err542_poly_over_calendar -! POLY/OVER when data has a non-standard calendar caused -! calendar mismatch error, even on a plot with no time axis. - -use err542_poly_over_calendar.nc -shade pc -poly/over/color=red/line=2/title="polygon" {220,240,280,250},{-20,70,40,-30} - - -! ******** V5.51 Additions below *********** - -GO bn_reset bn551_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn551_bug_fixes -GO bn551_bug_fixes -! bn551_bug_fixes.jnl -! test various fixes that went into version 5.51 -! 2/03 *acm* -! - -! FILL plots in viewports defined with /AXES, fix clipping bug, -! and allow color keys to plot beyond viewport limits. - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err550_view_axes_fill.jnl -! err550_view_axes_fill.jnl -! acm 2/5/03 -! Test FILL plots in viewports defined with /AXES; -! also let the color keys be plotted in these viewports, unless -! removed with /nokey - -can mode logo -set win/asp=.5/siz=0.5 - -define axis/x=-10:10:1 xtest -define axis/y=-10:10:1 ytest - -let test=x[gx=xtest]^2+y[gy=ytest]^2 - -def vi/x=.1:.9/y=.1:.3/axes bot -def vi/x=.1:.9/y=.4:.6/axes mid -def vi/x=.1:.9/y=.6:1 top -def vi/x=0:.1/y=.1:.3/axes bot1 -def vi/x=0:.1/y=.4:.6/axes mid1 -def vi/x=0:.1/y=.6:1 top1 - -set vi bot1 -fill/nokey test -contour/over test - -set vi bot -fill test -contour/over test - -set vi mid1 -shade/nokey test -contour/over test - -set vi mid -shade test -contour/over test - -set vi top1 -fill/nokey test -contour/over test - -set vi top -fill test -contour/over test - - -can view -set win/asp=2/siz=0.3 -set vi bot1 -fill/nokey test -contour/over test - -set vi bot -fill test -contour/over test - -set vi mid1 -shade/nokey test -contour/over test - -set vi mid -shade test -contour/over test - -set vi top1 -fill/nokey test -contour/over test - -set vi top -fill test -contour/over test - -set win/clear -set win/aspect=0.75 - - -! position on page was incorrect, of first viewport plotted when -! defined as a VIEW/AXES viewport. -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err550_view_axes_position.jnl -! err550_view_axes_position.jnl -! acm 2/5/03 - -! position on page was incorrect, of first viewport plotted when defined -! as a VIEW/AXES viewport. - -def view/x=.1:.5/y=.4:.6/axes mid1 -def view/x=.5:.9/y=.4:.6/axes mid2 - -set view mid1 -shade/x=1:10/y=1:10 x+y -set view mid2 -shade/x=1:10/y=1:10 x-y - -! SHADE bug: hlimits, vlimits without effect -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err550_shade_limits.jnl -! err550_shade_limits.jnl -! acm 2/5/03 - -! SHADE bug: hlimits, vlimits without effect - -use coads_climatology -set view upper; shade sst[l=1] - -set view lower; shade/hlimits=212:324/vlimits=-34:23 sst[l=1] - -! Redefining an axis with a new calendar definition -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err550_redefine_calendar_axis.jnl -! err550_redefine_calendar_axis.jnl -! different calendar axis not recognized as a different specifier, -! requiring the axis to be redefined. - -def axis/cal=gregorian/t=1-jan-2000:1-jan-2001:1/unit=days tax -sh axis tax - name axis # pts start end - TAX TIME 367 r 01-JAN-2000 00:00 01-JAN-2001 00:00 -T0 = 15-JAN-1901 - Axis span (to cell edges) = 367 -def axis/cal=julian/t=1-jan-2000:1-jan-2001:1/unit=days tax -sh axis tax - name axis # pts start end - TAX TIME 367 r 01-JAN-2000 00:00 01-JAN-2001 00:00 -T0 = 15-JAN-1901 -CALENDAR = JULIAN - Axis span (to cell edges) = 367 - - -! Bug in defining axis from an expression. -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err550_define_axis_expression.jnl -! err550_define_axis_expression.jnl -! reported by A. Wittenberg. -! Axes defined from an expression only took the first part of the -! expression The first two axis defines get it wrong (fix in xeq_define.F) - -let a = {1,2,3} -let b = {2,3,4} - -def ax/x xax = a/2 + b/2 -list x[gx=xax] - VARIABLE : X - axis XAX - SUBSET : 3 points (X) - 1.5 / 1: 1.50000 - 2.5 / 2: 2.50000 - 3.5 / 3: 3.50000 - -def ax/x xax = (a/2) + (b/2) -list x[gx=xax] - VARIABLE : X - axis XAX - SUBSET : 3 points (X) - 1.5 / 1: 1.50000 - 2.5 / 2: 2.50000 - 3.5 / 3: 3.50000 - -def ax/x xax = (a/2 + b/2) -list x[gx=xax] - VARIABLE : X - axis XAX - SUBSET : 3 points (X) - 1.5 / 1: 1.50000 - 2.5 / 2: 2.50000 - 3.5 / 3: 3.50000 - - -! Note (acm) The older syntax defines the axis correctly - -def axis/from_data/x/name=xax a/2 + b/2 -list x[gx=xax] - VARIABLE : X - axis XAX - SUBSET : 3 points (X) - 1.5 / 1: 1.50000 - 2.5 / 2: 2.50000 - 3.5 / 3: 3.50000 - -! Bug in reading seconds from time origin in nc file. -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err550_nc_seconds.jnl -! err550_nc_seconds.jnl -! 2/12/03 ACM - -! When the time origin is specified in a NetCDF file as -! "10-JUN-1996 04:03:36", the seconds are read incorrectly. -! If it's written as "1996-06-10 04:03:36" it is read OK - -use time_axis_seconds.nc - -sp echo "err550_nc_seconds.jnl --- seconds of time axis" >> all_ncdump.out -sp ncdump data/time_axis_seconds.nc | grep origin >> all_ncdump.out -list t[gt=height] ! Seconds should be 36, 37, 38... - VARIABLE : T - axis TIME4 - FILENAME : time_axis_seconds.nc - SUBSET : 5 points (TIME) - 10-JUN-1996 04:03:36 / 1: 0.00000 - 10-JUN-1996 04:03:37 / 2: 1.00000 - 10-JUN-1996 04:03:38 / 3: 2.00000 - 10-JUN-1996 04:03:39 / 4: 3.00000 - 10-JUN-1996 04:03:40 / 5: 4.00000 - -! Bug in plotting polymarker dots with pen numbers gt 6 -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err550_dots_thickpens.jnl -! err550_dots_thickpens.jnl -! For pen code higher than 6, get * rather than dot. -! also for vector plots having short vectors that are plotted with dots. - -plot/sym=dot/color=8/i=1:10 i - -! ******** V5.52 Additions below *********** - -GO bn_multi_line_labels.jnl - ! bn_multi_line_labels.jnl -! March 31, 2003 -! -! ACM 4/2005 ! set mode meta to save this plot for the metafile checks. -! and ! cancel mode logo, so that .plt files are comparable. -! ACM 1/2007 Change from a bunch of plot items in a viewport, to separate -! plots; for better checking of batch mode -! 2/18 *acm* keep mode logo turned off - - -plot/i=1:100/title="multi line titlewith the second line pretty long: \ -so Ferret will resize the entire title. Titles are sized according to the\ -longest line and centered individually" i*cos(i/8) -ppl plot -plot/over/i=1:100 i*sin(i/8) - -set mode meta multi_line_labels.plt -plot/i=1:100/title="@p2two-lineRED title"/set i*cos(i/8) -ppl ylab "A four-line y label.second linethird linefourth line" -ppl xlab "a two-line X label. Not good together with a multi-line title" -ppl plot - -plot/over/i=1:100/title="short two-linetitle for the overlay line" i*sin(i/8) -plot/over/i=1:100/title="here is the key for thesecond overlay line" i*sin(i/4) - -label 10,80,-1,-20,0.2,"@CSfonts and @p2colorsa@p1nd at an angle\ -no@p3w green and @CRCR fontback@CS to script" - -label 30,-70,-1,40,0.2,"first line, then blank third line, all rotated" - -label/nouser 6.5,6,1,90,0.2,"@p2Another @CImoveable labelSet to @CRCR and @p4P4\ -at 90 degrees" -set mode/last meta -set mode/last logo - -plot/title="multi-line key labels"/i=1:100 i*sin(i/12) -plot/over/i=1:100/title="Three-linessecond lineoverlay 1" i*sin(i/6) -plot/over/i=1:100/title="Two-linesoverlay 2" i*cos(i/6) -plot/over/i=1:100/title="Three-linessecond lineoverlay 3" -1*cos(i/10) -plot/over/i=1:100/title="One-line" i*cos(i/8) -plot/over/i=1:100/title="Three-linesecondoverlay5" i*cos(i/14) -plot/over/i=1:100/title="Two-lineoverlay6" i*cos(i/20) -plot/over/i=1:100/title="Three-linesecondoverlay7" i*sin(i/12) - - - -plot/i=1:100 i*cos(i/8) - - -! label 30,95,0,0,0.1,\ -! label 70,95,1,0,0.1,\ -label 3,95,-1,0,0.12,\ -"@CRHere is a long label, made with the LABEL command:\ - Ferret is an interactive computer visualization and analysis\ -environment designed to meet the needs of oceanographers and\ -meteorologists analyzing large and complex gridded data sets. It\ -runs on most Unix systems, and on Windows NT/9x using X\ -windows for display. It can be installed to run from a Web\ -browser (WebFerret) for use while away from your desk or\ -from a system lacking X windows software. It can transparently\ -access extensive remote Internet data bases using OPeNDAP,\ -formerly known as DODS. See the dods webpage\ - \ -Ferret was developed by the Thermal Modeling and Analysis\ -Project (TMAP) at PMEL in Seattle to analyze the outputs of its\ -numerical ocean models and compare them with gridded,\ -observational data. The model data sets are generally multi-\ -gigabyte in size with mixed 3 and 4-dimensional variables defined\ -on staggered grids. Ferret offers a Mathematica-like approach to\ -analysis, new variables may be defined interactively as\ -mathematical expressions involving data set variables.\ -Calculations may be applied over arbitrarily shaped regions. Fully\ -documented graphics are produced with a single command.\ - \ -Many excellent software packages have been developed recently\ -for @p2scientific visualization@p1. The features that make Ferret distinctive\ -among these packages are Mathematica-like flexibility,\ -geophysical formatting, intelligent connection to its data base,\ -memory management for very large calculations, and symmetrical\ -processing in 4 dimensions." - - -set win/clear -plot/sym/i=1:5/nolab/noaxes i -ppl ylab "@CRlong y label@p2line 2 in red, longer than the other lines." -ppl xlab "@p4Tests using the %xaxis and %yaxis commands@p5@CItwo linescenter a@P1 long third line too" -ppl %yaxis/nouser,0,50,4,1, , , ,-1 -ppl %xaxis/nouser,0,50,4,1, , , ,-1 - -ppl %yaxis/nouser,0,50,4,2, , , ,0 -ppl %xaxis/nouser,0,50,4,2.5, , , ,0 - -ppl %yaxis/nouser,0,50,4,6, , , ,1 -ppl %xaxis/nouser,0,50,4,4, , , ,1 - - -can view; set view upper -plot/i=1:100/axes=1,0,0,1/set/title="labels on top and rightspace for two lines on the y axis at the right" i*cos(i/8) -ppl xlab "a multi line x labelhere is line 2here is line threehere is line four" -ppl labset, , , 0.08 -ppl ylab "a multi line y labelhere is line twohere is line three" -ppl plot - -set view lower -ppl axlen `($ppl$xlen)-1` - !-> ppl axlen 7.74 - -plot/i=1:100/axes=1,0,0,1/set/title="shortened the x axis to make space" i*cos(i/8) -ppl xlab "a multi line x labelhere is line twohere is line threehere is line four" -ppl ylab "a multi line y labelhere is line twohere is line threehere is line four" -ppl plot - -! reset -can view -ppl axlen,8 - -! size and rotate moveable labels. - -plot/i=1:100/set i*cos(i/8) -ppl labs,4,20,-60,-1,"A @CIppl labs@SR label,change size and rotation" -ppl rlabs,4,45 -ppl hlabs,4,.4 -ppl title "@P2@ACRED title in AC fontput P2 first then AC otherwise \ -the at sign in front of P2 not recognized" -ppl plot - -ppl rlabs,4,0 - -GO bn_reset bn552_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn552_bug_fixes -GO bn552_bug_fixes -! bn552_bug_fixes.jnl -! test various fixes that went into version 5.52 -! 3/03 *acm* -! -! 4/03 *kob* Add fixes for string bugs - -! Default behavior (all axes on) was not reset after a plot/set/AXES= -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_axes_set.jnl -! Default behavior (all axes on) was not reset after a PLOT/SET/AXES= - -! Choose just some axes to plot with /AXES qualifier -SET VIEW upper -PLOT/SET/AXES=0,1,1,0/i=1:12 1./i -PPL TITLE "PLOT/SET/AXES only two axes" -PPL PLOT - -! This plot should have the default behavior; all axes plotted. -! But, pre-v552, keeps settings from previous PLOT/SET/AXES= - -SET VIEW lower -plot/i=1:100/title="PLOT (no quals); all axes plotted" i*cos(i/12) - -! Test whether too many levels specified. Previous to v552, no -! test on SHADE and POLYGON plots, and these crashed Ferret. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_num_levels.jnl -! Test whether too many levels specified. Previous to v552, no -! test was made on SHADE and POLYGON plots, and these crashed Ferret. -! The results should all be error messages: too many levels. - -SET MODE IGNORE_ERROR -USE coads_climatology -CONTOUR/L=1/LEV=0.01d sst -FILL/L=1/LEV=0.01d sst - -SHADE/L=1/LEV=0.01d sst -can data/all - -LET xpts = 180 + 50*COS(2*3.14*I[I=1:50]/60) -LET ypts = 15 + 20*SIN(2*3.14*I[I=1:50]/60) -LET sst = 25 - ypts + RANDN(ypts) -plot/vs xpts,ypts -GO polymark POLYGON/KEY/LEV=0.01d xpts,ypts,sst,star - - -SET MODE/LAST IGNORE_ERROR -SET WIN/CLEAR - -! Check for invalid value of calendar attribute on reading NetCDF files. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_invalid_calendar.jnl -! check on input for invalid calendar name -! If file gives calendar attribute with unrecognized name, -! give an error message and use an abstract axis. - -set data err_calendar.nc -sh data - currently SET data sets: - 1> ./data/err_calendar.nc (default) - name title I J K L - TIME observation time ... ... ... 1:12 - (invalid coordinate axis) - - -! String bug fixes *kob* -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_strings.jnl - - -! first make sure file is non-existent -sp rm input.txt - -! first bug - first list always worked fine, and second list would crash. -! fix turned out to be that you still had to (m)alloc space even -! for a null pointer in get_sys_cmnd.c -! -! define string variable -let a = {"first", spawn:"ls input.txt", "last"} -list a - VARIABLE : {"first", SPAWN:"ls input.txt", "last"} - SUBSET : 3 points (X) - 1 / 1:"first" - 2 / 2:"" - 3 / 3:"last" -list a - VARIABLE : {"first", SPAWN:"ls input.txt", "last"} - SUBSET : 3 points (X) - 1 / 1:"first" - 2 / 2:"" - 3 / 3:"last" - - -! second bug fix - this used to crash during the list command. -! fix turned out to be that needed make sure to (m)alloc enough -! space for string plus "\n" character - in get_sys_cmnd.c - -sp echo "GANGES_BRAHMAPUTRA" > input.txt -sp echo "X=86e:93e/Y=20n:25n " >> input.txt -sp echo "X=118e:123e/Y=29n:34n " >> input.txt -sp echo "X=65w:57w/Y=7n:12n " >> input.txt -let a = {spawn:"cat input.txt"} -load a -list a - VARIABLE : {SPAWN:"cat input.txt"} - SUBSET : 4 points (X) - 1 / 1:"GANGES_BRAHMAPUTRA" - 2 / 2:"X=86e:93e/Y=20n:25n " - 3 / 3:"X=118e:123e/Y=29n:34n " - 4 / 4:"X=65w:57w/Y=7n:12n " - -! last one - make sure bug gabe found is fixed as well -! used to have incorrect results on second list command -! fix turned out to be that strcmp function was declared "float" -! when it should have been void. - -let mystring = {"a","b","a","c"} -list strcmp("b", mystring) - VARIABLE : STRCMP("b", MYSTRING) - SUBSET : 4 points (X) - 1 / 1: 1.00000 - 2 / 2: 0.00000 - 3 / 3: 1.00000 - 4 / 4: -1.00000 -list strcmp("b", mystring) - VARIABLE : STRCMP("b", MYSTRING) - SUBSET : 4 points (X) - 1 / 1: 1.00000 - 2 / 2: 0.00000 - 3 / 3: 1.00000 - 4 / 4: -1.00000 - - -! 2-D @AVE bug fix -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_2dave.jnl -! Bug in 2-D averaging, if source data thats loaded has a -! larger range than the dest data, code didnt check whether -! source grid cells actually overlapped destination cells - -use coads_climatology -load/l=1 sst - -def axis/x=110w:90w:5 xax -def axis/y=10n:20n:2 yax - -list/l=1/y=20 sst[gx=xax@ave,gy=yax@ave] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - regrid: 5 deg on X@AAV, 2 deg on Y@AAV - FILENAME : coads_climatology.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 20N - TIME : 16-JAN 06:00 - 20N - 6 - 110W / 1: 24.0382 - 105W / 2: 25.4564 - 100W / 3: 24.5714 - 95W / 4: 23.8243 - 90W / 5: 24.9977 - -! RETURN error message, and new var,RETURN=dsettitle argument -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_return_message.jnl - ! err551_return_message.jnl - ! 4/15/03 ACM - -SET MODE IGNORE_ERROR - -use dstitle - -! This is not a valid argument for RETURN. The error message -! has been improved to include all valid arguments. - -say `axy, return=xx` - -! This is a new argument: title from the global attributes secion. -say `axy,return=dsettitle` - !-> MESSAGE/CONTINUE dataset title for 4D string data -dataset title for 4D string data - -SET MODE/LAST IGNORE_ERROR - -! file/form=stream didnt see file in another directory -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_streamread_directory.jnl -! Bug: file/form=stream doesnt see file in another directory - -sp rm -f subdir/a.dat - -def ax/x=1:1/np=1 xax -def grid/x=xax g -list/clobber/form=stream/file="a.dat" 1 -file/form=stream/grid=g/var=a "a.dat" -list a - VARIABLE : a - FILENAME : a.dat - X : 1 - 1.00000 - -can dat/all -sp mkdir -p subdir -sp mv a.dat subdir -file/form=stream/grid=g/var=a "subdir/a.dat" -list a - VARIABLE : a - FILENAME : a.dat - FILEPATH : subdir/ - X : 1 - 1.00000 - -! GXY=var regridding syntax, when the variable hasnt been loaded -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_regrid_undef_grid.jnl -! err551_regrid_undef_grid.jnl -! 5/03 *acm* based on bn_regrid_to_user; more testing of multi-axis GXY=var -! syntax, when the destination grid is not yet defined - -! test various regridding combos that involve user-defined variables -! for the target grids - - -set mode ignore_errors - -use coads_climatology -use levitus_climatology - -! define test objects -let a = sst[d=coads_climatology] + 1 -let b = sst + 1 ! data set unspecified -DEFINE AXIS/Y=20s:20n:.5/units=degrees yax -DEFINE GRID/like=sst[d=coads_climatology]/y=yax gg - -! reference data -list/x=158e:161e/y=6s:4s temp[d=2,k=1] - VARIABLE : TEMPERATURE (DEG C) - FILENAME : levitus_climatology.cdf - SUBSET : 3 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 0 - 158.5E 159.5E 160.5E - 139 140 141 - 4.5S / 86: 29.5110 29.4430 29.3800 - 5.5S / 85: 29.5890 29.5250 29.4570 - -! basic regrid (implicit grid -- sst and temp geometries are mismatched) -list/x=160e/y=5s temp[d=2,k=1,gxy=a[d=1]] - VARIABLE : TEMPERATURE (DEG C) - regrid: 2 deg on X, 2 deg on Y - FILENAME : levitus_climatology.cdf - LONGITUDE: 159E - LATITUDE : 5S - DEPTH (m): 0 - 29.5170 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G022) - GRID (G022) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 1 pt - normal T - -can data/all -can var/all -can grid - -! multiple axis syntax: GXY=gg -define axis/x=1:6:1 x1 -define axis/y=1:4:1 y1 -define axis/z=1:3:1 z1 -define axis/x=1:6:2 x2 -define axis/y=1:4:2 y2 -define axis/z=1:3:2 z2 -let a1 = x[gx=x1]+y[gy=y1]+z[gz=z1] -let a2 = x[gx=x2]+y[gy=y2]+z[gz=z2] -list a1 - VARIABLE : X[GX=X1]+Y[GY=Y1]+Z[GZ=Z1] - SUBSET : 6 by 4 by 3 points (X-Y-Z) - 1 2 3 4 5 6 - 1 2 3 4 5 6 - ---- K:1 Z: 1 - 1 / 1: 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 - 2 / 2: 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 - 3 / 3: 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 - 4 / 4: 6.0000 7.0000 8.0000 9.0000 10.0000 11.0000 - ---- K:2 Z: 2 - 1 / 1: 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 - 2 / 2: 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 - 3 / 3: 6.0000 7.0000 8.0000 9.0000 10.0000 11.0000 - 4 / 4: 7.0000 8.0000 9.0000 10.0000 11.0000 12.0000 - ---- K:3 Z: 3 - 1 / 1: 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 - 2 / 2: 6.0000 7.0000 8.0000 9.0000 10.0000 11.0000 - 3 / 3: 7.0000 8.0000 9.0000 10.0000 11.0000 12.0000 - 4 / 4: 8.0000 9.0000 10.0000 11.0000 12.0000 13.0000 -list a1[gzxy=a2] - VARIABLE : X[GX=X1]+Y[GY=Y1]+Z[GZ=Z1] - regrid: 2 delta on X, 2 delta on Y, 2 delta on Z - SUBSET : 4 by 3 by 2 points (X-Y-Z) - 1 3 5 7 - 1 2 3 4 - ---- K:1 Z: 1 - 1 / 1: 3.0000 5.0000 7.0000 .... - 3 / 2: 5.0000 7.0000 9.0000 .... - 5 / 3: .... .... .... .... - ---- K:2 Z: 3 - 1 / 1: 5.0000 7.0000 9.0000 .... - 3 / 2: 7.0000 9.0000 11.0000 .... - 5 / 3: .... .... .... .... - -can data/all -can var/all - -! Convoluted definitions, LIST needs data on a grid not yet loaded. -use clim_airt_lev.cdf -def axis/t=16-JUL-1966:16-MAY-1967:1/unit=month hope_month -! use climatological_axes -! can dat climatological_axes - -let dzdt_month = airt[gt=hope_month] -let dzdt_clim = airt[gt=month_reg@mod] -let dzdt_anom = dzdt_month - dzdt_clim[gt=dzdt_month@asn] -set region/x=100w/y=0 -list dzdt_anom - VARIABLE : DZDT_MONTH - DZDT_CLIM[GT=DZDT_MONTH@ASN] - FILENAME : clim_airt_lev.cdf - SUBSET : 11 points (TIME) - LONGITUDE: 100.5W - LATITUDE : 0.167S - 100.5W - 130 - 16-JUL-1966 / 1: -1.42152 - 15-AUG-1966 / 2: -2.97198 - 14-SEP-1966 / 3: -4.50335 - 15-OCT-1966 / 4: -3.88179 - 14-NOV-1966 / 5: -2.57982 - 15-DEC-1966 / 6: -1.07968 - 14-JAN-1967 / 7: 1.42391 - 14-FEB-1967 / 8: 2.96231 - 16-MAR-1967 / 9: 4.50322 - 15-APR-1967 / 10: 3.83807 - 16-MAY-1967 / 11: 2.60886 - - -! Symbol substituted on each repetition of REPEAT -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_repeat_sym.jnl - -! This had worked, but stopped working in v541 -! symbol substituted on each repetition of REPEAT - -! (The cause was the fix intended to repair what it -! tested in err540_parse_repeat.jnl ) - -def sym a 0; rep/i=1:3:1 (def sym a `i`; say ($a)) - !-> rep/i=1:3:1 (def sym a `i`; say ($a)) -!-> REPEAT: I=1 - !-> def sym a 1 - !-> MESSAGE/CONTINUE 1 -1 -!-> REPEAT: I=2 - !-> def sym a 2 - !-> MESSAGE/CONTINUE 2 -2 -!-> REPEAT: I=3 - !-> def sym a 3 - !-> MESSAGE/CONTINUE 3 -3 - -! data from nc file with time axis modulo=value, when regridded to -! another time axis, some times have missing data -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_modulo_nc_regrid.jnl -! data from nc file with time axis having modulo=value, when regridded -! to another time axis, some times have missing data - -! First write a file with a monthly climatology: - -use coads_vwnd -set region/x=161w/y=39n -!use climatological_axes -!can data climatological_axes - -let vwnd_clim = vwnd[gt=month_reg@mod] - -save/clobber/file=clim.nc vwnd_clim - -! File clim.nc is a climatology with the attribute -! MONTH_REG:modulo = 8765.82 ; - -! The data is ok if we now regrid to the monthly_navy_winds time axis -list/l=23:27 vwnd_clim[gt=vwnd[d=1]] - VARIABLE : VWND[GT=MONTH_REG@MOD] - regrid: VWND - FILENAME : coads_vwnd.cdf - SUBSET : 5 points (TIME) - LONGITUDE: 161W - LATITUDE : 39N - 161W - 90 - 16-NOV-1947 00 / 23: -3.07590 - 16-DEC-1947 12 / 24: 1.67401 - 16-JAN-1948 12 / 25: 3.42908 - 15-FEB-1948 12 / 26: 1.95365 - 16-MAR-1948 12 / 27: 2.76119 - -! now use the climatology data file; note that when regridded to the -! time axis of vwnd, some times have missing data - -can data/all -can var/all - -use coads_vwnd -use clim -list/l=23:27 vwnd_clim[gt=vwnd[d=1]] - VARIABLE : VWND[GT=MONTH_REG@MOD] - regrid: on T - FILENAME : clim.nc - SUBSET : 5 points (TIME) - LONGITUDE: 161W - LATITUDE : 39N - 161W - 1 - 16-NOV-1947 00 / 23: -3.07590 - 16-DEC-1947 12 / 24: 1.67401 - 16-JAN-1948 12 / 25: 3.42908 - 15-FEB-1948 12 / 26: 1.95365 - 16-MAR-1948 12 / 27: 2.76119 - - -! FFT frequency axis not computed accurately enough. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_fft_freqaxis.jnl - -DEFINE AXIS/t=1:4998:1 dayt -let tpts = t[gt=dayt] - -LET sample_function = sin(0.5*tpts - 6.)/2. - cos(0.3*tpts) - -LET days_fft = ffta(sample_function) -LOAD days_fft -LET FFT_nf = `days_fft,return=lend` - !-> DEFINE VARIABLE FFT_nf = 2499 - -list FFT_nf - VARIABLE : 2499 - 2499.00 -list 2*FFT_nf - VARIABLE : 2*FFT_NF - 4998.00 -list `tpts,return=lend` - !-> list 4998 - VARIABLE : constant - 4998.00 - - -! No error message on request for time on bad time axis -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_no_taxis_errmsg.jnl -! The time axis is bad, having repeated values, so an abstract axis is -! used by Ferret and the list/t=time should result in an error. - -SET MODE IGNORE_ERROR - -use bad_taxis.nc -list/t=1-jan-1990 dummy - -SET MODE/LAST IGNORE_ERROR - -GO bn_reset bn_set_var_scale_off.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_set_var_scale_off.jnl -GO bn_set_var_scale_off.jnl -! Qualifiers /SCALEFACTOR= and /OFFSET for SET VARIABLE. -! Only for NetCDF datasets -! Applied after NetCDF Scale_factor and add_offset attributes -! New RETURN= arguments NC_SCALE, NC_OFF for values of NetCDF attributes -! and USER_SCALE, USER_OFF for those set with SET VAR - -! This dataset has scale_factor and add_offset attributes. - -USE err491_attval -LIST/NOHEAD/PREC=6 elev[x=@ave,y=@ave] - 2.97979 -SET VAR/OFFSET=1 elev -LIST/NOHEAD/PREC=6 elev[x=@ave,y=@ave] - 3.97979 -SET VAR/SCALE=10 elev -LIST/NOHEAD/PREC=6 elev[x=@ave,y=@ave] - 30.7979 - -! Output the values of the scales and offsets - -SAY `elev,RETURN=nc_scale` - !-> MESSAGE/CONTINUE 2.746749679545871E-04 -2.746749679545871E-04 -SAY `elev,RETURN=nc_off` - !-> MESSAGE/CONTINUE 0 -0 -SAY `elev,RETURN=user_scale` - !-> MESSAGE/CONTINUE 10 -10 -SAY `elev,RETURN=user_off` - !-> MESSAGE/CONTINUE 1 -1 - -! These SET VAR will produce error msgs: qualifiers are set up only for -! variables in NetCDF files - -SET MODE IGNORE_ERROR - -FILE/VAR=x1,x2 EZ.DAT - -SET VAR/OFFSET=1 x1 -SET VAR/SCALE=10 x2 - -SET MODE/LAST IGNORE_ERROR - -GO bn_reset bn_longvarnames.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_longvarnames.jnl -GO bn_longvarnames.jnl -! variable names up to 128 characters long -! 3/2006 make them 127 to be able to add the null terminator for C strings -! else not used correctly in linked-list attribute structure. - -LET a234567890b234567890c234567890d234567890e234567890f234567890g234567890h234567890i234567890d234567890j234567890k234567890L234567 = {12,14,20,28,22,10} -LIST a234567890b234567890c234567890d234567890e234567890f234567890g234567890h234567890i234567890d234567890j234567890k234567890L234567 - VARIABLE : {12,14,20,28,22,10} - SUBSET : 6 points (X) - 1 / 1: 12.0000 - 2 / 2: 14.0000 - 3 / 3: 20.0000 - 4 / 4: 28.0000 - 5 / 5: 22.0000 - 6 / 6: 10.0000 - -! With a transformation, which makes the whole specification longer - -list a234567890b234567890c234567890d234567890e234567890f234567890g234567890h234567890i234567890d234567890j234567890k234567890L234567,\ - A234567890B234567890C234567890D234567890E234567890F234567890G234567890H234567890I234567890D234567890J234567890K234567890L234567[i=@SHF:1] - X: 0.5 to 6.5 - Column 1: A234567890B234567890C234567890D234567890E234567890F234567890G234567890H234567890I234567890D234567890J234567890K234567890L234567 is {12,14,20,28,22,10} - Column 2: A234567890B234567890C234567890D234567890E234567890F234567890G234567890H234567890I234567890D234567890J234567890K234567890L234567* is {12,14,20,28,22,10} (shifted by 1 pts on X) - A2345678 A234567890B234567890C234567890D234567890E234567890F234567890G234567890H234567890I234567890D234567890J234567890K234567890L234567 -1 / 1: 12.0000 14.0000 -2 / 2: 14.0000 20.0000 -3 / 3: 20.0000 28.0000 -4 / 4: 28.0000 22.0000 -5 / 5: 22.0000 10.0000 -6 / 6: 10.0000 .... - -! SET GRID using long variable name -SET GRID a234567890b234567890c234567890d234567890e234567890f234567890g234567890h234567890i234567890d234567890j234567890k234567890L234567 -SHOW GRID - Default grid for DEFINE VARIABLE is XABSTRACT - Last successful data access was on grid XABSTRACT - GRID XABSTRACT - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 full - normal Y - normal Z - normal T - - - -! save to a file a variable that is 128 long -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -LET a234567890b234567890c234567890d234567890e234567890f234567890g234567890h234567890i234567890d234567890j234567890k234567890L234567 = {12,14,20,28,22,10} -SAVE/CLOBBER/FILE=longvname.nc a234567890b234567890c234567890d234567890e234567890f234567890g234567890h234567890i234567890d234567890j234567890k234567890L234567 - -! read from the file -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -USE longvname -LIST a234567890b234567890c234567890d234567890e234567890f234567890g234567890h234567890i234567890d234567890j234567890k234567890L234567 - VARIABLE : {12,14,20,28,22,10} - FILENAME : longvname.nc - SUBSET : 6 points (X) - 1 / 1: 12.0000 - 2 / 2: 14.0000 - 3 / 3: 20.0000 - 4 / 4: 28.0000 - 5 / 5: 22.0000 - 6 / 6: 10.0000 - -! save a 4-D variable -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -LET a234567890b234567890c234567890d234567890e234567890f234567890g234567890h234567890i234567890d234567890j234567890k234567890L234567 = I[I=1:5] * J[J=1:4] * K[K=1:3] + L[L=1:3] -SAVE/CLOBBER/FILE=longvname.nc a234567890b234567890c234567890d234567890e234567890f234567890g234567890h234567890i234567890d234567890j234567890k234567890L234567 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -USE longvname.nc -lIST/I=1/J=2 a234567890b234567890c234567890d234567890e234567890f234567890g234567890h234567890i234567890d234567890j234567890k234567890L234567 - VARIABLE : I[I=1:5] * J[J=1:4] * K[K=1:3] + L[L=1:3] - FILENAME : longvname.nc - SUBSET : 3 by 3 points (Z-T) - X : 1 - Y : 2 - 1 2 3 - 1 2 3 - 1 / 1: 3.00000 5.00000 7.00000 - 2 / 2: 4.00000 6.00000 8.00000 - 3 / 3: 5.00000 7.00000 9.00000 -LIST/K=2/L=3 a234567890b234567890c234567890d234567890e234567890f234567890g234567890h234567890i234567890d234567890j234567890k234567890L234567 - VARIABLE : I[I=1:5] * J[J=1:4] * K[K=1:3] + L[L=1:3] - FILENAME : longvname.nc - SUBSET : 5 by 4 points (X-Y) - Z : 2 - T : 3 - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 5.0000 7.0000 9.0000 11.0000 13.0000 - 2 / 2: 7.0000 11.0000 15.0000 19.0000 23.0000 - 3 / 3: 9.0000 15.0000 21.0000 27.0000 33.0000 - 4 / 4: 11.0000 19.0000 27.0000 35.0000 43.0000 - -GO bn_reset bn_shakey.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_shakey.jnl -GO bn_shakey.jnl -! Changes to shade key: -! - Default size is a little bigger -! - To put key labels on the left or bottom of the key, multiply the size by -1 -! - Previously ALL OF kx_lo, kx_hi,ky_lo, ky_hi had to be set, or none of them -! were applied. With changes as of 3/3/03 can set any of these independently. -! If, say only x1 and y1 are set, the other corners are set, keeping the default -! width and/or height. - -use ocean_atlas_temp -set region/x=130:290/y=-45:45 - -shade/title="shift shakey left and up"/set temp[l=1] - -let x1 = `($ppl$xorg)+($ppl$xlen)` - !-> DEFINE VARIABLE x1 = 9.94 -let y1 = `($ppl$yorg)+.4` - !-> DEFINE VARIABLE y1 = 1.8 - -ppl shakey ,,.12,,,,`x1`,,`y1` - !-> ppl shakey ,,.12,,,,9.94,,1.8 -ppl shade -ppl list shakey - - DO KEY ORIENT LAB SIZE LAB INC LAB DIG LAB LEN - 1 1 0.12 0 5 9 - - - X LO X HI Y LO Y HI - 9.94 10.24 1.80 7.21 - -shade/title="set only x2,y2"/set temp[l=1] - -let x2 = `($ppl$xorg)+($ppl$xlen)` - !-> DEFINE VARIABLE x2 = 9.94 -let y2 = `($ppl$yorg)+($ppl$ylen) - .4` - !-> DEFINE VARIABLE y2 = 6.404999999999999 - -ppl shakey ,,.12,,,,,`x2`,,`y2` - !-> ppl shakey ,,.12,,,,,9.94,,6.404999999999999 -ppl shade -ppl list shakey - - DO KEY ORIENT LAB SIZE LAB INC LAB DIG LAB LEN - 1 1 0.12 0 5 9 - - - X LO X HI Y LO Y HI - 9.64 9.94 1.00 6.41 - - -! resetting location of horizontal shade keys - -shade/title="shakey labels above it"/set temp[l=1] - -let x1 = `($ppl$xorg)+0.1` - !-> DEFINE VARIABLE x1 = 1.3 -let y1 = `($ppl$yorg)+($ppl$ylen)+0.1` - !-> DEFINE VARIABLE y1 = 6.904999999999999 -let y2 = `($ppl$yorg)+($ppl$ylen)+0.5` - !-> DEFINE VARIABLE y2 = 7.305 - -ppl shakey ,0,-.12,2,,,`x1`,,`y1`,`y2` - !-> ppl shakey ,0,-.12,2,,,1.3,,6.904999999999999,7.305 -go unlabel 4 -go unlabel 5 -ppl shade -ppl list shakey - - DO KEY ORIENT LAB SIZE LAB INC LAB DIG LAB LEN - 1 0 -0.12 2 5 9 - - - X LO X HI Y LO Y HI - 1.30 10.04 6.91 7.30 - - -let x1 = `($ppl$xorg)+1` - !-> DEFINE VARIABLE x1 = 2.2 -let x2 = `($ppl$xorg)+($ppl$xlen)-1` - !-> DEFINE VARIABLE x2 = 8.94 -let y1 = `($ppl$yorg)` - !-> DEFINE VARIABLE y1 = 1.4 -shade/title="shorter, at bottom"/set temp[l=1] -ppl shakey ,0,-.12,3,,,`x1`,`x2`,`y1` - !-> ppl shakey ,0,-.12,3,,,2.2,8.94,1.4 -ppl shade -ppl list shakey - - DO KEY ORIENT LAB SIZE LAB INC LAB DIG LAB LEN - 1 0 -0.12 3 5 9 - - - X LO X HI Y LO Y HI - 2.20 8.94 1.40 1.49 - -shade/title="on left, labelled on left"/set temp[l=1] -ppl axlabp, 1,1 - -let x1 = `($ppl$xorg)` - .5 - !-> DEFINE VARIABLE x1 = 1.2 - .5 -let x2 = `($ppl$xorg)` - 0.1 - !-> DEFINE VARIABLE x2 = 1.2 - 0.1 -ppl shakey ,1,-.1,2,,,`x1`,`x2` - !-> ppl shakey ,1,-.1,2,,,0.7,1.1 -ppl shade - -ppl axlabp, -1, -1 - -set view upper -ppl window off -let y1 = -1* `($ppl$yorg)` - !-> DEFINE VARIABLE y1 = -1* 1.4 -shade/title="In viewport, shakey located anywhere on page"/set temp[l=1] -ppl shakey ,0,-.1,2,,,,,`y1` - !-> ppl shakey ,0,-.1,2,,,,,-1.4 -ppl shade -ppl list shakey - - DO KEY ORIENT LAB SIZE LAB INC LAB DIG LAB LEN - 1 0 -0.10 2 5 9 - - - X LO X HI Y LO Y HI - 1.20 9.94 -1.40 -1.31 - -GO bn_reset bn_eof_4d.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_eof_4d.jnl -GO bn_eof_4d.jnl -! bn_eof_4d.jnl -! test EOFs on XYZT grids - -! In version 6.8 (double precision), the old eof functions are not available -! Run the script calling eofsvd functions and exit, leaving old eof function calls. - -! dataset with 4 dimensions; compute EOF at each vertical level. - -use gt4d011.cdf - -let eofsp = eofsvd_space (temp[i=91:95,j=36:40,k=1:4]) -save/file=eofsp.cdf/clobber eofsp - -can data/all -can var/all -use eofsp - -set view ul -shade eofsp[k=1,l=1] -list eofsp[k=1,l=1] - VARIABLE : EOFSVD_SPACE (TEMP[I=91:95,J=36:40,K=1:4]) - FILENAME : eofsp.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - T : 1 - 139.5W 138.5W 137.5W 136.5W 135.5W - 1 2 3 4 5 - 1.83S / 5: 2.25380 2.34749 2.42382 2.47460 2.50064 - 2.17S / 4: 2.26997 2.36147 2.43073 2.47739 2.50277 - 2.5S / 3: 2.26576 2.35100 2.41285 2.45516 2.48145 - 2.83S / 2: 2.23354 2.30728 2.35946 2.39631 2.42393 - 3.17S / 1: 2.16829 2.22692 2.26870 2.30046 2.33013 -set view ur -shade eofsp[k=2,l=1] -list eofsp[k=2,l=1] - VARIABLE : EOFSVD_SPACE (TEMP[I=91:95,J=36:40,K=1:4]) - FILENAME : eofsp.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 15 - T : 1 - 139.5W 138.5W 137.5W 136.5W 135.5W - 1 2 3 4 5 - 1.83S / 5: 2.28179 2.37704 2.45447 2.50708 2.53486 - 2.17S / 4: 2.29644 2.38952 2.46056 2.50887 2.53607 - 2.5S / 3: 2.29075 2.37736 2.44104 2.48452 2.51240 - 2.83S / 2: 2.25743 2.33286 2.38636 2.42369 2.45233 - 3.17S / 1: 2.19089 2.25118 2.29360 2.32531 2.35557 - -set view ll -shade eofsp[k=3,l=1] -list eofsp[k=3,l=1] - VARIABLE : EOFSVD_SPACE (TEMP[I=91:95,J=36:40,K=1:4]) - FILENAME : eofsp.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 25 - T : 1 - 139.5W 138.5W 137.5W 136.5W 135.5W - 1 2 3 4 5 - 1.83S / 5: 1.72333 1.84007 1.94120 2.00514 2.04715 - 2.17S / 4: 1.63876 1.74435 1.83141 1.88234 1.91985 - 2.5S / 3: 1.51509 1.60488 1.67644 1.71352 1.74562 - 2.83S / 2: 1.35750 1.42836 1.48145 1.50285 1.52819 - 3.17S / 1: 1.17476 1.22230 1.25622 1.26294 1.28236 -set view lr -shade eofsp[k=4,l=1] -list eofsp[k=4,l=1] - VARIABLE : EOFSVD_SPACE (TEMP[I=91:95,J=36:40,K=1:4]) - FILENAME : eofsp.cdf - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - DEPTH (m): 35 - T : 1 - 139.5W 138.5W 137.5W 136.5W 135.5W - 1 2 3 4 5 - 1.83S / 5: 1.21576 1.30112 1.37420 1.42210 1.45249 - 2.17S / 4: 1.08595 1.16417 1.22895 1.26976 1.29822 - 2.5S / 3: 0.93683 1.00553 1.05923 1.09102 1.11580 - 2.83S / 2: 0.77184 0.82972 0.86888 0.89054 0.91114 - 3.17S / 1: 0.59936 0.64140 0.66649 0.68065 0.69951 - -can data/all - - -use gt4d011.cdf - -let eofti = eofsvd_tfunc (temp[i=91:95,j=36:40,k=1:10]) -save/file=eofti.cdf/clobber eofti - -can data/all -can var/all -can view -use eofti - -set view ul -plot eofti[i=1,k=1], eofti[i=2,k=1], eofti[i=3,k=1] -list eofti[l=1:5,i=1,k=1] - VARIABLE : EOFSVD_TFUNC (TEMP[I=91:95,J=36:40,K=1:10]) - FILENAME : eofti.cdf - SUBSET : 5 points (TIME) - X : 1 - DEPTH (m): 5 - 1 - 1 - 17-AUG-1982 12 / 1: -1.81161 - 23-AUG-1982 14 / 2: -1.75761 - 29-AUG-1982 16 / 3: -1.67763 - 04-SEP-1982 18 / 4: -1.57055 - 10-SEP-1982 20 / 5: -1.42678 -set view ur -plot eofti[i=1,k=5], eofti[i=2,k=5], eofti[i=3,k=5] -list eofti[l=1:5,i=1,k=5] - VARIABLE : EOFSVD_TFUNC (TEMP[I=91:95,J=36:40,K=1:10]) - FILENAME : eofti.cdf - SUBSET : 5 points (TIME) - X : 1 - DEPTH (m): 45 - 1 - 1 - 17-AUG-1982 12 / 1: -2.21821 - 23-AUG-1982 14 / 2: -2.04941 - 29-AUG-1982 16 / 3: -1.77359 - 04-SEP-1982 18 / 4: -1.41208 - 10-SEP-1982 20 / 5: -1.05323 - -set view ll -plot eofti[i=1,k=8], eofti[i=2,k=8], eofti[i=3,k=8] -list eofti[l=1:5,i=1,k=8] - VARIABLE : EOFSVD_TFUNC (TEMP[I=91:95,J=36:40,K=1:10]) - FILENAME : eofti.cdf - SUBSET : 5 points (TIME) - X : 1 - DEPTH (m): 75 - 1 - 1 - 17-AUG-1982 12 / 1: -1.77560 - 23-AUG-1982 14 / 2: -1.45491 - 29-AUG-1982 16 / 3: -1.24196 - 04-SEP-1982 18 / 4: -1.05135 - 10-SEP-1982 20 / 5: -0.84706 -set view lr -plot eofti[i=1,k=4], eofti[i=2,k=10], eofti[i=3,k=10] -list eofti[l=1:5,i=1,k=10] - VARIABLE : EOFSVD_TFUNC (TEMP[I=91:95,J=36:40,K=1:10]) - FILENAME : eofti.cdf - SUBSET : 5 points (TIME) - X : 1 - DEPTH (m): 95 - 1 - 1 - 17-AUG-1982 12 / 1: 0.003693 - 23-AUG-1982 14 / 2: -0.189178 - 29-AUG-1982 16 / 3: -0.298222 - 04-SEP-1982 18 / 4: -0.405668 - 10-SEP-1982 20 / 5: -0.517797 - -can data/all - - - -use gt4d011.cdf - -let eofst = eofsvd_stat (temp[i=91:95,j=36:40,k=1:10]) -save/file=eofst.cdf/clobber eofst - -can data/all -can var/all -use eofst - -list/nohead/i=1/j=1/k=1:10 eofst ! # eigenfcns, same at all depths - 5 / 1: 25.0000 - 15 / 2: 25.0000 - 25 / 3: 25.0000 - 35 / 4: 25.0000 - 45 / 5: 25.0000 - 55 / 6: 25.0000 - 65 / 7: 25.0000 - 75 / 8: 25.0000 - 85 / 9: 25.0000 - 95 / 10: 25.0000 - -list/nohead/i=1:5/j=2 eofst[k=1:10:4] ! pct variance explained - 5 / 1: 99.2678 0.6794 0.0319 0.0157 0.0031 - 45 / 2: 98.6525 1.1464 0.1451 0.0296 0.0198 - 85 / 3: 95.1217 4.5698 0.2195 0.0744 0.0084 - -list/nohead/i=1:5/j=3/k=1 eofst ! eigenvalues - 1 / 1: 139.576 - 2 / 2: 0.955 - 3 / 3: 0.045 - 4 / 4: 0.022 - 5 / 5: 0.004 -list/nohead/i=1:5/j=3/k=5 eofst - 1 / 1: 10.8576 - 2 / 2: 0.1262 - 3 / 3: 0.0160 - 4 / 4: 0.0033 - 5 / 5: 0.0022 -list/nohead/i=1:5/j=3/k=9 eofst - 1 / 1: 2.23641 - 2 / 2: 0.10744 - 3 / 3: 0.00516 - 4 / 4: 0.00175 - 5 / 5: 0.00020 - -! The functions need updating for double precision Ferret -exit/script - -GO bn_reset bn_abstract_axis_names.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_abstract_axis_names.jnl -GO bn_abstract_axis_names.jnl -! bn_abstract_axis_names.jnl -! acm 6/12/03 -! -! Write and read datafiles with no clues about axis orientation from -! the units or axis name. Getting the axis direction depends on the AXIS -! attribute in .nc files, and on use of the new line_direction(iaxis) = 'XX' -! or 'YY' in cd_get_1_axis, xeq_define, tm_axis_direction, show_line.F - -! Define axes with confusing axis names (z in an X axis, X in a Z axis, etc) - -def axis/x=1:10:1 horiz -def axis/y=10:80:10 the -def axis/z=-4:1:1 xxx -def axis/t=1:13:2 long - -show axis horiz - name axis # pts start end - HORIZ X 10 r 1 10 - Axis span (to cell edges) = 10 -show axis the - name axis # pts start end - THE Y 8 r 10 80 - Axis span (to cell edges) = 80 -show axis xxx - name axis # pts start end - XXX Z 6 r -4 1 - Axis span (to cell edges) = 6 -show axis long - name axis # pts start end - LONG T 7 r 1 13 - Axis span (to cell edges) = 14 - -! Write files with different combinations of axes. - -let r = x[gx=horiz] + z[gz=xxx] -save/clobber/file=confuse_xz.nc r - -let s = y[gy=the] + z[gz=xxx] -save/clobber/file=confuse_yz.nc s - -let u = y[gy=the] + t[gt=long] -save/clobber/file=confuse_yt.nc u - -let v = z[gz=xxx] + t[gt=long]+ y[gy=the] -save/clobber/file=confuse_yzt.nc v - - -! Now read the files and see that the vars have the right shape -cancel data/all -cancel var/all -cancel axis horiz -cancel axis the -cancel axis xxx -cancel axis long - -use confuse_xz.nc -sh grid r - GRID GAP1 - name axis # pts start end subset - HORIZ X 10 r 1 10 full - normal Y - XXX Z 6 r -4 1 full - normal T -can data 1 - -use confuse_yz.nc -sh grid s - GRID GBA1 - name axis # pts start end subset - normal X - THE Y 8 r 10 80 full - XXX Z 6 r -4 1 full - normal T -can data 1 - -use confuse_yt.nc -sh grid u - GRID GGY1 - name axis # pts start end subset - normal X - THE Y 8 r 10 80 full - normal Z - LONG T 7 r 1 13 full -can data 1 - -use confuse_yzt.nc -sh grid v - GRID GFA1 - name axis # pts start end subset - normal X - THE Y 8 r 10 80 full - XXX Z 6 r -4 1 full - LONG T 7 r 1 13 full -can data 1 - - -! Define axes with meaningless axis names. - -def axis/x=1:10:1 aaa -def axis/y=10:80:10 bbb -def axis/z=-4:1:1 ccc -def axis/t=1:13:2 ddd - -show axis aaa - name axis # pts start end - AAA X 10 r 1 10 - Axis span (to cell edges) = 10 -show axis bbb - name axis # pts start end - BBB Y 8 r 10 80 - Axis span (to cell edges) = 80 -show axis ccc - name axis # pts start end - CCC Z 6 r -4 1 - Axis span (to cell edges) = 6 -show axis ddd - name axis # pts start end - DDD T 7 r 1 13 - Axis span (to cell edges) = 14 - -! Write files with different combinations of axes. - -let r = x[gx=aaa] + z[gz=ccc] -save/clobber/file=confuse_xz.nc r - -let s = y[gy=bbb] + z[gz=ccc] -save/clobber/file=confuse_yz.nc s - -let u = y[gy=bbb] + t[gt=ddd] -save/clobber/file=confuse_yt.nc u - -let v = z[gz=ccc] + t[gt=ddd]+ y[gy=bbb] -save/clobber/file=confuse_yzt.nc v - - -! Now read the files and see that the vars have the right shape -cancel data/all -cancel var/all -cancel axis aaa -cancel axis bbb -cancel axis ccc -cancel axis ddd - -use confuse_xz.nc -sh grid r - GRID GAP1 - name axis # pts start end subset - AAA X 10 r 1 10 full - normal Y - CCC Z 6 r -4 1 full - normal T -can data 1 - -use confuse_yz.nc -sh grid s - GRID GBA1 - name axis # pts start end subset - normal X - BBB Y 8 r 10 80 full - CCC Z 6 r -4 1 full - normal T -can data 1 - -use confuse_yt.nc -sh grid u - GRID GGY1 - name axis # pts start end subset - normal X - BBB Y 8 r 10 80 full - normal Z - DDD T 7 r 1 13 full -can data 1 - -use confuse_yzt.nc -sh grid v - GRID GFA1 - name axis # pts start end subset - normal X - BBB Y 8 r 10 80 full - CCC Z 6 r -4 1 full - DDD T 7 r 1 13 full -can data 1 - -GO bn_reset bn_many_polygons.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_many_polygons.jnl -GO bn_many_polygons.jnl -! testing large number of polygons in a plot. Map plot has -! 130501 polygons; previously we had an upper limit of 100K polygons - -use coads_climatology -def axis/x=0:360:0.5 xq -def axis/y=-90:90:0.5 yq -def axis/y=-90:90:1 yq -let fsst = sst[l=1,gx=xq,gy=yq] -shade/title="loading polygon at each grid point" sst[l=1] ! Set up plot params for polymark.jnl - -let lon = xsequence(x[gx=xq] + 0*y[gy=yq]) -let lat = xsequence(0*x[gx=xq] + y[gy=yq]) -go polymark poly/key/pal=dark_land_sea/title="130501 polygons", lon, lat, xsequence(fsst), square, 0.3 - - -! Test that everythings properly reset afterwards. -! single polygon. - -polygon/thick/color=red/palette=blue/axes=1,0,1,0 {1,2,1}, {2,1,0.5} - -! Now test that is still also works with the 2-D mode of polygons. - -let xtriangle = ysequence({-1,0,1}) -let ytriangle = ysequence({-1,1,-1}) -let xpts = 180 + 30*randu(i[i=1:10]) -let ypts = 30*randu(1+i[i=1:10]) -polygon xtriangle+xpts, ytriangle+ypts, i[i=1:10] - -! GO bn_reset -! GO bn_zaxr_fcns.jnl ! move to tests of shared-obj efs. - -GO bn_reset bn_fill_irregular.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_fill_irregular.jnl -GO bn_fill_irregular.jnl -! FILL on vars with irregular axes - -use gtbc011 -fill/i=70/l=1 temp -can data/all - -def ax/t tax = {1,5,6,7} -let v = t[gt=tax]+z[gz=1:3:1] -fill v - -def ax/x xax = {1,5,6,7} -let v = x[gx=xax]-z[gz=1:3:1] -fill v - -use test_subspan_modulo.nc -fill v2d_irr[x=-100:100] -fill v2d_irr[t=1-jan-1990:1-jan-1995] - -use coads_clim_irreg.des -fill/x=180 sst - -! ******** V5.53 Additions below *********** - -GO bn_reset bn_xml_output.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_xml_output.jnl -GO bn_xml_output.jnl -!bn_xml_output.jnl -! new-V553 output in XML-style format -! Illustrate the SHOW commands with /XML xml-style output -! V5.80 11/04 new tests for SHOW VAR/XML; global variables. -! -! 22-Feb-2005 USE SHO AXIS/XML `temp,return=taxis` instead -! of naming the axes; other axes of the same name (e.g. TIME) -! may have been defined in other benchmark scrips. -! -! 24-Oct-2016 Changes in Ferret, handling of grid and datatype -! info. Order of listing in xml output, ferret_data_type is listed -* for all variables - -USE levitus_climatology.cdf - -SHO DATA/XML - - - - - - - -SHO GRID/XML `temp,return=grid` - !-> SHO GRID/XML GG2 - - -XAXLEVITR1_160 -YAXLEVITR1_90 -ZAXLEVITR1_1 - - - -SHO AXIS/XML `temp,return=zaxis` - !-> SHO AXIS/XML ZAXLEVITR1_1 - - - - - - - - - - 1 - - - 0 - - - 0 - - - - - - - - - no - - - - - - - - - -SHO AXIS/XML `temp,return=taxis` - !-> SHO AXIS/XML NORMAL - -can dat/all - -! make some short files -let/units="meters" myvar = 7 -save/clobber/file=a.nc myvar - -LET ddat = ZSEQUENCE({1126,1136,1146,1156,1166}) -save/clobber/file=b.nc ddat -can var/all -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -USE a.nc -USE b.nc - -! Define a dataset variable -! SHOW/XML commands list it w/ its dataset (even if dataset is not default) -LET/D=a temp_av = ddat[d=2,X=@AVE] - -SHOW DATA/XML - - - - - - - - - - - -SHO DATA/VAR/XML 1 - - - - - - - - - - - - -1.E+34 - - - -1.E+34 - - - - - - - - - - - - - - - - - - -1.E+34 - - - -1.E+34 - - - - - - - - - -ZAX1_5 - - - - - - - - - - - - 5 - - - 1 - - - 5 - - - - - - no - - - - - - - - - - - - - -CAN DAT/ALL - -! tests of SHOW VAR/XML for global variables. -CAN DATA/ALL -CAN VAR/ALL - -USE a -USE b - -! Define a dataset variable -LET/D=b temp_20 ddat[x=1:2@SUM] - -! Define a global variable -LET t30 = ddat[x=1:3@SUM] - -! Another variable, setting title, units, bad flag. -LET/UNITS="Deg C"/BAD=100/TITLE="Indefinite integral" salty = temp[x=@iin] - -! Define a constant -LET pi = 3.14 - -! Another variable, irrelevant in the current context -LET my_a = a*12 - -! This lists all the variables except my_a - -SHO VAR/XML - - - - - - - -1.E+34 - - - - - - -ZAX1_5 - - - - - - - - - -1.E+34 - - - - - - - - - - - - - - - -1.E+34 - - - - - - -ZAX1_5 - - - - - -! Now change datasets, so my_a has a context, but t30 -! does not. temp_20 is listed becaUSE it is defined on a dataset - -SET DATA a -SHO VAR/XML - - - - - - - -1.E+34 - - - - - - -ZAX1_5 - - - - - - - - - -1.E+34 - - - - - - - - - - - -! Change default dataset. Now we should just see pi and my_a - -CAN DATA b -SHOW VAR/XML - - - - - - - -1.E+34 - - - - - - - - - - - -! 8/7/2007 -! new form for output of a var whose definition contains quotes -CANCEL DATA/ALL -CANCEL VAR/ALL - -let tvar = t[gt=month_reg] -save/clobber/file=a.nc tvar - -USE a -LET t3 = tvar[t="15-jan-0000:00:00":"15-feb-0000:00:00"@AVE] -SHOW VAR/XML - - - - - - - -1.E+34 - - - - - - -TIME8 - - - - - - - - - -1.E+34 - - - - - - -MONTH_REG - - - - - -! Test getting the data type of a user-defined variable - -let/d=a dates = tax_datestring(t[gt=tvar], tvar, "days") -SHOW VAR/XML dates - - - - - - - -1.E+34 - - - - - - -MONTH_REG - - - - -SHO DATA/VAR/XML 1 - - - - - - - - - -1.E+34 - - - -1.E+34 - - - - - - - - - -MONTH_REG - - - - - - - - - -1.E+34 - - - -1.E+34 - - - - - - - - - -MONTH_REG - - - - - - - - - - - - - - - 12 - - - 0000-01-16 06:00:00 - - - 0000-12-16 01:20:05 - - - - - - - - - - - - - - - - - - - - - - - - - - - - -GO bn_reset bn_test_nan.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_test_nan.jnl -GO bn_test_nan.jnl -!bn_test_nan.jnl -! test to make sure that NaN is able to be set by user -! as bad value. If this fails, Ferret will crash -! Test on a file which is nothing but NaN's, and use -! various spellings of NaN -! -! 9/03 *kob* -! - - - -! test "nan" -use test_nan.nc -set var/bad=nan p1 -list p1 - VARIABLE : Pressure (dbar) - FILENAME : test_nan.nc - SUBSET : 10 points (TIME) - 13-OCT-2001 07:21:50 / 1:.... - 13-OCT-2001 07:21:51 / 2:.... - 13-OCT-2001 07:21:52 / 3:.... - 13-OCT-2001 07:21:53 / 4:.... - 13-OCT-2001 07:21:54 / 5:.... - 13-OCT-2001 07:21:55 / 6:.... - 13-OCT-2001 07:21:56 / 7:.... - 13-OCT-2001 07:21:57 / 8:.... - 13-OCT-2001 07:21:58 / 9:.... - 13-OCT-2001 07:21:59 / 10:.... -can data/all -can var/all - -! test "NaN" -use test_nan.nc -set var/bad=NaN p1 -list p1 - VARIABLE : Pressure (dbar) - FILENAME : test_nan.nc - SUBSET : 10 points (TIME) - 13-OCT-2001 07:21:50 / 1:.... - 13-OCT-2001 07:21:51 / 2:.... - 13-OCT-2001 07:21:52 / 3:.... - 13-OCT-2001 07:21:53 / 4:.... - 13-OCT-2001 07:21:54 / 5:.... - 13-OCT-2001 07:21:55 / 6:.... - 13-OCT-2001 07:21:56 / 7:.... - 13-OCT-2001 07:21:57 / 8:.... - 13-OCT-2001 07:21:58 / 9:.... - 13-OCT-2001 07:21:59 / 10:.... -can data/all -can var/all - -! test "NAN" -use test_nan.nc -set var/bad=NAN p1 -list p1 - VARIABLE : Pressure (dbar) - FILENAME : test_nan.nc - SUBSET : 10 points (TIME) - 13-OCT-2001 07:21:50 / 1:.... - 13-OCT-2001 07:21:51 / 2:.... - 13-OCT-2001 07:21:52 / 3:.... - 13-OCT-2001 07:21:53 / 4:.... - 13-OCT-2001 07:21:54 / 5:.... - 13-OCT-2001 07:21:55 / 6:.... - 13-OCT-2001 07:21:56 / 7:.... - 13-OCT-2001 07:21:57 / 8:.... - 13-OCT-2001 07:21:58 / 9:.... - 13-OCT-2001 07:21:59 / 10:.... -can data/all -can var/all - - - - - - -GO bn_reset bn553_bug_fixes.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn553_bug_fixes.jnl -GO bn553_bug_fixes.jnl -! bn553_bug_fixes.jnl -! test various fixes that went into version 5.52 -! 9/03 *kob* -! - -! Make sure numeric filenames works -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_numeric_filename.jnl -! err553_numeric_filename.jnl -! 9/03 kob - - -! Use of a filename begining w/ a numberic was a problem -! w/ g77 - just make sure it works where -use 123456789000101_100101_test_numeric.nc - -list vwnd_clim - VARIABLE : VWND[GT=MONTH_REG@MOD] - FILENAME : 123456789000101_100101_test_numeric.nc - SUBSET : 12 points (TIME) - LONGITUDE: 161W - LATITUDE : 39N - 161W - 1 - 16-JAN / 1: 3.43667 - 15-FEB / 2: 1.92500 - 17-MAR / 3: 2.79000 - 16-APR / 4: 1.79000 - 16-MAY / 5: 0.80000 - 16-JUN / 6: 3.80000 - 16-JUL / 7: -0.20000 - 16-AUG / 8: 0.46500 - 15-SEP / 9: 2.57250 - 16-OCT / 10: -2.53000 - 15-NOV / 11: -3.09000 - 16-DEC / 12: 1.78667 - - - -! Make sure long string variables work -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_long_string_var_name.jnl -! err553_long_string_var_name.jnl -! 9/03 kob - - - -! test long string variables - the were being truncated -! at 100 characters - - -let a = "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" - -list a - VARIABLE : "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" - "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" - - - - - -! Fixes for colorbar key labelling -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err551_colorkey.jnl - -! colorkey label bugs - - -let zero = 0*x[i=1:10]+0*y[j=1:10] -set view ul; shade zero !This one is labeled correctly. -set view ur; shade 1+zero !So is this. -set view ll; shade/lev=c zero !But here colorkey is 1:1 instead of 0:0. - -! Here the zero level is labelled as -.3e-08 rather than 0. (linux) -can view -use coads_climatology -shade/l=1/lev=30/set (sst-10)/10 -ppl axlen 6 -ppl shakey 1,1,.12 -ppl shade - - -! ******** V5.6Additions below *********** - -GO bn_reset bn_graticules.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_graticules.jnl -GO bn_graticules.jnl -! /GRAT, /HGRAT and /VGRAT to set graticule lines -! ACM March 12, 2004 -! ACM 4/2005 set mode meta to save one of the plots for the metafile checks. -! and cancel mode logo, so that .plt files are comparable. -! 2/18 *acm* keep mode logo turned off - -ppl axnmtc,2,2 - - ! GRAT on plot commands -PLOT/grat/i=1:100 sin(i/5) -let a = sin(i/5) * cos(j/8) -CONTOUR/color=ligh/grat=(color=red)/i=1:100/j=1:80 a -use coads_climatology -! KMS - white changed to green for PyFerret - white causing problems -SHADE/grat=(color=green) sst[L=1] -FILL/grat=dash sst[l=1] -VECTOR/color=red/grat=(blue,dash) sst[l=1], sst[l=2] -let b = {1,2,1} -let c = {2,1,0.5} -POLYGON/thick/color=red/pal=blue/grat b,c - -! More complex GRAT arguments -plot/grat="large(dash),small(dash,color=blue)"/i=1:100 sin(i/5) -contour/color=ligh/grat="large(color=purple,thick=3,line),small(dash,color=blue)"/i=1:100/j=1:80 a -shade/grat="small(color=lightblue),large(thick,color=lightblue)" sst[l=1] -fill/i=1:50/j=1:30/grat="large(line),small(dash,color=lightblue)" i+j -! KMS - white changed to green for PyFerret - white causing problems -poly/thi/col=red/pal=blue/grat="lar(col=pur,thi=3,lin),sma(dash,col=green)" b,c -vector/i=1:50/j=1:30/grat="small(color=black),large(thick,color=blue)" sst[l=1], sst[l=2] - -! /HGRAT and /VGRAT -plot/vg=large(line,color=red),small(dash,color=blue)/i=1:100 sin(i/5) -plot/hg=small(color=red,dash),large(color=blue,line,thick)/i=1:100 sin(i/5) -plot/hg=small(color=red,dash,thick=1),large(color=blue,line,thick=3)/vg=large(line,color=red),small(dash,color=blue)/i=1:100 sin(i/5) - -! Log axes: VLOG and HLOG with large and small tics - -set mode meta graticules.plt - -set view left -def axis/z zlog=exp(k[k=1:10]) -let fcn = k[gz=zlog] -plot/vlog/vlimits=1:100000/grat="large(color=black),small(color=lightblue)" fcn - -set view right -def axis/z/depth dlog=exp(k[k=1:20]) -let fcn = k[gz=dlog] -plot/vlog/vlimits=1:100000/hg="large(color=red),small(color=lightblue)" fcn - -can mode meta - -can view - -! HLOG and VLOG - -def axis/x ddlog = exp(-1*(10-i[i=1:10])) -let fcn = (i[gx=ddlog])^2 -plot/thick/hlog/vlog/grat="large(color=red),small=(color=lightblue)" fcn - -! Time axes -let a = sin(t[gt=tax]/5) -let b = sin(t[gt=tax]/100) - -def axis/t=1-jan-1990:1-jan-1998:1/units=months tax - -plot/t=1-jan-1990:31-dec-1992/trans/hg="large(dash,color=blue),small(line,color=lightblue)"/vg="(line,color=blue)" a - -def axis/t=1-jan-1990:1-mar-1990:1/units=days tax -plot/hg="(line,color=blue)"/vg="large(line,color=blue),small(line,color=lightblue)" a -plot/trans/vg="(line,color=blue)"/hg="large(line,color=blue),small(line,color=lightblue)" a - -def axis/t=1-jan-1950:1-jan-1990:1/units=years tax -plot/hg="(line,color=blue)"/vg="large(line,color=blue),small(line,color=lightblue)" a -plot/trans/vg="(line,color=blue)"/hg="large(line,color=blue),small(line,color=lightblue)" a - -def axis/t=1-jan-1800:1-jan-1990:1/units=years tax -plot/thick/trans/grat="(line,color=blue)" a - -def axis/t="1-jan-1990:01":"2-jan-1990:12:00":1/units=minutes tax -plot/thick/grat="large(line,color=blue),small(line,color=lightblue)" b -plot/trans/thick/vg="(line,color=blue)"/hg="large(line,color=blue),small(line,color=lightblue)" b - -! Tests for MODE GRATICULE added in Ferret v5.7 -show mode graticule - MODE STATE ARGUMENT - GRATICULE CANCELED -set mode graticule -show mode graticule - MODE STATE ARGUMENT - GRATICULE SET - -PLOT/i=1:100 sin(i/5) -can mode graticule - -PLOT/i=1:100 cos(i/5) - -set mode graticule:color=red -PLOT/i=1:100 cos(i/5) -set mode graticule:(thick,color=red) -PLOT/i=1:100 cos(i/5) - -set mode graticule:(dash,color=blue) -PLOT/i=1:100 cos(i/5) -can mode graticule - -pplus/reset ! restore tics etc - - -GO bn_reset bn_repeat_range.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_repeat_range.jnl -GO bn_repeat_range.jnl -! REPEAT/RANGE=[/NAME=] for looping without depending -! on the grid\ -! ACM March 12, 2004 - -! simplest syntax - -repeat/range=5:1:-1 say what -!-> REPEAT: REPCOUNT:5 -what -!-> REPEAT: REPCOUNT:4 -what -!-> REPEAT: REPCOUNT:3 -what -!-> REPEAT: REPCOUNT:2 -what -!-> REPEAT: REPCOUNT:1 -what -repeat/range=1:5:3/name=s (list/nohead s) -!-> REPEAT: S:1 - 1.00000 -!-> REPEAT: S:4 - 4.00000 -sh var s ! counter variable goes away after a repeat - -! Nested loops, and calling a function -repeat/range=1:5:3/name=s (repeat/range=1:3/name=tt list sin(tt)) -!-> REPEAT: S:1 -!-> REPEAT: TT:1 - VARIABLE : SIN(TT) - 0.841471 -!-> REPEAT: TT:2 - VARIABLE : SIN(TT) - 0.909297 -!-> REPEAT: TT:3 - VARIABLE : SIN(TT) - 0.141120 -!-> REPEAT: S:4 -!-> REPEAT: TT:1 - VARIABLE : SIN(TT) - 0.841471 -!-> REPEAT: TT:2 - VARIABLE : SIN(TT) - 0.909297 -!-> REPEAT: TT:3 - VARIABLE : SIN(TT) - 0.141120 - -! Nested, use counter variables in computation -can mode ver -I / *: 80.0000 6.00000 480.000 -I / *: 80.0000 8.00000 640.000 -I / *: 80.0000 10.0000 800.000 -I / *: 60.0000 6.00000 360.000 -I / *: 60.0000 8.00000 480.000 -I / *: 60.0000 10.0000 600.000 -I / *: 40.0000 6.00000 240.000 -I / *: 40.0000 8.00000 320.000 -I / *: 40.0000 10.0000 400.000 -I / *: 20.0000 6.00000 120.000 -I / *: 20.0000 8.00000 160.000 -I / *: 20.0000 10.0000 200.000 - -! Nested with a standard repeat loop over Z -repeat/range=100:200:50/name=m (repeat/z=8:10 list m*z) -!-> REPEAT: M:100 -!-> REPEAT: Z=8 - VARIABLE : M*Z - Z : 8 - 800.000 -!-> REPEAT: Z=9 - VARIABLE : M*Z - Z : 9 - 900.000 -!-> REPEAT: Z=10 - VARIABLE : M*Z - Z : 10 - 1000.00 -!-> REPEAT: M:150 -!-> REPEAT: Z=8 - VARIABLE : M*Z - Z : 8 - 1200.00 -!-> REPEAT: Z=9 - VARIABLE : M*Z - Z : 9 - 1350.00 -!-> REPEAT: Z=10 - VARIABLE : M*Z - Z : 10 - 1500.00 -!-> REPEAT: M:200 -!-> REPEAT: Z=8 - VARIABLE : M*Z - Z : 8 - 1600.00 -!-> REPEAT: Z=9 - VARIABLE : M*Z - Z : 9 - 1800.00 -!-> REPEAT: Z=10 - VARIABLE : M*Z - Z : 10 - 2000.00 -repeat/z=1:3 (repeat/range=1000:2000:1000/name=m list m*z) -!-> REPEAT: Z=1 -!-> REPEAT: M:1000 - VARIABLE : M*Z - Z : 1 - 1000.00 -!-> REPEAT: M:2000 - VARIABLE : M*Z - Z : 1 - 2000.00 -!-> REPEAT: Z=2 -!-> REPEAT: M:1000 - VARIABLE : M*Z - Z : 2 - 2000.00 -!-> REPEAT: M:2000 - VARIABLE : M*Z - Z : 2 - 4000.00 -!-> REPEAT: Z=3 -!-> REPEAT: M:1000 - VARIABLE : M*Z - Z : 3 - 3000.00 -!-> REPEAT: M:2000 - VARIABLE : M*Z - Z : 3 - 6000.00 - -! With regions defined -set reg/x=-9:9 -repeat/range=1:4/name=m (repeat/range=44:45/name=p list p) -!-> REPEAT: M:1 -!-> REPEAT: P:44 - VARIABLE : constant - 44.0000 -!-> REPEAT: P:45 - VARIABLE : constant - 45.0000 -!-> REPEAT: M:2 -!-> REPEAT: P:44 - VARIABLE : constant - 44.0000 -!-> REPEAT: P:45 - VARIABLE : constant - 45.0000 -!-> REPEAT: M:3 -!-> REPEAT: P:44 - VARIABLE : constant - 44.0000 -!-> REPEAT: P:45 - VARIABLE : constant - 45.0000 -!-> REPEAT: M:4 -!-> REPEAT: P:44 - VARIABLE : constant - 44.0000 -!-> REPEAT: P:45 - VARIABLE : constant - 45.0000 - -set reg/x=-180:-160/y=1:15/z=-10000:-1000/t="1-jan-1990" -repeat/range=1:5 (let a = 6; list a) -!-> REPEAT: REPCOUNT:1 - VARIABLE : 6 - 6.00000 -!-> REPEAT: REPCOUNT:2 - VARIABLE : 6 - 6.00000 -!-> REPEAT: REPCOUNT:3 - VARIABLE : 6 - 6.00000 -!-> REPEAT: REPCOUNT:4 - VARIABLE : 6 - 6.00000 -!-> REPEAT: REPCOUNT:5 - VARIABLE : 6 - 6.00000 -repeat/range=1:5/name=p (let a = 6; list p) -!-> REPEAT: P:1 - VARIABLE : constant - 1.00000 -!-> REPEAT: P:2 - VARIABLE : constant - 2.00000 -!-> REPEAT: P:3 - VARIABLE : constant - 3.00000 -!-> REPEAT: P:4 - VARIABLE : constant - 4.00000 -!-> REPEAT: P:5 - VARIABLE : constant - 5.00000 - -! Region applies to data, not to loop index. -use coads_climatology -let xx = x[gx=sst] -set reg/x=-180:-160/y=1:15/z=-10000:-1000/t="1-jan-1990" -repeat/range=1:5/name=p (list p*xx) -!-> REPEAT: P:1 - VARIABLE : P*XX - FILENAME : coads_climatology.cdf - SUBSET : 10 points (LONGITUDE) - 179W / -99: -179.000 - 177W / -98: -177.000 - 175W / -97: -175.000 - 173W / -96: -173.000 - 171W / -95: -171.000 - 169W / -94: -169.000 - 167W / -93: -167.000 - 165W / -92: -165.000 - 163W / -91: -163.000 - 161W / -90: -161.000 -!-> REPEAT: P:2 - VARIABLE : P*XX - FILENAME : coads_climatology.cdf - SUBSET : 10 points (LONGITUDE) - 179W / -99: -358.000 - 177W / -98: -354.000 - 175W / -97: -350.000 - 173W / -96: -346.000 - 171W / -95: -342.000 - 169W / -94: -338.000 - 167W / -93: -334.000 - 165W / -92: -330.000 - 163W / -91: -326.000 - 161W / -90: -322.000 -!-> REPEAT: P:3 - VARIABLE : P*XX - FILENAME : coads_climatology.cdf - SUBSET : 10 points (LONGITUDE) - 179W / -99: -537.000 - 177W / -98: -531.000 - 175W / -97: -525.000 - 173W / -96: -519.000 - 171W / -95: -513.000 - 169W / -94: -507.000 - 167W / -93: -501.000 - 165W / -92: -495.000 - 163W / -91: -489.000 - 161W / -90: -483.000 -!-> REPEAT: P:4 - VARIABLE : P*XX - FILENAME : coads_climatology.cdf - SUBSET : 10 points (LONGITUDE) - 179W / -99: -716.000 - 177W / -98: -708.000 - 175W / -97: -700.000 - 173W / -96: -692.000 - 171W / -95: -684.000 - 169W / -94: -676.000 - 167W / -93: -668.000 - 165W / -92: -660.000 - 163W / -91: -652.000 - 161W / -90: -644.000 -!-> REPEAT: P:5 - VARIABLE : P*XX - FILENAME : coads_climatology.cdf - SUBSET : 10 points (LONGITUDE) - 179W / -99: -895.000 - 177W / -98: -885.000 - 175W / -97: -875.000 - 173W / -96: -865.000 - 171W / -95: -855.000 - 169W / -94: -845.000 - 167W / -93: -835.000 - 165W / -92: -825.000 - 163W / -91: -815.000 - 161W / -90: -805.000 - -can region - -! factorial -can mode ver -I / *: 1.00000 "factorial" 1.00000 -I / *: 2.00000 "factorial" 2.00000 -I / *: 3.00000 "factorial" 6.00000 -I / *: 4.00000 "factorial" 24.0000 -I / *: 5.00000 "factorial" 120.000 -I / *: 6.00000 "factorial" 720.000 - -! with some data -use coads_climatology -repeat/range=80:120:40/name=p (list/L=1/y=1 sst[x=1:360:`p`]) -!-> REPEAT: P:80 - !-> list/L=1/y=1 sst[x=1:360:80] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - regrid: 80 deg on X - FILENAME : coads_climatology.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 1N - TIME : 16-JAN 06:00 - 1N - 46 - 1E / 1: 27.8258 - 81E / 2: 28.1147 - 161E / 3: 28.7893 - 119W / 4: 24.5394 - 39W / 5: 27.4849 -!-> REPEAT: P:120 - !-> list/L=1/y=1 sst[x=1:360:120] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - regrid: 120 deg on X - FILENAME : coads_climatology.cdf - SUBSET : 3 points (LONGITUDE) - LATITUDE : 1N - TIME : 16-JAN 06:00 - 1N - 46 - 1E / 1: 27.8258 - 121E / 2: 28.5914 - 119W / 3: 24.5394 - -set reg/x=300:360/y=0:50 -repeat/range=1:12:4/name=m (list sst[l=`m`,x=@ave,y=@ave]) -!-> REPEAT: M:1 - !-> list sst[l=1,x=@ave,y=@ave] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 60W to 0E(360) (XY ave) - LATITUDE : 0 to 50N (XY ave) - TIME : 16-JAN 06:00 - 20.9844 -!-> REPEAT: M:5 - !-> list sst[l=5,x=@ave,y=@ave] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 60W to 0E(360) (XY ave) - LATITUDE : 0 to 50N (XY ave) - TIME : 15-JAN 11:49 - 20.9844 -!-> REPEAT: M:9 - !-> list sst[l=9,x=@ave,y=@ave] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 60W to 0E(360) (XY ave) - LATITUDE : 0 to 50N (XY ave) - TIME : 15-JAN 17:38 - 20.9844 - -! Look for "reading SST" lines; each has a different X range -can data/all -can mem -can region -use coads_climatology - -set mode diag -set reg/y=0:50/L=1 -repeat/range=300:360:30/name=m (list sst[x=280:`m`@ave,y=@ave]) -!-> REPEAT: M:300 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 M: -999 -999 N: -999 -999 - constan cnst M:228 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE cnst M:227 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - !-> list sst[x=280:300@ave,y=@ave] - -DELETE cnst M:228 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: 46 70 K: -999 -999 L: 1 1 - strip --> SST[Y=0:50N@AV4,D=1] - reading SST M:228 dset: 1 I: 131 140 J: 46 70 K: -999 -999 L: 1 1 - doing --> SST[Y=0:50N@AV4,D=1] - final --> SST[Y=0:50N@AV4,D=1] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 80W to 60W (XY ave) - LATITUDE : 0 to 50N (XY ave) - TIME : 16-JAN 06:00 - 20.7890 -!-> REPEAT: M:330 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 M: -999 -999 N: -999 -999 - constan cnst M:223 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE cnst M:215 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - !-> list sst[x=280:330@ave,y=@ave] - -DELETE cnst M:223 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: 46 70 K: -999 -999 L: 1 1 - strip --> SST[Y=0:50N@AV4,D=1] - reading SST M:223 dset: 1 I: 131 155 J: 46 70 K: -999 -999 L: 1 1 - doing --> SST[Y=0:50N@AV4,D=1] - final --> SST[Y=0:50N@AV4,D=1] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 80W to 30W (XY ave) - LATITUDE : 0 to 50N (XY ave) - TIME : 16-JAN 06:00 - 21.2500 -!-> REPEAT: M:360 - dealloc dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 M: -999 -999 N: -999 -999 - constan cnst M:195 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE cnst M:189 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - !-> list sst[x=280:360@ave,y=@ave] - -DELETE cnst M:195 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - dealloc dynamic grid ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT ABSTRACT - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSQ1 COADSX COADSY NORMAL TIME7 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: 46 70 K: -999 -999 L: 1 1 - strip --> SST[Y=0:50N@AV4,D=1] - reading SST M:195 dset: 1 I: 131 170 J: 46 70 K: -999 -999 L: 1 1 - doing --> SST[Y=0:50N@AV4,D=1] - final --> SST[Y=0:50N@AV4,D=1] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 80W to 0E(360) (XY ave) - LATITUDE : 0 to 50N (XY ave) - TIME : 16-JAN 06:00 - 20.9385 -cancel mode diag - -! order of qualifiers doesnt matter -repeat/name=a/range=1:3 say `a` -!-> REPEAT: A:1 - !-> MESSAGE/CONTINUE 1 -1 -!-> REPEAT: A:2 - !-> MESSAGE/CONTINUE 2 -2 -!-> REPEAT: A:3 - !-> MESSAGE/CONTINUE 3 -3 - -! Test using a file variable name -use coads_climatology -repeat/name=sst/range=1:5 (list sst) -!-> REPEAT: SST:1 - VARIABLE : constant - 1.00000 -!-> REPEAT: SST:2 - VARIABLE : constant - 2.00000 -!-> REPEAT: SST:3 - VARIABLE : constant - 3.00000 -!-> REPEAT: SST:4 - VARIABLE : constant - 4.00000 -!-> REPEAT: SST:5 - VARIABLE : constant - 5.00000 -list/l=1/x=181/y=1 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 179W - LATITUDE : 1N - TIME : 16-JAN 06:00 - 28.2839 -can data/all - -! Intentional errors -set mode ignore - -! /NAME without /RANGE -rep/name=a say `a` - -! Cannot use pseudo-variables. - -set mode ignore -rep/range=1:3/name=L (use coads_climatology; list/nohead [sst=I=1,j=1]) - -! Check that the state is reset after error -rep/range=1:3/name=a say `a` -!-> REPEAT: A:1 - !-> MESSAGE/CONTINUE 1 -1 -!-> REPEAT: A:2 - !-> MESSAGE/CONTINUE 2 -2 -!-> REPEAT: A:3 - !-> MESSAGE/CONTINUE 3 -3 - -rep/range=1:3/name=I (use coads_climatology; list/nohead [sst]) -rep/range=1:3/name=j (use coads_climatology; list/nohead [sst]) -rep/range=1:3/name=k (use coads_climatology; list/nohead [sst]) -rep/range=1:3/name=X (use coads_climatology; list/nohead [sst]) -rep/range=1:3/name=y (use coads_climatology; list/nohead [sst]) -rep/range=1:3/name=z (use coads_climatology; list/nohead [sst]) -rep/range=1:3/name=tbox (use coads_climatology; list/nohead[sst,x=181,y=0,t=`tbox`]) -rep/range=1:3/name=xboxlo (list/nohead xboxlo) - - -! Nested REPEAT with the same counter variable name -repeat/range=1:4/name=a (repeat/range=3:1:-1/name=a list a) -!-> REPEAT: A:1 -!-> REPEAT: A:2 -!-> REPEAT: A:3 -!-> REPEAT: A:4 -cancel mode ignore - -GO bn_reset bn554_bug_fixes.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn554_bug_fixes.jnl -GO bn554_bug_fixes.jnl -! bn554_bug_fixes.jnl -! test various fixes that went into version 5.54 -! 11/03 *acm* -! - -! Test use of longer strings in region names -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_regionname_lengths.jnl -! In v5.50, we upped the region name storage to -! allow 24-characters. Wasnt fully implemented. -! acm 11/03 - -SET MODE IGNORE_ERRORS - -def region/x=100e:150e/y=0:40 southeast_asia -show region southeast_asia -region southeast_asia - X=100:150 - Y=0:40 - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -set region southeast_asia -show region -default region: - X=100:150 - Y=0:40 - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified - -def region/x=150:210/y=-60:0 southwest_pacific -show region/all -default region: - X=100:150 - Y=0:40 - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -region southeast_asia - X=100:150 - Y=0:40 - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -region southwest_pacific - X=150:210 - Y=-60:0 - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified - -SET MODE/LAST IGNORE_ERRORS - - -! Reqests for data at times outside range of data -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_timeregion.jnl -! try to apply a region whose limits are both below, -! or both above, the data bounds. In v5.53 the error -! handling for this got broken for time axes (an error -! in the fix for err551_no_taxis_errmsg) -! acm 11/03 - -SET MODE IGNORE_ERRORS - - use gt4d011.cdf -list/t=1-aug-1980:1-jan-1982/i=92/j=35 temp - - -SET MODE/LAST IGNORE_ERRORS - -! Contour plot on fine grid has precision problems -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_contour_fine_grid.jnl -! err553_contour_find_grid.jnl -! 11/21/03 ACM - -! For fine grids, precision isnt sufficient to -! compute the values to map coordinates to the -! page. The bug occurs with smith_sandwell_topo -! and has to do with large index values in the -! calculations. This small set ss_small.nc is saved -! from smith_sandwell_topo. Then we need to put it on -! a large grid to see the error. The first contour -! command either shows nothing, or a set of contours -! that are shifted relative to the (correct) second -! contour plot. - -! The fix is to increase precision for some of the -! calculations in plotz.F, pltit.F and setax.F - -use ss_small.nc -def axis/x=0.16e:0.67w/npoints=10800 xax -def axis/y=72s:72n/npoints=6336 yax -def grid/x=xax/y=yax fullgrid -let rrose = rose[g=fullgrid] -set grid fullgrid -set reg/x=137.25w:135.75w/y=58.2n:59.15n -go mp_mercator -go mp_aspect -contour rrose,x_page, y_page -contour/over/color=red rrose, x_page, y_page - -PPLUS/RESET ! reset aspect ratio - -! PLOT/SYM/SIZE= did not change the size -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_symsize.jnl -! PLOT/SYM/SIZE= does not change the size from the default. -! acm 11/03 -! -plot/i=1:10/sym=20/siz=.4 i -plot/over/i=1:10/sym=20/siz=0.2 i - -! test labels on shade keys; consistent number of digits set by 5th shakey arg -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_shakey_labels.jnl -! The 5th argument to shakey is supposed to define -! number of digits in the label. -! acm 12/03 - -shade/set/i=1:10/j=1:10 (i+j)/10 -ppl shakey 1, , , , -2 -ppl shade -shade/set/i=1:10/j=1:10 (i+j)/10 -ppl shakey 1, , , , -1 -ppl shade - - -! couldnt set the number of small tics with arg to %xaxis, %yaxis commands -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_xaxis_nsmtc.jnl -! Bug: 5th argument failed to set the number of small -! tics for the axis. - -! ACM 12/12/03 - -ppl %xaxis/nouser 1,100,10,1,4 -ppl %xaxis/nouser 1,100,10,2,6 -ppl %yaxis/nouser 1,100,10,1,4 -ppl %yaxis/nouser 1,100,10,2,6 - - -! The defined year length was different if we used DEFINE AXIS/UNIT=year -! vs DEFINE AXIS/UNIT=yr -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_year_yr.jnl -! err553_year_yr.jnl -! 2/2004 ACM -! DEFINE AXIS/UNITS=year and UNITS=yr should be the same; -! and year length should match the length of a year in -! the specified calendar - -def ax/t=1-jan-0001:1-jan-0100:`1/12,p=9`/edge/cal=noleap/unit=year tax1 - !-> def ax/t=1-jan-0001:1-jan-0100:0.0833333333/edge/cal=noleap/unit=year tax1 -def ax/t=1-jan-0001:1-jan-0100:`1/12,p=9`/edge/cal=noleap/unit=yr tax2 - !-> def ax/t=1-jan-0001:1-jan-0100:0.0833333333/edge/cal=noleap/unit=yr tax2 -show axis tax1 - name axis # pts start end - TAX1 TIME 1188 r 16-JAN-0001 04:59 16-DEC-0099 18:59 -T0 = 01-JAN-0000 -CALENDAR = NOLEAP - Axis span (to cell edges) = 99 -show axis tax2 - name axis # pts start end - TAX2 TIME 1188 r 16-JAN-0001 04:59 16-DEC-0099 18:59 -T0 = 01-JAN-0000 -CALENDAR = NOLEAP - Axis span (to cell edges) = 99 -list/l=1186:1189 t[gt=tax1] - VARIABLE : T - axis TAX1 - SUBSET : 3 points (TIME) - CALENDAR : NOLEAP - 16-OCT-0099 / 1186: 99.7917 - 16-NOV-0099 / 1187: 99.8750 - 16-DEC-0099 / 1188: 99.9583 -list/l=1186:1189 t[gt=tax2] - VARIABLE : T - axis TAX2 - SUBSET : 3 points (TIME) - CALENDAR : NOLEAP - 16-OCT-0099 / 1186: 99.7917 - 16-NOV-0099 / 1187: 99.8750 - 16-DEC-0099 / 1188: 99.9583 - -def ax/t=1-jan-0001:1-jan-0100:`1/12,p=9`/edge/cal=julian/unit=year tax1 - !-> def ax/t=1-jan-0001:1-jan-0100:0.0833333333/edge/cal=julian/unit=year tax1 -def ax/t=1-jan-0001:1-jan-0100:`1/12,p=9`/edge/cal=julian/unit=yr tax2 - !-> def ax/t=1-jan-0001:1-jan-0100:0.0833333333/edge/cal=julian/unit=yr tax2 -show axis tax1 - name axis # pts start end - TAX1 TIME 1188 r 16-JAN-0001 05:14 17-DEC-0099 12:44 -T0 = 01-JAN-0000 -CALENDAR = JULIAN - Axis span (to cell edges) = 99 -show axis tax2 - name axis # pts start end - TAX2 TIME 1188 r 16-JAN-0001 05:14 17-DEC-0099 12:44 -T0 = 01-JAN-0000 -CALENDAR = JULIAN - Axis span (to cell edges) = 99 -list/l=1186:1189 t[gt=tax1] - VARIABLE : T - axis TAX1 - SUBSET : 3 points (TIME) - CALENDAR : JULIAN - 17-OCT-0099 / 1186: 99.7937 - 17-NOV-0099 / 1187: 99.8771 - 17-DEC-0099 / 1188: 99.9604 -list/l=1186:1189 t[gt=tax2] - VARIABLE : T - axis TAX2 - SUBSET : 3 points (TIME) - CALENDAR : JULIAN - 17-OCT-0099 / 1186: 99.7937 - 17-NOV-0099 / 1187: 99.8771 - 17-DEC-0099 / 1188: 99.9604 - -def ax/t=1-jan-0001:1-jan-0100:`1/12,p=9`/edge/cal=standard/unit=year tax1 - !-> def ax/t=1-jan-0001:1-jan-0100:0.0833333333/edge/cal=standard/unit=year tax1 -def ax/t=1-jan-0001:1-jan-0100:`1/12,p=9`/edge/cal=standard/unit=yr tax2 - !-> def ax/t=1-jan-0001:1-jan-0100:0.0833333333/edge/cal=standard/unit=yr tax2 -show axis tax1 - name axis # pts start end - TAX1 TIME 1188 r 16-JAN-0001 05:14 16-DEC-0099 18:56 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 99 -show axis tax2 - name axis # pts start end - TAX2 TIME 1188 r 16-JAN-0001 05:14 16-DEC-0099 18:56 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 99 -list/l=1186:1189 t[gt=tax1] - VARIABLE : T - axis TAX1 - SUBSET : 3 points (TIME) - 16-OCT-0099 / 1186: 99.7937 - 16-NOV-0099 / 1187: 99.8771 - 16-DEC-0099 / 1188: 99.9604 -list/l=1186:1189 t[gt=tax2] - VARIABLE : T - axis TAX2 - SUBSET : 3 points (TIME) - 16-OCT-0099 / 1186: 99.7937 - 16-NOV-0099 / 1187: 99.8771 - 16-DEC-0099 / 1188: 99.9604 - -def ax/t=1-jan-0001:1-jan-0100:`1/12,p=9`/edge/unit=year tax1 - !-> def ax/t=1-jan-0001:1-jan-0100:0.0833333333/edge/unit=year tax1 -def ax/t=1-jan-0001:1-jan-0100:`1/12,p=9`/edge/unit=yr tax2 - !-> def ax/t=1-jan-0001:1-jan-0100:0.0833333333/edge/unit=yr tax2 -show axis tax1 - name axis # pts start end - TAX1 TIME 1188 r 16-JAN-0001 05:14 16-DEC-0099 18:56 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 99 -show axis tax2 - name axis # pts start end - TAX2 TIME 1188 r 16-JAN-0001 05:14 16-DEC-0099 18:56 -T0 = 01-JAN-0000 - Axis span (to cell edges) = 99 -list/l=1186:1189 t[gt=tax1] - VARIABLE : T - axis TAX1 - SUBSET : 3 points (TIME) - 16-OCT-0099 / 1186: 99.7937 - 16-NOV-0099 / 1187: 99.8771 - 16-DEC-0099 / 1188: 99.9604 -list/l=1186:1189 t[gt=tax2] - VARIABLE : T - axis TAX2 - SUBSET : 3 points (TIME) - 16-OCT-0099 / 1186: 99.7937 - 16-NOV-0099 / 1187: 99.8771 - 16-DEC-0099 / 1188: 99.9604 - -! v553 and before also had a bug in where D360 not properly defined in -! calendar_blkdat.F so length of year not correct. - -def ax/t=1-jan-0001:1-jan-0100:`1/12,p=9`/edge/cal=d360/unit=year tax1 - !-> def ax/t=1-jan-0001:1-jan-0100:0.0833333333/edge/cal=d360/unit=year tax1 -def ax/t=1-jan-0001:1-jan-0100:`1/12,p=9`/edge/cal=d360/unit=yr tax2 - !-> def ax/t=1-jan-0001:1-jan-0100:0.0833333333/edge/cal=d360/unit=yr tax2 -show axis tax1 - name axis # pts start end - TAX1 TIME 1188 r 15-JAN-0001 23:59 15-DEC-0099 23:59 -T0 = 01-JAN-0000 -CALENDAR = 360_DAY - Axis span (to cell edges) = 99 -show axis tax2 - name axis # pts start end - TAX2 TIME 1188 r 15-JAN-0001 23:59 15-DEC-0099 23:59 -T0 = 01-JAN-0000 -CALENDAR = 360_DAY - Axis span (to cell edges) = 99 -set mode ignore -list/l=1186:1189 t[gt=tax1] - VARIABLE : T - axis TAX1 - SUBSET : 3 points (TIME) - CALENDAR : 360_DAY - 15-OCT-0099 23 / 1186: 99.7917 - 15-NOV-0099 23 / 1187: 99.8750 - 15-DEC-0099 23 / 1188: 99.9583 -list/l=1186:1189 t[gt=tax2] - VARIABLE : T - axis TAX2 - SUBSET : 3 points (TIME) - CALENDAR : 360_DAY - 15-OCT-0099 23 / 1186: 99.7917 - 15-NOV-0099 23 / 1187: 99.8750 - 15-DEC-0099 23 / 1188: 99.9583 -list/l=1168:1171 t[gt=tax1] - VARIABLE : T - axis TAX1 - SUBSET : 4 points (TIME) - CALENDAR : 360_DAY - 15-APR-0098 23 / 1168: 98.2917 - 15-MAY-0098 23 / 1169: 98.3750 - 15-JUN-0098 23 / 1170: 98.4583 - 15-JUL-0098 23 / 1171: 98.5417 -list/l=1168:1171 t[gt=tax2] - VARIABLE : T - axis TAX2 - SUBSET : 4 points (TIME) - CALENDAR : 360_DAY - 15-APR-0098 23 / 1168: 98.2917 - 15-MAY-0098 23 / 1169: 98.3750 - 15-JUN-0098 23 / 1170: 98.4583 - 15-JUL-0098 23 / 1171: 98.5417 -can mode ignore - -! When we do a DEFINE GRID/LIKE=var and then try to read the var with -! strides, Ferret did a regridding instead. Test the fix for this -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_stride_def_grid.jnl - -use gtsa056_2.cdf -set mode diag -let a = taux[i=50:55:2,j=44:50:3,l=1:168:8] -load a - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX023) (AX013) NORMAL (AX030) - dealloc dynamic grid (G011) (AX023) (AX013) NORMAL (AX030) - allocate dynamic grid (G011) (AX023) (AX013) NORMAL (AX030) - allocate dynamic grid (G011) (AX023) (AX013) NORMAL (AX030) - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval A C: 6 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) (AX023) (AX013) NORMAL (AX030) - strip regrid on X: TAUX --> (G011) @XACT - rdstride TAUX C: 9 dset: 1 I: 50 54 J: 44 50 K: -999 -999 L: 1 161 - nulrgd TAUX M:203 dset: 1 I: 1 3 J: 1 3 K: -999 -999 L: 1 21 - -DELETE TAUX M:185 dset: 1 I: 50 54 J: 44 50 K: -999 -999 L: 1 161 - dealloc dynamic grid (G011) (AX023) (AX013) NORMAL (AX030) -can mem/all - dealloc dynamic grid (G011) (AX023) (AX013) NORMAL (AX030) - -DELETE A M:185 dset: 1 I: 1 3 J: 1 3 K: -999 -999 L: 1 21 - dealloc dynamic grid (G011) (AX023) (AX013) NORMAL (AX030) - -DELETE TAUX M:203 dset: 1 I: 1 3 J: 1 3 K: -999 -999 L: 1 21 - -def grid/like=taux agrid - getgrid EX#1 C: 6 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS2DU1 PSXU PSYU NORMAL TIME9 -set mode diag -let a = taux[i=50:55:2,j=44:50:3,l=1:168:8] - dealloc dynamic grid PS2DU1 PSXU PSYU NORMAL TIME9 -load a - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G011) (AX013) (AX023) NORMAL (AX022) - dealloc dynamic grid (G011) (AX013) (AX023) NORMAL (AX022) - allocate dynamic grid (G011) (AX013) (AX023) NORMAL (AX022) - allocate dynamic grid (G011) (AX013) (AX023) NORMAL (AX022) - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval A C: 6 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G011) (AX013) (AX023) NORMAL (AX022) - strip regrid on X: TAUX --> (G011) @XACT - rdstride TAUX C: 9 dset: 1 I: 50 54 J: 44 50 K: -999 -999 L: 1 161 - nulrgd TAUX M:185 dset: 1 I: 1 3 J: 1 3 K: -999 -999 L: 1 21 - -DELETE TAUX M:203 dset: 1 I: 50 54 J: 44 50 K: -999 -999 L: 1 161 - dealloc dynamic grid (G011) (AX013) (AX023) NORMAL (AX022) - -can mem/all - dealloc dynamic grid (G011) (AX013) (AX023) NORMAL (AX022) - -DELETE A M:203 dset: 1 I: 1 3 J: 1 3 K: -999 -999 L: 1 21 - dealloc dynamic grid (G011) (AX013) (AX023) NORMAL (AX022) - -DELETE TAUX M:185 dset: 1 I: 1 3 J: 1 3 K: -999 -999 L: 1 21 -can data/all - canceling dset ./data/gtsa056_2.cdf - -! Some tests taken from bn_strides_revs_perms.jnl but with -! DEFINE GRID/LIKE= testing permuting and reversing axes - -! first with an XYZT variable -set region/i=3:6/j=2:4/k=1:2/l=1 -use bn_strides -define grid/like=var agrid - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC1 XAX1_4 YAX1_3 ZAX1_2 TAX1_1 - dealloc dynamic grid GPC1 XAX1_4 YAX1_3 ZAX1_2 TAX1_1 -define grid/like=midvar bgrid - getgrid EX#1 C: 6 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC2 XAX1_9 YAX1_8 ZAX1_7 TAX1_6 -define grid/like=bigvar cgrid - dealloc dynamic grid GPC2 XAX1_9 YAX1_8 ZAX1_7 TAX1_6 - getgrid EX#1 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC3 XAX1_40 YAX1_30 ZAX1_20 TAX1_10 -define grid/like=unevenvar dgrid - dealloc dynamic grid GPC3 XAX1_40 YAX1_30 ZAX1_20 TAX1_10 - getgrid EX#1 C: 8 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC4 XUNEVEN YUNEVEN ZAX1_6 TAX1_4 -define grid/like=xytvar egrid - dealloc dynamic grid GPC4 XUNEVEN YUNEVEN ZAX1_6 TAX1_4 - getgrid EX#1 C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC5 XLON YLAT NORMAL TTIME -canc data/all - dealloc dynamic grid GPC5 XLON YLAT NORMAL TTIME - canceling dset ./data/bn_strides.cdf - - -! cache hit from full region cache -- bypass use of strides -cancel memory/all -use bn_strides -load var - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 3 4 J: 2 3 K: 1 2 L: 1 1 - reading VAR M:185 dset: 1 I: 3 4 J: 2 3 K: 1 2 L: 1 1 -LIST VAR[i=2:4:2] - dealloc dynamic grid AGRID XAX1_4 YAX1_3 ZAX1_2 TAX1_1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX045) YAX1_3 ZAX1_2 TAX1_1 - dealloc dynamic grid (G004) (AX045) YAX1_3 ZAX1_2 TAX1_1 - allocate dynamic grid (G004) (AX045) YAX1_3 ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 3 K: 1 2 L: 1 1 - allocate dynamic grid (G004) (AX045) YAX1_3 ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G004) @XACT - rdstride VAR C: 7 dset: 1 I: 2 4 J: 2 3 K: 1 2 L: 1 1 - nulrgd VAR M:187 dset: 1 I: 1 2 J: 2 3 K: 1 2 L: 1 1 - -DELETE VAR M:203 dset: 1 I: 2 4 J: 2 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G004) (AX045) YAX1_3 ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 2 delta on X - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 2 / 2: 1122.00 1124.00 - 3 / 3: 1132.00 1134.00 - ---- K:2 Z: 2 - 2 / 2: 1222.00 1224.00 - 3 / 3: 1232.00 1234.00 -LIST VAR[i=2:4:2,j=1:3:2] - dealloc dynamic grid (G004) (AX045) YAX1_3 ZAX1_2 TAX1_1 - -DELETE VAR M:187 dset: 1 I: 1 2 J: 2 3 K: 1 2 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX026) (AX046) ZAX1_2 TAX1_1 - dealloc dynamic grid (G004) (AX026) (AX046) ZAX1_2 TAX1_1 - allocate dynamic grid (G004) (AX026) (AX046) ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G004) (AX026) (AX046) ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G004) @XACT - rdstride VAR C: 7 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - nulrgd VAR M:203 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE VAR M:187 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G004) (AX026) (AX046) ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 2 delta on X, 2 delta on Y - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1112.00 1114.00 - 3 / 2: 1132.00 1134.00 - ---- K:2 Z: 2 - 1 / 1: 1212.00 1214.00 - 3 / 2: 1232.00 1234.00 -CANC MEM/ALL - dealloc dynamic grid (G004) (AX026) (AX046) ZAX1_2 TAX1_1 - -DELETE VAR M:203 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE VAR M:185 dset: 1 I: 3 4 J: 2 3 K: 1 2 L: 1 1 - -! modulo requests cannot use strides (as this example shows) -set axis/modulo XAX1_4 -LIST VAR[I=1:10:3,j=1,k=1,l=1] ! 1, 4, 7(3), 10(2) - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX026) YAX1_3 ZAX1_2 TAX1_1 - dealloc dynamic grid (G004) (AX026) YAX1_3 ZAX1_2 TAX1_1 - allocate dynamic grid (G004) (AX026) YAX1_3 ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G004) (AX026) YAX1_3 ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G004) @XACT - strip moduloing VAR on X axis: 1 10 dset: 1 - reading VAR M:185 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - doing moduloing VAR on X axis: 1 4 dset: 1 - regrid VAR M:187 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G004) (AX026) YAX1_3 ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 3 delta on X - FILENAME : bn_strides.cdf - SUBSET : 4 points (X) - Y : 1 - Z : 1 - T : 1 - 1 - 1 - 1 / 1: 1111.00 - 4 / 2: 1114.00 - 7 / 3: 1113.00 - 10 / 4: 1112.00 -cancel axis/modulo XAX1_4 - -DELETE VAR M:185 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - -DELETE VAR M:187 dset: 1 I: 1 4 J: 1 1 K: 1 1 L: 1 1 - -DELETE VAR M:203 dset: 1 I: 1 10 J: 1 1 K: 1 1 L: 1 1 - -! strides applied to more than one axis need special attention in IS_REGRID -LIST VAR[i=2:4:2,j=1:3:2] - dealloc dynamic grid (G004) (AX026) YAX1_3 ZAX1_2 TAX1_1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX046) (AX045) ZAX1_2 TAX1_1 - dealloc dynamic grid (G004) (AX046) (AX045) ZAX1_2 TAX1_1 - allocate dynamic grid (G004) (AX046) (AX045) ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G004) (AX046) (AX045) ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G004) @XACT - rdstride VAR C: 7 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - nulrgd VAR M:187 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE VAR M:203 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G004) (AX046) (AX045) ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 2 delta on X, 2 delta on Y - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1112.00 1114.00 - 3 / 2: 1132.00 1134.00 - ---- K:2 Z: 2 - 1 / 1: 1212.00 1214.00 - 3 / 2: 1232.00 1234.00 -LIST VAR[i=2:6:2,j=1:5:2] - dealloc dynamic grid (G004) (AX046) (AX045) ZAX1_2 TAX1_1 - -DELETE VAR M:187 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX046) (AX026) ZAX1_2 TAX1_1 - dealloc dynamic grid (G004) (AX046) (AX026) ZAX1_2 TAX1_1 - allocate dynamic grid (G004) (AX046) (AX026) ZAX1_2 TAX1_1 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G004) (AX046) (AX026) ZAX1_2 TAX1_1 - strip regrid on X: VAR --> (G004) @XACT - rdstride VAR C: 7 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - nulrgd VAR M:203 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE VAR M:187 dset: 1 I: 2 4 J: 1 3 K: 1 2 L: 1 1 - dealloc dynamic grid (G004) (AX046) (AX026) ZAX1_2 TAX1_1 - VARIABLE : L*1000 + K*100 + J*10 + I - regrid: 2 delta on X, 2 delta on Y - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 2 4 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 1112.00 1114.00 - 3 / 2: 1132.00 1134.00 - ---- K:2 Z: 2 - 1 / 1: 1212.00 1214.00 - 3 / 2: 1232.00 1234.00 - -! test sub-region selection on strides axis -let a = bigvar[i=1:40:5] - dealloc dynamic grid (G004) (AX046) (AX026) ZAX1_2 TAX1_1 - -DELETE VAR M:203 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 -list/j=1/k=1/l=1 a[i=3:5] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX046) YAX1_30 ZAX1_20 TAX1_10 - dealloc dynamic grid (G004) (AX046) YAX1_30 ZAX1_20 TAX1_10 - allocate dynamic grid (G004) (AX046) YAX1_30 ZAX1_20 TAX1_10 - allocate dynamic grid (G004) (AX046) YAX1_30 ZAX1_20 TAX1_10 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 3 6 J: 1 1 K: 1 1 L: 1 1 - eval A C: 7 dset: 1 I: 3 5 J: 1 1 K: 1 1 L: 1 1 - allocate dynamic grid (G004) (AX046) YAX1_30 ZAX1_20 TAX1_10 - strip regrid on X: BIGVAR --> (G004) @XACT - rdstride BIGVAR C: 10 dset: 1 I: 1 36 J: 1 1 K: 1 1 L: 1 1 - nulrgd BIGVAR M:187 dset: 1 I: 1 8 J: 1 1 K: 1 1 L: 1 1 - -DELETE BIGVAR M:203 dset: 1 I: 1 36 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G004) (AX046) YAX1_30 ZAX1_20 TAX1_10 - VARIABLE : BIGVAR[I=1:40:5] - FILENAME : bn_strides.cdf - SUBSET : 3 points (X) - Y : 1 - Z : 1 - T : 1 - 1 - 1 - 11 / 3: 1121.00 - 16 / 4: 1126.00 - 21 / 5: 1131.00 - -DELETE A M:185 dset: 1 I: 1 1 J: 3 5 K: 1 1 L: 1 1 -list/k=1/l=1 a[i=3:5,j=1:8:2] - dealloc dynamic grid (G004) (AX046) YAX1_30 ZAX1_20 TAX1_10 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G001) (AX046) (AX045) ZAX1_20 TAX1_10 - dealloc dynamic grid (G001) (AX046) (AX045) ZAX1_20 TAX1_10 - allocate dynamic grid (G001) (AX046) (AX045) ZAX1_20 TAX1_10 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 3 6 J: 2 4 K: 1 1 L: 1 1 - allocate dynamic grid (G001) (AX046) (AX045) ZAX1_20 TAX1_10 - strip regrid on Y: A --> (G001) @XACT - eval A C: 8 dset: 1 I: 3 5 J: 1 7 K: 1 1 L: 1 1 - allocate dynamic grid (G004) (AX046) YAX1_30 ZAX1_20 TAX1_10 - strip regrid on X: BIGVAR --> (G004) @XACT - rdstride BIGVAR C: 11 dset: 1 I: 1 36 J: 1 7 K: 1 1 L: 1 1 - nulrgd BIGVAR M:186 dset: 1 I: 1 8 J: 1 7 K: 1 1 L: 1 1 - -DELETE BIGVAR M:185 dset: 1 I: 1 36 J: 1 7 K: 1 1 L: 1 1 - dealloc dynamic grid (G004) (AX046) YAX1_30 ZAX1_20 TAX1_10 - regrid A M:230 dset: 1 I: 3 5 J: 1 4 K: 1 1 L: 1 1 - dealloc dynamic grid (G001) (AX046) (AX045) ZAX1_20 TAX1_10 - VARIABLE : BIGVAR[I=1:40:5] - regrid: 2 delta on Y - FILENAME : bn_strides.cdf - SUBSET : 3 by 4 points (X-Y) - Z : 1 - T : 1 - 11 16 21 - 3 4 5 - 1 / 1: 1121.00 1126.00 1131.00 - 3 / 2: 1141.00 1146.00 1151.00 - 5 / 3: 1161.00 1166.00 1171.00 - 7 / 4: 1181.00 1186.00 1191.00 - -! ****** unequally spaced points on parent axis - -cancel mem/all - dealloc dynamic grid (G001) (AX046) (AX045) ZAX1_20 TAX1_10 - -DELETE A M:230 dset: 1 I: 3 5 J: 1 4 K: 1 1 L: 1 1 - -DELETE A M:185 dset: 1 I: 1 8 J: 1 7 K: 1 1 L: 1 1 - -DELETE A M:203 dset: 1 I: 1 8 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G004) (AX046) YAX1_30 ZAX1_20 TAX1_10 - -DELETE BIGVAR M:186 dset: 1 I: 1 8 J: 1 7 K: 1 1 L: 1 1 - -DELETE BIGVAR M:187 dset: 1 I: 1 8 J: 1 1 K: 1 1 L: 1 1 - -! basic strides -LIST/order=x/j=1/k=1/l=1 UNEVENVAR[i=2:4:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX045) YUNEVEN ZAX1_6 TAX1_4 - dealloc dynamic grid (G004) (AX045) YUNEVEN ZAX1_6 TAX1_4 - allocate dynamic grid (G004) (AX045) YUNEVEN ZAX1_6 TAX1_4 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 3 6 J: 1 1 K: 1 1 L: 1 1 - allocate dynamic grid (G004) (AX045) YUNEVEN ZAX1_6 TAX1_4 - strip regrid on X: UNEVENVAR --> (G004) @XACT - rdstride UNE-NVAR C: 8 dset: 1 I: 2 4 J: 1 1 K: 1 1 L: 1 1 - nulrgd UNE-NVAR M:186 dset: 1 I: 1 2 J: 1 1 K: 1 1 L: 1 1 - -DELETE UNE-NVAR M:187 dset: 1 I: 2 4 J: 1 1 K: 1 1 L: 1 1 - dealloc dynamic grid (G004) (AX045) YUNEVEN ZAX1_6 TAX1_4 - VARIABLE : L*1000 + K*100 + J[GY=YUNEVEN]*10 + I[GX=XUNEVEN] - regrid: on X - FILENAME : bn_strides.cdf - SUBSET : 2 points (X) - Y : 0 - Z : 1 - T : 1 - 0.3 0.6 - 1 2 - 1112.00 1114.00 - -! * * * * * MIXED STRIDES and PERMUTATIONS * * * * * - -set region/i=3:6/j=2:4/k=1:2/l=1 - -use/order=yx bn_strides -list bigvar[i=3:9:2, j=2:6:2, k=1:3:2] - dealloc dynamic grid (G004) (AX045) YUNEVEN ZAX1_6 TAX1_4 - -DELETE UNE-NVAR M:186 dset: 1 I: 1 2 J: 1 1 K: 1 1 L: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) TAX1_10 - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) TAX1_10 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) TAX1_10 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) TAX1_10 - strip regrid on X: BIGVAR --> (G004) @XACT - rdstride BIGVAR C: 7 dset: 1 I: 3 9 J: 2 6 K: 1 3 L: 1 1 - nulrgd BIGVAR M:187 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - -DELETE BIGVAR M:186 dset: 1 I: 3 9 J: 2 6 K: 1 3 L: 1 1 - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) TAX1_10 - VARIABLE : VAR - regrid: 2 delta on X, 2 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 5 7 9 - 1 2 3 4 - ---- K:1 Z: 1 - 2 / 1: 1123.00 1125.00 1127.00 1129.00 - 4 / 2: 1143.00 1145.00 1147.00 1149.00 - 6 / 3: 1163.00 1165.00 1167.00 1169.00 - ---- K:2 Z: 3 - 2 / 1: 1323.00 1325.00 1327.00 1329.00 - 4 / 2: 1343.00 1345.00 1347.00 1349.00 - 6 / 3: 1363.00 1365.00 1367.00 1369.00 -canc data/all - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) TAX1_10 - -DELETE BIGVAR M:187 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -use/order=zyx bn_strides -list bigvar[i=3:9:2, j=2:6:2, k=1:3:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX026) (AX046) (AX045) TAX1_10 - dealloc dynamic grid (G004) (AX026) (AX046) (AX045) TAX1_10 - allocate dynamic grid (G004) (AX026) (AX046) (AX045) TAX1_10 - eval EX#1 C: 4 dset: 1 I: 3 6 J: 2 4 K: 1 2 L: 1 1 - allocate dynamic grid (G004) (AX026) (AX046) (AX045) TAX1_10 - strip regrid on X: BIGVAR --> (G004) @XACT - rdstride BIGVAR C: 7 dset: 1 I: 3 9 J: 2 6 K: 1 3 L: 1 1 - nulrgd BIGVAR M:186 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - -DELETE BIGVAR M:187 dset: 1 I: 3 9 J: 2 6 K: 1 3 L: 1 1 - dealloc dynamic grid (G004) (AX026) (AX046) (AX045) TAX1_10 - VARIABLE : VAR - regrid: 2 delta on X, 2 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X-Y-Z) - T : 1 - 3 5 7 9 - 1 2 3 4 - ---- K:1 Z: 1 - 2 / 1: 1321.00 1521.00 1721.00 1921.00 - 4 / 2: 1341.00 1541.00 1741.00 1941.00 - 6 / 3: 1361.00 1561.00 1761.00 1961.00 - ---- K:2 Z: 3 - 2 / 1: 1323.00 1523.00 1723.00 1923.00 - 4 / 2: 1343.00 1543.00 1743.00 1943.00 - 6 / 3: 1363.00 1563.00 1763.00 1963.00 -canc data/all - dealloc dynamic grid (G004) (AX026) (AX046) (AX045) TAX1_10 - -DELETE BIGVAR M:186 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -! now with xytvar -cancel region -set region/i=1:4/j=1:3/l=1:2 -use bn_strides - -list xytvar[i=1:7:2,j=2:6:2,l=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX046) (AX026) NORMAL (AX047) - dealloc dynamic grid (G004) (AX046) (AX026) NORMAL (AX047) - allocate dynamic grid (G004) (AX046) (AX026) NORMAL (AX047) - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G004) (AX046) (AX026) NORMAL (AX047) - strip regrid on X: XYTVAR --> (G004) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 7 J: 2 6 K: -999 -999 L: 3 5 - nulrgd XYTVAR M:187 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:186 dset: 1 I: 1 7 J: 2 6 K: -999 -999 L: 3 5 - dealloc dynamic grid (G004) (AX046) (AX026) NORMAL (AX047) - VARIABLE : L*1000 + J*10 + I - regrid: 2 deg on X, 2 deg on Y, 2 day on T - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (LONGITUDE-LATITUDE-TIME) - 141E 143E 145E 147E - 1 2 3 4 - ---- L:1 T: 03-JAN-1995 00:00 - 6N / 3: 3061.00 3063.00 3065.00 3067.00 - 4N / 2: 3041.00 3043.00 3045.00 3047.00 - 2N / 1: 3021.00 3023.00 3025.00 3027.00 - ---- L:2 T: 05-JAN-1995 00:00 - 6N / 3: 5061.00 5063.00 5065.00 5067.00 - 4N / 2: 5041.00 5043.00 5045.00 5047.00 - 2N / 1: 5021.00 5023.00 5025.00 5027.00 - -use/order=tyx bn_strides -show grid xytvar - dealloc dynamic grid (G004) (AX046) (AX026) NORMAL (AX047) - -DELETE XYTVAR M:187 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - getgrid EX#1 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - GRID EGRID - name axis # pts start end subset - XLON LONGITUDE 40mr 141E 180E full - YLAT LATITUDE 30 r 1N 30N full - normal Z - TTIME TIME 20 r 01-JAN-1995 00:00 20-JAN-1995 00:00 full - -list xytvar[i=1:7:2,j=2:6:2,l=3:5:2] - dealloc dynamic grid EGRID XLON YLAT NORMAL TTIME - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX026) (AX046) NORMAL (AX045) - dealloc dynamic grid (G004) (AX026) (AX046) NORMAL (AX045) - allocate dynamic grid (G004) (AX026) (AX046) NORMAL (AX045) - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G004) (AX026) (AX046) NORMAL (AX045) - strip regrid on X: XYTVAR --> (G004) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 7 J: 2 6 K: -999 -999 L: 3 5 - nulrgd XYTVAR M:186 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - -DELETE XYTVAR M:187 dset: 1 I: 1 7 J: 2 6 K: -999 -999 L: 3 5 - dealloc dynamic grid (G004) (AX026) (AX046) NORMAL (AX045) - VARIABLE : L*1000 + J*10 + I - regrid: 2 deg on X, 2 deg on Y, 2 day on T - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (LONGITUDE-LATITUDE-TIME) - 141E 143E 145E 147E - 1 2 3 4 - ---- L:1 T: 03-JAN-1995 00:00 - 6N / 3: 3061.00 3063.00 3065.00 3067.00 - 4N / 2: 3041.00 3043.00 3045.00 3047.00 - 2N / 1: 3021.00 3023.00 3025.00 3027.00 - ---- L:2 T: 05-JAN-1995 00:00 - 6N / 3: 5061.00 5063.00 5065.00 5067.00 - 4N / 2: 5041.00 5043.00 5045.00 5047.00 - 2N / 1: 5021.00 5023.00 5025.00 5027.00 -canc data/all - dealloc dynamic grid (G004) (AX026) (AX046) NORMAL (AX045) - -DELETE XYTVAR M:186 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - canceling dset ./data/bn_strides.cdf - -! map into Z instead of T -use/order=zxy bn_strides -show grid xytvar - getgrid EX#1 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GPC5 TTIME XLON YLAT NORMAL - GRID GPC5 - name axis # pts start end subset - TTIME X (DAYS) 20 r 34319 34338 full - XLON Y (degrees_east) 40mr 141 180 full - YLAT Z (degrees_north) 30 r 1 30 full - normal T - -list xytvar[i=1:7:2,j=2:6:2,k=3:5:2] - dealloc dynamic grid GPC5 TTIME XLON YLAT NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) NORMAL - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) NORMAL - allocate dynamic grid (G004) (AX046) (AX026) (AX047) NORMAL - eval EX#1 C: 4 dset: 1 I: 1 4 J: 1 3 K: -999 -999 L: 1 2 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) NORMAL - strip regrid on X: XYTVAR --> (G004) @XACT - rdstride XYTVAR C: 7 dset: 1 I: 1 7 J: 2 6 K: 3 5 L: -999 -999 - nulrgd XYTVAR M:187 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: -999 -999 - -DELETE XYTVAR M:186 dset: 1 I: 1 7 J: 2 6 K: 3 5 L: -999 -999 - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) NORMAL - VARIABLE : L*1000 + J*10 + I - regrid: 2 day on X, 2 deg on Y, 2 deg on Z - FILENAME : bn_strides.cdf - SUBSET : 4 by 3 by 2 points (X (DAYS)-Y (degrees_east)-Z (degrees_north)) - 34319 34321 34323 34325 - 1 2 3 4 - ---- K:1 Z: 3 - 142 / 1: 1032.00 3032.00 5032.00 7032.00 - 144 / 2: 1034.00 3034.00 5034.00 7034.00 - 146 / 3: 1036.00 3036.00 5036.00 7036.00 - ---- K:2 Z: 5 - 142 / 1: 1052.00 3052.00 5052.00 7052.00 - 144 / 2: 1054.00 3054.00 5054.00 7054.00 - 146 / 3: 1056.00 3056.00 5056.00 7056.00 -canc data/all - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) NORMAL - -DELETE XYTVAR M:187 dset: 1 I: 1 4 J: 1 3 K: 1 2 L: -999 -999 - canceling dset ./data/bn_strides.cdf - - -cancel region; set region/l=1 - -! reference output -use/order=yx bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX026) (AX046) (AX045) TAX1_6 - dealloc dynamic grid (G004) (AX026) (AX046) (AX045) TAX1_6 - allocate dynamic grid (G004) (AX026) (AX046) (AX045) TAX1_6 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G004) (AX026) (AX046) (AX045) TAX1_6 - strip regrid on X: MIDVAR --> (G004) @XACT - rdstride MIDVAR C: 7 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:186 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:187 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G004) (AX026) (AX046) (AX045) TAX1_6 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 1312.00 1352.00 - 5 / 2: 1315.00 1355.00 - ---- K:2 Z: 5 - 2 / 1: 1512.00 1552.00 - 5 / 2: 1515.00 1555.00 -canc data/all - dealloc dynamic grid (G004) (AX026) (AX046) (AX045) TAX1_6 - -DELETE MIDVAR M:186 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -use/order=-yx bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) TAX1_6 - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) TAX1_6 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) TAX1_6 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) TAX1_6 - strip regrid on X: MIDVAR --> (G004) @XACT - strip reversing MIDVAR on Y axis: 2 5 dset: 1 - rdstride MIDVAR C: 8 dset: 1 I: 1 5 J: 5 8 K: 3 5 L: 1 1 - doing reversing MIDVAR on Y axis: 2 5 dset: 1 - -DELETE MIDVAR M:186 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:186 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:187 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) TAX1_6 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 1318.00 1358.00 - 5 / 2: 1315.00 1355.00 - ---- K:2 Z: 5 - 2 / 1: 1518.00 1558.00 - 5 / 2: 1515.00 1555.00 -canc data/all - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) TAX1_6 - -DELETE MIDVAR M:186 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -! reference output -use/order=tyx bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX026) (AX046) (AX045) ZAX1_7 - dealloc dynamic grid (G004) (AX026) (AX046) (AX045) ZAX1_7 - allocate dynamic grid (G004) (AX026) (AX046) (AX045) ZAX1_7 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G004) (AX026) (AX046) (AX045) ZAX1_7 - strip regrid on X: MIDVAR --> (G004) @XACT - rdstride MIDVAR C: 7 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:187 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:186 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G004) (AX026) (AX046) (AX045) ZAX1_7 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 1123.00 5123.00 - 5 / 2: 1153.00 5153.00 - ---- K:2 Z: 5 - 2 / 1: 1125.00 5125.00 - 5 / 2: 1155.00 5155.00 -canc data/all - dealloc dynamic grid (G004) (AX026) (AX046) (AX045) ZAX1_7 - -DELETE MIDVAR M:187 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -! note the reversal on axes 1,2 and 3 (X,Y,Z in memory -- NOT T) -use/order=-t-y-x bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) ZAX1_7 - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) ZAX1_7 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) ZAX1_7 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) ZAX1_7 - strip regrid on X: MIDVAR --> (G004) @XACT - strip reversing MIDVAR on X axis: 1 5 dset: 1 - rdstride MIDVAR C: 8 dset: 1 I: 2 6 J: 4 7 K: 3 5 L: 7 7 - doing reversing MIDVAR on X axis: 1 5 dset: 1 - -DELETE MIDVAR M:187 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:187 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:186 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) ZAX1_7 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 6773.00 2773.00 - 5 / 2: 6743.00 2743.00 - ---- K:2 Z: 5 - 2 / 1: 6775.00 2775.00 - 5 / 2: 6745.00 2745.00 -canc data/all - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) ZAX1_7 - -DELETE MIDVAR M:187 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -! reference output -use/order=txy bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX026) (AX046) (AX045) ZAX1_7 - dealloc dynamic grid (G004) (AX026) (AX046) (AX045) ZAX1_7 - allocate dynamic grid (G004) (AX026) (AX046) (AX045) ZAX1_7 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G004) (AX026) (AX046) (AX045) ZAX1_7 - strip regrid on X: MIDVAR --> (G004) @XACT - rdstride MIDVAR C: 7 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:186 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:187 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G004) (AX026) (AX046) (AX045) ZAX1_7 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 1132.00 5132.00 - 5 / 2: 1135.00 5135.00 - ---- K:2 Z: 5 - 2 / 1: 1152.00 5152.00 - 5 / 2: 1155.00 5155.00 -canc data/all - dealloc dynamic grid (G004) (AX026) (AX046) (AX045) ZAX1_7 - -DELETE MIDVAR M:186 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -use/order=-t-x-y bn_strides -list midvar[i=1:5:4, j=2:5:3, k=3:5:2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) ZAX1_7 - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) ZAX1_7 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) ZAX1_7 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 1 - allocate dynamic grid (G004) (AX046) (AX026) (AX047) ZAX1_7 - strip regrid on X: MIDVAR --> (G004) @XACT - strip reversing MIDVAR on Y axis: 2 5 dset: 1 - rdstride MIDVAR C: 8 dset: 1 I: 2 6 J: 5 8 K: 3 5 L: 7 7 - doing reversing MIDVAR on Y axis: 2 5 dset: 1 - -DELETE MIDVAR M:186 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - nulrgd MIDVAR M:186 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - -DELETE MIDVAR M:187 dset: 1 I: 1 5 J: 2 5 K: 3 5 L: 1 1 - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) ZAX1_7 - VARIABLE : VAR - regrid: 4 delta on X, 3 delta on Y, 2 delta on Z - FILENAME : bn_strides.cdf - SUBSET : 2 by 2 by 2 points (X-Y-Z) - T : 1 - 1 5 - 1 2 - ---- K:1 Z: 3 - 2 / 1: 6738.00 2738.00 - 5 / 2: 6735.00 2735.00 - ---- K:2 Z: 5 - 2 / 1: 6758.00 2758.00 - 5 / 2: 6755.00 2755.00 -canc data/all - dealloc dynamic grid (G004) (AX046) (AX026) (AX047) ZAX1_7 - -DELETE MIDVAR M:186 dset: 1 I: 1 2 J: 1 2 K: 1 2 L: 1 1 - canceling dset ./data/bn_strides.cdf - -! DEFINE AXIS can get the axis too long (bug 673) -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_axis_too_long.jnl -! From Ned Cokelet -! First definition of axis had last grid cell completely -! beyond requested end. - -DEF AXIS/X=211:215:3 x_ax -LIST X[GX=x_ax], XBOXLO[GX=x_ax], XBOXHI[GX=x_ax] - X: 209.5 to 215.5 - Column 1: X is X (axis X_AX) - Column 2: XBOXLO is XBOXLO (axis X_AX) - Column 3: XBOXHI is XBOXHI (axis X_AX) - X XBOXLO XBOXHI -211 / 1: 211.000 209.500 212.500 -214 / 2: 214.000 212.500 215.500 - -DEF AXIS/X=211:215:2.6 x_ax -LIST X[GX=x_ax], XBOXLO[GX=x_ax], XBOXHI[GX=x_ax] - X: 209.7 to 217.5 - Column 1: X is X (axis X_AX) - Column 2: XBOXLO is XBOXLO (axis X_AX) - Column 3: XBOXHI is XBOXHI (axis X_AX) - X XBOXLO XBOXHI -211 / 1: 211.000 209.700 212.300 -213.6 / 2: 213.600 212.300 214.900 -216.2 / 3: 216.200 214.900 217.500 - -! Under linux, some shade and fill plots with /LEVELS=c had a -! non-centered shade key -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_lev_c.jnl - ! under linux only, this has a non-centered shade key - -shade/lev=c {-1.1,1.1}*ysequence({1,1}) -ppl list shakey - - DO KEY ORIENT LAB SIZE LAB INC LAB DIG LAB LEN - 1 1 0.00 0 5 9 - - - DEFAULT KEY POSITIONING - X LO X HI Y LO Y HI - 9.37 9.67 1.40 7.40 - -fill/lev=c {-1.1,1.1}*ysequence({1,1}) -ppl list shakey - - DO KEY ORIENT LAB SIZE LAB INC LAB DIG LAB LEN - 1 1 0.00 0 5 9 - - - DEFAULT KEY POSITIONING - X LO X HI Y LO Y HI - 9.37 9.67 1.40 7.40 - - -! At lon = 0, we used to have an E; remove this. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_lon_ax_0_label.jnl -! Label longitude axes with the degree sign only -! at x=0 (previously had an E). - -! ACM 1/6/04 - -use coads_climatology -shade/x=-20:20/y=-40:40/L=1 sst - - -! Errors listing string and numeric data together -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_list_string_numeric.jnl -! err553_list_string_numeric.jnl -! 2/2004 ACM -! LISTing string and numeric variables together. - -def axis/t=1:3:1 tax -let a = reshape ({1,2,3}, t[gt=tax]) -let b = reshape ({"a", "b", "c"}, t[gt=tax]) -list a, b - T: 0.5 to 3.5 - Column 1: A is RESHAPE ({1,2,3}, T[GT=TAX]) - Column 2: B is RESHAPE ({"a", "b", "c"}, T[GT=TAX]) - A B -1 / 1: 1.00000 "a" -2 / 2: 2.00000 "b" -3 / 3: 3.00000 "c" - -! Now in 2D -let c = {"cat", "rat", "spat", "that", "pat"} -list/i=2:4/l=1:3 b, c - T: 0.5 to 3.5 - X: 1.5 to 4.5 - Column 1: B is RESHAPE ({"a", "b", "c"}, T[GT=TAX]) - Column 2: C is {"cat", "rat", "spat", "that", "pat"} - B C - ---- I:2 X: 2 -1 / 1: "a" "rat" -2 / 2: "b" "rat" -3 / 3: "c" "rat" - ---- I:3 X: 3 -1 / 1: "a" "spat" -2 / 2: "b" "spat" -3 / 3: "c" "spat" - ---- I:4 X: 4 -1 / 1: "a" "that" -2 / 2: "b" "that" -3 / 3: "c" "that" - -let v = y[y=1:5] -list v - VARIABLE : Y[Y=1:5] - SUBSET : 5 points (Y) - 1 / 1: 1.00000 - 2 / 2: 2.00000 - 3 / 3: 3.00000 - 4 / 4: 4.00000 - 5 / 5: 5.00000 -list/i=3:4/l=1:2 b, c, v - T: 0.5 to 2.5 - X: 2.5 to 4.5 - Y: 0.5 to 5.5 - Column 1: B is RESHAPE ({"a", "b", "c"}, T[GT=TAX]) - Column 2: C is {"cat", "rat", "spat", "that", "pat"} - Column 3: V is Y[Y=1:5] - B C V - ---- J:1 Y: 1 - ---- I:3 X: 3 -1 / 1: "a" "spat" 1.00000 -2 / 2: "b" "spat" 1.00000 - ---- I:4 X: 4 -1 / 1: "a" "that" 1.00000 -2 / 2: "b" "that" 1.00000 - ---- J:2 Y: 2 - ---- I:3 X: 3 -1 / 1: "a" "spat" 2.00000 -2 / 2: "b" "spat" 2.00000 - ---- I:4 X: 4 -1 / 1: "a" "that" 2.00000 -2 / 2: "b" "that" 2.00000 - ---- J:3 Y: 3 - ---- I:3 X: 3 -1 / 1: "a" "spat" 3.00000 -2 / 2: "b" "spat" 3.00000 - ---- I:4 X: 4 -1 / 1: "a" "that" 3.00000 -2 / 2: "b" "that" 3.00000 - ---- J:4 Y: 4 - ---- I:3 X: 3 -1 / 1: "a" "spat" 4.00000 -2 / 2: "b" "spat" 4.00000 - ---- I:4 X: 4 -1 / 1: "a" "that" 4.00000 -2 / 2: "b" "that" 4.00000 - ---- J:5 Y: 5 - ---- I:3 X: 3 -1 / 1: "a" "spat" 5.00000 -2 / 2: "b" "spat" 5.00000 - ---- I:4 X: 4 -1 / 1: "a" "that" 5.00000 -2 / 2: "b" "that" 5.00000 - - -! Bug in setting axis to depth when reading from nc file -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_set_axis_depth.jnl - ! NOAA/PMEL TMAP - ! FERRET v5.53 - ! Solaris 5.6 - 12/16/03 - ! 16-Dec-03 10:58 - -use xz_nozattrib.nc -set axis/depth zax -say "axis should be reversed" -axis should be reversed -show axis zax - name axis # pts start end - ZAX DEPTH (m) 26 r- 0 1000 - Axis span (to cell edges) = 1040 -q - -! Set symbols showing levels settings when poly command is called -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_symbol_lev.jnl -! err553_symbol_lev.jnl -! 2/2004 ACM -! In 5.51 and in 5.53 version, symbols LEV* are not created -! for polygon plots - -LET XTRIANGLE = YSEQUENCE({-1,0,1}) -LET YTRIANGLE = YSEQUENCE({-1,1,-1}) -LET XPTS = 180+30*RANDU(I[i=1:10]) -LET YPTS = 30*RANDU(1+I[i=1:10]) -POLYGON XTRIANGLE+XPTS, YTRIANGLE+YPTS, I[I=1:10] - -!************************************* -! List symbols LEV_MIN, LEV_MAX, LEV_DEL - -show symb lev* -LEV_ALL = "1,1.2,1.4,1.6,1.8,2,2.2,2.4,2.6,2.8,3,3.2,3.4,3.6,3.8,4,4.2,4.4,4.6,4.8,5,5.2,5.4,5.6,5.8,6,6.2,6.4,6.6,6.8,7,7.2,7.4,7.6,7.8,8,8.2,8.4,8.6,8.8,9,9.2,9.4,9.6,9.8,10,10.2" -LEV_TEXT = "C" -LEV_MIN = "1" -LEV_MAX = "10.2" -LEV_NUM = "46" -LEV_DEL = "0.2" -LEV_CENTERED_LABELS = "off" - -can sym lev* -! Now with /LEV=(min,max,del) - -let xsqr = YSEQUENCE({0,.1,.1,0}) -let ysqr = YSEQUENCE({0,0,.1,.1}) -let ypts = x/10 -let xpts = cos(x/10) -polygon/trans/i=1:100/nolable/lev=(0,1100,40) xpts+xsqr, ypts+ysqr, x*x/10 -sh sym lev* -LEV_TEXT = "(0,1100,40)" -LEV_MIN = "0" -LEV_MAX = "1120" -LEV_NUM = "28" -LEV_DEL = "40" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "0,40,80,120,160,200,240,280,320,360,400,440,480,520,560,600,640,680,720,760,800,840,880,920,960,1000,1040,1080,1120" - -can sym lev* -! Now with /LEV=nl - -LET xpts = 180 + 50*COS(2*3.14*I[I=1:50]/60) -LET ypts = 15 + 20*SIN(2*3.14*I[I=1:50]/60) -LET sst = 25 - ypts + RANDN(ypts) -plot/vs xpts,ypts -GO polymark POLYGON/KEY/lev=20 xpts,ypts,sst,star - -sh sym lev* -LEV_TEXT = "20" -LEV_MIN = "-12" -LEV_MAX = "32" -LEV_NUM = "22" -LEV_DEL = "2" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "-12,-10,-8,-6,-4,-2,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32" -can sym lev* - -! Fixes for modulo striding bugs -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_stride_modulo.jnl -! err553_stride_modulo_neg.jnl -! *acm* 3/31/2004 -! Modulo axis with strides that have negative indices -! did not work prior to v5.6 of Ferret. - -! mylon.nc created as follows: -! use etopo20 -! let var = sin(x[gx=var]) -! save/file=mylon.nc var - -use mylon -list var[i=-400:-40:20] - VARIABLE : SIN(X[GX=ROSE]) - regrid: 6.667 deg on X - FILENAME : mylon.nc - SUBSET : 19 points (LONGITUDE) - 113.5W / 1: 0.976269 - 106.8W / 2: 0.824340 - 100.2W / 3: 0.552644 - 93.5W / 4: 0.200690 - 86.8W / 5: -0.180415 - 80.2W / 6: -0.535314 - 73.5W / 7: -0.812473 - 66.8W / 8: -0.971589 - 60.2W / 9: -0.989574 - 53.5W / 10: -0.863802 - 46.8W / 11: -0.612560 - 40.2W / 12: -0.272341 - 33.5W / 13: 0.107469 - 26.8W / 14: 0.471639 - 20.2W / 15: 0.767299 - 13.5W / 16: 0.951514 - 6.8W / 17: 0.997495 - 0.2W / 18: 0.898583 - 6.5E / 19: 0.669123 -list var[i=-400:-40:50] - VARIABLE : SIN(X[GX=ROSE]) - regrid: 16.67 deg on X - FILENAME : mylon.nc - SUBSET : 8 points (LONGITUDE) - 113.5W / 1: 0.976269 - 96.8W / 2: -0.383713 - 80.2W / 3: -0.535314 - 63.5W / 4: 0.998887 - 46.8W / 5: -0.612560 - 30.2W / 6: -0.294944 - 13.5W / 7: 0.951514 - 3.2E / 8: -0.798487 - -! This list, using modulo-ing to go out to a second replication -! of the data, would have worked under previous versions but -! with the last point missing, bug 841 - -list var[i=`2*1081-400`:`2*1082-40`:50] - !-> list var[i=1762:2124:50] - VARIABLE : SIN(X[GX=ROSE]) - regrid: 16.67 deg on X - FILENAME : mylon.nc - SUBSET : 8 points (LONGITUDE) - 112.8W / 1: 0.976269 - 96.2W / 2: -0.383713 - 79.5W / 3: -0.535314 - 62.8W / 4: 0.998887 - 46.2W / 5: -0.612560 - 29.5W / 6: -0.294944 - 12.8W / 7: 0.951514 - 3.8E / 8: -0.798487 - -! Previously also, the moduloing could return results -! that are one index off, also bug 841 - -list/nohead/y=0/prec=6 var[i=1100:1400:50] - 26.5E / 1: 0.859313 - 43.2E / 2: -0.912341 - 59.8E / 3: 0.189118 - 76.5E / 4: 0.695015 - 93.2E / 5: -0.987803 - 109.8E / 6: 0.440136 - 126.5E / 7: 0.482013 -can mem; list/nohead/y=0/prec=6 var[i=19:319:50,y=0] - 26.2E / 1: 0.859313 - 42.8E / 2: -0.912341 - 59.5E / 3: 0.189118 - 76.2E / 4: 0.695015 - 92.8E / 5: -0.987803 - 109.5E / 6: 0.440136 - 126.2E / 7: 0.482013 -can mem; list/y=0 var[i=69] - VARIABLE : SIN(X[GX=ROSE]) - FILENAME : mylon.nc - LONGITUDE: 42.83E(42.83) - -0.912341 -can mem; list/y=0 var[i=68] - VARIABLE : SIN(X[GX=ROSE]) - FILENAME : mylon.nc - LONGITUDE: 42.5E(42.5) - -0.996087 - -! Fixes bug creating format for listing a very long line -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err553_list_width.jnl -! err553_list_width.jnl -! *acm* 4/1/2004 -! Fix for bug 837; creating a format for very wide ascii listing -! (this caused an outright crash) - -! Note had /wid=9999, but this crashes Ferret under irix, -! listing to std output and also to an ascii file. -! Fortran limit for sequential files? 1024 works, 2047 did not. -! The bug, seen under solaris and linux for pre-v5.6, appears -! with /WIDTH=9999 but not with /WIDTH=1024. - -set mode ignore -def axis/x=1:5000:1 xax -def axis/y=1:2:1 yax -list/wid=1024/y=1:2 sin(x[gx=xax]) + y[gy=yax] - VARIABLE : SIN(X[GX=XAX]) + Y[GY=YAX] - SUBSET : 5000 by 2 points (X-Y) - ... listing every 45th point - 1 46 91 136 181 226 271 316 361 406 451 496 541 586 631 676 721 766 811 856 901 946 991 1036 1081 1126 1171 1216 1261 1306 1351 1396 1441 1486 1531 1576 1621 1666 1711 1756 1801 1846 1891 1936 1981 2026 2071 2116 2161 2206 2251 2296 2341 2386 2431 2476 2521 2566 2611 2656 2701 2746 2791 2836 2881 2926 2971 3016 3061 3106 3151 3196 3241 3286 3331 3376 3421 3466 3511 3556 3601 3646 3691 3736 3781 3826 3871 3916 3961 4006 4051 4096 4141 4186 4231 4276 4321 4366 4411 4456 4501 4546 4591 4636 4681 4726 4771 4816 4861 4906 4951 4996 - 1 46 91 136 181 226 271 316 361 406 451 496 541 586 631 676 721 766 811 856 901 946 991 1036 1081 1126 1171 1216 1261 1306 1351 1396 1441 1486 1531 1576 1621 1666 1711 1756 1801 1846 1891 1936 1981 2026 2071 2116 2161 2206 2251 2296 2341 2386 2431 2476 2521 2566 2611 2656 2701 2746 2791 2836 2881 2926 2971 3016 3061 3106 3151 3196 3241 3286 3331 3376 3421 3466 3511 3556 3601 3646 3691 3736 3781 3826 3871 3916 3961 4006 4051 4096 4141 4186 4231 4276 4321 4366 4411 4456 4501 4546 4591 4636 4681 4726 4771 4816 4861 4906 4951 4996 - 1 / 1: 1.84147 1.90179 1.10599 0.20957 0.06355 0.80656 1.73321 1.96379 1.27939 0.32975 0.01642 0.63686 1.60205 1.99568 1.44406 0.47087 0.00001 0.47850 1.45208 1.99647 1.59486 0.62851 0.01484 0.33643 1.28799 1.96614 1.72708 0.79776 0.06044 0.21509 1.11490 1.90563 1.83659 0.97333 0.13539 0.11827 0.93823 1.81683 1.91997 1.14973 0.23734 0.04899 0.76349 1.70252 1.97461 1.32145 0.36312 0.00942 0.59613 1.56626 1.99881 1.48313 0.50879 0.00078 0.44139 1.41231 1.99181 1.62972 0.66981 0.02336 0.30409 1.24549 1.95383 1.75664 0.84114 0.07645 0.18854 1.07099 1.88605 1.85993 1.01743 0.15838 0.09833 0.89428 1.79060 1.93636 1.19318 0.26660 0.03629 0.72087 1.67045 1.98353 1.36289 0.39774 0.00434 0.55618 1.52936 1.99999 1.52127 0.54768 0.00350 0.40536 1.37174 1.98521 1.66336 0.71175 0.03379 0.27311 1.20250 1.93965 1.78474 0.88483 0.09426 0.16356 1.02694 1.86475 1.88160 1.06150 0.18301 0.08014 0.85054 1.76283 - 2 / 2: 2.84147 2.90179 2.10599 1.20957 1.06355 1.80656 2.73321 2.96379 2.27939 1.32975 1.01642 1.63686 2.60205 2.99568 2.44406 1.47087 1.00001 1.47850 2.45208 2.99647 2.59486 1.62851 1.01484 1.33643 2.28799 2.96614 2.72708 1.79776 1.06044 1.21509 2.11490 2.90563 2.83659 1.97333 1.13539 1.11827 1.93823 2.81683 2.91997 2.14973 1.23734 1.04899 1.76349 2.70252 2.97461 2.32145 1.36312 1.00942 1.59613 2.56626 2.99881 2.48313 1.50879 1.00078 1.44139 2.41231 2.99181 2.62972 1.66981 1.02336 1.30409 2.24549 2.95383 2.75664 1.84114 1.07645 1.18854 2.07099 2.88605 2.85993 2.01743 1.15838 1.09833 1.89428 2.79060 2.93636 2.19318 1.26660 1.03629 1.72087 2.67045 2.98353 2.36289 1.39774 1.00434 1.55618 2.52936 2.99999 2.52127 1.54768 1.00350 1.40536 2.37174 2.98521 2.66336 1.71175 1.03379 1.27311 2.20250 2.93965 2.78474 1.88483 1.09426 1.16356 2.02694 2.86475 2.88160 2.06150 1.18301 1.08014 1.85054 2.76283 - -can mode ignore - -! ******** V5.7 Additions below *********** - -GO bn_reset bn_bounds.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_bounds.jnl -GO bn_bounds.jnl - -! bn_bounds.jnl -! testing CDF read and write of file with irregular axes and bounds -! and DEFINE AXIS/BOUNDS -! 5/2005 made changes so the bounds coordinates {1,2} are written to the -! file. If axis is Z, write attribute potitive="up". (bug 1196) -! 2/10 new examples of bounds which overlap each other. -! 4/13 with climatological axes defined internally the LIST outputs -! differ by a digit. This is just roundoff in the listing, the -! number 730.485 shown as 730.48 vs 730.49. Just increase precision -! for those list commands. - - -! Output data on irregular record axis. No need for: -! save/clobber/RIGID/HEADING=ENHANCED/LLIMITS=1:3/file=a.nc v - -!use climatological_axes -let v = t[gt=month_irreg] -save/clobber/file=a.nc v - -sp echo "bn_bounds.jnl --- 1 output of bounds on irreg axes." >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out -can data/all -can var v - -! Now use coads with long irregular time axis. - -can data/all -use coads_vwnd -let v = missing(vwnd,28.5) -save/clobber/file=a.nc/x=199/y=41/l=40:44 v -sp echo "bn_bounds.jnl --- 2 long irreg axes." >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - -! Append later time steps: we add a void point between non-contiguous bounds - -save/append/file=a.nc/x=199/y=41/l=50:53 v -sp echo "bn_bounds.jnl --- 3 Append later time steps, adding a void point" >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out -can data/all -can var/all - -! Depth axis; bounds {1,2} positive up - -define axis/z/depth/units=meters zirr = {0,10,40,70} -let t2 = z[gz=zirr] -save/clobber/file=a.nc t2 -sp echo "bn_bounds.jnl --- 4 depth axis, bounds positive up" >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out -can data/all -can var/all - -! SAVE on irregular time axis, multi-dimensional save. -! Void point is one time, all X and Y - -!use climatological_axes -use coads_climatology -let v = missing(sst[gt=month_irreg], 28) -save/clobber/x=181:185/y=1:7/L=1:5/file=a.nc v -save/append/x=181:185/y=1:7/L=8:9/file=a.nc v -sp echo "bn_bounds.jnl --- 5 SAVE on irregular time axis, multi-dimensional save." >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out -can var v - -use a.nc -list/y=3 v - VARIABLE : MISSING(SST[GT=MONTH_IRREG], 28) - FILENAME : a.nc - SUBSET : 3 by 8 points (LONGITUDE-TIME) - LATITUDE : 3N - 179W 177W 175W - 1 2 3 - 16-JAN 12 / 1: 27.9765 28.2538 28.2807 - 15-FEB 02 / 2: 28.3564 28.4117 27.9982 - 15-MAR 17 / 3: 27.9418 28.0035 27.7238 - 15-APR 05 / 4: 28.0000 28.0000 28.0000 - 15-MAY 17 / 5: 28.0000 28.0000 28.0000 - 30-JUN 17 / 6: .... .... .... - 15-AUG 17 / 7: 28.0000 28.0000 28.0000 - 15-SEP 05 / 8: 28.0000 28.0000 28.0000 -list/x=177w v - VARIABLE : MISSING(SST[GT=MONTH_IRREG], 28) - FILENAME : a.nc - SUBSET : 4 by 8 points (LATITUDE-TIME) - LONGITUDE: 177W - 1N 3N 5N 7N - 1 2 3 4 - 16-JAN 12 / 1: 28.4146 28.2538 28.0640 28.1024 - 15-FEB 02 / 2: 28.4018 28.4117 28.1639 27.7498 - 15-MAR 17 / 3: 27.5907 28.0035 27.8730 27.8183 - 15-APR 05 / 4: 28.0000 28.0000 28.0000 28.0000 - 15-MAY 17 / 5: 28.0000 28.0000 28.0000 28.0000 - 30-JUN 17 / 6: .... .... .... .... - 15-AUG 17 / 7: 28.0000 28.0000 28.0000 28.0000 - 15-SEP 05 / 8: 28.0000 28.0000 28.0000 28.0000 -can data/all -can var/all - -! Define an axis using edges -def axis/t/edges tax={0.5,1.5,2.5,3.5,6.5,7.5,8.5,9.5} -list t[gt=tax], tboxlo[gt=tax], tboxhi[gt=tax], tbox[gt=tax] - T: 0.5 to 9.5 - Column 1: T is T (axis TAX) - Column 2: TBOXLO is TBOXLO (axis TAX) - Column 3: TBOXHI is TBOXHI (axis TAX) - Column 4: TBOX is TBOX (axis TAX) - T TBOXLO TBOXHI TBOX -1 / 1: 1.00000 0.50000 1.50000 1.00000 -2 / 2: 2.00000 1.50000 2.50000 1.00000 -3 / 3: 3.00000 2.50000 3.50000 1.00000 -5 / 4: 5.00000 3.50000 6.50000 3.00000 -7 / 5: 7.00000 6.50000 7.50000 1.00000 -8 / 6: 8.00000 7.50000 8.50000 1.00000 -9 / 7: 9.00000 8.50000 9.50000 1.00000 - -! Define an axis using bounds. Note the coordinates need not be -! centered in the axis cells. -def axis/t/bounds tax={1.2, 2, 3.2, 5, 7, 8.4, 9}, {0.5,1.5, 1.5,2.5, 2.5,3.5, 3.5,6.5, 6.5,7.5, 7.5,8.5, 8.5,9.5} -list t[gt=tax], tboxlo[gt=tax], tboxhi[gt=tax], tbox[gt=tax] - T: 0.5 to 9.5 - Column 1: T is T (axis TAX) - Column 2: TBOXLO is TBOXLO (axis TAX) - Column 3: TBOXHI is TBOXHI (axis TAX) - Column 4: TBOX is TBOX (axis TAX) - T TBOXLO TBOXHI TBOX -1.2 / 1: 1.20000 0.50000 1.50000 1.00000 -2 / 2: 2.00000 1.50000 2.50000 1.00000 -3.2 / 3: 3.20000 2.50000 3.50000 1.00000 -5 / 4: 5.00000 3.50000 6.50000 3.00000 -7 / 5: 7.00000 6.50000 7.50000 1.00000 -8.4 / 6: 8.40000 7.50000 8.50000 1.00000 -9 / 7: 9.00000 8.50000 9.50000 1.00000 - -! Define an axis using bounds, with discontinuity between bounds, -! detected and changed to contiguous bounds, using lower bound for all cells. -def axis/t/bounds tax={1,2,3,5,7,8,9}, {0.5,1.5,1.5,2.5,2.5,3.5,4.5,6.5,6.5,7.5,7.5,8.5,8.5,9.5} -list t[gt=tax], tboxlo[gt=tax], tboxhi[gt=tax], tbox[gt=tax] - T: 0.5 to 9.5 - Column 1: T is T (axis TAX) - Column 2: TBOXLO is TBOXLO (axis TAX) - Column 3: TBOXHI is TBOXHI (axis TAX) - Column 4: TBOX is TBOX (axis TAX) - T TBOXLO TBOXHI TBOX -1 / 1: 1.00000 0.50000 1.50000 1.00000 -2 / 2: 2.00000 1.50000 2.50000 1.00000 -3 / 3: 3.00000 2.50000 3.50000 1.00000 -5 / 4: 5.00000 3.50000 6.50000 3.00000 -7 / 5: 7.00000 6.50000 7.50000 1.00000 -8 / 6: 8.00000 7.50000 8.50000 1.00000 -9 / 7: 9.00000 8.50000 9.50000 1.00000 - -! intentional errors -! coordinate point not inside bounds -set mode ignore -def axis/t/bounds tax={1.2,2,3.2,5,7,8.8,9}, {0.5,1.5,1.5,2.5,2.5,3.5,3.5,6.5,6.5,7.5,7.5,8.5,8.5,9.5} - -! First coordinate lower than first lower bound -def axis/t/bounds tax={0.1,2,3.2,5,7,8,9}, {0.5,1.5,1.5,2.5,2.5,3.5,3.5,6.5,6.5,7.5,7.5,8.5,8.5,9.5} - -! Last coordinate higher than last upper bound -def axis/t/bounds tax={0,2,3.2,5,7,8,9.9}, {0.5,1.5,1.5,2.5,2.5,3.5,3.5,6.5,6.5,7.5,7.5,8.5,8.5,9.5} - -! Too few or too many bounds values -def axis/t/bounds tax={0,2,3.2,5,7,8,9.9}, {0.5,1.5,2.5,3.5,6.5,7.5,8.5,9.5} -def axis/t/bounds tax={1.2,2,3.2,5,7,8.4,9}, {0.5,1.5,1.5,2.5,2.5,3.5,3.5,6.5,6.5,7.5,7.5,8.5,8.5,9.5,10.5} - - -! This set of bounds has overlapping bounds. Use midpoints instead. -def axis/t/bounds tax=\ - {12, 12.2, 36, 36.2, 60, 60.2, 84, 84.2, 108} ,\ - {0,24, 0,24, 24,48, 24,48, 48,72, 48,72, 72,96, 72,96, 96,120} - -cancel axis tax -can mode ignore - -! SAVE on regular time axis with bounds and edges attributes - -use coads_climatology -list/x=181/y=1/form=(f6.2, 3f10.4) sst, t[gt=sst], tboxlo[gt=sst], tboxhi[gt=sst] - DATA SET: ./data/coads_climatology.cdf - TIME: 01-JAN 00:45 to 01-APR 08:12 - LONGITUDE: 179W - LATITUDE: 1N - Column 1: SST is SEA SURFACE TEMPERATURE (Deg C) - Column 2: T is T (axis TIME7) - Column 3: TBOXLO is TBOXLO (axis TIME7) - Column 4: TBOXHI is TBOXHI (axis TIME7) - 28.28 366.0000 0.7575 731.2425 - 28.42 1096.4850 731.2425 1461.7275 - 28.05 1826.9700 1461.7275 2192.2125 - -save/clobber/bounds/file=a.nc/x=181/y=1 sst -sp echo "bn_bounds.jnl --- 6 SAVE on regular time axis with bounds attribute" >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - -save/clobber/edges/file=a.nc/x=181/y=1 sst -sp echo "bn_bounds.jnl --- 7 SAVE on regular time axis with edges attributes" >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - -! Intentional errors; combinations of qualifiers on SAVE -set mode ignore - -use coads_climatology -save/clobber/rigid/heading=enhanced/llimits=1:3/bounds/file=a.nc/x=181/y=1 sst -save/clobber/edges/bounds/file=a.nc/x=181/y=1 sst -can mode ignore - -can data/all - -! outputting bounds on all irregular axes -! test of DEPTH axis - -def axis/x xax = {1,2,5,6,7,8} -def axis/z/depth/bounds zax = {0,20,50,75,120}, {0, 10, 10, 30, 30, 60, 60, 90, 90, 150} -def axis/t tax = {1,2,9,10,11} -let v = x[gx=xax] +z[gz=zax] + t[gt=tax] -save/clobber/file=irrxzt.nc v -sp echo "bn_bounds.jnl --- 8 outputting bounds on all irregular axes, depth axis" >> all_ncdump.out -sp ncdump irrxzt.nc >> all_ncdump.out - -can data/all -can var/all -use irrxzt -list/x=5/t=5 v, z[gz=v] , zboxlo[gz=v], zboxhi[gz=v] - DATA SET: ./irrxzt.nc - Z: 0 to 150 - X: 5 - T: 2 - Column 1: V is X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX] - Column 2: Z is Z (axis ZAX) - Column 3: ZBOXLO is ZBOXLO (axis ZAX) - Column 4: ZBOXHI is ZBOXHI (axis ZAX) - V Z ZBOXLO ZBOXHI -0 / 1: 7.000 0.000 0.0000 10.000 -20 / 2: 27.000 20.000 10.0000 30.000 -50 / 3: 57.000 50.000 30.0000 60.000 -75 / 4: 82.000 75.000 60.0000 90.000 -120 / 5: 127.000 120.000 90.0000 150.000 -can data/all - -! RIGID/HEAD=ENHANCED works the same; issues a note - -!use climatological_axes -use coads_climatology -let v = sst[gt=month_irreg] -save/clobber/rigid/head=enh/llimits=1:3/x=181:191/y=1:7/l=1:3/file=a.nc v - -! Saving data with regular axes -! First save without the bounds attribute, result is a file with -! irregular time axis, possibly unintended large boxes. - -! 4/13 Increase precision for those list commands, see comment above - -!use climatological_axes -use coads_climatology -let v = missing(sst[gt=month_reg], 28) - -save/clobber/file=a.nc/x=181/y=1/L=1:4 v -save/append/file=a.nc/x=181/y=1/L=8:10 v -can data/all -can var v -use a.nc -list/prec=7 v, t[gt=v], tbox[gt=v] - DATA SET: ./a.nc - TIME: 01-JAN 00:45 to 31-OCT 09:36 - LONGITUDE: 179W - LATITUDE: 1N - Column 1: V is MISSING(SST[GT=MONTH_REG], 28) - Column 2: T is T (axis MONTH_REG1) - Column 3: TBOX is TBOX (axis MONTH_REG1) - V T TBOX -16-JAN / 1: 28.28389 366.000 730.485 -15-FEB / 2: 28.41851 1096.485 730.485 -17-MAR / 3: 28.04680 1826.970 730.485 -16-APR / 4: 28.00000 2557.455 1826.213 -16-AUG / 5: 28.00000 5479.395 1826.213 -15-SEP / 6: 28.00000 6209.880 730.485 -16-OCT / 7: 28.00000 6940.365 730.485 -can data a - -! Now save with /bounds - -!use climatological_axes -use coads_climatology -let v = missing(sst[gt=month_reg], 28) -save/clobber/BOUNDS/file=a.nc/x=181/y=1/L=1:4 v -save/append/file=a.nc/x=181/y=1/L=8:10 v -can data/all -can var v -use a.nc - -list/prec=7 v, t[gt=v], tbox[gt=v] - DATA SET: ./a.nc - TIME: 01-JAN 00:45 to 31-OCT 09:36 - LONGITUDE: 179W - LATITUDE: 1N - Column 1: V is MISSING(SST[GT=MONTH_REG], 28) - Column 2: T is T (axis MONTH_REG1) - Column 3: TBOX is TBOX (axis MONTH_REG1) - V T TBOX -16-JAN / 1: 28.28389 366.000 730.485 -15-FEB / 2: 28.41851 1096.485 730.485 -17-MAR / 3: 28.04680 1826.970 730.485 -16-APR / 4: 28.00000 2557.455 730.485 -16-JUN / 5: .... 4018.425 2191.455 -16-AUG / 6: 28.00000 5479.395 730.485 -15-SEP / 7: 28.00000 6209.880 730.485 -16-OCT / 8: 28.00000 6940.365 730.485 -can data/all - -! gappy_bounds.nc has discontiguous bounds -! We use the LOWER bound of all axis cells. - -use gappy_bounds.nc -list/prec=7 a, t[gt=a], tboxlo[gt=a], tboxhi[gt=a] - DATA SET: ./data/gappy_bounds.nc - TIME: 01-JAN-1990 12:00 to 10-JAN-1990 12:00 - Column 1: A is SST[X=150:180@AVE,Y=-10:0@AVE] - Column 2: T is T (axis TGAP) - Column 3: TBOXLO is TBOXLO (axis TGAP) - Column 4: TBOXHI is TBOXHI (axis TGAP) - A T TBOXLO TBOXHI -02-JAN-1990 00 / 1: 29.69704 1.000000 0.500000 1.500000 -03-JAN-1990 00 / 2: 29.37104 2.000000 1.500000 2.500000 -04-JAN-1990 00 / 3: 29.11568 3.000000 2.500000 3.500000 -08-JAN-1990 00 / 4: 29.29205 7.000000 3.500000 7.500000 -09-JAN-1990 00 / 5: 28.89826 8.000000 7.500000 8.500000 -10-JAN-1990 00 / 6: 28.93826 9.000000 8.500000 9.500000 - -cancel dat/all - -! bounds_noenclose has bounds that dont enclose the axis coordinate -! points. Use axis midpoints instead. - -use bounds_noenclose -sh axis/t tax - name axis # pts start end - TAX T 5 i 1 11 - Axis span (to cell edges) = 11 - - L T TBOX TBOXLO - 1> 1 1 0.5 - 2> 2 4 1.5 - 3> 9 4 5.5 - 4> 10 1 9.5 - 5> 11 1 10.5 - -! bounds_overlapping has bounds overlap. Use axis midpoints instead. - -use bounds_overlapping -sh axis/t tax - name axis # pts start end - TAX T 5 i 1 11 - Axis span (to cell edges) = 11 - - L T TBOX TBOXLO - 1> 1 1 0.5 - 2> 2 4 1.5 - 3> 9 4 5.5 - 4> 10 1 9.5 - 5> 11 1 10.5 - -GO bn_reset bn_all_leap.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_all_leap.jnl -GO bn_all_leap.jnl -! bn_all_leap.jnl -! ACM 6/2004 -! Added ALL_LEAP, or 366_DAY calendar (which is in the CF conventions). -! leap year every year - -define axis/t="1-jan-1988":"1-jan-1990":1/units=days/calendar=366_DAY tdays -define grid/t=tdays tgrid -let my_data = sin(l[g=tgrid]) -list my_data[t="27-feb-1988":"1-mar-1988"] - VARIABLE : SIN(L[G=TGRID]) - SUBSET : 4 points (TIME) - CALENDAR : ALL_LEAP - 27-FEB-1988 00 / 58: 0.992873 - 28-FEB-1988 00 / 59: 0.636738 - 29-FEB-1988 00 / 60: -0.304811 - 01-MAR-1988 00 / 61: -0.966118 -list my_data[t="27-feb-1989":"1-mar-1989"] - VARIABLE : SIN(L[G=TGRID]) - SUBSET : 4 points (TIME) - CALENDAR : ALL_LEAP - 27-FEB-1989 00 / 424: 0.114755 - 28-FEB-1989 00 / 425: -0.773910 - 29-FEB-1989 00 / 426: -0.951045 - 01-MAR-1989 00 / 427: -0.253794 - -define axis/t="1-jan-1988":"1-jan-1990":1/units=days/calendar=all_leap tdays - -list my_data[t="27-feb-1988":"1-mar-1988"] - VARIABLE : SIN(L[G=TGRID]) - SUBSET : 4 points (TIME) - CALENDAR : ALL_LEAP - 27-FEB-1988 00 / 58: 0.992873 - 28-FEB-1988 00 / 59: 0.636738 - 29-FEB-1988 00 / 60: -0.304811 - 01-MAR-1988 00 / 61: -0.966118 -list my_data[t="27-feb-1989":"1-mar-1989"] - VARIABLE : SIN(L[G=TGRID]) - SUBSET : 4 points (TIME) - CALENDAR : ALL_LEAP - 27-FEB-1989 00 / 424: 0.114755 - 28-FEB-1989 00 / 425: -0.773910 - 29-FEB-1989 00 / 426: -0.951045 - 01-MAR-1989 00 / 427: -0.253794 - -! Check the error message -set mode ignore_error -def axis/t/cal=nogood/t=1-jan-2000:1-jan-2010:1/units=months tax - -can mode ignore - -GO bn_reset bn_reset_attributes.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_reset_attributes.jnl -GO bn_reset_attributes.jnl -! bn_reset_attributes.jnl -! acm 6/14/2004 -! tests of SET AXIS/CALENDAR /T0 /UNITS also CANCEL AXIS/DEPTH -! also RETURN=calendar - -use gt4d011.cdf -set region/x=130w/y=1/k=1 - -sh axis `temp,return=taxis` - !-> sh axis TIME11 - name axis # pts start end - TIME11 TIME 25 r 17-AUG-1982 12:00 10-JAN-1983 12:00 -T0 = 14-JAN-1980 14:00:00 - Axis span (to cell edges) = 3650 -list/l=20:25 t[gt=temp] - VARIABLE : T - axis TIME11 - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - 11-DEC-1982 02 / 20: 25476.0 - 17-DEC-1982 04 / 21: 25622.0 - 23-DEC-1982 06 / 22: 25768.0 - 29-DEC-1982 08 / 23: 25914.0 - 04-JAN-1983 10 / 24: 26060.0 - 10-JAN-1983 12 / 25: 26206.0 - -! New RETURN=calendar -def sym calname = `temp,return=calendar` - !-> def sym calname = GREGORIAN - -! SET AXIS/CALENDAR= julian, 360-day, 365_day=julian, 366_day=all_leap, standard=gregorian -set axis/calendar=julian `temp,return=taxis` - !-> set axis/calendar=julian TIME11 -list/l=20:25 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - CALENDAR : JULIAN - LONGITUDE: 130.5W - LATITUDE : 0.833N - DEPTH (m): 5 - 130.5W - 100 - 11-DEC-1982 02 / 20: 32.6698 - 17-DEC-1982 04 / 21: 32.7830 - 23-DEC-1982 06 / 22: 32.7033 - 29-DEC-1982 08 / 23: 32.4479 - 04-JAN-1983 10 / 24: 32.2491 - 10-JAN-1983 12 / 25: 32.1819 -say `temp,return=calendar` - !-> MESSAGE/CONTINUE JULIAN -JULIAN - -set axis/calendar=360_day `temp,return=taxis` - !-> set axis/calendar=360_day TIME11 -list/l=20:25 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - CALENDAR : 360_DAY - LONGITUDE: 130.5W - LATITUDE : 0.833N - DEPTH (m): 5 - 130.5W - 100 - 26-DEC-1982 02 / 20: 32.6698 - 02-JAN-1983 04 / 21: 32.7830 - 08-JAN-1983 06 / 22: 32.7033 - 14-JAN-1983 08 / 23: 32.4479 - 20-JAN-1983 10 / 24: 32.2491 - 26-JAN-1983 12 / 25: 32.1819 -say `temp,return=calendar` - !-> MESSAGE/CONTINUE 360_DAY -360_DAY - -set axis/calendar=365_day `temp,return=taxis` - !-> set axis/calendar=365_day TIME11 -say `temp,return=calendar` - !-> MESSAGE/CONTINUE NOLEAP -NOLEAP - -set axis/calendar=nol `temp,return=taxis` - !-> set axis/calendar=nol TIME11 -list/l=20:25 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - CALENDAR : NOLEAP - LONGITUDE: 130.5W - LATITUDE : 0.833N - DEPTH (m): 5 - 130.5W - 100 - 12-DEC-1982 02 / 20: 32.6698 - 18-DEC-1982 04 / 21: 32.7830 - 24-DEC-1982 06 / 22: 32.7033 - 30-DEC-1982 08 / 23: 32.4479 - 05-JAN-1983 10 / 24: 32.2491 - 11-JAN-1983 12 / 25: 32.1819 -say `temp,return=calendar` - !-> MESSAGE/CONTINUE NOLEAP -NOLEAP - -set axis/calendar=366 `temp,return=taxis` - !-> set axis/calendar=366 TIME11 -say `temp,return=calendar` - !-> MESSAGE/CONTINUE ALL_LEAP -ALL_LEAP - -set axis/calendar=all_leap `temp,return=taxis` - !-> set axis/calendar=all_leap TIME11 -say `temp,return=calendar` - !-> MESSAGE/CONTINUE ALL_LEAP -ALL_LEAP -list/l=20:25 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - CALENDAR : ALL_LEAP - LONGITUDE: 130.5W - LATITUDE : 0.833N - DEPTH (m): 5 - 130.5W - 100 - 09-DEC-1982 02 / 20: 32.6698 - 15-DEC-1982 04 / 21: 32.7830 - 21-DEC-1982 06 / 22: 32.7033 - 27-DEC-1982 08 / 23: 32.4479 - 02-JAN-1983 10 / 24: 32.2491 - 08-JAN-1983 12 / 25: 32.1819 - -! Now resetting T0 -CAN DATA/ALL -use gt4d011.cdf -set region/x=130w/y=1/k=1 - -set axis/calendar="standard" `temp,return=taxis` - !-> set axis/calendar="standard" TIME11 -list/l=20:25 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - LONGITUDE: 130.5W - LATITUDE : 0.833N - DEPTH (m): 5 - 130.5W - 100 - 11-DEC-1982 02 / 20: 32.6698 - 17-DEC-1982 04 / 21: 32.7830 - 23-DEC-1982 06 / 22: 32.7033 - 29-DEC-1982 08 / 23: 32.4479 - 04-JAN-1983 10 / 24: 32.2491 - 10-JAN-1983 12 / 25: 32.1819 - -! One day earlier -set axis/t0="13-jan-1980:14:00" `temp,return=taxis` - !-> set axis/t0="13-jan-1980:14:00" TIME11 -say `temp,return=calendar` - !-> MESSAGE/CONTINUE GREGORIAN -GREGORIAN -list/l=20:25 t[gt=temp] - VARIABLE : T - axis TIME11 - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - 10-DEC-1982 02 / 20: 25476.0 - 16-DEC-1982 04 / 21: 25622.0 - 22-DEC-1982 06 / 22: 25768.0 - 28-DEC-1982 08 / 23: 25914.0 - 03-JAN-1983 10 / 24: 26060.0 - 09-JAN-1983 12 / 25: 26206.0 - - -! Now resetting UNITS -CAN DATA/ALL -CAN REGION -use gt4d011.cdf - -set axis/units=feet `temp,return=zaxis` - !-> set axis/units=feet PSZT -show axis `temp,return=zaxis` - !-> show axis PSZT - name axis # pts start end - PSZT Z (feet) 27 i- 5 3824 - Axis span (to cell edges) = 4149 - -! unrecognized units -set axis/units="something" `temp,return=xaxis` - !-> set axis/units="something" PSXT -show axis `temp,return=xaxis` - !-> show axis PSXT - name axis # pts start end - PSXT X (something) 160mr 130.5 289.5 - Axis span (to cell edges) = 160 (modulo length = 360) - -! restore lon -set axis/units=lon `temp,return=xaxis` - !-> set axis/units=lon PSXT -show axis `temp,return=xaxis` - !-> show axis PSXT - name axis # pts start end - PSXT LONGITUDE 160mr 130.5E 70.5W - Axis span (to cell edges) = 160 (modulo length = 360) - -set axis/units=something `temp,return=xaxis` - !-> set axis/units=something PSXT -show axis `temp,return=xaxis` - !-> show axis PSXT - name axis # pts start end - PSXT X (something) 160mr 130.5 289.5 - Axis span (to cell edges) = 160 (modulo length = 360) - -! restore lon using word DEG -set axis/units=deg `temp,return=xaxis` - !-> set axis/units=deg PSXT -show axis `temp,return=xaxis` - !-> show axis PSXT - name axis # pts start end - PSXT LONGITUDE 160mr 130.5E 70.5W - Axis span (to cell edges) = 160 (modulo length = 360) - -set axis/units=zorro `temp,r=zaxis` - !-> set axis/units=zorro PSZT -list/x=130w/y=1/k=1/L=1:5 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 points (TIME) - LONGITUDE: 130.5W - LATITUDE : 0.833N - Z (zorro): 5 - 130.5W - 100 - 17-AUG-1982 12 / 1: 25.9777 - 23-AUG-1982 14 / 2: 26.2025 - 29-AUG-1982 16 / 3: 26.4463 - 04-SEP-1982 18 / 4: 26.6606 - 10-SEP-1982 20 / 5: 26.7818 - -! not a geographic axis -set axis/units=meters `temp,return=yaxis` - !-> set axis/units=meters PSYT -list/x=222/k=1/l=1/y=-0.5:0.5 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 4 points (Y (meters)) - LONGITUDE: 138.5W - Z (zorro): 5 - TIME : 17-AUG-1982 12:00 - 138.5W - 92 - -0.5 / 44: 26.3422 - -0.17 / 45: 26.2807 - 0.17 / 46: 26.2649 - 0.5 / 47: 26.2916 - -set axis/units=deg `temp,return=yaxis` - !-> set axis/units=deg PSYT -show axis `temp,return=yaxis` - !-> show axis PSYT - name axis # pts start end - PSYT LATITUDE 100 i 28.836S 48.568N - Axis span (to cell edges) = 80.00004 -list/x=222/k=1/l=1/y=-0.5:0.5 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 4 points (LATITUDE) - LONGITUDE: 138.5W - Z (zorro): 5 - TIME : 17-AUG-1982 12:00 - 138.5W - 92 - 0.5N / 47: 26.2916 - 0.17N / 46: 26.2649 - 0.17S / 45: 26.2807 - 0.5S / 44: 26.3422 - -! inappropriate units for axis direction -set axis/units=meters `temp,return=taxis` - !-> set axis/units=meters TIME11 -list/x=130w/y=1/k=1/l=1:5 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 5 points (T (meters)) - LONGITUDE: 130.5W - LATITUDE : 0.833N - Z (zorro): 5 - 130.5W - 100 - 22702 / 1: 25.9777 - 22848 / 2: 26.2025 - 22994 / 3: 26.4463 - 23140 / 4: 26.6606 - 23286 / 5: 26.7818 - -set axis/units=seconds `temp,r=yaxis` - !-> set axis/units=seconds PSYT -show grid temp - GRID PS3DT2 - name axis # pts start end subset - PSXT LONGITUDE 160mr 130.5E 70.5W full - PSYT Y (seconds) 100 i -28.836 48.568 full - PSZT Z (zorro) 27 i- 5 3824 full - TIME11 T (meters) 25 r 22702 26206 full - -! assign time units to an abstract axis -def axis/t=1:5:1 tax - -set axis/units=days/t0=1-jan-1990 tax -sh axis tax - name axis # pts start end - TAX TIME 5 r 02-JAN-1990 00:00 06-JAN-1990 00:00 -T0 = 1-JAN-1990 - Axis span (to cell edges) = 5 -list t[gt=tax] - VARIABLE : T - axis TAX - SUBSET : 5 points (TIME) - 02-JAN-1990 00 / 1: 1.00000 - 03-JAN-1990 00 / 2: 2.00000 - 04-JAN-1990 00 / 3: 3.00000 - 05-JAN-1990 00 / 4: 4.00000 - 06-JAN-1990 00 / 5: 5.00000 - -! assign longitude units to an abstract axis -! by default this becomes modulo -def axis/x=0:120:20 xax - -set axis/units=lon xax -sh axis xax - name axis # pts start end - XAX LONGITUDE 7mr 0E 120E - Axis span (to cell edges) = 140 (modulo length = 360) -list x[gx=xax] - VARIABLE : X - axis XAX - SUBSET : 7 points (LONGITUDE) - 0E / 1: 0.000 - 20E / 2: 20.000 - 40E / 3: 40.000 - 60E / 4: 60.000 - 80E / 5: 80.000 - 100E / 6: 100.000 - 120E / 7: 120.000 - - -GO bn_reset bn570_bug_fixes.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn570_bug_fixes.jnl -GO bn570_bug_fixes.jnl -! bn554_bug_fixes.jnl -! test various fixes that went into version 5.70 -! 11/03 *acm* -! - -! Test use of automatic levels in SHADE -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err560_shade_levels.jnl -! err560_shade_levels.jnl *acm* 4/28/04 -! Missing levels on SHADE auto-level - -! Fix for bug 801 went too far: shade levels need adjusting -! (and were wrong always for negative levels) - -! Here is a simpler example (acm) -set view upper; shade/i=1:10/j=1:10 i*j*0.0034 !levels only go up to 0.003 -set view lower; shade/i=1:10/j=1:10 -1*i*j*0.0034 - -! Test use of reading irregular-time mc datasets -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err560_mc_irreg_t.jnl -! err560_mc_irreg_t.jnl -! 4/2004 ACM - -! Under Solaris, crashes Ferret; -! Under linux get a NC error. -! Its a precision bug in mc_read.F, determining what -! stepfile to read from, when the point requested is -! just at or between the range of the stepfiles. - -set data coads_clim_irreg.des -list/x=180/y=0/t=1-apr-1900 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - DATA SET : COAD - FILENAME : coads_clim_irreg.des - LONGITUDE: 179E - LATITUDE : 1S - TIME : 15-FEB-1900 16:29 - 28.3646 - -can mem/all -can data/all -set data coads_clim_irreg.des -list/x=180/y=0/t=2000 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - DATA SET : COAD - FILENAME : coads_clim_irreg.des - LONGITUDE: 179E - LATITUDE : 1S - TIME : 15-FEB-1900 16:29 - 28.3646 - - -! Crashed on SHADE of variable with NOLEAP axis, and subregion. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err560_shade_noleap.jnl -! err560_shade_noleap.jnl -! 4/30/04 ACM - -! Crashes on SHADE of variable with NOLEAP axis, and subregion. - -def axis/t/t0=1-jan-2000/units=months/calendar=noleap tax = {1,3,4,5,6,8,9,12} -def axis/depth/z=0:1000:15 zax -let a = z[gz=zax] + t[gt=tax] - -shade/t=4-jan-2000:10-nov-2000 a - -! err560_regriding_gaps.jnl -! If the index has a negative range including the value -! -111, was treated as missing rather than a valid index. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err560_regridding_gaps.jnl -! err560_regrid -! -! If the index has a negative range including the value -! -111, was treated as missing rather than a valid index. - -def axis/modulo/x=1:360:1/units=lon xax -def axis/modulo/x=-180:179:1/units=lon xaxshift - -let a = x[gx=xax] -let b = x[gx=xaxshift] -save/clobber/file=xlong.nc a -save/clobber/file=xlongshift.nc b - -can data/all -can var/all -use xlongshift -use xlong - -list/x=115w:108w a[gx=b[d=1]] - VARIABLE : X[GX=XAX] - regrid: B[D=xlongshift] - FILENAME : xlong.nc - SUBSET : 8 points (LONGITUDE) - 115W / 426: 245.000 - 114W / 427: 246.000 - 113W / 428: 247.000 - 112W / 429: 248.000 - 111W / 430: 249.000 - 110W / 431: 250.000 - 109W / 432: 251.000 - 108W / 433: 252.000 - -list/x=115w:108w a[gx=b[d=1]@ave] - VARIABLE : X[GX=XAX] - regrid: B[D=xlongshift] on X@AVE - FILENAME : xlong.nc - SUBSET : 8 points (LONGITUDE) - 115W / 426: 245.000 - 114W / 427: 246.000 - 113W / 428: 247.000 - 112W / 429: 248.000 - 111W / 430: 249.000 - 110W / 431: 250.000 - 109W / 432: 251.000 - 108W / 433: 252.000 - -list/x=115w:108w a[gx=b[d=1]@ave] - VARIABLE : X[GX=XAX] - regrid: B[D=xlongshift] on X@AVE - FILENAME : xlong.nc - SUBSET : 8 points (LONGITUDE) - 115W / 426: 245.000 - 114W / 427: 246.000 - 113W / 428: 247.000 - 112W / 429: 248.000 - 111W / 430: 249.000 - 110W / 431: 250.000 - 109W / 432: 251.000 - 108W / 433: 252.000 - -list/x=115w:108w a[gx=b[d=1]@sum] - VARIABLE : X[GX=XAX] - regrid: B[D=xlongshift] on X@SUM - FILENAME : xlong.nc - SUBSET : 8 points (LONGITUDE) - 115W / 426: 245.000 - 114W / 427: 246.000 - 113W / 428: 247.000 - 112W / 429: 248.000 - 111W / 430: 249.000 - 110W / 431: 250.000 - 109W / 432: 251.000 - 108W / 433: 252.000 - -list/x=115w:108w a[gx=b[d=1]@ngd] - VARIABLE : X[GX=XAX] (# of points) - regrid: B[D=xlongshift] on X@NGD - FILENAME : xlong.nc - SUBSET : 8 points (LONGITUDE) - 115W / 426: 1.00000 - 114W / 427: 1.00000 - 113W / 428: 1.00000 - 112W / 429: 1.00000 - 111W / 430: 1.00000 - 110W / 431: 1.00000 - 109W / 432: 1.00000 - 108W / 433: 1.00000 - -list/x=115w:108w a[gx=b[d=1]@nrst] - VARIABLE : X[GX=XAX] - regrid: B[D=xlongshift] on X@NRST - FILENAME : xlong.nc - SUBSET : 8 points (LONGITUDE) - 115W / 426: 245.000 - 114W / 427: 246.000 - 113W / 428: 247.000 - 112W / 429: 248.000 - 111W / 430: 249.000 - 110W / 431: 250.000 - 109W / 432: 251.000 - 108W / 433: 252.000 - -list/x=115w:108w a[gx=b[d=1]@xact] - VARIABLE : X[GX=XAX] - regrid: B[D=xlongshift] on X@XACT - FILENAME : xlong.nc - SUBSET : 8 points (LONGITUDE) - 115W / 426: 245.000 - 114W / 427: 246.000 - 113W / 428: 247.000 - 112W / 429: 248.000 - 111W / 430: 249.000 - 110W / 431: 250.000 - 109W / 432: 251.000 - 108W / 433: 252.000 - -sp rm xlong.nc -sp rm xlongshift.nc - -! err560_leap_years.jnl -! inconsistency in computing whether year is a leap year; -! bug in drawing the time axis. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err560_leap_years.jnl -! err560_leap_years.jnl -! Fixes for bug 882, inconsistency in computing whether -! year is a leap year. - -def axis/t="07-FEB-1899:12:00":"07-FEB-1900:12:00":365.2425/units=days/t0="1-jan-1800" tax -let v = tsequence({55,65}) -plot v[gt=tax@asn] - -! err560_dyn_grids.jnl -! plot missing in upper plot; error counting dynamic grids -! GO bn_reset -! GO err560_dyn_grids.jnl - -! err560_century.jnl -! Century portion of years were not properly tested in numdm1.F -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err560_century -! err560_century.jnl.jnl *acm* 4/28/04 -! Century portion of years were not properly tested in numdm1.F - -! Crashes Ferret with STOP: ,2 - -def axis/t="07-FEB-1899:12:00":"07-FEB-1900:12:00":365.2425/units=days/t0="1-jan-1800" tax -let v = tsequence({55,65}) -plot/step=connected v[gt=tax@asn] -plot/over v[gt=tax@asn] - -plot v[gt=tax@asn] - - -! Also need to test this, years 599 - 600 - -def axis/t=07-feb-0599:07-feb-0600:1/units=years tt -plot t[gt=tt] - -! ******** V5.8 Additions below *********** - -GO bn_reset bn_modstats.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_modstats.jnl -GO bn_modstats.jnl -! bn_modstats.jnl -! acm 8/25/04 -! There was never a benchmark test of modulo statistics. -! (and a bug had crept into @MODVAR when there was missing data) - -use gtsa056_2.cdf -set region/x=140/y=1/k=1 -let var = if temp gt 29.5 then temp - -!use climatological_axes -!can data climatological_axes - -list var[gt=month_reg@mod] - VARIABLE : IF TEMP GT 29.5 THEN TEMP - regrid: 730.5 hour on T@MOD - FILENAME : gtsa056_2.cdf - SUBSET : 12 points (TIME) - LONGITUDE: 139.5E - LATITUDE : 0.833N - DEPTH (m): 5 - 139.5E - 10 - 16-JAN / 1: 29.5559 - 15-FEB / 2: 29.5316 - 17-MAR / 3: 29.6615 - 16-APR / 4: 29.8829 - 16-MAY / 5: 29.8907 - 16-JUN / 6: 29.9644 - 16-JUL / 7: 29.6883 - 16-AUG / 8: .... - 15-SEP / 9: 29.6661 - 16-OCT / 10: 29.7464 - 15-NOV / 11: 29.9058 - 16-DEC / 12: 29.7728 - -! bug had values of Inf surrounding missing data -list var[gt=month_reg@modvar] - VARIABLE : Variance of IF TEMP GT 29.5 THEN TEMP - regrid: 730.5 hour on T@MODVAR - FILENAME : gtsa056_2.cdf - SUBSET : 12 points (TIME) - LONGITUDE: 139.5E - LATITUDE : 0.833N - DEPTH (m): 5 - 139.5E - 10 - 16-JAN / 1: 0.0020743 - 15-FEB / 2: 0.0005012 - 17-MAR / 3: 0.0079502 - 16-APR / 4: 0.0015034 - 16-MAY / 5: 0.0035104 - 16-JUN / 6: 0.0096970 - 16-JUL / 7: 0.0188794 - 16-AUG / 8: .... - 15-SEP / 9: 0.0055797 - 16-OCT / 10: 0.0068064 - 15-NOV / 11: 0.0019084 - 16-DEC / 12: 0.0048345 -list var[gt=month_reg@modmin] - VARIABLE : IF TEMP GT 29.5 THEN TEMP - regrid: 730.5 hour on T@MODMIN - FILENAME : gtsa056_2.cdf - SUBSET : 12 points (TIME) - LONGITUDE: 139.5E - LATITUDE : 0.833N - DEPTH (m): 5 - 139.5E - 10 - 16-JAN / 1: 29.5018 - 15-FEB / 2: 29.5157 - 17-MAR / 3: 29.5182 - 16-APR / 4: 29.7809 - 16-MAY / 5: 29.7883 - 16-JUN / 6: 29.8047 - 16-JUL / 7: 29.5034 - 16-AUG / 8: .... - 15-SEP / 9: 29.5334 - 16-OCT / 10: 29.6438 - 15-NOV / 11: 29.8575 - 16-DEC / 12: 29.6620 -list var[gt=month_reg@modmax] - VARIABLE : IF TEMP GT 29.5 THEN TEMP - regrid: 730.5 hour on T@MODMAX - FILENAME : gtsa056_2.cdf - SUBSET : 12 points (TIME) - LONGITUDE: 139.5E - LATITUDE : 0.833N - DEPTH (m): 5 - 139.5E - 10 - 16-JAN / 1: 29.6371 - 15-FEB / 2: 29.5474 - 17-MAR / 3: 29.8171 - 16-APR / 4: 29.9306 - 16-MAY / 5: 29.9564 - 16-JUN / 6: 30.0834 - 16-JUL / 7: 29.8189 - 16-AUG / 8: .... - 15-SEP / 9: 29.7498 - 16-OCT / 10: 29.9003 - 15-NOV / 11: 29.9684 - 16-DEC / 12: 29.8558 -list var[gt=month_reg@modsum] - VARIABLE : IF TEMP GT 29.5 THEN TEMP - regrid: 730.5 hour on T@MODSUM - FILENAME : gtsa056_2.cdf - SUBSET : 12 points (TIME) - LONGITUDE: 139.5E - LATITUDE : 0.833N - DEPTH (m): 5 - 139.5E - 10 - 16-JAN / 1: 295.559 - 15-FEB / 2: 59.063 - 17-MAR / 3: 533.908 - 16-APR / 4: 597.657 - 16-MAY / 5: 597.813 - 16-JUN / 6: 359.572 - 16-JUL / 7: 207.818 - 16-AUG / 8: .... - 15-SEP / 9: 237.329 - 16-OCT / 10: 297.464 - 15-NOV / 11: 299.058 - 16-DEC / 12: 297.728 -list var[gt=month_reg@modngd] - VARIABLE : IF TEMP GT 29.5 THEN TEMP (# of points) - regrid: 730.5 hour on T@MODNGD - FILENAME : gtsa056_2.cdf - SUBSET : 12 points (TIME) - LONGITUDE: 139.5E - LATITUDE : 0.833N - DEPTH (m): 5 - 139.5E - 10 - 16-JAN / 1: 10.0000 - 15-FEB / 2: 2.0000 - 17-MAR / 3: 18.0000 - 16-APR / 4: 20.0000 - 16-MAY / 5: 20.0000 - 16-JUN / 6: 12.0000 - 16-JUL / 7: 7.0000 - 16-AUG / 8: 0.0000 - 15-SEP / 9: 8.0000 - 16-OCT / 10: 10.0000 - 15-NOV / 11: 10.0000 - 16-DEC / 12: 10.0000 - -GO bn_reset bn_mc_vary_scale.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_mc_vary_scale.jnl -GO bn_mc_vary_scale.jnl -! bn_mc_vary_scale.jnl -! Allow stepfiles to have different internal scale and offset. -! read and apply when opening each stepfile. Previously, the -! scale and offset from the first stepfile were applied. -! `var,return=nc_offset` and `var,return=nc_scale1` contain the -! latest scaling applied - - -set data vary_scale.des -! With two different scalings applied for the two stepfiles, there -! is a change in slope and offset in the middle of this data - -list tt - VARIABLE : 1 + 0*T[GT=DAYT] - DATA SET : Model Output, Daily Averages - FILENAME : vary_scale.des - SUBSET : 20 points (TIME) - 01-JAN-1990 00 / 1: -0.5000 - 02-JAN-1990 00 / 2: -1.5000 - 03-JAN-1990 00 / 3: -2.5000 - 04-JAN-1990 00 / 4: -3.5000 - 05-JAN-1990 00 / 5: -4.5000 - 06-JAN-1990 00 / 6: -5.5000 - 07-JAN-1990 00 / 7: -6.5000 - 08-JAN-1990 00 / 8: -7.5000 - 09-JAN-1990 00 / 9: -8.5000 - 10-JAN-1990 00 / 10: -9.5000 - 11-JAN-1990 00 / 11: 1.9800 - 12-JAN-1990 00 / 12: 3.9800 - 13-JAN-1990 00 / 13: 5.9800 - 14-JAN-1990 00 / 14: 7.9800 - 15-JAN-1990 00 / 15: 9.9800 - 16-JAN-1990 00 / 16: 11.9800 - 17-JAN-1990 00 / 17: 13.9800 - 18-JAN-1990 00 / 18: 15.9800 - 19-JAN-1990 00 / 19: 17.9800 - 20-JAN-1990 00 / 20: 19.9800 -list/quiet/nohead `tt,return=nc_scale`, `tt,return=nc_offset` - !-> list/quiet/nohead 2, -0.02 -I / *: 2.00000 -0.0200000 - - -can data/all -can mem -set data vary_scale.des - -! The scale and offset from the first stepfile -list/L=2:4 tt - VARIABLE : 1 + 0*T[GT=DAYT] - DATA SET : Model Output, Daily Averages - FILENAME : vary_scale.des - SUBSET : 3 points (TIME) - 02-JAN-1990 00 / 2: -1.50000 - 03-JAN-1990 00 / 3: -2.50000 - 04-JAN-1990 00 / 4: -3.50000 -list/quiet/nohead `tt,return=nc_scale`, `tt,return=nc_offset` - !-> list/quiet/nohead -1, 0.5 -I / *: -1.00000 0.500000 - - -can data/all -can mem -set data vary_scale.des - -! The scale and offset from the second stepfile -list/L=12:14 tt - VARIABLE : 1 + 0*T[GT=DAYT] - DATA SET : Model Output, Daily Averages - FILENAME : vary_scale.des - SUBSET : 3 points (TIME) - 12-JAN-1990 00 / 12: 3.98000 - 13-JAN-1990 00 / 13: 5.98000 - 14-JAN-1990 00 / 14: 7.98000 -list/quiet/nohead `tt,return=nc_scale`, `tt,return=nc_offset` - !-> list/quiet/nohead 2, -0.02 -I / *: 2.00000 -0.0200000 - - -GO bn_reset bn_plot_nokey.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot_nokey.jnl -GO bn_plot_nokey.jnl -! bn_plot_nokey.jnl (bug 1089) -! 22-nov-2004 - -! Test new PLOT/NOKEY qualifier -! Plot several lines together, then plot/over - -PLOT/NOKEY/I=1:100 cos(i/20), sin(i/30), cos(i/30)*sin(i/20) -PLOT/OVER/NOKEY/I=1:100 cos(i/10), sin(i/50), cos(i/40)*sin(i/10) - -! plot/vs -PLOT/VS/LINE/NOKEY/I=1:314 i*cos(i/20), i*sin(i/20) -PLOT/OVER/VS/LINE/NOKEY/I=1:314 i*cos(i/30), i*sin(i/30) - -! time series -USE gtsa056_2 -PLOT/X=180/Y=0/K=1 temp -PLOT/OVER/NOKEY/X=180/Y=-1/K=1 temp -PLOT/OVER/NOKEY/X=180/Y=1/K=1 temp - -GO bn_reset bn580_bug_fixes.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn580_bug_fixes.jnl -GO bn580_bug_fixes.jnl -! bn580_bug_fixes.jnl -! test various fixes that went into version 5.80 -! 7/04 *acm* -! - -! POLYGON (or SHADE) plots with a single level had no fill color -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_singlecolor.jnl -! err570_singlecolor.jnl -! 7/6/2004 - -! See bug 901. When a single fill color is sent to -! the POLYGON, SHADE, or FILL, the code sends the command -! PPL LEV (val). But, the value was formatted so that the -! value got rounded off, so the precise value wasnt specified -! and the graphics call then didn't find the value. - -! This polygon was filled -let a = 111 -poly/fill/line {0,1,2},{1,2,1},a - -! This polygon was not filled -let a = 111.55 -poly/fill/over/line {0,1,2},{2,1,2},a - -! This shade plot did not fill in. -define axis/x=1:10:1 xax -define axis/y=1:12:1 yax -let b = x[gx=xax] + y[gy=yax] -shade/y=0:90 a + 0*b - -! FILL doesnt make the graphics call to do the fil plot -! when there is just one level ... - -! ... and this is bug 957; similar symptoms but a different -! cause. SHADE and POLY need level defined when there is just -! one level. - -let v = 15 -shade/lev=1/x=1:10/y=1:10 v + 0*x + 0*y - - -def axis/x=1:1:1 xaxj -def grid/x=xaxj gaxj -let a = 111241*x[gx=gaxj@asn] -poly/lev=2 {0,1,2},{1,2,1},a ! OR lev=1 - -! colorbar labels too close to the bar, when user sets bar location -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_shakeylab.jnl - -! err570_shakeylab.jnl -! 7/6/2004 -! Update 6/19: draw a subset of the globe for speed. -! Let label size be set automatically for most plots. Save the plots. - -! When user defines the location of the color key, the key -! labels are too close to the edge of the key. - -! Test with both SHADE and FILL, as some of the scaling is -! different internally. - - -use coads_climatology -ppl dfltfnt cr - -set view ul -go margins 1 1 1.2 2 -fill/set/L=2/x=170:180 sst -ppl shakey 1, 1, , 0, -2, 8, `($ppl$xorg)+($ppl$xlen)+0.3`, `($ppl$xorg)+($ppl$xlen)+0.6`, `($ppl$yorg)`, `($ppl$yorg)+($ppl$ylen)` - !-> ppl shakey 1, 1, , 0, -2, 8, 5.512, 5.811999999999999, 1, 5.223 -ppl fill - - -set view ur -go margins 1 1 1.2 2 -fill/set/L=2/x=170:180 sst* 10000 -ppl shakey 1, 1, , 0, -2, 8, `($ppl$xorg)+($ppl$xlen)+0.3`, `($ppl$xorg)+($ppl$xlen)+0.6`, `($ppl$yorg)`, `($ppl$yorg)+($ppl$ylen)` - !-> ppl shakey 1, 1, , 0, -2, 8, 5.512, 5.811999999999999, 1, 5.223 -ppl fill - - -set view ll -go margins 1 1 1.2 2 -fill/set/L=2/x=170:180 sst/ 10000 -ppl shakey 1, 1, .1, 0, -2, 8, `($ppl$xorg)+($ppl$xlen)+0.3`, `($ppl$xorg)+($ppl$xlen)+0.6`, `($ppl$yorg)`, `($ppl$yorg)+($ppl$ylen)` - !-> ppl shakey 1, 1, .1, 0, -2, 8, 5.512, 5.811999999999999, 1, 5.223 -ppl fill - -frame/file=shakeylab_fill.gif -cancel view - -set view ul -go margins 1 1 1.2 2 -shade/set/L=2/x=170:180 sst -ppl shakey 1, 1, , 0, -2, 8, `($ppl$xorg)+($ppl$xlen)+0.3`, `($ppl$xorg)+($ppl$xlen)+0.6`, `($ppl$yorg)`, `($ppl$yorg)+($ppl$ylen)` - !-> ppl shakey 1, 1, , 0, -2, 8, 5.512, 5.811999999999999, 1, 5.223 -ppl shade - -set view ur -go margins 1 1 1.2 2 -shade/set/L=2/x=170:180 sst* 10000 -ppl shakey 1, 1, , 0, -2, 8, `($ppl$xorg)+($ppl$xlen)+0.3`, `($ppl$xorg)+($ppl$xlen)+0.6`, `($ppl$yorg)`, `($ppl$yorg)+($ppl$ylen)` - !-> ppl shakey 1, 1, , 0, -2, 8, 5.512, 5.811999999999999, 1, 5.223 -ppl shade - -set view ll -go margins 1 1 1.2 2 -shade/set/L=2/x=170:180 sst/ 10000 -ppl shakey 1, 1, .1, 0, -2, 8, `($ppl$xorg)+($ppl$xlen)+0.3`, `($ppl$xorg)+($ppl$xlen)+0.6`, `($ppl$yorg)`, `($ppl$yorg)+($ppl$ylen)` - !-> ppl shakey 1, 1, .1, 0, -2, 8, 5.512, 5.811999999999999, 1, 5.223 -ppl shade - - -frame/file=shakeylab_shade.gif -cancel view -ppl dfltfnt sr - -! Null input gives wierd error message -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_null_symbol.jnl -! err570_null_symbol.jnl -! null input -- > wierd error message see bug 919 -! -! **ERROR: invalid command: DEFINE what name? -! DEFINE VARIABLE - -set mode ignore - -def sym a " " -($a) - -can mode ignore - -! Replace text expression with its value: string variable was too short -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_parse_labelcommand.jnl -! err570_parse_labelcommand.jnl -! fix for bug 956. -! -! When a command is issued with an argument being a variable containing -! a long string, the string is cut off when the command is parsed to -! substitude the value of the variable. -! (bug fix is lengthening the length of variable repl in repl_exprns.F) - -can view -pplus/reset -PLOT/i=1:10 1/i - -let line1 = "1234567891123456789212345678931234567894123456789512345678961234567897123456789812345678991234567890" -let line2 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" -let tsulab = strcat(line1, line2) -list tsulab - VARIABLE : STRCAT(LINE1, LINE2) - "1234567891123456789212345678931234567894123456789512345678961234567897123456789812345678991234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" - -! Previously when the value of tsulab is replaced in the command and -! echoed back to the terminal, the string was truncated, with bad appended -! to the end of the shortened second line. - -label/nouser 3.6,`($ppl$ylen)+0.2`,0,0,0.08, `tsulab` - !-> PPL %LABEL/nouser 3.6,6.2,0,0,0.08, 1234567891123456789212345678931234567894123456789512345678961234567897123456789812345678991234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz - -! result of COMPRESSK_BY function does not vary in X -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_compressk_by.jnl -! err570_compress_by.jnl -! fix for bug 925 - -!-------------------------------------------------------------- -! create a file with 3-d data and 2-d array of sampling levels -! define xy and xyz grids - -def axis/x=1:5:1 xax ; def axis/y=1:4:1 yax ; def axis/z=1:3:1 zax -def grid/x=xax/y=yax gxy ; def grid/x=xax/y=yax/z=zax gxyz - -let/title="Sampling Levels" ind=int(3*randu(x[g=gxy]+y[g=gxy])+1) -let/title="3-D Data" temp=x[g=gxyz]+10*(y[g=gxyz]+10*z[g=gxyz]) - -list ind - VARIABLE : Sampling Levels - SUBSET : 5 by 4 points (X-Y) - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 3.00000 2.00000 1.00000 1.00000 3.00000 - 2 / 2: 1.00000 3.00000 2.00000 2.00000 3.00000 - 3 / 3: 2.00000 3.00000 3.00000 2.00000 3.00000 - 4 / 4: 3.00000 2.00000 1.00000 1.00000 2.00000 -! 1 2 3 4 5 -! 1 / 1: 3.000 2.000 1.000 1.000 3.000 -! 2 / 2: 1.000 3.000 2.000 2.000 3.000 -! 3 / 3: 2.000 3.000 3.000 2.000 3.000 -! 4 / 4: 3.000 2.000 1.000 1.000 2.000 - -list temp - VARIABLE : 3-D Data - SUBSET : 5 by 4 by 3 points (X-Y-Z) - 1 2 3 4 5 - 1 2 3 4 5 - ---- K:1 Z: 1 - 1 / 1: 111.000 112.000 113.000 114.000 115.000 - 2 / 2: 121.000 122.000 123.000 124.000 125.000 - 3 / 3: 131.000 132.000 133.000 134.000 135.000 - 4 / 4: 141.000 142.000 143.000 144.000 145.000 - ---- K:2 Z: 2 - 1 / 1: 211.000 212.000 213.000 214.000 215.000 - 2 / 2: 221.000 222.000 223.000 224.000 225.000 - 3 / 3: 231.000 232.000 233.000 234.000 235.000 - 4 / 4: 241.000 242.000 243.000 244.000 245.000 - ---- K:3 Z: 3 - 1 / 1: 311.000 312.000 313.000 314.000 315.000 - 2 / 2: 321.000 322.000 323.000 324.000 325.000 - 3 / 3: 331.000 332.000 333.000 334.000 335.000 - 4 / 4: 341.000 342.000 343.000 344.000 345.000 -! 1 2 3 4 5 -! ---- K:1 Z: 1 -! 1 / 1: 111.0 112.0 113.0 114.0 115.0 -! 2 / 2: 121.0 122.0 123.0 124.0 125.0 -! 3 / 3: 131.0 132.0 133.0 134.0 135.0 -! 4 / 4: 141.0 142.0 143.0 144.0 145.0 -! ---- K:2 Z: 2 -! 1 / 1: 211.0 212.0 213.0 214.0 215.0 -! 2 / 2: 221.0 222.0 223.0 224.0 225.0 -! 3 / 3: 231.0 232.0 233.0 234.0 235.0 -! 4 / 4: 241.0 242.0 243.0 244.0 245.0 -! ---- K:3 Z: 3 -! 1 / 1: 311.0 312.0 313.0 314.0 315.0 -! 2 / 2: 321.0 322.0 323.0 324.0 325.0 -! 3 / 3: 331.0 332.0 333.0 334.0 335.0 -! 4 / 4: 341.0 342.0 343.0 344.0 345.0 - -let mask=if(ind+0*z[g=gxyz] eq k[g=gxyz])then 1 -let tlev=compressk_by(temp,mask) - -!**** here is the bug behavior ... column 1 is as expected but not the others -! list tlev[k=1] -! 1 2 3 4 5 -! 1 / 1: 311.0 311.0 311.0 311.0 311.0 -! 2 / 2: 121.0 121.0 121.0 121.0 121.0 -! 3 / 3: 231.0 231.0 231.0 231.0 231.0 -! 4 / 4: 341.0 341.0 341.0 341.0 341.0 - -list tlev[k=1] - VARIABLE : COMPRESSK_BY(TEMP,MASK) - SUBSET : 5 by 4 points (X-Y) - Z : 1 - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 311.000 212.000 113.000 114.000 315.000 - 2 / 2: 121.000 322.000 223.000 224.000 325.000 - 3 / 3: 231.000 332.000 333.000 234.000 335.000 - 4 / 4: 341.000 242.000 143.000 144.000 245.000 - - - -! Command parsing on PPL side had string lengths too short -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_long_label.jnl -! err570_long_label.jnl -! Fix for bug 956 - -! Very long multi-line label truncated on %LABEL command -! (string lengths hardwired to 255 deep in PPLUS command parsing) - -PLOT/i=1:10 1/i - -set mod verify -! from Jean Newman's facts_ttl_src_lst.jnl - -define symbol clrmod = 2 -let source_list = "Mw 9.2, 14.76*a12+14.76*b12+14.76*a13+14.76*b13+14.76*a14+14.76*b14+14.76*a15+14.76*b15+14.76*a16+14.76*b16+14.76*a17+14.76*b17+14.76*a18+14.76*b18+14.76*a19+14.76*b19+14.76*a20+14.76*b20+14.76*a21+14.76*b21+14.76*a22+14.76*b22+14.76*a23+14.76*b23+14.76*a24+14.76*b24" -let tit_x = 3.6035 -let sl_y = 6.5 - - define symbol lenline = `strlen(source_list)+8` - !-> define symbol lenline = 275 - let tsuchr = 0.09 - let ntsulns = if `($VP_WIDTH)/((($lenline)/2.)*.9) lt 0.09` then 3 else 2 - !-> DEFINE VARIABLE ntsulns = if 1 then 3 else 2 - let nctsulns = `int(($lenline)/ntsulns)` - !-> DEFINE VARIABLE nctsulns = 91 - let lstr1 = `strrindex(substring(source_list,0,nctsulns),"+")` - !-> DEFINE VARIABLE lstr1 = 88 - let lstr2 = `strrindex(substring(source_list,lstr1+1,nctsulns),"+")` - !-> DEFINE VARIABLE lstr2 = 90 - let str3a = substring(source_list,0,lstr1) - let str3 = strcat(str3a,"") - let str4a = substring(source_list,lstr1+1,lstr2) - let str4 = strcat(str4a,"") - let str1 = strcat(str3,str4) - let lstr3 = `lstr1+lstr2` - !-> DEFINE VARIABLE lstr3 = 178 - let str2 = substring(source_list,lstr3+1,($lenline)-lstr3) - !-> DEFINE VARIABLE str2 = substring(source_list,lstr3+1,275-lstr3) - let tsustr = strcat(str1,str2) - let tsulab = strcat("@P($clrmod)Source: ",tsustr) - !-> DEFINE VARIABLE tsulab = strcat("@P2Source: ",tsustr) - list/noheader tsulab - "@P2Source: Mw 9.2, 14.76*a12+14.76*b12+14.76*a13+14.76*b13+14.76*a14+14.76*b14+14.76*a15+14.76*b15+14.76*a16+14.76*b16+14.76*a17+14.76*b17+14.76*a18+14.76*b18+14.76*a19+14.76*b19+14.76*a20+14.76*b20+14.76*a21+14.76*b21+14.76*a22+14.76*b22+14.76*a23+14.76*b23+14.76*a24+14.76*b24" - label/nouser `tit_x`,`sl_y`,0,0,`tsuchr` `tsulab` - !-> PPL %LABEL/nouser 3.6035,6.5,0,0,0.09 @P2Source: Mw 9.2, 14.76*a12+14.76*b12+14.76*a13+14.76*b13+14.76*a14+14.76*b14+14.76*a15+14.76*b15+14.76*a16+14.76*b16+14.76*a17+14.76*b17+14.76*a18+14.76*b18+14.76*a19+14.76*b19+14.76*a20+14.76*b20+14.76*a21+14.76*b21+14.76*a22+14.76*b22+14.76*a23+14.76*b23+14.76*a24+14.76*b24 - -set mode/last verify - -! Allow PPL POLYGON after a POLY/SET (previously was PPL FILLPOL) -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_ppl_poly.jnl -! err570_ppl_poly.jnl - -! bug 959 -! When we use polygon/set; ppl shakey; ppl polygon -! to control the vector key, the numerical labels on -! the key disappear. (allow PPL POLYGON as well as -! PPL FILLPOL after a POLY/SET) - -let xsqr = YSEQUENCE({0,.1,.1,0}) -let ysqr = YSEQUENCE({0,0,.1,.1}) - -let ypts = x/10 -let xpts = cos(x/10) - -polygon/trans/i=1:100/nolable/set xpts+xsqr, ypts+ysqr, x*x/10 -ppl shakey 1, 1, .1 -ppl polygon - -! Fix formatting of coordinates on LIST/FORMAT=tab or /FORMAT=comma -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_list_tab_coords.jnl -! err570_list_tab_coords.jnl -! acm 9/7/04 -! LIST/FORMAT=tab or /FORMAT=comma listed -! coordinates in a fixed format not sufficient -! to distinguish finely spaced coordinates - -def axis/x=100:100.25:0.05/units=deg xax -def axis/y=0.11:0.25:0.018/units=deg yax -let aa = (x[gx=xax] + y[gy=yax])/100 -list/form=tab aa - VARIABLE : (X[GX=XAX] + Y[GY=YAX])/100 - BAD FLAG : -1.E+34 - SUBSET : 6 by 9 points (LONGITUDE-LATITUDE) - 100E 100E 100.1E 100.2E 100.2E 100.3E -0.11N 1.0011 1.0016 1.0021 1.0026 1.0031 1.0036 -0.128N 1.00128 1.00178 1.00228 1.00278 1.00328 1.00378 -0.146N 1.00146 1.00196 1.00246 1.00296 1.00346 1.00396 -0.164N 1.00164 1.00214 1.00264 1.00314 1.00364 1.00414 -0.182N 1.00182 1.00232 1.00282 1.00332 1.00382 1.00432 -0.2N 1.002 1.0025 1.003 1.0035 1.004 1.0045 -0.218N 1.00218 1.00268 1.00318 1.00368 1.00418 1.00468 -0.236N 1.00236 1.00286 1.00336 1.00386 1.00436 1.00486 -0.254N 1.00254 1.00304 1.00354 1.00404 1.00454 1.00504 -def axis/x=100:100.11:0.033/units=deg xax -list/form=comma aa - VARIABLE : (X[GX=XAX] + Y[GY=YAX])/100 - BAD FLAG : -1.E+34 - SUBSET : 4 by 9 points (LONGITUDE-LATITUDE) - 100E ,100E ,100.1E ,100.1E -0.11N,1.0011,1.00143,1.00176,1.00209 -0.128N,1.00128,1.00161,1.00194,1.00227 -0.146N,1.00146,1.00179,1.00212,1.00245 -0.164N,1.00164,1.00197,1.0023,1.00263 -0.182N,1.00182,1.00215,1.00248,1.00281 -0.2N,1.002,1.00233,1.00266,1.00299 -0.218N,1.00218,1.00251,1.00284,1.00317 -0.236N,1.00236,1.00269,1.00302,1.00335 -0.254N,1.00254,1.00287,1.0032,1.00353 - -! Fix bug in HASH_CX for large numbers of varibles -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_many_variables.jnl -! err570_many_variables.jnl -! 27-sep-2004 ACM -! See bug 993 - -! Script derived from Jean Newman script where she -! opens up many files and defines a bunch of variables. - -! Jean Newman's script opens 25 data files, defines over 200 variables, and uses -! very long strings. It uses string functions to break up a long string -! describing the data into reasonable length lines for labels, inserting -! linebreak character. Crashes with seg fault or with messages like this: -! -! yes? load str4a -! Subscript out of range on file re_assign_variable.F, line 78, procedure -! re_assign_variable. -! Subscript number 1 has value -111 in array mv_flink. -! -! (different errors if we define a slightly different number of variables or list -! some of them, causing them to be evaluated in a different order.) Generally -! crashes on execution of a string function. -! -! See ~ansley/ans_ferret/users/jnewman/facts/x_r.jnl -! ~ansley/ans_ferret/users/jnewman/facts/example_crash.jnl -! -!set mode diag - -DEFINE SYMBOL SOURCE_LIST = Mw 9.2, 14.76*a12+14.76*b12+14.76*a13+14.76*b13+14.76*a14+14.76*b14+14.76*a15+14.76*b15+14.76*a16+14.76*b16+14.76*a17+14.76*b17+14.76*a18+14.76*b18+14.76*a19+14.76*b19+14.76*a20+14.76*b20+14.76*a21+14.76*b21+14.76*a22+14.76*b22+14.76*a23+14.76*b23 - - -! set data "facts/s_1936_533.nc" -LET TOTAL_TIMESTEPS = 420 -LET HA12 = 14.76 * HA[D=s_1936_533.nc] -LET AA12 = SLAT[D=s_1936_533.nc] -LET OA12 = SLON[D=s_1936_533.nc] -LET SA12 = 245 -LET DA12 = 15 -LET HB12 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_1939_529.NC] -LET AB12 = SLAT[D=s_1936_533.nc] !! [D=S_1939_529.NC] -LET OB12 = SLON[D=s_1936_533.nc] !! [D=S_1939_529.NC] -LET SB12 = 245 -LET DB12 = 15 -LET HA13 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_1950_537.NC] -LET AA13 = SLAT[D=s_1936_533.nc] !! [D=S_1950_537.NC] -LET OA13 = SLON[D=s_1936_533.nc] !! [D=S_1950_537.NC] -LET SA13 = 245 -LET DA13 = 15 -LET HB13 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_1953_533.NC] -LET AB13 = SLAT[D=s_1936_533.nc] !! [D=S_1953_533.NC] -LET OB13 = SLON[D=s_1936_533.nc] !! [D=S_1953_533.NC] -LET SB13 = 245 -LET DB13 = 15 -LET HA14 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_1964_541.NC] -LET AA14 = SLAT[D=s_1936_533.nc] !! [D=S_1964_541.NC] -LET OA14 = SLON[D=s_1936_533.nc] !! [D=S_1964_541.NC] -LET SA14 = 250 -LET DA14 = 15 -LET HB14 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_1967_537.NC] -LET AB14 = SLAT[D=s_1936_533.nc] !! [D=S_1967_537.NC] -LET OB14 = SLON[D=s_1936_533.nc] !! [D=S_1967_537.NC] -LET SB14 = 250 -LET DB14 = 15 -LET HA15 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_1979_544.NC] -LET AA15 = SLAT[D=s_1936_533.nc] !! [D=S_1979_544.NC] -LET OA15 = SLON[D=s_1936_533.nc] !! [D=S_1979_544.NC] -LET SA15 = 253 -LET DA15 = 15 -LET HB15 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_1981_539.NC] -LET AB15 = SLAT[D=s_1936_533.nc] !! [D=S_1981_539.NC] -LET OB15 = SLON[D=s_1936_533.nc] !! [D=S_1981_539.NC] -LET SB15 = 253 -LET DB15 = 15 -LET HA16 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_1994_546.NC] -LET AA16 = SLAT[D=s_1936_533.nc] !! [D=S_1994_546.NC] -LET OA16 = SLON[D=s_1936_533.nc] !! [D=S_1994_546.NC] -LET SA16 = 256 -LET DA16 = 15 -LET HB16 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_1996_542.NC] -LET AB16 = SLAT[D=s_1936_533.nc] !! [D=S_1996_542.NC] -LET OB16 = SLON[D=s_1936_533.nc] !! [D=S_1996_542.NC] -LET SB16 = 256 -LET DB16 = 15 -LET HA17 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2009_548.NC] -LET AA17 = SLAT[D=s_1936_533.nc] !! [D=S_2009_548.NC] -LET OA17 = SLON[D=s_1936_533.nc] !! [D=S_2009_548.NC] -LET SA17 = 253 -LET DA17 = 15 -LET HB17 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2011_544.NC] -LET AB17 = SLAT[D=s_1936_533.nc] !! [D=S_2011_544.NC] -LET OB17 = SLON[D=s_1936_533.nc] !! [D=S_2011_544.NC] -LET SB17 = 253 -LET DB17 = 15 -LET HA18 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2023_551.NC] -LET AA18 = SLAT[D=s_1936_533.nc] !! [D=S_2023_551.NC] -LET OA18 = SLON[D=s_1936_533.nc] !! [D=S_2023_551.NC] -LET SA18 = 247 -LET DA18 = 15 -LET HB18 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2026_547.NC] -LET AB18 = SLAT[D=s_1936_533.nc] !! [D=S_2026_547.NC] -LET OB18 = SLON[D=s_1936_533.nc] !! [D=S_2026_547.NC] -LET SB18 = 247 -LET DB18 = 15 -LET HA19 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2036_555.NC] -LET AA19 = SLAT[D=s_1936_533.nc] !! [D=S_2036_555.NC] -LET OA19 = SLON[D=s_1936_533.nc] !! [D=S_2036_555.NC] -LET SA19 = 240 -LET DA19 = 15 -LET HB19 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2040_551.NC] -LET AB19 = SLAT[D=s_1936_533.nc] !! [D=S_2040_551.NC] -LET OB19 = SLON[D=s_1936_533.nc] !! [D=S_2040_551.NC] -LET SB19 = 240 -LET DB19 = 15 -LET HA20 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2049_560.NC] -LET AA20 = SLAT[D=s_1936_533.nc] !! [D=S_2049_560.NC] -LET OA20 = SLON[D=s_1936_533.nc] !! [D=S_2049_560.NC] -LET SA20 = 236 -LET DA20 = 15 -LET HB20 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2053_556.NC] -LET AB20 = SLAT[D=s_1936_533.nc] !! [D=S_2053_556.NC] -LET OB20 = SLON[D=s_1936_533.nc] !! [D=S_2053_556.NC] -LET SB20 = 236 -LET DB20 = 15 -LET HA21 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2062_565.NC] -LET AA21 = SLAT[D=s_1936_533.nc] !! [D=S_2062_565.NC] -LET OA21 = SLON[D=s_1936_533.nc] !! [D=S_2062_565.NC] -LET SA21 = 236 -LET DA21 = 15 -LET HB21 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2067_561.NC] -LET AB21 = SLAT[D=s_1936_533.nc] !! [D=S_2067_561.NC] -LET OB21 = SLON[D=s_1936_533.nc] !! [D=S_2067_561.NC] -LET SB21 = 236 -LET DB21 = 15 -LET HA22 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2075_570.NC] -LET AA22 = SLAT[D=s_1936_533.nc] !! [D=S_2075_570.NC] -LET OA22 = SLON[D=s_1936_533.nc] !! [D=S_2075_570.NC] -LET SA22 = 236 -LET DA22 = 15 -LET HB22 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2080_566.NC] -LET AB22 = SLAT[D=s_1936_533.nc] !! [D=S_2080_566.NC] -LET OB22 = SLON[D=s_1936_533.nc] !! [D=S_2080_566.NC] -LET SB22 = 236 -LET DB22 = 15 -LET HA23 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2089_575.NC] -LET AA23 = SLAT[D=s_1936_533.nc] !! [D=S_2089_575.NC] -LET OA23 = SLON[D=s_1936_533.nc] !! [D=S_2089_575.NC] -LET SA23 = 236 -LET DA23 = 15 -LET HB23 = 14.76 * HA[D=s_1936_533.nc] !! [D=S_2094_571.NC] -LET AB23 = SLAT[D=s_1936_533.nc] !! [D=S_2094_571.NC] -LET OB23 = SLON[D=s_1936_533.nc] !! [D=S_2094_571.NC] -LET SB23 = 236 -LET DB23 = 15 -LET HA_LC = HA12+HB12+HA13+HB13+HA14+HB14+HA15+HB15+HA16+HB16+HA17+HB17+HA18+HB18+HA19+HB19+HA20+HB20+HA21+HB21+HA22+HB22+HA23+HB23 -LET HA_LC_TPLV = 64 -LET HA_LC_T1DLV = 16 -LET HA_LC_BTLV = -64 -LET HA_LC_B1DLV = -16 -LET HA_LC_SCL = 10 -LET UA_LC = UA12+UB12+UA13+UB13+UA14+UB14+UA15+UB15+UA16+UB16+UA17+UB17+UA18+UB18+UA19+UB19+UA20+UB20+UA21+UB21+UA22+UB22+UA23+UB23 -LET UA_LC_TPLV = 8 -LET UA_LC_T1DLV = 0.64 -LET UA_LC_BTLV = -8 -LET UA_LC_B1DLV = -0.64 -LET UA_LC_SCL = 1000 -LET VA_LC = VA12+VB12+VA13+VB13+VA14+VB14+VA15+VB15+VA16+VB16+VA17+VB17+VA18+VB18+VA19+VB19+VA20+VB20+VA21+VB21+VA22+VB22+VA23+VB23 -LET VA_LC_TPLV = 8 -LET VA_LC_T1DLV = 0.64 -LET VA_LC_BTLV = -8 -LET VA_LC_B1DLV = -0.64 -LET VA_LC_SCL = 1000 -LET SPEED = (UA_LC^2 + VA_LC^2) ^ 0.5 -LET SPEED_TPLV = 40 -LET SPEED_1DLV = 16 -LET SPEED_SCL = 100 -LET MAX_SPEED = SPEED[L=1:420@MAX] -LET MAX_SPEED_TPLV = 40 -LET MAX_SPEED_1DLV = 16 -LET MAX_SPEED_SCL = 10 -LET MAX_ALL = HA_LC[L=1:420@MAX] -LET MIN_MASK = IF MAX_ALL GT .001 THEN 1 -LET MAX_WAVE = MAX_ALL*MIN_MASK -LET MAX_WAVE_TPLV = 500 -LET MAX_WAVE_1DLV = 400 -LET MAX_WAVE_SCL = 10 -LET SIG_WAVE = HA_LC[L=1:420] - MAX_WAVE -LET MAX_TTIME = SIG_WAVE[L=1:420@LOC:0] -LET THRESHOLD_PRCNT = .30 -LET NOISE_MASK = IF HA_LC[L=1:420] LE MAX_ALL*THRESHOLD_PRCNT THEN 0 ELSE 1 -LET ON_MASK = IF NOISE_MASK[L=1:420@RSUM] GE 1 THEN 0.5 -LET OFF_EVENTS = IF NOISE_MASK - NOISE_MASK[L=1:420@SHF:-1] LT 0 THEN 1 ELSE 0 -LET OFF_MASK = IF OFF_EVENTS[L=1:420@RSUM] LT 1 THEN 0.5 -LET WAVE1 = (ON_MASK+OFF_MASK)*HA_LC[L=1:420] -LET FIRST_WAVE = WAVE1[L=1:420@MAX]*MIN_MASK -LET FIRST_WAVE_TPLV = 500 -LET FIRST_WAVE_1DLV = 400 -LET FIRST_WAVE_SCL = 10 -LET SIG_WAVE1 = WAVE1[L=1:420] - FIRST_WAVE -LET FIRST_TTIME = SIG_WAVE1[L=1:420@LOC:0] -LET DTOR = 0.017453 -LET FAULT_LENGTH = 50 -LET FAULT_WIDTH = 50 -LET BO1 = SRCO-FAULT_LENGTH*COS((270-STRK)*DTOR)/111.32/COS(SRCA*DTOR) -LET BA1 = SRCA-FAULT_LENGTH*SIN((270-STRK)*DTOR)/111.32 -LET BO4 = SRCO+FAULT_LENGTH*COS((270-STRK)*DTOR)/111.32/COS(SRCA*DTOR) -LET BA4 = SRCA+FAULT_LENGTH*SIN((270-STRK)*DTOR)/111.32 -LET BO2 = BO1+FAULT_WIDTH*COS(DIP*DTOR)*SIN((270-STRK)*DTOR)/111.32/COS(SRCA*DTOR) -LET BA2 = BA1-FAULT_WIDTH*COS(DIP*DTOR)*COS((270-STRK)*DTOR)/111.32 -LET BO3 = BO4+FAULT_WIDTH*COS(DIP*DTOR)*SIN((270-STRK)*DTOR)/111.32/COS(SRCA*DTOR) -LET BA3 = BA4-FAULT_WIDTH*COS(DIP*DTOR)*COS((270-STRK)*DTOR)/111.32 -LET SRC_LAT = {53.307,52.9,53.687,53.28,54.076,53.654,54.36,53.93,54.596,54.16,54.83,54.4,55.133,54.72,55.509,55.12,55.97,55.598,56.473,56.1,56.975,56.603,57.512,57.14} -LET SRC_LON = {193.63,193.94,194.97,195.29,196.43,196.69,197.9,198.12,199.43,199.62,200.88,201.11,202.26,202.57,203.6,204,204.9,205.34,206.21,206.66,207.54,207.99,208.94,209.4} -LET NSRCS = 24 -LET MX_MX = 474.27 -LET MXTOP = IF MX_MX GT HA_LC_T1DLV THEN MX_MX ELSE HA_LC_TPLV -LET MN_MN = -284.33 -LET MXBOT = IF MN_MN LT HA_LC_B1DLV THEN MN_MN ELSE HA_LC_BTLV -LET SL_X = 0. -LET SL_X2 = 7.207 -LET SL_Y = 5.518+.26 -LET TIT_X = 7.207/2 -LET TIT_Y = 5.518+.85 -LET TSUCHR = 0.09 -LET NTSULNS = IF 1 THEN 3 ELSE 2 -LET NCTSULNS = 85 - -let str1a = STRLEN("($source_list)") - !-> DEFINE VARIABLE str1a = STRLEN("Mw 9.2, 14.76*a12+14.76*b12+14.76*a13+14.76*b13+14.76*a14+14.76*b14+14.76*a15+14.76*b15+14.76*a16+14.76*b16+14.76*a17+14.76*b17+14.76*a18+14.76*b18+14.76*a19+14.76*b19+14.76*a20+14.76*b20+14.76*a21+14.76*b21+14.76*a22+14.76*b22+14.76*a23+14.76*b23") -let lstr1 = STRLEN("+") - -let str2a = STRLEN("{193.63,193.94,194.97,195.29,196.43,196.69,197.9,198.12,199.43,199.62,200.88,201.11,202.26,202.57,203.6,204,204.9,205.34,206.21,206.66,207.54,207.99,208.94,209.4}") -list str2a - VARIABLE : STRLEN("{193.63,193.94,194.97,195.29,196.43,196.69,197.9,198.12,199.43,199.62,200.88,201.11,202.26,202.57,203.6,204,204.9,205.34,206.21,206.66,207.54,207.99,208.94,209.4}") - 162.000 - -def sym aLIST = Mw 9.2, 14.76*a12+14.76*b12+14.76*a13+14.7 - -let lstr2 = STRLEN("($alist)") - !-> DEFINE VARIABLE lstr2 = STRLEN("Mw 9.2, 14.76*a12+14.76*b12+14.76*a13+14.7") - -let str3a = STRLEN("($source_list)") - !-> DEFINE VARIABLE str3a = STRLEN("Mw 9.2, 14.76*a12+14.76*b12+14.76*a13+14.76*b13+14.76*a14+14.76*b14+14.76*a15+14.76*b15+14.76*a16+14.76*b16+14.76*a17+14.76*b17+14.76*a18+14.76*b18+14.76*a19+14.76*b19+14.76*a20+14.76*b20+14.76*a21+14.76*b21+14.76*a22+14.76*b22+14.76*a23+14.76*b23") -list str3a - VARIABLE : STRLEN("Mw 9.2, 14.76*a12+14.76*b12+14.76*a13+14.76*b13+14.76*a14+14.76*b14+14.76*a15+14.76*b15+14.76*a16+14.76*b16+14.76*a17+14.76*b17+14.76*a18+14.76*b18+14.76*a19+14.76*b19+14.7 - 247.000 - -!let a = 12; list a - -LET STR3 = STRLEN("abcd") -list str3 - VARIABLE : STRLEN("abcd") - 4.00000 - -let str4a = STRLEN("($source_list)") - !-> DEFINE VARIABLE str4a = STRLEN("Mw 9.2, 14.76*a12+14.76*b12+14.76*a13+14.76*b13+14.76*a14+14.76*b14+14.76*a15+14.76*b15+14.76*a16+14.76*b16+14.76*a17+14.76*b17+14.76*a18+14.76*b18+14.76*a19+14.76*b19+14.76*a20+14.76*b20+14.76*a21+14.76*b21+14.76*a22+14.76*b22+14.76*a23+14.76*b23") - -list str4a - VARIABLE : STRLEN("Mw 9.2, 14.76*a12+14.76*b12+14.76*a13+14.76*b13+14.76*a14+14.76*b14+14.76*a15+14.76*b15+14.76*a16+14.76*b16+14.76*a17+14.76*b17+14.76*a18+14.76*b18+14.76*a19+14.76*b19+14.7 - 247.000 - - -! Fix bug in @CNNN within multi-line labels -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_cnnn_multiline.jnl -! Changing pen with @Cnnn did not work in -! multi-line labels - -plot/hl=0:1/vl=0:1/vs 0,0 -label 0.2, 0.7, 0, 0, 0.2, "@p2This@P3works@p4fine." -label 0.5, 0.7, 0, 0, 0.2, "@C002this@c003does@C004not." -label 0.8, 0.7, 0, 0, 0.2, "@C002thisdoesnot @C004either." - -label 0.1, 0.3, 0, 0, 0.2, "greek@SGt@SR_yworks" - -! For a very fine grid, coordinates not listed with enough precision. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_fine_grid_list.jnl -! err570_fine_grid_list.jnl -! ACM 10/2004 -! ACM 6/2007 CANCEL LIST/PREC at the end to restore the default state. - -! For a very fine grid in longitude and latitude, the coordinates -! are not listed with enough precision to resolve them. - - -let hlon= {204.89923, 204.89975, 204.90025, 204.90076, 204.90126} -let hlat = { 19.70020, 19.70071, 19.70122, 19.70173, 19.70223, 19.70274} - -def axis/x/units=lon xfine = hlon -def axis/y/units=lat yfine = hlat - -let myvar = x[gx=xfine] + y[gy=yfine] - -set list/prec=8 -list/form=tab myvar - VARIABLE : X[GX=XFINE] + Y[GY=YFINE] - BAD FLAG : -1.E+34 - SUBSET : 5 by 6 points (LONGITUDE-LATITUDE) - 155.1W 155.1W 155.1W 155.1W 155.1W -19.7N 224.59943 224.59995 224.60045 224.60096 224.60146 -19.7N 224.59994 224.60046 224.60096 224.60147 224.60197 -19.7N 224.60045 224.60097 224.60147 224.60198 224.60248 -19.7N 224.60096 224.60148 224.60198 224.60249 224.60299 -19.7N 224.60146 224.60198 224.60248 224.60299 224.60349 -19.7N 224.60197 224.60249 224.60299 224.6035 224.604 - -set list/prec=8 -list/form=comma myvar - VARIABLE : X[GX=XFINE] + Y[GY=YFINE] - BAD FLAG : -1.E+34 - SUBSET : 5 by 6 points (LONGITUDE-LATITUDE) - 155.1W ,155.1W ,155.1W ,155.1W ,155.1W -19.7N,224.59943,224.59995,224.60045,224.60096,224.60146 -19.7N,224.59994,224.60046,224.60096,224.60147,224.60197 -19.7N,224.60045,224.60097,224.60147,224.60198,224.60248 -19.7N,224.60096,224.60148,224.60198,224.60249,224.60299 -19.7N,224.60146,224.60198,224.60248,224.60299,224.60349 -19.7N,224.60197,224.60249,224.60299,224.6035,224.604 - -list/clobber/head=enh/form=(f9.5)/file=fine.dat myvar -sp cat fine.dat - VARIABLE : X[GX=XFINE] + Y[GY=YFINE] - LONGITUDE: 155.1W(204.9) to 155.1W(204.9) - LATITUDE : 19.7N to 19.7N - GEOMETRY: XY - SIZE: 5 6 - FORTRAN FORMAT: (f9.5) - MISSING VALUES FLAG: -1.0000000E+34 -X COORDINATES: degrees_east -204.89923 -204.89975 -204.90025 -204.90076 -204.90126 -Y COORDINATES: degrees_north - 19.70020 - 19.70071 - 19.70122 - 19.70173 - 19.70223 - 19.70274 -DATA: -224.59943 -224.59995 -224.60045 -224.60096 -224.60146 -224.59994 -224.60046 -224.60096 -224.60147 -224.60197 -224.60045 -224.60097 -224.60147 -224.60198 -224.60248 -224.60096 -224.60148 -224.60198 -224.60249 -224.60299 -224.60146 -224.60198 -224.60248 -224.60299 -224.60349 -224.60197 -224.60249 -224.60299 -224.60350 -224.60400 -sp rm -f fine.dat - -cancel list/precision - -! Range includes just one coordinate point on the axis -! Plot using /HLIM -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_hlimit_onepoint -!err570_hlimit_onepoint.jnl -! 15-Oct-2004 ACM - -! range includes just one coordinate point on the axis -! Fix so we can plot this with /HLIMIT (previously gave -! misleading error) -! If no /HLIMIT, should issue an error - -set mode ignore_error - -use coads_vwnd -set reg/x=180:200/y=35:45/t=1-jan-1985:1-feb-1985 -plot/sym/siz=0.3/hlim="1-jan-1985 18": "1-feb-1985 20" 0*t[gt=vwnd] - -plot/sym/siz=0.3 0*t[gt=vwnd] -set mode/last ignore_error - -! Regridding between Gregorian and Julian time axes with @NRST -! caused a segfault. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_index111.jnl -! err570_index111.jnl -! 3-nov-04 ACM -! Fixes for bug 1049. -! -! See ~ansley/ans_ferret/users/wittenberg/bug1049.jnl -! This was due to a bug in the fix for bug 562. In -! that fix we allowed subscripts of -111 when there -! was a range of subscripts including that value. -! The fix didnt correctly distinguish between that -! case and -111 used as the missing-integer flag. - - -DEF AXIS/T/UNITs=days/T0="01-JAN-1979 00:00:00"/CAL=gregorian \ - tgreg = {6590.5,6620.0,6649.5,6680.0,6710.5,6741.0,6771.5,\ - 6802.5,6833.0,6863.5,6894.0,6924.5,6955.5,6985.0,7014.5,\ - 7045.0,7075.5,7106.00} -DEF AXIS/T/UNITS=hours/t0="01-JAN-1900 00:00:00"/CAL=julian \ - tjul = { 850692,851400,852108,852840,853572,854304,855036,\ - 855780,856512,857244,857976,858708} - -LET s1 = T[GT=tgreg] -LET s2 = T[GT=tjul] - -LIST/T=1-jan-1997:1-jan-1998 s2[GT=s1@NRST] - VARIABLE : T[GT=TJUL] - regrid: on T@NRST - SUBSET : 12 points (TIME) - 16-JAN-1997 12 / 1: 850692. - 15-FEB-1997 00 / 2: 851400. - 16-MAR-1997 12 / 3: 852108. - 16-APR-1997 00 / 4: 852840. - 16-MAY-1997 12 / 5: 853572. - 16-JUN-1997 00 / 6: 854304. - 16-JUL-1997 12 / 7: 855036. - 16-AUG-1997 12 / 8: 855780. - 16-SEP-1997 00 / 9: 856512. - 16-OCT-1997 12 / 10: 857244. - 16-NOV-1997 00 / 11: 857976. - 16-DEC-1997 12 / 12: 858708. - - -! Data has missing value flag of NaN. Under linux, SHOW DATA/FULL -! crashed on trying to format value for the output buffer. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_sh_dat_nan.jnl -! err570_sh_dat_nan.jnl -! 4-Nov-2004 acm - -! See bug 1070. -! Data has missing value flag of NaN. Under linux, SHOW DATA/FULL -! crashed on trying to format value for the output buffer. - -use nan_missing.nc -show data/full - currently SET data sets: - 1> ./data/nan_missing.nc (default) - NCEP Ocean Analysis - name title I J K L - TEMP temperature 1:1 1:1 1:19 1:1 - degree_Celsius on grid GGH1 with -1.E+34 & NaN for missing data - X=139.75E:140.75E Y=0.5S:0.5N Z=0:375 - - time range: 15-FEB-1980 12:00 - - - -! Time reqest out of range on NOLEAP axes. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_time_range.jnl -! err570_time_range.jnl bug1080 -! time request out of range with calendar axis and RETURN= - -def axis/t="16-Jan-1861 12:00:00":"16-mar-1881 12:00:00":1/units=months/calendar=noleap tax -let a = t[gt=tax] -save/clob/file=aa.nc a -save/clob/file=cc.nc a -use aa -use cc - -define grid/like=a[d=1] var1_grid_ -let var1_ = a[d=1,t="16-Jan-1861 12:00:00"] -let var2_ = a[gx=var1_grid_,gy=var1_grid_,d=2,t="16-Jan-1861 12:00:00"] -set var/units="`a[d=1,t="16-Jan-1861 12:00:00"],return=units`" var1_ - !-> set var/units=" " var1_ -set var/units="`a[gx=var1_grid_,gy=var1_grid_,d=2,t="16-Jan-1861 12:00:00"],return=units`" var2_ - !-> set var/units=" " var2_ -! error message on this last command; noleap calendar not treated correctly. - -! Fix for bug 1066; error doing 2-D polygon overlaying -! a non-standard calendar axis -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_poly_over_julian.jnl -! err570_poly_over_julian.jnl -! ACM 11/12/04 - -! Bug 1066 -! Overlaying data on a Julian time axis got an error: -! Differing calendar axes: -! first variable is on JULIAN axis -! overlaid variable is on GREGORIAN axis - -use coads_climatology -set axis/CAL=JULIAN time -plot/x=140w/y=0 sst -plot/ov/vs/line=3 {400,900,900,400}, {25.5,25.5,26.5,25.5} -poly/ov/pal=green {400,900,900,400}, {25.5,25.5,26.5,25.5} - - -! Fix for bug 1077; return ERROR rather than NOTE when -! exiting from a script where query/ignore or other coached -! string substitution returns the user-given error message -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_coaching hello -! err570_coaching.jnl -! ACM 11/12/04 Bug 1077 - -! test this with GO err570_coaching hello - -! We are changing NOTE to ERROR in coached_str_sub -! when the script gives the user-defined error text. -! We still may have an ERROR and then NOTE to explain -! the list of valid arguments. - -set mode ignore_errors - -! incorrect argument with query/ignore -query/ignore $1%q|a|b|c|d|greetings|hello|goodbye" - -! Here are some lines from bn_symbols; the first and third now use ERROR instead of NOTE - -message/continue ($test2"really hello|bye|") - -set mode/last ignore_errors - -! Fix for bug 485: say ($0) in a script should return the -! name of the script -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_dollar_zero.jnl -! err570_dollar_zero.jnl -! (bug 485) Got a command syntax error; -! $0 in script should return the script name - -SET MODE ignore_error -SAY ($0) - !-> MESSAGE/CONTINUE err570_dollar_zero.jnl -err570_dollar_zero.jnl - -SET MODE/LAST ignore_error - -! Fix for bug 596; list/i=0:300:0 var crashed Ferret -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_illegal_stride.jnl -! err570_illegal_stride.jnl -! (bug 596) list/i=0:300:0 var crashed Ferret - -SET MODE ignore_error -use coads_climatology -list/l=1/j=40/i=0:300:0 sst - -SET MODE/LAST ignore_error - -! Fix for bug 1085; /THICK without color specifier caused all lines to revert to black -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_thick_colors.jnl -! err570_thick_colors.jnl bug1085 -! /THICK without color specifier causes all lines to revert to black - -PLOT/THICK/I=1:100 cos(i/20), sin(i/30) -PLOT/OVER/THICK=3/I=1:100 cos(i/30)*sin(i/20) -PLOT/OVER/THICK=1/I=1:100 cos(i/10), sin(i/50), cos(i/40)*sin(i/10) - -! time series -USE gtsa056_2 -PLOT/THICK/X=180/Y=0/K=1 temp -PLOT/OVER/THICK/X=180/Y=-1/K=1 temp -PLOT/OVER/THICK/X=180/Y=1/K=1 temp - -! plot/vs -PLOT/VS/LINE/THICK/I=1:314 i*cos(i/20), i*sin(i/20) -PLOT/OVER/VS/LINE/THICK/I=1:314 i*cos(i/18), i*sin(i/18) -PLOT/OVER/VS/LINE/THICK=3/I=1:314 i*cos(i/16), i*sin(i/16) -PLOT/OVER/VS/LINE/THICK=1/I=1:314 i*cos(i/14), i*sin(i/14) - - -! Fix for bug 1102: under linux, var[d=filename] fails if filename -! starts with a digit. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_digit_filename.jnl -! err570_digit_filename.jnl -! Bug 1102: under linux, var[d=filename] fails if filename -! starts with a digit. - -let a = x[i=1:10] -save/clobber/file=10a.nc a -can var/all -use 10a -list a[x=1:4,d=10a] - VARIABLE : X[I=1:10] - FILENAME : 10a.nc - SUBSET : 4 points (X) - 1 / 1: 1.000 - 2 / 2: 2.000 - 3 / 3: 3.000 - 4 / 4: 4.000 -list a[x=1:4,d=1] - VARIABLE : X[I=1:10] - FILENAME : 10a.nc - SUBSET : 4 points (X) - 1 / 1: 1.000 - 2 / 2: 2.000 - 3 / 3: 3.000 - 4 / 4: 4.000 - - -use coads_climatology -list a[x=1:4,d=1] - VARIABLE : X[I=1:10] - FILENAME : 10a.nc - SUBSET : 4 points (X) - 1 / 1: 1.000 - 2 / 2: 2.000 - 3 / 3: 3.000 - 4 / 4: 4.000 -list a[i=1:4,d=1] - VARIABLE : X[I=1:10] - FILENAME : 10a.nc - SUBSET : 4 points (X) - 1 / 1: 1.000 - 2 / 2: 2.000 - 3 / 3: 3.000 - 4 / 4: 4.000 - -list a[i=1:4,d=10a] - VARIABLE : X[I=1:10] - FILENAME : 10a.nc - SUBSET : 4 points (X) - 1 / 1: 1.000 - 2 / 2: 2.000 - 3 / 3: 3.000 - 4 / 4: 4.000 -list a[i=1:4,d=10a.nc] - VARIABLE : X[I=1:10] - FILENAME : 10a.nc - SUBSET : 4 points (X) - 1 / 1: 1.000 - 2 / 2: 2.000 - 3 / 3: 3.000 - 4 / 4: 4.000 - -! Fix for bug 1098: DODS URL label was cut off -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_dods_url_label.jnl -! err570_dods_url_label.jnl -! -! Bug 1098. Look for the label with the URL: it should include -! everything up to the last slash. -! acm 11/04 -! acm* 3/17 check the URL with TEST_OPENDAP befor trying to open it. - -!! Change to another dataset, our server down... -!!use "http://www.ferret.noaa.gov/cgi-bin/nph-nc/data/bn_strides.cdf" -!!sh data -!!plot/i=1/j=1 temp -!!ppl list labels - -!!set data "http://ferret.pmel.noaa.gov:8080/thredds/dodsC/data/COADS_climatology.nc" -!!sh data -!!plot/x=180/y=0 airt -!!ppl list labels - -!!set data "http://apdrc.soest.hawaii.edu/thredds/dodsC/woa/1994/annual" -!!sh data -!!plot/x=180/y=0 otemp -!!ppl list labels - -! Change to the OPeNDAP test server. -!!use "http://test.opendap.org/opendap/data/nc/coads_climatology.nc" -!!sh data -!!plot/x=180/y=0 sst -!!ppl list labels - -!! Change to another server, this one not working 3/2012 -!! use "http://iridl.ldeo.columbia.edu/SOURCES/.LEVITUS/.MONTHLY/.temp/dods" -!!sh data -!!plot/x=180/y=0/k=1 temp -!!ppl list labels - -! If we cant open this, just bail on the test -IF `test_opendap("http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/coads_climatology.nc") NE 0` THEN EXIT/SCRIPT - !-> IF 0 THEN EXIT/SCRIPT - -use "http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/coads_climatology.nc" -sh data - currently SET data sets: - 1> http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/coads_climatology.nc (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:12 - AIRT AIR TEMPERATURE 1:180 1:90 ... 1:12 - SPEH SPECIFIC HUMIDITY 1:180 1:90 ... 1:12 - WSPD WIND SPEED 1:180 1:90 ... 1:12 - UWND ZONAL WIND 1:180 1:90 ... 1:12 - VWND MERIDIONAL WIND 1:180 1:90 ... 1:12 - SLP SEA LEVEL PRESSURE 1:180 1:90 ... 1:12 - -plot/x=180/y=0 sst -ppl list labels - @ACSEA SURFACE TEMPERATURE - - @ASDeg C - - XPOS YPOS HGT ROT UNITS - LAB 1 0.000E+00 6.800E+00 0.120 0 SYSTEM @ASLONGITUDE : 179E - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - LAB 2 0.000E+00 6.600E+00 0.120 0 SYSTEM @ASLATITUDE : 1S - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - LAB 3 8.000E+00 6.550E+00 0.090 0 SYSTEM @ASDATA SET: coads_climatology - LINE PT: 0.000E+00 0.000E+00 NO LINE RIGHT JUSTIFY LABEL - LAB 4 8.000E+00 6.790E+00 0.058 0 SYSTEM @ASOPeNDAP URL: http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/ - LINE PT: 0.000E+00 0.000E+00 NO LINE RIGHT JUSTIFY LABEL - - -! Fix for bug 906: auto-formatting of labels on color keys loses precision -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_keylabels.jnl -! err570_keylabels.jnl -! 11/2004 - -! (bug 906) -! auto-formatting of labels on color keys loses precision -! key labels are 370, 371, 371, 372, 372, ... - -let a = 370 + x[x=1:10:1] + 0.2*y[y=1:10:1] -shade/lev=(370,382,0.5) a - -! Fix for bug 1130: error and crash on some systems polygon command -! where polygon arguments have latitude or longitude units -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err570_poly_lonlat_axis.jnl -! err570_poly_lonlat_axis.jnl -! 12/14/04 -! -! The polygon command gave error messages and under version 5.7 -! Symbol not found -! XFOR (I7,'LONE') -! and similarly for the y axis. -! -! RedHat 7 binary, under Debian 3.0 Linux the poly command crashes Ferret. - -LET XTRIANGLE = YSEQUENCE({-1,0,1}) -LET YTRIANGLE = YSEQUENCE({-1,1,-1}) -LET XPTS = 120+30*RANDU(I[i=1:10]) -LET YPTS = 30*RANDU(1+I[i=1:10]) -LET/title="longitude"/units="degrees_east" XT = XTRIANGLE+XPTS -LET/title="latitude"/units="degrees_north" YT = YTRIANGLE+YPTS -POLYGON XT, YT, I[I=1:10] - -! Add the same fix to plot_set_up.F for PLOT/VS commands - -PLOT/VS XT, YT - -! ******** V5.81 Additions below *********** - -GO bn_reset bn_inf_levels.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_inf_levels.jnl -GO bn_inf_levels.jnl -! Run FERRET/fer/ferretdods_gui -! test open upper and lower levels (-INF) (INF) - -can mode logo -set win/siz=0.4 - -use coads_climatology - -shade/set/lev=(-inf),(4,28,2)(inf) sst[l=1] -ppl shakey,1,0,-0.1,,,,,,`($ppl$ylen)+($ppl$yorg)+0.1` - !-> ppl shakey,1,0,-0.1,,,,,,7.5 -ppl shade - -can view - -! many levels: triangles forced to be 5% of total key length -! (add SHOW SYM LEV* to catch behavior of bug 1519 which -! did not plot color in the entire area for FILL plots.) - -set view left -fill/x=20e:150e/lev=(-inf),(4,28,0.5)(inf) sst[l=1] -sh sym lev* -LEV_ALL = "-2.8,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10,10.5,11,11.5,12,12.5,13,13.5,14,14.5,15,15.5,16,16.5,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,22.5,23,23.5,24,24.5,25,25.5,26,26.5,27,27.5,28,32" -LEV_TEXT = "(-INF),(4,28,0.5)(INF)" -LEV_MIN = "open-ended" -LEV_MAX = "open-ended" -LEV_NUM = "50" -LEV_DEL = "irregular" -LEV_CENTERED_LABELS = "off" - -set view right -shade/lev=(-inf),(4,28,0.5)(inf)/key=cont sst[l=1] -sh sym lev* -LEV_ALL = "-2.8,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10,10.5,11,11.5,12,12.5,13,13.5,14,14.5,15,15.5,16,16.5,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,22.5,23,23.5,24,24.5,25,25.5,26,26.5,27,27.5,28,32" -LEV_TEXT = "(-INF),(4,28,0.5)(INF)" -LEV_MIN = "open-ended" -LEV_MAX = "open-ended" -LEV_NUM = "50" -LEV_DEL = "irregular" -LEV_CENTERED_LABELS = "off" - - -can view - -! horizontal. - -set view upper -fill/x=20e:150e/set/lev=(-inf),(4,28,0.5)(inf)/y=0:90 sst[l=1] -ppl shakey,1,0,-0.1,10,,,,,`($ppl$ylen)+($ppl$yorg)+0.1` - !-> ppl shakey,1,0,-0.1,10,,,,,3.1 -ppl fill - -set view lower -shade/set/lev=(-inf),(4,28,0.5)(inf)/y=0:90/key=cont sst[l=1] -ppl shakey,1,0,-0.1,10,,,,,`($ppl$ylen)+($ppl$yorg)+0.1` - !-> ppl shakey,1,0,-0.1,10,,,,,3.1 -ppl shade - -! Some one-sided examples -can view - -fill/lev=(-2,28,1)(inf) sst[l=1] - -shade/set/lev=(-inf),(4,30,0.5)/key=cont/pal=rainbow sst[l=1] -ppl shakey,1,0,-0.1,10,,,,,`($ppl$ylen)+($ppl$yorg)+0.1` - !-> ppl shakey,1,0,-0.1,10,,,,,7.5 -ppl shade - -! Restore the default palette (bug in SHADE/SET/PAL= ?) -palette default - -let filler = missing(sst[l=1],-999) -shade/over/pal=black/nolab/lev=(-999,-999,-999) filler - -can view - -! polygon command - -let xsqr = YSEQUENCE({0,.1,.1,0}) -let ysqr = YSEQUENCE({0,0,.1,.1}) -let ypts = x/10 -let xpts = cos(x/10) - -polygon/trans/i=1:100/nolable/lev=(-inf)(200,900,50)(inf) xpts+xsqr, ypts+ysqr, x*x/10 - - -use coads_climatology -def axis/x=0:360:5 xq -def axis/y=-90:90:4 yq -let fsst = sst[l=1,gx=xq,gy=yq] - -let lon = xsequence(x[gx=xq] + 0*y[gy=yq]) -let lat = xsequence(0*x[gx=xq] + y[gy=yq]) -shade/nokey/pal=white/nolab/axes=0,0,0,0 fsst ! set up -go polymark poly/key/title="polygons"/lev=(-inf)(4,26,1)(inf), lon, lat, xsequence(fsst), square, 0.4 - - - -GO bn_reset bn_regulart.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regulart.jnl -GO bn_regulart.jnl -! bn_regulart.jnl -! 5/12/2005 ACM - -! Test of the USE/REGULART qualifier -! The axis is irregular in the first instance, and regular in the second - -use coads_vwnd -show axis tcoads - name axis # pts start end - TCOADS TIME 648 i 16-JAN-1946 12:00 16-DEC-1999 12:00 -T0 = 01-JAN-1700 00:00:00 - Axis span (to cell edges) = 19723 -list/l=1:6 t[gt=tcoads], tbox[gt=tcoads] - TIME: 01-JAN-1946 00:00 to 01-JUL-1946 00:00 - Column 1: T is T (axis TCOADS) - Column 2: TBOX is TBOX (axis TCOADS) - T TBOX -16-JAN-1946 12 / 1: 89865. 31.00 -15-FEB-1946 00 / 2: 89894. 28.00 -16-MAR-1946 12 / 3: 89924. 31.00 -16-APR-1946 00 / 4: 89954. 30.00 -16-MAY-1946 12 / 5: 89985. 31.00 -16-JUN-1946 00 / 6: 90015. 30.00 -can data/all - -use/regulart coads_vwnd -show axis tcoads - name axis # pts start end - TCOADS TIME 648 r 16-JAN-1946 12:00 16-DEC-1999 12:00 -T0 = 01-JAN-1700 00:00:00 - Axis span (to cell edges) = 19722.44 -list/l=1:6 t[gt=tcoads], tbox[gt=tcoads] - TIME: 01-JAN-1946 06:46 to 02-JUL-1946 21:31 - Column 1: T is T (axis TCOADS) - Column 2: TBOX is TBOX (axis TCOADS) - T TBOX -16-JAN-1946 / 1: 89865. 30.44 -15-FEB-1946 / 2: 89895. 30.44 -18-MAR-1946 / 3: 89925. 30.44 -17-APR-1946 / 4: 89956. 30.44 -18-MAY-1946 / 5: 89986. 30.44 -17-JUN-1946 / 6: 90017. 30.44 - - -GO bn_reset bn_labwid.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_labwid.jnl -GO bn_labwid.jnl -! LABWID returns the length in Denbo inches of the -! string. For multi-line strings, returns length of -! the longest line. - -! In pyFerret fonts, there must be an open window before we -! can query font information. The following is an error - -set mode ignore -LIST LABWID("aaaaabbbbb", .15) - VARIABLE : LABWID("aaaaabbbbb", .15) - X : 1 - 1.357 -cancel mode ignore - -go ptest -! Description: create a simple test line plot - -! spirograph picture ... -PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20) - - -label/nouser 0,3,-1,0,.15,"@P2@IILine1@IIA LONGER LINE" -let wid = labwid("@P2@IILine1@IIA LONGER LINE",.15) -label/nouser `wid`, 3, -1, 0, .15, "@P4@IIMulti-lineLength is longest of ALL linesLine three" - !-> PPL %LABEL/nouser 2.019230842590332, 3, -1, 0, .15, "@P4@IIMulti-lineLength is longest of ALL linesLine three" - -LIST LABWID("aaaaabbbbb", .10) - VARIABLE : LABWID("aaaaabbbbb", .10) - X : 1 - 0.9048 -LIST LABWID("aaaaabbbbbee", .15) - VARIABLE : LABWID("aaaaabbbbbee", .15) - X : 1 - 1.357 -LIST LABWID("eeaaaaabbbbb", .15) - VARIABLE : LABWID("eeaaaaabbbbb", .15) - X : 1 - 1.357 - - -LIST LABWID("@IISTRING", .15) - VARIABLE : LABWID("@IISTRING", .15) - X : 1 - 0.9808 -LIST LABWID("@SSSTRING", .15) - VARIABLE : LABWID("@SSSTRING", .15) - X : 1 - 0.9143 -LIST LABWID("@SSSTRING@IISTRING", .15) - VARIABLE : LABWID("@SSSTRING@IISTRING", .15) - X : 1 - 0.9808 -LIST LABWID("@IISTRING@SSSTRING", .15) - VARIABLE : LABWID("@IISTRING@SSSTRING", .15) - X : 1 - 0.9808 - -GO bn_reset bn_redefine_taxis_mc.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_redefine_taxis_mc.jnl -GO bn_redefine_taxis_mc.jnl -! bn_redefine_taxis_mc.jnl -! ACM 15-Apr-2005 - -! Redefine the time axis of a multi-file data set. -! Lets us fix a time axis, which may in fact be irregular, but -! the multi-file reading always makes into a regularly-spaced axis. - -set data coads_clim.des -list/x=180/y=0 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - DATA SET : COAD - FILENAME : coads_clim.des - SUBSET : 6 points (TIME) - LONGITUDE: 179E - LATITUDE : 1S - 179E - 80 - 16-JAN-1900 / 1: 28.20 - 15-FEB-1900 / 2: 28.36 - 18-MAR-1900 / 3: 28.35 - 17-APR-1900 / 4: 28.22 - 17-MAY-1900 / 5: 28.49 - 17-JUN-1900 / 6: 28.32 - -def sym taxisname `sst,return=taxis` - !-> def sym taxisname TIME14 - -def axis/t=1-mar-1990:6-mar-1990:1/units=days ($taxisname) - !-> def axis/t=1-mar-1990:6-mar-1990:1/units=days TIME14 -list/x=180/y=0 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - DATA SET : COAD - FILENAME : coads_clim.des - SUBSET : 6 points (TIME) - LONGITUDE: 179E - LATITUDE : 1S - 179E - 80 - 01-MAR-1990 00 / 1: 28.20 - 02-MAR-1990 00 / 2: 28.36 - 03-MAR-1990 00 / 3: 28.35 - 04-MAR-1990 00 / 4: 28.22 - 05-MAR-1990 00 / 5: 28.49 - 06-MAR-1990 00 / 6: 28.32 - -def axis/t=1:6:1 ($taxisname) - !-> def axis/t=1:6:1 TIME14 -list/x=180/y=0 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - DATA SET : COAD - FILENAME : coads_clim.des - SUBSET : 6 points (T) - LONGITUDE: 179E - LATITUDE : 1S - 179E - 80 - 1 / 1: 28.20 - 2 / 2: 28.36 - 3 / 3: 28.35 - 4 / 4: 28.22 - 5 / 5: 28.49 - 6 / 6: 28.32 - -GO bn_reset bn_illegal_axisname.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_illegal_axisname.jnl -GO bn_illegal_axisname.jnl -! Some OPenDAP HDF files have illegal axis names, e.g. with a dot in the name. -! This is a test of using such names, in a redefinition of the axes of the data. -! The file has a variable with axis names COADSX.ILLEGAL, COADSY.ILLEGAL. The axes contain -! just indices. The file also has variables NEW.LONGITUDES and NEW.LATITUDES which contain -! geographic coordinates that we want to substitute for the axes. - -use illeg_axname.nc -sh data - currently SET data sets: - 1> ./data/illeg_axname.nc (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:21 1:16 ... ... - NEW.LONGITUDES - X[GX=SST] 1:21 ... ... ... - NEW.LATITUDES - Y[GY=SST] ... 1:16 ... ... - -list/i=1:5 x[gx=sst] - VARIABLE : X - axis COADSX.ILLEGAL - FILENAME : illeg_axname.nc - SUBSET : 5 points (X) - 60 / 1: 60.00 - 61 / 2: 61.00 - 62 / 3: 62.00 - 63 / 4: 63.00 - 64 / 5: 64.00 -set view upper; shade sst - -define axis/x/modulo/units=degrees_east 'coadsx.illegal' = XSEQUENCE('NEW.LONGITUDES') -define axis/y/units=degrees_north 'coadsy.illegal' = XSEQUENCE('NEW.LATITUDES') - -list/i=1:5 x[gx=sst] - VARIABLE : X - axis 'COADSX.ILLEGAL' - FILENAME : illeg_axname.nc - SUBSET : 5 points (LONGITUDE) - 21E / 1: 21.00 - 23E / 2: 23.00 - 25E / 3: 25.00 - 27E / 4: 27.00 - 29E / 5: 29.00 -set view lower; shade sst -sh grid sst - GRID GEX1 - name axis # pts start end subset - 'COADSX.ILLEGAL' LONGITUDE 21mr 21E 61E full - 'COADSY.ILLEGAL' LATITUDE 16 r 35N 65N full - normal Z - normal T - -GO bn_reset bn_exit_script.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_exit_script.jnl -GO bn_exit_script.jnl -! bn_exit_script.jnl -! 5/2005 ACM -! tests of EXIT/SCRIPT command, in combination with IF and REPEAT -! 3/2007 add a check for exit/script within a loop (fixes for bug 1304) - -! Simple EXIT/SCRIPT command in a script -go exit_script_1 -! test exit/script - -exit/script - -! EXIT/SCRIPT from an IF clause -go exit_script_if -! test exit/script from an IF clause - -let a = 1 -if `a lt 10` then exit/script - !-> if 1 then exit/script - -! EXIT/SCRIPT inside REPEAT loop -go exit_script_loop -! test exit/script inside REPEAT loop - -repeat/i=3:5 (list/nohead i; exit/script) -!-> REPEAT: I=3 - 3.000 - -! EXIT/SCRIPT with IF clause and REPEAT loop -go exit_script_if_loop -! test exit/script with IF clause and REPEAT loop - -repeat/i=3:10:2 (list/nohead i; if `i ge 6` then exit/script) -!-> REPEAT: I=3 - 3.000 - !-> if 0 then exit/script -!-> REPEAT: I=5 - 5.000 - !-> if 0 then exit/script -!-> REPEAT: I=7 - 7.000 - !-> if 1 then exit/script - -! EXIT/SCRIPT two levels down -go exit_script_twolev -! test exit/script called another level down - -go exit_script_if -! test exit/script from an IF clause - -let a = 1 -if `a lt 10` then exit/script - !-> if 1 then exit/script - -say "returned from exit_script_if" -returned from exit_script_if -say "here is the next line" -here is the next line - -! EXIT/SCRIPT two levels down -go exit_script_twolev -! test exit/script called another level down - -go exit_script_if -! test exit/script from an IF clause - -let a = 1 -if `a lt 10` then exit/script - !-> if 1 then exit/script - -say "returned from exit_script_if" -returned from exit_script_if -say "here is the next line" -here is the next line - -! EXIT/SCRIPT from a script within a loop. -! Should see output from 3 repeats of the loop but not -! the SAY SCRIPT at each iteration of the repeat loop - -cancel mode verify -1 -loop -2 -loop -3 -loop - -GO bn_reset bn_exit_cycle.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_exit_cycle.jnl -GO bn_exit_cycle.jnl -! bn_exit_cycle.jnl -! 5/2005 ACM -! EXIT/CYCLE skips remaining commands in this repetition of a loop - -can mode ver -32 -64 -128 -256 -512 -1024 - - test exit/loop combined with exit/cycle -32 -64 -128 -256 -say 512 if bigger than 500 -512 -say 1024 if bigger than 500 -1024 -say 2048 if bigger than 500 -say 4096 if bigger than 500 -say 8192 if bigger than 500 -say 16384 if bigger than 500 - -loop finished 16384 gt 10000 - -GO bn_reset bn_curv_mod.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_curv_mod.jnl -GO bn_curv_mod.jnl -! bn_curv_mod -! Test of fill/mod and contour/mod -! 5/24/2005 Ferret v5.81 - -! The dataset is a portion of example tripolar grid. - -! use "/home/ja3/hankin/user/gfdl/tri_polar/mom4_grid_example.nc" -! save/clobber/file=tripolar_subset.nc geolon_vert_t[j=150:174], geolat_vert_t[j=150:174], ht[j=150:173] - -! Note that this coord data is actually cell edges and so -! isnt really what one would use for FILL and CONTOUR commands -- - -use tripolar_subset.nc ! Longitude range is -280 to 80 - -fill/mod/hlim=-180:180 ht, geolon_vert_t[i=1:180,j=1:24], geolat_vert_t[i=1:180,j=1:24] -contour/over/mod/hlim=-180:180 ht, geolon_vert_t[i=1:180,j=1:24], geolat_vert_t[i=1:180,j=1:24] - - -GO bn_reset bn_shade_keycont.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_shade_keycont.jnl -GO bn_shade_keycont.jnl -! Continuous shade key -! test setting it and whether default is restored on next command. -! also whether behavior consistent when we call shakey - -use ocean_atlas_temp -set region/x=130:290/y=-45:45 - -set view ul -shade/title="default shade key" temp[l=1] - -set view ur -shade/key=cont/title="shade/key=cont" temp[l=1] - -set view ll -shade/key=cont/title="cont key with shakey call"/set temp[l=1] - -let/quiet x1 = `($ppl$xorg)+0.1` - !-> DEFINE VARIABLE/quiet x1 = 1.3 -let/quiet y1 = `($ppl$yorg)+($ppl$ylen)+0.1` - !-> DEFINE VARIABLE/quiet y1 = 4.923 -let/quiet y2 = `($ppl$yorg)+($ppl$ylen)+0.5` - !-> DEFINE VARIABLE/quiet y2 = 5.323 - -ppl shakey ,0,-.12,2,,,`x1`,,`y1`,`y2` - !-> ppl shakey ,0,-.12,2,,,1.3,,4.923,5.323 -go unlabel 4 -go unlabel 5 -ppl shade -ppl list shakey - - DO KEY ORIENT LAB SIZE LAB INC LAB DIG LAB LEN - 1 0 -0.12 2 5 9 - - - X LO X HI Y LO Y HI - 1.30 6.31 4.92 5.32 - -set view lr -let/quiet x1 = `($ppl$xorg)+1` - !-> DEFINE VARIABLE/quiet x1 = 2.2 -let/quiet x2 = `($ppl$xorg)+($ppl$xlen)-1` - !-> DEFINE VARIABLE/quiet x2 = 5.212 -let/quiet y1 = `($ppl$yorg)` - !-> DEFINE VARIABLE/quiet y1 = 1.4 -shade/title="with shakey, restore default key style"/set temp[l=1] -ppl shakey ,0,-.12,3,,,`x1`,`x2`,`y1` - !-> ppl shakey ,0,-.12,3,,,2.2,5.212,1.4 -ppl shade - -can view - -set view ul -fill/title="default fill key" temp[l=1] - -set view ur -fill/key=cont/title="fill/key=cont" temp[l=1] - -set view ll -fill/key=cont/title="cont key with shakey call"/set temp[l=1] - -let/quiet x1 = `($ppl$xorg)+0.1` - !-> DEFINE VARIABLE/quiet x1 = 1.3 -let/quiet y1 = `($ppl$yorg)+($ppl$ylen)+0.1` - !-> DEFINE VARIABLE/quiet y1 = 4.923 -let/quiet y2 = `($ppl$yorg)+($ppl$ylen)+0.5` - !-> DEFINE VARIABLE/quiet y2 = 5.323 - -ppl shakey ,0,-.12,2,,,`x1`,,`y1`,`y2` - !-> ppl shakey ,0,-.12,2,,,1.3,,4.923,5.323 -go unlabel 4 -go unlabel 5 -ppl fill -ppl list shakey - - DO KEY ORIENT LAB SIZE LAB INC LAB DIG LAB LEN - 1 0 -0.12 2 5 9 - - - X LO X HI Y LO Y HI - 1.30 6.31 4.92 5.32 - -set view lr -let/quiet x1 = `($ppl$xorg)+1` - !-> DEFINE VARIABLE/quiet x1 = 2.2 -let/quiet x2 = `($ppl$xorg)+($ppl$xlen)-1` - !-> DEFINE VARIABLE/quiet x2 = 5.212 -let/quiet y1 = `($ppl$yorg)` - !-> DEFINE VARIABLE/quiet y1 = 1.4 -fill/title="with shakey, restore default key style"/set temp[l=1] -ppl shakey ,0,-.12,3,,,`x1`,`x2`,`y1` - !-> ppl shakey ,0,-.12,3,,,2.2,5.212,1.4 -ppl fill - -GO bn_reset bn581_bug_fixes.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn581_bug_fixes.jnl -GO bn581_bug_fixes.jnl -! bn581_bug_fixes.jnl -! test various fixes that went into version 5.81 -! 2/05 *acm* -! - -! Bug 1160 short axis with irreg bounds seen as regular. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_irreg_bounds.jnl -! err580_irreg_bounds.jnl -! Define a short irregular time axis with some time_bounds, -! and then read it into Ferret. When the file is read in, -! the bounds seem to be ignored; axis is seen as regular. -! Bug 1160 reported by Andrew. - -def ax/t/edge time = {0,1,3} -let a = t[gt=time] -show grid/t a - GRID (G002) - name axis # pts start end subset - normal X - normal Y - normal Z - TIME T 2 i 0.5 2 full - - L T TBOX TBOXLO - 1> 0.5 1 0 - 2> 2 2 1 - -save/clob/file=a.nc a -sp echo "err580_irreg_bounds.jnl --- " >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - -can data/all -can var/all -can mem - -! T axis was marked as regular -use a.nc -show grid/t a - GRID GSI1 - name axis # pts start end subset - normal X - normal Y - normal Z - TIME15 T 2 i 0.5 2 full - - L T TBOX TBOXLO - 1> 0.5 1 0 - 2> 2 2 1 - -! Bug 1179 Cartesian_axis and positive="down" resulted in depth axis not being recognized -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_cartesian_depth.jnl - ! err580_cartesian_depth.jnl -! cartesian_axis attribute -! combined with positive="down" -! caused the axis not to be recognized as a depth axis -! should be i- on the axis ZT - -use a_cartesian_bug1179.nc -sh grid temp - GRID GHU1 - name axis # pts start end subset - GRID_X_T LONGITUDE 1 r 79E 79E full - GRID_Y_T LATITUDE 1 r 0.25S 0.25S full - ZT DEPTH (m) 10 i- 22.5 158 full - TIME15 TIME 1mr 15-FEB-1900 03:00 15-FEB-1900 03:00 full - -! Bug 1181 Titles were truncated at 80 characters -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_long_title.jnl - - ! err580_long_title.jnl - ! Titles were truncated at 80 characters - -save/clobber/title="a long title longer than 80 characters a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789"/file=longtitle.nc x[x=1:10] - -sp echo "err580_long_title.jnl --- " >> all_ncdump.out -sp ncdump longtitle.nc >> all_ncdump.out - -! Bug 1180 Allow "use filename.des" -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_use_des.jnl -! err580_use_des.jnl -! Allow "use filename.des" (previously gave an "is this a CDF file?" error) - -use vary_scale.des -sh data - currently SET data sets: - 1> ./data/vary_scale.des (default) - name title I J K L - TT 1 + 0*T[GT=DAYT] ... ... ... 1:20 - - - -! Bug 1180 Allow "use filename.des" -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_use_des.jnl -! err580_use_des.jnl -! Allow "use filename.des" (previously gave an "is this a CDF file?" error) - -use vary_scale.des -sh data - currently SET data sets: - 1> ./data/vary_scale.des (default) - name title I J K L - TT 1 + 0*T[GT=DAYT] ... ... ... 1:20 - - -! fix for bug 1181: dataset title was limited to 80 characters. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_long_dsettitle.jnl -! err580_long_dsettitle -! fix for bug 1181 -! previously dataset title was limited to 80 characters. - -! File has a dataset title 1000 characters long. -use longtitle1000.nc -say `a,return=dsettitle` - !-> MESSAGE/CONTINUE -1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - -1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 - -! Set a dataset title over 80 characters. -save/title="a long title, longer than the previous limit of 80 characters. Previously various buffers were set to 80, and storage in ds_title was also too short. "/clobber/file=longtitle.nc a - -sp echo "err580_long_dsettitle.jnl --- " >> all_ncdump.out -sp ncdump longtitle.nc >> all_ncdump.out - -! fix for bug 1200:crash due to the long veckey format spec. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_long_veckey.jnl -! err580_long_veckey.jnl -! Bug 1200 The following caused a crash due to the long veckey format spec. - -vector/i=1:50/j=1:50/set j-20+(i-i),i-20+(j-j) - -ppl veckey,1,-3,,"(f4.0," x10^-^2 N m^-^2")" -ppl vector - -! restore the default setting -ppl veckey,0,0,,"(1PG10.3)" - -! fix for bug 1201: mistranslation of time region. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_cal360_region.jnl -! err580_cal360_region.jnl -! Wrong output region: the set region mistakenly tranlated - -def axis/t=15-apr-1990:15-apr-2000:15/units=days/t0=15-apr-1990/calendar=d360 tax -let a = t[gt=tax] -load a -set reg/t=15-apr-1990:15-apr-1991 -sho reg -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - T=15-APR-1990 00:00:00:15-APR-1991 00:00:0 - E/M is unspecified - F/N is unspecified - - -! fix for bug 1203: crash if time range left off. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_def_tax_norange.jnl -! err580_def_t_norange.jnl -! bug 1203. without the T range, these statements cause a STOP. - -SET MODE ignore -DEFINE AXIS/T0="1-JAN-1861"/UNITS=months/t myt - -DEFINE AXIS/T0="1-JAN-1861"/UNITS=months/T/CALENDAR=noleap myt - -! fix for bug 1207: closest distance and closest index transformations. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_cdb.jnl -! err580_cdb.jnl -! bug 1207 - -! Bug in closest distance and closest index transformations -! Code needs range below for CDB, CIB and above for CDA, CIA. -! Instead it asked for a range above AND below the specified index. -! So result is missing when it should not be. - -def axis/x=1:20:1 aax -let var = if mod(i,5) eq 1 then x[gx=aax] - -list var[i=15@cdb:5] - VARIABLE : IF MOD(I,5) EQ 1 THEN X[GX=AAX] - X : 15 (closest dist below by 5 pts) - 4.000 -list var[i=14@cdb:5] - VARIABLE : IF MOD(I,5) EQ 1 THEN X[GX=AAX] - X : 14 (closest dist below by 5 pts) - 3.000 - -! These returned MISSING data with the bug, should not be missing. - -list var[i=15@cdb:10] - VARIABLE : IF MOD(I,5) EQ 1 THEN X[GX=AAX] - X : 15 (closest dist below by 10 pts) - 4.000 -list var[i=15@cib:10] - VARIABLE : IF MOD(I,5) EQ 1 THEN X[GX=AAX] - X : 15 (closest index below by 10 pts) - 4.000 -list var[i=5@cda:10] - VARIABLE : IF MOD(I,5) EQ 1 THEN X[GX=AAX] - X : 5 (closest dist above by 10 pts) - 1.000 -list var[i=5@cia:10] - VARIABLE : IF MOD(I,5) EQ 1 THEN X[GX=AAX] - X : 5 (closest index above by 10 pts) - 1.000 - -! fix for bug 1214: crash on repeating a SET VIEW when viewport defined with /AXES -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_def_view_axes.jnl -! err580_def_view_axes.jnl -! BUG 1214 -! crashed with seg fault on the second SET VIEW v1 - -! Does not crash if we define viewports without the /AXES -! Does not crash if we CAN MODE META and SET MODE META -! between the two SET VIEW v1 -! Does not crash if we skip the SET WINDOW/CLEAR - -! Does not crash with Ferret v5.50 - -define view/x=0.2:0.4/y=.2:.4/axes v1 - -set window/clear -set mode metafile viewaxes.plt - -set view v1 -go ptest -! Description: create a simple test line plot - -! spirograph picture ... -PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20) - - -set window/clear - -can mode meta -set mode meta - -set view v1 -shade/i=1:12/j=1:12 i+j - -can mode metafile -sp rm -f viewaxes.plt* - - -! fix for bug 1205: symbol LEV_DEL wrong when single level specified -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_lev_del.jnl -! err580_lev_del.jnl -! demonstrates bug 1205; precision of LEV_DEL when single level specified. - -shade/lev=.4d/x=1:10/y=1:10 cos(i/10)*9*sin(j/5) -sh sym lev_del -LEV_DEL = "0.4" -show sym lev* -LEV_TEXT = ".4D" -LEV_MIN = "0.8" -LEV_MAX = "9.2" -LEV_NUM = "21" -LEV_DEL = "0.4" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "0.8,1.2,1.6,2,2.4,2.8,3.2,3.6,4,4.4,4.8,5.2,5.6,6,6.4,6.8,7.2,7.6,8,8.4,8.8,9.2" - -use coads_climatology -shade/l=1/lev=1.2d sst; sho sym lev_del -LEV_DEL = "1.2" - -show sym lev* -LEV_TEXT = "1.2D" -LEV_MIN = "-2.4" -LEV_MAX = "31.2" -LEV_NUM = "28" -LEV_DEL = "1.2" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "-2.4,-1.2,0,1.2,2.4,3.6,4.8,6,7.2,8.4,9.6,10.8,12,13.2,14.4,15.6,16.8,18,19.2,20.4,21.6,22.8,24,25.2,26.4,27.6,28.8,30,31.2" - -! Fix for bug 1174: strfloat_c("nonsense") gave result of 0 rather than missing. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_strfloat_errors.jnl -! err580_strfloat_errors.jnl -! Previously a nonsense input gave a result of 0. -! See bug 1174. - -let b = {"3.34", "0", "nonsense", "0.0", "153q51", "9..32", "7.e03", "3.2e-2"} -list/prec=6 strfloat(b) - VARIABLE : STRFLOAT(B) - SUBSET : 8 points (X) - 1 / 1: 3.34 - 2 / 2: 0.00 - 3 / 3: .... - 4 / 4: 0.00 - 5 / 5: 153.00 - 6 / 6: 9.00 - 7 / 7: 7000.00 - 8 / 8: 0.03 - -! Fixes for bugs 1249, 1250: uppercase not recognized for qualifier argument -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_arg_case.jnl -! err580_arg_case.jnl -! 5/2005 -! bugs 1249, 1250 -! -! key=CONTINUOUS and step=CONNECTED -! were not recognized if the value was in uppercase - -shade/key=cont/i=1:10/j=1:4 i-j -shade/key=CONT/i=1:10/j=1:4 i-j - -plot/step=conn/i=1:10 sin(i) -plot/step=CONN/i=1:10 sin(i) - - - -! Fixes for bugs 1019: kludge for CDC time axes made time origin incorrect on outputs -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_cdc_timeaxis.jnl -! err580_cdc_timeaxis.jnl -! 6/3/05 -! See comments under bug 1019. -! -! CDC time axes have the convention that if the start date is 1-jan-0001:00:00 then -! a shift of 2 days is made in year 1590. Ferret corrects for this by resetting the -! time origin back by 2 days. This is ok for internal time coordinate computations, -! but the time origin written to the user and in cdf files is incorrect: 30-dec-0000 -! -! fix this in the RETURN=t0, SHOW AXIS, SHOW/XML AXIS and SAVE commands -! -! CDC file, save a portion of it. Check that time origin is 0001-01-01 00:00:00 -! (it will not be unless the bug-fix version of Ferret writes the file.) - - -! set data "http://www.cdc.noaa.gov/cgi-bin/nph-nc/Datasets/ncep.pac.ocean/taux.mnmean.nc" -! save/clobber/file=cdc_timeaxis.nc/i=15/j=45 taux -! can data/all - - -def axis/t=1-jan-1990:1-feb-1990:1/units=days/t0="01-JAN-0001 00:00:00" tcdc -let a = sin(t[gt=tcdc]/10000) - -save/clobber/file=t0_cdc.nc a -can var/all -can axis tcdc -use t0_cdc - -sh axis tcdc - name axis # pts start end - TCDC TIME 32 r 30-DEC-1989 00:00 30-JAN-1990 00:00 -T0 = 01-JAN-0001 00:00:00 - Axis span (to cell edges) = 32 -save/clobber/file=my_cdc_timeaxis.nc/L=1:15 a -sp echo "err580_cdc_timeaxis.jnl --- " >> all_ncdump.out -sp ncdump -h my_cdc_timeaxis.nc >> all_ncdump.out -say `a,return=t0` - !-> MESSAGE/CONTINUE 01-JAN-0001 00:00:00 -01-JAN-0001 00:00:00 - -sp rm -f t0_cdc.nc -sp rm -f my_cdc_timeaxis.nc - - - -! Fix for bug 1272: show axis/t= with NOLEAP calendar -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err580_show_axis_t.jnl -! err580_show_axis_t -! bug 1272: wrong range shown when nonstd calendar -! 5/22/06 acm - - ! SHOW AXIS/T= gives wrong date when calendar not gregorian - -def axis/t=1-jan-2000:1-jan-2005:1/units=days/caleandar=noleap tnoleap -sh axis/t=25-jan-2001:1-feb-2001 tnoleap - name axis # pts start end - TNOLEAP TIME 1826 r 01-JAN-2000 00:00 01-JAN-2005 00:00 -T0 = 15-JAN-1901 -CALENDAR = NOLEAP - Axis span (to cell edges) = 1826 - - L T TBOX TBOXLO TSTEP (DAYS) - 390> 25-JAN-2001 00:00:00 1 24-JAN-2001 12:00:00 36510 - 391> 26-JAN-2001 00:00:00 1 25-JAN-2001 12:00:00 36511 - 392> 27-JAN-2001 00:00:00 1 26-JAN-2001 12:00:00 36512 - 393> 28-JAN-2001 00:00:00 1 27-JAN-2001 12:00:00 36513 - 394> 29-JAN-2001 00:00:00 1 28-JAN-2001 12:00:00 36514 - 395> 30-JAN-2001 00:00:00 1 29-JAN-2001 12:00:00 36515 - 396> 31-JAN-2001 00:00:00 1 30-JAN-2001 12:00:00 36516 - 397> 01-FEB-2001 00:00:00 1 31-JAN-2001 12:00:00 36517 - - -def axis/t=1-jan-2000:1-jan-2005:1/units=days/caleandar=gregorian tgreg -sh axis/t=25-jan-2001:1-feb-2001 tgreg - name axis # pts start end - TGREG TIME 1828 r 01-JAN-2000 00:00 01-JAN-2005 00:00 -T0 = 15-JAN-1901 - Axis span (to cell edges) = 1828 - - L T TBOX TBOXLO TSTEP (DAYS) - 391> 25-JAN-2001 00:00:00 1 24-JAN-2001 12:00:00 36535 - 392> 26-JAN-2001 00:00:00 1 25-JAN-2001 12:00:00 36536 - 393> 27-JAN-2001 00:00:00 1 26-JAN-2001 12:00:00 36537 - 394> 28-JAN-2001 00:00:00 1 27-JAN-2001 12:00:00 36538 - 395> 29-JAN-2001 00:00:00 1 28-JAN-2001 12:00:00 36539 - 396> 30-JAN-2001 00:00:00 1 29-JAN-2001 12:00:00 36540 - 397> 31-JAN-2001 00:00:00 1 30-JAN-2001 12:00:00 36541 - 398> 01-FEB-2001 00:00:00 1 31-JAN-2001 12:00:00 36542 - -! Fix for bug 1279 which was only in the first iteration of v5.81 release -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_nlev.jnl -! err580_nlev.jnl -! bug 1279 - -!FILL/lev=n var -! gave us exactly n levels, not approximately n levels. - -use coads_climatology -fill/lev=30 sst[l=2] - -! Fix for bug 1349: formatted axis labels on PLOT/VS and POLYGON plot -! acm 8/29/2005 -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_vs_poly_axis.jnl -! err581_vs_poly_axis.jnl -! Test fix of bug 1349: formatted axis labels on PLOT/VS and POLYGON plot -! acm 8/29/2005 - -LET xpts= {144.616,144.621,144.651,144.658,144.660,144.664,144.670,144.670,144.672,144.674,144.676,144.677,144.678,144.679,144.683,144.685,144.686,144.687,144.688,144.690,144.691,144.692,144.693,144.693,144.694,144.694,144.695,144.696,144.697,144.698} -LET ypts= {32.3793,32.3279,32.308,32.3972,32.3938,32.3958,32.3112,32.3924,32.309,32.3095,32.3828,32.3135,32.3861,32.385,32.3265,32.3264,32.3821,32.3772,32.355,32.3657,32.3691,32.3371,32.3495,32.3672,32.3458,32.3625,32.3604,32.3518,32.3643,32.3531} - -SET VAR/UNITS=degrees_east/TITLE="LONGITUDES" xpts -SET VAR/UNITS=degrees_north/TITLE="LATITUDES" ypts -PLOT/VS xpts, ypts - -LET ysqr = YSEQUENCE({0,0,.1,.1}*0.01) -LET xsqr = YSEQUENCE({0,.1,.1,0}*0.01) -DEF VAR/UNITS=degrees_east/TITLE="LONGITUDES" xp = xpts+xsqr -DEF VAR/UNITS=degrees_north/TITLE="LATITUDES" yp = ypts+ysqr - -SET VAR/TITLE="COLORED BY LATITUDE" ypts -POLYGON/LINE/fill xp, yp, ypts - -! Fix for bug 1270: regridding leakage between cells: monthly-> seasonal regridding -! needs file short_bug1270.nc -! ( this fix not checked in for v5.81 release.) -! GO bn_reset -! GO err580_regrid_prec.jnl - - -! ******** V6.00 Additions below *********** - -GO bn_reset bn_tab_comma_multivar.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_tab_comma_multivar.jnl -GO bn_tab_comma_multivar.jnl -! bn_tab_comma_multivar.jnl -! -! Fixes for bug 1273 -! v5.90 8/9/2005 -! LIST/FORM=tab and /FORM=comma with more than one variable -! no longer behave as if /SINGLY was specified. New qualifier -! LIST/NOROWLAB removes coordinate labels from the rows listing data -! v7.51 6/2019 precision handling is changed. - -let country = {"JP", "JP", "US"} -let id = {1,2,3} -let aa = 4000* id -let bb = 1000000* id + 500 -let newcountry = {"w", "c", "e"} -let the_data_var = {4,5,4} - - -list/format=comma country, id, aa, bb, newcountry, the_data_var - X: 0.5 to 3.5 - Column 1: COUNTRY is {"JP", "JP", "US"} - Column 2: ID is {1,2,3} BAD FLAG : -1.E+34 - Column 3: AA is 4000* ID BAD FLAG : -1.E+34 - Column 4: BB is 1000000* ID + 500 BAD FLAG : -1.E+34 - Column 5: NEWCOUNTRY is {"w", "c", "e"} - Column 6: THE_DATA_VAR is {4,5,4} BAD FLAG : -1.E+34 - COUNTRY,ID,AA,BB,NEWCOUNTRY,THE_DATA_VAR -1 / 1:"JP",1,4000,1.001E+06,"w",4 -2 / 2:"JP",2,8000,2.001E+06,"c",5 -3 / 3:"US",3,1.2E+04,3.001E+06,"e",4 - -list/format=tab/norow country, id, aa, bb, newcountry, the_data_var - X: 0.5 to 3.5 - Column 1: COUNTRY is {"JP", "JP", "US"} - Column 2: ID is {1,2,3} BAD FLAG : -1.E+34 - Column 3: AA is 4000* ID BAD FLAG : -1.E+34 - Column 4: BB is 1000000* ID + 500 BAD FLAG : -1.E+34 - Column 5: NEWCOUNTRY is {"w", "c", "e"} - Column 6: THE_DATA_VAR is {4,5,4} BAD FLAG : -1.E+34 -COUNTRY ID AA BB NEWCOUNTRY THE_DATA_VAR -"JP" 1 4000 1.001E+06 "w" 4 -"JP" 2 8000 2.001E+06 "c" 5 -"US" 3 1.2E+04 3.001E+06 "e" 4 - - -! With v7.51 the handling of precision=4 has changed, so that bb isn't -! well represented. - -list/format=comma/prec=7 country, id, aa, bb, newcountry, the_data_var - X: 0.5 to 3.5 - Column 1: COUNTRY is {"JP", "JP", "US"} - Column 2: ID is {1,2,3} BAD FLAG : -1.E+34 - Column 3: AA is 4000* ID BAD FLAG : -1.E+34 - Column 4: BB is 1000000* ID + 500 BAD FLAG : -1.E+34 - Column 5: NEWCOUNTRY is {"w", "c", "e"} - Column 6: THE_DATA_VAR is {4,5,4} BAD FLAG : -1.E+34 - COUNTRY,ID,AA,BB,NEWCOUNTRY,THE_DATA_VAR -1 / 1:"JP",1,4000,1000500,"w",4 -2 / 2:"JP",2,8000,2000500,"c",5 -3 / 3:"US",3,12000,3000500,"e",4 -list/format=tab/norow/prec=7 country, id, aa, bb, newcountry, the_data_var - X: 0.5 to 3.5 - Column 1: COUNTRY is {"JP", "JP", "US"} - Column 2: ID is {1,2,3} BAD FLAG : -1.E+34 - Column 3: AA is 4000* ID BAD FLAG : -1.E+34 - Column 4: BB is 1000000* ID + 500 BAD FLAG : -1.E+34 - Column 5: NEWCOUNTRY is {"w", "c", "e"} - Column 6: THE_DATA_VAR is {4,5,4} BAD FLAG : -1.E+34 -COUNTRY ID AA BB NEWCOUNTRY THE_DATA_VAR -"JP" 1 4000 1000500 "w" 4 -"JP" 2 8000 2000500 "c" 5 -"US" 3 12000 3000500 "e" 4 - - - -GO bn_reset bn_element_functions.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_element_functions.jnl -GO bn_element_functions.jnl - ! NOAA/PMEL TMAP - ! FERRET v5.81 - ! Solaris 5.6 - 08/08/05 - ! 9-Aug-05 14:36 - -use coads_climatology -let a = x[gx=sst]*y[gy=sst]*l[gt=sst] -list/i=1:2/j=1:2/l=3 a - VARIABLE : X[GX=SST]*Y[GY=SST]*L[GT=SST] - FILENAME : coads_climatology.cdf - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - TIME : 17-MAR 02:58 - 21E 23E - 1 2 - 87S / 2: -5481. -6003. - 89S / 1: -5607. -6141. -list is_element_of (a, -6003) - VARIABLE : IS_ELEMENT_OF (A, -6003) - FILENAME : coads_climatology.cdf - X : 1 - 1.000 - list/i=1:2/j=1:2/l=3 element_index (a, {-6003}) - VARIABLE : ELEMENT_INDEX (A, {-6003}) - FILENAME : coads_climatology.cdf - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - TIME : 17-MAR 02:58 - 21E 23E - 1 2 - 87S / 2: .... 1.000 - 89S / 1: .... .... -use string4d.nc -list/j=1:2/k=1:2 axy - VARIABLE : RESHAPE (A,RVAR) - FILENAME : string4d.nc - SUBSET : 2 by 2 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1:"alpha""a2" - 2 / 2:"a3" "a4" - ---- K:2 Z: 2 - 1 / 1:"a7" "a8" - 2 / 2:"a9" "a10" - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1:"c5" "c6" - 2 / 2:"c7" "c8" - ---- K:2 Z: 2 - 1 / 1:"d1" "d2" - 2 / 2:"d3" "d4" -list is_element_of_str (axy[k=1:2,j=1:2], "a10") - VARIABLE : IS_ELEMENT_OF_STR (AXY[K=1:2,J=1:2], "a10") - FILENAME : string4d.nc - X : 1 - 1.000 -list is_element_of_str (axy[k=1:2,j=1:2], "A10") - VARIABLE : IS_ELEMENT_OF_STR (AXY[K=1:2,J=1:2], "A10") - FILENAME : string4d.nc - X : 1 - 0.0000 -list is_element_of_str (axy[k=1:2,j=1:2], {"B0", "QQ", "d4", "m5"}) - VARIABLE : IS_ELEMENT_OF_STR (AXY[K=1:2,J=1:2], {"B0", "QQ", "d4", "m5"}) - FILENAME : string4d.nc - X : 1 - 1.000 -list element_index_str (axy[k=1:2,j=1:2], {"a10", "a2", "d4", "c5"}) - VARIABLE : ELEMENT_INDEX_STR (AXY[K=1:2,J=1:2], {"a10", "a2", "d4", "c5"}) - FILENAME : string4d.nc - SUBSET : 2 by 2 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: .... 2.000 - 2 / 2: .... .... - ---- K:2 Z: 2 - 1 / 1: .... .... - 2 / 2: .... 1.000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 4.000 .... - 2 / 2: .... .... - ---- K:2 Z: 2 - 1 / 1: .... .... - 2 / 2: .... 3.000 - -list is_element_of_str_n (axy[k=1:2,j=1:2], "a10") - VARIABLE : IS_ELEMENT_OF_STR_N (AXY[K=1:2,J=1:2], "a10") - FILENAME : string4d.nc - X : 1 - 1.000 -list is_element_of_str_n (axy[k=1:2,j=1:2], "A10") - VARIABLE : IS_ELEMENT_OF_STR_N (AXY[K=1:2,J=1:2], "A10") - FILENAME : string4d.nc - X : 1 - 2.000 -list is_element_of_str_n (axy[k=1:2,j=1:2], {"B0", "QQ", "d4", "m5"}) - VARIABLE : IS_ELEMENT_OF_STR_N (AXY[K=1:2,J=1:2], {"B0", "QQ", "d4", "m5"}) - FILENAME : string4d.nc - X : 1 - 1.000 -list element_index_str_n (axy[k=1:2,j=1:2], {"a10", "a2", "d4", "c5"}) - VARIABLE : ELEMENT_INDEX_STR_N (AXY[K=1:2,J=1:2], {"a10", "a2", "d4", "c5"}) - FILENAME : string4d.nc - SUBSET : 2 by 2 by 2 by 2 points (X-Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - ---- K:1 Z: 1 - 1 / 1: .... 2.000 - 2 / 2: .... .... - ---- K:2 Z: 2 - 1 / 1: .... .... - 2 / 2: .... 1.000 - ---- L:2 T: 2 - ---- K:1 Z: 1 - 1 / 1: 4.000 .... - 2 / 2: .... .... - ---- K:2 Z: 2 - 1 / 1: .... .... - 2 / 2: .... 3.000 - - -GO bn_reset bn_long_revision_num.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_long_revision_num.jnl -GO bn_long_revision_num.jnl -! bn_long_revision_num.jnl -! ACM 8/30/05 -! revision numbers were previously limited to 2 decimal places: v5.81 -! Now they can be longer, for minor revisions between releases: v5.8101 - -! ferret version -sh sym FERRET_VERSION -FERRET_VERSION = "7.51" - -! history attribute -let a = 12 -sp echo "bn_long_revision_num.jnl --- history attribute" >> all_ncdump.out -save/clobber/file=revision.nc a; sp ncdump revision.nc | grep history >> all_ncdump.out - -! label in upper right -go ptest; sh sym lab1 -! Description: create a simple test line plot - -! spirograph picture ... -PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20) - -LAB1 = "X : 0.5 to 314.5" - -! show commands without an argument, lists version number at the top -sho command - Commands in Program PyFerret (debug) version7.51: - SET - SET WINDOW/SIZE/NEW/LOCATION/ASPECT/CLEAR/TITLE/QUALITY/ANTIALIA/NOANTIAL - /ENGINE/COLOR/OPACITY/THICKEN/XPIXELS/YPIXELS/XINCHES/YINCHES/TEXTPROM - /OUTLINE/SCALE - SET REGION/I/J/K/L/M/N/X/Y/Z/T/E/F/DX/DY/DZ/DT/DE/DF/DI/DJ/DK/DL/DM/DN - SET VIEWPORT - SET EXPRSION - SET LIST/PRECISIO/FILE/FORMAT/APPEND/HEADING/NCFORMAT/ENDIAN/DEFLATE/SHUFFLE - /XCHUNK/YCHUNK/ZCHUNK/TCHUNK/ECHUNK/FCHUNK/OUTTYPE - SET DATA/EZ/VARIABLE/TITLE/FORMAT/GRID/SKIP/COLUMNS/SAVE/RESTORE/ORDER - /TYPE/SWAP/REGULART/DELIMITE/STRICT/FEATURE/FMASK - SET MODE/LAST - SET MOVI/FILE/COMPRESS/LASER/START - SET VARIABLE/TITLE/UNITS/GRID/BAD/DATASET/NAME/SCALEFAC/OFFSET/OUTTYPE - /LAYERZ/CURVILIN - SET GRID/SAVE/RESTORE - SET AXIS/MODULO/DEPTH/CALENDAR/T0/UNITS/STRIDE/OFFSET/REGULAR/OUTTYPE/NAME - SET MEMORY/SIZE - SET ATTRIBUT/TYPE/DATASET/OUTPUT/LIKE/QUIET - SET NCCACHE/SIZE/NELEMS/PREEMPT - SET REDIRECT/TEE/JOURNAL/FILE/APPEND/CLOBBER - SET GIFFILE - SET TEXT/FONT/COLOR/ITALIC/BOLD/ISIZ - SHOW/ALL - SHOW WINDOW/ALL - SHOW REGION/ALL - SHOW AXIS/ALL/I/J/K/L/M/N/X/Y/Z/T/E/F/XML/OUTFILE/APPEND/CLOBBER - SHOW EXPRSION/ALL - SHOW LIST/ALL - SHOW DATA/ALL/BRIEF/FULL/VARIABLE/FILES/XML/ATTR/OUTFILE/APPEND/CLOBBER - /HIDDEN/MEMBERS - SHOW MODE/ALL - SHOW MOVIE/ALL - SHOW VARIABLE/ALL/DATASET/USER/XML/OUTFILE/APPEND/CLOBBER/TREE/LAYERZ/CURVILIN - SHOW COMMANDS/ALL/BRIEF - SHOW MEMORY/ALL/DIAGNOST/TEMPORY/PERMANT/FREE - SHOW GRID/ALL/I/J/K/L/M/N/X/Y/Z/T/E/F/DYNAMIC/XML/OUTFILE/APPEND/CLOBBER - SHOW VIEWPORT/ALL - SHOW TRANFORM/ALL - SHOW ALIAS/ALL - SHOW SYMBOL/ALL - SHOW ATTRIBUT/ALL/DATASET/OUTPUT - SHOW NCCACHE - SHOW GIFFILE - SHOW FUNCTION/ALL/BRIEF/EXTERNAL/INTERNAL/DETAILS - SHOW TEXT - SHOW QUERIES/ALL - CANCEL - CANCEL WIND/ALL - CANCEL REGION/ALL/I/J/K/L/M/N/X/Y/Z/T/E/F - CANCEL MEMORY/ALL/TEMPORY/PERMANT - CANCEL EXPRSION/ALL - CANCEL LIST/ALL/PRECISIO/FILE/FORMAT/HEADING/APPEND/OUTTYPE - CANCEL DATA/ALL/NOERROR/FMASK - CANCEL MODE - CANCEL MOVIE/ALL - CANCEL VIEWPORT - CANCEL VARIABLE/ALL/DATASET/LAYERZ/CURVILIN/NOERROR - CANCEL AXIS/MODULO/ALL/DEPTH/STRIDE - CANCEL GRID - CANCEL ATTRIBUT/OUTPUT/DATASET - CANCEL REDIRECT - CANCEL ALIAS/ALL - CANCEL SYMBOL/ALL - CANCEL NCCACHE - CANCEL PYVAR/ALL/DATASET - CANCEL TEXT/FONT/COLOR/ITALIC/BOLD/ISIZ/ALL - CONTOUR/I/J/K/L/M/N/X/Y/Z/T/E/F/OVERLAY/SET_UP/FRAME/DATASET/TRANPOSE/FILL - /LINE/NOLABEL/LEVELS/KEY/NOKEY/PALETTE/XLIMITS/YLIMITS/TITLE/COLOR - /NOAXES/PATTERN/SIZE/SPACING/SIGDIG/PEN/HLIMITS/VLIMITS/AXES/HGRATICU - /VGRATICU/GRATICUL/MODULO/THICKNES/OPACITY/DEGMINSE/HALFSPAC - LIST/I/J/K/L/M/N/X/Y/Z/T/E/F/DATASET/HEADING/NOHEAD/SINGLY/FILE/APPEND - /ORDER/FORMAT/TITLE/PRECISIO/RIGID/ILIMITS/JLIMITS/KLIMITS/LLIMITS - /MLIMITS/NLIMITS/XLIMITS/YLIMITS/ZLIMITS/TLIMITS/ELIMITS/FLIMITS - /CLOBBER/QUIET/WIDTH/EDGES/BOUNDS/NOBOUNDS/NOROWLAB/KEEP_AXI/NCFORMAT - /XCHUNK/YCHUNK/ZCHUNK/TCHUNK/ECHUNK/FCHUNK/DEFLATE/SHUFFLE/ENDIAN - /OUTTYPE/CURVILIN/LAYERZ/ASGLOBAL/STRLEN - PLOT/I/J/K/L/M/N/X/Y/Z/T/E/F/ALONG/OVERLAY/SET_UP/FRAME/DATASET/TRANPOSE - /VS/SYMBOL/NOLABEL/LINE/COLOR/THICKNES/XLIMITS/YLIMITS/TITLE/SIZE - /NOAXES/STEP/DASH/AXES/HGRATICU/VGRATICU/HLIMITS/VLIMITS/HLOG/VLOG - /GRATICUL/NOKEY/NOYADJUS/KEY/RIBBON/LEVELS/PALETTE/FAST/MISSING/OPACITY - /GAPLOC/SKIPSYM/DEGMINSE/HALFSPAC/HIGHLIGH - GO/HELP - HELP - LOAD/TEMPORY/PERMANT/I/J/K/L/M/N/X/Y/Z/T/E/F/DATASET/NAME - DEFINE - DEFINE REGION/I/J/K/L/M/N/X/Y/Z/T/E/F/DEFAULT/DX/DY/DZ/DT/DE/DF/DI/DJ/DK - /DL/DM/DN - DEFINE GRID/X/Y/Z/T/E/F/FILE/LIKE - DEFINE VARIABLE/TITLE/UNITS/QUIET/DATASET/BAD/REMOTE/LIKE - DEFINE AXIS/X/Y/Z/T/E/F/FILE/UNITS/T0/NAME/FROMDATA/DEPTH/MODULO/NPOINTS - /EDGES/CALENDAR/BOUNDS/QUIET/MONTHLY/LIKE - DEFINE VIEWPORT/TEXT/XLIMITS/YLIMITS/SIZE/ORIGIN/CLIP/AXES - DEFINE ALIAS - DEFINE SYMBOL - DEFINE ATTRIBUT/DATASET/TYPE/OUTPUT/QUIET - DEFINE PYFUNC/NAME - DEFINE DATA/AGGREGAT/T/E/F/TITLE/QUIET/HIDE/U/TAXIS/FAXIS/TOVERLAP - DEFINE ANNOTATI/USER/NORM/NOUSER/XPOS/YPOS/HALIGN/VALIGN/ANGLE/SIZE/NLAB - EXIT/COMMAND/LOOP/SCRIPT/PROMPT/PROGRAM/CYCLE/TOPYTHON - MESSAGE/CONTINUE/QUIET/JOURNAL/ERROR/OUTFILE/APPEND/CLOBBER - VECTOR/I/J/K/L/M/N/X/Y/Z/T/E/F/OVERLAY/SET_UP/FRAME/DATASET/TRANPOSE/ASPECT - /NOLABEL/LENGTH/XSKIP/YSKIP/THICK/XLIMITS/YLIMITS/TITLE/COLOR/NOAXES - /NOKEY/FLOWLINE/DENSITY/AXES/PEN/HLIMITS/VLIMITS/HGRATICU/VGRATICU - /GRATICUL/KEY/MODULO/OPACITY - PPLUS/RESET - FRAME/FORMAT/FILE/TRANSPAR/XINCHES/YINCHES/XPIXELS/YPIXELS/ANNOTATE - REPEAT/I/J/K/L/M/N/X/Y/Z/T/E/F/ANIMATE/LOOP/RANGE/NAME - STAT/BRIEF/PRECISIO/I/J/K/L/M/N/X/Y/Z/T/E/F/DATASET - SHADE/I/J/K/L/M/N/X/Y/Z/T/E/F/OVERLAY/SET_UP/FRAME/DATASET/TRANPOSE/TRIM - /LINE/NOLABEL/LEVELS/KEY/NOKEY/PALETTE/XLIMITS/YLIMITS/TITLE/AXES - /NOAXES/PATTERN/HGRATICU/VGRATICU/GRATICUL/MODULO/HLIMITS/VLIMITS - /OPACITY/DEGMINSE/HALFSPAC - SPAWN - WIRE/I/J/K/L/M/N/X/Y/Z/T/E/F/OVERLAY/SET_UP/FRAME/DATASET/VIEWPOIN/ZLIMITS - /TRANPOSE/NOLABEL/ZSCALE/COLOR/THICKNES/OPACITY/TITLE - QUERY/ALL/FILE/IGNORE - IF - ELSE - ELIF - ENDIF - POLYGON/I/J/K/L/M/N/X/Y/Z/T/E/F/OVERLAY/SET_UP/FRAME/DATASET/TRANPOSE/COORD_AX - /NOLABEL/LEVELS/LINE/COLOR/PALETTE/XLIMITS/YLIMITS/TITLE/THICKNES - /NOAXES/PATTERN/FILL/KEY/NOKEY/AXES/HLIMITS/VLIMITS/HLOG/VLOG - /HGRATICU/VGRATICU/GRATICUL/MODULO/OPACITY - ANNOTATE/USER/NORM/NOUSER/XPOS/YPOS/HALIGN/VALIGN/ANGLE/SIZE - - Use SHOW ALIAS to see alternative command names - -GO bn_reset bn_window_title.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_window_title.jnl -GO bn_window_title.jnl -! bn_window_title.jnl -! Define a title for windows rather than just FERRET_1, FERRET_2, ... -! If no title is set, use SESSION_DATE:SESSION_TIME - -go ptest -! Description: create a simple test line plot - -! spirograph picture ... -PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20) - -sh sym win_title -WIN_TITLE = "20-Aug-19_12:13" - -set win/title="set the title" -sho sym win_title -WIN_TITLE = "set_the_title" - -go ptest -! Description: create a simple test line plot - -! spirograph picture ... -PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20) - -set win/new -set win/title=""/new -sho sym win_title -WIN_TITLE = "_" - -set win/title="($session_date):($session_time)" - !-> set win/title="20-Aug-19:12:13" - -! If the date or time starts with a blank then we get an extra -! underscore in the window title. Evaluating the symbols into -! new ones gets rid of this blank at the start. -! the symbols session_date and session_time may have been canceled. -! If so substitute another string. - -DEFINE SYMBOL the_date = ($session_date"SESSION_DATE") - !-> DEFINE SYMBOL the_date = 20-Aug-19 -DEFINE SYMBOL the_time = ($session_time"SESSION_TIME") - !-> DEFINE SYMBOL the_time = 12:13 -SET WIN/TITLE="($the_date):($the_time)" - !-> SET WIN/TITLE="20-Aug-19:12:13" - -can win/all -set win/new -sh sym win_title -WIN_TITLE = "20-Aug-19:12:13" - -GO bn_reset bn_last_error.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_last_error.jnl -GO bn_last_error.jnl -! bn_last_error.jnl -! acm Nov 2005 -! -! - test the symbol FER_LAST_ERROR (Commands from various bn scripts) - - - -SET MODE IGNORE_ERRORS - -LIST/ORDER=X IF I GT 3 THEN ( IF I LT 5 THEN I ELSE -9 ) ELSE .333 ! err -SHOW SYM FER_LAST_ERROR -FER_LAST_ERROR = "**ERROR: command syntax: IF I GT 3 THEN ( IF I LT 5 THEN I ELSE -9 ) ELSE .333 \Cannot use multiple IFs in an expression " - - -LET A = IF I LT 5 THEN I ELSE -9 -SHOW SYM FER_LAST_ERROR -FER_LAST_ERROR = "**ERROR: command syntax: IF I LT 5 THEN I ELSE -9 \ELSE before - is illegal\negative constants need to be enclosed in parentheses " - - -load a1,a2,a3 -SHOW SYM FER_LAST_ERROR -FER_LAST_ERROR = "**ERROR: variable unknown or not in data set: A1 " - -set data nofile.nc -SHOW SYM FER_LAST_ERROR -FER_LAST_ERROR = "**TMAP ERR: non-existent or not on line nofile.nc " - - -! Repeat/range errors -repeat/name=a (say `a`) -SHOW SYM FER_LAST_ERROR -FER_LAST_ERROR = "**ERROR: invalid command: REPEAT/NAME requires /RANGE " - - -! Cannot use pseudo-variables. -repeat/range=1:3/name=L (use coads_climatology; list/nohead [sst=I=1,j=1]) -SHOW SYM FER_LAST_ERROR -FER_LAST_ERROR = "**ERROR: command syntax: L is a pseudo-variable; cannot use with REPEAT/RANGE/NAME. Instead use REPEAT/L= " - - -! external function errors via ef_bail_out - -! This bails out w/Time axis error -USE "coads_vwnd.cdf" -SET REGION/I=90/J=65 -LET vw_fft = ffta(vwnd[l=37:60]) -LOAD vw_fft -SHOW SYM FER_LAST_ERROR -FER_LAST_ERROR = "**ERROR: error in external function. Bailing out of external function FFTA\ Time axis must be a regular axis" - - -SET MODE/LAST IGNORE_ERROR - -GO bn_reset bn_deg_min.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_deg_min.jnl -GO bn_deg_min.jnl -! bn_deg_min.jnl -! label axes with degrees and minutes rather than degrees and decimal degrees. -! 19-May-06 add seconds as well... - - - -use ss_small.nc - -shade/set/x=222.9:223.1/y=58.22:59.1 rose -ppl xfor (dm) -ppl yfor (dm) -ppl shade - -! plot/vs plots - -let xpts= {144.616,144.621,144.651,144.658,144.660,144.664,144.670,144.670,144.672,144.674,144.676,144.677,144.678,144.679,144.683,144.685,144.686,144.687,144.688,144.690,144.691,144.692,144.693,144.693,144.694,144.694,144.695,144.696,144.697,144.698} -let ypts= {32.3793,32.3279,32.308,32.3972,32.3938,32.3958,32.3112,32.3924,32.309,32.3095,32.3828,32.3135,32.3861,32.385,32.3265,32.3264,32.3821,32.3772,32.355,32.3657,32.3691,32.3371,32.3495,32.3672,32.3458,32.3625,32.3604,32.3518,32.3643,32.3531} - -set var/units=degrees_east/title="longitudes" xpts -set var/units=degrees_north/title="latitudes" ypts - -plot/vs/set xpts, ypts -ppl xfor (dm) -ppl yfor (dm) -ppl plot - -! DMS degrees-minutes-seconds -plot/vs/set xpts, ypts -ppl xfor (dms) -ppl yfor (dms) -ppl axlint,3,1 -ppl plot - -! Restore the default settings -ppl axlint,2,2 - -! Now do the same using command qualifiers /DEGMINSEC= /HALFSPAC (ticket 2434) -! /DEGMINSEC=1 for Deg-Min, =2 for Deg-Min-Sec. Default = 1 -! /HALFSPAC adds a half space between the degree sign and E/W or N/S - -use ss_small -shade/x=222.9:223.1/y=58.22:59.1/DEGMIN rose -fill/x=222.9:223.1/y=58.22:59.1/DEGMIN=2 rose -plot/vs/DEGMIN=2 xpts, ypts - -fill/x=222.9:223.1/y=58.22:59.1/HALFSP rose -plot/x=223./DEGMIN/HALFSP rose -plot/y=58.52/DEGMIN=2/HALFSP rose -plot/vs/HALFSP xpts, ypts - -GO bn_reset bn_dp_readscale.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dp_readscale.jnl -GO bn_dp_readscale.jnl -! bn_dp_readscale.jnl -! 9-Feb-2006 ACM - -! When there is a double precision variable, -! and when the user specifies an offset, read the -! variable in double precision, apply the offset and -! then convert to single precision. When plotting -! the user specifies the offset to add back to the -! axis labels. - -set list/prec=8 - -use adouble.nc - -list xax - VARIABLE : test double prec. data - FILENAME : adouble.nc - SUBSET : 10 points (X) - 1 / 1: 140.00000 - 2 / 2: 140.00000 - 3 / 3: 140.00000 - 4 / 4: 140.00000 - 5 / 5: 140.00000 - 6 / 6: 140.00001 - 7 / 7: 140.00010 - 8 / 8: 140.00100 - 9 / 9: 140.01000 - 10 / 10: 140.10000 -let xlon = 140 - -! Now read xax with an offset -set var/offset=`-1*xlon` xax - !-> set var/offset=-140 xax -can mem - -list xax - VARIABLE : test double prec. data - FILENAME : adouble.nc - SUBSET : 10 points (X) - 1 / 1: 0.000000000 - 2 / 2: 0.000000001 - 3 / 3: 0.000000010 - 4 / 4: 0.000000100 - 5 / 5: 0.000001000 - 6 / 6: 0.000010000 - 7 / 7: 0.000100000 - 8 / 8: 0.001000000 - 9 / 9: 0.010000000 - 10 / 10: 0.100000000 - -! define an axis from xax -define axis/x/units=lon xir = xax -let pvar = yvar[gx=xir@asn] - -! Plot, adding back the offset on axis labels. -plot/set/color=red/line/sym=22 pvar -ppl xvaloff `xlon` - !-> ppl xvaloff 140 -ppl plot - -! Test a 2-D double precision variable -can data/all -use adouble_2D.nc -set var/offset=`-1*xlon` xax - !-> set var/offset=-140 xax -list xax - VARIABLE : test double prec. data - FILENAME : adouble_2D.nc - SUBSET : 5 by 2 points (X-Y) - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 0.000000000 0.000000001 0.000000010 0.000000100 0.000001000 - 2 / 2: 0.000010000 0.000100000 0.001000000 0.010000000 0.100000000 - -cancel list/precision - -GO bn_reset bn_bounds_defineax.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_bounds_defineax.jnl -GO bn_bounds_defineax.jnl -! bn_bounds_defineax.jnl -! 3/22/2006 -! Previously only allowed 2*N definition of bounds in DEFINE AXIS/BOUNDS -! Now allow N+1 definition of bounds, or three equal-lenght lists of -! coords, lo_bounds, hi_bounds -! -! Define an axis using bounds. Note the coordinates need not be -! centered in the axis cells. - -def axis/t/bounds tax={1.2, 2, 3.2, 5, 7, 8.4, 9}, {0.5,1.5, 1.5,2.5, 2.5,3.5, 3.5,6.5, 6.5,7.5, 7.5,8.5, 8.5,9.5} -list t[gt=tax], tboxlo[gt=tax], tboxhi[gt=tax], tbox[gt=tax] - T: 0.5 to 9.5 - Column 1: T is T (axis TAX) - Column 2: TBOXLO is TBOXLO (axis TAX) - Column 3: TBOXHI is TBOXHI (axis TAX) - Column 4: TBOX is TBOX (axis TAX) - T TBOXLO TBOXHI TBOX -1.2 / 1: 1.200 0.500 1.500 1.000 -2 / 2: 2.000 1.500 2.500 1.000 -3.2 / 3: 3.200 2.500 3.500 1.000 -5 / 4: 5.000 3.500 6.500 3.000 -7 / 5: 7.000 6.500 7.500 1.000 -8.4 / 6: 8.400 7.500 8.500 1.000 -9 / 7: 9.000 8.500 9.500 1.000 - -def axis/t/bounds tax={1.2, 2, 3.2, 5, 7, 8.4, 9}, {0.5,1.5,2.5,3.5,6.5,7.5,8.5,9.5} -list t[gt=tax], tboxlo[gt=tax], tboxhi[gt=tax], tbox[gt=tax] - T: 0.5 to 9.5 - Column 1: T is T (axis TAX) - Column 2: TBOXLO is TBOXLO (axis TAX) - Column 3: TBOXHI is TBOXHI (axis TAX) - Column 4: TBOX is TBOX (axis TAX) - T TBOXLO TBOXHI TBOX -1.2 / 1: 1.200 0.500 1.500 1.000 -2 / 2: 2.000 1.500 2.500 1.000 -3.2 / 3: 3.200 2.500 3.500 1.000 -5 / 4: 5.000 3.500 6.500 3.000 -7 / 5: 7.000 6.500 7.500 1.000 -8.4 / 6: 8.400 7.500 8.500 1.000 -9 / 7: 9.000 8.500 9.500 1.000 - -! test of DEPTH axis - -def axis/x xax = {1,2,5,6,7,8} -def axis/z/depth/bounds zax = {0,20,50,75,120}, {0,10,30,60,90,150} -def axis/t tax = {1,2,9,10,11} -let v = x[gx=xax] +z[gz=zax] + t[gt=tax] -save/clobber/file=irrxzt.nc v -sp echo "bn_bounds_defineax.jnl --- N+1 def of bounds." >> all_ncdump.out -sp ncdump irrxzt.nc >> all_ncdump.out - -! 3-argument bounds definitions -def axis/z/bounds zax={1,2,4,8,16,32,64,128}, {0.5,1.5,2.5,4.5,8.5,16.5,32.5,64.5}, {1.5,2.5,4.5,8.5,16.5,32.5,64.5,200} -list zboxlo[gz=zax], z[gz=zax], zboxhi[gz=zax] - Z: 0.5 to 200 - Column 1: ZBOXLO is ZBOXLO (axis ZAX) - Column 2: Z is Z (axis ZAX) - Column 3: ZBOXHI is ZBOXHI (axis ZAX) - ZBOXLO Z ZBOXHI -1 / 1: 0.50 1.0 1.5 -2 / 2: 1.50 2.0 2.5 -4 / 3: 2.50 4.0 4.5 -8 / 4: 4.50 8.0 8.5 -16 / 5: 8.50 16.0 16.5 -32 / 6: 16.50 32.0 32.5 -64 / 7: 32.50 64.0 64.5 -128 / 8: 64.50 128.0 200.0 - - -! define some new bounds by subsampling: - -let n = `z[gz=zax],return=ksize` - !-> DEFINE VARIABLE n = 8 - -! Note this syntax --let zl2 = zboxlo[gz=zax,k=1:`1+n-2`:2]-- -! creates a new axis [gz=zax,k=1:`1+n-2`:2] -! and computes its zboxlo. Instead make varibles containing -! the bounds and sample those variables. - -let boxlo = zboxlo[gz=zax] -let boxhi = zboxhi[gz=zax] -let zl2 = boxlo[k=1:`1+n-2`:2] - !-> DEFINE VARIABLE zl2 = boxlo[k=1:7:2] -let zh2 = boxhi[k=2:`n`:2] - !-> DEFINE VARIABLE zh2 = boxhi[k=2:8:2] - -list zl2,(zl2+zh2)/2,zh2 - WARNING: Listed variables have ambiguous coordinates on axes: Z - Column 1: ZL2 is BOXLO[K=1:7:2] - Column 2: EX#2 is (ZL2+ZH2)/2 - Column 3: ZH2 is BOXHI[K=2:8:2] - ZL2 EX#2 ZH2 -K / 1: 0.50 1.5 2.5 -K / 2: 2.50 5.5 8.5 -K / 3: 8.50 20.5 32.5 -K / 4: 32.50 116.3 200.0 -def axis/z/bounds zax2 = (zl2+zh2)/2, zl2, zh2 - -list zboxlo[gz=zax2], z[gz=zax2], zboxhi[gz=zax2] - Z: 0.5 to 200 - Column 1: ZBOXLO is ZBOXLO (axis ZAX2) - Column 2: Z is Z (axis ZAX2) - Column 3: ZBOXHI is ZBOXHI (axis ZAX2) - ZBOXLO Z ZBOXHI -1.5 / 1: 0.50 1.5 2.5 -5.5 / 2: 2.50 5.5 8.5 -20.5 / 3: 8.50 20.5 32.5 -116.3 / 4: 32.50 116.3 200.0 - -use gt4d011 - -! define some new bounds by subsampling: - -let n = `z[gz=temp],return=ksize` - !-> DEFINE VARIABLE n = 27 - -let boxlo = zboxlo[gz=temp] -let boxhi = zboxhi[gz=temp] -let zl2 = boxlo[k=1:`1+n-2`:2] - !-> DEFINE VARIABLE zl2 = boxlo[k=1:26:2] -let zh2 = boxhi[k=2:`n`:2] - !-> DEFINE VARIABLE zh2 = boxhi[k=2:27:2] - -list zl2,(zl2+zh2)/2,zh2 - WARNING: Listed variables have ambiguous coordinates on axes: Z - DATA SET: ./data/gt4d011.cdf - Column 1: ZL2[Z=0:3174] is BOXLO[K=1:26:2] - Column 2: EX#2 is (ZL2+ZH2)/2 - Column 3: ZH2[Z=0:4149] is BOXHI[K=2:27:2] - ZL2 EX#2 ZH2 -K / 1: 0. 10. 20. -K / 2: 20. 30. 40. -K / 3: 40. 50. 60. -K / 4: 60. 70. 80. -K / 5: 80. 90. 100. -K / 6: 100. 114. 128. -K / 7: 128. 146. 165. -K / 8: 165. 193. 220. -K / 9: 220. 269. 317. -K / 10: 317. 438. 559. -K / 11: 559. 859. 1158. -K / 12: 1158. 1679. 2199. -K / 13: 2199. 2849. 3499. -def axis/z/bounds zax2 = (zl2+zh2)/2, zl2, zh2 - -! original axis -list zboxlo[gz=temp], z[gz=temp], zboxhi[gz=temp] - DATA SET: ./data/gt4d011.cdf - DEPTH (m): 0 to 4149 - Column 1: ZBOXLO is ZBOXLO (axis PSZT1) - Column 2: Z is Z (axis PSZT1) - Column 3: ZBOXHI is ZBOXHI (axis PSZT1) - ZBOXLO Z ZBOXHI -5 / 1: 0. 5. 10. -15 / 2: 10. 15. 20. -25 / 3: 20. 25. 30. -35 / 4: 30. 35. 40. -45 / 5: 40. 45. 50. -55 / 6: 50. 55. 60. -65 / 7: 60. 65. 70. -75 / 8: 70. 75. 80. -85 / 9: 80. 85. 90. -95 / 10: 90. 95. 100. -106.3 / 11: 100. 106. 113. -120 / 12: 113. 120. 128. -136.3 / 13: 128. 136. 145. -155 / 14: 145. 155. 165. -177.5 / 15: 165. 178. 190. -205 / 16: 190. 205. 220. -240 / 17: 220. 240. 260. -288.5 / 18: 260. 289. 317. -362.5 / 19: 317. 363. 408. -483.5 / 20: 408. 484. 559. -680 / 21: 559. 680. 801. -979.5 / 22: 801. 980. 1158. -1395.5 / 23: 1158. 1396. 1633. -1916 / 24: 1633. 1916. 2199. -2524 / 25: 2199. 2524. 2849. -3174 / 26: 2849. 3174. 3499. -3824 / 27: 3499. 3824. 4149. - -! sampled axis -list zboxlo[gz=zax2], z[gz=zax2], zboxhi[gz=zax2] - Z: 0 to 3499 - Column 1: ZBOXLO is ZBOXLO (axis ZAX2) - Column 2: Z is Z (axis ZAX2) - Column 3: ZBOXHI is ZBOXHI (axis ZAX2) - ZBOXLO Z ZBOXHI -10 / 1: 0. 10. 20. -30 / 2: 20. 30. 40. -50 / 3: 40. 50. 60. -70 / 4: 60. 70. 80. -90 / 5: 80. 90. 100. -113.8 / 6: 100. 114. 128. -146.3 / 7: 128. 146. 165. -192.5 / 8: 165. 193. 220. -268.5 / 9: 220. 269. 317. -438 / 10: 317. 438. 559. -858.5 / 11: 559. 859. 1158. -1678.5 / 12: 1158. 1679. 2199. -2849 / 13: 2199. 2849. 3499. - -GO bn_reset bn_attributes.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_attributes.jnl -GO bn_attributes.jnl -! bn_attributes -! test attribute handling on netcdf intput/output and -! programatic access to attribute information -! needs new cdf files modfalse.nc, test0.nc - -! 31Aug2006 ACM Remove OPeNDAP references; not essential to the -! benchmark tests. - -! small addition below 1/17 *sh* - -!----- - -! SHOW ATTRIBUTE examples - -can data/all -can var/all - -use ocean_atlas_temp -sho att/all temp - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.missing_value = -1.E+34 - TEMP._FillValue = -1.E+34 - TEMP.long_name = Temperature - TEMP.history = From ocean_atlas_monthly - TEMP.units = Deg C - -show attribute temp.units - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.units = Deg C -show attribute temp.missing_value - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.missing_value = -1.E+34 - -! specifying data set - -use gt4d011 -use levitus_climatology - -sh att/all temp[d=2] - attributes for dataset: ./data/gt4d011.cdf - TEMP.parent_grid = PS3DT2 - TEMP.slab_min_index = 91, 35, 1, 0 - TEMP.slab_max_index = 108, 56, 10, 0 - TEMP.missing_value = -1.E+34 - TEMP._FillValue = -1.E+34 - TEMP.long_name = TEMPERATURE - TEMP.history = From gt4d011 - TEMP.units = deg. C -sh att temp.units[d=1] - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.units = Deg C - -! global attributes -use err491_attval - -show att ..remark - attributes for dataset: ./data/err491_attval.cdf - .remark = Generated by oar3d -show att/all . - attributes for dataset: ./data/err491_attval.cdf - ..simulation = K-Bay OAR3d model (200m) - ..start_date = 980105000000 - ..history = a - - ..option = 1 - ..run_mode = 3 - ..srfc_bndry = 3 - ..rad_penet = 2 - ..dt_external = 1 - ..dt_internal = 15 - ..horiz_diff = 0.2 - ..inv_prandtl = 0.2 - ..min_slope = 0.2 - ..title = K-Bay OAR3d model (200m) - ..command = - ..remark = Generated by oar3d - ..x_units = degrees - ..y_units = degrees - ..z_units = - ..nx = 35 - ..ny = 127 - ..x_min = 0 - ..x_max = 0 - ..y_min = 0 - ..y_max = 0 - ..z_min = 0 - ..z_max = 0 - ..x_inc = 0 - ..y_inc = 0 - ..z_scale_factor = 0 - ..z_add_offset = 0 - ..node_offset = 0 - -sho att/all .[d=1] - attributes for dataset: ./data/ocean_atlas_temp.cdf - ..history = FERRET V4.90 (GUI) 04-Feb-98 - -! Now SHOW DATA/ATT - -can data/all -use ocean_atlas_temp -sho data/att - currently SET data sets: - 1> ./data/ocean_atlas_temp.cdf (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 28 T FERRET V4.90 (GUI) 04-Feb-98 - -(XAX_LEV9421_380) DOUBLE units CHAR 12 T degrees_east - modulo CHAR 1 T - point_spacing CHAR 4 T even - orig_file_axname - CHAR 15 F XAX_LEV9421_380 - -(YAX_LEV94) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - orig_file_axname - CHAR 9 F YAX_LEV94 - -(ZAXLEVIT191_1) DOUBLE units CHAR 6 T METERS - positive CHAR 4 T down - orig_file_axname - CHAR 13 F ZAXLEVIT191_1 - -(TIME4) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - orig_file_axname - CHAR 4 F TIME - - TEMP FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 11 T Temperature - history CHAR 24 T From ocean_atlas_monthly - units CHAR 5 T Deg C - - -use gt4d011 -use levitus_climatology - -sh data/att gt4d011 - currently SET data sets: - 2> ./data/gt4d011.cdf - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 28 T FERRET V4.45 (GUI) 21-Apr-97 - - PS3DT2 CHAR axes CHAR 20 F PSXT PSYT PSZT TIME1 - -(PSXT) DOUBLE units CHAR 12 T degrees_east - point_spacing CHAR 4 T even - orig_file_axname - CHAR 4 F PSXT - -(PSYT1) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 6 T uneven - edges CHAR 9 F PSYTedges - orig_file_axname - CHAR 4 F PSYT - -(PSYTedges) DOUBLE edges CHAR 1 F - orig_file_axname - CHAR 9 F PSYTedges - -(PSZT1) DOUBLE units CHAR 6 T METERS - positive CHAR 4 T down - point_spacing CHAR 6 T uneven - edges CHAR 9 F PSZTedges - orig_file_axname - CHAR 4 F PSZT - -(PSZTedges) DOUBLE edges CHAR 1 F - orig_file_axname - CHAR 9 F PSZTedges - -(TIME17) DOUBLE units CHAR 30 T hour since 1980-01-14 14:00:00 - time_origin CHAR 20 T 14-JAN-1980 14:00:00 - orig_file_axname - CHAR 5 F TIME1 - -(PSXT91_108) DOUBLE child_axis CHAR 1 F - units CHAR 12 T degrees_east - point_spacing CHAR 4 T even - orig_file_axname - CHAR 10 F PSXT91_108 - -(PSYT35_56) DOUBLE child_axis CHAR 1 F - units CHAR 13 T degrees_north - orig_file_axname - CHAR 9 F PSYT35_56 - -(PSZT1_10) DOUBLE child_axis CHAR 1 F - units CHAR 6 T METERS - positive CHAR 4 T down - orig_file_axname - CHAR 8 F PSZT1_10 - - TEMP FLOAT parent_grid CHAR 6 F PS3DT2 - slab_min_index INT 4 F 91 35 1 0 - slab_max_index INT 4 F 108 56 10 0 - missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 11 T TEMPERATURE - history CHAR 12 T From gt4d011 - units CHAR 6 T deg. C - -(PSYT35_55) DOUBLE child_axis CHAR 1 F - units CHAR 13 T degrees_north - orig_file_axname - CHAR 9 F PSYT35_55 - - SALT FLOAT parent_grid CHAR 6 F PS3DT2 - slab_min_index INT 4 F 91 35 1 0 - slab_max_index INT 4 F 108 55 10 0 - missing_value FLOAT 1 T 0.01 - _FillValue FLOAT 1 T 0.01 - long_name CHAR 26 T (SALINITY(ppt) - 35) /1000 - history CHAR 12 T From gt4d011 - units CHAR 22 T frac. by wt. less .035 - - PS3DU2 CHAR axes CHAR 20 F PSXU PSYU PSZT TIME1 - -(PSXU) DOUBLE units CHAR 12 T degrees_east - point_spacing CHAR 4 T even - orig_file_axname - CHAR 4 F PSXU - -(PSYU) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 6 T uneven - edges CHAR 9 F PSYUedges - orig_file_axname - CHAR 4 F PSYU - -(PSYUedges) DOUBLE edges CHAR 1 F - orig_file_axname - CHAR 9 F PSYUedges - -(PSXU91_108) DOUBLE child_axis CHAR 1 F - units CHAR 12 T degrees_east - point_spacing CHAR 4 T even - orig_file_axname - CHAR 10 F PSXU91_108 - -(PSYU35_55) DOUBLE child_axis CHAR 1 F - units CHAR 13 T degrees_north - orig_file_axname - CHAR 9 F PSYU35_55 - - U FLOAT parent_grid CHAR 6 F PS3DU2 - slab_min_index INT 4 F 91 35 1 0 - slab_max_index INT 4 F 108 55 10 0 - missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 14 T ZONAL VELOCITY - history CHAR 12 T From gt4d011 - units CHAR 6 T cm/sec - - V FLOAT parent_grid CHAR 6 F PS3DU2 - slab_min_index INT 4 F 91 35 1 0 - slab_max_index INT 4 F 108 55 10 0 - missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 19 T MERIDIONAL VELOCITY - history CHAR 12 T From gt4d011 - units CHAR 6 T cm/sec - - PS3DW2 CHAR axes CHAR 20 F PSXT PSYT PSZW TIME1 - -(PSZW) DOUBLE units CHAR 6 T METERS - positive CHAR 4 T down - point_spacing CHAR 6 T uneven - edges CHAR 9 F PSZWedges - orig_file_axname - CHAR 4 F PSZW - -(PSZWedges) DOUBLE edges CHAR 1 F - orig_file_axname - CHAR 9 F PSZWedges - -(PSYT36_55) DOUBLE child_axis CHAR 1 F - units CHAR 13 T degrees_north - orig_file_axname - CHAR 9 F PSYT36_55 - -(PSZW1_10) DOUBLE child_axis CHAR 1 F - units CHAR 6 T METERS - positive CHAR 4 T down - orig_file_axname - CHAR 8 F PSZW1_10 - - W FLOAT parent_grid CHAR 6 F PS3DW2 - slab_min_index INT 4 F 91 36 1 0 - slab_max_index INT 4 F 108 55 10 0 - missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 17 T VERTICAL VELOCITY - history CHAR 12 T From gt4d011 - units CHAR 6 T cm/sec - - PS2DU2 CHAR axes CHAR 22 F PSXU PSYU NORMAL TIME1 - - TAUX FLOAT parent_grid CHAR 6 F PS2DU2 - slab_min_index INT 4 F 91 35 1 0 - slab_max_index INT 4 F 108 55 1 0 - missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 17 T ZONAL WIND STRESS - history CHAR 12 T From gt4d011 - units CHAR 11 T dynes/cm**2 - - TAUY FLOAT parent_grid CHAR 6 F PS2DU2 - slab_min_index INT 4 F 91 35 1 0 - slab_max_index INT 4 F 108 55 1 0 - missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 22 T MERIDIONAL WIND STRESS - history CHAR 12 T From gt4d011 - units CHAR 11 T dynes/cm**2 - -(PSYU35_56) DOUBLE child_axis CHAR 1 F - units CHAR 13 T degrees_north - orig_file_axname - CHAR 9 F PSYU35_56 - - PSI FLOAT parent_grid CHAR 6 F PS2DU2 - slab_min_index INT 4 F 91 35 1 0 - slab_max_index INT 4 F 108 56 1 0 - missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 15 T STREAM FUNCTION - history CHAR 12 T From gt4d011 - units CHAR 9 T cm**3/sec - - -! error messages - -set mode ignore - -! no argument -sho att/all - -! dataset not open -can data 2 -show att/all temp[d=2] - -! variable not in default dataset -use ocean_atlas_temp -show att/all salt - -! nonexistent attribute -use gt4d011 -sho att salt.nonsense - -can data/all - -! No datasets open -sho att/all . - -can mode ignore - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! attributes of string variables -let/title="my strings" var_b = {"Seattle", "Skykomish", "Snoqualmie"} -sho att/all var_b - attributes for user-defined variables - var_b.long_name = my strings - var_b.missing_value = -1.E+34 - -save/clobber/file=a.nc var_b -sp echo "bn_attributes.jnl --- 1 attributes of string variables" >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! Demonstrate `var,return=` output for attributes - -use gt4d011 - -! RETURN=size gives length of attribute: -! # values for numeric attributes -! string length for string attributes - -show att/all temp - attributes for dataset: ./data/gt4d011.cdf - TEMP.parent_grid = PS3DT2 - TEMP.slab_min_index = 91, 35, 1, 0 - TEMP.slab_max_index = 108, 56, 10, 0 - TEMP.missing_value = -1.E+34 - TEMP._FillValue = -1.E+34 - TEMP.long_name = TEMPERATURE - TEMP.history = From gt4d011 - TEMP.units = deg. C - -say `temp.2,return=size` - !-> MESSAGE/CONTINUE 4 -4 -say `temp.6,return=size` - !-> MESSAGE/CONTINUE 11 -11 - -say `..history,return=size` - !-> MESSAGE/CONTINUE 28 -28 - -! test0 is from the netcdf distribution; -! vars and attrs of all types -use test0 -say `broiled.acd,return=size` - !-> MESSAGE/CONTINUE 2 -2 -say `broiled.acf,return=size` - !-> MESSAGE/CONTINUE 3 -3 - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! define variables to contain attribute value(s) - -use ocean_atlas_temp -let a = temp.missing_value -list a - VARIABLE : TEMP.MISSING_VALUE - FILENAME : ocean_atlas_temp.cdf - X : 1 - -1.000E+34 - -use ocean_atlas_temp -let s = temp.units -list s - VARIABLE : TEMP.UNITS - FILENAME : ocean_atlas_temp.cdf - X : 1 - "Deg C" - -can data/all - -! global attribute -use err491_attval -let s = ..remark -list s - VARIABLE : ..REMARK - DATA SET : K-Bay OAR3d model (200m) - FILENAME : err491_attval.cdf - X : 1 - "Generated by oar3d " - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! Variables containing number of variables, attributes, dimensions, -! lists of variable names, attribute names, coordinate variables, -! global attribute names - -! Given a variable, return the attribute names -use coads_climatology -let nat = sst.nattrs - -let anames = sst.attnames -list nat - VARIABLE : SST.NATTRS - FILENAME : coads_climatology.cdf - X : 1 - 5.000 -list anames - VARIABLE : SST.ATTNAMES - FILENAME : coads_climatology.cdf - SUBSET : 5 points (X) - 1 / 1:"missing_value" - 2 / 2:"_FillValue" - 3 / 3:"long_name" - 4 / 4:"history" - 5 / 5:"units" - -! Given a variable, return the coordinate number and names -let nd = sst.ndims -let cnames = sst.dimnames -list nd - VARIABLE : SST.NDIMS - FILENAME : coads_climatology.cdf - X : 1 - 3.000 -list cnames - VARIABLE : SST.DIMNAMES - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - 1 / 1:"COADSX" - 2 / 2:"COADSY" - 3 / 3:"TIME7" - -! ..varnames -can data/all -use gt4d011 -use coads_climatology - -let nv = ..nvars -let nd = ..ndims -let vnames = ..varnames -list/d=1 nv, nd - DATA SET: ./data/gt4d011.cdf - X: 1 - Column 1: NV is ..NVARS - Column 2: ND is ..NDIMS - NV ND -I / *: 12.00 21.00 -list/d=1 vnames - VARIABLE : ..VARNAMES - FILENAME : gt4d011.cdf - SUBSET : 12 points (X) - 1 / 1:"PS3DT2" - 2 / 2:"TEMP" - 3 / 3:"SALT" - 4 / 4:"PS3DU2" - 5 / 5:"U" - 6 / 6:"V" - 7 / 7:"PS3DW2" - 8 / 8:"W" - 9 / 9:"PS2DU2" - 10 / 10:"TAUX" - 11 / 11:"TAUY" - 12 / 12:"PSI" - -let vnames = ..varnames -list/d=coads_climatology vnames - VARIABLE : ..VARNAMES - FILENAME : coads_climatology.cdf - X : 1 - "SST" -list/d=gt4d011 vnames - VARIABLE : ..VARNAMES - FILENAME : gt4d011.cdf - SUBSET : 12 points (X) - 1 / 1:"PS3DT2" - 2 / 2:"TEMP" - 3 / 3:"SALT" - 4 / 4:"PS3DU2" - 5 / 5:"U" - 6 / 6:"V" - 7 / 7:"PS3DW2" - 8 / 8:"W" - 9 / 9:"PS2DU2" - 10 / 10:"TAUX" - 11 / 11:"TAUY" - 12 / 12:"PSI" - -can data/all -can var/all - -! global ..dimnames - -use coads_climatology -use gt4d011 - -let vnames = ..dimnames[d=1] -let lnames = ..dimnames[d=2] -list vnames - VARIABLE : ..DIMNAMES[D=coads_climatology] - SUBSET : 3 points (X) - 1 / 1:"COADSX" - 2 / 2:"COADSY" - 3 / 3:"TIME7" -list lnames - VARIABLE : ..DIMNAMES[D=gt4d011] - SUBSET : 21 points (X) - 1 / 1:"grid_definition" - 2 / 2:"PSXT" - 3 / 3:"PSYT1" - 4 / 4:"PSYTedges" - 5 / 5:"PSZT1" - 6 / 6:"PSZTedges" - 7 / 7:"TIME17" - 8 / 8:"PSXT91_108" - 9 / 9:"PSYT35_56" - 10 / 10:"PSZT1_10" - 11 / 11:"PSYT35_55" - 12 / 12:"PSXU" - 13 / 13:"PSYU" - 14 / 14:"PSYUedges" - 15 / 15:"PSXU91_108" - 16 / 16:"PSYU35_55" - 17 / 17:"PSZW" - 18 / 18:"PSZWedges" - 19 / 19:"PSYT36_55" - 20 / 20:"PSZW1_10" - 21 / 21:"PSYU35_56" - -can var/all -can data/all - -! Global attributes ..attnames -use err491_attval - -let v = ..ndims -list v - VARIABLE : ..NDIMS - DATA SET : K-Bay OAR3d model (200m) - FILENAME : err491_attval.cdf - X : 1 - 3.000 - -let na = ..nattrs -list na - VARIABLE : ..NATTRS - DATA SET : K-Bay OAR3d model (200m) - FILENAME : err491_attval.cdf - X : 1 - 31.00 - -let gnames = ..attnames -list gnames - VARIABLE : ..ATTNAMES - DATA SET : K-Bay OAR3d model (200m) - FILENAME : err491_attval.cdf - SUBSET : 31 points (X) - 1 / 1:"simulation" - 2 / 2:"start_date" - 3 / 3:"history" - 4 / 4:"option" - 5 / 5:"run_mode" - 6 / 6:"srfc_bndry" - 7 / 7:"rad_penet" - 8 / 8:"dt_external" - 9 / 9:"dt_internal" - 10 / 10:"horiz_diff" - 11 / 11:"inv_prandtl" - 12 / 12:"min_slope" - 13 / 13:"title" - 14 / 14:"command" - 15 / 15:"remark" - 16 / 16:"x_units" - 17 / 17:"y_units" - 18 / 18:"z_units" - 19 / 19:"nx" - 20 / 20:"ny" - 21 / 21:"x_min" - 22 / 22:"x_max" - 23 / 23:"y_min" - 24 / 24:"y_max" - 25 / 25:"z_min" - 26 / 26:"z_max" - 27 / 27:"x_inc" - 28 / 28:"y_inc" - 29 / 29:"z_scale_factor" - 30 / 30:"z_add_offset" - 31 / 31:"node_offset" - -! attributes of variable number 2 - -use ocean_atlas_temp -use gt4d011 -let names = ..varnames -let anames = `names[i=2]`.attnames - !-> DEFINE VARIABLE anames = TEMP.attnames - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - - -!----- -! more on number of attributes - -can data/all -can var/all - -use ocean_atlas_temp -let nat = temp.nattrs -list nat - VARIABLE : TEMP.NATTRS - FILENAME : ocean_atlas_temp.cdf - X : 1 - 5.000 - -list (`temp,return=xaxis`).nattrs - !-> list (XAX_LEV9421_380).nattrs - VARIABLE : (XAX_LEV9421_380).NATTRS - FILENAME : ocean_atlas_temp.cdf - X : 1 - 4.000 - -use gt4d011 -say `temp.nattrs[d=1]` - !-> MESSAGE/CONTINUE 5 -5 - -def sym xaxnam "(`temp[d=1],return=xaxis`)" - !-> def sym xaxnam "(XAX_LEV9421_380)" -list `($xaxnam).nattrs[d=1]` - !-> list 4 - VARIABLE : constant - 4.000 - -say `(yax_lev94).nattrs[d=1]` - !-> MESSAGE/CONTINUE 3 -3 - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! more on access to attribute names and values as variables - -use coads_climatology -use levitus_climatology -use ocean_atlas_temp -use gt4d011 - -let a = temp.units -list/d=3 a - VARIABLE : TEMP.UNITS - FILENAME : ocean_atlas_temp.cdf - X : 1 - "Deg C" - -list temp.units[d=3] - VARIABLE : TEMP.UNITS[D=ocean_atlas_temp] - FILENAME : ocean_atlas_temp.cdf - "Deg C" -list/d=3 temp.history - VARIABLE : TEMP.HISTORY - FILENAME : ocean_atlas_temp.cdf - "From ocean_atlas_monthly" - -can data/all -can var/all - -use test0.nc -sh data/att - currently SET data sets: - 1> ./data/test0.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . glob CHAR 16 F Global attribute - - broiled CHAR act CHAR 16 F text string - 123 - acb BYTE 1 F 10 - acs SHORT 1 F -200 - acl INT 1 F 17000 - acf FLOAT 3 F -2 1 0 - acd DOUBLE 2 F -1 2.718282 - - the_bullet BYTE - - order SHORT - - rigue INT - - a_loan FLOAT - - entendre DOUBLE - - cscalar CHAR - - dscalar DOUBLE - - cnodata CHAR - - bnodata BYTE - - snodata SHORT - - inodata INT - - fnodata FLOAT - - dnodata DOUBLE - -(i) INT orig_file_axname - CHAR 1 F i - -(j) FLOAT orig_file_axname - CHAR 1 F j - -(l) BYTE orig_file_axname - CHAR 1 F l - - -let a= broiled.acl -list a - VARIABLE : BROILED.ACL - FILENAME : test0.nc - X : 1 - 17000. - -let a= broiled.acf -list a - VARIABLE : BROILED.ACF - FILENAME : test0.nc - SUBSET : 3 points (X) - 1 / 1: -2.000 - 2 / 2: 1.000 - 3 / 3: 0.000 - -list/i=2 a - VARIABLE : BROILED.ACF - FILENAME : test0.nc - X : 2 - 1.000 - -list a[i=2:3] - VARIABLE : BROILED.ACF - FILENAME : test0.nc - SUBSET : 2 points (X) - 2 / 2: 1.000 - 3 / 3: 0.000 - -use coads_climatology -list sst.dimnames[i=2] - VARIABLE : SST.DIMNAMES[I=2] - FILENAME : coads_climatology.cdf - X : 2 - "COADSY" - -list/i=3 sst.dimnames - VARIABLE : SST.DIMNAMES - FILENAME : coads_climatology.cdf - X : 3 - "TIME7" -let a= sst.dimnames - -list a - VARIABLE : SST.DIMNAMES - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - 1 / 1:"COADSX" - 2 / 2:"COADSY" - 3 / 3:"TIME7" -list a[i=1] - VARIABLE : SST.DIMNAMES - FILENAME : coads_climatology.cdf - X : 1 - "COADSX" - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! keyword . to refer to global properties and attributes - -use gt4d011 -list ..nvars - VARIABLE : ..NVARS - FILENAME : gt4d011.cdf - X : 1 - 12.00 - -use coads_climatology - -list/d=1 ..nvars - VARIABLE : ..NVARS - FILENAME : gt4d011.cdf - X : 1 - 12.00 -list/d=2 ..nvars - VARIABLE : ..NVARS - FILENAME : coads_climatology.cdf - X : 1 - 1.000 - -sh data - currently SET data sets: - 1> ./data/gt4d011.cdf - name title I J K L - TEMP TEMPERATURE 91:108 35:56 1:10 1:25 - SALT (SALINITY(ppt) - 35) /1000 91:108 35:55 1:10 1:25 - U ZONAL VELOCITY 91:108 35:55 1:10 1:25 - V MERIDIONAL VELOCITY 91:108 35:55 1:10 1:25 - W VERTICAL VELOCITY 91:108 36:55 1:10 1:25 - TAUX ZONAL WIND STRESS 91:108 35:55 ... 1:25 - TAUY MERIDIONAL WIND STRESS 91:108 35:55 ... 1:25 - PSI STREAM FUNCTION 91:108 35:56 ... 1:25 - - 2> ./data/coads_climatology.cdf (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - -list/d=2 ..varnames - VARIABLE : ..VARNAMES - FILENAME : coads_climatology.cdf - "SST" - -list/d=2 ..dimnames - VARIABLE : ..DIMNAMES - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - 1 / 1:"COADSX" - 2 / 2:"COADSY" - 3 / 3:"TIME7" -list/d=1 ..dimnames - VARIABLE : ..DIMNAMES - FILENAME : gt4d011.cdf - SUBSET : 21 points (X) - 1 / 1:"grid_definition" - 2 / 2:"PSXT" - 3 / 3:"PSYT1" - 4 / 4:"PSYTedges" - 5 / 5:"PSZT1" - 6 / 6:"PSZTedges" - 7 / 7:"TIME17" - 8 / 8:"PSXT91_108" - 9 / 9:"PSYT35_56" - 10 / 10:"PSZT1_10" - 11 / 11:"PSYT35_55" - 12 / 12:"PSXU" - 13 / 13:"PSYU" - 14 / 14:"PSYUedges" - 15 / 15:"PSXU91_108" - 16 / 16:"PSYU35_55" - 17 / 17:"PSZW" - 18 / 18:"PSZWedges" - 19 / 19:"PSYT36_55" - 20 / 20:"PSZW1_10" - 21 / 21:"PSYU35_56" - -list/d=1 ..nattrs - VARIABLE : ..NATTRS - FILENAME : gt4d011.cdf - X : 1 - 1.000 -list/d=1 ..attnames - VARIABLE : ..ATTNAMES - FILENAME : gt4d011.cdf - "history" - -list/d=1 ..ndims - VARIABLE : ..NDIMS - FILENAME : gt4d011.cdf - X : 1 - 21.00 -list/d=2 ..ndims - VARIABLE : ..NDIMS - FILENAME : coads_climatology.cdf - X : 1 - 3.000 - -list ..nvars[d=1] - VARIABLE : ..NVARS[D=gt4d011] - FILENAME : gt4d011.cdf - X : 1 - 12.00 -sh var - Created by DEFINE VARIABLE: - -let pp = ..varnames -list pp[d=1] - VARIABLE : ..VARNAMES - FILENAME : gt4d011.cdf - SUBSET : 12 points (X) - 1 / 1:"PS3DT2" - 2 / 2:"TEMP" - 3 / 3:"SALT" - 4 / 4:"PS3DU2" - 5 / 5:"U" - 6 / 6:"V" - 7 / 7:"PS3DW2" - 8 / 8:"W" - 9 / 9:"PS2DU2" - 10 / 10:"TAUX" - 11 / 11:"TAUY" - 12 / 12:"PSI" - -set data 1 -list/d=2 pp - VARIABLE : ..VARNAMES - FILENAME : coads_climatology.cdf - X : 1 - "SST" - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! Editing attributes: add new attributes to a variable. - -use ocean_atlas_temp -def att/type=string temp.strval = 2 -def att/type=float temp.floatval = 22 -def att temp.pp = {1.5, 1.9} -def att temp.some_text = "some text about the TEMP variable" -sh att/all temp - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.missing_value = -1.E+34 - TEMP._FillValue = -1.E+34 - TEMP.long_name = Temperature - TEMP.history = From ocean_atlas_monthly - TEMP.units = Deg C - TEMP.strval = 2 - TEMP.floatval = 22 - TEMP.pp = 1.5, 1.9 - TEMP.some_text = some text about the TEMP variable - -! Now change some existing attributes (this redefines -! the attribute, behaving like DEFINE AXIS...) - -def att temp.pp = {1.5, 1.9, 3.45, 7} -def att temp.some_text = "some different text" -sh att temp.pp - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.pp = 1.5, 1.9, 3.45, 7 -let var = temp.some_text -list/nohead var - "some different text" - -! add an attribute to a variable not in the default dataset - -use gt4d011 -def att/D=1 temp.morenew = 2 -sh att/all temp[d=1] - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.missing_value = -1.E+34 - TEMP._FillValue = -1.E+34 - TEMP.long_name = Temperature - TEMP.history = From ocean_atlas_monthly - TEMP.units = Deg C - TEMP.strval = 2 - TEMP.floatval = 22 - TEMP.pp = 1.5, 1.9, 3.45, 7 - TEMP.some_text = some different text - TEMP.morenew = 2 - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! Edit existing attributes on variables - -use ocean_atlas_temp -sh att/all temp - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.missing_value = -1.E+34 - TEMP._FillValue = -1.E+34 - TEMP.long_name = Temperature - TEMP.history = From ocean_atlas_monthly - TEMP.units = Deg C -set att temp.long_name = "set title via SET ATT temp.longname" -set att temp.units = "Centigrade" -plot/y=0/l=1 temp - -! two settings of the missing value change both the missing and bad flags -set att temp.missing_value = 12 -set att temp.missing_value = 12 -shade/L=2 temp - -!----- -! access and edit attributes of coordinate variables. -! Specify names of coord variables inside parentheses - -use ocean_atlas_temp -use coads_climatology - -! Get attributes of a coordinate variable - -list (coadsx).units - VARIABLE : (COADSX).UNITS - FILENAME : coads_climatology.cdf - "degrees_east" -list (coadsx).modulo - VARIABLE : (COADSX).MODULO - FILENAME : coads_climatology.cdf - " " -sho att/all (coadsx) - attributes for dataset: ./data/coads_climatology.cdf - (COADSX).units = degrees_east - (COADSX).modulo = - (COADSX).point_spacing = even - (COADSX).orig_file_axname = COADSX - -! Set the attribute output flag - -set att/output (coadsx).modulo - -! Define a new attribute on a coordinate axis - -define att (`sst,return=xaxis`).newatt = 3 - !-> define att (COADSX).newatt = 3 -set att/output (`sst,return=xaxis`).newatt - !-> set att/output (COADSX).newatt -save/clobber/file=a.nc/x=130w/y=0 sst - -sp echo "bn_attributes.jnl --- 2 access and edit attributes of coordinate variables." >> all_ncdump.out -sp ncdump -c a.nc >> all_ncdump.out - -! modfalse.nc is a file with modulo attribute on x axis -! explicitly set to FALSE - -use modfalse.nc -set att/output (`sst,return=xaxis`).modulo - !-> set att/output (COADSX81_81).modulo -save/clobber/file=a.nc sst -sp echo "bn_attributes.jnl --- 3 modulo set to false" >> all_ncdump.out -sp ncdump -c a.nc >> all_ncdump.out - -! Reset attributes as in SET AXIS - -use gt4d011 -set view left; shade/y=0/L=1 temp -set att (`temp,return=zaxis`).positive="up" - !-> set att (PSZT1).positive="up" -set view right; shade/y=0/L=1 temp -can data gt4d011 - -set data coads_climatology -sho att (coadsx).modulo - attributes for dataset: ./data/coads_climatology.cdf - (COADSX).modulo = -set att (coadsx).modulo=360 - -! Note here that Ferret is using the name TIME1 instead of TIME. -! axis still found and edited. - -set att (`sst,return=taxis`).time_origin="1-jan-1980" - !-> set att (TIME7).time_origin="1-jan-1980" -list/x=130w/y=0 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (TIME) - LONGITUDE: 131W - LATITUDE : 1S - 131W - 105 - 16-JAN-1980 / 1: 25.02 - 15-FEB-1980 / 2: 26.35 - 17-MAR-1980 / 3: 26.98 - -!(coordvar).attname[d=1] -! Can have the parentheses included in a symbol - -def sym xaxnam "(`temp[d=1],return=xaxis`)" - !-> def sym xaxnam "(XAX_LEV9421_380)" -list `($xaxnam).nattrs[d=1]` - !-> list 4 - VARIABLE : constant - 4.000 - -! Or parentheses added when symbol is evaluated -def sym yaxnam "`temp[d=1],return=yaxis`" - !-> def sym yaxnam "YAX_LEV94" -list `(($yaxnam)).nattrs[d=1]` - !-> list 3 - VARIABLE : constant - 3.000 - -! just the name of the axis -list (`sst,return=xaxis`).nattrs[d=2] - !-> list (COADSX).nattrs[d=2] - VARIABLE : (COADSX).NATTRS[D=coads_climatology] - FILENAME : coads_climatology.cdf - X : 1 - 5.000 - -! using dimension names from the linked list structure - -let cnames = sst.dimnames -list cnames - VARIABLE : SST.DIMNAMES - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - 1 / 1:"COADSX" - 2 / 2:"COADSY" - 3 / 3:"TIME7" -show axis (`cnames[i=1]`) - !-> show axis (COADSX) - name axis # pts start end -list (`cnames[i=1]`).nattrs - !-> list (COADSX).nattrs - VARIABLE : (COADSX).NATTRS - FILENAME : coads_climatology.cdf - X : 1 - 5.000 - -! Intentional errors. - -SET MODE IGNORE - -! Need parentheses around axis name. -list coadsx.units -sh att/all coadsy - -! Cannot change the direction of an axis -use modfalse.nc -set att (`sst,return=xaxis`).axis = "Z" - !-> set att (COADSX81_81).axis = "Z" - -can view - -can mode ignore -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! Edit attributes: inherit all attrs from another variable - -use gt4d011 -sh att/all salt - attributes for dataset: ./data/gt4d011.cdf - SALT.parent_grid = PS3DT2 - SALT.slab_min_index = 91, 35, 1, 0 - SALT.slab_max_index = 108, 55, 10, 0 - SALT.missing_value = 0.01 - SALT._FillValue = 0.01 - SALT.long_name = (SALINITY(ppt) - 35) /1000 - SALT.history = From gt4d011 - SALT.units = frac. by wt. less .035 - -set att/like=temp salt -sh att/all salt - attributes for dataset: ./data/gt4d011.cdf - SALT.missing_value = 0.01 - SALT._FillValue = 0.01 - SALT.parent_grid = PS3DT2 - SALT.slab_min_index = 91, 35, 1, 0 - SALT.slab_max_index = 108, 56, 10, 0 - SALT.long_name = TEMPERATURE - SALT.history = From gt4d011 - SALT.units = deg. C - -! If a user variable is defined based on another variable, -! it gets only default attributes. All attributes must be -! specified with qualifiers (/UNITS=) or with DEF ATT - -! Define a new attribute on a file variable, then a new var as fcn of that - -define attribute temp.description = "description of TEMP in gt4d011" -let temp2 = temp*2 -sh att/all temp2 - attributes for user-defined variables - temp2.long_name = TEMP*2 - temp2.missing_value = -1.E+34 - -! Can inherit attributes explicitly, either all at once or individually. -def att temp2.units = "`temp,return=units`" - !-> def att temp2.units = "deg. C" -sh att/all temp2 - attributes for user-defined variables - temp2.long_name = TEMP*2 - temp2.missing_value = -1.E+34 - temp2.units = deg. C - -let temp3 = temp*3 -set att/like=temp temp3 -sh att/all temp3 - attributes for user-defined variables - temp3.missing_value = -1.E+34 - temp3.parent_grid = PS3DT2 - temp3.slab_min_index = 91, 35, 1, 0 - temp3.slab_max_index = 108, 56, 10, 0 - temp3.long_name = TEMPERATURE - temp3.history = From gt4d011 - temp3.units = deg. C - temp3.description = description of TEMP in gt4d011 - -can var temp2 -let/units="degrees C"/title="my new TEMP"/bad=`temp,return=bad` temp2 = temp*2 - !-> DEFINE VARIABLE/units="degrees C"/title="my new TEMP"/bad=-9.999999790214768E+33 temp2 = temp*2 -sh att/all temp2 - attributes for user-defined variables - temp2.long_name = my new TEMP - temp2.units = degrees C - temp2.missing_value = -1.E+34 -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! Edit attributes, changing type -! change values, type, and length of attributes. - -use ocean_atlas_temp -def att/type=string temp.strval = 2 -def att/type=float temp.floatval = 22 -def att temp.pp = {1.5, 1.9} -def att temp.some_text = "some text about the TEMP variable" -sh att/all temp - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.missing_value = -1.E+34 - TEMP._FillValue = -1.E+34 - TEMP.long_name = Temperature - TEMP.history = From ocean_atlas_monthly - TEMP.units = Deg C - TEMP.strval = 2 - TEMP.floatval = 22 - TEMP.pp = 1.5, 1.9 - TEMP.some_text = some text about the TEMP variable - -! Change attribute values - -set att temp.pp = {1.5, 1.9, 3.45, 7} -set att temp.some_text = "some different text" -sh att temp.pp - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.pp = 1.5, 1.9, 3.45, 7 -let var = temp.some_text -list/nohead var - "some different text" - -! Now change attribute types - -set att temp.pp = "PP now has some text." -set att temp.some_text = 745. - -! Does changing the type of an attribute cause any trouble for a variable -! defined based on that variable? - -list/nohead var - 745.0 -let pq = temp.pp -list pq - VARIABLE : TEMP.PP - FILENAME : ocean_atlas_temp.cdf - X : 1 - "PP now has some text." - -! set an attribute when the variable is not in the default dataset. - -use gt4d011 -def att/d=1 temp.morenew = 33 -sho att/all temp[d=1] - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.missing_value = -1.E+34 - TEMP._FillValue = -1.E+34 - TEMP.long_name = Temperature - TEMP.history = From ocean_atlas_monthly - TEMP.units = Deg C - TEMP.strval = 2 - TEMP.floatval = 22 - TEMP.pp = PP now has some text. - TEMP.some_text = 745 - TEMP.morenew = 33 - -! Edit the text in some of the attributes, make a plot where we see -! the resulting change in title and units. - -set data ocean_atlas_temp -set att temp.long_name = "Ocean Atlas Temperature" -set att temp.units = "Centigrade" -shade/L=2 temp - -! Define an attr that already exists: redefines - -def att temp.pp = {1.5, 1.9, 3} -let pq = temp.pp -list pq - VARIABLE : TEMP.PP - FILENAME : ocean_atlas_temp.cdf - SUBSET : 3 points (X) - 1 / 1: 1.500 - 2 / 2: 1.900 - 3 / 3: 3.000 - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -! When we CANCEL MODE upcase_output, writing a netcdf file preserves -! case of variable and axis names. This file has lower case and some -! mixed-case names. - -use err491_attval.cdf -sp echo "bn_attributes.jnl --- 4 CANCEL MODE upcase_output; original file:" >> all_ncdump.out -sp ncdump -h data/err491_attval.cdf >> all_ncdump.out -save/clobber/file=a.nc elev[i=3,j=2:4] -sp echo "bn_attributes.jnl --- 5 before CANCEL MODE upcase_output" >> all_ncdump.out -sp ncdump -h a.nc >> all_ncdump.out - -cancel mode upcase_output -save/clobber/file=a.nc elev[i=3,j=2:4] -sp echo "bn_attributes.jnl --- 6 after CANCEL MODE upcase_output" >> all_ncdump.out -sp ncdump -h a.nc >> all_ncdump.out - -set mode/last upcase_output - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- - -! outtput flags to control attribute output to netcdf files - -! SET ATT/OUTPUT varname.attname sets individual attr to be written -! SET ATT/OUTPUT=all varname output all attributes defined when var written -! SET ATT/OUTPUT=default varname output default Ferret attributes -! SET ATT/OUTPUT=none varname output no attrbutes - -let aa = 12 -let bb = {3,4.5,6,7,4} - -def att bb.my_title = "This is my new variable bb" -def att bb.another_attr = 6 - -! Output just one of these new attributes - -set att/output bb.my_title - -save/clobber/file=a.nc aa,bb -sp echo "bn_attributes.jnl --- 7 outtput flags to control attribute output" >> all_ncdump.out -sp ncdump -c a.nc >> all_ncdump.out - -! Output all attributes - -set att/output=all bb -save/clobber/file=a.nc aa,bb -sp echo "bn_attributes.jnl --- 8 outtput all flags" >> all_ncdump.out -sp ncdump -c a.nc >> all_ncdump.out - -! Just output the default attributes - -set att/output=default bb -save/clobber/file=a.nc bb -sp echo "bn_attributes.jnl --- 9 Just output the default attributes" >> all_ncdump.out -sp ncdump -c a.nc >> all_ncdump.out - -! Output none of the attributes for aa - -set att/output=none aa -save/clobber/file=a.nc aa,bb -sp echo "bn_attributes.jnl --- 10 Output none of the attributes for aa" >> all_ncdump.out -sp ncdump -c a.nc >> all_ncdump.out - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - - -!----- -! CANCEL ATTRIBUTE/OUTPUT= to surpress output of attributes - -use ocean_atlas_temp -sh att/all (`temp,return=xaxis`) - !-> sh att/all (XAX_LEV9421_380) - attributes for dataset: ./data/ocean_atlas_temp.cdf - (XAX_LEV9421_380).units = degrees_east - (XAX_LEV9421_380).modulo = - (XAX_LEV9421_380).point_spacing = even - (XAX_LEV9421_380).orig_file_axname = XAX_LEV9421_380 - -! Surpress output of existing attribute -can att/out (`temp,return=xaxis`).point_spacing - !-> can att/out (XAX_LEV9421_380).point_spacing - -! Surpress output of an attribute that Ferret would otherwise add. - -can att/out (`temp,return=xaxis`).axis - !-> can att/out (XAX_LEV9421_380).axis -save/file=a.nc/clobber temp -sp echo "bn_attributes.jnl --- 11 Surpress output of an attribute that Ferret would otherwise add." >> all_ncdump.out -sp ncdump -h a.nc >> all_ncdump.out - -! subregions create child axes with new names -! Check that settings hold for such an output file. - -set reg/x=300:360/y=30:45 -sh att/all (`temp,return=xaxis`) - !-> sh att/all (XAX_LEV9421_380) - attributes for dataset: ./data/ocean_atlas_temp.cdf - (XAX_LEV9421_380).units = degrees_east - (XAX_LEV9421_380).modulo = - (XAX_LEV9421_380).point_spacing = even - (XAX_LEV9421_380).orig_file_axname = XAX_LEV9421_380 - (XAX_LEV9421_380).axis = 1 -can att/out (`temp,return=xaxis`).point_spacing - !-> can att/out (XAX_LEV9421_380).point_spacing -can att/out (`temp,return=xaxis`).axis - !-> can att/out (XAX_LEV9421_380).axis -save/file=a.nc/clobber temp -sp echo "bn_attributes.jnl --- 12 Check that settings hold for child axis." >> all_ncdump.out -sp ncdump -h a.nc >> all_ncdump.out - -! cancel output of attributes of the variable itself -can region -sh att/all temp - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.missing_value = -1.E+34 - TEMP._FillValue = -1.E+34 - TEMP.long_name = Temperature - TEMP.history = From ocean_atlas_monthly - TEMP.units = Deg C -can att/out temp.history -can att/out temp.long_name -save/file=a.nc/clobber temp -sp echo "bn_attributes.jnl --- 13 cancel output of attributes of the variable." >> all_ncdump.out -sp ncdump -h a.nc >> all_ncdump.out - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! Read EZ ascii, delimited, and stream data files, -! add attributes to their variables. - -! read file as an ez file - -file/var="a1,a2,a3" EZ.DAT -def att a1.three={1,2,3} -sh att/all a1 - attributes for dataset: ./data/EZ.DAT - a1.long_name = a1 - a1.missing_value = -1.E+34 - a1.three = 1, 2, 3 -sh dat/att - currently SET data sets: - 1> ./data/EZ.DAT (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 6 F EZ.DAT - - a1 DOUBLE long_name CHAR 2 T a1 - missing_value DOUBLE 1 T -1.E+34 - three FLOAT 3 T 1 2 3 - - a2 DOUBLE long_name CHAR 2 T a2 - missing_value DOUBLE 1 T -1.E+34 - - a3 DOUBLE long_name CHAR 2 T a3 - missing_value DOUBLE 1 T -1.E+34 - -save/file=a.nc/clobber a1,a2,a3 -sp echo "bn_attributes.jnl --- 14 attributes of data from ez data." >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - -! now read it as a delimited file - -can data/all - -columns/delim=" " EZ.DAT -def att/type=string v1.strval = 2 -set att/output v1.strval -sh att/all v1 - attributes for dataset: ./data/EZ.DAT - V1.long_name = V1 - V1.missing_value = -1.E+34 - V1.strval = 2 -save/clobber/file=a.nc v1,v4 -sp echo "bn_attributes.jnl --- 15 attributes of data from delimited data." >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - -! and a stream dataset - -def axis/x=1:1:1 xax -def axis/y=1:2:1 yax -def axis/z=1:3:1 zax -def axis/t=1:4:1 tax -def grid/x=xax/y=yax/z=zax/t=tax mygrid -file/format=str/var=num,num1/grid=mygrid/order=xyztv permutedBinaryTest.dat - -define att/type=string num.new = "a string attribute" -sh att/all num - attributes for dataset: ./permutedBinaryTest.dat - num.long_name = num - num.missing_value = -1.E+34 - num.new = a string attribute -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! manipulate attributes of user-defined variables - -let a = {12,14,15} -def att a.three={1,2,3} -set att/output a.three -def att a.four = {"theory"} -set att/output a.four -sh att/all a - attributes for user-defined variables - a.long_name = {12,14,15} - a.missing_value = -1.E+34 - a.three = 1, 2, 3 - a.four = theory -sh dat/att - currently SET data sets: -save/file=a.nc/clobber a -sp echo "bn_attributes.jnl --- 16 attributes of user vars" >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - - -!----- -! write global attributes (Note this implementation needs work; -! what is the right syntax?? Perhaps an undocumented feature for -! the first release) - -use err491_attval -set att/out=all . ! from the default data set - -save/file=a.nc/clobber elev -sp echo "bn_attributes.jnl --- 17 global attrs." >> all_ncdump.out -sp ncdump -h a.nc >> all_ncdump.out - -! Choose a single global attribute to write, from dataset 1 -can data/all -use err491_attval -use gt4d011 -set att/output/d=1 ..dt_internal -save/clobber/file=a.nc elev[d=1], temp[d=2,x=130w,k=1,y=-20:20] - -sp echo "bn_attributes.jnl --- 18 choose global attr to write" >> all_ncdump.out -sp ncdump -h a.nc >> all_ncdump.out - -! Note: this syntax does not work -! use err491_attval -! use ocean_atlas_temp -! set att/out ..min_slope[d=1] -! save/file=a.nc/clobber elev[d=1] - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- - -! File with scale_factor and add_offset -! If we request to write the variable with its scale factor -! and offset attributes, then the data and its missing and fill -! flags are rescaled. Lets us re-pack data on output, or specify -! new packing. - -use err491_attval -set att/output elev.scale_factor -set att/output elev.add_offset -set var/outtype=input elev - -save/clobber/file=a.nc/j=1 elev -sp echo "bn_attributes.jnl --- 19 scale and offset attr." >> all_ncdump.out - -! Both of these should be scaled the same by Ferret -use a.nc -list/j=1 elev[d=1], elev[d=2] - LONGITUDE: 135.5W(-135.5) to 135W(-135) - LATITUDE: 58.6N - T (day): 1.7837 - Column 1: ELEV[D=err491_attval] is Surface elevation (meter) - Column 2: ELEV[D=a] is Surface elevation (meter) - ELEV ELEV -135.51W / 1: .... .... -135.496W / 2: .... .... -135.483W / 3: .... .... -135.469W / 4: .... .... -135.456W / 5: .... .... -135.442W / 6: .... .... -135.429W / 7: .... .... -135.415W / 8: .... .... -135.402W / 9: .... .... -135.389W / 10: .... .... -135.375W / 11: .... .... -135.362W / 12: 2.940 2.940 -135.348W / 13: 2.940 2.940 -135.335W / 14: 2.940 2.940 -135.321W / 15: 2.940 2.940 -135.308W / 16: 2.940 2.940 -135.294W / 17: 2.940 2.940 -135.281W / 18: 2.940 2.940 -135.267W / 19: 2.940 2.940 -135.254W / 20: 2.940 2.940 -135.241W / 21: 2.940 2.940 -135.227W / 22: 2.940 2.940 -135.214W / 23: 2.940 2.940 -135.2W / 24: 2.940 2.940 -135.187W / 25: 2.940 2.940 -135.173W / 26: .... .... -135.16W / 27: .... .... -135.146W / 28: .... .... -135.133W / 29: .... .... -135.12W / 30: .... .... -135.106W / 31: .... .... -135.093W / 32: .... .... -135.079W / 33: .... .... -135.066W / 34: .... .... -135.052W / 35: .... .... -sp ncdump a.nc >> all_ncdump.out - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! Set type of data on output, uses netcdf call to output -! the requseted type. - -use gt4d011 -set var/bad=-1000 temp -set var/outtype=int4 temp -save/file=a.nc/clobber/y=1/k=1/L=1 temp -sp echo "bn_attributes.jnl --- 20 set data type on output int4" >> all_ncdump.out -sp ncdump a.nc | grep -A2 -i temp >> all_ncdump.out - -can data/all -use gt4d011 - -set var/outtype=double salt -save/clobber/file=a.nc/y=1/k=1/L=1 salt -sp echo "bn_attributes.jnl --- 21 set data type on output double" >> all_ncdump.out -sp ncdump a.nc | grep -A2 -i salt >> all_ncdump.out - -can data gt4d011 - -! Force output type to equal input type (should we have a MODE setting for this??) - -use test0 -let nam = ..varnames - -repeat/range=1:4/name=q (def sym va = nam[i=`q`]; sh sym va; \ - set var/outtype=input `($va)`;\ - if `q eq 1` THEN save/clobber/file=a.nc `($va)` \ - ELSE save/append/file=a.nc `($va)`) - !-> repeat/range=1:4/name=q (def sym va = nam[i=`q`]; sh sym va; set var/outtype=input `($va)`; if `q eq 1` THEN save/clobber/file=a.nc `($va)` ELSE save/append/file=a.nc `($va)`) -!-> REPEAT: Q:1 - !-> def sym va = nam[i=1] -VA = "nam[i=1]" - !-> set var/outtype=input broiled - !-> if 1 THEN save/clobber/file=a.nc `nam[i=1]` ELSE save/append/file=a.nc `nam[i=1]` - !-> LIST/FORMAT=CDF/clobber/file=a.nc broiled -!-> REPEAT: Q:2 - !-> def sym va = nam[i=2] -VA = "nam[i=2]" - !-> set var/outtype=input the_bullet - !-> if 0 THEN save/clobber/file=a.nc `nam[i=2]` ELSE save/append/file=a.nc `nam[i=2]` - !-> LIST/FORMAT=CDF/append/file=a.nc the_bullet -!-> REPEAT: Q:3 - !-> def sym va = nam[i=3] -VA = "nam[i=3]" - !-> set var/outtype=input order - !-> if 0 THEN save/clobber/file=a.nc `nam[i=3]` ELSE save/append/file=a.nc `nam[i=3]` - !-> LIST/FORMAT=CDF/append/file=a.nc order -!-> REPEAT: Q:4 - !-> def sym va = nam[i=4] -VA = "nam[i=4]" - !-> set var/outtype=input rigue - !-> if 0 THEN save/clobber/file=a.nc `nam[i=4]` ELSE save/append/file=a.nc `nam[i=4]` - !-> LIST/FORMAT=CDF/append/file=a.nc rigue - -sp echo "bn_attributes.jnl --- 22 outtype=input" >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - -set var/outtype=double a_loan -save/file=a.nc/clobber a_loan - -can data test0 - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! More tests of user-defined variables. Bug 1427, now fixed, problem with varid of user vars - -let v = {1,2,3,4} -let a = is_element_of(1,v) -let/title="hello" b = 1 -save/clobber/file=a.nc b -sp echo "bn_attributes.jnl --- 23 more user-defined vars" >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - - -!----- -! Bug 1492, now fixed, output user-defined or redefined attributes - -! A new setting for the point_spacing attribute using either SET or DEFINE - -use coads_vwnd -set att (`vwnd,return=xaxis`).point_spacing = "uneven" - !-> set att (COADSX).point_spacing = "uneven" -define att (`vwnd,return=yaxis`).point_spacing = "uneven" - !-> define att (COADSY).point_spacing = "uneven" -save/file=a.nc/clobber/L=1 vwnd - -sp echo "bn_attributes.jnl --- 24 output redefined attr" >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - -! new attribute written to file - -let t2 = 2*vwnd -DEFINE ATT/OUTPUT (`t2,return=yaxis`).new_att = "somthing" - !-> DEFINE ATT/OUTPUT (COADSY).new_att = "somthing" - -! shows up on the output of - -SHOW ATT/ALL (`t2,return=yaxis`) - !-> SHOW ATT/ALL (COADSY) - attributes for dataset: ./data/coads_vwnd.cdf - (COADSY).units = degrees_north - (COADSY).point_spacing = uneven - (COADSY).orig_file_axname = COADSY - (COADSY).new_att = somthing - -! Check the new attribute is saved to a file. (if we -! save uwnd to a file, it is output) - -save/file=a.nc/clobber/L=1 t2 - -sp echo "bn_attributes.jnl --- 25 output new attr on user-defined var" >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - - -! intentional errors - -set mode ignore_error - -! missing value and fill value too large for INT output. - -use gt4d011 -set var/outtype=int4 temp -save/file=a.nc/clobber/x=132w/k=1 temp -can data gt4d011 - -sp rm a.nc - -! specify incorrect output types - -use test0 -set var/outtype=char broiled - -set var/outtype=garbage broiled - -can mode ignore -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - - -!---!!!--- -! Manipulate attributes of axes from datasets -! A user-defined variable is used to refer to the axes. - -use gt4d011.cdf - -let t2 = t*temp -set att (`t2,return=xaxis`).units = "degrees" - !-> set att (PSXT).units = "degrees" -sh att/all (`t2,return=xaxis`) - !-> sh att/all (PSXT) - attributes for dataset: ./data/gt4d011.cdf - (PSXT).units = degrees - (PSXT).point_spacing = even - (PSXT).orig_file_axname = PSXT -set att/output (`t2,return=xaxis`).point_spacing - !-> set att/output (PSXT).point_spacing -save/file=a.nc/clobber/L=1 t2 - -sp echo "bn_attributes.jnl --- 26 attributes of axes" >> all_ncdump.out - -sp ncdump -h a.nc >> all_ncdump.out -define att/out (`t2,return=xaxis`).new_att = "something" - !-> define att/out (PSXT).new_att = "something" -save/file=a.nc/clobber/L=1 t2 -sp ncdump -h a.nc >> all_ncdump.out - -! A file variable is used to refer to the axes - -set att (`temp,return=xaxis`).units="meters" - !-> set att (PSXT).units="meters" -set att (`temp,return=yaxis`).units="meters" - !-> set att (PSYT1).units="meters" -sho att/all (`temp,return=yaxis`) - !-> sho att/all (PSYT1) - attributes for dataset: ./data/gt4d011.cdf - (PSYT1).units = meters - (PSYT1).point_spacing = uneven - (PSYT1).edges = PSYTedges - (PSYT1).orig_file_axname = PSYT -save/file=a.nc/clobber/L=1 t2 - -sp ncdump -h a.nc >> all_ncdump.out -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -! User-defined axes and variables - -def axis/x=1:200:1 x2ax -sh att/all (x2ax) - attributes for coordinate axis - (x2ax).point_spacing = even - (x2ax).axis = X -! SET AXIS command changes attributes -set axis/modulo x2ax -sh att/all (x2ax) - attributes for coordinate axis - (x2ax).point_spacing = even - (x2ax).axis = X - (x2ax).modulo = - -! DEFINE ATTRIBUTE command changes attributes -define attribute (x2ax).units = "degrees_east" -sh att/all (x2ax) - attributes for coordinate axis - (x2ax).point_spacing = even - (x2ax).axis = X - (x2ax).modulo = - (x2ax).units = degrees_east - -! Define new attribute on an axis. -! Save file var, and a user var defined from the file var - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -use levitus_climatology -define att/out (`temp,return=xaxis`).new_att = "something" - !-> define att/out (XAXLEVITR1_160).new_att = "something" -sh dat/att - currently SET data sets: - 1> ./data/levitus_climatology.cdf (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 24 T FERRET V5.22 5-Apr-01 - -(XAXLEVITR1_160) DOUBLE units CHAR 12 T degrees_east - modulo CHAR 1 T - point_spacing CHAR 4 T even - orig_file_axname - CHAR 14 F XAXLEVITR1_160 - new_att CHAR 9 T something - -(YAXLEVITR1_90) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - orig_file_axname - CHAR 13 F YAXLEVITR1_90 - -(ZAXLEVITR1_1) DOUBLE units CHAR 6 T METERS - positive CHAR 4 T down - orig_file_axname - CHAR 12 F ZAXLEVITR1_1 - - TEMP FLOAT missing_value FLOAT 1 T -1.E+10 - _FillValue FLOAT 1 T -1.E+10 - long_name CHAR 11 T TEMPERATURE - history CHAR 24 T From levitus_climatology - units CHAR 5 T DEG C - -save/file=a.nc/clobber/y=0:5 temp -sp ncdump -h a.nc >> all_ncdump.out - -let two = 2*temp[y=0:15,x=180:200] -save/file=a.nc/clobber/y=0:5 two -sp ncdump -h a.nc >> all_ncdump.out -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -! defining more axes with attributes - -show axis x2ax - name axis # pts start end - X2AX X 200mr 1 200 - Axis span (to cell edges) = 200 (modulo length = axis span) -def axis/x=1:2:1/modulo=360 x2ax -def axis/y=1:3:1 y3ax -def axis/z=1:4:1/depth z4ax -def axis/t=1:2:1 t2ax -let a = {"alpha","a2","a3","a4","a5","a6","a7","a8","a9","a10",\ -"bravo","b2","b3","b4","b5","b6","b7","b8","b9","b10",\ -"c1","c2","c3","c4","c5","c6","c7","c8","c9","c10",\ -"d1","d2","d3","d4","d5","d6","d7","d8","d9","d10",\ -"echo","e2","e3","e4","e5","e6","e7","e8"} -let rvar = x[gx=x2ax] + y[gy=y3ax] + z[gz=z4ax] + t[gt=t2ax] - -let axy = reshape (a,rvar) - -show att/all (z4ax) - attributes for coordinate axis - (z4ax).point_spacing = even - (z4ax).axis = Z - (z4ax).positive = down -set att (z4ax).positive = "up" - -sp echo "bn_attributes.jnl --- 27 attributes of user-defined axes" >> all_ncdump.out -save/clobber/file=string4d.nc axy -sp ncdump -h string4d.nc >> all_ncdump.out - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -! For SET ATT timeaxis.units or SET ATT timeaxis.time_origin -! include the correct time origin as part of the units attribute. - -! Note original attributes -use coads_climatology -show att/all (`sst,return=taxis`) - !-> show att/all (TIME17) - attributes for dataset: ./data/coads_climatology.cdf - (TIME17).units = hour since 0000-01-01 00:00:00 - (TIME17).time_origin = 1-JAN-0000 00:00:00 - (TIME17).modulo = - (TIME17).orig_file_axname = TIME - -! change units to days since time origin -set att (`sst,return=taxis`).units="days" - !-> set att (TIME17).units="days" -show att/all (`sst,return=taxis`) - !-> show att/all (TIME17) - attributes for dataset: ./data/coads_climatology.cdf - (TIME17).units = days since 1-JAN-0000 00:00:00 - (TIME17).time_origin = 1-JAN-0000 00:00:00 - (TIME17).modulo = - (TIME17).orig_file_axname = TIME - -define attribute (`sst,return=taxis`).units = "months" - !-> define attribute (TIME17).units = "months" -show att/all (`sst,return=taxis`) - !-> show att/all (TIME17) - attributes for dataset: ./data/coads_climatology.cdf - (TIME17).units = months since 1-JAN-0000 00:00:00 - (TIME17).time_origin = 1-JAN-0000 00:00:00 - (TIME17).modulo = - (TIME17).orig_file_axname = TIME - -! change time origin and also units to include time origin -set att (`sst,return=taxis`).time_origin = "1-mar-1955" - !-> set att (TIME17).time_origin = "1-mar-1955" -show att/all (`sst,return=taxis`) - !-> show att/all (TIME17) - attributes for dataset: ./data/coads_climatology.cdf - (TIME17).units = months since 1-mar-1955 - (TIME17).time_origin = 1-mar-1955 - (TIME17).modulo = - (TIME17).orig_file_axname = TIME - -define attribute (`sst,return=taxis`).time_origin = "15-jan-2002" - !-> define attribute (TIME17).time_origin = "15-jan-2002" -show att/all (`sst,return=taxis`) - !-> show att/all (TIME17) - attributes for dataset: ./data/coads_climatology.cdf - (TIME17).units = months since 15-jan-2002 - (TIME17).time_origin = 15-jan-2002 - (TIME17).modulo = - (TIME17).orig_file_axname = TIME - -! Likewise on DEFINE AXIS or SET AXIS, change units to -! include the correct since time_origin. - -use coads_climatology -show att/all (`sst,return=taxis`) - !-> show att/all (TIME17) - attributes for dataset: ./data/coads_climatology.cdf - (TIME17).units = months since 15-jan-2002 - (TIME17).time_origin = 15-jan-2002 - (TIME17).modulo = - (TIME17).orig_file_axname = TIME -def axis/t=1:12:1/unit=months/t0="1-jan-0001" time -show att/all (`sst,return=taxis`) - !-> show att/all (TIME17) - attributes for dataset: ./data/coads_climatology.cdf - (TIME17).units = months since 15-jan-2002 - (TIME17).time_origin = 15-jan-2002 - (TIME17).modulo = - (TIME17).orig_file_axname = TIME - -set axis/t0="15-jan-0000" time -show att/all (`sst,return=taxis`) - !-> show att/all (TIME17) - attributes for dataset: ./data/coads_climatology.cdf - (TIME17).units = months since 15-jan-2002 - (TIME17).time_origin = 15-jan-2002 - (TIME17).modulo = - (TIME17).orig_file_axname = TIME - -set axis/units=days time -show att/all (`sst,return=taxis`) - !-> show att/all (TIME17) - attributes for dataset: ./data/coads_climatology.cdf - (TIME17).units = months since 15-jan-2002 - (TIME17).time_origin = 15-jan-2002 - (TIME17).modulo = - (TIME17).orig_file_axname = TIME - -! Fix bug 1518: previously var.attnames for a user-defined variable resulted in an error -use coads_climatology -let sst2 = 2*sst -set att/like=sst sst2 -list sst2.attnames - VARIABLE : SST2.ATTNAMES - FILENAME : coads_climatology.cdf - SUBSET : 4 points (X) - 1 / 1:"missing_value" - 2 / 2:"long_name" - 3 / 3:"history" - 4 / 4:"units" - - -! Add a global attribute -use test0 - -DEFINE ATT/OUTPUT ..FERRET_comment = "File written via LAS. Attributes are inherited from originating dataset" -SET ATT/OUTPUT=all . - -SET ATT/OUTPUT=all broiled -SAVE/CLOBBER/FILE=a.nc broiled - -sp echo "bn_attributes.jnl --- 28 Define a new global attribute" >> all_ncdump.out -sp echo "bn_attributes.jnl --- 29 SET ATT/OUTPUT=all for global attrs and a var" >> all_ncdump.out -sp ncdump a.nc >> all_ncdump.out - - -!----- -! Set type of data on output for a user var -! the requseted type. - -sp echo "bn_attributes.jnl --- 29 SET VAR/OUTTYPE for user variable" >> all_ncdump.out - -use gt4d011 -let/units="Deg F" faren = temp*9/5 + 32 -set var/outtype=double faren -save/file=a.nc/clobber faren - -sp ncdump -h a.nc >> all_ncdump.out - -let/units="Deg F"/bad=-999 faren = temp*9/5 + 32 -set var/outtype=int faren -save/file=a.nc/clobber faren - -sp ncdump -h a.nc >> all_ncdump.out - -! Tests for simplified syntax for SHOW ATTRIBUTE: - -! SHOW ATT varname is like SHOW ATT/ALL varname -! SHOW ATT dset same output as SHOW DATA/ATT dset - -can data/all -use ocean_atlas_temp -sho att temp - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.missing_value = -1.E+34 - TEMP._FillValue = -1.E+34 - TEMP.long_name = Temperature - TEMP.history = From ocean_atlas_monthly - TEMP.units = Deg C -sho att ocean_atlas_temp - currently SET data sets: - 1> ./data/ocean_atlas_temp.cdf (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 28 T FERRET V4.90 (GUI) 04-Feb-98 - -(XAX_LEV9421_380) DOUBLE units CHAR 12 T degrees_east - modulo CHAR 1 T - point_spacing CHAR 4 T even - orig_file_axname - CHAR 15 F XAX_LEV9421_380 - -(YAX_LEV94) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - orig_file_axname - CHAR 9 F YAX_LEV94 - -(ZAXLEVIT191_1) DOUBLE units CHAR 6 T METERS - positive CHAR 4 T down - orig_file_axname - CHAR 13 F ZAXLEVIT191_1 - -(TIME4) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - orig_file_axname - CHAR 4 F TIME - - TEMP FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 11 T Temperature - history CHAR 24 T From ocean_atlas_monthly - units CHAR 5 T Deg C - -sho att (`temp,return=xaxis`) - !-> sho att (XAX_LEV9421_380) - attributes for dataset: ./data/ocean_atlas_temp.cdf - (XAX_LEV9421_380).units = degrees_east - (XAX_LEV9421_380).modulo = - (XAX_LEV9421_380).point_spacing = even - (XAX_LEV9421_380).orig_file_axname = XAX_LEV9421_380 - -use levitus_climatology -sho att 1 - currently SET data sets: - 1> ./data/ocean_atlas_temp.cdf - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 28 T FERRET V4.90 (GUI) 04-Feb-98 - -(XAX_LEV9421_380) DOUBLE units CHAR 12 T degrees_east - modulo CHAR 1 T - point_spacing CHAR 4 T even - orig_file_axname - CHAR 15 F XAX_LEV9421_380 - -(YAX_LEV94) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - orig_file_axname - CHAR 9 F YAX_LEV94 - -(ZAXLEVIT191_1) DOUBLE units CHAR 6 T METERS - positive CHAR 4 T down - orig_file_axname - CHAR 13 F ZAXLEVIT191_1 - -(TIME4) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - orig_file_axname - CHAR 4 F TIME - - TEMP FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 11 T Temperature - history CHAR 24 T From ocean_atlas_monthly - units CHAR 5 T Deg C - -sho att 2 - currently SET data sets: - 2> ./data/levitus_climatology.cdf (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 24 T FERRET V5.22 5-Apr-01 - -(XAXLEVITR1_160) DOUBLE units CHAR 12 T degrees_east - modulo CHAR 1 T - point_spacing CHAR 4 T even - orig_file_axname - CHAR 14 F XAXLEVITR1_160 - -(YAXLEVITR1_90) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - orig_file_axname - CHAR 13 F YAXLEVITR1_90 - -(ZAXLEVITR1_1) DOUBLE units CHAR 6 T METERS - positive CHAR 4 T down - orig_file_axname - CHAR 12 F ZAXLEVITR1_1 - - TEMP FLOAT missing_value FLOAT 1 T -1.E+10 - _FillValue FLOAT 1 T -1.E+10 - long_name CHAR 11 T TEMPERATURE - history CHAR 24 T From levitus_climatology - units CHAR 5 T DEG C - - -sho att temp[d=1] - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.missing_value = -1.E+34 - TEMP._FillValue = -1.E+34 - TEMP.long_name = Temperature - TEMP.history = From ocean_atlas_monthly - TEMP.units = Deg C -sho att temp[d=2] - attributes for dataset: ./data/levitus_climatology.cdf - TEMP.missing_value = -1.E+10 - TEMP._FillValue = -1.E+10 - TEMP.long_name = TEMPERATURE - TEMP.history = From levitus_climatology - TEMP.units = DEG C - -sho att (`temp[d=1],return=taxis`[d=1]) - !-> sho att (TIME4[d=1]) - attributes for dataset: ./data/ocean_atlas_temp.cdf - (TIME4).units = hour since 0000-01-01 00:00:00 - (TIME4).time_origin = 01-JAN-0000 00:00:00 - (TIME4).modulo = - (TIME4).orig_file_axname = TIME - -sho att . - attributes for dataset: ./data/levitus_climatology.cdf - ..history = FERRET V5.22 5-Apr-01 - -! 1/17 *sh* -! added a test of shifting attributes in is_attrib_val.F -define att temp.test_counter = {1, 2, 3, 4, 5} -list temp.test_counter[i=3:5] - VARIABLE : TEMP.TEST_COUNTER[I=3:5] - FILENAME : levitus_climatology.cdf - SUBSET : 3 points (X) - 3 / 3: 3.000 - 4 / 4: 4.000 - 5 / 5: 5.000 - -!!!!! -! 10/06 *acm* Remove tests of nco funcions: we dont want to require them to be installed -! on a system in order for it to pass the benchmarks. -!GO bn_reset -!GO bn_nco_functions.jnl - -GO bn_reset bn_transforms.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_transforms.jnl -GO bn_transforms.jnl -! Test the transforms - -use coads_climatology - -list/L=1/prec=7 sst[x=100:120@ave,y=10:30@ave] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 100E to 120E (XY ave) - LATITUDE : 10N to 30N (XY ave) - TIME : 16-JAN 06:00 - 24.02076 - -list/L=1/prec=7 sst[x=100:120@din,y=10:30@din] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 100E to 120E (XY integ.) - LATITUDE : 10N to 30N (XY integ.) - TIME : 16-JAN 06:00 - 6.009285E+13 - -list/L=1/y=0/x=83w:49w sst,sst[x=@cda], sst[x=@cdb], sst[x=@cia], sst[x=@cib] - DATA SET: ./data/coads_climatology.cdf - LONGITUDE: 83W to 49W - LATITUDE: 1S - TIME: 16-JAN 06:00 - Column 1: SST is SEA SURFACE TEMPERATURE (Deg C) - Column 2: SST[X=@CDA:1] is SEA SURFACE TEMPERATURE (Deg C)(closest dist above on X) - Column 3: SST[X=@CDB:1] is SEA SURFACE TEMPERATURE (Deg C)(closest dist below on X) - Column 4: SST[X=@CIA:1] is SEA SURFACE TEMPERATURE (Deg C)(closest index above on X) - Column 5: SST[X=@CIB:1] is SEA SURFACE TEMPERATURE (Deg C)(closest index below on X) - SST SST SST SST SST -83W / 129: 24.60 0.00 0.00 0.00 0.00 -81W / 130: 25.44 0.00 0.00 0.00 0.00 -79W / 131: .... 26.00 2.00 13.00 1.00 -77W / 132: .... 24.00 4.00 12.00 2.00 -75W / 133: .... 22.00 6.00 11.00 3.00 -73W / 134: .... 20.00 8.00 10.00 4.00 -71W / 135: .... 18.00 10.00 9.00 5.00 -69W / 136: .... 16.00 12.00 8.00 6.00 -67W / 137: .... 14.00 14.00 7.00 7.00 -65W / 138: .... 12.00 16.00 6.00 8.00 -63W / 139: .... 10.00 18.00 5.00 9.00 -61W / 140: .... 8.00 20.00 4.00 10.00 -59W / 141: .... 6.00 22.00 3.00 11.00 -57W / 142: .... 4.00 24.00 2.00 12.00 -55W / 143: .... 2.00 26.00 1.00 13.00 -53W / 144: 27.35 0.00 0.00 0.00 0.00 -51W / 145: 27.13 0.00 0.00 0.00 0.00 -49W / 146: 27.38 0.00 0.00 0.00 0.00 - -list/L=1/y=10:33/x=93w sst, sst[y=@ddb], sst[y=@ddc], sst[y=@ddf] - DATA SET: ./data/coads_climatology.cdf - LATITUDE: 10N to 33N - LONGITUDE: 93W - TIME: 16-JAN 06:00 - Column 1: SST is SEA SURFACE TEMPERATURE (Deg C) - Column 2: SST[Y=@DDB] is SEA SURFACE TEMPERATURE (Deg C)(backwards derivative on Y) - Column 3: SST[Y=@DDC] is SEA SURFACE TEMPERATURE (Deg C)(centered derivative on Y) - Column 4: SST[Y=@DDF] is SEA SURFACE TEMPERATURE (Deg C)(forward derivative on Y) - SST SST SST SST -11N / 51: 26.99 2.217E-06 1.611E-06 1.005E-06 -13N / 52: 27.21 1.005E-06 1.468E-06 1.932E-06 -15N / 53: 27.64 1.932E-06 5.847E-07 -7.622E-07 -17N / 54: 27.47 -7.622E-07 -7.072E-06 -1.338E-05 -19N / 55: 24.50 -1.338E-05 -7.908E-06 -2.435E-06 -21N / 56: 23.95 -2.435E-06 -1.473E-06 -5.111E-07 -23N / 57: 23.84 -5.111E-07 -1.898E-06 -3.286E-06 -25N / 58: 23.11 -3.286E-06 -3.738E-06 -4.190E-06 -27N / 59: 22.18 -4.190E-06 -9.122E-06 -1.405E-05 -29N / 60: 19.05 -1.405E-05 .... .... -31N / 61: .... .... .... .... -33N / 62: .... .... .... .... - -list/L=1/y=10:33/x=93w sst, sst[y=@evnt:23.84] - DATA SET: ./data/coads_climatology.cdf - LATITUDE: 10N to 33N - LONGITUDE: 93W - TIME: 16-JAN 06:00 - Column 1: SST is SEA SURFACE TEMPERATURE (Deg C) - Column 2: SST[Y=@EVN: 23.84] is SEA SURFACE TEMPERATURE (Deg C)(event mask at 23.84 on Y) - SST SST -11N / 51: 26.99 0.000 -13N / 52: 27.21 0.000 -15N / 53: 27.64 0.000 -17N / 54: 27.47 0.000 -19N / 55: 24.50 0.000 -21N / 56: 23.95 0.000 -23N / 57: 23.84 0.000 -25N / 58: 23.11 1.000 -27N / 59: 22.18 1.000 -29N / 60: 19.05 1.000 -31N / 61: .... 1.000 -33N / 62: .... 1.000 - -list/L=1/y=23:51/x=93w sst, sst[y=@fav], sst[y=@fln], sst[y=@fnr] - DATA SET: ./data/coads_climatology.cdf - LATITUDE: 23N to 51N - LONGITUDE: 93W - TIME: 16-JAN 06:00 - Column 1: SST is SEA SURFACE TEMPERATURE (Deg C) - Column 2: SST[Y=@FAV:3] is SEA SURFACE TEMPERATURE (Deg C)(ave-filled by 3 pts on Y) - Column 3: SST[Y=@FLN:1] is SEA SURFACE TEMPERATURE (Deg C)(linear-filled by 1 pts on Y) - Column 4: SST[Y=@FNR:1] is SEA SURFACE TEMPERATURE (Deg C)(nearest-filled by 1 pts on Y) - SST SST SST SST -23N / 57: 23.84 23.84 23.84 23.84 -25N / 58: 23.11 23.11 23.11 23.11 -27N / 59: 22.18 22.18 22.18 22.18 -29N / 60: 19.05 19.05 19.05 19.05 -31N / 61: .... 19.05 18.15 19.05 -33N / 62: .... .... 17.24 19.05 -35N / 63: .... .... 16.33 19.05 -37N / 64: .... .... 15.43 15.43 -39N / 65: .... .... 14.52 11.80 -41N / 66: .... .... 13.61 11.80 -43N / 67: .... 11.80 12.71 11.80 -45N / 68: 11.80 11.80 11.80 11.80 -47N / 69: 2.47 2.47 2.47 2.47 -49N / 70: .... 2.47 .... 2.47 -51N / 71: .... .... .... 2.47 - -list/L=1/y=23:51/x=93w sst[y=23:51@min], sst[y=23:51@max] - DATA SET: ./data/coads_climatology.cdf - LONGITUDE: 93W - LATITUDE: 23N to 51N - TIME: 16-JAN 06:00 - Column 1: SST[Y=@MIN] is SEA SURFACE TEMPERATURE (Deg C) - Column 2: SST[Y=@MAX] is SEA SURFACE TEMPERATURE (Deg C) - SST SST -I / *: 2.466 23.84 - -list/L=1/y=23:51/x=93w sst[y=23:51@nbd], sst[y=23:51@ngd] - DATA SET: ./data/coads_climatology.cdf - LONGITUDE: 93W - LATITUDE: 23N to 51N - TIME: 16-JAN 06:00 - Column 1: SST[Y=@NBD] is SEA SURFACE TEMPERATURE (# of points) - Column 2: SST[Y=@NGD] is SEA SURFACE TEMPERATURE (# of points) - SST SST -I / *: 9.000 6.000 - -list/L=1/y=1:11/x=93w sst, sst[y=@iin] - DATA SET: ./data/coads_climatology.cdf - LATITUDE: 1N to 11N - LONGITUDE: 93W - TIME: 16-JAN 06:00 - Column 1: SST is SEA SURFACE TEMPERATURE (Deg C) - Column 2: SST[Y=@IIN] is SEA SURFACE TEMPERATURE (Deg C)(indef. integ. on Y) - SST SST -1N / 46: 25.77 2.865E+06 -3N / 47: 26.60 8.780E+06 -5N / 48: 26.86 1.475E+07 -7N / 49: 26.57 2.066E+07 -9N / 50: 26.49 2.656E+07 -11N / 51: 26.99 2.956E+07 - -list/L=1/y=23:25/x=93w sst, sst[y=24@itp] - DATA SET: ./data/coads_climatology.cdf - LONGITUDE: 93W - TIME: 16-JAN 06:00 - Column 1: SST[Y=23N:25N] is SEA SURFACE TEMPERATURE (Deg C) - Column 2: SST[Y=24N@ITP] is SEA SURFACE TEMPERATURE (Deg C) - SST SST -23N / 57: 23.84 23.47 -25N / 58: 23.11 23.47 - -list/L=1/y=11:23/x=93w sst, sst[y=@rsum], sst[y=@sbn], sst[y=@sbx], sst[y=@shf:-1] - DATA SET: ./data/coads_climatology.cdf - LATITUDE: 11N to 23N - LONGITUDE: 93W - TIME: 16-JAN 06:00 - Column 1: SST is SEA SURFACE TEMPERATURE (Deg C) - Column 2: SST[Y=@RSU] is SEA SURFACE TEMPERATURE (Deg C)(running sum on Y) - Column 3: SST[Y=@SBN:3] is SEA SURFACE TEMPERATURE (Deg C)(binomial smoothed by 3 pts on Y) - Column 4: SST[Y=@SBX:3] is SEA SURFACE TEMPERATURE (Deg C)(box smoothed by 3 pts on Y) - Column 5: SST[Y=@SHF:-1] is SEA SURFACE TEMPERATURE (Deg C)(shifted by -1 pts on Y) - SST SST SST SST SST -11N / 51: 26.99 27.0 26.92 26.90 26.49 -13N / 52: 27.21 54.2 27.26 27.28 26.99 -15N / 53: 27.64 81.8 27.49 27.44 27.21 -17N / 54: 27.47 109.3 26.77 26.54 27.64 -19N / 55: 24.50 133.8 25.10 25.31 27.47 -21N / 56: 23.95 157.8 24.06 24.10 24.50 -23N / 57: 23.84 181.6 23.69 23.63 23.95 - -list/L=1/y=11:23/x=93w sst, sst[y=@shn] , sst[y=@spz], sst[y=@sum], sst[y=@swl], sst[y=@weq:26] - DATA SET: ./data/coads_climatology.cdf - LATITUDE: 11N to 23N - LONGITUDE: 93W - TIME: 16-JAN 06:00 - Column 1: SST is SEA SURFACE TEMPERATURE (Deg C) - Column 2: SST[Y=@SHN:3] is SEA SURFACE TEMPERATURE (Deg C)(Hanning smoothed by 3 pts on Y) - Column 3: SST[Y=@SPZ:3] is SEA SURFACE TEMPERATURE (Deg C)(Parzen smoothed by 3 pts on Y) - Column 4: SST[Y=@SUM] is SEA SURFACE TEMPERATURE (Deg C) - Column 5: SST[Y=@SWL:3] is SEA SURFACE TEMPERATURE (Deg C)(Welch smoothed by 3 pts on Y) - Column 6: SST[Y=@WEQ:26] is SEA SURFACE TEMPERATURE (Deg C)(weighted equal of 26 on Y) - SST SST SST SST SST SST -11N / 51: 26.99 26.92 26.92 181.6 26.91 .... -13N / 52: 27.21 27.26 27.26 181.6 27.27 .... -15N / 53: 27.64 27.49 27.49 181.6 27.46 .... -17N / 54: 27.47 26.77 26.77 181.6 26.63 0.5056 -19N / 55: 24.50 25.10 25.10 181.6 25.23 0.4944 -21N / 56: 23.95 24.06 24.06 181.6 24.08 .... -23N / 57: 23.84 23.69 23.69 181.6 23.66 .... - -GO bn_reset bn_variance.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_variance.jnl -GO bn_variance.jnl - ! bn_variance.jnl - ! the @VAR transform is not tested in bn_transforms.jnl script. - -use coads_climatology -list/x=100/y=10 sst[t=@var] - VARIABLE : Variance of SEA SURFACE TEMPERATURE ((Deg C)^2) - FILENAME : coads_climatology.cdf - LONGITUDE: 99E - LATITUDE : 9N - TIME : 01-JAN 00:45 to 01-APR 08:12 (variance) - 0.4424 -list/x=100/L=1 sst[y=@var] - VARIABLE : Variance of SEA SURFACE TEMPERATURE ((Deg C)^2) - FILENAME : coads_climatology.cdf - LONGITUDE: 99E - LATITUDE : 90S to 90N (variance) - TIME : 16-JAN 06:00 - 102.3 -list/y=10/L=1 sst[x=@var] - VARIABLE : Variance of SEA SURFACE TEMPERATURE ((Deg C)^2) - FILENAME : coads_climatology.cdf - LONGITUDE: 20E to 20E(380) (variance) - LATITUDE : 9N - TIME : 16-JAN 06:00 - 0.5010 - -use gt4d011.cdf -list/y=3/l=1/x=233 u[z=@var] - VARIABLE : Variance of ZONAL VELOCITY ((cm/sec)^2) - FILENAME : gt4d011.cdf - LONGITUDE: 127W - LATITUDE : 3N - DEPTH (m): 0 to 100 (variance) - TIME : 17-AUG-1982 12:00 - 11.33 - -GO bn_reset bn_linecolors.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_linecolors.jnl -GO bn_linecolors.jnl -! bn_linecolors.jnl -! 5/2006 ACM -! test setting more line colors - -set mode meta linecolors.plt - -set mode linec:12 -sho mode linecolors - MODE STATE ARGUMENT - LINECOLORS SET 12 - -can win/all -set win/new - -ppl color,7,100,65,51 ! orange -ppl color,8,0,55,0 ! dark green -ppl color,9,60,0,100 ! purple -ppl color,10,100,70,100 ! magenta -ppl color,11,80,70,60 ! tan -ppl color,12,100,88,0 ! yellow - -plot/thick/line/i=1:100 \ - cos(i/20), cos(i/24), cos(i/28), cos(i/32), \ - cos(i/36), cos(i/40), cos(i/44), cos(i/48), \ - cos(i/52), cos(i/56), cos(i/60), cos(i/64) - -set mode/last meta - -! Test choosing individual colors and thickness combinations -! All commands except for contour have /THICK - -plot/color=7/thick=3/i=1:100 cos(i/10) -plot/over/color=8/thick=2/i=1:100 cos(i/12) -plot/over/color=12/thick=1/i=1:100 cos(i/8) - -vector/color=11/thick=2/i=1:100/j=1:100 cos(i/10)+sin(j/14), cos(i/20)-sin(j/30) - -polygon/thick=3/color=12/palette=purple {1,2,1}, {2,1,0.5} - -contour/color=7/i=1:100/j=1:100 cos(i/10)+sin(j/14) -contour/over/color=20/i=1:100/j=1:100 cos(i/15)+sin(j/20) - -can mode linecolors -sho mode linecolors - MODE STATE ARGUMENT - LINECOLORS SET 6 - -! resetting line colors with cancel mode does not -! take effect until we do a SET WIN/NEW - -plot/line/i=1:100 \ - cos(i/20), cos(i/24), cos(i/28), cos(i/32), \ - cos(i/36), cos(i/40), cos(i/44), cos(i/48), \ - cos(i/52), cos(i/56), cos(i/60), cos(i/64) - -set win/new -plot/line/i=1:100\ - cos(i/20), cos(i/24), cos(i/28), cos(i/32), \ - cos(i/36), cos(i/40), cos(i/44), cos(i/48), \ - cos(i/52), cos(i/56), cos(i/60), cos(i/64) - -can win/all -set win/new - - -GO bn_reset bn_cdf_errmsg.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cdf_errmsg.jnl -GO bn_cdf_errmsg.jnl -! bn_cdf_errmsg.jnl -! ACM 7/13/2006 -! test reporting of cdf error messages from OPeNDAP library v3.6.2 - -set mode ignore - -! bad file names; file missing or misspelled -use this_is_not_a_file.nc - - -!! Change to another server, our server down... -!!use "http://www.ferret.noaa.gov/cgi-bin/nph-nc/data/nofile.cdf" -!! Not working either as of 7/5/2007 -!! use "http://ferret.pmel.noaa.gov:8080/thredds/dodsC/data/nofile.cdf" - -!! Change to another server, this one not working 3/2012 -!! This is a valid address -!!use "http://iridl.ldeo.columbia.edu/SOURCES/.FSU/.FULL/.tauy/dods" - -!! change the variable name to something nonexistent -!!use "http://iridl.ldeo.columbia.edu/SOURCES/.FSU/.FULL/.tauyyyyy/dods" - -! This is a valid address -use "http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_air.cdf" - - -! Intentional errors - -! change the variable name to something nonexistent -use "http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_nothing.cdf" - -! bad server -use "http://noserver/a/nofile.cdf" - -! Not a netCDF file: Create an ascii file with extension .nc - -list/nohead/file=asc.dat {1,2,3} - -sp rm -f asc.nc -sp mv asc.dat asc.nc -use asc.nc - -set mode/last ignore - - -GO bn_reset bn600_bug_fixes.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn600_bug_fixes.jnl -GO bn600_bug_fixes.jnl -! bn600_bug_fixes.jnl -! test various fixes that went into version 6.00 -! 8/05 *acm* -! - -! Bug 1129 axis formatting when /HLIM sets axis length < 0.15 deg -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_hlim_axislab.jnl -! err581_hlim_axislab.jn -! bug 1129 -! When longitude range is small (<0.15 deg) using /HLIMITS -! axis labels do not have longitude labelling - -def axis/x=-180:360:180/units=degrees xfull -def axis/y=90s:90n:90/units=degrees yfull -fill/hlim=312.23:312.380/vlim=37.03:40.91 0*x[gx=xfull] * y[gy=yfull] - -! Previously, list xaxis showed LABEL FORMAT is auto, not LONE -ppl list xaxis - - - XAXIS QUALITIES - LO= 3.12E+02 HI= 3.12E+02 TIC= 2.00E-02 LEN= 8.00E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 1.20E+00 LABEL FORMAT= (F8.3,'LONE') - -! But /HLIM=312.23:312.3801/... works. -fill/hlim=312.23:312.3801/vlim=37.03:40.91 0*x[gx=xfull] * y[gy=yfull] -ppl list xaxis - - - XAXIS QUALITIES - LO= 3.12E+02 HI= 3.12E+02 TIC= 2.00E-02 LEN= 8.00E+00 CSIZE= 1.00E-01 - TOP AXIS= ON BOTTOM AXIS= ON - MANUAL NORMAL NMTC= 0 LINT= 2 LABEL= -1 NSIG= 2 NTIC= 10 - XORG= 1.20E+00 LABEL FORMAT= (F8.2,'LONE') - -! Bug 1275 stray characters appear in data lines listing string data -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_list_stray_chars.jnl -! err581_list_stray_chars.jnl -! 8/2005 (acm) bug 1275 stray characters in data listing -! (they are leftovers from the buffer containing the header line, was not reinitialized) -! Also fix the header line so characters are chopped off less. - -let id = {1, 2, 3, 4} -let country = {"US", "US", "XX", "CN"} -let type = {"MOORED BUOY", "MOORED BUOY", "MOORED BUOY", "MOORED BUOY"} - -list/i=1:5 id, type, country - X: 0.5 to 4.5 - Column 1: ID is {1, 2, 3, 4} - Column 2: TYPE is {"MOORED BUOY", "MOORED BUOY", "MOORED BUOY", "MOORED BUOY"} - Column 3: COUNTRY is {"US", "US", "XX", "CN"} - ID TYPE COUNTRY -1 / 1: 1.000 "MOORED BUOY" "US" -2 / 2: 2.000 "MOORED BUOY" "US" -3 / 3: 3.000 "MOORED BUOY" "XX" -4 / 4: 4.000 "MOORED BUOY" "CN" - -list/i=1:5 id, country, type - X: 0.5 to 4.5 - Column 1: ID is {1, 2, 3, 4} - Column 2: COUNTRY is {"US", "US", "XX", "CN"} - Column 3: TYPE is {"MOORED BUOY", "MOORED BUOY", "MOORED BUOY", "MOORED BUOY"} - ID COUN TYPE -1 / 1: 1.000 "US" "MOORED BUOY" -2 / 2: 2.000 "US" "MOORED BUOY" -3 / 3: 3.000 "XX" "MOORED BUOY" -4 / 4: 4.000 "CN" "MOORED BUOY" - - - -! pattern matching for SHO FUNC failed to match all EF's -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_sho_func_pattern_match.jnl -! err581_sho_func_pattern_match.jnl -! bug 1186 -! 8/2006 -! Pattern matching for SHOW FUNCTION did not match *str or *str* -! on external functions. - -! Should list SIN and ASIN -sh func *sin -SIN(theta) - theta: angle (radians) -ASIN(X) - arcsin(X) in radians - X: ABS(X) must be less than or equal to 1 -! SHOULD list ELEMENT_INDEX, ELEMENT_INDEX_STRING, IS_ELEMENT_OF, IS_ELEMENT_OF_STR -sh func *element* -ELEMENT_INDEX(VAR,VALUES) - Return index value in ARG2 for each point in ARG1 - VAR: Variable - VALUES: list of indices -ELEMENT_INDEX_STR(VAR,STRINGS) - Return index value in ARG2 for each string in ARG1 (case insensitive matching) - VAR: string data to mask (STRING) - STRINGS: list of strings to match (STRING) -ELEMENT_INDEX_STR_N(VAR,STRINGS) - Return index value in ARG2 for each string in ARG1 (case sensitive matching) - VAR: string data to mask (STRING) - STRINGS: list of strings to match (STRING) -IS_ELEMENT_OF(VAR,VALUES) - Returns 1 if first argument contains any of the values in 2nd arg, else 0 - VAR: data to test - VALUES: values to search for -IS_ELEMENT_OF_STR(VAR,VALUES) - Returns 1 if first argument contains any of the values in 2nd arg (case sensitive), else 0 - VAR: string (STRING) - VALUES: strings to search (STRING) -IS_ELEMENT_OF_STR_N(VAR,VALUES) - Returns 1 if 1st arg contains any of the values in 2nd arg, 2 if case-insensitve match, else 0 - VAR: string (STRING) - VALUES: strings to search (STRING) - -! FILL on data with subspan modulo axis, got wrong data -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_subspanx_fill_bug.jnl -! err581_subspanx_fill_bug.jnl -! bug 900: subspan longitude axis and hlimits gets wrong data -! -! Further fixes 5/2016, with other subspan modulo work. -! Don't list ppl$xlow, ppl$xhigh. - -use coads_climatology -save/clobber/y=0/x=130e:80w/file=err581_subspanx_fill_bug.nc sst -can data/all; use err581_subspanx_fill_bug.nc - -set view left; shade/x=120e:80w sst ! works correctly - -set view right; fill/x=120e:80w sst - -! look at axis coord. range 5/9/2016 -sh sym ppl$xmin, ppl$xmax ! should be 131, 279 -PPL$XMIN = "25.00000" -PPL$XMAX = "279.0000" - -sp rm -f err581_subspanx_fill_bug.nc - -! bug 1318 Spurious error message on USE file where file has axes with bounds. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_use_bounds.jnl -! err581_use_bounds.jnl -! bug 1318 Spurious error message on USE file where file has axes with bounds. -! 8/17/05 ACM - -def axis/x xir = {1,4,6} -def axis/y yir = {12,42,50} -let aa = x[gx=xir]+ y[gy=yir] - -save/clobber/file=xyir.nc aa -use xyir - -! Bug 1332 variable not scaled unless it is first variable in stepfile. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_des_scale.jnl -! err581_des_scale.jnl bug 1332. When using a descriptor file and -! a varriable has scale_factor and/or add_offset attributes, the -! variable is not scaled unless it is first variable in stepfile. -! acm 8/29/2005 - -! tok_short.des behaves correctly; the stepfile in it, sstok_short.nc lists -! variable sst first. - -! tnok_short.des, containing sstnok_short.nc results in sst NOT being scaled -! because it is the second variable in the file. - -! Data in SST should be rescaled in both des files to values 0.1699, 0.1799, ... - -EXIT/SCRIPT ! error in namelist record... - -! Bug 1335 Zero-contour should be dark line. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_contour_zero_lev.jnl -! err581_contour_zero_lev.jnl -! acm 9/7/2005 -! See bug report 1335 -! Zero-contour should be dark line. - -use coads_climatology -contour/lev=(-20,20,2) sst[L=1] - 20 - -! Bug 1339, code hangs with this combination of (-INF)(INF) levels and shakey -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_shakey_inf.jnl -! err581_shakey_inf.jnl -! acm 9/7/2005 - -! see bug report 1339; code hangs with this combination of (-INF)(INF) levels -! and SHAKEY with klab_dig=0 (argument 5) - -use coads_climatology -fill/l=1/lev=(-inf)(0,30,2)(inf)/key/set sst -ppl shakey 1,0,.12,0,0,4,2,8,7.1,7.4 -ppl fill - -ppl/reset ! undo the SHAKEY setting. - - -! Bug 918, immediate mode parsing in IF blocks -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_if_conditional.jnl -! err581_if_conditional.jnl bug 918. -! acm 10/2005 -! Immediate mode parsing: when in an IF block, and when -! the IF is false and therefore not being executed. -! Previously ferret attempted to parse the IF `a` THEN -! but could not because LET a=1 has not been executed/ -! -! This should skip to the end, not trying to execute anything inside the IF 0 THEN - -if 0 then -endif - -say "finished the if block" -finished the if block - -! Further tests, after this fix, we get an error -! **ERROR: variable unknown or not in data set: DXYMIN -! The code that skips statements inside the IF false THEN -! was bumping a stack on the internal IF statement... - -define symbol xend -180 -let key_flag = 0 - -IF `($xend) GT 360` THEN - !-> IF 0 THEN -ENDIF -let dxymin = 0.20 -if `dxymin lt 0.12` then - !-> if 0 then -elif `dxymin lt 0.25` then - !-> elif 1 then - SAY "point G" -point G -endif - - - -! try yet another test with a nested block if, not executed. - -define symbol xend -180 -let key_flag = 0 - -IF `($xend) GT 360` THEN - !-> IF 0 THEN -ENDIF -let dxymin = 0.20 -if `dxymin lt 0.12` then - !-> if 0 then -elif `dxymin lt 0.25` then - !-> elif 1 then - SAY "point G" -point G -endif - -! an entire IF ELSE ENDIF inside an IF clause which is not to be executed - -IF `($xend) GT 360` THEN - !-> IF 0 THEN -ELSE - say "this is the ELSE that should execute" -this is the ELSE that should execute -ENDIF - -! ELIF examples - -go non_std_refmap 122.0 228.5 5 5 xline 0 - -! std_refmap.jnl -- requires Ferret V4.3 or later -! 5/96 - -! Mods 6.98 *jd/sh* to improve the aspect ratio of the refmap for t and z -! profiles. Separate consideration given for each case: - -! The case of "pt_orient == tseries" which has a horizontally oriented -! reference map, and the case of the default value for pt_orient == 0 -! (zprofile), with a vertically oriented reference map, are optimized. - -! The symbol pt_orient is set in std_gif_t.jnl. - -! 7.2004 *jmclean* add symbol and min,max functions to keep longitude region with 360 degrees - - -! For example: -! yes? go refmap 180 230 0 20 box 1 -! and -! yes? go refmap 80 80 0 20 yline 2 -! and -! yes? go refmap 70 90 0 20 yline 2 1 -! and -! yes? go refmap 30 180 30 30 xline 2 -! and -! yes? go refmap 30 180 20 60 xline 2 0 1 -! and -! yes? go refmap 180 180 -40 -40 point 2 -! and -! yes? go refmap 20 180 -40 60 point 2 1 1 - -! Description: draw a reference map with region indicated - -! arguments: 1 2 3 4 5 6 7 8 -! Usage: GO refmap xmin xmax ymin ymax type magnify xcompress ycompress - -! mins and maxs should be numerical values for lat/long -! type - may be "box", "xline", "yline", or "point" (default: "box") -! xcompress - may be 1 (indicating that X compression is applied or 0 -! (default: "0") - -! e.g. to indicate a Y line in which X compression has been applied send -! type="yline" and xcompress="1" - -! this script assumes that the viewport has already been set - -! NOTE: MAGNIFY FACTOR -! The argument magnify determines what resolution of land mask is used. - -! magnify = 1 - INT(LOG(fraction)/LOG(2)) -! then clip magnify to the interval [1 to 5] - -! check the region arguments -let refmap_xmin = $1% DEFINE VARIABLE refmap_xmin = 122.0 -let refmap_xmax = $2% DEFINE VARIABLE refmap_xmax = 228.5 -let refmap_ymin = $3% DEFINE VARIABLE refmap_ymin = 5 -let refmap_ymax = $4% DEFINE VARIABLE refmap_ymax = 5 - -! set default args -DEFINE SYMBOL refmap_type $5%box|xline|yline|box|point|% - !-> DEFINE SYMBOL refmap_type xline -DEFINE SYMBOL refmap_xcompress $7%0% - !-> DEFINE SYMBOL refmap_xcompress 0 -DEFINE SYMBOL refmap_ycompress $8%0% - !-> DEFINE SYMBOL refmap_ycompress 0 - -! set the layout in the viewport -! (for performance the code from margins can be inserted in here and optimized) -! GO margins blah blah - -! determine the lat/long limits to plot -set region/x=$1:$2/Y=$3:$4 - !-> set region/x=122.0:228.5/Y=5:5 - -! Keep longitude region within 360 degrees. Supposes that xhi-xlo <= 360 -def sym ref_dx = `(360-ABS($2-$1))/2` - !-> def sym ref_dx = 126.75 - -IF ($refmap_type%|box>1|*>0%) THEN ! IF "box" - !-> IF 0 THEN -ELIF ($refmap_type%|xline>1|*>0%) THEN ! ELSE IF "xline" - !-> ELIF 1 THEN - define region/default/dy=$6"-30:30|1>-30:30|*>-20:20"/dx=$6"0:0|1>0:0|2>0:0|*>`max(-($ref_dx),-50)`:`min(($ref_dx),50)`" band - !-> define region/default/dy=-20:20/dx=-50:50 band -ELIF ($refmap_type%|yline>1|*>0%) THEN ! ELSE IF "yline" - !-> ELIF 0 THEN -ENDIF -! init the land mask data set -set data coads_climatology -set region/L=1 -! draw gray shaded continents -! known potential bug: if X region begins at, say, 0E then magnification 3 -! or greater results in negative modulo subscripts - -shade/lev=(0,10000,10000)/nokey/nolab/palette=grey/@band/set sst -! ==> may want various IF tests to stylize plots: tics, numbering, etc. - -IF ($refmap_type%|box>1|*>0) THEN ! IF "box" - !-> IF 0 THEN -ELIF ($refmap_type%|xline>1|*>0) THEN ! ELSE IF "xline" - !-> ELIF 1 THEN - ppl axlint 3 - ppl shade - ppl axlint 2 -ELIF ($refmap_type%|yline>1|*>0) THEN ! ELSE IF "yline" - !-> ELIF 0 THEN -ENDIF - -! some clean up now to assist with repeated testing -cancel region band - -set data coads_climatology -set region/L=1 - -! draw a thick red region marker on the reference map -let refmap_xrng = IF i EQ 1 THEN refmap_xmin ELSE refmap_xmax -let refmap_yrng = IF i EQ 1 THEN refmap_ymin ELSE refmap_ymax -let refmap_xmid = ((refmap_xmin)+(refmap_xmax))/2 -let refmap_ymid = ((refmap_ymin)+(refmap_ymax))/2 - -IF ($refmap_type%|box>1|*>0) THEN ! IF "box" - !-> IF 0 THEN -ELIF ($refmap_type%|xline>1|*>0) THEN ! ELSE IF "xline" - !-> ELIF 1 THEN - IF ($refmap_ycompress) THEN - !-> IF 0 THEN - ENDIF - plot/over/vs/nolab/line=8/i=1:2 refmap_xrng, refmap_ymid+(i-i) -ELIF ($refmap_type%|yline>1|*>0) THEN ! ELSE IF "yline" - !-> ELIF 0 THEN -ENDIF - -! Reset to the current installed default color palette -palette default - -! Bug 899 -! Ungraceful STOP if we asl for multi-var transformations on axis where there is no data -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_illegal_trans.jnl -! err581_illegal_trans.jnl -! Ungraceful STOP if we do @VAR on an axis where there is no data - -! 6/2018 *acm* This syntax is no longer illegal. This was reporting cases -! where a multi-axis transformation had been set up but the grid doesn't -! have the axes. Now, we detect the fact that the grid doesn't have a Z axis, -! and do the transformation as a 1-D transformation. - -use coads_climatology -shade sst[x=@var,k=@var] - -shade sst[t=@AVE,Z=@ave] -can mode ignore_error - - -! Bug 491 -! missing flag gets scaled by scale and offset factors! -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_missing_scale_off.jnl -! err581_missing_scale_off.jnl -! ACM 11/8/05 -! Bug 491 was not correctly fixed... missing flag was scaled with scale, offset -! attribute values. - -! data contains missing value flag of -999 and scale of 0.1 -! Previously this resulted in data values of -99 where should be missing. - -use missing_scale_off.nc -say `tt,return=bad` - !-> MESSAGE/CONTINUE -999 --999 -list tt - VARIABLE : 1 + 0*T[GT=DAYT] - FILENAME : missing_scale_off.nc - SUBSET : 10 points (TIME) - 01-JAN-1990 00 / 1: 0.100 - 02-JAN-1990 00 / 2: 0.200 - 03-JAN-1990 00 / 3: 0.300 - 04-JAN-1990 00 / 4: .... - 05-JAN-1990 00 / 5: 0.500 - 06-JAN-1990 00 / 6: 0.600 - 07-JAN-1990 00 / 7: 0.700 - 08-JAN-1990 00 / 8: .... - 09-JAN-1990 00 / 9: 0.900 - 10-JAN-1990 00 / 10: 1.000 - - -! bug 1363 -! SHOW GRID and other output have wrong dates, non-std calendar axesv -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_cal_dates_output.jnl -! err581_cal_dates_output.jnl -! bug 1363: -! SHOW GRID and other output have wrong dates, non-std calendar axesv - -! create a time axis with 360-day calendar -def axis/t=1-jan-2000:1-jan-2005:1/units=months/cal=d360/t0=1-jan-1960 t360 -let t3 = t[gt=t360] -save/clobber/file=t3file.nc t3 -can var/all -can axis t360 - -! Bug showed date range of 30-JUL-2000 to 26-AUG-2005 -set data t3file -sho grid t3 - GRID GCG1 - name axis # pts start end subset - normal X - normal Y - normal Z - T360 TIME 61 r 01-JAN-2000 00:00 01-JAN-2005 00:00 full - -! bug 1365 -! STOP on shade command when modulo-regridding a time-limited nonstd calendar -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_noleap_mod.jnl -! err581_noleap_mod.jnl -! This is bug 1365: STOP on shade command -! when modulo-regridding a time-limited NOLEAP calendar - -use gt4d011.cdf -set axis/cal=noleap `u,return=taxis` - !-> set axis/cal=noleap TIME17 -let a = u[t=1-sep-1982:1-jan-1983] -def axis/t/edge/mod/cal=noleap/unit=days/t0=1-jan-0001 mon_irreg_nlp = {0,31,59,90,120,151,181,212,243,273,304,334,365} - -let a_clim = a[gt=mon_irreg_nlp@mod] -shade/y=0/k=1 a_clim - - -! bug 1392 -! CANCEL DATA errors -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_cancel_data.jnl -! err581_cancel_data.jnl - -! test fixes for bug 1392: -! cancel data 0000_a.nc -! cancel data with a pathname, not just the dataset name - -let a = {1,5,6} -save/clobber/file=0000_a.nc a -set data 0000_a.nc -can data 0000_a - -sp rm -f subdir/a.dat -sp mkdir -p subdir - -save/clobber/file="subdir/a.nc" a -use "subdir/a.nc" -sh data - currently SET data sets: - 1> subdir/a.nc (default) - name title I J K L - A {1,5,6} 1:3 ... ... ... - -can data "subdir/a.nc" -sh data - currently SET data sets: -save/clobber/file="subdir/0000_a.nc" a -set data "subdir/0000_a.nc" -sh data - currently SET data sets: - 1> subdir/0000_a.nc (default) - name title I J K L - A {1,5,6} 1:3 ... ... ... - -can dat 0000_a -set data "subdir/0000_a.nc" -can dat 0000_a.nc -sh data - currently SET data sets: -set data "subdir/0000_a.nc" -can dat "subdir/0000_a.nc" -sh data - currently SET data sets: - -sp rm -f subdir/a.nc -sp rm -f subdir/0000_a.nc - -! bug 1394 -! parsing time units of "months_since_event" -! CANCEL DATA errors -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_since_units.jnl -! err581_since_units.jnl -! bug 1394: units of months_since_event -! the "since" causes Ferret to try to parse "event" as a -! date for time origin. Change so that if its not a date, -! we just keep the whole units string. -! also increase length of strings in line_units array. - -def axis/t=1:3:1/unit="months_since_event" tax -let a = t[gt=tax] -save/clobber/file=a.nc a - -can var a -can ax tax -use a -say `a,ret=tunits` - !-> MESSAGE/CONTINUE months_since_event -months_since_event -list a - VARIABLE : T[GT=TAX] - FILENAME : a.nc - SUBSET : 3 points (T (months_since_event)) - 1 / 1: 1.000 - 2 / 2: 2.000 - 3 / 3: 3.000 - - -! bug 1395 -! parsing exponent expressions: 1.0e-5+0*7 misinterpreted -! CANCEL DATA errors -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_exp_spaces.jnl -! err581_exp_spaces.jnl -! bug 1395 -! Expressions with an exponent immediately followed by an operator -! are parsed incorrectly, including the operator in the exponent: -! -! 1.0e-5+0*7 was parsed as (1.0e-5 + 0)* 7 -! 1.0e-5 + 0*7 was parsed correctly - -set mode ignore - -list 1.0e-5+ 0*7 - VARIABLE : 1.0E-5+ 0*7 - 1.000E-05 -list 1.0e-5 + 0*7 - VARIABLE : 1.0E-5 + 0*7 - 1.000E-05 -list 1.0e-5+0*7 - VARIABLE : 1.0E-5+0*7 - 1.000E-05 -list 1000.6+ 0*7 - VARIABLE : 1000.6+ 0*7 - 1001. - -let xx= x[x=1:5] - -list 1.0e-5 + 0*xx - VARIABLE : 1.0E-5 + 0*XX - SUBSET : 5 points (X) - 1 / 1: 1.000E-05 - 2 / 2: 1.000E-05 - 3 / 3: 1.000E-05 - 4 / 4: 1.000E-05 - 5 / 5: 1.000E-05 -list 1.0e-5 + 0*xx - VARIABLE : 1.0E-5 + 0*XX - SUBSET : 5 points (X) - 1 / 1: 1.000E-05 - 2 / 2: 1.000E-05 - 3 / 3: 1.000E-05 - 4 / 4: 1.000E-05 - 5 / 5: 1.000E-05 -list 1.0e-5+0*xx - VARIABLE : 1.0E-5+0*XX - SUBSET : 5 points (X) - 1 / 1: 1.000E-05 - 2 / 2: 1.000E-05 - 3 / 3: 1.000E-05 - 4 / 4: 1.000E-05 - 5 / 5: 1.000E-05 - -can mode ignore - -! bugs 439,1390: applying command context -GO bn_reset.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_command_cx.jnl -! err590_command_cx.jnl -! bugs 439 and 1390: the command context should apply to immed. mode evaluation -! only for action commands, not for commands like define - -use gt4d011 -def ax/np=`temp,r=lsize`/t=0:100 tax - !-> def ax/np=25/t=0:100 tax -let n = `temp,r=lsize` - !-> DEFINE VARIABLE n = 25 -def ax/np=`n`/t=0:100 tax - !-> def ax/np=25/t=0:100 tax - - -! but for an action command, the /I= should apply to the grave-accent -! expression, correctly giving an error - -set mode ignore -plot/i=100/k=1 temp[x=`temp,r=xend`] - !-> plot/i=100/k=1 temp[x=122.5W] - -can mode ignore - -! bug 1401: define 1-point axis with bounds; gets bounds wrong -GO bn_reset.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_define_1pt_bounds.jnl -! err581_define_1pt_bounds.jnl -! see bug 1401: - -! Define a multipoint axis and it works fine. Then define a 1-point axis and -! the result is wrong. Then we repeat the first multipoint axis definition -! again, and even that result is now very wrong!! Same results in both v5.81 -! for Linux and v5.70 for Irix. - -def ax/x/bounds xax = {0,3,5},{-2,2,2,4,4,6} -list xboxlo[gx=xax],xboxhi[gx=xax],x[gx=xax] - X: -2 to 6 - Column 1: XBOXLO is XBOXLO (axis XAX) - Column 2: XBOXHI is XBOXHI (axis XAX) - Column 3: X is X (axis XAX) - XBOXLO XBOXHI X -0 / 1: -2.000 2.000 0.000 -3 / 2: 2.000 4.000 3.000 -5 / 3: 4.000 6.000 5.000 - -def ax/x/bounds xax = {0},{-2,2} -list xboxlo[gx=xax],xboxhi[gx=xax],x[gx=xax] - X: 0 - Column 1: XBOXLO is XBOXLO (axis XAX) - Column 2: XBOXHI is XBOXHI (axis XAX) - Column 3: X is X (axis XAX) - XBOXLO XBOXHI X -I / *: -2.000 2.000 0.0000 - -def ax/x/bounds xax = {0,3,5},{-2,2,2,4,4,6} -list xboxlo[gx=xax],xboxhi[gx=xax],x[gx=xax] - X: -2 to 6 - Column 1: XBOXLO is XBOXLO (axis XAX) - Column 2: XBOXHI is XBOXHI (axis XAX) - Column 3: X is X (axis XAX) - XBOXLO XBOXHI X -0 / 1: -2.000 2.000 0.000 -3 / 2: 2.000 4.000 3.000 -5 / 3: 4.000 6.000 5.000 - -! Bug in strrindex when 1st argument is a list of strings -GO bn_reset.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_strrindex.jnl -! err581_strrindex.jnl -! 5/2/2006 -! Bug in strrindex when 1st argument is a list of strings -! This resulted in a crash - -let var = {"strings", "a.b", "cs.ds", "mmm", "amss.ffst"} -list strrindex(var,"s") - VARIABLE : STRRINDEX(VAR,"s") - SUBSET : 5 points (X) - 1 / 1: 7.000 - 2 / 2: 0.000 - 3 / 3: 5.000 - 4 / 4: 0.000 - 5 / 5: 8.000 - -! POLYGON/LINE over a depth axis. -GO bn_reset.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err581_poly_rev.jnl -! err581_poly_rev.jnl -! POLYGON/LINE mis-locates the line when there is a depth or -! other reversed axis. Bugs 842, 843, 844 -! ACM 8/10/2006 -! V751:*acm* 6/2019 - memory is restored to the default in bn_reset - - -! From Patrick, polygon/line on a depth axis - -set mem /size=200 - -use gt4d011 - -shade temp[i=@ave,l=1] - -let v1={-3,2,0.5,2} -let v2={20,80,50,30} -let v3={10,-3,16,3} - -! Overlay sample data over a variable with a depth axis -! /line=1 did not work - -go polymark poly/lev=(-5,30,1)/pal=white/fill/line=1/nolab/over v1 v2 v3 circle 2 - - -! XZ plot -shade temp[j=@ave,l=1] -let v1={221,225,232,235} -let v2={20,80,50,30} -let v3={10,-3,16,3} - -go polymark poly/lev=(-5,30,1)/pal=white/fill/line=1/nolab/over v1 v2 v3 circle 2 - - -! ZT plot -shade temp[i=@ave,j=@ave] -let v1={22800,23500,24800,26000} -let v2={20,80,50,30} -let v3={10,-3,16,3} - -go polymark poly/lev=(-5,30,1)/pal=white/fill/line=1/nolab/over v1 v2 v3 circle 2 - - -! And, from Andrew with other reversed axes. - -ppl cross 1 -plot/vl=4:-4/hl=4:-4/vs/line/title="there should be just one triangle" {1,2,3,1},{0,2,1,0} -poly/ov/col=2/pal=yellow {1,2,3,1},{0,2,1,0} - -ppl cross 0 - - - -! ******** V6.01 Additions below *********** - -GO bn_reset bn601_bug_fixes.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn601_bug_fixes.jnl -GO bn601_bug_fixes.jnl -! bn601_bug_fixes.jnl -! test various fixes that went into version 6.01 -! 20-Sep-2006 ACM -! -! Long name for bounds attribute was not read by Ferret -! Bug 1443 -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_long_bounds_name -! err600_long_bounds_name.jnl -! Long name for bounds attribute was not read by Ferret -! Bug 1443 -! 20-Sep-2006 ACM - - -def axis/x/bounds layer_between_two_pressure_difference_from_ground = {0,3,5},{-6,2,2,4.5,4.5,9} -let var = x[gx=layer_between_two_pressure_difference_from_ground] + 1 - -save/clobber/file=a.nc var -can var/all - -! previously the following generated an error -use a -list x[gx=var], xbox[gx=var], xboxlo[gx=var], xboxhi[gx=var] - DATA SET: ./a.nc - X: -6 to 9 - Column 1: X is X (axis LAYER_BETWEEN_TWO_PRESSURE_DIFFERENCE_FROM_GROUND) - Column 2: XBOX is XBOX (axis LAYER_BETWEEN_TWO_PRESSURE_DIFFERENCE_FROM_GROUND) - Column 3: XBOXLO is XBOXLO (axis LAYER_BETWEEN_TWO_PRESSURE_DIFFERENCE_FROM_GROUND) - Column 4: XBOXHI is XBOXHI (axis LAYER_BETWEEN_TWO_PRESSURE_DIFFERENCE_FROM_GROUND) - X XBOX XBOXLO XBOXHI -0 / 1: 0.000 8.000 -6.000 2.000 -3 / 2: 3.000 2.500 2.000 4.500 -5 / 3: 5.000 4.500 4.500 9.000 - - -! Previously TM_CHECK_BNDS had not been used to check bounds on regular axes. -! bug1434 -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_check_bounds_regular.jnl -! err600_check_bounds_regular.jnl -! Previously TM_CHECK_BNDS had not been used to check bounds on regular axes. -! bug1434 - -! 19-Sep-2006 ACM - -use coads_climatology -save/clobber/l=1/j=45/file=b.nc/bounds sst -can data/all -use b - -! previously had errors: -! bounds COADSX_bnds do not enclose point on axis COADSX -! Substituting coordinate midpoints - -! Long values for symbols: previously symbol strings were cut off at 255 characters. -! Bug 1439 -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_long_symbol_string.jnl -! err600_longsym_symbol_string.jnl -! Long values for symbols: previously strings were cut off at 255 characters. -! Bug 1439 -! 20-Sep-2006 ACM - -! Define a long symbol and use it in a function call - -DEFINE SYMBOL longsym_a = "........10........20........30........40........50........60........70........80........90.......100.......110.......120.......130.......140.......150.......160.......170.......180.......190.......200.......210.......220.......230.......240.......250.......260.......270.......280.......290.......300.......310" -DEFINE SYMBOL longsym_b = "300.......310" -SHOW SYMBOL longsym_a, longsym_b -LONGSYM_A = ""........10........20........30........40........50........60........70........80........90.......100.......110.......120.......130.......140.......150.......160.......170.......180.......190.......200.......210.......220.......230.......240.......250.......260.......270.......280.......290.......300.......310"" -LONGSYM_B = ""300.......310"" - -LIST STRINDEX(($longsym_a),($longsym_b)) - !-> LIST STRINDEX("........10........20........30........40........50........60........70........80........90.......100.......110.......120.......130.......140.......150.......160.......170.......180.......190.......200.......210.......220.......230.......240.......250.......260.......270.......280.......290.......300.......310","300.......310") - VARIABLE : STRINDEX("........10........20........30........40........50........60........70........80........90.......100.......110.......120.......130.......140.......150.......160.......170 - 298.0 - -! Now define a symbol from a file variable -use "longtitle1000.nc" -DEFINE SYMBOL longsym_1000 = "`a,return=dsettitle`" - !-> DEFINE SYMBOL longsym_1000 = " -1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" - -SHOW SYMBOL longsym_1000 -LONGSYM_1000 = "" -1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"" - -DEFINE SYMBOL longsym_very_long = strcat (($longsym_a), ($longsym_1000)) - !-> DEFINE SYMBOL longsym_very_long = strcat ("........10........20........30........40........50........60........70........80........90.......100.......110.......120.......130.......140.......150.......160.......170.......180.......190.......200.......210.......220.......230.......240.......250.......260.......270.......280.......290.......300.......310", " -1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890") -SHOW SYMBOL longsym_very_long -LONGSYM_VERY_LONG = "strcat ("........10........20........30........40........50........60........70........80........90.......100.......110.......120.......130.......140.......150.......160.......170.......180.......190.......200.......210.......220.......230.......240.......250.......260.......270.......280.......290.......300.......310", " -1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890")" - -CANCEL SYMBOL longsym* - -! Global missing-value flag for dataset was not initialized and so was -! set to 0 when there was no global attribute in the file -! bug 1445 -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_missing_flag.jnl -! noglobalhistory.nc has no global history attribute, and -! also the variable B has no missing or fill value flag -! Bug 1445: the missing-value flag got set to 0: (data values are 0,1,2,3) - -use noglobalhistory.nc -list b - VARIABLE : {0,1,2,3} - FILENAME : noglobalhistory.nc - SUBSET : 4 points (X) - 1 / 1: 0.000 - 2 / 2: 1.000 - 3 / 3: 2.000 - 4 / 4: 3.000 - -! should be 0,1,2,3; bug had first value missing. - - -! err600_returnsize.jnl -! bug 1447, where say `var[d=fname.cdf],return=size` failed -! ( a parsing error, confusing the dot in the filename with dot in `var.att,return=size` ) -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_returnsize.jnl -! err600_returnsize.jnl -! ACM 10-4-2006 -! bug 1447, where say `var[d=fname.cdf],return=size` failed -! ( a parsing error, confusing the dot in the filename with dot in `var.att,return=size` ) - - -use coads_climatology.cdf - -say `sst[d=coads_climatology.cdf],return=size` - !-> MESSAGE/CONTINUE 48600 -48600 -say `sst.units,return=size` - !-> MESSAGE/CONTINUE 5 -5 - -define symbol the_x_axis = `sst,return=xaxis` - !-> define symbol the_x_axis = COADSX -say `(($the_x_axis)).units,return=size` - !-> MESSAGE/CONTINUE 12 -12 - -! err600_if_comments_tab.jnl -! bug 1446 When there is a tab before a comment, the parsing gets -! thrown off and we got an error about an invalid ENDIF -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_if_comments_tab.jnl -! err600_if_comments_tab.jnl -! ACM 10-4-2006 -! bug 1446 When there is a tab before a comment, the parsing gets -! thrown off and we got an error about an invalid ENDIF - -IF 0 THEN -ENDIF - -! Here there is a tab before the ! which throws off the parsing... -IF 0 THEN -ENDIF - -! err600_set_var_title.jnl -! Bug 1454 Settings made by SET VAR/TITLE=/UNITS= were not saved in output file -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_set_var_title.jnl -! err600_set_var_title.jnl -! Bug 1454 -! The settings made by SET VAR/TITLE=/UNITS= were not saved in output file -! ACM 10/11/06 - -! check the variable name and title in the list command output -use gtbc011 -list/y=1/k=1/l=1 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gtbc011.cdf - SUBSET : 3 points (LONGITUDE) - LATITUDE : 0.833N - DEPTH (m): 5 - TIME : 15-MAR-1983 10:00 - 0.83N - 48 - 160.5W / 70: 31.20 - 159.5W / 71: 31.34 - 158.5W / 72: 31.45 - -set var/title="Temp"/units="DegC" temp -list/y=1/k=1/l=1 temp ! new title and units - VARIABLE : Temp (DegC) - FILENAME : gtbc011.cdf - SUBSET : 3 points (LONGITUDE) - LATITUDE : 0.833N - DEPTH (m): 5 - TIME : 15-MAR-1983 10:00 - 0.83N - 48 - 160.5W / 70: 31.20 - 159.5W / 71: 31.34 - 158.5W / 72: 31.45 - -save/file=a.nc/clobber temp -can data/all -use a.nc -! This listing should have the NEW var title and units - list/y=1/k=1/l=1 temp - VARIABLE : Temp (DegC) - FILENAME : a.nc - SUBSET : 3 points (LONGITUDE) - LATITUDE : 0.833N - DEPTH (m): 5 - TIME : 15-MAR-1983 10:00 - 0.83N - 48 - 160.5W / 1: 31.20 - 159.5W / 2: 31.34 - 158.5W / 3: 31.45 - -! err600_var_label.jnl -! bug1442 If there is no long_name attribute, the plot should -! be labelled with the var name but it only has units label -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_var_label.jnl -! err600_var_label.jnl -! bug1442 -! If there is no long_name attribute, the plot or listing -! should be labeled with the var name but it has only the units - -use gtbc011 - -! line VARIABLE has longname (units) which is TEMPERATURE (deg. C) -list/i=70/l=1/j=30/k=1 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gtbc011.cdf - LONGITUDE: 160.5W - LATITUDE : 5.167S - DEPTH (m): 5 - TIME : 15-MAR-1983 10:00 - 29.54 - -! Write, without the long_name attribute. -can att/output temp.long_name -save/file=a.nc/clobber temp - -can data/all -use a.nc -sh att/all temp - attributes for dataset: ./a.nc - TEMP.missing_value = -1.E+34 - TEMP._FillValue = -1.E+34 - TEMP.history = From gt160w011 - TEMP.units = deg. C - -! Label should be variablename (units) which is TEMP (deg. C) -list/i=70/l=1/j=30/k=1 temp - VARIABLE : TEMP (deg. C) - FILENAME : a.nc - LONGITUDE: 159.5W(6321) - LATITUDE : 5.167S - DEPTH (m): 5 - TIME : 15-MAR-1983 10:00 - 29.72 - -! err600_upcase.jnl -! Bug 1461 upcasing of axis name on creating bounds variable for output -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_upcase.jnl - ! err600_upcase.jnl - ! 10/23/2006 - ! acm - ! bug 1461: bounds variable is created for netcdf output with upcased axis name, - ! but cd_write_var looked for it with original lowercase axis name. - -SET MODE ignore_error - -USE err600_upcase.nc -SAVE/CLOBBER/FILE=b.nc v - -! this was the workaround for v6.0. After the fix this works the same as the above -CANCEL MODE upcase -SAVE/CLOBBER/FILE=b.nc v - -SET MODE/LAST upcase_output -SET MODE/LAST ignore_error - -! err600_let_d.jnl -! Making a LET/D= assignment caused the return of dimension names from the attribute -! structure fail, and the list of variable names was incorrect. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_let_d.jnl -! err600_let_d.jnl -! Making a LET/D= assignment caused the return of dimension -! names from the attribute structure fail, and the list of -! variable names was incorrect. -! 28-Nov-2006 - -use levitus_climatology -let/d=levitus_climatology temp_20 = temp[d=levitus_climatology,z=0:20@sum] -list ..dimnames - VARIABLE : ..DIMNAMES - FILENAME : levitus_climatology.cdf - SUBSET : 3 points (X) - 1 / 1:"XAXLEVITR1_160" - 2 / 2:"YAXLEVITR1_90" - 3 / 3:"ZAXLEVITR1_1" -list ..varnames - VARIABLE : ..VARNAMES - FILENAME : levitus_climatology.cdf - SUBSET : 2 points (X) - 1 / 1:"TEMP" - 2 / 2:"temp_20" - -! err600_nc_des_order.jnl -! Bug 1459 order of multiple descriptor file opening causes netCDF error -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_nc_des_order.jnl -! err600_nc_des_order.jnl -! 11/07/2006 ACM -! -! Bug 1459 order of multiple descriptor file opening causes netCDF error -! The bug results in: -! ** netCDF error: NCSYSERR -! Due to incorrect resetting of sf_lunit in cd_init_dset.F - -set data tok_short.des -set data ss_small.nc -set data mc_test.des -set data sstok_short.nc - -stat rose[d=2] - - Surface relief - LONGITUDE: 137.3W(222.7) to 135.7W(224.3) - LATITUDE: 58.19N to 59.16N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: ./data/ss_small.nc - - Total # of data points: 2576 (46*56*1*1*1*1) - # flagged as bad data: 0 - Minimum value: -592 - Maximum value: 3005 - Mean value: 436.64 (unweighted average) - Standard deviation: 563.43 - -can data/all - -set data/form=cdf "ss_small.nc" -set data/form=cdf "sstok_short.nc" -SET DAT/FORM=CDF "mc_test.des" - -stat rose[j=12,d=1] - - Surface relief - LONGITUDE: 137.3W(222.7) to 135.7W(224.3) - LATITUDE: 58.39N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: ./data/ss_small.nc - - Total # of data points: 46 (46*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: -168 - Maximum value: 509 - Mean value: 62.717 (unweighted average) - Standard deviation: 156.25 - -! Bug 1470; redefine or reset attributes of an axis -! should change the axis definition and its attributes -! in the attribute structure. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_reset_redefine_axis.jnl -! err600_reset_redefine_axis.jnl -! Bug 1470; redefine or reset attributes of an axis -! should change the axis definition and its attributes -! in the attribute structure. - -use coads_climatology -def sym timeax = `sst,return=taxis` - !-> def sym timeax = TIME21 - -show att/all (($timeax)) - !-> show att/all (TIME21) - attributes for dataset: ./data/coads_climatology.cdf - (TIME21).units = hour since 0000-01-01 00:00:00 - (TIME21).time_origin = 1-JAN-0000 00:00:00 - (TIME21).modulo = - (TIME21).orig_file_axname = TIME -show axis ($timeax) - !-> show axis TIME21 - name axis # pts start end - TIME21 TIME 3mr 16-JAN 06:00 17-MAR 02:58 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 2191.455 (modulo length = 8765.82) -define axis/t0=1-jan-0001/t=1:3:1/unit=months ($timeax) - !-> define axis/t0=1-jan-0001/t=1:3:1/unit=months TIME21 -show att/all (($timeax)) - !-> show att/all (TIME21) - attributes for dataset: ./data/coads_climatology.cdf - (TIME21).units = MONTHS since 1-JAN-0001 - (TIME21).time_origin = 1-JAN-0001 - (TIME21).orig_file_axname = TIME -show axis ($timeax) - !-> show axis TIME21 - name axis # pts start end - TIME21 TIME 3 r 31-JAN-0001 10:29 02-APR-0001 07:27 -T0 = 1-JAN-0001 - Axis span (to cell edges) = 3 - -! Changing axis with the SET AXIS command - -can data/all -use gt4d011 -def sym timeax = `temp,return=taxis` - !-> def sym timeax = TIME110 -show att/all (($timeax)) - !-> show att/all (TIME110) - attributes for dataset: ./data/gt4d011.cdf - (TIME110).units = hour since 1980-01-14 14:00:00 - (TIME110).time_origin = 14-JAN-1980 14:00:00 - (TIME110).orig_file_axname = TIME1 -show axis ($timeax) - !-> show axis TIME110 - name axis # pts start end - TIME110 TIME 25 r 17-AUG-1982 12:00 10-JAN-1983 12:00 -T0 = 14-JAN-1980 14:00:00 - Axis span (to cell edges) = 3650 - -set ax/modulo/calendar=noleap/t0=1-jan-1900/units=days ($timeax) - !-> set ax/modulo/calendar=noleap/t0=1-jan-1900/units=days TIME110 -show att/all (($timeax)) - !-> show att/all (TIME110) - attributes for dataset: ./data/gt4d011.cdf - (TIME110).units = days since 1-JAN-1900 - (TIME110).time_origin = 1-JAN-1900 - (TIME110).orig_file_axname = TIME1 - (TIME110).calendar = NOLEAP - (TIME110).modulo = -show axis ($timeax) - !-> show axis TIME110 - name axis # pts start end - TIME110 TIME 25mr 14-MAR-1962 00:00 19-OCT-1971 00:00 -T0 = 1-JAN-1900 -CALENDAR = NOLEAP - Axis span (to cell edges) = 3650 (modulo length = axis span) - - -! Changing axis with the CANCEL AXIS/ command - -can data/all -use gt4d011 -def sym timeax = `temp,return=taxis` - !-> def sym timeax = TIME110 -def sym zax = `temp,return=zaxis` - !-> def sym zax = PSZT1 -show att/all (($timeax)) - !-> show att/all (TIME110) - attributes for dataset: ./data/gt4d011.cdf - (TIME110).units = hour since 1980-01-14 14:00:00 - (TIME110).time_origin = 14-JAN-1980 14:00:00 - (TIME110).orig_file_axname = TIME1 -show axis ($zax) - !-> show axis PSZT1 - name axis # pts start end - PSZT1 DEPTH (m) 27 i- 5 3824 - Axis span (to cell edges) = 4149 - -cancel axis/modulo ($timeax) - !-> cancel axis/modulo TIME110 -show att/all (($timeax)) - !-> show att/all (TIME110) - attributes for dataset: ./data/gt4d011.cdf - (TIME110).units = hour since 1980-01-14 14:00:00 - (TIME110).time_origin = 14-JAN-1980 14:00:00 - (TIME110).orig_file_axname = TIME1 -show axis ($timeax) - !-> show axis TIME110 - name axis # pts start end - TIME110 TIME 25 r 17-AUG-1982 12:00 10-JAN-1983 12:00 -T0 = 14-JAN-1980 14:00:00 - Axis span (to cell edges) = 3650 -cancel axis/depth ($zax) - !-> cancel axis/depth PSZT1 -show att/all (($zax)) - !-> show att/all (PSZT1) - attributes for dataset: ./data/gt4d011.cdf - (PSZT1).units = METERS - (PSZT1).positive = up - (PSZT1).point_spacing = uneven - (PSZT1).edges = PSZTedges - (PSZT1).orig_file_axname = PSZT -show axis ($zax) - !-> show axis PSZT1 - name axis # pts start end - PSZT1 Z (METERS) 27 i 5 3824 - Axis span (to cell edges) = 4149 - - -! err600_ferret_axis_names.jnl -! If Ferret needed to rename an axis on file initialization for uniqueness, -! we now keep that new name in the attr structure, and an attribute -! orig_file_axname keeps the input name. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_ferret_axis_names.jnl -! err600_ferret_axis_names.jnl -! If Ferret needed to rename an axis on file initialization for uniqueness, -! we now keep that new name in the attr structure, and add an attribute -! orig_file_axname with the input name. That orig name is used only on output. - -def axis/t=1:5:1 time -use coads_climatology - -! Note TIME1 with attribute orig_file_axname -sh dat/att - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 28 T FERRET V4.91 (GUI) 1-Mar-99 - -(COADSX) DOUBLE units CHAR 12 T degrees_east - modulo CHAR 1 T - point_spacing CHAR 4 T even - orig_file_axname - CHAR 6 F COADSX - -(COADSY) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - orig_file_axname - CHAR 6 F COADSY - -(TIME22) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 19 T 1-JAN-0000 00:00:00 - modulo CHAR 1 T - orig_file_axname - CHAR 4 F TIME - - SST FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 23 T SEA SURFACE TEMPERATURE - history CHAR 22 T From coads_climatology - units CHAR 5 T Deg C - -save/clobber/bounds/file=a.nc/x=181/y=1 sst - -can data/all -use gt4d011 -save/clobber/file=t2.nc temp[L=2:6] -save/clobber/file=t12.nc temp[L=12:16] -can data/all - -use t2.nc; use t12.nc - -sho dat/att - currently SET data sets: - 1> ./t2.nc - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(PSXT91_108) DOUBLE units CHAR 12 T degrees_east - point_spacing CHAR 4 T even - modulo DOUBLE 1 T 360 - axis CHAR 1 T X - standard_name CHAR 9 F longitude - orig_file_axname - CHAR 10 F PSXT91_108 - -(PSYT135_56) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 6 T uneven - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - bounds CHAR 15 T PSYT135_56_bnds - orig_file_axname - CHAR 10 F PSYT135_56 - - PSYT135_56_bnds DOUBLE - -(PSZT11_10) DOUBLE units CHAR 6 T meters - positive CHAR 4 T down - point_spacing CHAR 6 T uneven - axis CHAR 1 T Z - standard_name CHAR 5 F depth - bounds CHAR 14 T PSZT11_10_bnds - orig_file_axname - CHAR 9 F PSZT11_10 - - PSZT11_10_bnds DOUBLE - -(TIME110) DOUBLE units CHAR 30 T hour since 1980-01-14 14:00:00 - time_origin CHAR 20 T 14-JAN-1980 14:00:00 - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 7 F TIME110 - - TEMP FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 11 T TEMPERATURE - history CHAR 12 T From gt4d011 - units CHAR 6 T deg. C - - 2> ./t12.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(PSXT91_108) DOUBLE units CHAR 12 T degrees_east - point_spacing CHAR 4 T even - modulo DOUBLE 1 T 360 - axis CHAR 1 T X - standard_name CHAR 9 F longitude - orig_file_axname - CHAR 10 F PSXT91_108 - -(PSYT135_56) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 6 T uneven - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - bounds CHAR 15 T PSYT135_56_bnds - orig_file_axname - CHAR 10 F PSYT135_56 - - PSYT135_56_bnds DOUBLE - -(PSZT11_10) DOUBLE units CHAR 6 T meters - positive CHAR 4 T down - point_spacing CHAR 6 T uneven - axis CHAR 1 T Z - standard_name CHAR 5 F depth - bounds CHAR 14 T PSZT11_10_bnds - orig_file_axname - CHAR 9 F PSZT11_10 - - PSZT11_10_bnds DOUBLE - -(TIME1101) DOUBLE units CHAR 30 T hour since 1980-01-14 14:00:00 - time_origin CHAR 20 T 14-JAN-1980 14:00:00 - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 7 F TIME110 - - TEMP FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 11 T TEMPERATURE - history CHAR 12 T From gt4d011 - units CHAR 6 T deg. C - - -! err600_tab_comma_missingdat.jnl -! when data contains missing values list/format=comma or list/format=tab -! should output a comma or tab as placeholder for the missing value -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_tab_comma_missingdat.jnl -! err600_tab_comma_missingdat.jnl -! 11/21/2006 acm - -! when data contains missing values: extra comma as placeholder -let a = {1,1,2,1,1,2,1,1} -let b = {4,4,4,4,4,4,4,4} -set var/bad=2 a -list/form=comma a,b - X: 0.5 to 8.5 - Column 1: A is {1,1,2,1,1,2,1,1} BAD FLAG : 2 - Column 2: B is {4,4,4,4,4,4,4,4} BAD FLAG : -1.E+34 - A,B -1 / 1:1,4 -2 / 2:1,4 -3 / 3:2,4 -4 / 4:1,4 -5 / 5:1,4 -6 / 6:2,4 -7 / 7:1,4 -8 / 8:1,4 -list/form=comma a,b,a - X: 0.5 to 8.5 - Column 1: A is {1,1,2,1,1,2,1,1} BAD FLAG : 2 - Column 2: B is {4,4,4,4,4,4,4,4} BAD FLAG : -1.E+34 - Column 3: A is {1,1,2,1,1,2,1,1} BAD FLAG : 2 - A,B,A -1 / 1:1,4,1 -2 / 2:1,4,1 -3 / 3:2,4,2 -4 / 4:1,4,1 -5 / 5:1,4,1 -6 / 6:2,4,2 -7 / 7:1,4,1 -8 / 8:1,4,1 - -! when data contains missing values: extra tab as placeholder -let a = {1,1,2,1,1,2,1,1} -let b = {4,4,4,4,4,4,4,4} -set var/bad=2 a -list/form=tab a,b - X: 0.5 to 8.5 - Column 1: A is {1,1,2,1,1,2,1,1} BAD FLAG : 2 - Column 2: B is {4,4,4,4,4,4,4,4} BAD FLAG : -1.E+34 - A B -1 / 1:1 4 -2 / 2:1 4 -3 / 3:2 4 -4 / 4:1 4 -5 / 5:1 4 -6 / 6:2 4 -7 / 7:1 4 -8 / 8:1 4 -list/form=tab a,b,a - X: 0.5 to 8.5 - Column 1: A is {1,1,2,1,1,2,1,1} BAD FLAG : 2 - Column 2: B is {4,4,4,4,4,4,4,4} BAD FLAG : -1.E+34 - Column 3: A is {1,1,2,1,1,2,1,1} BAD FLAG : 2 - A B A -1 / 1:1 4 1 -2 / 2:1 4 1 -3 / 3:2 4 2 -4 / 4:1 4 1 -5 / 5:1 4 1 -6 / 6:2 4 2 -7 / 7:1 4 1 -8 / 8:1 4 1 - -! err600_vec_aspect.jnl -! VECTOR/ASPECT plots are wrong (incorrect fix for bug 1348) -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_vec_aspect.jnl -! err600_vec_aspect.jnl -! VECTOR/ASPECT plots are wrong (incorrect fix for bug 1348) -! 12/04/2006 - -use gt4d011.cdf -vec/k=1/l=1 u,v -vec/over/asp/k=1/l=1 u,v - -! Irregular axes - -def axis/from_data/x/name=xirr/units=deg/modulo {0,1,2,4,6,7,8,10,14,16,20,23,24} -def axis/from_data/y/name=yirr/units=deg {0,2,4,5,6,7,8,9,12,13,14,15,18} -let a = 0.1*x[gx=xirr] + 4*y[gy=yirr] -let b = 3*x[gx=xirr] + y[gy=yirr] -vec a,b -vec/asp/over a,b - -! err600_save_two.jnl -! Bug 1478: save two variables with the same time axis to a file, error -! when checking whether 2nd variable has same grid. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_save_two.jnl -! err600_save_two.jnl -! 12/11/2006 -! Bug 1478: save two variables with the same time axis to a file. -! got error attempt to redefine line; axis TIME doesnt match CDF file -! This was due to upcasing of output axis TIME, which needed to be upcased -! before checking whether record axis of the second variable matched the -! one just written to the output file. - -use "a1478.nc" -use "b1478.nc" -save/clobber/file="out.nc" olr[d=1], swdn_toa[d=2] - -! err600_nc_des_order.jnl -! Bug 1459 order of multiple descriptor file opening causes netCDF error -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err600_nc_des_order.jnl -! err600_nc_des_order.jnl -! 11/07/2006 ACM -! -! Bug 1459 order of multiple descriptor file opening causes netCDF error -! The bug results in: -! ** netCDF error: NCSYSERR -! Due to incorrect resetting of sf_lunit in cd_init_dset.F - -set data tok_short.des -set data ss_small.nc -set data mc_test.des -set data sstok_short.nc - -stat rose[d=2] - - Surface relief - LONGITUDE: 137.3W(222.7) to 135.7W(224.3) - LATITUDE: 58.19N to 59.16N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: ./data/ss_small.nc - - Total # of data points: 2576 (46*56*1*1*1*1) - # flagged as bad data: 0 - Minimum value: -592 - Maximum value: 3005 - Mean value: 436.64 (unweighted average) - Standard deviation: 563.43 - -can data/all - -set data/form=cdf "ss_small.nc" -set data/form=cdf "sstok_short.nc" -SET DAT/FORM=CDF "mc_test.des" - -stat rose[j=12,d=1] - - Surface relief - LONGITUDE: 137.3W(222.7) to 135.7W(224.3) - LATITUDE: 58.39N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: ./data/ss_small.nc - - Total # of data points: 46 (46*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: -168 - Maximum value: 509 - Mean value: 62.717 (unweighted average) - Standard deviation: 156.25 - -! ******** V6.02 Additions below *********** - -GO bn_reset bn_set_strides.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_set_strides.jnl -GO bn_set_strides.jnl -! bn_set_strides.jnl -! Jing Li, 11/2006 -! tests for SET AXIS/STRIDES - -! 1/2007 ACM change show axis/all to show commands for individual axes; -! When run among other benchmark tests, there are a bunch of -! unrelated axes already defined, which get in the way of -! seeing the desired output. - -!set mode ignore_error - -!..............1. ignore STRIDE = 1 -use coads_climatology -show axis `sst,return=xaxis` - !-> show axis COADSX - name axis # pts start end - COADSX LONGITUDE 180mr 21E 19E(379) - Axis span (to cell edges) = 360 (modulo length = axis span) -show axis `sst,return=yaxis` - !-> show axis COADSY - name axis # pts start end - COADSY LATITUDE 90 r 89S 89N - Axis span (to cell edges) = 180 -show axis `sst,return=taxis` - !-> show axis TIME25 - name axis # pts start end - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 2191.455 (modulo length = 8765.82) -set axis/stride=1/offset=1 `sst, return=xaxis` - !-> set axis/stride=1/offset=1 COADSX -show axis `sst,return=xaxis` - !-> show axis COADSX - name axis # pts start end - COADSX LONGITUDE 180mr 21E 19E(379) - Axis span (to cell edges) = 360 (modulo length = axis span) -cancel data/all - -!..............2. illegal to stride an already strided axis -use coads_climatology -set axis/stride=2/offset=1 `sst, return=xaxis` - !-> set axis/stride=2/offset=1 COADSX -show axis `sst,return=xaxis` - !-> show axis (AX052) - name axis # pts start end - (AX052) LONGITUDE 90mr 23E 19E(379) - Axis span (to cell edges) = 360 (modulo length = axis span) -!can't stride it again -set mode ignore_error -set axis/stride=2/offset=1 `sst, return=xaxis` - !-> set axis/stride=2/offset=1 (AX052) -show axis `sst,return=xaxis` - !-> show axis (AX052) - name axis # pts start end - (AX052) LONGITUDE 90mr 23E 19E(379) - Axis span (to cell edges) = 360 (modulo length = axis span) -set mode/last ignore -cancel data/all - -!..............3. only set STRIDE -use coads_climatology - -! --- before striding - -list sst[i=21:30,j=50,k=1,l=50] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 10 points (LONGITUDE) - LATITUDE : 9N - TIME : 15-FEB-0012 14:19 - 9N - 50 - 61E / 21: 26.86 - 63E / 22: 27.00 - 65E / 23: 27.29 - 67E / 24: 27.69 - 69E / 25: 27.93 - 71E / 26: 28.08 - 73E / 27: 28.23 - 75E / 28: 28.32 - 77E / 29: 28.23 - 79E / 30: 27.82 - -! --- after set striding - -set axis/stride=2 `sst, return=xaxis` - !-> set axis/stride=2 COADSX -list sst[i=11:15,j=50,k=1,l=50] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 9N - TIME : 15-FEB-0012 14:19 - 9N - 50 - 61E / 11: 26.86 - 65E / 12: 27.29 - 69E / 13: 27.93 - 73E / 14: 28.23 - 77E / 15: 28.23 - - -! --- after cancel striding -cancel axis/stride `sst,return=xaxis` - !-> cancel axis/stride (AX046) -list sst[i=21:30,j=50,k=1,l=50] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 10 points (LONGITUDE) - LATITUDE : 9N - TIME : 15-FEB-0012 14:19 - 9N - 50 - 61E / 21: 26.86 - 63E / 22: 27.00 - 65E / 23: 27.29 - 67E / 24: 27.69 - 69E / 25: 27.93 - 71E / 26: 28.08 - 73E / 27: 28.23 - 75E / 28: 28.32 - 77E / 29: 28.23 - 79E / 30: 27.82 -cancel data/all - -!.............4. only set OFFSET -! ingored if you only set OFFSET - -use coads_climatology -set axis/offset=1 `sst, return=xaxis` - !-> set axis/offset=1 COADSX -show axis `sst,return=xaxis` - !-> show axis COADSX - name axis # pts start end - COADSX LONGITUDE 180mr 21E 19E(379) - Axis span (to cell edges) = 360 (modulo length = axis span) - -set mode ignore -cancel axis/stride `sst,return=xaxis` - !-> cancel axis/stride COADSX -set mode/last ignore -cancel data/all - - -!.............5. OFFSET .LE. STRIDE -use coads_climatology -set mode ignore -set axis/stride=2/offset=4 `sst, return=xaxis` - !-> set axis/stride=2/offset=4 COADSX -set mode/last ignore -cancel data/all - -!.............6. SHOW GRID/DYNAMIC -use coads_climatology -set axis/stride=4/offset=2 `sst, return=xaxis` - !-> set axis/stride=4/offset=2 COADSX -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - AXIS (AX054) use count: 1 - AXIS (AX052) use count: 13 - AXIS (AX009) use count: 1 -cancel data/all - -!.............7. cancel stride on a non-strided axis -use coads_climatology -set mode ignore -cancel axis/stride `sst,return=xaxis` - !-> cancel axis/stride COADSX -set mode/last ignore - -cancel data/all - -!.............8. striding on a modulo axis - -! --- 8.1 stride value is an integer factor of the axis length -! the strided axis will inherit the modulo property of its parent - -use coads_climatology -set axis/stride=6/offset=5 `sst,return=xaxis` - !-> set axis/stride=6/offset=5 COADSX -show axis `sst,return=xaxis` - !-> show axis (AX048) - name axis # pts start end - (AX048) LONGITUDE 30mr 31E 19E(379) - Axis span (to cell edges) = 360 (modulo length = axis span) -cancel axis/stride `sst,return=xaxis` - !-> cancel axis/stride (AX048) - -!--- 8.2 stride value is not an integer factor of the axis length -! warning: it may lose modulo property -set axis/stride=7/offset=5 `sst,return=xaxis` - !-> set axis/stride=7/offset=5 COADSX -show axis `sst,return=xaxis` - !-> show axis (AX046) - name axis # pts start end - (AX046) LONGITUDE 25 r 31E 7E(367) - Axis span (to cell edges) = 350 -cancel axis/stride `sst,return=xaxis` - !-> cancel axis/stride (AX046) -cancel data/all - -! --- 8.3 testing strided modulo axis -use coads_climatology -set axis/stride=2/offset=1 `sst,return=xaxis` - !-> set axis/stride=2/offset=1 COADSX -shade/x=-180:180/y=-30:70/L=2 sst -cancel axis/stride `sst,return=xaxis` - !-> cancel axis/stride (AX046) -cancel data/all - -!.............9. two datasets share the same grid - -! --- 9.1 test: use A - use B - stride -! use A; use B; set axis/stride=2 `var[d=A], return=axis` -! -- will affect variables in B -use coads_climatology -save/clobber/file=d2.nc sst[L=1] -use d2 -list/x=180:195/j=30/L=1 sst[d=d2] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : d2.nc - SUBSET : 8 points (LONGITUDE) - LATITUDE : 31S - TIME : 16-JAN 06:00 - 31S - 30 - 179W / 81: 22.53 - 177W / 82: 22.71 - 175W / 83: 22.44 - 173W / 84: 22.21 - 171W / 85: 21.86 - 169W / 86: 22.07 - 167W / 87: 22.30 - 165W / 88: 22.28 -set axis/stride=2 `sst[d=coads_climatology], return=xaxis` - !-> set axis/stride=2 COADSX -list/x=180:195/j=30/L=1 sst[d=d2] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : d2.nc - SUBSET : 4 points (LONGITUDE) - LATITUDE : 31S - TIME : 16-JAN 06:00 - 31S - 30 - 179W / 41: 22.53 - 175W / 42: 22.44 - 171W / 43: 21.86 - 167W / 44: 22.30 - -cancel data/all - -! --- 9.2 test: use A -stride -useB -! use A; set axis/stride=2 `var[d=A], return=xaxis`; use B -! -- will not affect variables in B -use coads_climatology -set axis/stride=2 `sst[d=coads_climatology], return=xaxis` - !-> set axis/stride=2 COADSX -list/x=180:195/j=30/L=1 sst[d=coads_climatology] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 4 points (LONGITUDE) - LATITUDE : 31S - TIME : 16-JAN 06:00 - 31S - 30 - 179W / 41: 22.53 - 175W / 42: 22.44 - 171W / 43: 21.86 - 167W / 44: 22.30 -use d2 -list/x=180:195/j=30/L=1 sst[d=d2] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : d2.nc - SUBSET : 8 points (LONGITUDE) - LATITUDE : 31S - TIME : 16-JAN 06:00 - 31S - 30 - 179W / 81: 22.53 - 177W / 82: 22.71 - 175W / 83: 22.44 - 173W / 84: 22.21 - 171W / 85: 21.86 - 169W / 86: 22.07 - 167W / 87: 22.30 - 165W / 88: 22.28 - -can data/all - -!.............10. strides on permuted and reversed axes - -! --- 10.1 stride on a permuted axis -use/order=yzt coads_climatology -show data/all - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - name title I J K L - SST SEA SURFACE TEMPERATURE ... 1:180 1:90 1:3 - -set axis/stride=5 `sst,return=yaxis` - !-> set axis/stride=5 COADSX -show axis `sst,return=yaxis` - !-> show axis (AX054) - name axis # pts start end - (AX054) LONGITUDE 36mr 21E 11E(371) - Axis span (to cell edges) = 360 (modulo length = axis span) - -can data/all - -! --- 10.2 stride on a reversed axis -- YAXIS -use/order=x-yt coads_climatology -list/x=180/l=5 sst[j=1:30] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 30 points (LATITUDE) - LONGITUDE: 179E - TIME : 15-JAN 11:49 - 179E - 80 - 31S / 30: 18.47 - 33S / 29: 17.05 - 35S / 28: 15.94 - 37S / 27: 14.53 - 39S / 26: 12.83 - 41S / 25: 11.11 - 43S / 24: 8.80 - 45S / 23: 6.42 - 47S / 22: 4.83 - 49S / 21: 4.08 - 51S / 20: 3.89 - 53S / 19: 3.48 - 55S / 18: 3.20 - 57S / 17: 2.52 - 59S / 16: 1.90 - 61S / 15: 1.04 - 63S / 14: 0.14 - 65S / 13: .... - 67S / 12: .... - 69S / 11: .... - 71S / 10: .... - 73S / 9: .... - 75S / 8: .... - 77S / 7: .... - 79S / 6: .... - 81S / 5: .... - 83S / 4: .... - 85S / 3: .... - 87S / 2: .... - 89S / 1: .... - -set axis/stride=5/offset=3 `sst,return=yaxis` - !-> set axis/stride=5/offset=3 COADSY -list/x=180/l=5 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 18 points (LATITUDE) - LONGITUDE: 179E - TIME : 15-JAN 11:49 - 179E - 80 - 87N / 18: .... - 77N / 17: -0.20 - 67N / 16: 0.06 - 57N / 15: 7.30 - 47N / 14: 13.13 - 37N / 13: 19.97 - 27N / 12: 24.01 - 17N / 11: 28.03 - 7N / 10: 29.14 - 3S / 9: 28.01 - 13S / 8: 27.10 - 23S / 7: 24.41 - 33S / 6: 17.05 - 43S / 5: 8.80 - 53S / 4: 3.48 - 63S / 3: 0.14 - 73S / 2: .... - 83S / 1: .... -list/x=180/l=5 sst[j=3:14:2] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - regrid: 20 deg on Y - FILENAME : coads_climatology.cdf - SUBSET : 6 points (LATITUDE) - LONGITUDE: 179E - TIME : 15-JAN 11:49 - 179E - 80 - 37N / 6: 19.97 - 17N / 5: 28.03 - 3S / 4: 28.01 - 23S / 3: 24.41 - 43S / 2: 8.80 - 63S / 1: 0.14 - -cancel data/all - -!.............11. stride on all axes -use coads_climatology -set axis/stride=2 `sst, return=xaxis` - !-> set axis/stride=2 COADSX -set axis/stride=2 `sst, return=yaxis` - !-> set axis/stride=2 COADSY -set axis/stride=2 `sst, return=taxis` - !-> set axis/stride=2 TIME25 - -show axis `sst,return=xaxis` - !-> show axis (AX056) - name axis # pts start end - (AX056) LONGITUDE 90mr 21E 17E(377) - Axis span (to cell edges) = 360 (modulo length = axis span) -show axis `sst,return=yaxis` - !-> show axis (AX048) - name axis # pts start end - (AX048) LATITUDE 45 r 89S 87N - Axis span (to cell edges) = 180 -show axis `sst,return=taxis` - !-> show axis (AX053) - name axis # pts start end - (AX053) TIME 2 r 16-JAN-0000 06:00 17-MAR-0000 02:58 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 2921.94 - -can data/all - -!.............12. stride on a NORMAL axis -set mode ignore_error -use coads_climatology -set axis/stride=2 `sst,return=zaxis` - !-> set axis/stride=2 NORMAL -set mode/last ignore_error - -show axis `sst,return=xaxis` - !-> show axis COADSX - name axis # pts start end - COADSX LONGITUDE 180mr 21E 19E(379) - Axis span (to cell edges) = 360 (modulo length = axis span) -show axis `sst,return=yaxis` - !-> show axis COADSY - name axis # pts start end - COADSY LATITUDE 90 r 89S 89N - Axis span (to cell edges) = 180 -show axis `sst,return=taxis` - !-> show axis TIME25 - name axis # pts start end - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 2191.455 (modulo length = 8765.82) - -GO bn_reset bn_lsl_lowpass.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_lsl_lowpass.jnl -GO bn_lsl_lowpass.jnl -! bn_lsl_lowpass.jnl -! Test lsl_lowpass, now included as a statically-linked external function - -use gtsa056_2 -let my_temp = temp[x=180,y=0,k=1] -let f_filtered = lsl_lowpass(my_temp, 40,10) -! plot my_temp -! plot/over f_filtered - -! List the output so its not just a graphical test; -! Compute based on the whole T region, but just list a portion. -LIST/L=10:20 MY_TEMP[L=1:110], F_FILTERED[L=1:110] - DATA SET: ./data/gtsa056_2.cdf - TIME: 10-FEB-1982 10:30 to 15-MAR-1982 21:30 - LONGITUDE: 179.5E - LATITUDE: 0.167S - DEPTH (m): 5 - Column 1: MY_TEMP is TEMP[X=180,Y=0,K=1] - Column 2: F_FILTERED is LSL_LOWPASS(MY_TEMP, 40,10) - MY_TEMP F_FILTERED -11-FEB-1982 23 / 10: 27.50 27.51 -15-FEB-1982 00 / 11: 27.47 27.48 -18-FEB-1982 01 / 12: 27.45 27.44 -21-FEB-1982 02 / 13: 27.41 27.42 -24-FEB-1982 03 / 14: 27.37 27.40 -27-FEB-1982 04 / 15: 27.35 27.39 -02-MAR-1982 05 / 16: 27.39 27.39 -05-MAR-1982 06 / 17: 27.43 27.40 -08-MAR-1982 07 / 18: 27.41 27.41 -11-MAR-1982 08 / 19: 27.41 27.42 -14-MAR-1982 09 / 20: 27.42 27.43 - - -GO bn_reset bn_return_xmod_tmod.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_return_xmod_tmod.jnl -GO bn_return_xmod_tmod.jnl -! New `var,return=xmod` `var,return=tmod` -! Return modulo lengths, or blank if not modulo - -use ocean_atlas_temp -sh grid temp - GRID GBS1 - name axis # pts start end subset - XAX_LEV9421_380 LONGITUDE 360mr 20.5E 19.5E(379.5) full - YAX_LEV94 LATITUDE 180 r 89.5S 89.5N full - ZAXLEVIT191_1 DEPTH (m) 1 r- 0 0 full - TIME4 TIME 2mr 16-JAN 06:00 15-FEB 16:29 full -sh axis XAX_LEV9421_380 - name axis # pts start end - XAX_LEV9421_380 LONGITUDE 360mr 20.5E 19.5E(379.5) - Axis span (to cell edges) = 360 (modulo length = axis span) -sh axis time - name axis # pts start end - TIME T 5 r 1 5 - Axis span (to cell edges) = 5 -say `temp,return=xmod` - !-> MESSAGE/CONTINUE 360 -360 -say `temp,return=tmod` - !-> MESSAGE/CONTINUE 8765.81982421875 -8765.81982421875 - -! X is modulo but not T -use levitus_climatology.cdf -say `temp,return=xmod` - !-> MESSAGE/CONTINUE 360 -360 -say `temp,return=tmod` - !-> MESSAGE/CONTINUE - - -! Define some subspan modulo axes and check the results -! Modulo because start year in 0000 -def ax/t=1-aug-0000:1-aug-0001/np=3/edge/units=days tsub -let a = t[gt=tsub] -say `a,return=tmod` - !-> MESSAGE/CONTINUE 365.2424926757813 -365.2424926757813 - -! Modulo because defined on longitude coordinates -define axis/x=130e:80w:10 xsub -let a = x[gx=xsub] -say `a,return=xmod` - !-> MESSAGE/CONTINUE 360 -360 - -! This file has an x axis with modulo = " " so its modulo, but it -! does not have units of degrees. Thus axis length = modulo length -use string4d -sh grid axy - GRID GMS2 - name axis # pts start end subset - X2AX1 X 2mr 1 2 full - Y3AX Y 3 r 1 3 full - Z4AX Z 4 r 1 4 full - T2AX1 T 2 r 1 2 full -show axis x2ax - name axis # pts start end - X2AX X 2mr 1 2 - Axis span (to cell edges) = 2 (modulo length = 360) -say `axy,return=xmod` - !-> MESSAGE/CONTINUE 2 -2 - -GO bn_reset bn602_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn602_bug_fixes -GO bn602_bug_fixes -! bn602_bug_fixes.jnl -! test various fixes that went into version 6.02 -! 09-Nov-2006 ACM - -! err601_sho_ax_xml_calendar.jnl -! bug 1468: SHOW AXIS/ALL/XML listed the wrong info for the calendar -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err601_sho_ax_xml_calendar.jnl -! err601_sho_ax_xml_calendar.jnl -! 11/8/2006 ACM -! bug 1468: SHOW AXIS/XML listed the wrong info for the calendar -! when a time axis has a non-standard calendar. - -def axis/cal=noleap/t=1-jan-2000:1-jan-2002:1/units=days timenoleap -let v = sin(t[gt=timenoleap]/100) -save/clobber/file=noleap.nc v -use noleap.nc -sh axis/xml timenoleap - - - - - - - - - - 731 - - - 2000-01-01 00:00:00 - - - 2002-01-01 00:00:00 - - - - - - no - - - - - - - - - - - - - - - - - - - - - - -! err601_index_111.jnl -! bug 1463 region that points to index -111 on modulo axis confused -! with unspecified_int4. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err601_index_111.jnl - -! err601_index_111.jnl -! 11/09/2006 ACM -! bug 1463 region that points to index -111 on modulo axis confused -! with unspecified_int4. Fixed by changing to -999. - -! x=-203 corresponds to I=-111. -use coads_climatology -list x[gx=sst,x=-193:-203] - VARIABLE : X - axis COADSX - FILENAME : coads_climatology.cdf - SUBSET : 6 points (LONGITUDE) - 157E / -111: -203.0 - 159E / -110: -201.0 - 161E / -109: -199.0 - 163E / -108: -197.0 - 165E / -107: -195.0 - 167E / -106: -193.0 - - -! err601_irregular_axis.jnl -! Check for irregular axis actually being irregular failed; bug 1483 -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err601_irregular_axis.jnl -! err601_irregular_axis.jnl -! V6.0 had a new scheme to check for irregular axes; for an axis -! whose delta-coordinates vary widely this failed. See bug 1483 -! The axis should be 6.792e-10, 1.368e-09, ..., 800, 1100, 1400 - -USE z_wide_variation.nc -SHOW GRID/Z atmos - GRID GOR1 - name axis # pts start end subset - normal X - normal Y - ALTITUDE Z (Pa) 50 i 6.7916E-10 1400 full - TIME26 TIME 1mr 01-JAN 04:00 01-JAN 04:00 full - - K Z ZBOX ZBOXLO - 1> 0 6.885E-10 0 - 2> 0 1.037E-09 0 - 3> 0 2.089E-09 0 - 4> 0 4.207E-09 0 - 5> 0 8.472E-09 0 - 6> 0 1.706E-08 0 - 7> 0 3.436E-08 0 - 8> 0.0000001 6.919E-08 0.0000001 - 9> 0.0000002 1.393E-07 0.0000001 - 10> 0.0000004 2.806E-07 0.0000003 - 11> 0.0000007 5.65E-07 0.0000006 - 12> 0.0000015 1.138E-06 0.0000011 - 13> 0.000003 2.291E-06 0.0000023 - 14> 0.0000061 4.614E-06 0.0000046 - 15> 0.0000122 9.291E-06 0.0000092 - 16> 0.0000247 1.871E-05 0.0000185 - 17> 0.0000497 3.768E-05 0.0000372 - 18> 0.0001 7.587E-05 0.0000748 - 19> 0.0002014 1.528E-04 0.0001507 - 20> 0.0004056 3.077E-04 0.0003035 - 21> 0.0008168 6.196E-04 0.0006112 - 22> 0.0016448 0.001248 0.0012308 - 23> 0.0033121 0.002513 0.0024784 - 24> 0.0066698 0.00506 0.004991 - 25> 0.0134314 0.01019 0.0100506 - 26> 0.0270477 0.02052 0.0202395 - 27> 0.0544674 0.04132 0.0407575 - 28> 0.1096839 0.0832044 0.0820756 - 29> 0.2208762 0.1675531 0.1652801 - 30> 0.44479 0.3374103 0.3328331 - 31> 0.8956969 0.679461 0.6702434 - 32> 1.803712 1.368287 1.3497044 - 33> 3.6322701 2.098144 2.7179911 - 34> 6 2.683865 4.816135 - 35> 9 3.5 7.5 - 36> 13 4.5 11 - 37> 18 6 15.5 - 38> 25 8.5 21.5 - 39> 35 12.5 30 - 40> 50 17.5 42.5 - 41> 70 25 60 - 42> 100 35 85 - 43> 140 50 120 - 44> 200 70 170 - 45> 280 100 240 - 46> 400 142.5 340 - 47> 565 200 482.5 - 48> 800 267.5 682.5 - 49> 1100 300 950 - 50> 1400 300 1250 - - -! err601_check_missing_3arg.jnl -! see bug 1485, check on missing coordinates for 3-argument graphics -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err601_check_missing_3arg.jnl -! err601_check_missing_3arg.jnl -! see bug 1485: if missing coordinates in a curvilinear dataset, we should be -! able to still plot other portions of the data. Check was too broad. - -! Create a dataset in curvilinear coordinates with a few missing coordinates. -use tripolar_subset -let lon = IF geolon_vert_t gt -276 then geolon_vert_t -let lat = geolat_vert_t -save/clobber/file=tripolar_missing_lon.nc lon, lat, ht -can data/all -can var/all - -! Use this data. If we just look at /I=50:100 the plot works ok -use tripolar_missing_lon -stat/i=50:100 lon - - IF GEOLON_VERT_T GT -276 THEN GEOLON_VERT_T - LONGITUDE: 177E(-183) to 81W(-81) - LATITUDE: 71.51N to 90.37N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: ./tripolar_missing_lon.nc - - Total # of data points: 1275 (51*25*1*1*1*1) - # flagged as bad data: 0 - Minimum value: -181.5 - Maximum value: -83.015 - Mean value: -121.95 (unweighted average) - Standard deviation: 24.836 -shade/i=50:100 HT,lon,lat - -! The STAT command loads all the coordinates, then when -! we plot, the check of coordinates looked at all of them -! rather than just those needed. (error was -! X coordinates missing value where val is needed - -can mem/all -stat LON, LAT - - IF GEOLON_VERT_T GT -276 THEN GEOLON_VERT_T - LONGITUDE: 79E(-281) to 81E - LATITUDE: 71.51N to 90.37N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: ./tripolar_missing_lon.nc - - Total # of data points: 4525 (181*25*1*1*1*1) - # flagged as bad data: 186 - Minimum value: -275.98 - Maximum value: 80 - Mean value: -92.341 (unweighted average) - Standard deviation: 106.62 - - GEOLAT_VERT_T - LONGITUDE: 79E(-281) to 81E - LATITUDE: 71.51N to 90.37N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: ./tripolar_missing_lon.nc - - Total # of data points: 4525 (181*25*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 64.383 - Maximum value: 90 - Mean value: 74.619 (unweighted average) - Standard deviation: 5.9864 -shade/i=50:100 HT,lon,lat - -sp rm -f tripolar_missing_lon.nc - - -! err601_missing_string_element.jnl -! Bug 1488; Seg fault when try to list a string variable -! when the last element is missing. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err601_missing_string_element.jnl -! err601_missing_string_element.jnl -! Bug 1488. Seg fault when try to list a string variable -! when the last element is missing. - -let a = {"a", "b", } -list a - VARIABLE : {"a", "b", } - SUBSET : 3 points (X) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"" - - -! ******** V6.03 Additions below *********** - -GO bn_reset bn_modnbd.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_modnbd.jnl -GO bn_modnbd.jnl -! Test MODNBD regridding statistic. - -use gtsa056_2.cdf -!use climatological_axes -!cancel data climatological_axes - -set region/x=140/y=1/k=1 - -! What is the total number of possible data going into each month avg? -let nomiss = missing(temp,30) -list nomiss[gt=month_reg@MODNGD] - VARIABLE : MISSING(TEMP,30) (# of points) - regrid: 730.5 hour on T@MODNGD - FILENAME : gtsa056_2.cdf - SUBSET : 12 points (TIME) - LONGITUDE: 139.5E - LATITUDE : 0.833N - DEPTH (m): 5 - 139.5E - 10 - 16-JAN / 1: 16.00 - 15-FEB / 2: 20.00 - 17-MAR / 3: 20.00 - 16-APR / 4: 20.00 - 16-MAY / 5: 20.00 - 16-JUN / 6: 12.00 - 16-JUL / 7: 10.00 - 16-AUG / 8: 10.00 - 15-SEP / 9: 10.00 - 16-OCT / 10: 10.00 - 15-NOV / 11: 10.00 - 16-DEC / 12: 10.00 - -! Define a new var with some missing data. See what MODNGD and MODNBD -! are, and check that the sum is the same as the number of pts in each -! month in the no-missing-data variable - -let var = if temp gt 29.5 then temp -list var[gt=month_reg@MODNGD], var[gt=month_reg@MODNBD], var[gt=month_reg@MODNGD]+var[gt=month_reg@MODNBD], nomiss[gt=month_reg@MODNGD] - DATA SET: ./data/gtsa056_2.cdf - TIME: 01-JAN 00:45 to 31-DEC 06:34 - LONGITUDE: 139.5E - LATITUDE: 0.833N - DEPTH (m): 5 - Column 1: VAR[G=730.5 hour on T@MODNGD] is IF TEMP GT 29.5 THEN TEMP (# of points)(regrid: 730.5 hour on T@MODNGD) - Column 2: VAR[G=730.5 hour on T@MODNBD] is IF TEMP GT 29.5 THEN TEMP (# of points)(regrid: 730.5 hour on T@MODNBD) - Column 3: EX#3 is VAR[GT=MONTH_REG@MODNGD]+VAR[GT=MONTH_REG@MODNBD] - Column 4: NOMISS[G=730.5 hour on T@MODNGD] is MISSING(TEMP,30) (# of points)(regrid: 730.5 hour on T@MODNGD) - VAR VAR EX#3 NOMISS -16-JAN / 1: 10.00 6.00 16.00 16.00 -15-FEB / 2: 2.00 18.00 20.00 20.00 -17-MAR / 3: 18.00 2.00 20.00 20.00 -16-APR / 4: 20.00 0.00 20.00 20.00 -16-MAY / 5: 20.00 0.00 20.00 20.00 -16-JUN / 6: 12.00 0.00 12.00 12.00 -16-JUL / 7: 7.00 3.00 10.00 10.00 -16-AUG / 8: 0.00 10.00 10.00 10.00 -15-SEP / 9: 8.00 2.00 10.00 10.00 -16-OCT / 10: 10.00 0.00 10.00 10.00 -15-NOV / 11: 10.00 0.00 10.00 10.00 -16-DEC / 12: 10.00 0.00 10.00 10.00 - -GO bn_reset bn_fifty_files.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_fifty_files.jnl -GO bn_fifty_files.jnl -! bn_fifty_files.jnl -! We build OPeNDAP so that 100 files can be opened at a time. -! Test with fifty. - -set mode ignore_error - -use 123456789000101_100101_test_numeric.nc -use a1478.nc -use a_cartesian_bug1179.nc -use adouble_2D.nc -use adouble.nc -use b1478.nc -use bad_taxis.nc -use bounds_noenclose.nc -use dstitle.nc -use err542_poly_over_calendar.nc -use err600_upcase.nc -use err_calendar.nc -use gappy_bounds.nc -use illeg_axname.nc -use longtitle1000.nc -use missing_scale_off.nc -use modfalse.nc -use modulo_lon_time.nc -use mylon.nc -use nan_missing.nc -use noglobalhistory.nc -use ss_small.nc -use sstnok_short.nc -use sstok_short.nc -use test0.nc -use test_nan.nc -use time_axis_seconds.nc -use tripolar_subset.nc -use varyscale_1.nc -use varyscale_2.nc -use xz_nozattrib.nc -use z_wide_variation.nc -use bn_strides.cdf -use clim_airt_lev.cdf -use climatological_axes.cdf -use coads_climatology.cdf -use coads_vwnd.cdf -use err491_attval.cdf -use geo_borders.cdf -use gt4d011.cdf -use gtbc011.cdf -use gtsa056_1.cdf -use gtsa056_2.cdf -use levitus_climatology.cdf -use non_COARDS.cdf -use ocean_atlas_temp.cdf -use reverse_axes.cdf -use TAO_SST_clim.cdf -use epic_formatted_file.nc -use weird_name1.cdf - -cancel mode ignore_error - - -GO bn_reset bn603_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn603_bug_fixes -GO bn603_bug_fixes -! bn603_bug_fixes.jnl -! test various fixes that went into version 6.03 -! 11-May-2006 ACM - -! Fix for bug 904 -! SHADE/LEV did not keep same levels after a SHADE/LINE -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err602_shade_line_lev.jnl -! err602_shade_line_lev.jnl -! Bug 904. -! SHADE/LEV does not keep same levels after a SHADE/LINE -! Was due to fact that SHADE/LINE makes PPL SHADE call -! followed by PPL CONTOUR/OVER call, but without indicating -! that the same contour levels should be used. - -! Note that SHOW SYM LEV* indicates that the SHADE/LINE/KEY changes the levels. - -let a = {1,1}* ysequence({-.29,1.09}) -set view ul; shade/key a; sh sym lev* -LEV_TEXT = "(-5,30,1)" -LEV_MIN = "-0.3" -LEV_MAX = "1.1" -LEV_NUM = "28" -LEV_DEL = "0.05" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "-0.3,-0.25,-0.2,-0.15,-0.1,-0.05,0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1,1.05,1.1" -set view ur; shade/lev a; sh sym lev* -LEV_TEXT = "" -LEV_MIN = "-0.3" -LEV_MAX = "1.1" -LEV_NUM = "28" -LEV_DEL = "0.05" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "-0.3,-0.25,-0.2,-0.15,-0.1,-0.05,0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1,1.05,1.1" -set view ll; shade/line/key a; sh sym lev* -LEV_TEXT = "" -LEV_MIN = "-0.3" -LEV_MAX = "1.1" -LEV_NUM = "28" -LEV_DEL = "0.05" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "-0.3,-0.25,-0.2,-0.15,-0.1,-0.05,0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1,1.05,1.1" -set view lr; shade/lev a; sh sym lev* -LEV_TEXT = "" -LEV_MIN = "-0.3" -LEV_MAX = "1.1" -LEV_NUM = "28" -LEV_DEL = "0.05" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "-0.3,-0.25,-0.2,-0.15,-0.1,-0.05,0,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4,0.45,0.5,0.55,0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1,1.05,1.1" - -! Fix for bug 1302 -! Draw correct SHADE and FILL plots across the modulo branch cut. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err602_curvi_modulo_cut -! err602_curvi_modulo_cut.jnl -! 5/07 bug 1302 -! -! For the curvilinear modulo forms of SHADE and FILL, there appears to -! be some inconsistency in plotting across the modulo cut. SHADE omits -! the half-cells that ought to touch the modulo cut. FILL looks like -! it's tryingto interpolate across the cut, but something's wrong. - -! Note this needs an update to tripolar_subset.nc to add some -! coordinate center locations. - -use tripolar_subset.nc -set view upper -shade/hlim=75:85/vlim=-10:0/mod/pal=rnb2 0*u+mod(i+j,2),geolon_c,geolat_c -set view lower -fill/hlim=75:85/vlim=-10:0/mod u,geolon_c,geolat_c - -! Fix for bug 1388 -! SET LIST/PREC worked for multi-var listings, LIST/PREC= var1,var2 did not -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err602_list_prec -! err602_list_prec.jnl -! fixes for bug 1388: SET LIST/PREC worked for multi-variable listings, -! but LIST/PRECISION= did not. - -use gt4d011.cdf - -! Here is a listing with default precision -LIST/NOHEAD/I=91:94/J=37/K=1/L=1 temp,salt -139.5W / 91: 27.29 2.370E-04 -138.5W / 92: 27.25 2.380E-04 -137.5W / 93: 27.24 2.383E-04 -136.5W / 94: 27.18 2.380E-04 - -! Previously this did not have the effect of changing the precision. -LIST/NOHEAD/I=91:94/J=37/K=1/L=1/PREC=3 temp,salt -139.5W / 91: 27.3 2.37E-04 -138.5W / 92: 27.3 2.38E-04 -137.5W / 93: 27.2 2.38E-04 -136.5W / 94: 27.2 2.38E-04 - -! This has always worked -SET LIST/PREC=7 -LIST/NOHEAD/I=91:94/J=37/K=1/L=1 temp,salt -139.5W / 91: 27.29276 2.369705E-04 -138.5W / 92: 27.25388 2.379802E-04 -137.5W / 93: 27.23906 2.382890E-04 -136.5W / 94: 27.17807 2.380348E-04 - -! This should override the SET LIST/PREC setting -LIST/NOHEAD/I=91:94/J=37/K=1/L=1/PREC=2 TEMP,SALT -139.5W / 91: 27. 2.4E-04 -138.5W / 92: 27. 2.4E-04 -137.5W / 93: 27. 2.4E-04 -136.5W / 94: 27. 2.4E-04 - -! And then things should go back to the SET LIST/PREC setting -LIST/NOHEAD/I=91:94/J=37/K=1/L=1 TEMP,SALT -139.5W / 91: 27.29276 2.369705E-04 -138.5W / 92: 27.25388 2.379802E-04 -137.5W / 93: 27.23906 2.382890E-04 -136.5W / 94: 27.17807 2.380348E-04 - - -! ******** V6.05 Additions below *********** - -GO bn_reset bn_set_var_name.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_set_var_name.jnl -GO bn_set_var_name.jnl -! bn_set_var_name.jnl -! This has been in Ferret since v5.3 but never a benchmark test of it! -! ACM 8/2007 - -USE coads_climatology - -! Use SET VAR/NAME= to give a variable from the file a new name. -SET VAR/NAME=my_sst sst -SHOW DATA - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - name title I J K L - MY_SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - - -LIST/X=179:183/Y=40/L=3 my_sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (LONGITUDE) - LATITUDE : 39N - TIME : 17-MAR 02:58 - 39N - 65 - 179E / 80: 11.89756 - 179W / 81: 12.11905 - 177W / 82: 12.07976 - -! Now use a LET command to "fix" the data in any way we wish -! Give it the original name, and now it has the new characteristics -! but the old name. - -LET sst = 3*my_sst -LIST/X=179:183/Y=40/L=3 sst - VARIABLE : 3*MY_SST - FILENAME : coads_climatology.cdf - SUBSET : 3 points (LONGITUDE) - LATITUDE : 39N - TIME : 17-MAR 02:58 - 39N - 65 - 179E / 80: 35.69268 - 179W / 81: 36.35714 - 177W / 82: 36.23927 - - -!GO bn_reset -! This routine executes a ppl error which exits us from Ferret -! when run in the benchmark suite. Should test this, but dont do it -! here, for now. -!GO bn_ppl_errors.jnl - -GO bn_reset bn_memory_symbol -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_memory_symbol -GO bn_memory_symbol -! bn_memory_symbol.jnl -! Ferret v6.06 15-Aug-07 -! Symbol FERRET_MEMORY shows current size of Ferret memory in MWords -! V751:*acm* 6/2019 - memory set and shown in bytes - -sh sym ferret_memory, ferret_bytes_mem -FERRET_MEMORY = "31.25" -FERRET_BYTES_MEM = "250Mb" - -set mem/siz=90 -sh sym ferret_memory, ferret_bytes_mem -FERRET_MEMORY = "90" -FERRET_BYTES_MEM = "720Mb" -show memory - SET MEMORY/SIZE: 720 Mb (90 megawords) - Peak demand: 0 Kb - Current cache: 0 Kb - -set mem/size=0.05 -sh sym ferret_memory, ferret_bytes_mem -FERRET_MEMORY = "0.05" -FERRET_BYTES_MEM = "400Kb" - -set mem/siz=500000 ! too large to allow -sh sym ferret_memory, ferret_bytes_mem -FERRET_MEMORY = "500000" -FERRET_BYTES_MEM = "4000Gb" - -set mem/siz=250M ! return to the default setting -sh sym ferret_memory, ferret_bytes_mem -FERRET_MEMORY = "31.25" -FERRET_BYTES_MEM = "250Mb" - -GO bn_reset bn605_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn605_bug_fixes -GO bn605_bug_fixes -! bn604_bug_fixes.jnl -! test various fixes that went into version 6.05 -! 27-July-2007 ACM - -! Fix for Bug 1524: irregular axis detected as REGULAR -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err604_irreg_axis.jnl -! Bug 1524: irregular axis detected as REGULAR! - -!use climatological_axes -sh ax MONTH_IRREG - name axis # pts start end - MONTH_IRREG TIME 12mi 16-JAN 12:00 15-DEC 17:49 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) -list t[gt=month_irreg], tbox[gt=month_irreg] - TIME: 01-JAN 00:00 to 31-DEC 05:49 - Column 1: T is T (axis MONTH_IRREG) - Column 2: TBOX is TBOX (axis MONTH_IRREG) - T TBOX -16-JAN 12 / 1: 15.5000 31.00000 -15-FEB 02 / 2: 45.1213 28.24250 -15-MAR 17 / 3: 74.7425 31.00000 -15-APR 05 / 4: 105.2425 30.00000 -15-MAY 17 / 5: 135.7425 31.00000 -15-JUN 05 / 6: 166.2425 30.00000 -15-JUL 17 / 7: 196.7425 31.00000 -15-AUG 17 / 8: 227.7425 31.00000 -15-SEP 05 / 9: 258.2425 30.00000 -15-OCT 17 / 10: 288.7425 31.00000 -15-NOV 05 / 11: 319.2425 30.00000 -15-DEC 17 / 12: 349.7425 31.00000 - - -! SHOW FUNCTIONS caused a crash or a message -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err605_show_func.jnl -! err605_show_func.jnl -! Reported by Andrew W. -! SHOW FUNCTIONS caused a crash on his system; I see it only as a message -! in SHOW FUNC/BRIEF - -SHOW FUNCTION/BRIEF -Functions internal to Ferret: -EXP(X) -LOG(X) -MAX(A,B) -MIN(A,B) -INT(X) -ABS(X) -SIN(theta) -COS(theta) -TAN(theta) -LN(X) -MOD(A,B) -MISSING(A,B) -IGNORE0(X) -ATAN(X) -ATAN2(A,B) -ASIN(X) -ACOS(X) -RANDU(A) -RANDN(A) -RHO_UN(salt,temp,p) -THETA_FO(salt,temp,p,ref) -DAYS1900(year,month,day) -RANDU2(A,ISEED) -RANDN2(A,ISEED) -XSEQUENCE(VAR) -ECHO(STR,NUM) -RESHAPE(A,B) -ZAXREPLACE(V,ZVALS,ZAX) -YSEQUENCE(VAR) -ZSEQUENCE(VAR) -TSEQUENCE(VAR) -ESEQUENCE(VAR) -FSEQUENCE(VAR) -SAMPLEI(TO_BE_SAMPLED,X_INDICES) -SAMPLEJ(TO_BE_SAMPLED,Y_INDICES) -SAMPLEK(TO_BE_SAMPLED,Z_INDICES) -SAMPLEL(TO_BE_SAMPLED,T_INDICES) -SAMPLEM(TO_BE_SAMPLED,E_INDICES) -SAMPLEN(TO_BE_SAMPLED,F_INDICES) -SPAWN(STR) -STRCMP(STR1,STR2) -STRLEN(STR) -UPCASE(STR) -STRINDEX(STR1,SUBSTR) -STRRINDEX(STR1,SUBSTR) -DNCASE(STR) -STRCAT(STR1,STR2) -SUBSTRING(STR,OFFSET,LENGTH) -STRFLOAT(STR) -DOT(VAR1,VAR2,IDIM) -TRANSPOSE(VAR,DIM1,DIM2) - -Externally defined functions available to Ferret: -AVE_SCAT2GRID_T(TPTS,VPTS,TAXIS) -BIN_INDEX_WT(INDEX,WT,INDXMAX) -BOX_EDGES(A) -COMPRESSI(DAT) -COMPRESSI_BY(dat,mask) -COMPRESSJ(DAT) -COMPRESSJ_BY(dat,mask) -COMPRESSK(DAT) -COMPRESSK_BY(dat,mask) -COMPRESSL(DAT) -COMPRESSL_BY(dat,mask) -COMPRESSM(DAT) -COMPRESSM_BY(dat,mask) -COMPRESSN(DAT) -COMPRESSN_BY(dat,mask) -CONVOLVEI(COM,WEIGHT) -CONVOLVEJ(COM,WEIGHT) -CONVOLVEK(COM,WEIGHT) -CONVOLVEL(COM,WEIGHT) -CONVOLVEM(COM,WEIGHT) -CONVOLVEN(COM,WEIGHT) -CURV_RANGE(LONGITUDES,LATITUDES,xrange_lo,xrange_hi,yrange_lo,yrange_hi,modulo flag for X coordinates) -CURV_TO_RECT(V,mapping) -CURV_TO_RECT_FSU(V,mapping) -CURV_TO_RECT_MAP(lon_in,lat_in,grid_out,radius) -DATE1900(formatted date) -DAYS1900TOYMDHMS(day1900) -DOT_E(VAR1,VAR2) -DOT_F(VAR1,VAR2) -DOT_T(VAR1,VAR2) -DOT_X(VAR1,VAR2) -DOT_Y(VAR1,VAR2) -DOT_Z(VAR1,VAR2) -DSG_FMASK_STR(obsvar,rowsize,Fvar,subset) -EARTH_DISTANCE(longitude,latitude) -ECAT(A,B) -ECAT_STR(A,B) -ELEMENT_INDEX(VAR,VALUES) -ELEMENT_INDEX_STR(VAR,STRINGS) -ELEMENT_INDEX_STR_N(VAR,STRINGS) -EOF_SPACE(A,frac_timeser) -EOF_STAT(A,frac_timeser) -EOFSVD_SPACE(A) -EOFSVD_STAT(A) -EOFSVD_TFUNC(A) -EOF_TFUNC(A,frac_timeser) -EREVERSE(A) -EXPND_BY_LEN(var,len,nx) -EXPND_BY_LEN_STR(var,len,nx) -EXPNDI_BY(dat,mask,outsize) -EXPNDI_BY_M_COUNTS(Data,Row Sizes,Result X axis) -EXPNDI_BY_M_COUNTS_STR(Data,Row Sizes,Result X axis) -EXPNDI_BY_T(dat,mask,n_profiles,max_profile_len) -EXPNDI_BY_Z(dat,mask,n_profiles,max_profile_len) -EXPNDI_BY_Z_COUNTS(dat,counts,max_profile_len) -EXPNDI_ID_BY_Z_COUNTS(counts,max profile len) -EXPNDI_TO_ET(var data,time data,Rowsize (E direction),Result T) -FCAT(A,B) -FCAT_STR(A,B) -FC_ISUBSET(index_list,lengths,nx,FullData) -FFTA(A) -FFT_IM(A) -FFT_INVERSE(A,B) -FFTP(A) -FFT_RE(A) -FILL_XY(DATA,MASK,N) -FINDHI(A,XRANGE,YRANGE) -FINDLO(A,XRANGE,YRANGE) -FLOATSTR(A,FMT) -FREVERSE(A) -FT_TO_ORTHOGONAL(VAR,TIME2D,ALLTIME) -IS_ELEMENT_OF(VAR,VALUES) -IS_ELEMENT_OF_STR(VAR,VALUES) -IS_ELEMENT_OF_STR_N(VAR,VALUES) -LABWID(STR,HT) -LANCZOS(A,F1,F2,N) -LIST_VALUE_XML(tag,value,cdata_flag,outputfile) -LON_LAT_TIME_STRING(longitude,latitude,time,time_axis,string to prepend) -LSL_LOWPASS(A,cutoff_period,filter_span) -MINMAX(A) -MINUTES24(formatted time) -NCO(operator,arguments) -NCO_ATTR(FileName,VariableName,AttributeName,AttType,Mode,AttributeValue) -PIECEWISE3(V1,V2,V3,Control parameter,Tol1,Tol2,Tol3) -PT_IN_POLY(A,XVERT,YVERT) -RECT_TO_CURV(V,lon_bounds_out,lat_bounds_out,missing_allowed) -SAMPLE_FAST_I(V,Indices) -SAMPLE_FAST_I_STR(S,Indices) -SAMPLEF_DATE(DAT_TO_SAMPLE,YR,MO,DAY,HR,MIN,SEC) -SAMPLEIJ(DAT_TO_SAMPLE,XPTS,YPTS) -SAMPLEI_MULTI(DAT_TO_SAMPLE,I_INDICES) -SAMPLEJ_MULTI(DAT_TO_SAMPLE,J_INDICES) -SAMPLEK_MULTI(DAT_TO_SAMPLE,K_INDICES) -SAMPLEL_MULTI(DAT_TO_SAMPLE,L_INDICES) -SAMPLEM_MULTI(DAT_TO_SAMPLE,M_INDICES) -SAMPLEN_MULTI(DAT_TO_SAMPLE,N_INDICES) -SAMPLET_DATE(DAT_TO_SAMPLE,YR,MO,DAY,HR,MIN,SEC) -SAMPLEXY(DAT_TO_SAMPLE,XPTS,YPTS) -SAMPLEXY_CLOSEST(DAT_TO_SAMPLE,XPTS,YPTS) -SAMPLEXY_CURV(DAT_TO_SAMPLE,DAT_LON,DAT_LAT,XPTS,YPTS) -SAMPLEXY_CURV_AVG(DAT_TO_SAMPLE,DAT_LON,DAT_LAT,XPTS,YPTS) -SAMPLEXY_CURV_NRST(DAT_TO_SAMPLE,DAT_LON,DAT_LAT,XPTS,YPTS) -SAMPLEXY_NRST(DAT_TO_SAMPLE,XPTS,YPTS) -SAMPLEXYT_NRST(DAT_TO_SAMPLE,XPTS,YPTS,TPTS) -SAMPLEXYT(DAT_TO_SAMPLE,XPTS,YPTS,TPTS) -SAMPLEXYZ(DAT_TO_SAMPLE,XPTS,YPTS,ZPTS) -SAMPLEXYZT(DAT_TO_SAMPLE,XPTS,YPTS,ZPTS,TPTS) -SAMPLEXZ(DAT_TO_SAMPLE,XPTS,ZPTS) -SAMPLEYZ(DAT_TO_SAMPLE,YPTS,ZPTS) -SCAT2DDUPS(coord 1,coord 2,epsilon 1,epsilon 2) -SCAT2GRID_BIN_XY(XPTS,YPTS,F,XAXPTS,YAXPTS) -SCAT2GRID_BIN_XYT(XPTS,YPTS,TPTS,F,XAXPTS,YAXPTS,TAXPTS) -SCAT2GRID_BIN_XYZ(XPTS,YPTS,ZPTS,F,XAXPTS,YAXPTS,ZAXPTS) -SCAT2GRID_BIN_XYZT(XPTS,YPTS,ZPTS,TPTS,F,XAXPTS,YAXPTS,ZAXPTS,TAXPTS) -SCAT2GRID_MINMAX_XYT(XPTS,YPTS,TPTS,F,XAXPTS,YAXPTS,TAXPTS) -SCAT2GRID_STD_XYT(XPTS,YPTS,TPTS,F,XAXPTS,YAXPTS,TAXPTS) -SCAT2GRIDGAUSS_XT(XPTS,TPTS,F,XAXPTS,TAXPTS,XSCALE,TSCALE,CUTOFF,0) -SCAT2GRIDGAUSS_XY(XPTS,YPTS,F,XAXPTS,YAXPTS,XSCALE,YSCALE,CUTOFF,0) -SCAT2GRIDGAUSS_XZ(XPTS,ZPTS,F,XAXPTS,ZAXPTS,XSCALE,ZSCALE,CUTOFF,0) -SCAT2GRIDGAUSS_YT(YPTS,TPTS,F,YAXPTS,TAXPTS,YSCALE,TSCALE,CUTOFF,0) -SCAT2GRIDGAUSS_YZ(YPTS,ZPTS,F,YAXPTS,ZAXPTS,YSCALE,ZSCALE,CUTOFF,0) -SCAT2GRIDGAUSS_ZT(ZPTS,TPTS,F,ZAXPTS,TAXPTS,ZSCALE,TSCALE,CUTOFF,0) -SCAT2GRIDLAPLACE_XT(XPTS,TPTS,F,XAXPTS,TAXPTS,KAY,NRNG) -SCAT2GRIDLAPLACE_XY(XPTS,YPTS,F,XAXPTS,YAXPTS,KAY,NRNG) -SCAT2GRIDLAPLACE_XZ(XPTS,ZPTS,F,XAXPTS,ZAXPTS,KAY,NRNG) -SCAT2GRIDLAPLACE_YT(YPTS,TPTS,F,YAXPTS,TAXPTS,KAY,NRNG) -SCAT2GRIDLAPLACE_YZ(YPTS,ZPTS,F,YAXPTS,ZAXPTS,KAY,NRNG) -SCAT2GRIDLAPLACE_ZT(ZPTS,TPTS,F,ZAXPTS,TAXPTS,KAY,NRNG) -SCAT2GRID_NBIN_XY(XPTS,YPTS,F,XAXPTS,YAXPTS) -SCAT2GRID_NBIN_XYT(XPTS,YPTS,TPTS,F,XAXPTS,YAXPTS,TAXPTS) -SCAT2GRID_NOBS_XY(XPTS,YPTS,XAXPTS,YAXPTS) -SCAT2GRID_NOBS_XYT(XPTS,YPTS,TPTS,XAXPTS,YAXPTS,TAXPTS) -SCAT2GRID_T(TPTS,TAXIS) -SEPARATE(A,Rowsize,FixLongitudes) -SEPARATE_STR(A,Rowsize,FixLongitudes) -SORTI(DAT) -SORTI_STR(STR) -SORTJ(DAT) -SORTJ_STR(STR) -SORTK(DAT) -SORTK_STR(STR) -SORTL(DAT) -SORTL_STR(STR) -SORTM(DAT) -SORTM_STR(STR) -SORTN(DAT) -SORTN_STR(STR) -STR_MASK(STRING,MASK) -STR_NOBLANKS(STR) -STR_REPLACE(INSTRING,S1,S2) -TAUTO_COR(A) -TAX_DATESTRING(A,B,C) -TAX_DAY(A,B) -TAX_DAYFRAC(A,B) -TAX_JDAY(A,B) -TAX_JDAY1900(A,B) -TAX_MONTH(A,B) -TAX_TIMES(A) -TAX_TSTEP(A,B) -TAX_UNITS(A) -TAX_YEAR(A,B) -TAX_YEARFRAC(A,B) -TCAT(A,B) -TCAT_STR(A,B) -TEST_OPENDAP(url) -TIME_REFORMAT(A) -TRACKS2GRID_MASK_AVE_XYT(VAR,XPTS,YPTS,TPTS,ICRUISE,XAXPTS,YAXPTS,TAXPTS,MASK) -TRACKS2GRID_STD_XYT(VARIABLE,XPTS,YPTS,TPTS,ICRUISE,XAXPTS,YAXPTS,TAXPTS) -TRANSPOSE_EF(VAR) -TRANSPOSE_TE(VAR) -TRANSPOSE_TF(VAR) -TRANSPOSE_XE(VAR) -TRANSPOSE_XF(VAR) -TRANSPOSE_XT(VAR) -TRANSPOSE_XY(VAR) -TRANSPOSE_XZ(VAR) -TRANSPOSE_YE(VAR) -TRANSPOSE_YF(VAR) -TRANSPOSE_YT(VAR) -TRANSPOSE_YZ(VAR) -TRANSPOSE_ZE(VAR) -TRANSPOSE_ZF(VAR) -TRANSPOSE_ZT(VAR) -TREVERSE(A) -UNIQUE_STR2INT(A) -WRITE_WEBROW(id,name,Cruise_Mask,filename) -WRITE_WEBROW_GWT(id,name,Cruise_Mask,filename) -XAUTO_COR(A) -XCAT(A,B) -XCAT_STR(A,B) -XREVERSE(A) -YCAT(A,B) -YCAT_STR(A,B) -YREVERSE(A) -ZAXREPLACE_AVG(V,ZVALS,ZAX) -ZAXREPLACE_BIN(V,ZVALS,ZAX) -ZAXREPLACE_REV(ZVALS,V,ZAX) -ZAXREPLACE_ZLEV(V,THICKNESS,ZAX) -ZCAT(A,B) -ZCAT_STR(A,B) -ZREVERSE(A) -ADD_9(A,B,C,D,E,F,G,H,I) -APPENDE(ENS,VAR) -AVET(A) -DATES(Offsets) -EARTH_DISTANCE(longitude,latitude) -FACTORIAL(A) -FFT_AMP(A) -FFTA_SAMPLE(A) -FFT_PHAS(A) -LENGTH_OF_STRINGS(A) -MAXSTRLEN(A) -PASS_THRU(A) -PASS_THRU_STRING(A) -PERCENT_GOOD_T(A) -PICK_A_STRING(A,N) -PIECEWISE3(V1,V2,V3,Control parameter,Tol1,Tol2,Tol3) -SAMPLE_FAST_I(V,Indices) -SEPARATE(A,Rowsize,FixLongitudes) -SEPARATE_STR(A,Rowsize,FixLongitudes) -STORAGE(A) -STRING_ARG(Flags,NString) -STRING_CAT3(A,B,C) -STRING_LEN_SUM(S1,S2) -STRINGS_AS_ARGS(S1,S2,NCHAR) -STR_MISSING(MASK,STR,REPL) -STUDENT_T_CUTOFF(P,nf) -SUBTRACT(A,B) -STATS_HISTOGRAM(VALS,BINS_TEMPLATE) -STATS_BETA_CDF(PTS,ALPHA,BETA) -STATS_BETA_ISF(PTS,ALPHA,BETA) -STATS_BETA_PDF(PTS,ALPHA,BETA) -STATS_BETA_PPF(PTS,ALPHA,BETA) -STATS_BETA_RVS(PTS,ALPHA,BETA) -STATS_BETA_SF(PTS,ALPHA,BETA) -STATS_BINOM_CDF(PTS,N,P) -STATS_BINOM_ISF(PTS,N,P) -STATS_BINOM_PMF(PTS,N,P) -STATS_BINOM_PPF(PTS,N,P) -STATS_BINOM_RVS(PTS,N,P) -STATS_BINOM_SF(PTS,N,P) -STATS_CAUCHY_CDF(PTS,M,GAMMA) -STATS_CAUCHY_ISF(PTS,M,GAMMA) -STATS_CAUCHY_PDF(PTS,M,GAMMA) -STATS_CAUCHY_PPF(PTS,M,GAMMA) -STATS_CAUCHY_RVS(PTS,M,GAMMA) -STATS_CAUCHY_SF(PTS,M,GAMMA) -STATS_CHI_CDF(PTS,DF) -STATS_CHI_ISF(PTS,DF) -STATS_CHI_PDF(PTS,DF) -STATS_CHI_PPF(PTS,DF) -STATS_CHI_RVS(PTS,DF) -STATS_CHI_SF(PTS,DF) -STATS_CHI2_CDF(PTS,DF) -STATS_CHI2_ISF(PTS,DF) -STATS_CHI2_PDF(PTS,DF) -STATS_CHI2_PPF(PTS,DF) -STATS_CHI2_RVS(PTS,DF) -STATS_CHI2_SF(PTS,DF) -STATS_EXPON_CDF(PTS,LAMBDA) -STATS_EXPON_ISF(PTS,LAMBDA) -STATS_EXPON_PDF(PTS,LAMBDA) -STATS_EXPON_PPF(PTS,LAMBDA) -STATS_EXPON_RVS(PTS,LAMBDA) -STATS_EXPON_SF(PTS,LAMBDA) -STATS_EXPONWEIB_CDF(PTS,K,LAMBDA,ALPHA) -STATS_EXPONWEIB_ISF(PTS,K,LAMBDA,ALPHA) -STATS_EXPONWEIB_PDF(PTS,K,LAMBDA,ALPHA) -STATS_EXPONWEIB_PPF(PTS,K,LAMBDA,ALPHA) -STATS_EXPONWEIB_RVS(PTS,K,LAMBDA,ALPHA) -STATS_EXPONWEIB_SF(PTS,K,LAMBDA,ALPHA) -STATS_F_CDF(PTS,DFN,DFD) -STATS_F_ISF(PTS,DFN,DFD) -STATS_F_PDF(PTS,DFN,DFD) -STATS_F_PPF(PTS,DFN,DFD) -STATS_F_RVS(PTS,DFN,DFD) -STATS_F_SF(PTS,DFN,DFD) -STATS_GAMMA_CDF(PTS,ALPHA,THETA) -STATS_GAMMA_ISF(PTS,ALPHA,THETA) -STATS_GAMMA_PDF(PTS,ALPHA,THETA) -STATS_GAMMA_PPF(PTS,ALPHA,THETA) -STATS_GAMMA_RVS(PTS,ALPHA,THETA) -STATS_GAMMA_SF(PTS,ALPHA,THETA) -STATS_GEOM_CDF(PTS,P) -STATS_GEOM_ISF(PTS,P) -STATS_GEOM_PMF(PTS,P) -STATS_GEOM_PPF(PTS,P) -STATS_GEOM_RVS(PTS,P) -STATS_GEOM_SF(PTS,P) -STATS_HYPERGEOM_CDF(PTS,NTOTAL,NGOOD,NDRAWN) -STATS_HYPERGEOM_ISF(PTS,NTOTAL,NGOOD,NDRAWN) -STATS_HYPERGEOM_PMF(PTS,NTOTAL,NGOOD,NDRAWN) -STATS_HYPERGEOM_PPF(PTS,NTOTAL,NGOOD,NDRAWN) -STATS_HYPERGEOM_RVS(PTS,NTOTAL,NGOOD,NDRAWN) -STATS_HYPERGEOM_SF(PTS,NTOTAL,NGOOD,NDRAWN) -STATS_INVGAMMA_CDF(PTS,ALPHA,BETA) -STATS_INVGAMMA_ISF(PTS,ALPHA,BETA) -STATS_INVGAMMA_PDF(PTS,ALPHA,BETA) -STATS_INVGAMMA_PPF(PTS,ALPHA,BETA) -STATS_INVGAMMA_RVS(PTS,ALPHA,BETA) -STATS_INVGAMMA_SF(PTS,ALPHA,BETA) -STATS_LAPLACE_CDF(PTS,MU,B) -STATS_LAPLACE_ISF(PTS,MU,B) -STATS_LAPLACE_PDF(PTS,MU,B) -STATS_LAPLACE_PPF(PTS,MU,B) -STATS_LAPLACE_RVS(PTS,MU,B) -STATS_LAPLACE_SF(PTS,MU,B) -STATS_LOGNORM_CDF(PTS,MU,SIGMA) -STATS_LOGNORM_ISF(PTS,MU,SIGMA) -STATS_LOGNORM_PDF(PTS,MU,SIGMA) -STATS_LOGNORM_PPF(PTS,MU,SIGMA) -STATS_LOGNORM_RVS(PTS,MU,SIGMA) -STATS_LOGNORM_SF(PTS,MU,SIGMA) -STATS_NBINOM_CDF(PTS,N,P) -STATS_NBINOM_ISF(PTS,N,P) -STATS_NBINOM_PMF(PTS,N,P) -STATS_NBINOM_PPF(PTS,N,P) -STATS_NBINOM_RVS(PTS,N,P) -STATS_NBINOM_SF(PTS,N,P) -STATS_NORM_CDF(PTS,MU,SIGMA) -STATS_NORM_ISF(PTS,MU,SIGMA) -STATS_NORM_PDF(PTS,MU,SIGMA) -STATS_NORM_PPF(PTS,MU,SIGMA) -STATS_NORM_RVS(PTS,MU,SIGMA) -STATS_NORM_SF(PTS,MU,SIGMA) -STATS_PARETO_CDF(PTS,XM,ALPHA) -STATS_PARETO_ISF(PTS,XM,ALPHA) -STATS_PARETO_PDF(PTS,XM,ALPHA) -STATS_PARETO_PPF(PTS,XM,ALPHA) -STATS_PARETO_RVS(PTS,XM,ALPHA) -STATS_PARETO_SF(PTS,XM,ALPHA) -STATS_POISSON_CDF(PTS,MU) -STATS_POISSON_ISF(PTS,MU) -STATS_POISSON_PMF(PTS,MU) -STATS_POISSON_PPF(PTS,MU) -STATS_POISSON_RVS(PTS,MU) -STATS_POISSON_SF(PTS,MU) -STATS_RANDINT_CDF(PTS,MIN,MAX) -STATS_RANDINT_ISF(PTS,MIN,MAX) -STATS_RANDINT_PMF(PTS,MIN,MAX) -STATS_RANDINT_PPF(PTS,MIN,MAX) -STATS_RANDINT_RVS(PTS,MIN,MAX) -STATS_RANDINT_SF(PTS,MIN,MAX) -STATS_T_CDF(PTS,DF) -STATS_T_ISF(PTS,DF) -STATS_T_PDF(PTS,DF) -STATS_T_PPF(PTS,DF) -STATS_T_RVS(PTS,DF) -STATS_T_SF(PTS,DF) -STATS_UNIFORM_CDF(PTS,MIN,MAX) -STATS_UNIFORM_ISF(PTS,MIN,MAX) -STATS_UNIFORM_PDF(PTS,MIN,MAX) -STATS_UNIFORM_PPF(PTS,MIN,MAX) -STATS_UNIFORM_RVS(PTS,MIN,MAX) -STATS_UNIFORM_SF(PTS,MIN,MAX) -STATS_WEIBULL_CDF(PTS,K,LAMBDA) -STATS_WEIBULL_ISF(PTS,K,LAMBDA) -STATS_WEIBULL_PDF(PTS,K,LAMBDA) -STATS_WEIBULL_PPF(PTS,K,LAMBDA) -STATS_WEIBULL_RVS(PTS,K,LAMBDA) -STATS_WEIBULL_SF(PTS,K,LAMBDA) -STATS_CDF(PTS,PDNAME,PDPARAMS) -STATS_ISF(PROBS,PDNAME,PDPARAMS) -STATS_PDF(PTS,PDNAME,PDPARAMS) -STATS_PMF(PTS,PDNAME,PDPARAMS) -STATS_PPF(PROBS,PDNAME,PDPARAMS) -STATS_RVS(TEMPLATE,PDNAME,PDPARAMS) -STATS_SF(PTS,PDNAME,PDPARAMS) -STATS_CHISQUARE(SAMPLE_CNTS,EXPECT_CNTS,DELTA_DEGFREE) -STATS_FIT(VALS,PDNAME,PDPARAMS) -STATS_KSTEST1(SAMPLE,PDNAME,PDPARAMS) -STATS_KSTEST2(SAMPLEA,SAMPLEB) -STATS_LINREGRESS(XVALS,YVALS) -STATS_PEARSONR(SAMPLEA,SAMPLEB) -STATS_PERCENTILESOFSCORES(SAMPLE,SCORES) -STATS_PROBPLOTVALS(SAMPLE,PDNAME,PDPARAMS) -STATS_STATS(VALUES) -STATS_SCORESATPERCENTILES(SAMPLE,PERCENTILES) -STATS_SPEARMANR(SAMPLEA,SAMPLEB) -STATS_TTEST1(SAMPLE,POPMEANS) -STATS_TTEST2IND(SAMPLEA,SAMPLEB) -STATS_TTEST2REL(SAMPLEA,SAMPLEB) -STATS_ZSCORE(VALUES) -STATS_HELPER(PDNAME) -SHAPEFILE_READXY(SHAPEFILE,MAXPTS) -SHAPEFILE_READXYVAL(SHAPEFILE,VALNAME,MAXPTS) -SHAPEFILE_READXYZ(SHAPEFILE,MAXPTS) -SHAPEFILE_READXYZVAL(SHAPEFILE,VALNAME,MAXPTS) -SHAPEFILE_WRITEVAL(SHAPEFILE,VALUE,VALNAME,MAPPRJ) -SHAPEFILE_WRITEXYVAL(SHAPEFILE,GRIDX,GRIDY,VALUE,VALNAME,MAPPRJ) -SHAPEFILE_WRITEXYZVAL(SHAPEFILE,GRIDX,GRIDY,GRIDZ,VALUE,VALNAME,MAPPRJ) -CURV2RECT(CurvData,CurvCenterLons,CurvCenterLats,CurvCornerLons,CurvCornerLats,TemplateRectVar,Method) -CURV3SRECT(CurvData,CurvLons,CurvLats,CurvBaths,CurvZetas,TemplateRectVar,Method) - - -GO bn_reset bn608_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn608_bug_fixes -GO bn608_bug_fixes -! bn608_bug_fixes -! test various fixes that went into version 6.08 -! 24-Sep ACM - -! Fix for Bug 1539: SHOW VAR/XML -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err607_show_var_xml -! Bug 1539 SHOW VAR/XML didnt show all vars. - - - -! make some short files -let/units="meters" temp = z[z=1:100:5] -save/clobber/file=a.nc temp - -LET sst = x[x=1:15] + y[y=1:5] + t[gt=month_irreg] -save/clobber/file=b.nc sst -can var/all - -use a -use b - -let temp_1_regrid=temp[d=1,z=5.00:75.00@ave] -let sst_2_regrid=sst[d=2,t="15-Feb":"15-Mar"@ave] -let sst_final=sst_2_regrid[d=2,gxy=temp_1_regrid[d=1]] - -! This shows all 3 vars -show var - Created by DEFINE VARIABLE: - >>> Definitions that replace any file variable of same name: - SST_FINAL = SST_2_REGRID[D=2,GXY=TEMP_1_REGRID[D=1]] - SST_2_REGRID = SST[D=2,T="15-Feb":"15-Mar"@AVE] - TEMP_1_REGRID = TEMP[D=1,Z=5.00:75.00@AVE] - -! But this showed only sst_final and sst_2_regrid (twice) -show var/xml - - - - - - - -1.E+34 - - - - - - -XAX1_15 -YAX1_5 - - - - - - - - - -1.E+34 - - - - - - -XAX1_15 -YAX1_5 - - - - - - - - - -1.E+34 - - - - - - -TIME24 - - - - - -! err607_set_new_history_att -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err607_set_new_history_att -! err607_set_new_history_att.jnl -! Previously if we set a history attribute on a user-defined variable that -! was based on a dataset variable, the default history attribute, From dataset -! was always written. Now if we define our own, that is what is written. - -use coads_climatology.cdf -let var = sst -def att/output var.history = "from Sea Surface Temperature, coads_climatology.cdf" -save/file=a.nc/clobber/x=180:200/y=1 var - -can data/all -use a.nc -show data - currently SET data sets: - 1> ./a.nc (default) - name title I J K L - VAR SST 1:10 1:1 ... 1:3 - -show att/all var - attributes for user-defined variables - var.long_name = SST - var.missing_value = -1.E+34 - var.history = from Sea Surface Temperature, coads_climatology.cdf - -! Symbols YAXIS_MIN, YAXIS_MAX were 0 when values small -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err607_axis_minmax_syms -! Bug 1542 -! Symbols YAXIS_MIN, YAXIS_MAX were 0 when values small -! Should use scientific notation - -use coads_climatology -let plotvar = sst[L=1] -plot/y=35 plotvar/10000; sh sym yax* -YAXIS_REVERSED = "0" -YAXL = "4.737" -YAXIS_MIN = "7.9999998E-04" -YAXIS_MAX = "2.0999999E-03" -YAXNAM = "YAX_LEV94" -plot/y=35 plotvar/10000000; sh sym yax* -YAXIS_REVERSED = "0" -YAXL = "4.737" -YAXIS_MIN = "8.0000001E-07" -YAXIS_MAX = "2.1000001E-06" -YAXNAM = "YAX_LEV94" -plot/y=35 plotvar*10000000; sh sym yax* -YAXIS_REVERSED = "0" -YAXL = "4.737" -YAXIS_MIN = "8.0000000E+07" -YAXIS_MAX = "2.1000000E+08" -YAXNAM = "YAX_LEV94" - -def axis/x=0.000004:0.000005/npoints=100 xax -def axis/y=0.000001:0.000002/npoints=100 yax -let a = x[gx=xax] + y[gy=yax] -shade a; sh sym xax*; ; sh sym yax* -XAXIS_REVERSED = "0" -XAXIS_MIN = "3.994949495E-06" -XAXL = "4.737" -XAXNAME = "XIRREG_SUBSPAN" -XAXIS_MAX = "5.005050505E-06" -XAXNAM = "(XAX_LEV9421_380)" -YAXIS_REVERSED = "0" -YAXL = "4.737" -YAXIS_MIN = "9.949494949E-07" -YAXIS_MAX = "2.005050505E-06" -YAXNAM = "YAX_LEV94" - - - -! Error message for too many contour levels requested -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err607_lev_errmsg -! err607_lev_errmsg.F -! Make the error message more detailed, saying it is the choice of -! number of contours that caused the error. - -SET MODE ignore -SHADE/LEV=300/I=1:100/J=1:100 i+j - -SET MODE/LAST ignore - -! ******** V6.1 Additions below *********** - -GO bn_reset bn_shade_trim -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_shade_trim -GO bn_shade_trim -! bn_shade_trim.jnl -! Test new qualifier SHADE/TRIM which trims the region of -! shade plot as is done by FILL. For LAS scripts which do -! shade underlay for FILL plots. - -USE ocean_atlas_temp - -! See the region used by FILL -SET VIEW upper -FILL temp[L=2,X=180:200,Y=30:44] -SHOW SYM xaxis_min, xaxis_max, yaxis_min, yaxis_max -XAXIS_MIN = "180.500000" -XAXIS_MAX = "199.500000" -YAXIS_MIN = "30.5000000" -YAXIS_MAX = "43.5000000" - -! See the larger region used by default for SHADE -SHADE temp[L=2,X=180:200,y=30:44] -SHOW SYM xaxis_min, xaxis_max, yaxis_min, yaxis_max -XAXIS_MIN = "180.000000" -XAXIS_MAX = "200.000000" -YAXIS_MIN = "30.0000000" -YAXIS_MAX = "44.0000000" - -! SHADE/TRIM trims the region as for a FILL plot -SET VIEW lower -SHADE/TRIM temp[L=2,X=180:200,y=30:44] -SHOW SYM xaxis_min, xaxis_max, yaxis_min, yaxis_max -XAXIS_MIN = "180.500000" -XAXIS_MAX = "199.500000" -YAXIS_MIN = "30.5000000" -YAXIS_MAX = "43.5000000" - - -GO bn_reset bn_mode_nlevels -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_mode_nlevels -GO bn_mode_nlevels -! bn_mode_nlevels.jnl -! 3-mar-2008 -! v6.1 MODE NLEVELS (default is 40) - -show mode nlevels - MODE STATE ARGUMENT - NLEVELS SET 30 -use levitus_climatology - -shade temp -show sym lev* -LEV_TEXT = "300" -LEV_MIN = "-2" -LEV_MAX = "30" -LEV_NUM = "32" -LEV_DEL = "1" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "-2,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30" - -! Old default value was 10 -set mode nlevels 10 -shade temp -show sym lev* -LEV_TEXT = "300" -LEV_MIN = "-2" -LEV_MAX = "30" -LEV_NUM = "16" -LEV_DEL = "2" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "-2,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30" - -! set even higher -set mode nlevels 80 -shade temp -show sym lev* -LEV_ALL = "-2,-1.5,-1,-0.5,0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10,10.5,11,11.5,12,12.5,13,13.5,14,14.5,15,15.5,16,16.5,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,22.5,23,23.5,24,24.5,25,25.5,26,26.5,27,27.5,28,28.5,29,29.5,30" -LEV_TEXT = "300" -LEV_MIN = "-2" -LEV_MAX = "30" -LEV_NUM = "64" -LEV_DEL = "0.5" -LEV_CENTERED_LABELS = "off" - -! restore (new) default -set mode nlevels 40 - - -GO bn_reset bn61_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn61_bug_fixes -GO bn61_bug_fixes -! bn608_bug_fixes -! test various fixes that went into version 6.1 -! 2-Jan-2008 ACM - -! Fix for Bug 1556: -! Error processing parentheses on abstract axis names. -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err608_bug1556 -! err608_bug1556.jnl -! Error processing parentheses on abstract axis names. -! -! The file was created with these commands, which MUST BE -! in a separate Ferret session to see the bug. -! -! use coads_climatology -! set axis/stride=20 `sst,return=xaxis` -! set axis/stride=10 `sst,return=yaxis` -! save/file=err608_bug1556.nc/clobber sst[L=1:2] - -USE err608_bug1556.nc -SAVE/FILE=a.nc/CLOBBER sst[i=1:5:1,j=1:5:1,l=1:1:1] - -! The error was, -! LISTing to file out.nc -! **TMAP ERR: error in line definition -! file coords dont match variable coords on axis AX0 -! -! The bug was fixed in cd_axis_outname.F - - -! Fix for Bug 1538: -! Precision of immediate-mode output of negative values -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err608_precision_neg_numbers -! err608_precision_neg_numbers.jnl -! ACM 1/2/2008 -! Bug 1538, precision of immediate-mode output of negative values -! Fixed in tm_fmt.F - -! The output from a LIST command is correct: -LIST/PREC=10 1.23456789e-15 - VARIABLE : constant - 1.234567890E-15 - -! In immediate mode, output is incorrect, not enough precision: -SAY `1.23456789e-15` - !-> MESSAGE/CONTINUE 1.23456789E-15 -1.23456789E-15 -SAY `1.23456789e-15,prec=10` - !-> MESSAGE/CONTINUE 1.23456789E-15 -1.23456789E-15 - -! ******** V6.11 Additions below *********** - -GO bn_reset bn_test_opendap -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_test_opendap -GO bn_test_opendap -! Test the test_opendap function: returns 0 if successful, or error code if not. -SET MODE IGNORE - -!! Change to another server, this one not working 3/2012 -!!list test_opendap ("http://iridl.ldeo.columbia.edu/SOURCES/.LEVITUS/.MONTHLY/.temp/dods") -!!list test_opendap ("http://iridl.ldeo.NOT.columbia.edu/SOURCES/.LEVITUS/.MONTHLY/.temp/dods") - -!! Change to another server, this one not working 8/2012 -list test_opendap ("http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/WOA05nc/monthly/s0112an1.nc") - VARIABLE : TEST_OPENDAP ("http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/WOA05nc/monthly/s0112an1.nc") - X : 1 - 0.0000000 -list test_opendap ("http://ferret.pmel.NOT.noaa.gov/thredds/dodsC/data/PMEL/WOA05nc/monthly/s0112an1.nc") - VARIABLE : TEST_OPENDAP ("http://ferret.pmel.NOT.noaa.gov/thredds/dodsC/data/PMEL/WOA05nc/monthly/s0112an1.nc") - X : 1 - -68.00000 - - -CANCEL MODE IGNORE - -GO bn_reset bn611_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn611_bug_fixes -GO bn611_bug_fixes -! bn611_bug_fixes.jnl -! Fixes that go into v6.11 release - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err61_write_bounds -! err61_write_bounds.jnl -! test fixes for bugzilla 1534: write correct bounds -! when bounds were read in from a netCDF file. - -def ax/x/edges xax={1,2,4,8,9} -let a = x[gx=xax] -save/clobber/file=a.nc a -sp ncdump a.nc >> all_ncdump.out - -! This is the original bug report -! The bounds attribute was written but the values were bad, -! shown as _, _ in the netcdf output. -can var a -use a.nc -save/clobber/file=b.nc a -sp ncdump a.nc >> all_ncdump.out - -! It would also be useful to be able to tell Ferret -! not to save the bounds at all. - -can data/all -use a.nc -can att/output (xax).bounds -save/clobber/file=b.nc a -sp ncdump a.nc >> all_ncdump.out - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err61_poly_shade_over_noaxes -! err61_poly_shade_over_noaxes.jnl -! See bug 1571 - -! plot/ax=0,0,0,0 ; poly/over ! redraws the box - -set v ul; plot/ax=0,0,0,0 {0,1}; poly/ov {0,1},{0,1} -set v ur; plot/set/ax=0,0,0,0 {0,1}; ppl plot; poly/ov {0,1},{0,1} -set v ll; plot/ax=0,0,0,0 {0,1}; plot/ov {0,1} -set v lr; plot/set/ax=0,0,0,0 {0,1}; ppl plot; plot/ov {0,1} -can view - -! shade over polygon -set view upper; polygon/thick/color=red/palette=blue/axes=0,0,0,0 {1,2,1}, {2,1,0.5} -! KMS - changed for PyFerret - patterns not supported, so try translucent -! shade/over/i=1:2/j=0:2/patt i+j -shade/over/i=1:2/j=0:2/opac=25 i+j - -set view lower; polygon/thick/color=red/palette=blue/axes=1,1,1,0 {1,2,1}, {2,1,0.5} -! KMS - changed for PyFerret - patterns not supported, so try translucent -! fill/over/i=1:2/j=0:2/patt i+j -fill/over/i=1:2/j=0:2/opac=25 i+j - -can view - -! Polygon over shade -set view ul -use err542_poly_over_calendar.nc -shade/ax=0,1,1,0 pc -poly/over/fill/pal=red/line/color=black/title="polygon" {220,240,280,250},{-20,70,40,-30} - -! Polygon over fill -set view ur -use gt4d011 -let v1={221,225,232,235} -let v2={20,80,50,30} -let v3={10,-3,16,3} -fill/ax=1,0,0,1 temp[j=@ave,l=1] -go polymark poly/lev=(-5,30,1)/pal=brown/fill/line=1/nolab/over v1 v2 v3 circle 2 - - -set view ll -plot/ax=0,0,1,1/vl=4:-4/hl=4:-4/vs/line/title="there should be just one triangle" {1,2,3,1},{0,2,1,0} -poly/ov/col=2/pal=yellow {1,2,3,1},{0,2,1,0} - -set view lr -vector/ax=0,1,1,0/k=1/l=1 u,v -let v1={221,225,232,235} -let v2={-3,2,0.5,2} -let v3={10,-3,16,3} -go polymark poly/lev=(-5,30,1)/fill/line=1/nolab/over v1 v2 v3 circle 2 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err61_context_scalar_strings -! err61_context_scalar_strings.jnl -! Bug 1558, first present in Ferret v6.02 -! After SET GRID EZ error was about var not being a scalar. - -say `"a" EQ "a"` - !-> MESSAGE/CONTINUE 1 -1 -set grid ez -say `"a" EQ "a"` - !-> MESSAGE/CONTINUE 1 -1 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err61_exit_script -! Bug 1566 Andrew Wittenberb -! -! I discovered this when testing for an error condition, for which I wanted to -! exit the current script with EXIT/SCRIPT. It seems that EXIT doesn't always pop -! the IF..ENDIF stack, resulting in a nesting error upon repeated invocations of -! the script. -! -! Note also how the REPEAT at first works, then fails, then works, then fails, in -! an alternating pattern. - -! NOAA/PMEL TMAP -! FERRET v6.08 -! Linux(g77) 2.4.21-32 - 11/13/07 -! 7-Mar-08 18:32 - -sp rm -f b1566.jnl -sp echo if 1 then > b1566.jnl -sp echo if 1 then >> b1566.jnl -sp echo exit/script >> b1566.jnl -sp echo endif >> b1566.jnl -sp echo endif >> b1566.jnl -rep/l=1:7 go b1566.jnl -!-> REPEAT: L=1 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=2 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=3 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=4 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=5 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=6 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=7 -if 1 then -if 1 then -exit/script -rep/l=1:7 go b1566.jnl -!-> REPEAT: L=1 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=2 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=3 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=4 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=5 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=6 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=7 -if 1 then -if 1 then -exit/script - -!! IFs nested too deep - -rep/l=1:7 go b1566.jnl -!-> REPEAT: L=1 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=2 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=3 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=4 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=5 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=6 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=7 -if 1 then -if 1 then -exit/script -rep/l=1:7 go b1566.jnl -!-> REPEAT: L=1 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=2 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=3 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=4 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=5 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=6 -if 1 then -if 1 then -exit/script -!-> REPEAT: L=7 -if 1 then -if 1 then -exit/script - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err61_new_attr_on_axis -! err61_new_attr_on_axis.jnl -! For any var or axis, allow adding an attribute -! Fix for bug 1574 - -use ocean_atlas_temp -sh dat - currently SET data sets: - 1> ./data/ocean_atlas_temp.cdf (default) - name title I J K L - TEMP Temperature 1:360 1:180 1:1 1:2 - -define att/output (`temp,return=xaxis`).long_name = "Here is a long name for the x axis of TEMP" - !-> define att/output (XAX_LEV9421_380).long_name = "Here is a long name for the x axis of TEMP" -save/file=a.nc/clobber/j=50/l=2 temp -sp ncdump -h a.nc >> all_ncdump.out - -! It is saved even on a subset of the axis -save/file=a.nc/clobber/i=1:12/j=50/l=2 temp -sp ncdump -h a.nc >> all_ncdump.out - -DEFINE AXIS/y=-60:60:2/units=deg yaxis -LET v = y[gy=yaxis] - -DEFINE att/output (yaxis).standard_name = "latitude" - -save/file=a.nc/clobber v -sp ncdump -h a.nc >> all_ncdump.out - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO bn_varcontext_attributes -! Examples from bn_attributes, where instead of var.att[specifiers] -! we use var[specifiers].att where appropriate. - -!----- - -! SHOW ATTRIBUTE examples - -can data/all -can var/all - -use ocean_atlas_temp -use gt4d011 -use levitus_climatology - -sh att temp[d=1].units - attributes for dataset: ./data/ocean_atlas_temp.cdf - TEMP.units = Deg C - - -! note .[d=1].dimnames does not work -use coads_climatology -use gt4d011 - -let vnames = ..dimnames[d=1] -let lnames = ..dimnames[d=2] -list vnames - VARIABLE : ..DIMNAMES[D=ocean_atlas_temp] - SUBSET : 4 points (X) - 1 / 1:"XAX_LEV9421_380" - 2 / 2:"YAX_LEV94" - 3 / 3:"ZAXLEVIT191_1" - 4 / 4:"TIME4" -list lnames - VARIABLE : ..DIMNAMES[D=gt4d011] - SUBSET : 21 points (X) - 1 / 1:"grid_definition" - 2 / 2:"PSXT" - 3 / 3:"PSYT1" - 4 / 4:"PSYTedges" - 5 / 5:"PSZT1" - 6 / 6:"PSZTedges" - 7 / 7:"TIME110" - 8 / 8:"PSXT91_108" - 9 / 9:"PSYT35_56" - 10 / 10:"PSZT1_10" - 11 / 11:"PSYT35_55" - 12 / 12:"PSXU" - 13 / 13:"PSYU" - 14 / 14:"PSYUedges" - 15 / 15:"PSXU91_108" - 16 / 16:"PSYU35_55" - 17 / 17:"PSZW" - 18 / 18:"PSZWedges" - 19 / 19:"PSYT36_55" - 20 / 20:"PSZW1_10" - 21 / 21:"PSYU35_56" - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - - -!----- -! more on number of attributes - -use levitus_climatology -use ocean_atlas_temp -let nat = temp.nattrs -list nat - VARIABLE : TEMP.NATTRS - FILENAME : ocean_atlas_temp.cdf - X : 1 - 5.000000 - -list (`temp,return=xaxis`)[d=2].nattrs - !-> list (XAX_LEV9421_380)[d=2].nattrs - VARIABLE : (XAX_LEV9421_380)[D=ocean_atlas_temp].NATTRS - FILENAME : ocean_atlas_temp.cdf - X : 1 - 4.000000 - -use gt4d011 -say `temp[d=1].nattrs` - !-> MESSAGE/CONTINUE 5 -5 - -def sym xaxnam "(`temp[d=1],return=xaxis`)" - !-> def sym xaxnam "(XAXLEVITR1_160)" -def sym yaxnam "(`temp[d=1],return=yaxis`)" - !-> def sym yaxnam "(YAXLEVITR1_90)" -list `($xaxnam)[d=1].nattrs` - !-> list 4 - VARIABLE : constant - 4.000000 -say `($yaxnam)[d=1].nattrs` - !-> MESSAGE/CONTINUE 3 -3 - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -!----- -! more on access to attribute names and values as variables - -use coads_climatology -use levitus_climatology -use ocean_atlas_temp -use gt4d011 - -let a = temp.units -list/d=3 a - VARIABLE : TEMP.UNITS - FILENAME : ocean_atlas_temp.cdf - X : 1 - "Deg C" -list temp[d=3].units - VARIABLE : TEMP[D=ocean_atlas_temp].UNITS - FILENAME : gt4d011.cdf - "Deg C" -list/d=3 temp.history - VARIABLE : TEMP.HISTORY - FILENAME : ocean_atlas_temp.cdf - "From ocean_atlas_monthly" - -can data/all -can var/all - -use coads_climatology -! This syntax does not work: -! list sst[d=1].dimnames[i=2] - -! But this does -let a = sst[d=1].dimnames -list a[i=2] - VARIABLE : SST[D=coads_climatology].DIMNAMES - FILENAME : coads_climatology.cdf - X : 2 - "COADSY" - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -! When the variable context is given in an attribute -! spec, we want to ignore the information except for the -! dataset, and just return the attribute of the variable. - -use coads_climatology -define symbol ferret_plot_var sst[x=30:39,y=-90:90] -list ($ferret_plot_var).long_name - !-> list sst[x=30:39,y=-90:90].long_name - VARIABLE : SST[X=30:39,Y=-90:90].LONG_NAME - FILENAME : coads_climatology.cdf - "SEA SURFACE TEMPERATURE" - -use coads_climatology -define symbol ferret_plot_var sst[d=1,x=30:35,y=-90:90] -list ($ferret_plot_var).units - !-> list sst[d=1,x=30:35,y=-90:90].units - VARIABLE : SST[D=coads_climatology,X=30:35,Y=-90:90].UNITS - FILENAME : coads_climatology.cdf - "Deg C" - -use coads_climatology -use levitus_climatology -define symbol ferret_plot_var sst[d=1,x=30:35,y=-90:90] -list ($ferret_plot_var).history - !-> list sst[d=1,x=30:35,y=-90:90].history - VARIABLE : SST[D=coads_climatology,X=30:35,Y=-90:90].HISTORY - FILENAME : levitus_climatology.cdf - "From coads_climatology" - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -use levitus_climatology -use coads_climatology - -def sym xaxnam "(`temp[d=1],return=xaxis`)" - !-> def sym xaxnam "(XAXLEVITR1_160)" -def sym yaxnam "(`temp[d=1],return=yaxis`)" - !-> def sym yaxnam "(YAXLEVITR1_90)" - -list ($xaxnam)[d=1].modulo - !-> list (XAXLEVITR1_160)[d=1].modulo - VARIABLE : (XAXLEVITR1_160)[D=levitus_climatology].MODULO - FILENAME : coads_climatology.cdf - " " -list ($yaxnam).point_spacing[d=1] - !-> list (YAXLEVITR1_90).point_spacing[d=1] - VARIABLE : (YAXLEVITR1_90).POINT_SPACING[D=levitus_climatology] - FILENAME : levitus_climatology.cdf - "even" - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err61_show_dat_var_xml -! err61_show_dat_var_xml.jnl -! See bug 1580. Intermediate variablels associated with a -! variable that uses a grid-changing function should be -! skipped when writing variables by SHOW DATA/VAR/XML - -! Define some varibles as in some of the tests of -! zaxreplace. Write to files. - -! Define some variables as in some of the benchmark -! tests of zaxreplace. Write to files. - -LET ddat = ZSEQUENCE({1126,1136,1146,1156,1166}) -LET cycle = ZSEQUENCE({346, 347, 349, 350, 351}) -DEFINE AXIS/Z=10:50:10 zaxis_orig -LET cycle_orig = cycle[GZ=zaxis_orig@ASN] -LET ddat_orig = ddat[GZ=zaxis_orig@ASN] - -SAVE/CLOBBER/FILE=z1.nc ddat_orig -SAVE/CLOBBER/FILE=z2.nc cycle_orig - -! Now use this data and define a user variable -! associated with datset 2 using ZAXREPLACE - -CAN DAT/ALL; CAN VAR/ALL -USE z1 -USE z2 -DEFINE AXIS/Z=345:353:1 zaxis_des -LET dummy = Z[GZ=zaxis_des] -LET/D=2 ddat_a = ZAXREPLACE(ddat_orig[d=1], cycle_orig[d=2], dummy) - -! Note how there are intermediate variables associated with the -! regridding operation - -SHOW DATA 2 - currently SET data sets: - 2> ./z2.nc (default) - name title I J K L - CYCLE_ORIG - CYCLE[GZ=ZAXIS_ORIG@ASN] ... ... 1:5 ... - ------------------------------ - DDAT_A[D=z2] = ZAXREPLACE(DDAT_ORIG[D=1], CYCLE_ORIG[D=2], DUMMY) - - -! Those intermediate variables should be skipped -! for SHOW DATA/VAR/XML - -SHOW DATA/VAR/XML 2 - - - - - - - - - -1.E+34 - - - -1.E+34 - - - - - - - - - -ZAXIS_ORIG - - - - - - - - - -1.E+34 - - - -1.E+34 - - - - - - - - - -ZAXIS_DES - - - - - - - - - - - - 5 - - - 10 - - - 50 - - - - - - no - - - - - - - - - - - - - - - - - - - - 9 - - - 345 - - - 353 - - - - - - no - - - - - - - - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err61_360_calendar -! err61_360_calendar.jnl -! - -! This first has always been ok -define axis/t=28-feb-1909:07-mar-1909:2/units=days/t0=1-jan-1909/calendar=d360 time -list t[gt=time] - VARIABLE : T - axis TIME - SUBSET : 6 points (TIME) - CALENDAR : 360_DAY - 28-FEB-1909 00 / 1: 57.00000 - 30-FEB-1909 00 / 2: 59.00000 - 02-MAR-1909 00 / 3: 61.00000 - 04-MAR-1909 00 / 4: 63.00000 - 06-MAR-1909 00 / 5: 65.00000 - 08-MAR-1909 00 / 6: 67.00000 - -! Should be able to specify 30-feb-1909 for a 360-day calendar but it -! resulted in an error -define axis/t=30-feb-1909:07-mar-1909:2/units=days/t0=1-jan-1909/calendar=d360 time - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_exit_if.jnl -! err611_exit_if.jnl -! -! Bug 1587 -! This only in v6.11 GFDL release bug -! Fixed in xeq_exit.F - -sp echo if 1 then > a.jnl -sp echo exit/script >> a.jnl -sp echo endif >> a.jnl -sp echo go a > b.jnl -sp echo say hello >> b.jnl -go b !the following fails to say "hello" -go a -if 1 then -exit/script -say hello -hello -go a -if 1 then -exit/script -if 1 then -exit/script - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_save_irreg.jnl -! err611_save_irreg.jnl -! -! bug1587 - -def axis/t time = {0,1,3} -let a = t[gt=time] -save/clob/file=a.nc a -can var a -can dat/all -use a.nc -save/clob/file=b.nc a -let b = a -list b - VARIABLE : A - FILENAME : a.nc - SUBSET : 3 points (T) - 0 / 1: 0.000000 - 1 / 2: 1.000000 - 3 / 3: 3.000000 -save/clob/file=b.nc b - - -! ******** V6.13 Additions below *********** - -GO bn_reset bn_no_valid_on_plot -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_no_valid_on_plot -GO bn_no_valid_on_plot -! bn_no_valid_on_plot.jnl -! Bug 1038 points out that the No Valid Data label that is -! put onto 2D plot if there is no good data, is not put onto -! 1D plots. Add it to the variable title so it shows up in the key -! -! Plot a region where there is no data -use coads_climatology -plot/x=56e:100e/y=40 sst[L=1] -ppl list labels - @ACSEA SURFACE TEMPERATURE No Valid Data - @ASLONGITUDE - @ASDeg C - - XPOS YPOS HGT ROT UNITS - LAB 1 0.000E+00 6.800E+00 0.120 0 SYSTEM @ASLATITUDE : 39N - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - LAB 2 0.000E+00 6.600E+00 0.120 0 SYSTEM @ASTIME : 16-JAN 06:00 - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - LAB 3 8.000E+00 6.630E+00 0.120 0 SYSTEM @ASDATA SET: coads_climatology - LINE PT: 0.000E+00 0.000E+00 NO LINE RIGHT JUSTIFY LABEL - -! and now valid data overlaid with all-missing data - -plot/x=56e:100e/y=10 sst[L=1] -plot/over/x=56e:100e/y=40 sst[L=1] -ppl list labels - - @ASLONGITUDE - @ASDeg C - - XPOS YPOS HGT ROT UNITS - LAB 1 -4.200E-01 -5.500E-01 0.080 0 SYSTEM @ASSST[Y=39N] No Valid Data - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - -! For plots with multi lines in one plot command, mark each if no data -plot/x=56e:100e sst[L=1,y=10], sst[L=1,y=50], sst[L=1,y=20] -ppl list labels - - @ASLONGITUDE - @ASDeg C - - XPOS YPOS HGT ROT UNITS - LAB 1 0.000E+00 6.600E+00 0.120 0 SYSTEM @ASTIME : 16-JAN 06:00 - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - LAB 2 8.000E+00 6.630E+00 0.120 0 SYSTEM @ASDATA SET: coads_climatology - LINE PT: 0.000E+00 0.000E+00 NO LINE RIGHT JUSTIFY LABEL - LAB 3 1.750E+00 -8.100E-01 0.120 0 SYSTEM @ASSST[Y=9N] - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - LAB 4 5.370E+00 -8.100E-01 0.120 0 SYSTEM @ASSST[Y=49N] No Valid Data - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - LAB 5 1.750E+00 -1.060E+00 0.120 0 SYSTEM @ASSST[Y=19N] - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - -! For 2D plots create a new MODE NODATA_LAB which if on, puts -! the NO VALID DATA across the middle of the plot when there is -! no data, but allows us to turn this off. - -CANCEL MODE nodata_lab -SHADE/Y=80:90 sst[L=1] -FILL/Y=80:90 sst[L=1] -CONTOUR/Y=80:90 sst[L=1] - -VECTOR/Y=80:90 sst[L=1], sst[L=1] - -SET MODE/last nodata_lab - -GO bn_reset bn_median -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_median -GO bn_median -! Test median smoothing tranform -! Default length is 3 - -use gtsa056_2.cdf -let var = u[x=180,y=0,k=1,t=1-jan-1982:1-jan-1983] -plot var, var[t=@med], var[t=@med:3], var[t=@med:7] -list/t=1-dec-1982:1-jan-1983 var, var[t=@med], var[t=@med:3], var[t=@med:7] - DATA SET: ./data/gtsa056_2.cdf - TIME: 29-NOV-1982 10:30 to 01-JAN-1983 21:30 - LONGITUDE: 180E - LATITUDE: 0 - DEPTH (m): 5 - Column 1: VAR is U[X=180,Y=0,K=1,T=1-JAN-1982:1-JAN-1983] - Column 2: VAR[T=@MED:3] is U[X=180,Y=0,K=1,T=1-JAN-1982:1-JAN-1983] (median smoothed by 3 pts on T) - Column 3: VAR[T=@MED:3] is U[X=180,Y=0,K=1,T=1-JAN-1982:1-JAN-1983] (median smoothed by 3 pts on T) - Column 4: VAR[T=@MED:7] is U[X=180,Y=0,K=1,T=1-JAN-1982:1-JAN-1983] (median smoothed by 7 pts on T) - VAR VAR VAR VAR -30-NOV-1982 23 / 106: -10.06812 -10.06812 -10.06812 -11.97891 -04-DEC-1982 00 / 107: -13.41848 -13.41848 -13.41848 -10.06812 -07-DEC-1982 01 / 108: -15.06836 -13.41848 -13.41848 -10.06812 -10-DEC-1982 02 / 109: -11.97891 -11.97891 -11.97891 -10.06812 -13-DEC-1982 03 / 110: -4.63116 -4.63116 -4.63116 -4.63116 -16-DEC-1982 04 / 111: 0.77075 0.77075 0.77075 0.77075 -19-DEC-1982 05 / 112: 1.06240 1.06240 1.06240 1.06240 -22-DEC-1982 06 / 113: 2.75400 2.75400 2.75400 2.75400 -25-DEC-1982 07 / 114: 9.06758 9.06758 9.06758 4.21162 -28-DEC-1982 08 / 115: 10.80434 9.06758 9.06758 4.21162 -31-DEC-1982 09 / 116: 4.21162 10.80434 10.80434 9.06758 - -use coads_climatology -let var= sst[y=0,L=10] -plot var,var[x=@med:3], var[x=@med:7] -list/x=80w:50w var,var[x=@med:3], var[x=@med:7] - DATA SET: ./data/coads_climatology.cdf - LONGITUDE: 80W to 50W - LATITUDE: 1S - TIME: 15-FEB 04:07 - Column 1: VAR is SST[Y=0,L=10] - Column 2: VAR[X=@MED:3] is SST[Y=0,L=10] (median smoothed by 3 pts on X) - Column 3: VAR[X=@MED:7] is SST[Y=0,L=10] (median smoothed by 7 pts on X) - VAR VAR VAR -79W / 131: .... 25.98750 25.92824 -77W / 132: .... .... 25.98750 -75W / 133: .... .... 25.98750 -73W / 134: .... .... .... -71W / 135: .... .... .... -69W / 136: .... .... .... -67W / 137: .... .... .... -65W / 138: .... .... .... -63W / 139: .... .... 27.80000 -61W / 140: .... .... 27.80000 -59W / 141: .... 27.80000 27.64737 -57W / 142: 27.80000 27.80000 27.70333 -55W / 143: 27.64737 27.64737 27.64737 -53W / 144: 27.43500 27.64737 27.64737 -51W / 145: 27.70333 27.43500 27.64737 - -let var= sst[x=180,L=10] -plot var,var[y=@med:3], var[y=@med:7] -list/y=-20:0 var,var[y=@med:3], var[y=@med:7] - DATA SET: ./data/coads_climatology.cdf - LATITUDE: 20S to 0 - LONGITUDE: 179E - TIME: 15-FEB 04:07 - Column 1: VAR is SST[X=180,L=10] - Column 2: VAR[Y=@MED:3] is SST[X=180,L=10] (median smoothed by 3 pts on Y) - Column 3: VAR[Y=@MED:7] is SST[X=180,L=10] (median smoothed by 7 pts on Y) - VAR VAR VAR -19S / 36: 28.32244 28.32244 28.32244 -17S / 37: 28.56983 28.56983 28.56983 -15S / 38: 29.05953 29.05953 29.05953 -13S / 39: 29.43250 29.23719 29.23170 -11S / 40: 29.23719 29.32561 29.23170 -9S / 41: 29.32561 29.23719 29.23170 -7S / 42: 29.23170 29.23170 29.23170 -5S / 43: 28.96976 28.96976 28.96976 -3S / 44: 28.39779 28.39779 28.44243 -1S / 45: 28.36456 28.39779 28.39779 - -define axis/z=0:1000:20/depth zax -let var = cos(z[gz=zax]/30) + randu(1+k[gz=zax]) -plot/trans var, var[z=@med:3], var[z=@med:9] -list/z=1:140 var, var[z=@med:3], var[z=@med:9] - Z: 1 to 140 - Column 1: VAR is COS(Z[GZ=ZAX]/30) + RANDU(1+K[GZ=ZAX]) - Column 2: VAR[Z=@MED:3] is COS(Z[GZ=ZAX]/30) + RANDU(1+K[GZ=ZAX]) (median smoothed by 3 pts on Z) - Column 3: VAR[Z=@MED:9] is COS(Z[GZ=ZAX]/30) + RANDU(1+K[GZ=ZAX]) (median smoothed by 9 pts on Z) - VAR VAR VAR -0 / 1: 1.900075 1.900075 0.3281405 -20 / 2: 1.322209 1.322209 0.3281405 -40 / 3: 0.328140 0.328140 0.2405229 -60 / 4: -0.253715 -0.157475 0.3281405 -80 / 5: -0.157475 -0.253715 0.3281405 -100 / 6: -0.785400 -0.157475 0.3281405 -120 / 7: 0.240523 0.240523 0.3281405 -140 / 8: 0.390383 0.390383 0.3903829 - -set mode ignore -! Argument to the median smoother must be odd. - -plot/trans var, var[z=@med:4] - -set mode/last ignore - - -GO bn_reset bn614_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn614_bug_fixes -GO bn614_bug_fixes -! bn614_bug_fixes.jnl -! Fixes that go into v6.14 release - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_axislab -! err611_axislab.jnl -! Fix bug 1582: Horizontal axis label disappeared -! if PPL AXLABP moves it to the upper axis - -plot/set/i=1:100 sin(i/6) -ppl axlabp,1,-1 -ppl xlab TEMP(C) -ppl ylab DEPTH -ppl plot - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err61_360_calendar -! err61_360_calendar.jnl -! - -! This first has always been ok -define axis/t=28-feb-1909:07-mar-1909:2/units=days/t0=1-jan-1909/calendar=d360 time -list t[gt=time] - VARIABLE : T - axis TIME - SUBSET : 6 points (TIME) - CALENDAR : 360_DAY - 28-FEB-1909 00 / 1: 57.00000 - 30-FEB-1909 00 / 2: 59.00000 - 02-MAR-1909 00 / 3: 61.00000 - 04-MAR-1909 00 / 4: 63.00000 - 06-MAR-1909 00 / 5: 65.00000 - 08-MAR-1909 00 / 6: 67.00000 - -! Should be able to specify 30-feb-1909 for a 360-day calendar but it -! resulted in an error -define axis/t=30-feb-1909:07-mar-1909:2/units=days/t0=1-jan-1909/calendar=d360 time - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_exit_if.jnl -! err611_exit_if.jnl -! -! Bug 1587 -! This only in v6.11 GFDL release bug -! Fixed in xeq_exit.F - -sp echo if 1 then > a.jnl -sp echo exit/script >> a.jnl -sp echo endif >> a.jnl -sp echo go a > b.jnl -sp echo say hello >> b.jnl -go b !the following fails to say "hello" -go a -if 1 then -exit/script -say hello -hello -go a -if 1 then -exit/script -if 1 then -exit/script - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_save_irreg.jnl -! err611_save_irreg.jnl -! -! bug1587 - -def axis/t time = {0,1,3} -let a = t[gt=time] -save/clob/file=a.nc a -can var a -can dat/all -use a.nc -save/clob/file=b.nc a -let b = a -list b - VARIABLE : A - FILENAME : a.nc - SUBSET : 3 points (T) - 0 / 1: 0.000000 - 1 / 2: 1.000000 - 3 / 3: 3.000000 -save/clob/file=b.nc b - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_wrong_fineaxis_range -! err611_wrong_fineaxis_range.jnl -! Bug 1594 - -! (bug was on 64-bit machine only) -! 7200-point axis in longitude. The coordinates run from -179.725 to 179.725, -! delta 0.05. If we give a range in x of -180:180 this is returned as index -! 1:1 not 1:7200. If we give a range of x=0:360 the correct range is used. - -! File saved from -!use/order=xytz "http://apdrc.soest.hawaii.edu/dods/public_data/satellite_product/GHRSST/ghrsst_global" -! save/clobber/file=fine_x_axis.nc sst[i=1:7200,y=0,L=1] - -use fine_x_axis -sh grid sst - GRID GPY1 - name axis # pts start end subset - LON LONGITUDE 7200mr 179.97W(-179.97) 179.97E full - LAT1800_1800 LATITUDE 1 r 0.025S 0.025S full - ENS Z (count) 1 r 1 1 full - TIME26 TIME 1 r 01-APR-2006 00:00 01-APR-2006 00:00 full - -! This first was wrong, returned data at x=-180 -list/x=180 sst - VARIABLE : sea surface temperature [degc] - FILENAME : fine_x_axis.nc - LONGITUDE: 180E - LATITUDE : 0.025S - Z (count): 1 - TIME : 01-APR-2006 00:00 - 27.53000 - -list/i=7200 sst - VARIABLE : sea surface temperature [degc] - FILENAME : fine_x_axis.nc - LONGITUDE: 180E - LATITUDE : 0.025S - Z (count): 1 - TIME : 01-APR-2006 00:00 - 27.53000 -list/x=-180 sst - VARIABLE : sea surface temperature [degc] - FILENAME : fine_x_axis.nc - LONGITUDE: 180W(-180) - LATITUDE : 0.025S - Z (count): 1 - TIME : 01-APR-2006 00:00 - 27.50000 -list/i=1 sst - VARIABLE : sea surface temperature [degc] - FILENAME : fine_x_axis.nc - LONGITUDE: 180W(-180) - LATITUDE : 0.025S - Z (count): 1 - TIME : 01-APR-2006 00:00 - 27.50000 - -! This gave a range in x of no points, so size was 1 should be 7200 -let the_plot_var = sst[x=-180:180] -say `the_plot_var,return=size` - !-> MESSAGE/CONTINUE 7200 -7200 - -let the_plot_var = sst[x=0:360] -say `the_plot_var,return=size` - !-> MESSAGE/CONTINUE 7200 -7200 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_digit_filename -! err611_digit_filename.jnl -! Under linux, FILE command fails if filename -! starts with digit(s) - -! bug 287 (never had a benchmark test) - -REPEAT/RANGE=1:12:2/name=m \ - (LIST/CLOBBER/NOHEAD/NOROWHEAD/I=1:3/FILE=`m`a.dat i; \ - FILE/VAR="a`m`" `m`a.dat; LIST a`m`) -!-> REPEAT: M:1 - !-> LIST/CLOBBER/NOHEAD/NOROWHEAD/I=1:3/FILE=1a.dat i - !-> SET DATA/EZ/VAR="a1" 1a.dat - !-> LIST a1 - VARIABLE : a1 - FILENAME : 1a.dat - SUBSET : 3 points (X) - 1 / 1: 1.000000 - 2 / 2: 2.000000 - 3 / 3: 3.000000 -!-> REPEAT: M:3 - !-> LIST/CLOBBER/NOHEAD/NOROWHEAD/I=1:3/FILE=3a.dat i - !-> SET DATA/EZ/VAR="a3" 3a.dat - !-> LIST a3 - VARIABLE : a3 - FILENAME : 3a.dat - SUBSET : 3 points (X) - 1 / 1: 1.000000 - 2 / 2: 2.000000 - 3 / 3: 3.000000 -!-> REPEAT: M:5 - !-> LIST/CLOBBER/NOHEAD/NOROWHEAD/I=1:3/FILE=5a.dat i - !-> SET DATA/EZ/VAR="a5" 5a.dat - !-> LIST a5 - VARIABLE : a5 - FILENAME : 5a.dat - SUBSET : 3 points (X) - 1 / 1: 1.000000 - 2 / 2: 2.000000 - 3 / 3: 3.000000 -!-> REPEAT: M:7 - !-> LIST/CLOBBER/NOHEAD/NOROWHEAD/I=1:3/FILE=7a.dat i - !-> SET DATA/EZ/VAR="a7" 7a.dat - !-> LIST a7 - VARIABLE : a7 - FILENAME : 7a.dat - SUBSET : 3 points (X) - 1 / 1: 1.000000 - 2 / 2: 2.000000 - 3 / 3: 3.000000 -!-> REPEAT: M:9 - !-> LIST/CLOBBER/NOHEAD/NOROWHEAD/I=1:3/FILE=9a.dat i - !-> SET DATA/EZ/VAR="a9" 9a.dat - !-> LIST a9 - VARIABLE : a9 - FILENAME : 9a.dat - SUBSET : 3 points (X) - 1 / 1: 1.000000 - 2 / 2: 2.000000 - 3 / 3: 3.000000 -!-> REPEAT: M:11 - !-> LIST/CLOBBER/NOHEAD/NOROWHEAD/I=1:3/FILE=11a.dat i - !-> SET DATA/EZ/VAR="a11" 11a.dat - !-> LIST a11 - VARIABLE : a11 - FILENAME : 11a.dat - SUBSET : 3 points (X) - 1 / 1: 1.000000 - 2 / 2: 2.000000 - 3 / 3: 3.000000 -SHOW DATA - currently SET data sets: - 1> ./1a.dat - name title I J K L - A1 a1 1:3 ... ... ... - - 2> ./3a.dat - name title I J K L - A3 a3 1:3 ... ... ... - - 3> ./5a.dat - name title I J K L - A5 a5 1:3 ... ... ... - - 4> ./7a.dat - name title I J K L - A7 a7 1:3 ... ... ... - - 5> ./9a.dat - name title I J K L - A9 a9 1:3 ... ... ... - - 6> ./11a.dat (default) - name title I J K L - A11 a11 1:3 ... ... ... - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_parse_semicolon -! err611_parse_semicolon.jnl -! Bug 1608. The first time it was issued, the first command -! below was split into two at the ; -! Test this and some other combinations - -say "c ; d" -c ; d -say "c //d" -c //d -say "c (d" -c (d -say "c (d"; say "a ; b" -"c (d"; say "a ; b" -say "c (d; say a ; b" -c (d; say a ; b - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_ov_ax -! err611_ov_ax.jnl -! -! bug 1609 -! -! in the two lower panels, the plot/over/ax=0,0,0,0 -! messes up the ppl axlabp setting in the last command -! - -can v -set v ul; ppl axlabp -1 -1; plot/nolab {-1,1,6} -plot/ov/vs/nolab/line=2 {1,2,2,1},{0,0,3,0} -set v ur; ppl axlabp 0 0; plot/nolab {-1,1,6} - -set v ll; ppl axlabp -1 -1; plot/nolab {-1,1,6} -plot/ov/vs/nolab/line=2/ax=0,0,0,0 {1,2,2,1},{0,0,3,0} -set v lr; ppl axlabp 0 0; plot/nolab {-1,1,6} - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_context_after_error -! err611_context_after_error.jnl -! ACM 11/12/08 -! -! Bug 1421 - goes back even to older versions of Ferret e.g. 5.41 on stout -! Context errors after -! -! list a_regrid[d=1,gt=b[d=2]@mod] -! ... -! cancel data/all -! -! if the list command is issued before the variable a_regrid is defined. - - -SET MODE ignore_error -USE bug1421_a -USE bug1421_b - -SHOW DATA - currently SET data sets: - 1> ./data/bug1421_a.nc - name title I J K L - A zonal wind stress 1:1 1:1 ... 1:20 - - 2> ./data/bug1421_b.nc (default) - name title I J K L - B T[GT=MON_IRREG_NLP] ... ... ... 1:12 - -SHOW AXIS LON88_88 - name axis # pts start end - LON88_88 LONGITUDE 1mr 141.25W 141.25W - Axis span (to cell edges) = 1 (modulo length = 360) -SHOW AXIS LAT45_45 - name axis # pts start end - LAT45_45 LATITUDE 1 r 1.011S 1.011S - Axis span (to cell edges) = 1 -SHOW AXIS MON_IRREG_NLP - name axis # pts start end - MON_IRREG_NLP TIME 12mi 16-JAN 12:00 16-DEC 12:00 -T0 = 1-JAN-0001 -CALENDAR = NOLEAP - Axis span (to cell edges) = 365 (modulo length = axis span) - -DEF AXIS/T/UNITS="days"/T0="1-jan-0001"/cal=noleap tnew = tboxlo[GT=a[D=1]] -LIST a_regrid[D=1,GT=b[D=2]@MOD] -LET a_regrid = a[D=1,GT=tnew@ASN] -LIST a_regrid[D=1,GT=b[D=2]@MOD] - VARIABLE : A[D=bug1421_a,GT=TNEW@ASN] - regrid: on T@MOD - SUBSET : 12 points (TIME) - CALENDAR : NOLEAP - LONGITUDE: 141.3W - LATITUDE : 1.011S - 141.3W - 1 - 16-JAN 12 / 1: 0.05848070 - 15-FEB 00 / 2: 0.05188299 - 16-MAR 12 / 3: 0.04782573 - 16-APR 00 / 4: 0.03808421 - 16-MAY 12 / 5: 0.05937929 - 16-JUN 00 / 6: 0.06571895 - 16-JUL 12 / 7: 0.06152720 - 16-AUG 12 / 8: 0.07460730 - 16-SEP 00 / 9: 0.05815475 - 16-OCT 12 / 10: 0.06169292 - 16-NOV 00 / 11: 0.05654943 - 16-DEC 12 / 12: 0.05768678 - -CANCEL DATA/ALL -SHOW AXIS LON88_88 - name axis # pts start end -SHOW AXIS LAT45_45 - name axis # pts start end -SHOW AXIS MON_IRREG_NLP - name axis # pts start end - MON_IRREG_NLP TIME 12mi 16-JAN 12:00 16-DEC 12:00 -T0 = 1-JAN-0001 -CALENDAR = NOLEAP - Axis span (to cell edges) = 365 (modulo length = axis span) - -SET MODE/LAST ignore_error - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_isize_gc_fcns -! err611_isize_gc_fcns.jnl -! ACM 11/13/2008 -! -! Testing the fix for bug 1523. Previously after the SET REGION, -! the RETURN= always returned a size of 10, the default region size. - -LET a = {1,2,3,4,5,6} - -! Should be 6 -SAY `a,RETURN=isize` - !-> MESSAGE/CONTINUE 6 -6 -SAY `XSEQUENCE(a),RETURN=isize` - !-> MESSAGE/CONTINUE 6 -6 - -SET REGION/X=1:10 -! Should still be 6 -SAY `XSEQUENCE(a),RETURN=isize` - !-> MESSAGE/CONTINUE 6 -6 - -! Should be 4 -SAY `XSEQUENCE(a[i=1:4]),RETURN=isize` - !-> MESSAGE/CONTINUE 4 -4 - -SAY `XSEQUENCE(a[i=1:4]),RETURN=size` - !-> MESSAGE/CONTINUE 4 -4 - -CANCEL REGION -! Should be 5 then 6 -SAY `XSEQUENCE(a[i=1:5]),RETURN=size` - !-> MESSAGE/CONTINUE 5 -5 -SAY `XSEQUENCE(a),RETURN=size` - !-> MESSAGE/CONTINUE 6 -6 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_return_precision -! err611_return_precision.jnl -! 17-Nov-08 ACM - -! See bug 1611, where say "a`95,p=1`" yielded "a 95" but -! "a`94,p=1`" yielded "a94" -! Note with ticket 2389 (5/2016), p=1 returns 1 digit, p=2 returns 2, etc. - -say "a`95,p=1`" - !-> MESSAGE/CONTINUE "a1.E+02" -a1.E+02 -say "a`94,p=1`" - !-> MESSAGE/CONTINUE "a9.E+01" -a9.E+01 -say "a`95,p=1`" - !-> MESSAGE/CONTINUE "a1.E+02" -a1.E+02 -say "a`949,p=1`" - !-> MESSAGE/CONTINUE "a9.E+02" -a9.E+02 -say "a`950,p=1`" - !-> MESSAGE/CONTINUE "a1.E+03" -a1.E+03 - -! Note that an immediate expr with prec=0 returns an integer. -say "a`95,p=0`" - !-> MESSAGE/CONTINUE "a95" -a95 -say "a`94,p=0`" - !-> MESSAGE/CONTINUE "a94" -a94 -say "a`95,p=0`" - !-> MESSAGE/CONTINUE "a95" -a95 -say "a`949,p=0`" - !-> MESSAGE/CONTINUE "a949" -a949 -say "a`950,p=0`" - !-> MESSAGE/CONTINUE "a950" -a950 - -! Tests for non-integers -! We always return at least one sig digit -say "a`0.1,p=0`" - !-> MESSAGE/CONTINUE "a0" -a0 - -say "a`-95,p=1`" - !-> MESSAGE/CONTINUE "a-1.E+02" -a-1.E+02 -say "a`-95.99,p=1`" - !-> MESSAGE/CONTINUE "a-1.E+02" -a-1.E+02 -say "a`-95.001,p=1`" - !-> MESSAGE/CONTINUE "a-1.E+02" -a-1.E+02 - -say "a`-94,p=1`" - !-> MESSAGE/CONTINUE "a-9.E+01" -a-9.E+01 -say "a`-94.99,p=1`" - !-> MESSAGE/CONTINUE "a-9.E+01" -a-9.E+01 -say "a`-94.001,p=1`" - !-> MESSAGE/CONTINUE "a-9.E+01" -a-9.E+01 - -say "a`-95,p=1`" - !-> MESSAGE/CONTINUE "a-1.E+02" -a-1.E+02 -say "a`-95.99,p=1`" - !-> MESSAGE/CONTINUE "a-1.E+02" -a-1.E+02 -say "a`-95.001,p=1`" - !-> MESSAGE/CONTINUE "a-1.E+02" -a-1.E+02 - -say "a`-949,p=1`" - !-> MESSAGE/CONTINUE "a-9.E+02" -a-9.E+02 -say "a`-949.99,p=1`" - !-> MESSAGE/CONTINUE "a-9.E+02" -a-9.E+02 -say "a`-949.001,p=1`" - !-> MESSAGE/CONTINUE "a-9.E+02" -a-9.E+02 - -say "a`-950,p=1`" - !-> MESSAGE/CONTINUE "a-1.E+03" -a-1.E+03 -say "a`-950.99,p=1`" - !-> MESSAGE/CONTINUE "a-1.E+03" -a-1.E+03 -say "a`-950.001,p=1`" - !-> MESSAGE/CONTINUE "a-1.E+03" -a-1.E+03 - - -say "a`-95,p=0`" - !-> MESSAGE/CONTINUE "a-95" -a-95 -say "a`-95.99,p=0`" - !-> MESSAGE/CONTINUE "a-96" -a-96 -say "a`-95.001,p=0`" - !-> MESSAGE/CONTINUE "a-95" -a-95 - -say "a`-94,p=0`" - !-> MESSAGE/CONTINUE "a-94" -a-94 -say "a`-94.99,p=0`" - !-> MESSAGE/CONTINUE "a-95" -a-95 -say "a`-94.001,p=0`" - !-> MESSAGE/CONTINUE "a-94" -a-94 - -say "a`-95,p=0`" - !-> MESSAGE/CONTINUE "a-95" -a-95 -say "a`-95.99,p=0`" - !-> MESSAGE/CONTINUE "a-96" -a-96 -say "a`-95.001,p=0`" - !-> MESSAGE/CONTINUE "a-95" -a-95 - -say "a`-949,p=0`" - !-> MESSAGE/CONTINUE "a-949" -a-949 -say "a`-949.99,p=0`" - !-> MESSAGE/CONTINUE "a-950" -a-950 -say "a`-949.001,p=0`" - !-> MESSAGE/CONTINUE "a-949" -a-949 - -say "a`-950,p=0`" - !-> MESSAGE/CONTINUE "a-950" -a-950 -say "a`-950.99,p=0`" - !-> MESSAGE/CONTINUE "a-951" -a-951 -say "a`-950.001,p=0`" - !-> MESSAGE/CONTINUE "a-950" -a-950 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_set_var_ez -! err611_set_var_ez.jnl -! 6-Jan-2009 -! Ticket 1615 -! -! SET VAR/UNITS= etc for a variable in an EZ dataset -! The settings were applied within the Ferret session (plots etc) -! but not added to the attribute structure and not written to -! output files. - -SP echo "err611_set_var_ez.jnl --- " >> all_ncdump.out - -! Create an ASCII dataset -LET a = {1,3,5} -LIST/NOHEAD/FORM=(F8.1)/FILE=dat.dat/CLOBBER a -FILE/VAR=my_asc dat.dat - -! use SET VAR to add units, title, reset bad value -SET VAR/UNITS="micrograms/L"/TITLE="chlorophyll"/BAD=3 my_asc -SHOW DAT/ATT - currently SET data sets: - 1> ./dat.dat (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 7 F dat.dat - - my_asc DOUBLE long_name CHAR 11 T chlorophyll - missing_value DOUBLE 1 T 3 - units CHAR 12 T micrograms/L - -SAVE/FILE=a.nc/CLOBBER my_asc -SP ncdump -h a.nc >> all_ncdump.out - -! Create an Unformatted dataset -LIST/FORM=UNF/file=unf.dat/CLOBBER a -FILE/FORM=UNF/VAR=my_unf unf.dat - -! use SET VAR to add units, title, reset bad value -SET VAR/UNITS="metres"/TITLE="Some Unformatted input"/BAD=5 my_unf -SAVE/FILE=a.nc/CLOBBER my_unf -SP ncdump -h a.nc >> all_ncdump.out - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_convert_missing_type -! err611_convert_missing_type.jnl -! Fix for bug 1620 message about converting data type of -! missing value flag from double to float when the data -! is from an EZ data set and being written to netCDF file. - -! Save some data and read it in as a delimited file - -LET xx = {-3,4,5} -LET yy = {1,2,3} -LIST/CLOBBER/NOHEAD/NOROWHEAD/FORM=(3f8.2)/FILE=lonlat.dat xx,yy -DEFINE AXIS/X=1:3:1 xobs -DEFINE GRID/X=xobs gobs -COL/GRID=gobs/VAR="lon,lat"/TYPE="longitude,latitude" lonlat.dat - -! On this SAVE, previously got a NOTE about converting the type of the -! missing-value attribute to match the type of the variable. - -SAVE/CLOBBER/FILE=lonlat.nc lat, lon - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_shade_fill_levs -! err611_shade_fill_levs.jnl -! 2/27/2009 -! Bug 1641: On 32-bit linux, these give different -! sets of levels. They should be the same. - -shade x[gx=0:1:.1]*y[gy=0:1:.1]; sh sym lev* -LEV_ALL = "0,0.02,0.04,0.06,0.08,0.1,0.12,0.14,0.16,0.18,0.2,0.22,0.24,0.26,0.28,0.3,0.32,0.34,0.36,0.38,0.4,0.42,0.44,0.46,0.48,0.5,0.52,0.54,0.56,0.58,0.6,0.62,0.64,0.66,0.68,0.7,0.72,0.74,0.76,0.78,0.8,0.82,0.84,0.86,0.88,0.9,0.92,0.94,0.96,0.98,1,1.02" -LEV_TEXT = "(-5,30,1)" -LEV_MIN = "0" -LEV_MAX = "1.02" -LEV_NUM = "51" -LEV_DEL = "0.02" -LEV_CENTERED_LABELS = "off" -fill x[gx=0:1:.1]*y[gy=0:1:.1]; sh sym lev* -LEV_ALL = "0,0.02,0.04,0.06,0.08,0.1,0.12,0.14,0.16,0.18,0.2,0.22,0.24,0.26,0.28,0.3,0.32,0.34,0.36,0.38,0.4,0.42,0.44,0.46,0.48,0.5,0.52,0.54,0.56,0.58,0.6,0.62,0.64,0.66,0.68,0.7,0.72,0.74,0.76,0.78,0.8,0.82,0.84,0.86,0.88,0.9,0.92,0.94,0.96,0.98,1,1.02" -LEV_TEXT = "(-5,30,1)" -LEV_MIN = "0" -LEV_MAX = "1.02" -LEV_NUM = "51" -LEV_DEL = "0.02" -LEV_CENTERED_LABELS = "off" - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_set_uvar_outtyp -! err611_set_uvar_outtyp.jnl -! fix for bug 1646: set outtype for user variables. - -sp echo "bn_attributes.jnl --- SET VAR/OUTTYPE for user variable" >> all_ncdump.out - -LET a = {1.1,2.2,3.3} -SET VAR/OUTTYPE = double a -SAVE/CLOBBER/FILE=a.nc a -SP ncdump a.nc >> all_ncdump.out - - -! When changing to INT, need to also change the -! missing-value flag. -LET a = { 3.77, 4.00, 4.10, 4.33, 4.38, 4.27, 4.31, 4.40, 4.75, 5.01, 5.27, 5.52} -SET VAR/BAD=999/OUTTYPE=int a -SAVE/CLOBBER/FILE=a.nc a -SP ncdump a.nc >> all_ncdump.out - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_save_from_desc -! err611_save_from_desc.jnl -! -! In Ferret v6.19+ this failed with -! ** netCDF error: Failed creating coord variable %% - -use coads_clim.des -save/clobber/file=a.nc/i=100 sst - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_irregular_axis - ! err611_irregular_axis.jnl - - ! See bug 1483, all about detecting irregular and regular axes. Finally - ! did the right thing and test double-precision coordinates in DP and - ! if single precision axes comes in, test that in SP. - -! The dataset was created as follows to have large time coordinates but -! irregularly spaced. - -! define axis/t=1-jan-2008:"1-jan-2008:00:02:22":1/units=seconds/t0="1-jan-0001" tax -! let cc = L[gt=tax] -! save/file=cc.nc/clobber cc -! Use ncdump to write a cdl file and edit that file to remove one time -! coordinate and one value of cc. Run ncgen and write cc_irreg.nc - -! Previous versions of this detected the axis as regular. - -use cc_irreg.nc -sh grid cc - GRID GCZ1 - name axis # pts start end subset - normal X - normal Y - normal Z - TAX3 TIME 142 i 30-DEC-2007 00:00 30-DEC-2007 00:02 full - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_ef_string_result -! err611_ef_string_result.jnl -! testing the fix for bug 1621 -! call to EFCN_GET_RTN_TYPE wasn't hooked up in gcf_rtn_type.F -! - -define axis/t=1-jan-1980:1-jan-1990:4/unit=days tax -define grid/t=tax gg -let date_list = t[t=29000:29900:100] -list tax_datestring(date_list,t[g=gg],"day") - VARIABLE : TAX_DATESTRING(DATE_LIST,T[G=GG],"day") - SUBSET : 10 points (T) - 29000 / 1:"09-JUN-1980" - 29100 / 2:"17-SEP-1980" - 29200 / 3:"26-DEC-1980" - 29300 / 4:"05-APR-1981" - 29400 / 5:"14-JUL-1981" - 29500 / 6:"22-OCT-1981" - 29600 / 7:"30-JAN-1982" - 29700 / 8:"10-MAY-1982" - 29800 / 9:"18-AUG-1982" - 29900 / 10:"26-NOV-1982" -let v = tax_datestring(date_list,t[g=gg],"day") -list v - VARIABLE : TAX_DATESTRING(DATE_LIST,T[G=GG],"day") - SUBSET : 10 points (T) - 29000 / 1:"09-JUN-1980" - 29100 / 2:"17-SEP-1980" - 29200 / 3:"26-DEC-1980" - 29300 / 4:"05-APR-1981" - 29400 / 5:"14-JUL-1981" - 29500 / 6:"22-OCT-1981" - 29600 / 7:"30-JAN-1982" - 29700 / 8:"10-MAY-1982" - 29800 / 9:"18-AUG-1982" - 29900 / 10:"26-NOV-1982" - -! Combine tax_datestring call with *cat_str function - -let yr = tax_datestring(date_list,t[g=gg],"second") -let both = tcat_str(v, yr) -list both - VARIABLE : TCAT_STR(V, YR) - SUBSET : 20 points (T) - 1 / 1:"09-JUN-1980" - 2 / 2:"17-SEP-1980" - 3 / 3:"26-DEC-1980" - 4 / 4:"05-APR-1981" - 5 / 5:"14-JUL-1981" - 6 / 6:"22-OCT-1981" - 7 / 7:"30-JAN-1982" - 8 / 8:"10-MAY-1982" - 9 / 9:"18-AUG-1982" - 10 / 10:"26-NOV-1982" - 11 / 11:"09-JUN-1980 00:00:00" - 12 / 12:"17-SEP-1980 00:00:00" - 13 / 13:"26-DEC-1980 00:00:00" - 14 / 14:"05-APR-1981 00:00:00" - 15 / 15:"14-JUL-1981 00:00:00" - 16 / 16:"22-OCT-1981 00:00:00" - 17 / 17:"30-JAN-1982 00:00:00" - 18 / 18:"10-MAY-1982 00:00:00" - 19 / 19:"18-AUG-1982 00:00:00" - 20 / 20:"26-NOV-1982 00:00:00" - -let xt = xcat_str(v, yr) -list xt - VARIABLE : XCAT_STR(V, YR) - SUBSET : 2 by 10 points (X-T) - 1 2 - 1 2 - 29000 / 1:"09-JUN-1980" "09-JUN-1980 00:00:00" - 29100 / 2:"17-SEP-1980" "17-SEP-1980 00:00:00" - 29200 / 3:"26-DEC-1980" "26-DEC-1980 00:00:00" - 29300 / 4:"05-APR-1981" "05-APR-1981 00:00:00" - 29400 / 5:"14-JUL-1981" "14-JUL-1981 00:00:00" - 29500 / 6:"22-OCT-1981" "22-OCT-1981 00:00:00" - 29600 / 7:"30-JAN-1982" "30-JAN-1982 00:00:00" - 29700 / 8:"10-MAY-1982" "10-MAY-1982 00:00:00" - 29800 / 9:"18-AUG-1982" "18-AUG-1982 00:00:00" - 29900 / 10:"26-NOV-1982" "26-NOV-1982 00:00:00" - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err61_contour_subspan_reps -! err61_contour_subspan_reps.jnl -! Bug 1659. -! -! -! CONTOUR (or FILL) doesn't work properly with a subspan modulo axis, -! unlike SHADE. And we get different CONTOUR results if the subspan modulo -! axis coordinates are supplied on the positive vs. the negative modulo branch. - -use coads_climatology -let a = sst[x=120:284,y=-2:2@ave] -save/clob/file=a.nc a - -can var a -use a -set reg/x=125e:70w -shade/x=-360:360 a -fill/ov/pal=greyscale/x=-360:360 a -cont/ov/x=-360:360 a - -! Now region in negative x - -can dat/all; can var/all - -use coads_climatology -let b = sst[x=-240:-76,y=-2:2@ave] -save/clob/file=b.nc b - -can var b -use b -set reg/x=125e:70w -shade/x=-360:360 b -fill/ov/pal=greyscale/x=-360:360 b -cont/ov/x=-360:360 b - - -! ******** V6.14 Additions below *********** - -GO bn_reset bn_mode_nodata_lab -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_mode_nodata_lab -GO bn_mode_nodata_lab -! bn_mode_nodata_lab -! turns off the No Valid Data label on plots -! (for line plots this is added to the plot label, -! if the mode is SET). - -SHOW MODE nodata_lab - MODE STATE ARGUMENT - NODATA_LAB SET - -use coads_climatology -let uwnd = sst -let vwnd = -1*sst - -plot/y=50/x=70e:110e/L=1 sst -shade/y=40:50/x=70e:110e/L=1 sst -vec/y=40:50/x=70e:110e/L=1 uwnd,vwnd -contour/y=40:50/x=70e:110e/L=1 vwnd -contour/fill/y=40:50/x=70e:110e/L=1 vwnd - -can mode nodata_lab -plot/y=50/x=70e:110e/L=1 sst -shade/y=40:50/x=70e:110e/L=1 sst -vec/y=40:50/x=70e:110e/L=1 uwnd,vwnd -contour/y=40:50/x=70e:110e/L=1 vwnd -contour/fill/y=40:50/x=70e:110e/L=1 vwnd - -set mode/last nodata_lab - - -GO bn_reset bn_proleptic_gregorian_calendar -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_proleptic_gregorian_calendar -GO bn_proleptic_gregorian_calendar -! proleptic_gregorian_calendar.jnl -! Allow PROLEPTIC_GREGORIAN as a calendar attribute -! for the default Ferret calendar. - -set data proleptic_gregorian.nc -show data - currently SET data sets: - 1> ./data/proleptic_gregorian.nc (default) - name title I J K L - MY_DATA SIN(L[GT=TDAYS]) ... ... ... 1:32 - -show axis tdays - name axis # pts start end - TDAYS TIME 733 r 01-JAN-1988 00:00 01-JAN-1990 00:00 -T0 = 15-JAN-1901 -CALENDAR = ALL_LEAP - Axis span (to cell edges) = 733 - -GO bn_reset bn_string_ngd_nbd -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_string_ngd_nbd -GO bn_string_ngd_nbd -! @NGD and @NBD for strings -! Bad data is taken to be the null string -! Compare with results for numeric data -! *ACM 11/2008 - -let a = {"a","b",,"cd"} -list a[i=@ngd] - VARIABLE : {"a","b",,"cd"} (# of points) - X : 0.5 to 4.5 (number of valid) - 3.000000 - -let a = {"a","b",,"c",,"d",,,"e","f","g","h"} -let b = { 3, 3 ,, 3 ,, 3 ,,, 3, 3, 3, 3} -list a[i=@nbd] - VARIABLE : {"a","b",,"c",,"d",,,"e","f","g","h"} (# of points) - X : 0.5 to 12.5 (number flagged bad) - 4.000000 -list b[i=@nbd] - VARIABLE : { 3, 3 ,, 3 ,, 3 ,,, 3, 3, 3, 3} (# of points) - X : 0.5 to 12.5 (number flagged bad) - 4.000000 - -define axis/x=1:3:1 xax -define axis/y=1:4:1 yax -let v = x[gx=xax] + y[gy=yax] - -let av = reshape (a,v) -let bv = reshape (b,v) -list av[i=@ngd] - VARIABLE : RESHAPE (A,V) (# of points) - SUBSET : 4 points (Y) - X : 0.5 to 3.5 (number of valid) - 1 / 1: 2.000000 - 2 / 2: 2.000000 - 3 / 3: 1.000000 - 4 / 4: 3.000000 -list bv[i=@ngd] - VARIABLE : RESHAPE (B,V) (# of points) - SUBSET : 4 points (Y) - X : 0.5 to 3.5 (number of valid) - 1 / 1: 2.000000 - 2 / 2: 2.000000 - 3 / 3: 1.000000 - 4 / 4: 3.000000 -list av[j=@ngd] - VARIABLE : RESHAPE (A,V) (# of points) - SUBSET : 3 points (X) - Y : 0.5 to 4.5 (number of valid) - 1 / 1: 3.000000 - 2 / 2: 2.000000 - 3 / 3: 3.000000 -list bv[j=@ngd] - VARIABLE : RESHAPE (B,V) (# of points) - SUBSET : 3 points (X) - Y : 0.5 to 4.5 (number of valid) - 1 / 1: 3.000000 - 2 / 2: 2.000000 - 3 / 3: 3.000000 -list av[i=@ngd,j=@ngd] - VARIABLE : RESHAPE (A,V) - X : 0.5 to 3.5 (XY # valid) - Y : 0.5 to 4.5 (XY # valid) - 8.000000 -list bv[i=@ngd,j=@ngd] - VARIABLE : RESHAPE (B,V) - X : 0.5 to 3.5 (XY # valid) - Y : 0.5 to 4.5 (XY # valid) - 8.000000 - - -define axis/x=1:3:1 xax -define axis/z=1:4:1 zax -let v = x[gx=xax] + z[gz=zax] - -let av = reshape (a,v) -list av[i=@nbd] - VARIABLE : RESHAPE (A,V) (# of points) - SUBSET : 4 points (Z) - X : 0.5 to 3.5 (number flagged bad) - 1 / 1: 1.000000 - 2 / 2: 1.000000 - 3 / 3: 2.000000 - 4 / 4: 0.000000 -list bv[i=@nbd] - VARIABLE : RESHAPE (B,V) (# of points) - SUBSET : 4 points (Z) - X : 0.5 to 3.5 (number flagged bad) - 1 / 1: 1.000000 - 2 / 2: 1.000000 - 3 / 3: 2.000000 - 4 / 4: 0.000000 -list av[k=@nbd] - VARIABLE : RESHAPE (A,V) (# of points) - SUBSET : 3 points (X) - Z : 0.5 to 4.5 (number flagged bad) - 1 / 1: 1.000000 - 2 / 2: 2.000000 - 3 / 3: 1.000000 -list bv[k=@nbd] - VARIABLE : RESHAPE (B,V) (# of points) - SUBSET : 3 points (X) - Z : 0.5 to 4.5 (number flagged bad) - 1 / 1: 1.000000 - 2 / 2: 2.000000 - 3 / 3: 1.000000 -list av[i=@nbd,k=@nbd] - VARIABLE : RESHAPE (A,V) - X : 0.5 to 3.5 (XZ # bad) - Z : 0.5 to 4.5 (XZ # bad) - 4.000000 -list bv[i=@nbd,k=@nbd] - VARIABLE : RESHAPE (B,V) - X : 0.5 to 3.5 (XZ # bad) - Z : 0.5 to 4.5 (XZ # bad) - 4.000000 - -define axis/x=1:3:1 xax -define axis/t=1:4:1 tax -let v = x[gx=xax] + t[gt=tax] - -let av = reshape (a,v) -list av[i=@ngd] - VARIABLE : RESHAPE (A,V) (# of points) - SUBSET : 4 points (T) - X : 0.5 to 3.5 (number of valid) - 1 / 1: 2.000000 - 2 / 2: 2.000000 - 3 / 3: 1.000000 - 4 / 4: 3.000000 -list bv[i=@ngd] - VARIABLE : RESHAPE (B,V) (# of points) - SUBSET : 4 points (T) - X : 0.5 to 3.5 (number of valid) - 1 / 1: 2.000000 - 2 / 2: 2.000000 - 3 / 3: 1.000000 - 4 / 4: 3.000000 -list av[L=@ngd] - VARIABLE : RESHAPE (A,V) (# of points) - SUBSET : 3 points (X) - T : 0.5 to 4.5 (number of valid) - 1 / 1: 3.000000 - 2 / 2: 2.000000 - 3 / 3: 3.000000 -list bv[L=@ngd] - VARIABLE : RESHAPE (B,V) (# of points) - SUBSET : 3 points (X) - T : 0.5 to 4.5 (number of valid) - 1 / 1: 3.000000 - 2 / 2: 2.000000 - 3 / 3: 3.000000 -list av[i=@ngd,L=@ngd] - VARIABLE : RESHAPE (A,V) - X : 0.5 to 3.5 (XT # valid) - T : 0.5 to 4.5 (XT # valid) - 8.000000 -list bv[i=@ngd,L=@ngd] - VARIABLE : RESHAPE (B,V) - X : 0.5 to 3.5 (XT # valid) - T : 0.5 to 4.5 (XT # valid) - 8.000000 - -!4D variable -let a = {"a","b",,"c",,"d",,,"e","f","g","h","ab","bb",,"cb",,"db",,,"eb","fb","gb","hb"} -let b = {3,3,,3,,3,,,3,3,3,3,3,3,,3,,3,,,3,3,3,3} - -define axis/x=1:2:1 xax -define axis/y=1:2:1 yax -define axis/z=1:3:1 zax -define axis/t=1:2:1 tax -let v = x[gx=xax] + y[gy=yax] + z[gz=zax] + t[gt=tax] - -let av = reshape (a,v) -list av[i=@nbd] - VARIABLE : RESHAPE (A,V) (# of points) - SUBSET : 2 by 3 by 2 points (Y-Z-T) - X : 0.5 to 2.5 (number flagged bad) - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 0.000000 1.000000 - 2 / 2: 1.000000 2.000000 - 3 / 3: 0.000000 0.000000 - ---- L:2 T: 2 - 1 / 1: 0.000000 1.000000 - 2 / 2: 1.000000 2.000000 - 3 / 3: 0.000000 0.000000 -list bv[i=@nbd] - VARIABLE : RESHAPE (B,V) (# of points) - SUBSET : 2 by 3 by 2 points (Y-Z-T) - X : 0.5 to 2.5 (number flagged bad) - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 0.000000 1.000000 - 2 / 2: 1.000000 2.000000 - 3 / 3: 0.000000 0.000000 - ---- L:2 T: 2 - 1 / 1: 0.000000 1.000000 - 2 / 2: 1.000000 2.000000 - 3 / 3: 0.000000 0.000000 -list av[j=@nbd] - VARIABLE : RESHAPE (A,V) (# of points) - SUBSET : 2 by 3 by 2 points (X-Z-T) - Y : 0.5 to 2.5 (number flagged bad) - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 1.000000 0.000000 - 2 / 2: 2.000000 1.000000 - 3 / 3: 0.000000 0.000000 - ---- L:2 T: 2 - 1 / 1: 1.000000 0.000000 - 2 / 2: 2.000000 1.000000 - 3 / 3: 0.000000 0.000000 -list bv[j=@nbd] - VARIABLE : RESHAPE (B,V) (# of points) - SUBSET : 2 by 3 by 2 points (X-Z-T) - Y : 0.5 to 2.5 (number flagged bad) - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 1.000000 0.000000 - 2 / 2: 2.000000 1.000000 - 3 / 3: 0.000000 0.000000 - ---- L:2 T: 2 - 1 / 1: 1.000000 0.000000 - 2 / 2: 2.000000 1.000000 - 3 / 3: 0.000000 0.000000 -list av[k=@ngd] - VARIABLE : RESHAPE (A,V) (# of points) - SUBSET : 2 by 2 by 2 points (X-Y-T) - Z : 0.5 to 3.5 (number of valid) - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 2.000000 3.000000 - 2 / 2: 1.000000 2.000000 - ---- L:2 T: 2 - 1 / 1: 2.000000 3.000000 - 2 / 2: 1.000000 2.000000 -list bv[k=@ngd] - VARIABLE : RESHAPE (B,V) (# of points) - SUBSET : 2 by 2 by 2 points (X-Y-T) - Z : 0.5 to 3.5 (number of valid) - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: 2.000000 3.000000 - 2 / 2: 1.000000 2.000000 - ---- L:2 T: 2 - 1 / 1: 2.000000 3.000000 - 2 / 2: 1.000000 2.000000 -list av[L=@ngd] - VARIABLE : RESHAPE (A,V) (# of points) - SUBSET : 2 by 2 by 3 points (X-Y-Z) - T : 0.5 to 2.5 (number of valid) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 2.000000 2.000000 - 2 / 2: 0.000000 2.000000 - ---- K:2 Z: 2 - 1 / 1: 0.000000 2.000000 - 2 / 2: 0.000000 0.000000 - ---- K:3 Z: 3 - 1 / 1: 2.000000 2.000000 - 2 / 2: 2.000000 2.000000 -list bv[L=@ngd] - VARIABLE : RESHAPE (B,V) (# of points) - SUBSET : 2 by 2 by 3 points (X-Y-Z) - T : 0.5 to 2.5 (number of valid) - 1 2 - 1 2 - ---- K:1 Z: 1 - 1 / 1: 2.000000 2.000000 - 2 / 2: 0.000000 2.000000 - ---- K:2 Z: 2 - 1 / 1: 0.000000 2.000000 - 2 / 2: 0.000000 0.000000 - ---- K:3 Z: 3 - 1 / 1: 2.000000 2.000000 - 2 / 2: 2.000000 2.000000 - -list av[i=@nbd,j=@nbd,k=@nbd] - VARIABLE : RESHAPE (A,V) - SUBSET : 2 points (T) - X : 0.5 to 2.5 (XYZ # bad) - Y : 0.5 to 2.5 (XYZ # bad) - Z : 0.5 to 3.5 (XYZ # bad) - 1 / 1: 4.000000 - 2 / 2: 4.000000 -list bv[i=@nbd,j=@nbd,k=@nbd] - VARIABLE : RESHAPE (B,V) - SUBSET : 2 points (T) - X : 0.5 to 2.5 (XYZ # bad) - Y : 0.5 to 2.5 (XYZ # bad) - Z : 0.5 to 3.5 (XYZ # bad) - 1 / 1: 4.000000 - 2 / 2: 4.000000 - -list bv[i=@ngd,j=@ngd,k=@ngd,L=@ngd] - VARIABLE : RESHAPE (B,V) - X : 0.5 to 2.5 (XYZT # valid) - Y : 0.5 to 2.5 (XYZT # valid) - Z : 0.5 to 3.5 (XYZT # valid) - T : 0.5 to 2.5 (XYZT # valid) - 16.00000 -list av[i=@ngd,j=@ngd,k=@ngd,L=@ngd] - VARIABLE : RESHAPE (A,V) - X : 0.5 to 2.5 (XYZT # valid) - Y : 0.5 to 2.5 (XYZT # valid) - Z : 0.5 to 3.5 (XYZT # valid) - T : 0.5 to 2.5 (XYZT # valid) - 16.00000 - -GO bn_reset bn_cat_string -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cat_string -GO bn_cat_string -! bn_cat_string.jnl -! Test concatenation functions for string variables -! ACM nov 08 See bug 1577 - -let a = xsequence({"Q", "R", "S"}) -let b = xsequence({"U", "V", "W"}) -list xcat(a,b) - VARIABLE : XCAT(A,B) - SUBSET : 6 points (X) - 1 / 1:"Q" - 2 / 2:"R" - 3 / 3:"S" - 4 / 4:"U" - 5 / 5:"V" - 6 / 6:"W" - -! (when xcat is called, and its args are strings, -! Ferret actually runs xcat_string) -let a = xsequence({"Q", "R", "S"}) -let b = xsequence({"U", "V", "W"}) -list xcat_str(a,b) - VARIABLE : XCAT_STR(A,B) - SUBSET : 6 points (X) - 1 / 1:"Q" - 2 / 2:"R" - 3 / 3:"S" - 4 / 4:"U" - 5 / 5:"V" - 6 / 6:"W" - -let a = ysequence({"Q", "R", "S"}) -let b = ysequence({"U", "V", "W"}) -list ycat(a,b) - VARIABLE : YCAT(A,B) - SUBSET : 6 points (Y) - 1 / 1:"Q" - 2 / 2:"R" - 3 / 3:"S" - 4 / 4:"U" - 5 / 5:"V" - 6 / 6:"W" - -let a = zsequence({"Q", "R", "S"}) -let b = zsequence({"U", "V", "W"}) -list zcat(a,b) - VARIABLE : ZCAT(A,B) - SUBSET : 6 points (Z) - 1 / 1:"Q" - 2 / 2:"R" - 3 / 3:"S" - 4 / 4:"U" - 5 / 5:"V" - 6 / 6:"W" - -let a = tsequence({"Q", "R", "S"}) -let b = tsequence({"U", "V", "W"}) -list tcat(a,b) - VARIABLE : TCAT(A,B) - SUBSET : 6 points (T) - 1 / 1:"Q" - 2 / 2:"R" - 3 / 3:"S" - 4 / 4:"U" - 5 / 5:"V" - 6 / 6:"W" - -GO bn_reset bn_sort_strings -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_sort_strings -GO bn_sort_strings -! bn_sort_strings.jnl -! 11/08 acm - -! show func/detail now shows the alternative function for -! other arg types, if it exists. - -SHOW FUNC/DETAIL sorti -SORTI(DAT) - Returns indices of data, sorted on the I axis in increasing order - Axes of result: - X: ABSTRACT (result will occupy indices 1...N) - Y: inherited from argument(s) - Z: inherited from argument(s) - T: inherited from argument(s) - E: inherited from argument(s) - F: inherited from argument(s) - DAT: variable to sort in I (FLOAT) - Influence on output axes: - X: no influence (indicate argument limits with "[]") - Y: passed to result grid - Z: passed to result grid - T: passed to result grid - E: passed to result grid - F: passed to result grid - Alternative function called for other argument types: SORTI_STR - - -let ai = {"a rat in the house will eat the zucchini", \ - "a rat in the house will eat the ice cream", \ - "ze rats in the house will eat the ice cream",\ - "A rat in the house will eat the ICE CREAM" } - -let bi = {"AB", "C", "", "aa", "abc", ,"0"} - -let indx_ai = SORTI_STR(ai) -list indx_ai, samplei(ai,indx_ai) - X: 0.5 to 4.5 - Column 1: INDX_AI is SORTI_STR(AI) - Column 2: EX#2 is SAMPLEI(AI,INDX_AI) - INDX_AI EX#2 -1 / 1: 4.000000 "A rat in the house will eat the ICE CREAM" -2 / 2: 2.000000 "a rat in the house will eat the ice cream" -3 / 3: 1.000000 "a rat in the house will eat the zucchini" -4 / 4: 3.000000 "ze rats in the house will eat the ice cream" - -let indx_bi = SORTI_STR(bi) -list indx_bi, samplei(bi,indx_bi) - X: 0.5 to 7.5 - Column 1: INDX_BI is SORTI_STR(BI) - Column 2: EX#2 is SAMPLEI(BI,INDX_BI) - INDX_BI EX#2 -1 / 1: 7.000000 "0" -2 / 2: 1.000000 "AB" -3 / 3: 2.000000 "C" -4 / 4: 4.000000 "aa" -5 / 5: 5.000000 "abc" -6 / 6: .... "" -7 / 7: .... "" - -! Calling via SORTI -let indx_ai = SORTI(ai) -list indx_ai, samplei(ai,indx_ai) - X: 0.5 to 4.5 - Column 1: INDX_AI is SORTI(AI) - Column 2: EX#2 is SAMPLEI(AI,INDX_AI) - INDX_AI EX#2 -1 / 1: 4.000000 "A rat in the house will eat the ICE CREAM" -2 / 2: 2.000000 "a rat in the house will eat the ice cream" -3 / 3: 1.000000 "a rat in the house will eat the zucchini" -4 / 4: 3.000000 "ze rats in the house will eat the ice cream" - -let indx_bi = SORTI(bi) -list indx_bi, samplei(bi,indx_bi) - X: 0.5 to 7.5 - Column 1: INDX_BI is SORTI(BI) - Column 2: EX#2 is SAMPLEI(BI,INDX_BI) - INDX_BI EX#2 -1 / 1: 7.000000 "0" -2 / 2: 1.000000 "AB" -3 / 3: 2.000000 "C" -4 / 4: 4.000000 "aa" -5 / 5: 5.000000 "abc" -6 / 6: .... "" -7 / 7: .... "" - - -! SORTJ -let aj = ysequence(ai) -let bj = ysequence(bi) - -let indx_aj = SORTJ(aj) -list indx_aj, samplej(aj,indx_aj) - Y: 0.5 to 4.5 - Column 1: INDX_AJ is SORTJ(AJ) - Column 2: EX#2 is SAMPLEJ(AJ,INDX_AJ) - INDX_AJ EX#2 -1 / 1: 4.000000 "A rat in the house will eat the ICE CREAM" -2 / 2: 2.000000 "a rat in the house will eat the ice cream" -3 / 3: 1.000000 "a rat in the house will eat the zucchini" -4 / 4: 3.000000 "ze rats in the house will eat the ice cream" - -let indx_bj = SORTJ(bj) -list indx_bj, samplej(bj,indx_bj) - Y: 0.5 to 7.5 - Column 1: INDX_BJ is SORTJ(BJ) - Column 2: EX#2 is SAMPLEJ(BJ,INDX_BJ) - INDX_BJ EX#2 -1 / 1: 7.000000 "0" -2 / 2: 1.000000 "AB" -3 / 3: 2.000000 "C" -4 / 4: 4.000000 "aa" -5 / 5: 5.000000 "abc" -6 / 6: .... "" -7 / 7: .... "" - - -! SORTK -let ak = zsequence(ai) -let bk = zsequence(bi) - -let indx_ak = SORTK(ak) -list indx_ak, samplek(ak,indx_ak) - Z: 0.5 to 4.5 - Column 1: INDX_AK is SORTK(AK) - Column 2: EX#2 is SAMPLEK(AK,INDX_AK) - INDX_AK EX#2 -1 / 1: 4.000000 "A rat in the house will eat the ICE CREAM" -2 / 2: 2.000000 "a rat in the house will eat the ice cream" -3 / 3: 1.000000 "a rat in the house will eat the zucchini" -4 / 4: 3.000000 "ze rats in the house will eat the ice cream" - -let indx_bk = SORTK(bk) -list indx_bk, samplek(bk,indx_bk) - Z: 0.5 to 7.5 - Column 1: INDX_BK is SORTK(BK) - Column 2: EX#2 is SAMPLEK(BK,INDX_BK) - INDX_BK EX#2 -1 / 1: 7.000000 "0" -2 / 2: 1.000000 "AB" -3 / 3: 2.000000 "C" -4 / 4: 4.000000 "aa" -5 / 5: 5.000000 "abc" -6 / 6: .... "" -7 / 7: .... "" - - -! SORTL -let al = tsequence(ai) -let bl = tsequence(bi) - -let indx_al = SORTL(al) -list indx_al, samplel(al,indx_al) - T: 0.5 to 4.5 - Column 1: INDX_AL is SORTL(AL) - Column 2: EX#2 is SAMPLEL(AL,INDX_AL) - INDX_AL EX#2 -1 / 1: 4.000000 "A rat in the house will eat the ICE CREAM" -2 / 2: 2.000000 "a rat in the house will eat the ice cream" -3 / 3: 1.000000 "a rat in the house will eat the zucchini" -4 / 4: 3.000000 "ze rats in the house will eat the ice cream" - -let indx_bl = SORTL(bl) -list indx_bl, samplel(bl,indx_bl) - T: 0.5 to 7.5 - Column 1: INDX_BL is SORTL(BL) - Column 2: EX#2 is SAMPLEL(BL,INDX_BL) - INDX_BL EX#2 -1 / 1: 7.000000 "0" -2 / 2: 1.000000 "AB" -3 / 3: 2.000000 "C" -4 / 4: 4.000000 "aa" -5 / 5: 5.000000 "abc" -6 / 6: .... "" -7 / 7: .... "" - - -GO bn_reset bn_samplexyt -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_samplexyt -GO bn_samplexyt -! bn_samplexyt.jnl -! 1/2009 - -! Check the SAMPLEXYT function, should give missing results for T sample points -! that lie beyond the ends of the T axis of the grid being sampled - -define axis/x=0:360:180/units=longitude/edges/modulo x1 -define axis/y=-90:90:45/units=latitude/edges y1 -define axis/t0=1-jan-1990/t=1-jan-1991:31-dec-1991:1/units=days/edges t1 -define grid/x=x1/y=y1/t=t1 g1 - -let my_data = 0*x[g=g1]+y[g=g1]+t[g=g1] - -DEFINE AXIS/T0=1-JAN-1990/T=1-JAN-1990:31-DEC-1992:40/UNITS=DAYS/EDGES TSAMPLES -LET TPTS = XSEQUENCE(T[GT=TSAMPLES]) -LET YPTS = XSEQUENCE((RANDU(TPTS)-0.5)*90) -LET XPTS = 180 + 0*YPTS -LET sampl_pts = SAMPLEXYT(my_data,xpts,ypts,tpts) - -! NOTE THAT THE SAMPLEXYT SHOULD FLAG POINTS BEFORE THE START OF THE TIME INTERVAL -! AND ALOS THOSE THAT LIE ABOVE THE END OF THE TIME INTERVAL - -! CHECK THE RESULTS WITH A LISTING -list ypts, tpts, sampl_pts - X: 0.5 to 28.5 - Column 1: YPTS is XSEQUENCE((RANDU(TPTS)-0.5)*90) - Column 2: TPTS is XSEQUENCE(T[GT=TSAMPLES]) - Column 3: SAMPL_PTS is SAMPLEXYT(MY_DATA,XPTS,YPTS,TPTS) - YPTS TPTS SAMPL_PTS -1 / 1: 20.53799 20.000 .... -2 / 2: -29.07481 60.000 .... -3 / 3: 26.64251 100.000 .... -4 / 4: -28.97490 140.000 .... -5 / 5: -17.10210 180.000 .... -6 / 6: -8.79040 220.000 .... -7 / 7: -26.48790 260.000 .... -8 / 8: -9.00391 300.000 .... -9 / 9: -19.19385 340.000 .... -10 / 10: -19.84003 380.000 360.6600 -11 / 11: -44.10992 420.000 376.3901 -12 / 12: 34.07387 460.000 494.5739 -13 / 13: 34.62830 500.000 535.1283 -14 / 14: -6.59559 540.000 533.9044 -15 / 15: -39.01164 580.000 541.4884 -16 / 16: -25.63370 620.000 594.8663 -17 / 17: -22.96677 660.000 637.5332 -18 / 18: -30.90969 700.000 669.5903 -19 / 19: -22.52078 740.000 .... -20 / 20: -20.65415 780.000 .... -21 / 21: -41.65880 820.000 .... -22 / 22: 39.13533 860.000 .... -23 / 23: 22.88071 900.000 .... -24 / 24: -41.03287 940.000 .... -25 / 25: 33.34976 980.000 .... -26 / 26: 22.53505 1020.000 .... -27 / 27: 13.97536 1060.000 .... -28 / 28: 21.99063 1100.000 .... - -! AND HERE WE SHOW IT GRAPHICALLY -cancel mode calendar -set view upper -shade/hlim=20:1100 my_data[x=180] - -set view lower -plot/vs/xlim=20:1100/ylim=0:1000 tpts, 0*MISSING(sampl_pts,0) + 500 -plot/vs/color=red/over tpts, sampl_pts - - -set mode calendar - -GO bn_reset bn_last_go_file.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_last_go_file.jnl -GO bn_last_go_file.jnl -! bn_last_go_file.jnl -! test the automatically-defined symbol LAST_GO_FILE - -show sym last_go_file -LAST_GO_FILE = "./v6jnls/bn_last_go_file.jnl" - - -GO bn_reset bn_cancel_upcase_uservar.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cancel_upcase_uservar.jnl -GO bn_cancel_upcase_uservar.jnl -! bn_cancel_upcase_uservar.jnl -! -! Ferret v6.2 -! MODE upcase_only cancelled, now writes lowercase -! spelling for user-defined variables and for coordinate -! variables even coming from two different datasets. - -CANCEL MODE upcase - -! User variable with lowercase letters in the name - -DEFINE AXIS/t=1-jan-1999:31-jan-1999:1/units=days/t0=31-dec-1998 tday -LET MyUpperLowerCaseVar = x[x=1:10] + t[gt=tday] -save/file=a.nc/clobber MyUpperLowerCaseVar - -! Open two datafiles. These have variable and axis -! names in lowercase. - -USE a1478.nc -USE a_cartesian_bug1179.nc - -! Define an output variable with some axes from each dataset. -LET/D=2 zvar = z[gz=temp[d=2]] -LET newvar = 0*zvar[d=2] + olr[d=1] -SET ATT/LIKE=olr[d=1] newvar -SET ATT/OUTPUT=all newvar - -SAVE/APPEND/FILE=a.nc newvar -SP ncdump -h a.nc >> all_ncdump.out - -SET MODE/LAST upcase_output - -GO bn_reset bn_cdf_keepax.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cdf_keepax.jnl -GO bn_cdf_keepax.jnl -! bn320_cdf -! benchmark to test netCDF input and output -! This is the same as bn_cdf with /KEEP_AXNAMES added to SAVE commands. - -! test many simultaneous netCDF files -GO bn_cdf_keepax.sub1 -! bn230_cdf.sub1 -! benchmark to test multiple netCDF simultaneous accesses -! requires version 2.30 or later -! 6/92 - -! V5 *sh* 7/99 -- clean up files before writing - -cancel region -canc var/all -cancel data/all - -! delete old ones -sp rm -f test0[a-p].cdf - -! write a bunch of em -list/format=cdf/keep_axnames/append/l=1:500/file=test0a.cdf l -list/format=cdf/keep_axnames/append/l=1:500/file=test0b.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0c.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0d.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0e.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0f.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0g.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0h.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0i.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0j.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0k.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0l.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0m.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0n.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0o.cdf/rigid l -list/format=cdf/keep_axnames/append/l=1:500/file=test0p.cdf/rigid l - -! initialize all at once -set data/format=cdf test0a, test0b, test0c, test0d, test0e, test0f, test0g, test0h, test0i, test0j, test0k, test0l, test0n, test0m, test0o, test0p -show data 1 - currently SET data sets: - 1> ./test0a.cdf - name title I J K L - L_ L ... ... ... 1:500 - (axis ABSTRACT) - -show data/br - currently SET data sets: - 1> ./test0a.cdf - 2> ./test0b.cdf - 3> ./test0c.cdf - 4> ./test0d.cdf - 5> ./test0e.cdf - 6> ./test0f.cdf - 7> ./test0g.cdf - 8> ./test0h.cdf - 9> ./test0i.cdf - 10> ./test0j.cdf - 11> ./test0k.cdf - 12> ./test0l.cdf - 13> ./test0n.cdf - 14> ./test0m.cdf - 15> ./test0o.cdf - 16> ./test0p.cdf (default) - -! test access to one -stat l_[d=1] - - L - axis ABSTRACT - X: N/A - Y: N/A - Z: N/A - T: 0.5 to 500.5 - E: N/A - F: N/A - DATA SET: ./test0a.cdf - - Total # of data points: 500 (1*1*1*500*1*1) - # flagged as bad data: 0 - Minimum value: 1 - Maximum value: 500 - Mean value: 250.5 (unweighted average) - Standard deviation: 144.48 - -! test access to all -stat l_[d=1]-l_[d=2]+l_[d=3]-l_[d=4]+l_[d=5]-l_[d=6]+l_[d=7]-l_[d=8]+l_[d=9]-l_[d=10]+l_[d=11]-l_[d=12]+l_[d=13]-l_[d=14]+l_[d=15]-l_[d=16] - - L_[D=test0a]-L_[D=test0b]+L_[D=test0c]-L_[D=test0d]+L_[D=test0e]-L_[D=test0f]+L_[D=test0g]-L_[D=test0h]+L_[D=test0i]-L_[D=test0j]+L_[D=test0k]-L_[D=test0l]+L_[D=test0n]-L_[D=test0m - X: N/A - Y: N/A - Z: N/A - T: 0.5 to 500.5 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 500 (1*1*1*500*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 -cancel data/all - -! test abstract variable io -GO bn_cdf_keepax.sub2 -! bn230_cdf.sub2 -! benchmark to test abstract variable netCDF input and output -! requires version 2.30 or later -! 6/92 - -! V5 *sh* 7/99 added /CLOBBER - -cancel region -canc var/all -cancel data/all - -! define a realistic time series grid -define axis/t="1-jan-1902":"1-jan-2010":1/unit=day tcentury -define grid/like=abstract/t=tcentury gcentury -let tlong = t[g=gcentury] - -let i1 = i -let j1 = j -let k1 = k -let l1 = l[g=gcentury] -let l2 = l -let ij = i+j -let ik = i+k -let il = i+l1 -let jk = j+k -let jl = j+l1 -let kl = k+l1 -let ijk = i+j+k -let ikl = i+k+l1 -let ijl = i+j+l1 -let jkl = j+k+l1 -let ijkl = i+j+k+l1 -let ijk2 = i+j+k -let ikl2 = i+k+l1 -let ijl2 = i+j+l1 -let jkl2 = j+k+l1 -let iavejkl = ijkl[i=@ave] -let ijavekl = ijkl[j=@ave] -let ijkavel = ijkl[k=@ave] -let ijklave = ijkl[l=@ave] - -! a bunch of basic geometries -! 1d -list/format=cdf/keep_axnames/i=1:10/clobber/file=test_abs.cdf i1 ! not /APPEND - must be new -list/format=cdf/keep_axnames/j=1:20/append/file=test_abs.cdf j1 -list/format=cdf/keep_axnames/k=1:100/append/file=test_abs.cdf k1 -list/format=cdf/keep_axnames/l=1:10/append/file=test_abs.cdf l1 ! record axis -list/format=cdf/keep_axnames/l=1:10/append/file=test_abs.cdf l2 ! rigid axis - -! 2D -list/format=cdf/keep_axnames/i=1:10/j=1:20/append/file=test_abs.cdf ij -list/format=cdf/keep_axnames/i=1:10/k=1:100/append/file=test_abs.cdf ik -list/format=cdf/keep_axnames/i=1:10/l=5:10/append/file=test_abs.cdf il -list/format=cdf/keep_axnames/k=1:100/j=1:20/append/file=test_abs.cdf jk - -!3D -set region/i=1:10/j=1:20/k=1:100/l=4:8 -list/format=cdf/keep_axnames/append/file=test_abs.cdf ijk -list/format=cdf/keep_axnames/append/file=test_abs.cdf ikl -list/format=cdf/keep_axnames/append/file=test_abs.cdf ijl -list/format=cdf/keep_axnames/append/file=test_abs.cdf jkl - -!4D -list/format=cdf/keep_axnames/append/file=test_abs.cdf ijkl - -! extend along time axis and write sub-regions -! (note: this may leave undefined regions in other variables) -list/format=cdf/keep_axnames/append/file=test_abs.cdf/i=1:5 /j=1:5 /l=11:12 ijl -list/format=cdf/keep_axnames/append/file=test_abs.cdf/i=6:10/j=1:5 /l=11:12 ijl -list/format=cdf/keep_axnames/append/file=test_abs.cdf/i=1:5 /j=6:10/l=11:12 ijl -list/format=cdf/keep_axnames/append/file=test_abs.cdf/i=6:10/j=6:10/l=11:12 ijl - -! rewrite a sub-region in the middle of the data -list/format=cdf/keep_axnames/append/file=test_abs.cdf/i=6:8/j=6:8/l=8:10/k=3:5 ijkl - -! check documentation of transforms -list/format=cdf/keep_axnames/append/file=test_abs.cdf ijk2[i=@ave] -list/format=cdf/keep_axnames/append/file=test_abs.cdf ikl2[i=@ave,k=@sbx:3] -list/format=cdf/keep_axnames/append/file=test_abs.cdf ijl2[i=@ave,j=@ave] -list/format=cdf/keep_axnames/append/file=test_abs.cdf jkl2[k=@ave,l=@ave] -list/format=cdf/keep_axnames/append/file=test_abs.cdf iavejkl -list/format=cdf/keep_axnames/append/file=test_abs.cdf ijavekl -list/format=cdf/keep_axnames/append/file=test_abs.cdf ijkavel -list/format=cdf/keep_axnames/append/file=test_abs.cdf ijklave - -! look at what we've created - time axis should be regular -set data/format=cdf test_abs -show data/full - currently SET data sets: - 1> ./test_abs.cdf (default) - - name title I J K L - I1 I 1:10 ... ... ... - on grid GEU1 with -1.E+34 for missing data - X=0.5:10.5 - J1 J ... 1:20 ... ... - on grid GEU2 with -1.E+34 for missing data - Y=0.5:20.5 - K1 K ... ... 1:100 ... - on grid GEU3 with -1.E+34 for missing data - Z=0.5:100.5 - L1 L[G=GCENTURY] ... ... ... 1:12 - on grid GEU4 with -1.E+34 for missing data - - L2 L ... ... ... 1:10 - on grid GEU5 with -1.E+34 for missing data - - IJ I+J 1:10 1:20 ... ... - on grid GEU6 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 - IK I+K 1:10 ... 1:100 ... - on grid GEU7 with -1.E+34 for missing data - X=0.5:10.5 Z=0.5:100.5 - IL I+L1 1:10 ... ... 1:12 - on grid GEU8 with -1.E+34 for missing data - X=0.5:10.5 - JK J+K ... 1:20 1:100 ... - on grid GEU9 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IJK I+J+K 1:10 1:20 1:100 ... - on grid GEU10 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 Z=0.5:100.5 - IKL I+K+L1 1:10 ... 1:100 1:12 - on grid GEU11 with -1.E+34 for missing data - X=0.5:10.5 Z=0.5:100.5 - IJL I+J+L1 1:10 1:20 ... 1:12 - on grid GEU12 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 - JKL J+K+L1 ... 1:20 1:100 1:12 - on grid GEU13 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IJKL I+J+K+L1 1:10 1:20 1:100 1:12 - on grid GEU14 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 Z=0.5:100.5 - IJK2 I+J+K ... 1:20 1:100 ... - (X=0.5:10.5@AVE) - on grid GEU9 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IKL2 I+K+L1 ... ... 1:100 1:12 - (X=0.5:10.5@AVE, box smoothed by 3 pts on Z) - on grid GEU15 with -1.E+34 for missing data - Z=0.5:100.5 - IJL2 I+J+L1 ... ... ... 1:12 - (X=0.5:10.5@AV4, Y=0.5:20.5@AV4) - on grid GEU4 with -1.E+34 for missing data - - JKL2 J+K+L1 ... 1:20 ... ... - (Z=0.5:100.5@AV4, T=03-JAN-1902 12:00:08-JAN-1902 12:00@AV4) - on grid GEU2 with -1.E+34 for missing data - Y=0.5:20.5 - IAVEJKL IJKL[I=@AVE] ... 1:20 1:100 1:12 - (X=0.5:10.5) - on grid GEU13 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IJAVEKL IJKL[J=@AVE] 1:10 ... 1:100 1:12 - (Y=0.5:20.5) - on grid GEU11 with -1.E+34 for missing data - X=0.5:10.5 Z=0.5:100.5 - IJKAVEL IJKL[K=@AVE] 1:10 1:20 ... 1:12 - (Z=0.5:100.5) - on grid GEU12 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 - IJKLAVE IJKL[L=@AVE] 1:10 1:20 1:100 ... - (T=03-JAN-1902 12:00:08-JAN-1902 12:00) - on grid GEU10 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 Z=0.5:100.5 - - time range: 01-JAN-1902 00:00 to 12-JAN-1902 00:00 - -cancel variable ijkl -show grid ijkl - GRID GEU14 - name axis # pts start end subset - XAX1 X 10 r 1 10 full - YAX1 Y 20 r 1 20 full - ZAX1 Z 100 r 1 100 full - TCENTURY1 TIME 12 r 01-JAN-1902 00:00 12-JAN-1902 00:00 full -cancel data test_abs - -! make the time axis irregular by leaving out l=13 -list/format=cdf/keep_axnames/l=14:16/append/file=test_abs.cdf l1 -set data/format=cdf test_abs -show data/full - currently SET data sets: - 1> ./test_abs.cdf (default) - - name title I J K L - I1 I 1:10 ... ... ... - on grid GEU1 with -1.E+34 for missing data - X=0.5:10.5 - J1 J ... 1:20 ... ... - on grid GEU2 with -1.E+34 for missing data - Y=0.5:20.5 - K1 K ... ... 1:100 ... - on grid GEU3 with -1.E+34 for missing data - Z=0.5:100.5 - L1 L[G=GCENTURY] ... ... ... 1:15 - on grid GEU4 with -1.E+34 for missing data - - L2 L ... ... ... 1:10 - on grid GEU5 with -1.E+34 for missing data - - IJ I+J 1:10 1:20 ... ... - on grid GEU6 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 - IK I+K 1:10 ... 1:100 ... - on grid GEU7 with -1.E+34 for missing data - X=0.5:10.5 Z=0.5:100.5 - IL I+L1 1:10 ... ... 1:15 - on grid GEU8 with -1.E+34 for missing data - X=0.5:10.5 - JK J+K ... 1:20 1:100 ... - on grid GEU9 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IJK I+J+K 1:10 1:20 1:100 ... - on grid GEU10 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 Z=0.5:100.5 - IKL I+K+L1 1:10 ... 1:100 1:15 - on grid GEU11 with -1.E+34 for missing data - X=0.5:10.5 Z=0.5:100.5 - IJL I+J+L1 1:10 1:20 ... 1:15 - on grid GEU12 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 - JKL J+K+L1 ... 1:20 1:100 1:15 - on grid GEU13 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IJKL I+J+K+L1 1:10 1:20 1:100 1:15 - on grid GEU14 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 Z=0.5:100.5 - IJK2 I+J+K ... 1:20 1:100 ... - (X=0.5:10.5@AVE) - on grid GEU9 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IKL2 I+K+L1 ... ... 1:100 1:15 - (X=0.5:10.5@AVE, box smoothed by 3 pts on Z) - on grid GEU15 with -1.E+34 for missing data - Z=0.5:100.5 - IJL2 I+J+L1 ... ... ... 1:15 - (X=0.5:10.5@AV4, Y=0.5:20.5@AV4) - on grid GEU4 with -1.E+34 for missing data - - JKL2 J+K+L1 ... 1:20 ... ... - (Z=0.5:100.5@AV4, T=03-JAN-1902 12:00:08-JAN-1902 12:00@AV4) - on grid GEU2 with -1.E+34 for missing data - Y=0.5:20.5 - IAVEJKL IJKL[I=@AVE] ... 1:20 1:100 1:15 - (X=0.5:10.5) - on grid GEU13 with -1.E+34 for missing data - Y=0.5:20.5 Z=0.5:100.5 - IJAVEKL IJKL[J=@AVE] 1:10 ... 1:100 1:15 - (Y=0.5:20.5) - on grid GEU11 with -1.E+34 for missing data - X=0.5:10.5 Z=0.5:100.5 - IJKAVEL IJKL[K=@AVE] 1:10 1:20 ... 1:15 - (Z=0.5:100.5) - on grid GEU12 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 - IJKLAVE IJKL[L=@AVE] 1:10 1:20 1:100 ... - (T=03-JAN-1902 12:00:08-JAN-1902 12:00) - on grid GEU10 with -1.E+34 for missing data - X=0.5:10.5 Y=0.5:20.5 Z=0.5:100.5 - - time range: 01-JAN-1902 00:00 to 16-JAN-1902 00:00 - -show grid ijkl - GRID GEU14 - name axis # pts start end subset - XAX1 X 10 r 1 10 full - YAX1 Y 20 r 1 20 full - ZAX1 Z 100 r 1 100 full - TCENTURY1 TIME 15 i 01-JAN-1902 00:00 16-JAN-1902 00:00 full - - -! list long time series using a rigid (non-record axis) time axis --> FAST -list/clobber/format=cdf/keep_axnames/l=1:300000/rigid/file=test2.cdf l ! without record dimension -! list time series using the record dimension --> SLOW (1/50th as long axis) -list/clobber/format=cdf/keep_axnames/l=1:5000 l ! auto-filename -list/clobber/format=cdf/keep_axnames/t="1-jan-1902":"1-jan-2010"/rigid tlong ! auto-filename - -! deliberate errors -can dat/all -set mode ignore -list/format=cdf/keep_axnames/l=1:10/file=test_abs.cdf l ! file exists error -list/format=cdf/keep_axnames/i=5:15/l=5:10/append/file=test_abs.cdf il ! inconsistent i limits -list/format=cdf/keep_axnames/i=1:10/j=20:25/append/file=test_abs.cdf ij ! inconsistent j limits -list/format=cdf/keep_axnames/append/file=test_abs.cdf ijl2 ! i and j not avg'd -list/format=cdf/keep_axnames/append/file=test_abs.cdf ijkl[k=@ave] ! k axis averaged -list/format=cdf/keep_axnames/l=13/append/file=test_abs.cdf l1 ! inconsistent time pt -set data/format=cdf test0a, test0b, test0c, test0d, test0e, test0f, test0g, test0h, test0i, test0j, test0k, test0l, test0n, test0m, test0o, test0p -list/clobber/format=cdf/keep_axnames/i=1:10 i ! too many netcdf files -canc data/all -cancel mode ignore - -! show the grids created -cancel variables/all -set data/format=cdf test_abs -show grid j1 jkl jkl2 iavejkl ijkl - GRID GEU2 - name axis # pts start end subset - normal X - YAX1 Y 20 r 1 20 full - normal Z - normal T - GRID GEU13 - name axis # pts start end subset - normal X - YAX1 Y 20 r 1 20 full - ZAX1 Z 100 r 1 100 full - TCENTURY1 TIME 15 i 01-JAN-1902 00:00 16-JAN-1902 00:00 full - GRID GEU2 - name axis # pts start end subset - normal X - YAX1 Y 20 r 1 20 full - normal Z - normal T - GRID GEU13 - name axis # pts start end subset - normal X - YAX1 Y 20 r 1 20 full - ZAX1 Z 100 r 1 100 full - TCENTURY1 TIME 15 i 01-JAN-1902 00:00 16-JAN-1902 00:00 full - GRID GEU14 - name axis # pts start end subset - XAX1 X 10 r 1 10 full - YAX1 Y 20 r 1 20 full - ZAX1 Z 100 r 1 100 full - TCENTURY1 TIME 15 i 01-JAN-1902 00:00 16-JAN-1902 00:00 full -cancel data test_abs - -! test TMAP data io -GO bn_cdf_keepax.sub3 ! matches old outputs by using /HEADING=enhanced -! bn320_cdf.sub3 -! benchmark to test netCDF input and output of TMAP data set variables -! this routine added 1/26/95 to test the SAVE/HEADING=enhanced option - -! V5 *sh* 7/99 added /CLOBBER - -cancel data/all -cancel variables/all -cancel region - -use gtbc011 - -let i1 = x[g=temp,i=1:10] -let j1 = y[g=temp,j=5:10] -let k1 = z[g=u,k=5:15] -let l1 = l[g=u,l=1:3] -let l2 = l -let ij = taux[l=@ave] -let ik = i1+k1 -let il = i1+l1 -let jk = j1+k1 -let jl = j1+l1 -let kl = k1+l1 -let ijk = temp[l=@ave] -let ikl = temp[j=@ave] -let ijl = temp[k=@ave] -let jkl = temp[i=@ave] -let ijkl = u -let ijk2 = temp -let iavejkl = ijkl[i=@ave] -let ijavekl = ijkl[j=@ave] -let ijkavel = ijkl[k=@ave] -let ijklave = ijkl[l=@ave] - -set region/l=1:2 ! i,j, and k unspecified - -! a bunch of basic geometries -! 1d -list/format=cdf/keep_axnames/clobber/file=test_fil0.cdf/heading="enh" i1 ! not /APPEND - must be new -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" j1 -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" k1 -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" l1 ! record axis -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" l2 ! rigid axis - -! 2D -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" ij -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" ik -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" il -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" jk - -!3D -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" ijk -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" ikl -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" ijl -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" jkl - -!4D -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" ijkl - -! extend along time axis and write sub-regions -! (note: this may leave undefined regions in other variables) -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh"/j=1:50/l=2:3 ijl -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh"/j=51:100/l=2:3 ijl - -! rewrite a sub-region in the middle of the data -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh"/j=30:40/k=5/l=1:3 ijkl - -! check documentation of transforms -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" iavejkl -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" ijavekl -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" ijkavel -list/format=cdf/keep_axnames/append/file=test_fil0.cdf/heading="enh" ijklave - -! look at what we've created - time axis should be regular -set data/format=cdf test_fil0 -show data/full - currently SET data sets: - 1> ./data/gtbc011.cdf - - name title I J K L - TEMP TEMPERATURE 70:72 1:100 1:27 1:3 - deg. C on grid PS3DT1 with -1.E+34 for missing data - X=161W:158W Y=30S:50N Z=0:4149 - SALT (SALINITY(ppt) - 35) /1000 70:71 1:100 1:27 1:3 - frac. by wt. less .035 on grid PS3DT1 with 0.01 for missing data - X=161W:159W Y=30S:50N Z=0:4149 - U ZONAL VELOCITY 69:72 1:100 1:27 1:3 - cm/sec on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - V MERIDIONAL VELOCITY 69:72 1:100 1:27 1:3 - cm/sec on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - W VERTICAL VELOCITY 70:71 1:100 1:27 1:3 - cm/sec on grid PS3DW1 with -1.E+34 for missing data - X=161W:159W Y=30S:50N Z=5:4149 - TAUX ZONAL WIND STRESS 69:71 1:100 ... 1:3 - dynes/cm**2 on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - TAUY MERIDIONAL WIND STRESS 69:71 1:100 ... 1:3 - dynes/cm**2 on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - PSI STREAM FUNCTION 69:73 1:100 ... 1:3 - cm**3/sec on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:156.5W Y=28.8S:51.4N - - time range: 15-MAR-1983 10:00 to 15-MAR-1983 12:00 - - 2> ./test_fil0.cdf (default) - - name title I J K L - I1 X[G=TEMP,I=1:10] 1:10 ... ... ... - on grid PS3DT1_NYZT with -1.E+34 for missing data - X=130E:140E - J1 Y[G=TEMP,J=5:10] ... 5:10 ... ... - on grid PS3DT1_NXZT with -1.E+34 for missing data - Y=21.1S:12.5S - K1 Z[G=U,K=5:15] ... ... 5:15 ... - on grid PS3DU1_NXYT with -1.E+34 for missing data - Z=40:190 - L1 L[G=U,L=1:3] ... ... ... 1:3 - on grid GRH1 with -1.E+34 for missing data - - L2 L ... ... ... 1:2 - on grid GRH2 with -1.E+34 for missing data - - IJ TAUX[L=@AVE] 69:71 1:100 ... ... - (T=15-MAR-1983 09:30:15-MAR-1983 11:30) - on grid PS2DU1_NT with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - IK I1+K1 1:10 ... 5:15 ... - on grid G093_NYT with -1.E+34 for missing data - X=130E:140E Z=40:190 - IL I1+L1 1:10 ... ... 1:3 - on grid G093_NYZ with -1.E+34 for missing data - X=130E:140E - JK J1+K1 ... 5:10 5:15 ... - on grid G104_NXT with -1.E+34 for missing data - Y=21.1S:12.5S Z=40:190 - IJK TEMP[L=@AVE] 70:72 1:100 1:27 ... - (T=15-MAR-1983 09:30:15-MAR-1983 11:30) - on grid PS3DT1_NT with -1.E+34 for missing data - X=161W:158W Y=30S:50N Z=0:4149 - IKL TEMP[J=@AVE] 70:72 ... 1:27 1:3 - (Y=30S:50N) - on grid PS3DT1_NY with -1.E+34 for missing data - X=161W:158W Z=0:4149 - IJL TEMP[K=@AVE] 70:72 1:100 ... 1:3 - (Z=0:4149) - on grid PS3DT1_NZ with -1.E+34 for missing data - X=161W:158W Y=30S:50N - JKL TEMP[I=@AVE] ... 1:100 1:27 1:3 - (X=130E:70W) - on grid GRH3 with -1.E+34 for missing data - Y=30S:50N Z=0:4149 - IJKL U 69:72 1:100 1:27 1:3 - on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - IAVEJKL IJKL[I=@AVE] ... 1:100 1:27 1:3 - (X=130.5E:69.5W) - on grid GRH4 with -1.E+34 for missing data - Y=28.8S:51.4N Z=0:4149 - IJAVEKL IJKL[J=@AVE] 69:72 ... 1:27 1:3 - (Y=28.84S:51.43N) - on grid PS3DU1_NY with -1.E+34 for missing data - X=161.5W:157.5W Z=0:4149 - IJKAVEL IJKL[K=@AVE] 69:72 1:100 ... 1:3 - (Z=0:4149) - on grid PS3DU1_NZ with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N - IJKLAVE IJKL[L=@AVE] 69:72 1:100 1:27 ... - (T=15-MAR-1983 09:30:15-MAR-1983 11:30) - on grid PS3DU1_NT with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - - time range: 15-MAR-1983 10:00 to 15-MAR-1983 12:00 - -cancel variable ijkl -show grid ijkl - GRID PS3DU1 - name axis # pts start end subset - PSXU LONGITUDE 160mr 131E 70W full - PSYU LATITUDE 100 i 27.672S 50N full - PSZT1 DEPTH (m) 27 i- 5 3824 full - TIME27 TIME 3 r 15-MAR-1983 10:00 15-MAR-1983 12:00 full -cancel data test_fil0 -! 5/99 moved old bn230_cdf.sub3 to bn_cdf_keepax.sub4 to stay inline w/ old benchmarks *kob* -GO bn_cdf_keepax.sub4 -! bn230_cdf -! benchmark to test netCDF input and output of TMAP data set variables -! requires version 2.30 or later -! 6/92 - -! V5 *sh* 7/99 -- added /CLOBBER - -cancel data/all -cancel variables/all -cancel region - -use gtbc011 - -let i1 = x[g=temp,i=1:10] -let j1 = y[g=temp,j=5:10] -let k1 = z[g=u,k=5:15] -let l1 = l[g=u,l=1:3] -let l2 = l -let ij = taux[l=@ave] -let ik = i1+k1 -let il = i1+l1 -let jk = j1+k1 -let jl = j1+l1 -let kl = k1+l1 -let ijk = temp[l=@ave] -let ikl = temp[j=@ave] -let ijl = temp[k=@ave] -let jkl = temp[i=@ave] -let ijkl = u -let ijk2 = temp -let iavejkl = ijkl[i=@ave] -let ijavekl = ijkl[j=@ave] -let ijkavel = ijkl[k=@ave] -let ijklave = ijkl[l=@ave] - -set region/l=1:2 ! i,j, and k unspecified - -! a bunch of basic geometries -! 1d -list/format=cdf/keep_axnames/clobber/file=test_fil.cdf i1 ! not /APPEND - must be new -list/format=cdf/keep_axnames/append/file=test_fil.cdf j1 -list/format=cdf/keep_axnames/append/file=test_fil.cdf k1 -list/format=cdf/keep_axnames/append/file=test_fil.cdf l1 ! record axis -list/format=cdf/keep_axnames/append/file=test_fil.cdf l2 ! rigid axis - -! 2D -list/format=cdf/keep_axnames/append/file=test_fil.cdf ij -list/format=cdf/keep_axnames/append/file=test_fil.cdf ik -list/format=cdf/keep_axnames/append/file=test_fil.cdf il -list/format=cdf/keep_axnames/append/file=test_fil.cdf jk - -!3D -! The following is an error - axis already in the file -! -set mode ignore - -list/format=cdf/keep_axnames/append/file=test_fil.cdf ijk -list/format=cdf/keep_axnames/append/file=test_fil.cdf ikl -list/format=cdf/keep_axnames/append/file=test_fil.cdf ijl -list/format=cdf/keep_axnames/append/file=test_fil.cdf jkl - -!4D -list/format=cdf/keep_axnames/append/file=test_fil.cdf ijkl - -! extend along time axis and write sub-regions -! (note: this may leave undefined regions in other variables) -list/format=cdf/keep_axnames/append/file=test_fil.cdf/j=1:50/l=2:3 ijl -list/format=cdf/keep_axnames/append/file=test_fil.cdf/j=51:100/l=2:3 ijl - -! rewrite a sub-region in the middle of the data -list/format=cdf/keep_axnames/append/file=test_fil.cdf/j=30:40/k=5/l=1:3 ijkl - -! check documentation of transforms -list/format=cdf/keep_axnames/append/file=test_fil.cdf iavejkl -list/format=cdf/keep_axnames/append/file=test_fil.cdf ijavekl -list/format=cdf/keep_axnames/append/file=test_fil.cdf ijkavel -list/format=cdf/keep_axnames/append/file=test_fil.cdf ijklave - -! look at what we've created - time axis should be regular -set data/format=cdf test_fil -show data/full - currently SET data sets: - 1> ./data/gtbc011.cdf - - name title I J K L - TEMP TEMPERATURE 70:72 1:100 1:27 1:3 - deg. C on grid PS3DT1 with -1.E+34 for missing data - X=161W:158W Y=30S:50N Z=0:4149 - SALT (SALINITY(ppt) - 35) /1000 70:71 1:100 1:27 1:3 - frac. by wt. less .035 on grid PS3DT1 with 0.01 for missing data - X=161W:159W Y=30S:50N Z=0:4149 - U ZONAL VELOCITY 69:72 1:100 1:27 1:3 - cm/sec on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - V MERIDIONAL VELOCITY 69:72 1:100 1:27 1:3 - cm/sec on grid PS3DU1 with -1.E+34 for missing data - X=161.5W:157.5W Y=28.8S:51.4N Z=0:4149 - W VERTICAL VELOCITY 70:71 1:100 1:27 1:3 - cm/sec on grid PS3DW1 with -1.E+34 for missing data - X=161W:159W Y=30S:50N Z=5:4149 - TAUX ZONAL WIND STRESS 69:71 1:100 ... 1:3 - dynes/cm**2 on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - TAUY MERIDIONAL WIND STRESS 69:71 1:100 ... 1:3 - dynes/cm**2 on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - PSI STREAM FUNCTION 69:73 1:100 ... 1:3 - cm**3/sec on grid PS2DU1 with -1.E+34 for missing data - X=161.5W:156.5W Y=28.8S:51.4N - - time range: 15-MAR-1983 10:00 to 15-MAR-1983 12:00 - - 2> ./test_fil.cdf (default) - - name title I J K L - I1 X[G=TEMP,I=1:10] 1:10 ... ... ... - on grid GLZ1 with -1.E+34 for missing data - X=130E:140E - J1 Y[G=TEMP,J=5:10] ... 1:6 ... ... - on grid GLZ2 with -1.E+34 for missing data - Y=21.1S:12.5S - K1 Z[G=U,K=5:15] ... ... 1:11 ... - on grid GLZ3 with -1.E+34 for missing data - Z=40:190 - L1 L[G=U,L=1:3] ... ... ... 1:3 - on grid GLZ4 with -1.E+34 for missing data - - L2 L ... ... ... 1:2 - on grid GLZ5 with -1.E+34 for missing data - - IJ TAUX[L=@AVE] 1:3 1:100 ... ... - (T=15-MAR-1983 09:30:15-MAR-1983 11:30) - on grid GLZ6 with -1.E+34 for missing data - X=161.5W:158.5W Y=28.8S:51.4N - IK I1+K1 1:10 ... 1:11 ... - on grid GLZ7 with -1.E+34 for missing data - X=130E:140E Z=40:190 - IL I1+L1 1:10 ... ... 1:3 - on grid GLZ8 with -1.E+34 for missing data - X=130E:140E - JK J1+K1 ... 1:6 1:11 ... - on grid GLZ9 with -1.E+34 for missing data - Y=21.1S:12.5S Z=40:190 - - time range: 15-MAR-1983 10:00 to 15-MAR-1983 12:00 - -cancel variable ijkl -show grid ijkl -cancel data test_fil - -set mode/last ignore - -GO bn_cdf_reversed_keepax.sub -! bn320_cdf_reversed.sub -! benchmark to test netCDF input of reverse-coordinate axes -! this routine added 3/2/95 - -cancel data/all -cancel variables/all -cancel region - -set data reverse_axes - -show data/var - currently SET data sets: - 1> ./data/reverse_axes.cdf (default) - - name title I J K L - FCN_NORM COS(X/10)*SIN(Y/2) 1:51 1:21 ... ... - on grid GAF1 with -1.E+34 for missing data - X=129.5E:179.5W Y=10.5S:10.5N - FCN_REV COS(X/10)*SIN(Y/2) 1:51 1:21 ... ... - on grid GAF2 with -1.E+34 for missing data - X=129.5E:179.5W Y=10.5S:10.5N - FCN_REV_SUB - COS(X/10)*SIN(Y/2) 1:51 10:19 ... ... - on grid GREV with -1.E+34 for missing data - X=129.5E:179.5W Y=1.5S:8.5N - - -list/x=180 fcn_norm,fcn_rev - WARNING: Listed variables have ambiguous coordinates on axes: Y - DATA SET: ./data/reverse_axes.cdf - LONGITUDE: 180E - Column 1: FCN_NORM is COS(X/10)*SIN(Y/2) - Column 2: FCN_REV is COS(X/10)*SIN(Y/2) - FCN_NOR FCN_REV -J / 1: 0.6331937 -0.6331937 -J / 2: 0.6454794 -0.6454794 -J / 3: 0.4997293 -0.4997293 -J / 4: 0.2316280 -0.2316280 -J / 5: -0.0931839 0.0931839 -J / 6: -0.3951811 0.3951811 -J / 7: -0.6004243 0.6004243 -J / 8: -0.6586626 0.6586626 -J / 9: -0.5556374 0.5556374 -J / 10: -0.3165727 0.3165727 -J / 11: 0.0000000 0.0000000 -J / 12: 0.3165727 -0.3165727 -J / 13: 0.5556374 -0.5556374 -J / 14: 0.6586626 -0.6586626 -J / 15: 0.6004243 -0.6004243 -J / 16: 0.3951811 -0.3951811 -J / 17: 0.0931839 -0.0931839 -J / 18: -0.2316280 0.2316280 -J / 19: -0.4997293 0.4997293 -J / 20: -0.6454794 0.6454794 -J / 21: -0.6331937 0.6331937 -list/x=180 fcn_rev_sub - VARIABLE : COS(X/10)*SIN(Y/2) - FILENAME : reverse_axes.cdf - SUBSET : 10 points (LATITUDE) - LONGITUDE: 180E - 180E - 51 - 8N / 19: 0.4997293 - 7N / 18: 0.2316280 - 6N / 17: -0.0931839 - 5N / 16: -0.3951811 - 4N / 15: -0.6004243 - 3N / 14: -0.6586626 - 2N / 13: -0.5556374 - 1N / 12: -0.3165727 - 0 / 11: 0.0000000 - 1S / 10: 0.3165727 - -GO bn_reset bn_keep_axisnames.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_keep_axisnames.jnl -GO bn_keep_axisnames.jnl -! bn_keep_axisnames.jnl -! 2/2009 ACM - -! save/KEEP_AXISNAMES prevents changes to -! axis name when a subset is written. - -sh command list - LIST/I/J/K/L/M/N/X/Y/Z/T/E/F/DATASET/HEADING/NOHEAD/SINGLY/FILE/APPEND - /ORDER/FORMAT/TITLE/PRECISIO/RIGID/ILIMITS/JLIMITS/KLIMITS/LLIMITS - /MLIMITS/NLIMITS/XLIMITS/YLIMITS/ZLIMITS/TLIMITS/ELIMITS/FLIMITS - /CLOBBER/QUIET/WIDTH/EDGES/BOUNDS/NOBOUNDS/NOROWLAB/KEEP_AXI/NCFORMAT - /XCHUNK/YCHUNK/ZCHUNK/TCHUNK/ECHUNK/FCHUNK/DEFLATE/SHUFFLE/ENDIAN - /OUTTYPE/CURVILIN/LAYERZ/ASGLOBAL/STRLEN -define axis/x=1:100:1/units=deg x100 -define axis/t=1-jan-2000:31-jan-2000:1/units=days/t0=31-dec-1999 t31 -let a = x[gx=x100] + t[gt=t31] -save/file=a.nc/clobber/i=30:40/L=15:28/KEEP_AXISNAMES a - -sp echo "bn_keep_axisnames.jnl --- test SAVE/KEEP_AXISNAMES" >> all_ncdump.out -sp ncdump -h a.nc >> all_ncdump.out - -save/file=a.nc/clobber/i=30:40/L=15:28 a - -sp echo "bn_keep_axisnames.jnl --- without /KEEP_AXISNAMES" >> all_ncdump.out -sp ncdump -h a.nc >> all_ncdump.out - - -GO bn_reset bn_key_label_minmax.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_key_label_minmax.jnl -GO bn_key_label_minmax.jnl -! bn_key_label_minmax.jnl - -! Label data min and max on vertical and horizontal keys - -can mode logo - -! One setting turns on annotate_key, which persists until turned off. -PPL SHAKEY 1,,,,,,,,,,1 - -use levitus_climatology -shade/lev=(-inf)(4,28,1)(inf) temp[z=0] - -shade/set/lev=(-inf)(4,28,1)(inf) temp[z=0] -ppl shakey,1,0 -ppl shade - -! FILL with min and max on vertical and horizontal keys - -fill/lev=(-inf)(4,28,1)(inf) temp[z=0] - -fill/set/lev=(-inf)(4,28,1)(inf) temp[z=0] -PPL SHAKEY 1,0 -ppl fill - -! POLYGON with min and max on vertical key - -use coads_climatology -def axis/x=0:360:5 xq -def axis/y=-90:90:4 yq -let fsst = sst[l=1,gx=xq,gy=yq] - -let lon = xsequence(x[gx=xq] + 0*y[gy=yq]) -let lat = xsequence(0*x[gx=xq] + y[gy=yq]) -shade/nokey/pal=white/nolab/axes=0,0,0,0 fsst ! set up -go polymark poly/key/title="polygons"/lev=(-inf)(4,26,1)(inf), lon, lat, xsequence(fsst), square, 0.4 - - -! Now with closed-ended colorbars -use levitus_climatology -shade/lev=(4,28,1) temp[z=0] - -shade/set/lev=(4,28,1) temp[z=0] -ppl shakey,1,0 -ppl shade - - -! restore setting: keys not annotated -PPL SHAKEY 1,,,,,,,,,,0 - -! The setting can alternatively be made with the alias KEYMARK -KEYMARK 1 - -! FILL with min and max on vertical and horizontal keys - -fill/lev=(4,28,1) temp[z=0] - -fill/set/lev=(4,28,1) temp[z=0] -PPL SHAKEY 1,0 -ppl fill - -! POLYGON with min and max on vertical key - -use coads_climatology -def axis/x=0:360:5 xq -def axis/y=-90:90:4 yq -let fsst = sst[l=1,gx=xq,gy=yq] - -let lon = xsequence(x[gx=xq] + 0*y[gy=yq]) -let lat = xsequence(0*x[gx=xq] + y[gy=yq]) -shade/nokey/pal=white/nolab/axes=0,0,0,0 fsst ! set up -go polymark poly/key/title="polygons"/lev=(4,26,1), lon, lat, xsequence(fsst), square, 0.4 - - -! restore setting: keys not annotated -KEYMARK 0 - -set mode/last logo -shade/lev=35 sst[L=1] - - -! ******** V6.2 Additions below *********** - -GO bn_reset bn62_bug_fixes.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn62_bug_fixes.jnl -GO bn62_bug_fixes.jnl -! bn62_bug_fixes.jnl -! Fixes that go into v6.2 release - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err618_julday.jnl -! err618_julday.jnl -! Bug 1639 -! ACM 2/12/09 - -! reported by Martin Shcmidt, 12-Feb-2009 -! -define axis/t=1-dec-1998:31-mar-2002:12/unit=hours/t0=1-jan-1955/cal=gregorian tax -define grid/t=tax tgrid -let tdummy=0*t[gt=tgrid] - -let rjulianday = TAX_JDAY(t[gt=tdummy],tdummy) -! This is correct -list/t=27-feb-1999:02-mar-1999 rjulianday - VARIABLE : TAX_JDAY(T[GT=TDUMMY],TDUMMY) - SUBSET : 7 points (TIME) - 27-FEB-1999 00:00 / 177: 58.00000 - 27-FEB-1999 12:00 / 178: 58.00000 - 28-FEB-1999 00:00 / 179: 59.00000 - 28-FEB-1999 12:00 / 180: 59.00000 - 01-MAR-1999 00:00 / 181: 60.00000 - 01-MAR-1999 12:00 / 182: 60.00000 - 02-MAR-1999 00:00 / 183: 61.00000 - -! Now look to somewhere else -list/t=31-dec-1999:02-jan-2000 rjulianday - VARIABLE : TAX_JDAY(T[GT=TDUMMY],TDUMMY) - SUBSET : 5 points (TIME) - 31-DEC-1999 00:00 / 791: 365.0000 - 31-DEC-1999 12:00 / 792: 365.0000 - 01-JAN-2000 00:00 / 793: 1.0000 - 01-JAN-2000 12:00 / 794: 1.0000 - 02-JAN-2000 00:00 / 795: 2.0000 - -! Now list the first region again. March 1 was -! being listed as day 61 not day 60 -list/t=27-feb-1999:02-mar-1999 rjulianday - VARIABLE : TAX_JDAY(T[GT=TDUMMY],TDUMMY) - SUBSET : 7 points (TIME) - 27-FEB-1999 00:00 / 177: 58.00000 - 27-FEB-1999 12:00 / 178: 58.00000 - 28-FEB-1999 00:00 / 179: 59.00000 - 28-FEB-1999 12:00 / 180: 59.00000 - 01-MAR-1999 00:00 / 181: 60.00000 - 01-MAR-1999 12:00 / 182: 60.00000 - 02-MAR-1999 00:00 / 183: 61.00000 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err611_polygons.jnl -! err611_polygons.jnl -! bug 1661 - -! Polygons over a depth axis, where the -! plot is transposed, didnt appear. - -! (from error_bars_demo script) Z axis -define axis/z=1:15:1/depth/units=meters z5 -let/quiet xp4 = Z[gz=z5] -let/quiet yp4 = SIN(xp4/5) -let/quiet errors = 0.5/(xp4+5) -plot/title="vertical profile" yp4 - -GO error_bars polygon/color=red/thickness=2/title="variability" yp4 errors - - -GO bn_reset bn_convolve.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_convolve.jnl -GO bn_convolve.jnl -! bn_convolve.jnl -! test convolutions, including with missing-data. -! compare behavior with smoothing transform spz. - -let a = {0,1,1,0,1,0,0,0,,0,0,0} -list a, a[i=@spz], convolvei(a,{.25,.5,.25}) - X: 0.5 to 12.5 - Column 1: A is {0,1,1,0,1,0,0,0,,0,0,0} - Column 2: A[X=@SPZ:3] is {0,1,1,0,1,0,0,0,,0,0,0} (Parzen smoothed by 3 pts on X) - Column 3: EX#3 is CONVOLVEI(A,{.25,.5,.25}) - A A EX#3 -1 / 1: 0.000000 .... .... -2 / 2: 1.000000 0.7500000 0.7500000 -3 / 3: 1.000000 0.7500000 0.7500000 -4 / 4: 0.000000 0.5000000 0.5000000 -5 / 5: 1.000000 0.5000000 0.5000000 -6 / 6: 0.000000 0.2500000 0.2500000 -7 / 7: 0.000000 0.0000000 0.0000000 -8 / 8: 0.000000 .... .... -9 / 9: .... .... .... -10 / 10: 0.000000 .... .... -11 / 11: 0.000000 0.0000000 0.0000000 -12 / 12: 0.000000 .... .... - -! The second argument does not have to be on the -! same axis as the first. -let b = ysequence({0,1,1,0,1,0,0,0,,0,0,0}) -let bpat = ysequence({.25,.5,.25}) -list b, b[j=@spz], convolvej(b,bpat), convolvej(b,{.1,.4,.4,.1}) - Y: 0.5 to 12.5 - Column 1: B is YSEQUENCE({0,1,1,0,1,0,0,0,,0,0,0}) - Column 2: B[Y=@SPZ:3] is YSEQUENCE({0,1,1,0,1,0,0,0,,0,0,0}) (Parzen smoothed by 3 pts on Y) - Column 3: EX#3 is CONVOLVEJ(B,BPAT) - Column 4: EX#4 is CONVOLVEJ(B,{.1,.4,.4,.1}) - B B EX#3 EX#4 -1 / 1: 0.000000 .... .... .... -2 / 2: 1.000000 0.7500000 0.7500000 0.8000000 -3 / 3: 1.000000 0.7500000 0.7500000 0.6000000 -4 / 4: 0.000000 0.5000000 0.5000000 0.5000000 -5 / 5: 1.000000 0.5000000 0.5000000 0.4000000 -6 / 6: 0.000000 0.2500000 0.2500000 0.1000000 -7 / 7: 0.000000 0.0000000 0.0000000 .... -8 / 8: 0.000000 .... .... .... -9 / 9: .... .... .... .... -10 / 10: 0.000000 .... .... .... -11 / 11: 0.000000 0.0000000 0.0000000 .... -12 / 12: 0.000000 .... .... .... - - -let c = zsequence({0,1,1,0,1,0,0,0,,0,0,0}) -list c, c[k=@spz], convolvek(c,{.25,.5,.25}) - Z: 0.5 to 12.5 - Column 1: C is ZSEQUENCE({0,1,1,0,1,0,0,0,,0,0,0}) - Column 2: C[Z=@SPZ:3] is ZSEQUENCE({0,1,1,0,1,0,0,0,,0,0,0}) (Parzen smoothed by 3 pts on Z) - Column 3: EX#3 is CONVOLVEK(C,{.25,.5,.25}) - C C EX#3 -1 / 1: 0.000000 .... .... -2 / 2: 1.000000 0.7500000 0.7500000 -3 / 3: 1.000000 0.7500000 0.7500000 -4 / 4: 0.000000 0.5000000 0.5000000 -5 / 5: 1.000000 0.5000000 0.5000000 -6 / 6: 0.000000 0.2500000 0.2500000 -7 / 7: 0.000000 0.0000000 0.0000000 -8 / 8: 0.000000 .... .... -9 / 9: .... .... .... -10 / 10: 0.000000 .... .... -11 / 11: 0.000000 0.0000000 0.0000000 -12 / 12: 0.000000 .... .... - -let d = tsequence({0,1,1,0,1,0,0,0,,0,0,0}) -let dpat = tsequence({.25,.5,.25}) -list d, d[l=@spz], convolvel(d,{.25,.5,.25}) - T: 0.5 to 12.5 - Column 1: D is TSEQUENCE({0,1,1,0,1,0,0,0,,0,0,0}) - Column 2: D[T=@SPZ:3] is TSEQUENCE({0,1,1,0,1,0,0,0,,0,0,0}) (Parzen smoothed by 3 pts on T) - Column 3: EX#3 is CONVOLVEL(D,{.25,.5,.25}) - D D EX#3 -1 / 1: 0.000000 .... .... -2 / 2: 1.000000 0.7500000 0.7500000 -3 / 3: 1.000000 0.7500000 0.7500000 -4 / 4: 0.000000 0.5000000 0.5000000 -5 / 5: 1.000000 0.5000000 0.5000000 -6 / 6: 0.000000 0.2500000 0.2500000 -7 / 7: 0.000000 0.0000000 0.0000000 -8 / 8: 0.000000 .... .... -9 / 9: .... .... .... -10 / 10: 0.000000 .... .... -11 / 11: 0.000000 0.0000000 0.0000000 -12 / 12: 0.000000 .... .... - -! 2D - convolvei convolves in x ... -let a = {0,1,1,0,1,0,0,0,,0,0,0} + y[y=1:2] -list a, a[i=@spz], convolvei(a,{.25,.5,.25}) - X: 0.5 to 12.5 - Y: 0.5 to 2.5 - Column 1: A is {0,1,1,0,1,0,0,0,,0,0,0} + Y[Y=1:2] - Column 2: A[X=@SPZ:3] is {0,1,1,0,1,0,0,0,,0,0,0} + Y[Y=1:2] (Parzen smoothed by 3 pts on X) - Column 3: EX#3 is CONVOLVEI(A,{.25,.5,.25}) - A A EX#3 - ---- J:1 Y: 1 -1 / 1: 1.000000 .... .... -2 / 2: 2.000000 1.750000 1.750000 -3 / 3: 2.000000 1.750000 1.750000 -4 / 4: 1.000000 1.500000 1.500000 -5 / 5: 2.000000 1.500000 1.500000 -6 / 6: 1.000000 1.250000 1.250000 -7 / 7: 1.000000 1.000000 1.000000 -8 / 8: 1.000000 .... .... -9 / 9: .... .... .... -10 / 10: 1.000000 .... .... -11 / 11: 1.000000 1.000000 1.000000 -12 / 12: 1.000000 .... .... - ---- J:2 Y: 2 -1 / 1: 2.000000 .... .... -2 / 2: 3.000000 2.750000 2.750000 -3 / 3: 3.000000 2.750000 2.750000 -4 / 4: 2.000000 2.500000 2.500000 -5 / 5: 3.000000 2.500000 2.500000 -6 / 6: 2.000000 2.250000 2.250000 -7 / 7: 2.000000 2.000000 2.000000 -8 / 8: 2.000000 .... .... -9 / 9: .... .... .... -10 / 10: 2.000000 .... .... -11 / 11: 2.000000 2.000000 2.000000 -12 / 12: 2.000000 .... .... - - - -GO bn_reset bn_tax_tstep.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_tax_tstep.jnl -GO bn_tax_tstep.jnl -! bn_tax_tstep.jnl -! -! Working with the coordinates of this axis loses accuracy because its -! time origin is so far back from the time it represents - -DEFINE AXIS/T="1-JAN-2000:00:00:01":"1-JAN-2000:00:15:00":2/UNITS=seconds tsec -LIST/L=440:451 T[GT=tsec] ! See the accuracy problem here - VARIABLE : T - axis TSEC - SUBSET : 12 points (TIME) - 01-JAN-2000 00:14:39 / 440: 3122928879. - 01-JAN-2000 00:14:41 / 441: 3122928881. - 01-JAN-2000 00:14:43 / 442: 3122928883. - 01-JAN-2000 00:14:45 / 443: 3122928885. - 01-JAN-2000 00:14:47 / 444: 3122928887. - 01-JAN-2000 00:14:49 / 445: 3122928889. - 01-JAN-2000 00:14:51 / 446: 3122928891. - 01-JAN-2000 00:14:53 / 447: 3122928893. - 01-JAN-2000 00:14:55 / 448: 3122928895. - 01-JAN-2000 00:14:57 / 449: 3122928897. - 01-JAN-2000 00:14:59 / 450: 3122928899. - 01-JAN-2000 00:15:01 / 451: 3122928901. - -LET bsin = SIN(t[GT=tsec]/40000) -SAVE/FILE=a.nc/clobber bsin -CAN VAR/all -USE a.nc - -SET LIST/PREC=7 -! Reset the date to dec 1999 -! Function lets us leave off the leading 0. -LIST/L=1:15 TAX_TSTEP(bsin, "1-dec-1999:00:00:00" ) - VARIABLE : TAX_TSTEP(BSIN, "1-dec-1999:00:00:00" ) - FILENAME : a.nc - SUBSET : 15 points (TIME) - 01-JAN-2000 00:00:01 / 1: 2678401. - 01-JAN-2000 00:00:03 / 2: 2678403. - 01-JAN-2000 00:00:05 / 3: 2678405. - 01-JAN-2000 00:00:07 / 4: 2678407. - 01-JAN-2000 00:00:09 / 5: 2678409. - 01-JAN-2000 00:00:11 / 6: 2678411. - 01-JAN-2000 00:00:13 / 7: 2678413. - 01-JAN-2000 00:00:15 / 8: 2678415. - 01-JAN-2000 00:00:17 / 9: 2678417. - 01-JAN-2000 00:00:19 / 10: 2678419. - 01-JAN-2000 00:00:21 / 11: 2678421. - 01-JAN-2000 00:00:23 / 12: 2678423. - 01-JAN-2000 00:00:25 / 13: 2678425. - 01-JAN-2000 00:00:27 / 14: 2678427. - 01-JAN-2000 00:00:29 / 15: 2678429. - -! argument can be upper or lowercase -! Should list values 1, 3, 5... -LIST/L=1:15 TAX_TSTEP(bsin, "1-JAN-2000:00:00:00" ) - VARIABLE : TAX_TSTEP(BSIN, "1-JAN-2000:00:00:00" ) - FILENAME : a.nc - SUBSET : 15 points (TIME) - 01-JAN-2000 00:00:01 / 1: 1.00000 - 01-JAN-2000 00:00:03 / 2: 3.00000 - 01-JAN-2000 00:00:05 / 3: 5.00000 - 01-JAN-2000 00:00:07 / 4: 7.00000 - 01-JAN-2000 00:00:09 / 5: 9.00000 - 01-JAN-2000 00:00:11 / 6: 11.00000 - 01-JAN-2000 00:00:13 / 7: 13.00000 - 01-JAN-2000 00:00:15 / 8: 15.00000 - 01-JAN-2000 00:00:17 / 9: 17.00000 - 01-JAN-2000 00:00:19 / 10: 19.00000 - 01-JAN-2000 00:00:21 / 11: 21.00000 - 01-JAN-2000 00:00:23 / 12: 23.00000 - 01-JAN-2000 00:00:25 / 13: 25.00000 - 01-JAN-2000 00:00:27 / 14: 27.00000 - 01-JAN-2000 00:00:29 / 15: 29.00000 - -! Test with TAX_DATESTRING to set the date (but argument to -! TAX_DATESTRING is also limited by precision so use a different -! axis def.) - -DEFINE AXIS/T="1-JAN-1902:00:00:00":"1-JAN-1902:00:30:00":5/UNITS=seconds tsec -LIST/L=200:205 T[GT=tsec] ! accuracy loss in single-precision t - VARIABLE : T - axis TSEC - SUBSET : 6 points (TIME) - 01-JAN-1902 00:16:35 / 200: 30327395. - 01-JAN-1902 00:16:40 / 201: 30327400. - 01-JAN-1902 00:16:45 / 202: 30327405. - 01-JAN-1902 00:16:50 / 203: 30327410. - 01-JAN-1902 00:16:55 / 204: 30327415. - 01-JAN-1902 00:17:00 / 205: 30327420. - -LET tt = t[gt=tsec] -LET reset_date = TAX_DATESTRING(`t[gt=tsec,l=1]`, tt, "sec") - !-> DEFINE VARIABLE reset_date = TAX_DATESTRING(30326400, tt, "sec") -LIST/L=1:15 TAX_TSTEP(tt, "`reset_date`") - !-> LIST/L=1:15 TAX_TSTEP(tt, "01-JAN-1902 00:00:00.0") - VARIABLE : TAX_TSTEP(TT, "01-JAN-1902 00:00:00.0") - SUBSET : 15 points (TIME) - 01-JAN-1902 00:00:00 / 1: 0.00000 - 01-JAN-1902 00:00:05 / 2: 5.00000 - 01-JAN-1902 00:00:10 / 3: 10.00000 - 01-JAN-1902 00:00:15 / 4: 15.00000 - 01-JAN-1902 00:00:20 / 5: 20.00000 - 01-JAN-1902 00:00:25 / 6: 25.00000 - 01-JAN-1902 00:00:30 / 7: 30.00000 - 01-JAN-1902 00:00:35 / 8: 35.00000 - 01-JAN-1902 00:00:40 / 9: 40.00000 - 01-JAN-1902 00:00:45 / 10: 45.00000 - 01-JAN-1902 00:00:50 / 11: 50.00000 - 01-JAN-1902 00:00:55 / 12: 55.00000 - 01-JAN-1902 00:01:00 / 13: 60.00000 - 01-JAN-1902 00:01:05 / 14: 65.00000 - 01-JAN-1902 00:01:10 / 15: 70.00000 - -GO bn_reset bn_grads_z.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_grads_z.jnl -GO bn_grads_z.jnl -! bn_grads_z.jnl -! acm 3/31/09 -! Fixing bug 1651. -! The file has no axis attributes other than units and long_name, -! does not contain any other clues that Ferret uses to get a Z -! axis direction but for variable AR, has attribute -! DAXIS:long_name = "depth" ; This bug came from a question about the file -! http://www.usgodae.org/dods/GDS_NC/gdem/sspgdemv3s" -! See the bug report for more. - -USE grads_bug_file.nc - -! Previously A1 thru A4 showed as if on an x axis -! A1 has z axis with long_name elev -! A2 has z axis with long name height -! A3 has z axis with long name level -! A4 has z axis with long name layer -SHOW DATA - currently SET data sets: - 1> ./data/grads_bug_file.nc (default) - name title I J K L - AM Z[GZ=CAXIS] + Y[GY=BAXIS] + X[G 1:10 1:5 1:5 ... - AR Z[GZ=DAXIS]+ Y[GY=BAXIS] + X[GX 1:10 1:5 1:6 ... - A1 ... ... 1:5 ... - A2 ... ... 1:5 ... - A3 ... ... 1:5 ... - A4 ... ... 1:5 ... - - -! The z axis of AM has no useful clues about its direction. -! Ferret uses it as Z only because of the order in which it comes in -SH GRID am - GRID GMY1 - name axis # pts start end subset - AAXIS X (METERS) 10 r 1 10 full - BAXIS Y (METERS) 5 r 1 9 full - CAXIS Z (METERS) 5 r 2 10 full - normal T - -! This axis has long_name = "depth" so it is (now) reversed. -! Previously it was not. -SH GRID ar - GRID GMY2 - name axis # pts start end subset - AAXIS X (METERS) 10 r 1 10 full - BAXIS Y (METERS) 5 r 1 9 full - DAXIS DEPTH (m) 6 i- 0 8 full - normal T - -! Can redefine the axis for variable AM to make it a z depth axis - -DEFINE SYMBOL zname = `am,RETURN=zaxis` - !-> DEFINE SYMBOL zname = CAXIS -DEFINE AXIS/Z/UNITS="`am,RETURN=zunits`"/DEPTH ($zname) = Z[GZ=am] - !-> DEFINE AXIS/Z/UNITS="METERS"/DEPTH CAXIS = Z[GZ=am] -SH GRID am - GRID GMY1 - name axis # pts start end subset - AAXIS X (METERS) 10 r 1 10 full - BAXIS Y (METERS) 5 r 1 9 full - CAXIS DEPTH (m) 5 r- 2 10 full - normal T - -GO bn_reset bn_clock_syms -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_clock_syms -GO bn_clock_syms -SH SYM delta_cpu, clock_secs, current_date, current_time -DELTA_CPU = "112.153" -CLOCK_SECS = "239.7" -CURRENT_DATE = "20-Aug-19" -CURRENT_TIME = "12:17:27" -! test special symbols DELTA_CPU, CLOCK_SECS -! -! NOTE THAT THE VALUES OF THE SYMBOLS WILL VARY FROM ONE -! RUN OF THIS TO ANOTHER... - -use gt4d011 -shade/k=1 temp[L=@ave] -sh sym DELTA_CPU, CLOCK_SECS -DELTA_CPU = "0.048993" -CLOCK_SECS = "240" - -repeat/k=1:10 shade temp[L=@ave] -!-> REPEAT: K=1 -!-> REPEAT: K=2 -!-> REPEAT: K=3 -!-> REPEAT: K=4 -!-> REPEAT: K=5 -!-> REPEAT: K=6 -!-> REPEAT: K=7 -!-> REPEAT: K=8 -!-> REPEAT: K=9 -!-> REPEAT: K=10 -let ten_plots = ($DELTA_CPU) - !-> DEFINE VARIABLE ten_plots = 0.58991 -sh sym DELTA_CPU, CLOCK_SECS -DELTA_CPU = "0.001" -CLOCK_SECS = "241.6" - -let sumclock = 0 -let sumcpu = 0 -sh sym CLOCK_SECS -CLOCK_SECS = "241.6" -repeat/k=1:10 (shade/pal=rnb2 temp[L=@ave]; let dt = ($DELTA_CPU);\ -let sumcpu =`sumcpu + dt`) - !-> repeat/k=1:10 (shade/pal=rnb2 temp[L=@ave]; let dt = ($DELTA_CPU);let sumcpu =`sumcpu + dt`) -!-> REPEAT: K=1 - !-> DEFINE VARIABLE dt = 0.06399 - !-> DEFINE VARIABLE sumcpu =0.06399000000000001 -!-> REPEAT: K=2 - !-> DEFINE VARIABLE dt = 0.06999 - !-> DEFINE VARIABLE sumcpu =0.13398 -!-> REPEAT: K=3 - !-> DEFINE VARIABLE dt = 0.06299 - !-> DEFINE VARIABLE sumcpu =0.19697 -!-> REPEAT: K=4 - !-> DEFINE VARIABLE dt = 0.06399 - !-> DEFINE VARIABLE sumcpu =0.26096 -!-> REPEAT: K=5 - !-> DEFINE VARIABLE dt = 0.06499 - !-> DEFINE VARIABLE sumcpu =0.32595 -!-> REPEAT: K=6 - !-> DEFINE VARIABLE dt = 0.06399 - !-> DEFINE VARIABLE sumcpu =0.38994 -!-> REPEAT: K=7 - !-> DEFINE VARIABLE dt = 0.063991 - !-> DEFINE VARIABLE sumcpu =0.453931 -!-> REPEAT: K=8 - !-> DEFINE VARIABLE dt = 0.06599 - !-> DEFINE VARIABLE sumcpu =0.519921 -!-> REPEAT: K=9 - !-> DEFINE VARIABLE dt = 0.06499 - !-> DEFINE VARIABLE sumcpu =0.584911 -!-> REPEAT: K=10 - !-> DEFINE VARIABLE dt = 0.066989 - !-> DEFINE VARIABLE sumcpu =0.6518999999999999 - -say `sumcpu` - !-> MESSAGE/CONTINUE 0.6518999999999999 -0.6518999999999999 -sh sym CLOCK_SECS -CLOCK_SECS = "243.2" - -SH SYM session_date, current_date, session_time, current_time -SESSION_DATE = "20-Aug-19" -SESSION_TIME = "12:13" -CURRENT_DATE = "20-Aug-19" -CURRENT_TIME = "12:17:31" - -! ******** V6.3 Additions below *********** -! Note that allowing mouse-click operations in the current -! window, not only in window 1, is implemented in v6.3. Not -! tested in the benchmarks. - -GO bn_reset bn63_bug_fixes.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn63_bug_fixes.jnl -GO bn63_bug_fixes.jnl -! bn63_bug_fixes.jnl -! Fixes that go into v6.3 release - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_string_write_nc -! err62_string_write_nc.jnl -! Bug 1664: string variable written as a float. -! - -!!!! Make a smaller file from the original file: - -!!!! use "/home/nstout/hankin/SOCAT_triples.nc" -!!!! save/file=err62_string_write.nc/clobber cruise_id[i=1:104000:1000], cruise_no[i=1:104000:1000] - -! use "/home/nstout/hankin/SOCAT_triples.nc" -! set mem/siz=200 -!DEFINE SYMBOL clen 3000 - -use err62_string_write.nc -DEFINE SYMBOL clen 30 - -let I1d = i[g=cruise_no] - -let cm0 = IF CRUISE_NO NE CRUISE_NO[I=@SHF:-1] THEN 1 ! marks each real cruise -let cm1 = if i eq 1 then 1 else cm0 ! start of first cruise, too -let cm2 = if MOD(cm1[i=@cib], ($clen) ) eq 0 then 1 ! break into chunks - !-> DEFINE VARIABLE cm2 = if MOD(cm1[i=@cib], 30 ) eq 0 then 1 -let mask = MISSING(cm1, cm2) - -DEFINE SYMBOL nk = `mask[i=@ngd]` - !-> DEFINE SYMBOL nk = 11 - -! **** IF EITHER OF THESE LINES IS COMMENTED OUT -! THE STRING VAR cruise_id_xz IS SAVED OK -let/title="cruise no" cruise_no_xz = EXPNDI_BY_Z(cruise_no,mask,`($nk)+1`,($clen) ) - !-> DEFINE VARIABLE/title="cruise no" cruise_no_xz = EXPNDI_BY_Z(cruise_no,mask,12,30 ) -SAVE/CLOBBER/FILE="a.nc"/i=1:10 cruise_no - -let kstarts = mask * i -let kst = COMPRESSI(kstarts) -let/title="cruise ID" cruise_id_xz = SAMPLEI(cruise_id, kst[i=1:($nk)]) - !-> DEFINE VARIABLE/title="cruise ID" cruise_id_xz = SAMPLEI(cruise_id, kst[i=1:11]) -list/i=1:10 cruise_id_xz - VARIABLE : cruise ID - FILENAME : err62_string_write.nc - SUBSET : 10 points (X) - 1 / 1:"0001SFC_PRT" - 2 / 2:"0002SFC_PRT" - 3 / 3:"0003SFC_PRT" - 4 / 4:"0004SFC_PRT" - 5 / 5:"0005SFC_PRT" - 6 / 6:"0006SFC_PRT" - 7 / 7:"0008SFC_PRT" - 8 / 8:"007ASFC_PRT" - 9 / 9:"0101SFC_PRT" - 10 / 10:"0102SFC_PRT" - -! *** THE VARIABLE cruise_id_xz GETS SAVED AS FLOAT INSTEAD OF STRING -save/clobber/file=a.nc/i=1:10 cruise_id_xz - -! Check the file -canc var/all -use a.nc - -! Should be the same strings as above. -list cruise_id_xz - VARIABLE : cruise ID - FILENAME : a.nc - SUBSET : 10 points (X) - 1 / 1:"0001SFC_PRT" - 2 / 2:"0002SFC_PRT" - 3 / 3:"0003SFC_PRT" - 4 / 4:"0004SFC_PRT" - 5 / 5:"0005SFC_PRT" - 6 / 6:"0006SFC_PRT" - 7 / 7:"0008SFC_PRT" - 8 / 8:"007ASFC_PRT" - 9 / 9:"0101SFC_PRT" - 10 / 10:"0102SFC_PRT" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_levset -! err62_levset.jnl -! fix for bug 1672, top color level chopped off in some circumstances -! The color bar should extend to 385.4 - -let var = 0*y + x -shade/x=350:390/y=1:10/lev=(376.6,379.0,0.8)(379.0,385.4,0.2) var - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_thick_tic_time_axis -! err62_thick_tic_time_axis.jnl -! Fixing bug 1668 -! -! On multi-year or multi-decade time-axis plots, the -! dark line every year or 5- or 10-years, sometimes -! disappeared due to pixel aliasing. Fixed by setting -! the thick-line for these tics. - -! restore default setting -ppl axlabp,-1,-1 - -define axis/t=1-jan-1990:1-jan-2010:1/units=months tax - -set mode meta timetics.plt -let tt = l[gt=tax] -set view upper; plot/thick/line cos(tt/20) -set view lower; plot/thick/line/t=1-jan-1991:1-jan-1997 cos(tt/20) -can view - -! Check that we get the thick dark black line for the tics on -! plots with more line colors -set mode linec:12 -sho mode linecolors - MODE STATE ARGUMENT - LINECOLORS SET 12 - -can win/all -set win/new - -set mode meta timetics2.plt - -ppl color,7,100,50,0 ! orange -ppl color,8,0,55,0 ! dark green -ppl color,9,60,0,100 ! purple -ppl color,10,100,60,70 ! pink -ppl color,11,80,70,60 ! tan -ppl color,12,100,75,0 ! yellow - - -let tt = l[gt=tax] -plot/thick/line \ - cos(tt/20), cos(tt/24), cos(tt/28), cos(tt/32), \ - cos(tt/36), cos(tt/40), cos(tt/44), cos(tt/48), \ - cos(tt/52), cos(tt/56), cos(tt/60), cos(tt/64) - -can mode linecolors -can win/all -set win/new - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_reset_after_inf -! err62_reset_after_inf.jnl -! Bug 1292 -! The levels did not reset to default closed levels - -Set mode meta closed_lev.plt - -use levitus_climatology -set view left -shade/lev=(-inf)(2,24,2)(inf) temp[k=1] - -! The bug was that this did not reset to default closed levels -set view right -shade/lev=20 temp[k=1] -cancel mode meta - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_reversed_up -! err62_reversed_up.jnl -! -! bug 1676: -! reversed axis, positive up, with edges could -! not check points-inside-edges and so would -! just use midpts between coordinates as edges - -use lev_rev_up.nc - -use lev_rev_up.nc -list z[gz=temp], zboxlo[gz=temp], zboxhi[gz=temp] - DATA SET: ./data/lev_rev_up.nc - Z (METERS): -5000 to 0 - Column 1: Z is Z (axis ZAXLEVITR) - Column 2: ZBOXLO is ZBOXLO (axis ZAXLEVITR) - Column 3: ZBOXHI is ZBOXHI (axis ZAXLEVITR) - Z ZBOXLO ZBOXHI --5000 / 1: -5000.000 -5000.000 -4500.000 --4000 / 2: -4000.000 -4500.000 -3500.000 --3000 / 3: -3000.000 -3500.000 -2500.000 --2000 / 4: -2000.000 -2500.000 -1800.000 --1500 / 5: -1500.000 -1800.000 -1300.000 --1200 / 6: -1200.000 -1300.000 -1100.000 --1000 / 7: -1000.000 -1100.000 -900.000 --800 / 8: -800.000 -900.000 -700.000 --600 / 9: -600.000 -700.000 -500.000 --400 / 10: -400.000 -500.000 -350.000 --300 / 11: -300.000 -350.000 -250.000 --200 / 12: -200.000 -250.000 -180.000 --150 / 13: -150.000 -180.000 -120.000 --100 / 14: -100.000 -120.000 -90.000 --75 / 15: -75.000 -90.000 -60.000 --50 / 16: -50.000 -60.000 -32.000 --30 / 17: -30.000 -32.000 -24.000 --20 / 18: -20.000 -24.000 -12.000 --10 / 19: -10.000 -12.000 -5.000 -0 / 20: 0.000 -5.000 0.000 - -! shade/j=1 temp[z=-55:0] -! let xpts = xsequence(x[gx=temp] + 0*z[gz=temp]) -! let zpts = xsequence(0*x[gx=temp] + z[gz=temp]) -! plot/over/vs/color=lightblue/sym=27 xpts,zpts - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_samplexy -! err62_samplexy -! bug 1677 - -use coads_climatology - -! put the data on 1:360 for convenience in seeing whats going on -save/clobber/file=xz.nc sst[x=1:360,L=1] -can dat/all; can mem - -use xz - -let xpts = {357.6,358.8,359.9,360.,0.1,1.2,2.4} -let ypts = 0*xpts - -let sr = SAMPLEXY(sst[L=1], xpts, ypts) - -! previously the middle 3 points of this were missing. -list sr - VARIABLE : SAMPLEXY(SST[L=1], XPTS, YPTS) - FILENAME : xz.nc - SUBSET : 7 points (X) - TIME : 16-JAN 06:00 - 1 / 1: 27.46402 - 2 / 2: 27.44937 - 3 / 3: 27.53579 - 4 / 4: 27.54567 - 5 / 5: 27.55554 - 6 / 6: 27.65924 - 7 / 7: 27.74823 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_one_point_bounds -! err62_one_point_bounds.jnl -! Bug 1680 -! If a single-point axis has bounds specified, -! then on a SAVE/BOUNDS, Ferret did not save the -! correct bounds (but instead saved coord+/- 0.5) - -DEFINE AXIS/BOUNDS/Z/UNITS=meters myzaxis = {5}, {4.89,5.11} -LET zz = Z[GZ=myzaxis] -SAVE/BOUNDS/CLOBBER/FILE=a.nc zz -LIST Z[GZ=zz], ZBOXLO[GZ=zz], ZBOXHI[GZ=zz] - Z (METERS): 5 - Column 1: Z is Z (axis MYZAXIS) - Column 2: ZBOXLO is ZBOXLO (axis MYZAXIS) - Column 3: ZBOXHI is ZBOXHI (axis MYZAXIS) - Z ZBOXLO ZBOXHI -I / *: 5.000000 4.890000 5.110000 - -CAN DAT/ALL; CAN VAR/ALL -USE a.nc -! This should match the output of the LIST above -LIST Z[GZ=zz], ZBOXLO[GZ=zz], ZBOXHI[GZ=zz] - DATA SET: ./a.nc - Z (meters): 5 - Column 1: Z is Z (axis MYZAXIS1) - Column 2: ZBOXLO is ZBOXLO (axis MYZAXIS1) - Column 3: ZBOXHI is ZBOXHI (axis MYZAXIS1) - Z ZBOXLO ZBOXHI -I / *: 5.000000 4.890000 5.110000 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_cos_lat_uncentered -!err62_cos_lat_uncentered.jnl -! See this thread, here is the esample, with his test.nc renamed to uncentered.nc -! http://www.pmel.noaa.gov/maillists/tmap/ferret_users/fu_2009/msg00510.html -! Also see the last comments from Andrew on bug 1348. - -use uncentered.nc -define grid/like=test grd - -! list edges -list yboxlo[g=grd],yboxhi[g=grd] - LATITUDE: 90S to 90N - Column 1: YBOXLO is YBOXLO (axis LAT_T) - Column 2: YBOXHI is YBOXHI (axis LAT_T) - YBOXLO YBOXHI -76.5S / 1: -90.00000 -70.81186 -66.4S / 2: -70.81186 -62.73396 -59.4S / 3: -62.73396 -56.44269 -53.7S / 4: -56.44269 -51.05756 -48.6S / 5: -51.05756 -46.23826 -44S / 6: -46.23826 -41.81031 -39.7S / 7: -41.81031 -37.66989 -35.7S / 8: -37.66989 -33.74899 -31.9S / 9: -33.74899 -30.00000 -28.2S / 10: -30.00000 -26.38780 -24.6S / 11: -26.38780 -22.88538 -21.2S / 12: -22.88538 -19.47122 -17.8S / 13: -19.47122 -16.12762 -14.5S / 14: -16.12762 -12.83959 -11.2S / 15: -12.83959 -9.59407 -8S / 16: -9.59407 -6.37937 -4.8S / 17: -6.37937 -3.18474 -1.6S / 18: -3.18474 -0.00000 -1.6N / 19: -0.00000 3.18474 -4.8N / 20: 3.18474 6.37937 -8N / 21: 6.37937 9.59407 -11.2N / 22: 9.59407 12.83959 -14.5N / 23: 12.83959 16.12762 -17.8N / 24: 16.12762 19.47122 -21.2N / 25: 19.47122 22.88538 -24.6N / 26: 22.88538 26.38780 -28.2N / 27: 26.38780 30.00000 -31.9N / 28: 30.00000 33.74899 -35.7N / 29: 33.74899 37.66989 -39.7N / 30: 37.66989 41.81031 -44N / 31: 41.81031 46.23826 -48.6N / 32: 46.23826 51.05756 -53.7N / 33: 51.05756 56.44269 -59.4N / 34: 56.44269 62.73396 -66.4N / 35: 62.73396 70.81186 -76.5N / 36: 70.81186 90.00000 - -! calculate weights w1 and w2 -let rad = 3.14159265/180 -let w1 = (yboxhi[i=1,g=grd]-yboxlo[i=1,g=grd])*cos(y[i=1,g=grd]*rad) -let w2 = sin(yboxhi[i=1,g=grd]*rad) - sin(yboxlo[i=1,g=grd]*rad) - -! list normalized weights -list w1/w1[j=@sum],w2/w2[j=@sum] - LATITUDE: 90S to 90N - Column 1: EX#1 is W1/W1[J=@SUM] - Column 2: EX#2 is W2/W2[J=@SUM] - EX#1 EX#2 -76.5S / 1: 0.03826170 0.02777778 -66.4S / 2: 0.02750340 0.02777778 -59.4S / 3: 0.02724976 0.02777778 -53.7S / 4: 0.02718343 0.02777778 -48.6S / 5: 0.02715676 0.02777778 -44S / 6: 0.02714348 0.02777778 -39.7S / 7: 0.02713596 0.02777778 -35.7S / 8: 0.02713132 0.02777778 -31.9S / 9: 0.02712828 0.02777778 -28.2S / 10: 0.02712619 0.02777778 -24.6S / 11: 0.02712471 0.02777778 -21.2S / 12: 0.02712365 0.02777778 -17.8S / 13: 0.02712287 0.02777778 -14.5S / 14: 0.02712229 0.02777778 -11.2S / 15: 0.02712188 0.02777778 -8S / 16: 0.02712159 0.02777778 -4.8S / 17: 0.02712141 0.02777778 -1.6S / 18: 0.02712133 0.02777778 -1.6N / 19: 0.02712133 0.02777778 -4.8N / 20: 0.02712141 0.02777778 -8N / 21: 0.02712159 0.02777778 -11.2N / 22: 0.02712188 0.02777778 -14.5N / 23: 0.02712229 0.02777778 -17.8N / 24: 0.02712287 0.02777778 -21.2N / 25: 0.02712365 0.02777778 -24.6N / 26: 0.02712471 0.02777778 -28.2N / 27: 0.02712619 0.02777778 -31.9N / 28: 0.02712828 0.02777778 -35.7N / 29: 0.02713132 0.02777778 -39.7N / 30: 0.02713596 0.02777778 -44N / 31: 0.02714348 0.02777778 -48.6N / 32: 0.02715676 0.02777778 -53.7N / 33: 0.02718343 0.02777778 -59.4N / 34: 0.02724976 0.02777778 -66.4N / 35: 0.02750340 0.02777778 -76.5N / 36: 0.03826170 0.02777778 - -! list weights calculated by Ferret at j=1,2,3,4,5,18 -let all = if test gt 0 then 1 -let total_area = all[x=@din,y=@din] -let cell1 = if test eq 1 then 1 -let cell2 = if test eq 2 then 1 -let cell3 = if test eq 3 then 1 -let cell4 = if test eq 4 then 1 -let cell5 = if test eq 5 then 1 -let cell18 = if test eq 18 then 1 -list cell1[x=@din,y=@din]/total_area - VARIABLE : CELL1[X=@DIN,Y=@DIN]/TOTAL_AREA - FILENAME : uncentered.nc - LONGITUDE: 100E to 100E(460) - LATITUDE : 90S to 90N - 0.02777782 -list cell2[x=@din,y=@din]/total_area - VARIABLE : CELL2[X=@DIN,Y=@DIN]/TOTAL_AREA - FILENAME : uncentered.nc - LONGITUDE: 100E to 100E(460) - LATITUDE : 90S to 90N - 0.02777779 -list cell3[x=@din,y=@din]/total_area - VARIABLE : CELL3[X=@DIN,Y=@DIN]/TOTAL_AREA - FILENAME : uncentered.nc - LONGITUDE: 100E to 100E(460) - LATITUDE : 90S to 90N - 0.02777778 -list cell4[x=@din,y=@din]/total_area - VARIABLE : CELL4[X=@DIN,Y=@DIN]/TOTAL_AREA - FILENAME : uncentered.nc - LONGITUDE: 100E to 100E(460) - LATITUDE : 90S to 90N - 0.02777778 -list cell5[x=@din,y=@din]/total_area - VARIABLE : CELL5[X=@DIN,Y=@DIN]/TOTAL_AREA - FILENAME : uncentered.nc - LONGITUDE: 100E to 100E(460) - LATITUDE : 90S to 90N - 0.02777778 -list cell18[x=@din,y=@din]/total_area - VARIABLE : CELL18[X=@DIN,Y=@DIN]/TOTAL_AREA - FILENAME : uncentered.nc - LONGITUDE: 100E to 100E(460) - LATITUDE : 90S to 90N - 0.02777777 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_if_inside_repeat -! err62_if_inside_repeat.jnl -! Bug 1681. Parsing error when, inside the REPEAT, we have -! endif) on a line of its own. - -! the fix for this bug causes a worse bug for GFDL (see #1706). -! Thought I had a better fix but it turns out not. For now -! reverting all the code surrounding these fixes. Do not -! execute these tests. - -cancel mode verify -test1 -test2 -test3 -Now try the same tests with IF 1 inside the REPEATs -test4 -test5 -test6 -Now try the same tests with IF 1 to execute everything. -test7 - hello7 - hello7 -test8 - hello8 - hello8 -test9 - hello9 - hello9 -Now try the same tests with IF 1 and ELSE. -test10 - hello10 - hello10 -test11 - hello11 - hello11 -test12 - hello12 - hello12 -Now try the same tests with IF 0 and ELSE. -test13 - else13 - else13 -test14 - else14 - else14 -test15 - else15 - else15 -Now try the same tests with IF 0 and ELIF. -test16 - elif16 - elif16 -test17 - elif17 - elif17 -test18 - elif18 - elif18 -Next should a line that says --->here -And then a line that says 201. ---->here - 201.0000 -done - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_title_curvi_plot -! err62_title_curvi_plot.jnl -! bug 1669; when the variable and its coordinate variables -! come from different datasets, we get the variable def, not -! its title as the main title. -! The titles should all be SEA SURFACE TEMPERATURE (Deg C) - -use coads_climatology -let xval = x[gx=sst[d=1]]+0*y[gy=sst[d=1]] -let yval = y[gy=sst[d=1]]+0*x[gx=sst[d=1]] -save/clob/file=a.nc sst[l=1:2], xval, yval - -can var/all -use a.nc -set v ul; shade sst[d=1,l=1], xval[d=2], yval[d=2]; sh sym labtit -LABTIT = "SEA SURFACE TEMPERATURE (Deg C)" -set v ur; shade sst[d=2,l=1], xval[d=2], yval[d=2]; sh sym labtit -LABTIT = "SEA SURFACE TEMPERATURE (Deg C)" - -set v ll; fill sst[d=1,l=1], xval[d=2], yval[d=2]; sh sym labtit -LABTIT = "SEA SURFACE TEMPERATURE (Deg C)" -set v lr; fill sst[d=2,l=1], xval[d=2], yval[d=2]; sh sym labtit -LABTIT = "SEA SURFACE TEMPERATURE (Deg C)" - -can view -set v ul; vector/xskip=10/yskip=10 sst[d=1,l=1],sst[d=1,l=2], xval[d=2], yval[d=2]; sh sym labtit -LABTIT = "SEA SURFACE TEMPERATURE (Deg C) , SEA SURFACE TEMPERATURE (Deg C)" -set v ur; vector/xskip=10/yskip=10 sst[d=2,l=1],sst[d=2,l=2], xval[d=2], yval[d=2]; sh sym labtit -LABTIT = "SEA SURFACE TEMPERATURE (Deg C) , SEA SURFACE TEMPERATURE (Deg C)" - -set v ll; contour sst[d=1,l=1], xval[d=2], yval[d=2]; sh sym labtit -LABTIT = "SEA SURFACE TEMPERATURE (Deg C)" -set v lr; contour sst[d=2,l=1], xval[d=2], yval[d=2]; sh sym labtit -LABTIT = "SEA SURFACE TEMPERATURE (Deg C)" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err62_save_missingcoordvar -! err62_save_missingcoordvar.jnl -! see bug 1686 -! The dataset doesn't have a coordinate variable, in this case TIME -! Ferret gives it an abstract axis, but then cant SAVE the variable. - -! This dataset behaves this way -! use "http://test.opendap.org/opendap/data/nc/data.nc" - -! create a local dataset -use timemissing.nc -save/clobber/file=a.nc sst - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_contourbug -! err62_contourbug.jnl -! Bug 1688 -! contours of curvi data when x units not longitude -! some contour lines draw across the plot - -let xb=x[x=0:290:10] -let yb=y[y=0:290:10] -let xb2 = xb + 0*yb -let zb=I[x=0:290:10]*J[y=0:290:10] -contour/hlimits=-100:400:50 xb2+zb,xb2,zb - -! A FILL version of the same general thing -let xb = x[x=0:290:10] -let yb = y[y=0:290:10] -let xb2 = xb + 0*yb -let zb = I[x=0:290:10] * J[y=0:290:10] -fill/hlimits=-100:400:50 0.0000001*(xb2+zb)^3,xb2,zb - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_append_irreg_to_reg -! err62_append_irreg_to_reg.jnl -! bug 1692 - -! See Patrick's report: -! http://www.pmel.noaa.gov/maillists/tmap/ferret_users/fu_2009/msg00620.html -! where he points to another example. -! -! Turns out he was appending irreg time coords to a regular time axis -! and Ferret needs a better error message - -SET MODE IGNORE - -! By default a regular axis gets no bounds on a SAVE -DEFINE AXIS/T t_axis = {1,2,3,4,5} -LET var = T[GT=t_axis] -SAVE/CLOBBER/FILE=t_bug.nc var - -! Now try to append this irregularly-spaced data to the above -DEFINE AXIS/T t_axis = {6,8,9,10,12,13} -SAVE/FILE=t_bug.nc/APPEND var - -! previously the message just said -! ** netCDF error: Variable not found - -! Msg should explain that it was the bounds variable, needed -! for the append, but not found in the existing file. - -SET MODE/LAST IGNORE - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_axis_stride_off -! err62_axis_stride_off.jnl -! fixing bug 1689: offset shifted by 1 so /OFFSET=0 >> start index = 1 -! 1/2017 *acm* changes in output due to backing off auto-detection of truemonth axes, tkt 2497 - -USE truemonth.nc - -SET AXIS/STRIDE=12/OFFSET=0 truemonth ! every January -LIST var - VARIABLE : COS(T[GT=TRUEMONTH]/100) - FILENAME : truemonth.nc - SUBSET : 20 points (TIME) - 16-JAN-1950 / 1: 0.8458605 - 16-JAN-1951 / 2: -0.4792148 - 16-JAN-1952 / 3: -0.0086413 - 16-JAN-1953 / 4: 0.5029880 - 16-JAN-1954 / 5: -0.8600939 - 16-JAN-1955 / 6: 0.9996375 - 16-JAN-1956 / 7: -0.8863128 - 16-JAN-1957 / 8: 0.5403982 - 16-JAN-1958 / 9: -0.0624683 - 16-JAN-1959 / 10: -0.4312768 - 16-JAN-1960 / 11: 0.8159143 - 16-JAN-1961 / 12: -0.9951944 - 16-JAN-1962 / 13: 0.9169914 - 16-JAN-1963 / 14: -0.6068212 - 16-JAN-1964 / 15: 0.1431603 - 16-JAN-1965 / 16: 0.3660465 - 16-JAN-1966 / 17: -0.7727474 - 16-JAN-1967 / 18: 0.9839827 - 16-JAN-1968 / 19: -0.9463078 - 16-JAN-1969 / 20: 0.6617913 - -CAN AXIS/STRIDE `var,return=taxis` - !-> CAN AXIS/STRIDE (AX144) -SET AXIS/STRIDE=12/OFFSET=11 truemonth ! every December -LIST var - VARIABLE : COS(T[GT=TRUEMONTH]/100) - FILENAME : truemonth.nc - SUBSET : 19 points (TIME) - DEC-1950 / 1: -0.7241199 - DEC-1951 / 2: 0.2968155 - DEC-1952 / 3: 0.2153545 - DEC-1953 / 4: -0.6634768 - DEC-1954 / 5: 0.9437761 - DEC-1955 / 6: -0.9853337 - DEC-1956 / 7: 0.7713169 - DEC-1957 / 8: -0.3639512 - DEC-1958 / 9: -0.1354919 - DEC-1959 / 10: 0.6006479 - DEC-1960 / 11: -0.9178868 - DEC-1961 / 12: 0.9949715 - DEC-1962 / 13: -0.8203671 - DEC-1963 / 14: 0.4382506 - DEC-1964 / 15: 0.0647143 - DEC-1965 / 16: -0.5422904 - DEC-1966 / 17: 0.8826929 - DEC-1967 / 18: -0.9998160 - DEC-1968 / 19: 0.8589436 - -SET MODE IGNORE_ERRROR -! Previously didnt check for negative offset value -CAN AXIS/STRIDE `var,return=taxis` - !-> CAN AXIS/STRIDE (AX137) -SET AXIS/STRIDE=12/OFFSET=-1 truemonth - -! Previously didnt give err msg; just ignored non-positive stride value -SET AXIS/STRIDE=-1/OFFSET=1 truemonth - -SET MODE/LAST IGNORE - - - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err62_compound_string_conditional -! err62_compound_string_conditional -! Bug 1380 - -LIST 1 EQ 2 or 3 EQ 3 ! all numeric - VARIABLE : 1 EQ 2 OR 3 EQ 3 - 1.000000 - -LIST "a" EQ "b" - VARIABLE : "a" EQ "b" - 0.0000000 -LIST "b" EQ "b" - VARIABLE : "b" EQ "b" - 1.000000 -LIST "a" EQ "b" OR "b" EQ "b" ! should be 1 - VARIABLE : "a" EQ "b" OR "b" EQ "b" - 1.000000 -LIST "a" EQ "b" AND "b" EQ "b" ! should be 0 - VARIABLE : "a" EQ "b" AND "b" EQ "b" - 0.0000000 - -LIST "a" LE "b" AND 3 EQ 3 ! should be 1 - VARIABLE : "a" LE "b" AND 3 EQ 3 - 1.000000 - -LIST 1 EQ 2 OR "A" EQ "B" ! should be 0 - VARIABLE : 1 EQ 2 OR "A" EQ "B" - 0.0000000 - - -GO bn_reset bn_axis_reversed_syms -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_reversed_syms -GO bn_axis_reversed_syms -! bn_axis_reversed_syms.jnl -! XAXIS_REVERSED and YAXIS_REVERSED are -! set to 0 or if the reversed-axis is -! plotted upside-down, set to 1 - -use gt4d011.cdf -shade/i=91/L=1 temp -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "1" -contour/i=91/j=35 temp -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "1" -vector/k=1/l=4 u,v -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "0" -vector/j=41/l=4 u,v -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "1" -fill/j=41/l=4 temp -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "1" -shade/j=41/k=4 temp -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "0" - -! with /TRANS. None of these will have YAXIS_REVERSED=1 -shade/trans/i=91/L=1 temp -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "0" -contour/trans/i=91/j=35 temp -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "0" -vector/trans/k=1/l=4 u,v -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "0" -vector/trans/j=41/l=4 u,v -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "0" -fill/trans/j=41/l=4 temp -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "0" -shade/trans/j=41/k=4 temp -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "0" - -! in viewports -set view ul; shade/i=91/L=1 temp -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "1" -set view ur; contour/i=91/j=35 temp -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "1" -set view ll; vector/k=1/l=4 u,v -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "0" -set view lr; fill/j=41/l=4 temp -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "1" - -! also set with SHADE/SET -cancel viewports - -shade/set/i=91/L=1 temp -sh sym *axis_reversed -XAXIS_REVERSED = "0" -YAXIS_REVERSED = "1" - - -GO bn_reset bn_isdepth -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_isdepth -GO bn_isdepth -! Tests of `var,RETURN=ISDEPTH` - -define axis/units=meters/z=0:100:2 zup -let zz = z[gz=zup] -say `zz,return=isdep` - !-> MESSAGE/CONTINUE 0 -0 - -define axis/units=meters/z=0:200:2/depth zdn -let zz = z[gz=zdn] -say `zz,return=isdep` - !-> MESSAGE/CONTINUE 1 -1 - -use gtbc011 -say `temp,return=isdepth` - !-> MESSAGE/CONTINUE 1 -1 - -use coads_climatology -say `sst,return=isdepth` - !-> MESSAGE/CONTINUE 0 -0 - -can data 2 - -cancel axis/depth `temp,return=zaxis` - !-> cancel axis/depth PSZT1 -say `temp,return=isdepth` - !-> MESSAGE/CONTINUE 0 -0 - - -GO bn_reset bn_var_hist_levels.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_var_hist_levels.jnl -GO bn_var_hist_levels.jnl -! bn_var_hist_levels.jnl -! Syntax for variance-based or histogram-based levels -! - -use levitus_climatology - -! Variance levels -shade/line/lev=50v/title="/LEV=50v" temp[K=1] - -! New symbol LEV_OPNLEVS captures the levels set with /V or VC -sh sym lev* -LEV_ALL = "-2,-1.495,-0.99,-0.485,0.02,0.525,1.03,1.535,2.04,2.545,3.05,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10,10.5,11,11.5,12,12.5,13,13.5,14,14.5,15,15.5,16,16.5,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,22.5,23,23.5,24,24.5,25,25.45,30.74" -LEV_TEXT = "50V" -LEV_MIN = "-2" -LEV_MAX = "open-ended" -LEV_NUM = "56" -LEV_DEL = "irregular" -LEV_CENTERED_LABELS = "off" -LEV_OPNLEVS = "(-2,3.05,0.505)(3.5,25.5,0.5)(25.5,25.5,0.505)(inf)" - -shade/line/lev=50v,5min/title="/LEV=50v,5min" temp[K=1] -shade/line/lev=50v,5mean/title="/LEV=50v,5mean" temp[K=1] -shade/line/lev=50v,25max/title="/LEV=50v,25max" temp[K=1] -shade/line/lev=50v,1d/title="/LEV=50v,1d" temp[K=1] - -! If the data has lots of negative data, the computation of -! the std deviation was incorrect. See ticket 1778. - -let negvar = -1* temp - -shade/line/lev=50v,-20min/title="/LEV=50v,-20min" negvar[K=1] -shade/line/lev=50v,-15mean/title="/LEV=50v,-15mean" negvar[K=1] -shade/line/lev=50v,-15max/title="/LEV=50v,-15max" negvar[K=1] -shade/line/lev=50v,1d/title="/LEV=50v,1d" negvar[K=1] - -! Histogram-based -shade/line/lev=50h/title="/LEV=50h" temp[K=1] - - -! Need some tests with centered levels and with /LINE - -let cvar = temp - 15 - -shade/line/key/lev=50v/title="/LEV=50v,-20min" cvar[K=1] -shade/line/key/lev=50v/title="/LEV=50v,-15mean" cvar[K=1] -shade/line/key/lev=50v/title="/LEV=50v,-15max" cvar[K=1] -shade/line/key/lev=50v,1d/title="/LEV=50v,1d" cvar[K=1] - - -shade/line/key/lev=cv/title="/LEV=cv" cvar[K=1] -shade/line/key/lev=50/title="/LEV=50" cvar[K=1] -shade/line/key/lev=50c/title="/LEV=50c" cvar[K=1] -shade/line/key/lev=c,1d/title="/LEV=c,1d" cvar[K=1] -shade/line/key/lev=20c,1d/title="/LEV=20c,1d" cvar[K=1] - -! Histogram-based -shade/line/key/lev=50h/title="/LEV=50h" cvar[K=1] - - -! ******** V6.4 Additions below *********** - -GO bn_reset bn64_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn64_bug_fixes -GO bn64_bug_fixes -! bn64_bug_fixes.jnl -! Fixes that go into v6.4 release - -! (changes were made to err62_if_inside_repeat.jnl -! which is run previously.) - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err63_days1900toydmhms -! err63_days1900toydmhms.jnl -! -! Bug reported by Jaison Kurian -! 32-bit linux, this returned the wrong month -! and day for start of March. - -define axis/t=21241:21245:1 tax -let julshift = DAYS1900(1950,1,1) -let julday = t[gt=tax] + julshift -let tpts = DAYS1900TOYMDHMS(julday) -list/k=2:3 tpts - VARIABLE : DAYS1900TOYMDHMS(JULDAY) - SUBSET : 2 by 5 points (Z-T) - 2 3 - 2 3 - 21241 / 1: 2.00000 27.00000 - 21242 / 2: 2.00000 28.00000 - 21243 / 3: 2.00000 29.00000 - 21244 / 4: 3.00000 1.00000 - 21245 / 5: 3.00000 2.00000 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err63_log_vaxis -! err63_log_vaxis.jnl -! fix for bug 1708 -! This example from Patrick Brockmann. - -! ok -set view left -def axis/z=10:10000:10 vert_axis_up -plot/vlog z[gz=vert_axis_up] - - -! not ok : left vertical log axis is down. right vertical axis is up -set view right -def axis/z=10:10000:10/depth vert_axis_dn -plot/vlog z[gz=vert_axis_dn] - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err63_delim_E.jnl -! err63_delim_E.jnl -! bug 1700 -! On delimited reads, looking for strings ending with E for longitudes. -! But need to check if its just a string ending in E such as ZAIRE - -sp rm -f names -sp echo ZAIRE > names -sp echo E >> names -columns names -list v1 - VARIABLE : V1 - FILENAME : names - SUBSET : 2 points (X) - 1 / 1:"ZAIRE" - 2 / 2:"E" - -can dat/all -sp rm -f names -sp echo zaire > names -columns names -list v1 - VARIABLE : V1 - FILENAME : names - X : 1 - "zaire" - -can dat/all -sp rm -f names -sp echo ZAIRA > names -columns names -list v1 - VARIABLE : V1 - FILENAME : names - X : 1 - "ZAIRA" - -GO bn_reset bn_long_grid_names -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_long_grid_names -GO bn_long_grid_names -! bn_long_grid_names.jnl -! test longer grid names (16 --> 64 chars) -! tests taken from other bn scripts but with longer grid names - -! read onto a 2D grid -DEFINE AXIS/X=1:3:1 xez1 -DEFINE GRID/X=XEZ1/Y=EZ ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 - -FILE/VAR="X1,X2"/COLUMNS=6/GRID=ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 EZ.DAT -SHOW DATA/FULL - currently SET data sets: - 1> ./data/EZ.DAT (default) - - name title I J K L - X1 X1 1:3 1:20480 ... ... - on grid ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 with -1.E+34 for missing data - X=0.5:3.5 Y=0.5:2.05E+04 - X2 X2 1:3 1:20480 ... ... - on grid ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 with -1.E+34 for missing data - X=0.5:3.5 Y=0.5:2.05E+04 - - /FORMAT = FREE - /SKIP = 0 - /COLUMNS = 6 -LIST X1 - VARIABLE : X1 - FILENAME : EZ.DAT - SUBSET : 3 by 5 points (X-Y) - 1 2 3 - 1 2 3 - 1 / 1: 0.0060000 0.1760000 0.2820000 - 2 / 2: 0.3550000 0.3790000 0.3930000 - 3 / 3: 0.4100000 0.4170000 0.4670000 - 4 / 4: 0.4350000 0.4440000 0.4700000 - 5 / 5: 0.4780000 0.5150000 0.4690000 -SHOW DATA - currently SET data sets: - 1> ./data/EZ.DAT (default) - name title I J K L - X1 X1 1:3 1:5 ... ... - X2 X2 1:3 1:5 ... ... - -CAN DATA/ALL - -define axis/x=2:20:2 xeven -define axis/x=1:19:2 xodd -define axis/y=2:20:2 yeven -define axis/y=1:19:2 yodd -define axis/z=2:20:2 zeven -define axis/z=1:19:2 zodd -define axis/t=2:20:2/t0="1-jan-1980"/unit=days teven -define axis/t=1:19:2/t0="1-jan-1980"/unit=days todd - -define grid/x=xeven/y=yeven/z=zeven/t=teven even - -define grid/x=xodd/y=yodd/z=zodd/t=todd g00abcdefghijklmnopqrstuvwxyz1234567890 - -LET veven = 1000*i[g=even] + 100*j[g=even] + 10*k[g=even] + l[g=even] - -LET v1234 = veven[g=g00abcdefghijklmnopqrstuvwxyz1234567890] - -SET REGION/X=4.01:8.99/Y=4.01:8.99/Z=4.01:8.99/T=4.01:8.99 - -list veven - VARIABLE : 1000*I[G=EVEN] + 100*J[G=EVEN] + 10*K[G=EVEN] + L[G=EVEN] - SUBSET : 3 by 3 by 3 by 3 points (X-Y-Z-TIME) - 4 6 8 - 2 3 4 - ---- L:2 T: 05-JAN-1980 00:00 - ---- K:2 Z: 4 - 4 / 2: 2222.000 3222.000 4222.000 - 6 / 3: 2322.000 3322.000 4322.000 - 8 / 4: 2422.000 3422.000 4422.000 - ---- K:3 Z: 6 - 4 / 2: 2232.000 3232.000 4232.000 - 6 / 3: 2332.000 3332.000 4332.000 - 8 / 4: 2432.000 3432.000 4432.000 - ---- K:4 Z: 8 - 4 / 2: 2242.000 3242.000 4242.000 - 6 / 3: 2342.000 3342.000 4342.000 - 8 / 4: 2442.000 3442.000 4442.000 - ---- L:3 T: 07-JAN-1980 00:00 - ---- K:2 Z: 4 - 4 / 2: 2223.000 3223.000 4223.000 - 6 / 3: 2323.000 3323.000 4323.000 - 8 / 4: 2423.000 3423.000 4423.000 - ---- K:3 Z: 6 - 4 / 2: 2233.000 3233.000 4233.000 - 6 / 3: 2333.000 3333.000 4333.000 - 8 / 4: 2433.000 3433.000 4433.000 - ---- K:4 Z: 8 - 4 / 2: 2243.000 3243.000 4243.000 - 6 / 3: 2343.000 3343.000 4343.000 - 8 / 4: 2443.000 3443.000 4443.000 - ---- L:4 T: 09-JAN-1980 00:00 - ---- K:2 Z: 4 - 4 / 2: 2224.000 3224.000 4224.000 - 6 / 3: 2324.000 3324.000 4324.000 - 8 / 4: 2424.000 3424.000 4424.000 - ---- K:3 Z: 6 - 4 / 2: 2234.000 3234.000 4234.000 - 6 / 3: 2334.000 3334.000 4334.000 - 8 / 4: 2434.000 3434.000 4434.000 - ---- K:4 Z: 8 - 4 / 2: 2244.000 3244.000 4244.000 - 6 / 3: 2344.000 3344.000 4344.000 - 8 / 4: 2444.000 3444.000 4444.000 -list v1234 - VARIABLE : VEVEN[G=G00ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890] - SUBSET : 3 by 3 by 3 by 3 points (X-Y-Z-TIME) - 5 7 9 - 3 4 5 - ---- L:3 T: 06-JAN-1980 00:00 - ---- K:3 Z: 5 - 5 / 3: 2777.500 3777.500 4777.500 - 7 / 4: 2877.500 3877.500 4877.500 - 9 / 5: 2977.500 3977.500 4977.500 - ---- K:4 Z: 7 - 5 / 3: 2787.500 3787.500 4787.500 - 7 / 4: 2887.500 3887.500 4887.500 - 9 / 5: 2987.500 3987.500 4987.500 - ---- K:5 Z: 9 - 5 / 3: 2797.500 3797.500 4797.500 - 7 / 4: 2897.500 3897.500 4897.500 - 9 / 5: 2997.500 3997.500 4997.500 - ---- L:4 T: 08-JAN-1980 00:00 - ---- K:3 Z: 5 - 5 / 3: 2778.500 3778.500 4778.500 - 7 / 4: 2878.500 3878.500 4878.500 - 9 / 5: 2978.500 3978.500 4978.500 - ---- K:4 Z: 7 - 5 / 3: 2788.500 3788.500 4788.500 - 7 / 4: 2888.500 3888.500 4888.500 - 9 / 5: 2988.500 3988.500 4988.500 - ---- K:5 Z: 9 - 5 / 3: 2798.500 3798.500 4798.500 - 7 / 4: 2898.500 3898.500 4898.500 - 9 / 5: 2998.500 3998.500 4998.500 - ---- L:5 T: 10-JAN-1980 00:00 - ---- K:3 Z: 5 - 5 / 3: 2779.500 3779.500 4779.500 - 7 / 4: 2879.500 3879.500 4879.500 - 9 / 5: 2979.500 3979.500 4979.500 - ---- K:4 Z: 7 - 5 / 3: 2789.500 3789.500 4789.500 - 7 / 4: 2889.500 3889.500 4889.500 - 9 / 5: 2989.500 3989.500 4989.500 - ---- K:5 Z: 9 - 5 / 3: 2799.500 3799.500 4799.500 - 7 / 4: 2899.500 3899.500 4899.500 - 9 / 5: 2999.500 3999.500 4999.500 -stat veven - - 1000*I[G=EVEN] + 100*J[G=EVEN] + 10*K[G=EVEN] + L[G=EVEN] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2222 - Maximum value: 4444 - Mean value: 3333 (unweighted average) - Standard deviation: 825.72 - -! first all from one memory variable -load/x=1:11/y=1:11/z=1:11/t=1:11 veven -stat v1234[g=even]-veven, v1234 - - V1234[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G00ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: 4.01 to 8.99 - TIME: 05-JAN-1980 00:14 to 09-JAN-1980 23:45 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 81 (3*3*3*3*1*1) - # flagged as bad data: 0 - Minimum value: 2777.5 - Maximum value: 4999.5 - Mean value: 3888.5 (unweighted average) - Standard deviation: 825.72 - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -! regrid_transforms -use gtsa056_1 -use gtsa056_2 -set mode diag - -define axis/t=15-jan-1982:15-mar-1984:120/unit=hour tax5day -define axis/x=120e:60w:10/unit=degrees xax10 -define grid/like=u/t=tax5day g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day - getgrid EX#1 C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 -define grid/like=u/x=xax10/z=w/t=tax5day g5_10g00abcdefghijklmnopqrstuvwxyz1234567890 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - getgrid EX#1 C: 8 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - getgrid EX#1 C: 9 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DW11 PSXT PSYT1 PSZW TIME29 - -set reg/x=130w:125w/y=0:1.5/z=0:15/t=21-JAN-1982:24-jan-1982 -!set reg/i=101:105/j=41:42/k=1:2/l=3:4 - -use gtsa056_1 !kob 4/99 - -LIST temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890@ave] - dealloc dynamic grid PS3DW11 PSXT PSYT1 PSZW TIME29 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10G00ABCDEFGH @AAV - strip regrid on Z: TEMP --> XNTERMED @AVE - strip regrid on T: TEMP --> ZNTERMED @AVE - reading TEMP M:241 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M:240 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M:239 dset: 1 I: 95 106 J: 45 50 K: 1 1 L: 2 3 - -DELETE TEMP M:240 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M:240 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M:239 dset: 1 I: 95 106 J: 45 50 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10G00ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 on X@AAV, on Y@AAV, - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 23.88290 23.97420 24.14894 24.37499 24.62556 - 25-JAN-1982 00 / 3: 23.88501 23.98344 24.16565 24.39832 24.65027 -LIST temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890,gx=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890@ave] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @AVE - strip regrid on Y: TEMP --> XNTERMED @LIN - strip regrid on Z: TEMP --> YNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @LIN - found TEMP M:241 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M:239 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M:228 dset: 1 I: 95 106 J: 45 50 K: 1 1 L: 2 3 - -DELETE TEMP M:239 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M:239 dset: 1 I: 95 106 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M:228 dset: 1 I: 95 106 J: 45 50 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - regrid TEMP M:228 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M:239 dset: 1 I: 95 106 J: 45 49 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10 on X@AVE, on Y@LIN, on Z@LIN, on T@LIN - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 23.88380 23.97520 24.15006 24.37614 24.62650 - 25-JAN-1982 00 / 3: 23.87741 23.97277 24.15346 24.38574 24.63814 - -LIST temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890,gt=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890@asn] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - strip regrid on X: TEMP --> G5_10 @LIN - strip regrid on Z: TEMP --> XNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @ASN - found TEMP M:241 dset: 1 I: 95 106 J: 45 50 K: 1 2 L: 2 5 - regrid TEMP M:239 dset: 1 I: 100 101 J: 45 50 K: 1 2 L: 2 3 - regrid TEMP M:227 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 - -DELETE TEMP M:239 dset: 1 I: 100 101 J: 45 50 K: 1 2 L: 2 3 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M:239 dset: 1 I: 12 12 J: 45 49 K: 1 1 L: 2 3 - -DELETE TEMP M:227 dset: 1 I: 100 101 J: 45 50 K: 1 1 L: 2 3 M: -999 -999 N: -999 -999 - VARIABLE : TEMPERATURE (deg. C) - regrid: G5_10 on X@LIN, on Y@LIN, on Z@LIN, on T@ASN - FILENAME : gtsa056_1.cdf - SUBSET : 5 by 2 points (LATITUDE-TIME) - LONGITUDE: 130W - DEPTH (m): 10 - 0 0.33N 0.67N 1N 1.33N - 45 46 47 48 49 - 20-JAN-1982 00 / 2: 23.75267 23.76377 23.87293 24.04456 24.25203 - 25-JAN-1982 00 / 3: 23.74388 23.73211 23.81637 23.96577 24.15370 - -! T axis -use gtsa056_2 !kob 4/99 -set region/x=180W/y=0/z=5/t=21-JAN-1982:13-JUN-1983 -load temp[i=50:51,j=45:56,k=1:2,l=1:172] ! preload to save time - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DT1 PSXT PSYT1 PSZT2 TIME29 - eval EX#1 C: 4 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - strip moduloing TEMP on T axis: 1 172 dset: 2 - reading TEMP M:227 dset: 2 I: 50 51 J: 45 50 K: 1 2 L: 1 168 - doing moduloing TEMP on T axis: 1 168 dset: 2 -plot temp - dealloc dynamic grid PS3DT1 PSXT PSYT1 PSZT2 TIME29 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DT1 PSXT PSYT1 PSZT2 TIME29 - eval EX#1 C: 4 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 3 170 - found TEMP M:230 dset: 2 I: 50 51 J: 45 50 K: 1 2 L: 1 172 -setting up plot -PPL plot 758 complete -plot/over temp[g=u] - dealloc dynamic grid PS3DT1 PSXT PSYT1 PSZT2 TIME29 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - eval EX#1 C: 4 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 3 170 - strip moduloing TEMP on T axis: 3 170 dset: 2 - strip regrid on X: TEMP --> PS3DU1 @LIN - found TEMP M:230 dset: 2 I: 50 51 J: 45 50 K: 1 2 L: 1 172 - regrid XY - regrid TEMP M:226 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 3 168 - doing moduloing TEMP on T axis: 3 168 dset: 2 - strip regrid on X: TEMP --> PS3DU1 @LIN - found TEMP M:230 dset: 2 I: 50 51 J: 45 50 K: 1 2 L: 1 172 - regrid XY - regrid TEMP M:215 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 1 2 - doing moduloing TEMP on T axis: 1 2 dset: 2 -setting up plot -PPL plot 759 complete -plot/over temp[g=g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5DAYG5DAYG5DAYG @LIN - strip regrid on T: TEMP --> XNTERMED @LIN - found TEMP M:230 dset: 2 I: 50 51 J: 45 50 K: 1 2 L: 1 172 - regrid TEMP M:206 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 2 104 - regrid XY - regrid TEMP M:204 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 2 104 - -DELETE TEMP M:206 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 -setting up plot -PPL plot 760 complete -plot/over temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890] - dealloc dynamic grid G5DAYG5DAYG5DAYGPSXU PSYU PSZT2 TAX5DAY - -DELETE TEMP M:204 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 2 104 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5_10G00ABCDEFGH @LIN - strip regrid on Z: TEMP --> XNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @LIN - found TEMP M:230 dset: 2 I: 50 51 J: 45 50 K: 1 2 L: 1 172 - regrid TEMP M:204 dset: 2 I: 50 51 J: 45 46 K: 1 2 L: 2 104 - regrid TEMP M:206 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 2 104 - -DELETE TEMP M:204 dset: 2 I: 50 51 J: 45 46 K: 1 2 L: 2 104 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M:204 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 - -DELETE TEMP M:206 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 -setting up plot -PPL plot 761 complete -plot/over temp[g=u@ave] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - eval EX#1 C: 4 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 3 170 - strip moduloing TEMP on T axis: 3 170 dset: 2 - strip regrid on X: TEMP --> PS3DU1 @AAV - found TEMP M:230 dset: 2 I: 50 51 J: 45 50 K: 1 2 L: 1 172 - regrid XY - regrid TEMP M:206 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 3 168 - doing moduloing TEMP on T axis: 3 168 dset: 2 - strip regrid on X: TEMP --> PS3DU1 @AAV - found TEMP M:230 dset: 2 I: 50 51 J: 45 50 K: 1 2 L: 1 172 - regrid XY - regrid TEMP M:195 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 1 2 - doing moduloing TEMP on T axis: 1 2 dset: 2 -setting up plot -PPL plot 762 complete -plot/over temp[g=g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day@ave] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5DAYG5DAYG5DAYG @AAV - strip regrid on T: TEMP --> XNTERMED @AVE - found TEMP M:230 dset: 2 I: 50 51 J: 45 50 K: 1 2 L: 1 172 - regrid TEMP M:193 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 2 104 - regrid XY - regrid TEMP M:192 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 2 104 - -DELETE TEMP M:193 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 -setting up plot -PPL plot 763 complete -plot/over temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890@ave] - dealloc dynamic grid G5DAYG5DAYG5DAYGPSXU PSYU PSZT2 TAX5DAY - -DELETE TEMP M:192 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 2 104 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5_10G00ABCDEFGH @AAV - strip regrid on Z: TEMP --> XNTERMED @AVE - strip regrid on T: TEMP --> ZNTERMED @AVE - strip moduloing TEMP on T axis: 2 171 dset: 2 - reading TEMP M:192 dset: 2 I: 45 56 J: 45 46 K: 1 2 L: 1 168 - doing moduloing TEMP on T axis: 1 168 dset: 2 - regrid TEMP M:190 dset: 2 I: 45 56 J: 45 46 K: 1 2 L: 2 104 - regrid TEMP M:220 dset: 2 I: 45 56 J: 45 46 K: 1 1 L: 2 104 - -DELETE TEMP M:190 dset: 2 I: 45 56 J: 45 46 K: 1 2 L: 2 104 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M:190 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 - -DELETE TEMP M:220 dset: 2 I: 45 56 J: 45 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 -setting up plot -PPL plot 764 complete -plot/over temp[g=u@asn] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - eval EX#1 C: 4 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 3 170 - strip moduloing TEMP on T axis: 3 170 dset: 2 - strip regrid on X: TEMP --> PS3DU1 @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - found TEMP M:193 dset: 2 I: 45 56 J: 45 46 K: 1 2 L: 2 171 - regrid TEMP M:220 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 3 168 - regrid TEMP M:223 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 3 168 - -DELETE TEMP M:220 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 3 168 M: -999 -999 N: -999 -999 - doing moduloing TEMP on T axis: 3 168 dset: 2 - strip regrid on X: TEMP --> PS3DU1 @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - found TEMP M:192 dset: 2 I: 45 56 J: 45 46 K: 1 2 L: 1 168 - regrid TEMP M:224 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 1 2 - regrid TEMP M:216 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 1 2 - -DELETE TEMP M:224 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 1 2 M: -999 -999 N: -999 -999 - doing moduloing TEMP on T axis: 1 2 dset: 2 -setting up plot -PPL plot 765 complete -plot/over temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890@asn] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5_10G00ABCDEFGH @ASN - strip regrid on Y: TEMP --> XNTERMED @ASN - strip regrid on Z: TEMP --> YNTERMED @ASN - strip regrid on T: TEMP --> ZNTERMED @ASN - reading TEMP M:224 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 - regrid TEMP M:209 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 - regrid TEMP M:191 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 - -DELETE TEMP M:209 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 - regrid TEMP M:209 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 - -DELETE TEMP M:191 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 - regrid TEMP M:191 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 - -DELETE TEMP M:209 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 -setting up plot -PPL plot 766 complete -plot/over temp[g=u,gt=u@ave] - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - eval EX#1 C: 4 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 3 170 - allocate dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - found TEMP M:205 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 3 170 - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 -setting up plot -PPL plot 767 complete -plot/over temp[g=g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day,gt=g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day@ave] - dealloc dynamic grid PS3DU1 PSXU PSYU PSZT2 TIME29 - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5DAYG5DAYG5DAYG @LIN - strip regrid on T: TEMP --> XNTERMED @AVE - found TEMP M:193 dset: 2 I: 45 56 J: 45 46 K: 1 2 L: 2 171 - regrid TEMP M:209 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 2 104 - regrid XY - regrid TEMP M:221 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 2 104 - -DELETE TEMP M:209 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 -setting up plot -PPL plot 768 complete -plot/over temp[g=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890,gt=g5_10g00abcdefghijklmnopqrstuvwxyz1234567890@ave] - dealloc dynamic grid G5DAYG5DAYG5DAYGPSXU PSYU PSZT2 TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5_10 @LIN - strip regrid on Z: TEMP --> XNTERMED @LIN - strip regrid on T: TEMP --> ZNTERMED @AVE - found TEMP M:193 dset: 2 I: 45 56 J: 45 46 K: 1 2 L: 2 171 - regrid TEMP M:209 dset: 2 I: 50 51 J: 45 46 K: 1 2 L: 2 104 - regrid TEMP M:217 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 2 104 - -DELETE TEMP M:209 dset: 2 I: 50 51 J: 45 46 K: 1 2 L: 2 104 M: -999 -999 N: -999 -999 - regrid XY - regrid TEMP M:209 dset: 2 I: 7 7 J: 45 45 K: 1 1 L: 2 104 - -DELETE TEMP M:217 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 -setting up plot -PPL plot 769 complete -plot/over temp[g=g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day,gt=g5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5dayg5day@asn] ! invalid interpretation of data - dealloc dynamic grid G5_10 XAX10 PSYU PSZW TAX5DAY - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 2 104 - strip regrid on X: TEMP --> G5DAYG5DAYG5DAYG @LIN - strip regrid on T: TEMP --> XNTERMED @ASN - found TEMP M:193 dset: 2 I: 45 56 J: 45 46 K: 1 2 L: 2 171 - regrid TEMP M:217 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 2 104 - regrid XY - regrid TEMP M:189 dset: 2 I: 50 50 J: 45 45 K: 1 1 L: 2 104 - -DELETE TEMP M:217 dset: 2 I: 50 51 J: 45 46 K: 1 1 L: 2 104 M: -999 -999 N: -999 -999 -setting up plot -PPL plot 770 complete - - -set mode/last diag - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -! regrid_to_user - -use coads_climatology -use levitus_climatology - -! define test objects -let a = sst[d=coads_climatology] + 1 -let b = sst + 1 ! data set unspecified -DEFINE AXIS/Y=20s:20n:.5/units=degrees yax -DEFINE GRID/like=sst[d=coads_climatology]/y=yax gg12345678901234567890 - -! reference data -list/x=158e:161e/y=6s:4s temp[d=2,k=1] - VARIABLE : TEMPERATURE (DEG C) - FILENAME : levitus_climatology.cdf - SUBSET : 3 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 0 - 158.5E 159.5E 160.5E - 139 140 141 - 4.5S / 86: 29.51100 29.44300 29.38000 - 5.5S / 85: 29.58900 29.52500 29.45700 - -! basic regrid (implicit grid -- sst and temp geometries are mismatched) -list/x=160e/y=5s temp[d=2,k=1,g=a[d=1]] - VARIABLE : TEMPERATURE (DEG C) - regrid: 2 deg on X, 2 deg on Y - FILENAME : levitus_climatology.cdf - LONGITUDE: 159E - LATITUDE : 5S - DEPTH (m): 0 - 29.51700 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G102) - GRID (G102) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 1 pt - normal T - -! per axis regrid -! 5/01 note: changed from y=0 yo y=5s to accomodate Y-truncated -! levitus_climatology.cdf -list/x=160e/y=5s temp[d=2,k=1,gx=a[d=1],gy=yax] - VARIABLE : TEMPERATURE (DEG C) - regrid: 2 deg on X, 0.5 deg on Y - FILENAME : levitus_climatology.cdf - LONGITUDE: 159E - LATITUDE : 5S - DEPTH (m): 0 - 29.51700 -list/x=160e/y=5s temp[d=2,k=1,gy=yax,gx=a[d=1]] - VARIABLE : TEMPERATURE (DEG C) - regrid: 2 deg on X, 0.5 deg on Y - FILENAME : levitus_climatology.cdf - LONGITUDE: 159E - LATITUDE : 5S - DEPTH (m): 0 - 29.51700 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G102) - GRID (G102) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - YAX LATITUDE 81 r 20S 20N full - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 1 pt - normal T - -! combined full grid and per-axis -list/x=160e/y=5s temp[d=2,k=1,g=gg12345678901234567890,gx=a[d=1]] - VARIABLE : TEMPERATURE (DEG C) - regrid: 2 deg on X, 0.5 deg on Y - FILENAME : levitus_climatology.cdf - LONGITUDE: 159E - LATITUDE : 5S - DEPTH (m): 0 - 29.51700 -list/x=160e/y=5s temp[d=2,k=1,gx=a[d=1],g=gg12345678901234567890] - VARIABLE : TEMPERATURE (DEG C) - regrid: 2 deg on X, 0.5 deg on Y - FILENAME : levitus_climatology.cdf - LONGITUDE: 159E - LATITUDE : 5S - DEPTH (m): 0 - 29.51700 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G102) - GRID (G102) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - YAX LATITUDE 81 r 20S 20N full - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 1 pt - normal T - -! pseudo-variable access -list/i=1:4 i[g=a] ! a is previously loaded - VARIABLE : I - axis COADSX - SUBSET : 4 points (LONGITUDE) - 21E / 1: 1.000000 - 23E / 2: 2.000000 - 25E / 3: 3.000000 - 27E / 4: 4.000000 -let c = a -list/i=1:4 i[g=c] ! c is not previously loaded - VARIABLE : I - axis COADSX - SUBSET : 4 points (LONGITUDE) - 21E / 1: 1.000000 - 23E / 2: 2.000000 - 25E / 3: 3.000000 - 27E / 4: 4.000000 -let d = c -list/i=1:4 x[gx=d] - VARIABLE : X - axis COADSX - SUBSET : 4 points (LONGITUDE) - 21E / 1: 21.00000 - 23E / 2: 23.00000 - 25E / 3: 25.00000 - 27E / 4: 27.00000 - -! DEFINE GRID based on a user-defined variable -let e = d -DEFINE GRID/LIKE=e/x=temp[d=levitus_climatology] gg123456789012345678901 -show grid gg123456789012345678901 - GRID GG123456789012345678901 - name axis # pts start end - XAXLEVITR1_160 LONGITUDE 160mr 20.5E 179.5E - COADSY LATITUDE 90 r 89S 89N - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 -let f = sst[y=20s:20n:.1,d=coads_climatology] -DEFINE GRID/LIKE=f/x=temp[d=levitus_climatology] gg123456789012345678902 -cancel variable f -show grid gg123456789012345678902 - GRID GG123456789012345678902 - name axis # pts start end - XAXLEVITR1_160 LONGITUDE 160mr 20.5E 179.5E - (AX009) LATITUDE 401 r 20S 20N - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - AXIS (AX054) use count: 13 - AXIS (AX052) use count: 13 - AXIS (AX009) use count: 2 - -! demonstrate proper management of dynamic axes -DEFINE GRID/LIKE=gg123456789012345678902 gg123456789012345678903 -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - AXIS (AX054) use count: 13 - AXIS (AX052) use count: 13 - AXIS (AX009) use count: 3 -DEFINE GRID/like=temp[d=levitus_climatology] gg123456789012345678902 -show grid gg123456789012345678902 - GRID GG123456789012345678902 - name axis # pts start end - XAXLEVITR1_160 LONGITUDE 160mr 20.5E 179.5E - YAXLEVITR1_90 LATITUDE 90 r 89.5S 0.5S - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 - normal T -show grid/dynamic -Dynamic grids: - no implicit grids -Dynamic axes: - AXIS (AX054) use count: 13 - AXIS (AX052) use count: 13 - AXIS (AX009) use count: 2 - -! SET GRID using a user-defined variable -let g = sst[x=0:30:.1,d=coads_climatology] -set grid g -show grid - Default grid for DEFINE VARIABLE is G - Last successful data access was on grid GG2 - GRID GG2 - name axis # pts start end subset - XAXLEVITR1_160 LONGITUDE 160mr 20.5E 179.5E full - YAXLEVITR1_90 LATITUDE 90 r 89.5S 0.5S full - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 full - normal T - -! The SET GRID (default) definition should be protected -- not altered -load/d=coads_climatology sst[y=-10:10:.1,l=1,x=160e] -show grid - Default grid for DEFINE VARIABLE is G - Last successful data access was on grid (G102) - GRID (G102) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) 1 pt - (AX121) LATITUDE 201 r 10S 10N 201 pts - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 1 pt -show grid/dynamic -Dynamic grids: - GRID (G102) use count: 1 - name axis # pts start end - COADSX LONGITUDE 180mr 21E 19E(379) - (AX121) LATITUDE 201 r 10S 10N - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 - -! deliberate errors -set mode ignore -load/x=160e/y=5s temp[d=2,k=1,g=no_exist12345678901234567890] ! non-existent target variable - -set mode/last ignore - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -! dynamic grid commands - -use coads_climatology -use levitus_climatology - -DEFINE GRID/LIKE="temp[d=2,gx=sst[d=1],y=10s:2s:.2] + 5" mygrid_123456789012345678901234567890 -SHOW GRID mygrid_123456789012345678901234567890 - GRID MYGRID_123456789012345678901234567890 - name axis # pts start end - COADSX LONGITUDE 180mr 21E 19E(379) - (AX132) LATITUDE 41 r 10S 2S - ZAXLEVITR1_1 DEPTH (m) 1 r- 0 0 - normal T - -GO bn_reset bn_xml_repl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_xml_repl -GO bn_xml_repl -! bn_xml_repl.jnl -! replace > and < and & with their html equivalents. - -! make a short file -let/units="meters" myvar = 7 -save/clobber/file=a.nc myvar -can var/all -use a.nc - -set var/title="a title with & and > and < characters" myvar -set var/units="<<" myvar -define att myvar.history = "Adding some ampersands.& & to the history" -sh dat/xml/var - - - - - - - - - - - - -1.E+34 - - - -1.E+34 - - - - - - - - - - - - - - - - - -! ******** V6.5 Additions below *********** - -GO bn_reset bn65_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn65_bug_fixes -GO bn65_bug_fixes -! bn65_bug_fixes.jnl -! Fixes that go into v6.5 release - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err64_very_small_latlon -! err64_very_small_latlon.jnl -! Based on a report and data file from Jean Newman. - -use err64_small_latlon - -! crashed because of formats for lon/lat axis labels. -shade bathy - -! This one uses so many digits it will not be formatted -shade/i=1:10/j=1:10 bathy - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err64_packed_data -! err64_packed_data.jnl -! Test writing packed data. Prior to v6.4 this example shows the -! crash described in bug 1715. -! 4/15/19: Output changes with fix to issue 334: coordinates are not -! regular but have a point_spacing="even" attribute. Ferret now checks -! and overrides this. - -! ncpdq from NCO operators -! sp ncpdq fine_x_axis.nc err64_packed_data.nc -use err64_packed_data.nc -sh att/all sst - attributes for dataset: ./data/err64_packed_data.nc - SST.missing_value = 1.E+20 - SST._FillValue = 1.E+20 - SST.long_name = sea surface temperature [degc] - SST.history = From ghrsst_global - SST.scale_factor = -1.263447E-04 - SST.add_offset = 27.32 - -! check that the coordinates packed by ncpdq are unpacked ok. -list/i=1:15 sst - VARIABLE : sea surface temperature [degc] - FILENAME : err64_packed_data.nc - SUBSET : 15 points (LONGITUDE) - LATITUDE : 0.025S - Z (count): 1 - TIME : 01-APR-2006 00:00 - 0S - 1 - 179.972W / 1: 27.49991 - 179.923W / 2: 27.47995 - 179.873W / 3: 27.46997 - 179.824W / 4: 27.46997 - 179.775W / 5: 27.44988 - 179.72W / 6: 27.42992 - 179.67W / 7: 27.42992 - 179.621W / 8: 27.42992 - 179.571W / 9: 27.44988 - 179.522W / 10: 27.45999 - 179.472W / 11: 27.46997 - 179.423W / 12: 27.45999 - 179.374W / 13: 27.46997 - 179.324W / 14: 27.47995 - 179.275W / 15: 27.48993 - -! we can write the data out - saving the scaling to re-pack. -set att/output sst.scale_factor -set att/output sst.add_offset - -! With double-precision Ferret, need to write as float, -! or the FillValue cant be represnted. - -set var/outtype=float sst - -save/clobber/file=mypack.nc/i=1:15 sst -can data/all; use mypack.nc -sh att/all sst - attributes for dataset: ./mypack.nc - SST.missing_value = 1.E+20 - SST._FillValue = 1.E+20 - SST.long_name = sea surface temperature [degc] - SST.history = From ghrsst_global - SST.scale_factor = -1.263447E-04 - SST.add_offset = 27.32 - SST.Ferret_Precision_Note = This variable written using Ferret was converted from SHORT to FLOAT - -list/i=1:15 sst - VARIABLE : sea surface temperature [degc] - FILENAME : mypack.nc - SUBSET : 15 points (LONGITUDE) - LATITUDE : 0.025S - Z (count): 1 - TIME : 01-APR-2006 00:00 - 0S - 1 - 179.972W / 1: 27.49991 - 179.923W / 2: 27.47995 - 179.873W / 3: 27.46997 - 179.824W / 4: 27.46997 - 179.775W / 5: 27.44988 - 179.72W / 6: 27.42992 - 179.67W / 7: 27.42992 - 179.621W / 8: 27.42992 - 179.571W / 9: 27.44988 - 179.522W / 10: 27.45999 - 179.472W / 11: 27.46997 - 179.423W / 12: 27.45999 - 179.374W / 13: 27.46997 - 179.324W / 14: 27.47995 - 179.275W / 15: 27.48993 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO bn_repl_9999999 -! bn_repl_9999999.jnl -! Bug 1717 -! Bug on 64-bit ferret, replacing variable var= .9999999 -! which should just evaluate to 1. TM_FMT wound up with a -! fortran FORMAT(I0) to write the value to the new command line. - -let var=0.9999999 -def view/xlim=0,`var`/ylim=0,1 view9999999 - !-> def view/xlim=0,0.9999999/ylim=0,1 view9999999 -can view view9999999 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err64_shakey_missingdata -! err64_shakey_missingdata.jnl -! starting with v6.2 a polygon plot with all missing data. -! The shakey is just blank, not the requested colors. -! -! was ok ferret_v6193 -! Linux(g77) 2.4.21-32 - 02/18/09 -! -! Not FERRET v6.194 -! Linux(g77) 2.4.21-32 - 03/03/09 -! -! This is in fillpol - the fix to bug 1641 - -! Define some data; zpts all missing -let xpts = {3,5,6,7,8,9,10,13,15,16,17,18,19,21,22} -let ypts = {1,2,3,4,5,6, 7, 8, 9, 4, 5, 6, 7, 8, 9} -let zpts = { , , , , , , , , , , , , , , } - -plot/vs/line xpts,ypts -go polytube polygon/over/key/lev=(0,6,1) xpts,ypts,zpts - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err64_return_precision -!err64_return_precision.jnl -! most of these resulted in *** - format too small. -! see bug1611 - -say `.099,p=-1` - !-> MESSAGE/CONTINUE 0.1 -0.1 - -say `.99,p=-1` - !-> MESSAGE/CONTINUE 1.0 -1.0 - -say `9.99,p=-1` - !-> MESSAGE/CONTINUE 10.0 -10.0 - -say `99.99,p=-1` - !-> MESSAGE/CONTINUE 100.0 -100.0 - -say `999.99,p=-1` - !-> MESSAGE/CONTINUE 1000.0 -1000.0 - -say `999.999,p=-2` - !-> MESSAGE/CONTINUE 1000.00 -1000.00 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err64_parse_equals -! err64_parse_equals -! Bug1469 (and duplicate 1690) -! Parsing equals sign when it is in a string within -! grave accents. - -say `"+" EQ " "` - !-> MESSAGE/CONTINUE 0 -0 - -say `"=" EQ "="` - !-> MESSAGE/CONTINUE 1 -1 - -DEFINE SYMBOL my_sym = `UPCASE("/lev=(0,30,2)")` - !-> DEFINE SYMBOL my_sym = /LEV=(0,30,2) - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err64_regrid_noleap -! err64_regrid_noleap.jnl -! -! Bug 1723 -! Seen only under 32-bit, exec. built with netcdf4.1 library - -def ax/t/unit=days/t0=1-jan-0001/cal=noleap/edge tax = \ - {419263, 419293, 419324, 419354, 419385, 419416, \ - 419444, 419475, 419505, 419536, 419566, 419597} -def ax/t/unit=days/t0=1-jan-0001/cal=noleap/edge/modulo=365 tax_c = \ - {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365} - -let a = t[gt=tax] -let a_c = t[gt=tax_c] -let b = a_c[gt=a] -list b[t=15-feb-1150] ! missing?? - VARIABLE : A_C[GT=A] - TIME : 15-FEB-1150 00:00 NOLEAP - 419430.0 - -list b ! includes Feb 15 1150, not missing... - VARIABLE : A_C[GT=A] - SUBSET : 11 points (TIME) - CALENDAR : NOLEAP - 16-SEP-1149 00 / 1: 419278.0 - 16-OCT-1149 12 / 2: 419308.5 - 16-NOV-1149 00 / 3: 419339.0 - 16-DEC-1149 12 / 4: 419369.5 - 16-JAN-1150 12 / 5: 419400.5 - 15-FEB-1150 00 / 6: 419430.0 - 16-MAR-1150 12 / 7: 419459.5 - 16-APR-1150 00 / 8: 419490.0 - 16-MAY-1150 12 / 9: 419520.5 - 16-JUN-1150 00 / 10: 419551.0 - 16-JUL-1150 12 / 11: 419581.5 - -list b[t=15-feb-1150] ! Now ok?? - VARIABLE : A_C[GT=A] - TIME : 15-FEB-1150 00:00 NOLEAP - 419430.0 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err64_polymark_over_calendar -! err64_polymark_over_calendar.jnl -! bug1722. Polymark script failed with calendar mismatch -! it should not if the overlay time axis is abstract. -! -def ax/t=1-jan-0002:1-jan-0010:1/cal=noleap/unit=year/edges tax -let tval = t[gt=tax] -plot tval -let pos = {`tval[l=4]`,`tval[l=5]`} - !-> DEFINE VARIABLE pos = {5.5,6.5} -poly/ov/nolab/line=15 pos,pos ! this works - -! Here we got an error about mismatched calendars on time axes: -go polymark "poly/ov/nolab/pal=red/line=1" pos pos " " circle .5 - - - -GO bn_reset bn_txtype_dmy -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_txtype_dmy -GO bn_txtype_dmy -! bn_txtype_dmy.jnl -! 2/2010 ACM -! -! Testing Time Axis plot style "DMY" labels the year -! as well as month or day,month on MON and DAY axes. -! Symbol TXTYPE_SETTING contains YR, MON, DAY after the -! axis type has been set for the axis; lets us plot/set -! and then choose the time axis label style -! Useful when going across years or plotting with /NOLAB - -set win/asp=1 -use gtsa056_2.cdf - -! Plot the whole series; txtype is YR -plot/x=140w/y=-1/k=1/set temp -sh sym TXTYPE_SETTING -TXTYPE_SETTING = "YR" -if ($TXTYPE_SETTING"0|MON>1|*>0") THEN PPL TXTYPE,MON,DMY - !-> if 0 THEN PPL TXTYPE,MON,DMY -ppl plot - -! This will be MON -shade/x=140w/k=1/t=1-feb-1982:15-apr-1982/set temp -sh sym TXTYPE_SETTING -TXTYPE_SETTING = "MON" -if ($TXTYPE_SETTING"0|MON>1|*>0") THEN PPL TXTYPE,MON,DMY - !-> if 1 THEN PPL TXTYPE,MON,DMY -ppl shade - -! Also MON so setting not changed. -contour/x=140w/k=1/t=1-feb-1982:15-feb-1982/set temp -sh sym TXTYPE_SETTING -TXTYPE_SETTING = "MON" -if ($TXTYPE_SETTING"0|MON>1|*>0") THEN PPL TXTYPE,MON,DMY - !-> if 1 THEN PPL TXTYPE,MON,DMY -ppl contour - - -! Is DAY so setting not changed. - -plot/set/x=140w/y=-1/k=1/t=27-feb-1982:2-mar-1982 temp -sh sym TXTYPE_SETTING -TXTYPE_SETTING = "DAY" -if ($TXTYPE_SETTING"0|MON>1|*>0") THEN PPL TXTYPE,MON,DMY - !-> if 0 THEN PPL TXTYPE,MON,DMY -ppl plot - -! Set PPL TXTYPE with DAY,DMY -plot/set/x=140w/y=-1/k=1/t=27-feb-1982:2-mar-1982 temp -sh sym TXTYPE_SETTING -TXTYPE_SETTING = "DAY" -if ($TXTYPE_SETTING"0|DAY>1|*>0") THEN PPL TXTYPE,DAY,DMY - !-> if 1 THEN PPL TXTYPE,DAY,DMY -ppl plot - -! If the type is going to be EITHER DAY or MON then set -! the style to DMY. Leave the 1st argument blank to keep the -! default -plot/set/x=140w/y=-1/k=1/t=27-feb-1982:28-mar-1982 temp -sh sym TXTYPE_SETTING -TXTYPE_SETTING = "MON" -if ($TXTYPE_SETTING"0|DAY>1|MON>1|*>0") THEN PPL TXTYPE,,DMY - !-> if 1 THEN PPL TXTYPE,,DMY -ppl plot - - -! Same commands with the TIME axis on the vertical -! Plot the whole series; txtype is YR -plot/x=140w/y=-1/k=1/set temp -sh sym TXTYPE_SETTING -TXTYPE_SETTING = "YR" -if ($TXTYPE_SETTING"0|MON>1|*>0") THEN PPL TXTYPE,MON,DMY - !-> if 0 THEN PPL TXTYPE,MON,DMY -ppl plot - -! This will be MON -shade/y=-1/k=1/t=1-feb-1982:15-apr-1982/set temp -sh sym TXTYPE_SETTING -TXTYPE_SETTING = "MON" -if ($TXTYPE_SETTING"0|MON>1|*>0") THEN PPL TXTYPE,MON,DMY - !-> if 1 THEN PPL TXTYPE,MON,DMY -ppl shade - -! Also MON so setting not changed. -contour/y=-1/k=1/t=1-feb-1982:15-feb-1982/set temp -sh sym TXTYPE_SETTING -TXTYPE_SETTING = "MON" -if ($TXTYPE_SETTING"0|MON>1|*>0") THEN PPL TXTYPE,MON,DMY - !-> if 1 THEN PPL TXTYPE,MON,DMY -ppl contour - - -! Is DAY so setting not changed. - -plot/set/trans/x=140w/y=-1/k=1/t=27-feb-1982:2-mar-1982 temp -sh sym TXTYPE_SETTING -TXTYPE_SETTING = "DAY" -if ($TXTYPE_SETTING"0|MON>1|*>0") THEN PPL TXTYPE,MON,DMY - !-> if 0 THEN PPL TXTYPE,MON,DMY -ppl plot - -! Set PPL TXTYPE with DAY,DMY -plot/set/trans/x=140w/y=-1/k=1/t=27-feb-1982:2-mar-1982 temp -sh sym TXTYPE_SETTING -TXTYPE_SETTING = "DAY" -if ($TXTYPE_SETTING"0|DAY>1|*>0") THEN PPL TXTYPE,DAY,DMY - !-> if 1 THEN PPL TXTYPE,DAY,DMY -ppl plot - -! If the type is going to be EITHER DAY or MON then set -! the style to DMY. Leave the 1st argument blank to keep the -! default -plot/set/trans/x=140w/y=-1/k=1/t=27-feb-1982:28-mar-1982 temp -sh sym TXTYPE_SETTING -TXTYPE_SETTING = "MON" -if ($TXTYPE_SETTING"0|DAY>1|MON>1|*>0") THEN PPL TXTYPE,,DMY - !-> if 1 THEN PPL TXTYPE,,DMY -ppl plot - -! make sure this setting doesnt persist -plot/y=-1/k=1/t=5-mar-1982:28-mar-1982/x=144w temp -plot/y=-1/k=1/t=5-mar-1982:28-apr-1982/x=144w temp - -GO bn_reset bn_n_open_dsets_sym -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_n_open_dsets_sym -GO bn_n_open_dsets_sym - ! bn_n_open_dsets_sym.jnl -! Ferret v6.5 -! New special symbol N_OPEN_DSETS, evaulated when requested. -! Gives a count of the number of open datasets. - -! Initially should be zero -sh sym N_OPEN_DSETS -N_OPEN_DSETS = "0" - -! Open some datasets -use dstitle -use TAO_SST_clim -use clim_airt_lev - -! Check -sh sym N_OPEN_DSETS -N_OPEN_DSETS = "3" - -! Open a few more. Any type of data -set data tok_short.des - -list/clobber/file=list_of_numbers.dat/nohead/norowhead {1,3,4,5,6,8,9} -file/var=v1 list_of_numbers.dat - -! now there are five -sh sym N_OPEN_DSETS -N_OPEN_DSETS = "5" - -! cancel a couple -can data 3 -can data TAO_SST_clim - -! Now three -sh sym N_OPEN_DSETS -N_OPEN_DSETS = "3" - -can dat/all -sh sym N_OPEN_DSETS -N_OPEN_DSETS = "0" - - -GO bn_reset bn_multi_decade -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_multi_decade -GO bn_multi_decade -! bn_multi_decade.jnl -! New default no-small tics for multi-decade plots -! See bug 670 - -def axis/t="01-JAN-1860":"30-DEC-2300":1/edges/units="years"/cal="360d" simutaxis1 -let tvar = t[gt=simutaxis1]*-1E+34 - -define view/x=0:1/y=0.000:0.125 v1 -define view/x=0:1/y=0.125:0.250 v2 -define view/x=0:1/y=0.250:0.375 v3 -define view/x=0:1/y=0.375:0.500 v4 -define view/x=0:1/y=0.500:0.625 v5 -define view/x=0:1/y=0.625:0.750 v6 -define view/x=0:1/y=0.750:0.875 v7 -define view/x=0:1/y=0.875:1.000 v8 - -! Plot a variety of time axis lengths. -set view v1; plot/nolab/ax=0,1,0,0/vlim=0:1 tvar[t=1-jan-1860:1-jan-1870] -set view v2; plot/nolab/ax=0,1,0,0/vlim=0:1 tvar[t=1-jan-1860:1-jan-1880] - -! New default: no small tics for multi-decade plots -set view v3; plot/nolab/ax=0,1,0,0/vlim=0:1 tvar[t=1-jan-1860:1-jan-1890] -set view v4; plot/nolab/ax=0,1,0,0/vlim=0:1 tvar[t=1-jan-1860:1-jan-2000] -set view v5; plot/nolab/ax=0,1,0,0/vlim=0:1 tvar[t=1-jan-1860:1-jan-2060] -set view v6; plot/nolab/ax=0,1,0,0/vlim=0:1 tvar[t=1-jan-1860:1-jan-2160] -set view v7; plot/nolab/ax=0,1,0,0/vlim=0:1 tvar - -! can plot the tics even on a multi-decade axis by specifying PPL TICS. -set view v8; plot/nolab/ax=0,1,0,0/vlim=0:1/set tvar - ppl tics,0.1,0.25 - ppl plot - -cancel view - -! Test vertical time axes. - -define view/x=0.000:0.125/y=0:1 v1 -define view/x=0.125:0.250/y=0:1 v2 -define view/x=0.250:0.375/y=0:1 v3 -define view/x=0.375:0.500/y=0:1 v4 -define view/x=0.500:0.625/y=0:1 v5 -define view/x=0.625:0.750/y=0:1 v6 -define view/x=0.750:0.875/y=0:1 v7 -define view/x=0.875:1.000/y=0:1 v8 - -! Plot a variety of time axis lengths. -set view v1; plot/trans/nolab/ax=0,0,1,0/hlim=0:1 tvar[t=1-jan-1860:1-jan-1870] -set view v2; plot/trans/nolab/ax=0,0,1,0/hlim=0:1 tvar[t=1-jan-1860:1-jan-1880] - -! New default: no small tics for multi-decade plots -set view v3; plot/trans/nolab/ax=0,0,1,0/hlim=0:1 tvar[t=1-jan-1860:1-jan-1890] -set view v4; plot/trans/nolab/ax=0,0,1,0/hlim=0:1 tvar[t=1-jan-1860:1-jan-2000] -set view v5; plot/trans/nolab/ax=0,0,1,0/hlim=0:1 tvar[t=1-jan-1860:1-jan-2060] -set view v6; plot/trans/nolab/ax=0,0,1,0/hlim=0:1 tvar[t=1-jan-1860:1-jan-2160] -set view v7; plot/trans/nolab/ax=0,0,1,0/hlim=0:1 tvar - -! can plot the tics even on a multi-decade axis by specifying PPL TICS. -set view v8; plot/trans/nolab/ax=0,0,1,0/hlim=0:1/set tvar - ppl tics,0.1,0.25 - ppl plot - -GO bn_reset bn_show_xml_file -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_show_xml_file -GO bn_show_xml_file -! bn_show_xml_file.jnl -! Testing SHOW DATA/OUTFILE -! SHOW AXIS/OUTFILE -! SHOW VAR/OUTFILE -! SAY/OUTFILE -! -! Similar to LAS iosp script header.jnl -! capability to be expanded to all SHOW commands in the future. -! 5/2012: -! Do this on a dataset with just one variable. -! Dont do show axis/all. Just the axes for one variable is a lot of output. -! Ferret v685, show/data/var/xml includes the output of show axis, so remove that. - -! create a short file -LET sst = x[x=1:15] + y[y=1:5] + t[gt=month_irreg] -save/clobber/file=b.nc sst -can var/all - -use b - -DEFINE SYMBOL output_xml_file = the_xml_file.xml - -say/quiet/outfile=($output_xml_file)/clobber - !-> MESSAGE/CONTINUE/quiet/outfile=the_xml_file.xml/clobber -say/quiet/outfile=($output_xml_file)/append - !-> MESSAGE/CONTINUE/quiet/outfile=the_xml_file.xml/append - -show var/xml/append/outfile=($output_xml_file) - !-> show var/xml/append/outfile=the_xml_file.xml -show data/var/xml/append/outfile=($output_xml_file) - !-> show data/var/xml/append/outfile=the_xml_file.xml -say/quiet/outfile=($output_xml_file)/append - !-> MESSAGE/CONTINUE/quiet/outfile=the_xml_file.xml/append - -! on 32-bit machine the cat command below doesnt show file contents if -! the file is still open. Close it by listing to another file. -list/clobber/file=dummy.dat 1 - - -! Note with the fix to ticket 883, the ordering of the axis listing is -! different. This is unimportant to using the xml files. -sp cat the_xml_file.xml - - - - - - - - - - - -1.E+34 - - - -1.E+34 - - - - - - - - - -XAX1_15 -YAX1_5 -MONTH_IRREG - - - - - - - - - - - - - - - 12 - - - 0000-01-16 12:00:00 - - - 0000-12-15 17:49:12 - - - uneven - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 15 - - - 1 - - - 15 - - - - - - no - - - - - - - - - - - - - - - - - 5 - - - 1 - - - 5 - - - - - - no - - - - - - - - - - - - - - - -! GO bn_reset O bn_encode_url -! GO bn_encode_url - -! ******** V6.6 Additions below *********** - -GO bn_reset bn66_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn66_bug_fixes -GO bn66_bug_fixes -! bn66_bug_fixes.jnl -! Fixes that go into v6.6 release - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err65_averages.jnl - -use gt4d011 -set region/z=0:90/y=-3.5:3.5 -stat temp[x=@ave,t=@ave] - - TEMPERATURE - LONGITUDE: 140W to 122W (XT ave) - LATITUDE: 3.5S to 3.5N - DEPTH (m): 0 to 90 - TIME: 14-AUG-1982 11:00 to 13-JAN-1983 13:00 (XT ave) - E: N/A - F: N/A - DATA SET: ./data/gt4d011.cdf - - Total # of data points: 198 (1*22*9*1*1*1) - # flagged as bad data: 0 - Minimum value: 24.279 - Maximum value: 31.248 - Mean value: 28.047 (unweighted average) - Standard deviation: 1.7502 - -stat temp[x=@ave,z=@ave] - - TEMPERATURE - LONGITUDE: 140W to 122W (XZ ave) - LATITUDE: 3.5S to 3.5N - DEPTH (m): 0 to 90 (XZ ave) - TIME: 14-AUG-1982 11:00 to 13-JAN-1983 13:00 - E: N/A - F: N/A - DATA SET: ./data/gt4d011.cdf - - Total # of data points: 550 (1*22*1*25*1*1) - # flagged as bad data: 0 - Minimum value: 25.194 - Maximum value: 30.027 - Mean value: 28.047 (unweighted average) - Standard deviation: 1.1926 - -list temp[x=@ave,z=@ave,t=@ave] - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 22 points (LATITUDE) - LONGITUDE: 140W to 122W (XZT ave) - DEPTH (m): 0 to 90 (XZT ave) - TIME : 14-AUG-1982 11:00 to 13-JAN-1983 13:00 (XZT ave) - 3.5N / 56: 27.59128 - 3.17N / 55: 27.76072 - 2.83N / 54: 27.89503 - 2.5N / 53: 28.00175 - 2.17N / 52: 28.08330 - 1.83N / 51: 28.13652 - 1.5N / 50: 28.15913 - 1.17N / 49: 28.15796 - 0.83N / 48: 28.14635 - 0.5N / 47: 28.13609 - 0.17N / 46: 28.13627 - 0.17S / 45: 28.15042 - 0.5S / 44: 28.17639 - 0.83S / 43: 28.20504 - 1.17S / 42: 28.22684 - 1.5S / 41: 28.23347 - 1.83S / 40: 28.21657 - 2.17S / 39: 28.16886 - 2.5S / 38: 28.08460 - 2.83S / 37: 27.96112 - 3.17S / 36: 27.80014 - 3.5S / 35: 27.60770 - -stat temp[z=@ave,t=@ave,y=-2:2] - - TEMPERATURE - LONGITUDE: 140W to 122W - LATITUDE: 2S to 2N - DEPTH (m): 0 to 90 (ZT ave) - TIME: 14-AUG-1982 11:00 to 13-JAN-1983 13:00 (ZT ave) - E: N/A - F: N/A - DATA SET: ./data/gt4d011.cdf - - Total # of data points: 234 (18*13*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 27.445 - Maximum value: 28.925 - Mean value: 28.173 (unweighted average) - Standard deviation: 0.40997 - -cancel region - -GO bn_reset bn_netcdf4 -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_netcdf4 -GO bn_netcdf4 -! bn_netcdf4.jnl -! test syntax for controling NetCDF-4 intput and output. -! 2/2016 change file name in second intentinal-error case -! Also list the file sizes for compressed data - -show nccache -Current NCDF Chunk Cache size 4.19 MB, n_elems = 1009, preemption = 75 - -set nccache/siz=4 - -show nccache -Current NCDF Chunk Cache size 4 MB, n_elems = 1009, preemption = 75 -cancel nccache - -show nccache -Current NCDF Chunk Cache size 4.19 MB, n_elems = 1009, preemption = 75 - -set nccache/siz=8 -show nccache -Current NCDF Chunk Cache size 8 MB, n_elems = 1009, preemption = 75 -cancel nccache - -! -------------------------- -! Set choice of chunking. -can dat/all; can var/all; can mem/all - -use coads_climatology -set var/title=deflate_x30_y30 sst - -save/file=nc4_deflate4.nc/clobber/ncformat=4/deflate=1/xchunk=30/ychunk=30/tchunk=1 sst - -! With /NCFORMAT=3 the other stuff is meaningless. Will see NOTEs -save/file=nc4_nodeflate3.nc/clobber/ncformat=3/deflate=1/xchunk=30/ychunk=30/tchunk=1 sst - -! -------------------------- -! Compare choices of chunking. -can var/all; can mem/all - -set var/title=deflate_x180_y90 sst -save/file=nc4_deflate4bigchunk.nc/clobber/ncformat=4/deflate=1/xchunk=180/ychunk=90/tchunk=1 sst - - -set var/title=undeflated sst - -save/file=nc4_nodeflate3.nc/clobber/ncformat=3 sst - -save/file=nc4_deflate4_xyt.nc/clobber/ncformat=4/deflate/shuffle/tchunk=2/xchunk=30/ychunk=20 sst -save/file=nc4_deflate4_defaultchunk.nc/clobber/ncformat=4/deflate/shuffle sst - -! get the file sizes -! Note that small changes in file size may be caused by differences in the global -! history attribute; e.g. changing the Ferret version name from v6.97 to v7 - -sp stat nc4_nodeflate3.nc --printf="Bytes: %s\n" -Bytes: 197524 -sp stat nc4_deflate4bigchunk.nc --printf="Bytes: %s\n" -Bytes: 125640 -sp stat nc4_deflate4_xyt.nc --printf="Bytes: %s\n" -Bytes: 125254 -sp stat nc4_deflate4_defaultchunk.nc --printf="Bytes: %s\n" -Bytes: 119319 - -! Write variable as INT -CAN DAT/all; can var/all; can mem/all -use levitus_climatology -SET VAR/OUTTYPE=int/BAD=-99999 temp -save/clobber/ncformat=classic/file=nc4_inttemp_classic.nc temp - -set list/ncformat=4/deflate=1/xchunk=10/ychunk=10/zchunk=1 -save/clobber/file=nc4_inttemp_set_list_deflate_chunk.nc temp - -save/clobber/shuffle=1/file=nc4_inttemp_shuffle_set_list_deflate_chunk.nc temp - -! get the file sizes -sp stat nc4_inttemp_classic.nc --printf="Bytes: %s\n" -Bytes: 60556 -sp stat nc4_inttemp_set_list_deflate_chunk.nc --printf="Bytes: %s\n" -Bytes: 32834 -sp stat nc4_inttemp_shuffle_set_list_deflate_chunk.nc --printf="Bytes: %s\n" -Bytes: 33049 - -cancel list/all -set list/ncformat=classic -save/clobber/file=nc4_inttemp_set_classic.nc temp - -cancel list/all - -! Check SHOW LIST, and CANCEL LIST - -set list/xchunk=30/ychunk=20/tchunk=5/zchunk=1/deflate=1/shuffle=0/ncformat=4 -sh list/all - SET LIST/PRECISION = 4 - SET LIST/FORMAT = [Default] - SET LIST/HEADING is ENABLED - SET LIST/APPEND is DISABLED - SET LIST/FILE=AUTO [created by program] ( when LIST/FILE is used ) - SET LIST/OUTTYPE = [Default] - ---- - NetCDF-4 settings: - NetCDF file type = NetCDF-4 - Compression (deflate) level set to 1 - XCHUNK size set to 30 - YCHUNK size set to 20 - ZCHUNK size set to 1 - TCHUNK size set to 5 - SHUFFLE set to on - ENDIAN set to native - -can list/all -sh list/all - SET LIST/PRECISION = 4 - SET LIST/FORMAT = [Default] - SET LIST/HEADING is ENABLED - SET LIST/APPEND is DISABLED - SET LIST/FILE=AUTO [created by program] ( when LIST/FILE is used ) - SET LIST/OUTTYPE = [Default] - ---- - NetCDF-4 settings: - NetCDF file type = classic - NetCDF chunk sizes = default - SHUFFLE set to on - ENDIAN set to native - -! Intentional errors: -can dat/all -use coads_climatology -set mode ignore -! If set any chunksizes, must set them all -save/file=nc4_deflate4_t1.nc/clobber/ncformat=4/deflate/shuffle/tchunk=1 sst - -! Chunk sizes bigger than dim sizes -save/file=nc4_deflate4chunktoobig.nc/clobber/ncformat=4/deflate=1/xchunk=6/ychunk=18/tchunk=15 sst -can mode ignore - - -GO bn_reset bn_scat2grid_bin.jnl -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_scat2grid_bin.jnl -GO bn_scat2grid_bin.jnl -! bn_scat2grid_bin.jnl -! Tests of scat2grid_bin and scat2grid_nbin functions. - -! define some variables (as in bench_gridding) - -define axis/t=1-jan-2010:30-mar-2010:1/units=days tin -define axis/t=1-jan-2010:30-mar-2010:10/units=days tout -let tt = t[gt=tout,L=1:10] -sh grid tt - GRID (G097) - name axis # pts start end subset - normal X - normal Y - normal Z - TOUT TIME 10 r 01-JAN-2010 00:00 01-APR-2010 00:00 10 pts - - -define axis/x=0:10:0.05 x10 -define axis/y=0:10:0.05 y10 -define grid/x=x10/y=y10 g10x10 -set grid g10x10 - -let WAVE = SIN(KX*XPTS + KY*YPTS - PHASE) / 3 -let PHASE = 0 -let KAPPA = 0.4 -let KX = 0.4 -let KY = 0.7 -let FCN1 = SIN(R)/(R+1) -let R = ((XPTS-X0)^2+ 5*(YPTS-Y0)^2)^0.5 -let X0 = 3 -let Y0 = 8 -LET sample_function = fcn1 + wave -set view ul -let xpts = x; let ypts = y -SHADE/title="A field with 200 sample points marked" sample_function -let xpts = 10*randu(i); let ypts = 10*randu(i+2) -set region/i=1:200 -plot/vs/over/symbols xpts,ypts -define axis/x=1:10:.5 xax5 -define axis/y=1:10:.5 yax5 -define axis/x=1:10:.2 xax2 -define axis/y=1:10:.2 yax2 -set view ll -let sgrid = scat2grid_bin_xy (xpts, ypts, sample_function, x[gx=xax5], y[gy=yax5]) -SHADE/TITLE="Bin Gridding (5,5) to 20x20 grid" sgrid -list/x=2:3 sgrid - VARIABLE : SCAT2GRID_BIN_XY (XPTS, YPTS, SAMPLE_FUNCTION, X[GX=XAX5], Y[GY=YAX5]) - SUBSET : 3 by 19 points (X-Y) - 2 2.5 3 - 3 4 5 - 1 / 1: .... .... .... - 1.5 / 2: .... 0.3250 .... - 2 / 3: 0.3365 .... .... - 2.5 / 4: .... 0.0915 .... - 3 / 5: .... -0.0921 -0.1235 - 3.5 / 6: .... .... .... - 4 / 7: .... .... .... - 4.5 / 8: -0.1083 .... -0.1934 - 5 / 9: -0.2851 -0.2127 -0.2336 - 5.5 / 10: -0.4247 .... -0.4259 - 6 / 11: -0.4858 -0.4472 -0.3515 - 6.5 / 12: -0.2793 .... -0.3158 - 7 / 13: -0.1265 .... .... - 7.5 / 14: .... .... 0.4598 - 8 / 15: .... .... 0.4264 - 8.5 / 16: .... .... 0.6377 - 9 / 17: 0.4793 .... 0.5147 - 9.5 / 18: .... 0.2919 .... - 10 / 19: .... .... .... - -set view lr -let sgrid = scat2grid_bin_xy(xpts, ypts, sample_function, x[gx=xax2], y[gy=yax2]) -SHADE/TITLE="Bin Gridding (1,1) to 100x100" sgrid -list/x=2:3 sgrid - VARIABLE : SCAT2GRID_BIN_XY(XPTS, YPTS, SAMPLE_FUNCTION, X[GX=XAX2], Y[GY=YAX2]) - SUBSET : 6 by 46 points (X-Y) - 2 2.2 2.4 2.6 2.8 3 - 6 7 8 9 10 11 - 1 / 1: .... .... .... .... .... .... - 1.2 / 2: .... .... .... .... .... .... - 1.4 / 3: .... .... .... .... .... .... - 1.6 / 4: .... .... .... .... 0.3250 .... - 1.8 / 5: .... .... .... .... .... .... - 2 / 6: .... .... .... .... .... .... - 2.2 / 7: .... .... .... .... .... .... - 2.4 / 8: .... .... .... .... .... .... - 2.6 / 9: .... .... 0.0915 .... .... .... - 2.8 / 10: .... .... .... .... .... .... - 3 / 11: .... .... .... -0.0921 -0.1235 .... - 3.2 / 12: .... .... .... .... .... .... - 3.4 / 13: .... .... .... .... .... .... - 3.6 / 14: .... .... .... .... .... .... - 3.8 / 15: .... .... .... .... .... .... - 4 / 16: .... .... .... .... .... .... - 4.2 / 17: -0.1083 .... .... .... .... .... - 4.4 / 18: .... .... .... .... .... .... - 4.6 / 19: .... .... .... .... -0.1934 .... - 4.8 / 20: .... .... -0.2127 .... -0.2336 .... - 5 / 21: .... -0.2851 .... .... .... .... - 5.2 / 22: .... .... .... .... .... .... - 5.4 / 23: .... .... .... .... .... .... - 5.6 / 24: -0.4552 .... .... .... -0.4259 .... - 5.8 / 25: .... -0.4810 .... .... .... .... - 6 / 26: .... .... .... .... .... .... - 6.2 / 27: .... .... -0.4134 .... .... .... - 6.4 / 28: .... .... .... .... -0.3158 .... - 6.6 / 29: -0.2793 .... .... .... .... .... - 6.8 / 30: .... .... .... .... .... .... - 7 / 31: .... .... .... .... .... .... - 7.2 / 32: .... .... .... .... .... .... - 7.4 / 33: .... .... .... .... .... .... - 7.6 / 34: .... .... .... .... .... .... - 7.8 / 35: .... .... .... .... .... 0.4264 - 8 / 36: .... .... .... .... .... .... - 8.2 / 37: .... .... .... .... .... .... - 8.4 / 38: .... .... .... .... 0.6377 .... - 8.6 / 39: .... .... .... .... .... .... - 8.8 / 40: 0.4703 .... .... .... .... .... - 9 / 41: .... 0.4883 .... .... .... .... - 9.2 / 42: .... .... .... .... .... .... - 9.4 / 43: .... .... .... .... 0.3475 .... - 9.6 / 44: .... .... .... .... 0.2364 .... - 9.8 / 45: .... .... .... .... .... .... - 10 / 46: .... .... .... .... .... .... - -! Now the NBIN functios - -let sgrid = scat2grid_nbin_xy (xpts, ypts, sample_function, x[gx=xax5], y[gy=yax5]) -SHADE/TITLE="NBIN Gridding (5,5) to 20x20 grid" sgrid -list/x=2:3 sgrid - VARIABLE : SCAT2GRID_NBIN_XY (XPTS, YPTS, SAMPLE_FUNCTION, X[GX=XAX5], Y[GY=YAX5]) - SUBSET : 3 by 19 points (X-Y) - 2 2.5 3 - 3 4 5 - 1 / 1: 0.000 0.000 0.000 - 1.5 / 2: 0.000 1.000 0.000 - 2 / 3: 2.000 0.000 0.000 - 2.5 / 4: 0.000 1.000 0.000 - 3 / 5: 0.000 1.000 1.000 - 3.5 / 6: 0.000 0.000 0.000 - 4 / 7: 0.000 0.000 0.000 - 4.5 / 8: 1.000 0.000 1.000 - 5 / 9: 1.000 1.000 1.000 - 5.5 / 10: 2.000 0.000 1.000 - 6 / 11: 1.000 2.000 1.000 - 6.5 / 12: 1.000 0.000 1.000 - 7 / 13: 1.000 0.000 0.000 - 7.5 / 14: 0.000 0.000 2.000 - 8 / 15: 0.000 0.000 1.000 - 8.5 / 16: 0.000 0.000 1.000 - 9 / 17: 2.000 0.000 1.000 - 9.5 / 18: 0.000 2.000 0.000 - 10 / 19: 0.000 0.000 0.000 - -set view lr -let sgrid = scat2grid_nbin_xy(xpts, ypts, sample_function, x[gx=xax2], y[gy=yax2]) -SHADE/TITLE="NBIN Gridding (1,1) to 100x100" sgrid -list/x=2:3 sgrid - VARIABLE : SCAT2GRID_NBIN_XY(XPTS, YPTS, SAMPLE_FUNCTION, X[GX=XAX2], Y[GY=YAX2]) - SUBSET : 6 by 46 points (X-Y) - 2 2.2 2.4 2.6 2.8 3 - 6 7 8 9 10 11 - 1 / 1: 0.000 0.000 0.000 0.000 0.000 0.000 - 1.2 / 2: 0.000 0.000 0.000 0.000 0.000 0.000 - 1.4 / 3: 0.000 0.000 0.000 0.000 0.000 0.000 - 1.6 / 4: 0.000 0.000 0.000 0.000 1.000 0.000 - 1.8 / 5: 0.000 0.000 0.000 0.000 0.000 0.000 - 2 / 6: 0.000 0.000 0.000 0.000 0.000 0.000 - 2.2 / 7: 0.000 0.000 0.000 0.000 0.000 0.000 - 2.4 / 8: 0.000 0.000 0.000 0.000 0.000 0.000 - 2.6 / 9: 0.000 0.000 1.000 0.000 0.000 0.000 - 2.8 / 10: 0.000 0.000 0.000 0.000 0.000 0.000 - 3 / 11: 0.000 0.000 0.000 1.000 1.000 0.000 - 3.2 / 12: 0.000 0.000 0.000 0.000 0.000 0.000 - 3.4 / 13: 0.000 0.000 0.000 0.000 0.000 0.000 - 3.6 / 14: 0.000 0.000 0.000 0.000 0.000 0.000 - 3.8 / 15: 0.000 0.000 0.000 0.000 0.000 0.000 - 4 / 16: 0.000 0.000 0.000 0.000 0.000 0.000 - 4.2 / 17: 1.000 0.000 0.000 0.000 0.000 0.000 - 4.4 / 18: 0.000 0.000 0.000 0.000 0.000 0.000 - 4.6 / 19: 0.000 0.000 0.000 0.000 1.000 0.000 - 4.8 / 20: 0.000 0.000 1.000 0.000 1.000 0.000 - 5 / 21: 0.000 1.000 0.000 0.000 0.000 0.000 - 5.2 / 22: 0.000 0.000 0.000 0.000 0.000 0.000 - 5.4 / 23: 0.000 0.000 0.000 0.000 0.000 0.000 - 5.6 / 24: 1.000 0.000 0.000 0.000 1.000 0.000 - 5.8 / 25: 0.000 1.000 0.000 0.000 0.000 0.000 - 6 / 26: 0.000 0.000 0.000 0.000 0.000 0.000 - 6.2 / 27: 0.000 0.000 1.000 0.000 0.000 0.000 - 6.4 / 28: 0.000 0.000 0.000 0.000 1.000 0.000 - 6.6 / 29: 1.000 0.000 0.000 0.000 0.000 0.000 - 6.8 / 30: 0.000 0.000 0.000 0.000 0.000 0.000 - 7 / 31: 0.000 0.000 0.000 0.000 0.000 0.000 - 7.2 / 32: 0.000 0.000 0.000 0.000 0.000 0.000 - 7.4 / 33: 0.000 0.000 0.000 0.000 0.000 0.000 - 7.6 / 34: 0.000 0.000 0.000 0.000 0.000 0.000 - 7.8 / 35: 0.000 0.000 0.000 0.000 0.000 1.000 - 8 / 36: 0.000 0.000 0.000 0.000 0.000 0.000 - 8.2 / 37: 0.000 0.000 0.000 0.000 0.000 0.000 - 8.4 / 38: 0.000 0.000 0.000 0.000 1.000 0.000 - 8.6 / 39: 0.000 0.000 0.000 0.000 0.000 0.000 - 8.8 / 40: 1.000 0.000 0.000 0.000 0.000 0.000 - 9 / 41: 0.000 1.000 0.000 0.000 0.000 0.000 - 9.2 / 42: 0.000 0.000 0.000 0.000 0.000 0.000 - 9.4 / 43: 0.000 0.000 0.000 0.000 1.000 0.000 - 9.6 / 44: 0.000 0.000 0.000 0.000 1.000 0.000 - 9.8 / 45: 0.000 0.000 0.000 0.000 0.000 0.000 - 10 / 46: 0.000 0.000 0.000 0.000 0.000 0.000 - - -! Now the XYT functions - -let tpts = 39798 + 87*RANDU(I) -show grid tt - GRID (G091) - name axis # pts start end subset - X10 X 201 r 0 10 full - Y10 Y 201 r 0 10 full - normal Z - TOUT TIME 10 r 01-JAN-2010 00:00 01-APR-2010 00:00 10 pts - -let sgrid = scat2grid_bin_xyt (xpts, ypts, tpts, sample_function, x[gx=xax5], y[gy=yax5], tt) -SAVE/FILE=a.nc/clobber sgrid - - -let ngrid = scat2grid_nbin_xyt (xpts, ypts, tpts, sample_function, x[gx=xax5], y[gy=yax5], tt) -SAVE/FILE=a.nc/append ngrid - -can var/all -use a.nc -stat sgrid - - SCAT2GRID_BIN_XYT (XPTS, YPTS, TPTS, SAMPLE_FUNCTION, X[GX=XAX5], Y[GY=YAX5], TT) - X: 0.75 to 10.25 - Y: 0.75 to 10.25 - Z: N/A - TIME: 27-DEC-2009 00:00 to 06-APR-2010 00:00 - E: N/A - F: N/A - DATA SET: ./a.nc - - Total # of data points: 3610 (19*19*1*10*1*1) - # flagged as bad data: 3464 - Minimum value: -0.48583 - Maximum value: 0.63765 - Mean value: 0.014003 (unweighted average) - Standard deviation: 0.28222 -stat ngrid - - SCAT2GRID_NBIN_XYT (XPTS, YPTS, TPTS, SAMPLE_FUNCTION, X[GX=XAX5], Y[GY=YAX5], TT) - X: 0.75 to 10.25 - Y: 0.75 to 10.25 - Z: N/A - TIME: 27-DEC-2009 00:00 to 06-APR-2010 00:00 - E: N/A - F: N/A - DATA SET: ./a.nc - - Total # of data points: 3610 (19*19*1*10*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 3 - Mean value: 0.047645 (unweighted average) - Standard deviation: 0.24679 -list/x=2:3/L=3 sgrid - VARIABLE : SCAT2GRID_BIN_XYT (XPTS, YPTS, TPTS, SAMPLE_FUNCTION, X[GX=XAX5], Y[GY=YAX5], TT) - FILENAME : a.nc - SUBSET : 3 by 19 points (X-Y) - TIME : 21-JAN-2010 00:00 - 2 2.5 3 - 3 4 5 - 1 / 1: .... .... .... - 1.5 / 2: .... 0.3250 .... - 2 / 3: 0.3365 .... .... - 2.5 / 4: .... 0.0915 .... - 3 / 5: .... -0.0921 -0.1235 - 3.5 / 6: .... .... .... - 4 / 7: .... .... .... - 4.5 / 8: -0.1083 .... -0.1934 - 5 / 9: -0.2851 -0.2127 -0.2336 - 5.5 / 10: -0.4247 .... -0.4259 - 6 / 11: -0.4858 -0.4472 .... - 6.5 / 12: -0.2793 .... -0.3158 - 7 / 13: -0.1265 .... .... - 7.5 / 14: .... .... .... - 8 / 15: .... .... .... - 8.5 / 16: .... .... 0.6377 - 9 / 17: 0.4793 .... .... - 9.5 / 18: .... 0.2919 .... - 10 / 19: .... .... .... -list/x=2:3/L=3 ngrid - VARIABLE : SCAT2GRID_NBIN_XYT (XPTS, YPTS, TPTS, SAMPLE_FUNCTION, X[GX=XAX5], Y[GY=YAX5], TT) - FILENAME : a.nc - SUBSET : 3 by 19 points (X-Y) - TIME : 21-JAN-2010 00:00 - 2 2.5 3 - 3 4 5 - 1 / 1: 0.000 0.000 0.000 - 1.5 / 2: 0.000 1.000 0.000 - 2 / 3: 2.000 0.000 0.000 - 2.5 / 4: 0.000 1.000 0.000 - 3 / 5: 0.000 1.000 1.000 - 3.5 / 6: 0.000 0.000 0.000 - 4 / 7: 0.000 0.000 0.000 - 4.5 / 8: 1.000 0.000 1.000 - 5 / 9: 1.000 1.000 1.000 - 5.5 / 10: 2.000 0.000 1.000 - 6 / 11: 1.000 2.000 0.000 - 6.5 / 12: 1.000 0.000 1.000 - 7 / 13: 1.000 0.000 0.000 - 7.5 / 14: 0.000 0.000 0.000 - 8 / 15: 0.000 0.000 0.000 - 8.5 / 16: 0.000 0.000 1.000 - 9 / 17: 2.000 0.000 0.000 - 9.5 / 18: 0.000 2.000 0.000 - 10 / 19: 0.000 0.000 0.000 - -can mem /all -can var /all -can data /all -set grid abstract -can grid g10x10 - -can axis yax2 -can axis xax2 -can axis yax5 -can axis xax5 -can axis y10 -can axis x10 -can axis tout -can axis tin - - -! *********** v6.62 Additions *********** - -GO bn_reset bn_axis_dir_symbols -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_dir_symbols -GO bn_axis_dir_symbols -! bn_axis_dir_symbols.jnl -! 5/2010 -! -! For LAS: -! SYMBOL AX_HORIZ and AX_VERT identify the direction of -! the plot axes (x, y, z, or t). Add this for 1D plots -! as well as 2D ones. - -plot/i=1:10 i; show sym ax*; can sym ax* -AX_HORIZ = "X" -AX_VERT = "Y" -plot/j=1:10 j; show sym ax*; can sym ax* -AX_HORIZ = "Y" - -use gt4d011 -plot/i=100/j=40/L=1 temp; show sym ax*; can sym ax* -AX_VERT = "Z" - -use coads_climatology -plot/x=180/y=0 sst; show sym ax*; can sym ax* -AX_HORIZ = "T" -plot/x=180/y=0/trans sst; show sym ax*; can sym ax* -AX_VERT = "T" -shade/x=180 sst; show sym ax*; can sym ax* -AX_HORIZ = "T" -AX_VERT = "Y" - -! *********** v6.63 Additions *********** - -GO bn_reset bn663_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn663_bug_fixes -GO bn663_bug_fixes -! bn663_bug_fixes.jnl -! Fixes that go into v6.63 release - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err65_dots_in_dashes.jnl -! err65_dots_in_dashes.jnl -! Test fix to bug 1396: dots where there should -! be gaps in dashed lines. -! Same test has been added for -gif mode and -! metafile batch mode - -can view -set mode metafile dashbug.plt -set v ul; plot/dash x[gx=0:20:.5] -set v ur; plot/dash x[gx=0:20:.1] -set v ll; plot/dash x[gx=0:20:.05] -set v lr; plot/dash x[gx=0:20:.01] -frame/file=dashbug.gif - -cancel mode meta - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err66_all_missing_lev_v.jnl -! err66_all_missing_lev_v.jnl -! Ferret hangs with /LEV=V and all missing data - -USE coads_climatology -SHADE/L=1/X=60:70/Y=40:50/LEV=v sst - -FILL/L=2/X=60:70/Y=40:50/LEV=v sst - -GO bn_reset bn_set_axis_regular -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_set_axis_regular -GO bn_set_axis_regular -! bn_set_axis_regular.jnl -! Karl Smith, 5/2010 -! tests for SET AXIS /REGULAR - -! --- create irregular but monotonic data with integer endpoints -set region /i=1:10 /j=1:10 -let deltax = if (i gt 1 and i lt 10) then 0.5 * sin((x - 1.0) * 3.14159265 / 2.33333333) else 0.0 -let xdata = x + deltax -let deltay = if (j gt 1 and j lt 10) then 0.5 * sin((y - 1.0) * 3.14159265 / 2.33333333) else 0.0 -let ydata = y - deltay - -! --- define axes and grid from this data -define axis /x /from_data /name=myx xdata -define axis /y /from_data /name=myy ydata -define grid /x=myx /y=myy mygrid -set grid mygrid - -! --- define a variable using this grid; show everything is irregular -let myvar = 2 * x + y -list /format=(F8.5) x - VARIABLE : X - axis MYX - BAD FLAG : -1.E+34 - SUBSET : 10 points (X) - X : 0.2563 to 10.74 - 1.00000 - 2.48746 - 3.21694 - 3.60908 - 4.60908 - 6.21694 - 7.48746 - 8.00000 - 8.51254 -10.00000 -list /format=(F8.5) y - VARIABLE : Y - axis MYY - BAD FLAG : -1.E+34 - SUBSET : 10 points (Y) - Y : 0.7437 to 10.26 - 1.00000 - 1.51254 - 2.78306 - 4.39092 - 5.39092 - 5.78306 - 6.51254 - 8.00000 - 9.48746 -10.00000 -list myvar - VARIABLE : 2 * X + Y - SUBSET : 10 by 10 points (X-Y) - 1 2.49 3.22 3.61 4.61 6.22 7.49 8 8.51 10 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1: 3.00 5.97 7.43 8.22 10.22 13.43 15.97 17.00 18.03 21.00 - 1.51 / 2: 3.51 6.49 7.95 8.73 10.73 13.95 16.49 17.51 18.54 21.51 - 2.78 / 3: 4.78 7.76 9.22 10.00 12.00 15.22 17.76 18.78 19.81 22.78 - 4.39 / 4: 6.39 9.37 10.82 11.61 13.61 16.82 19.37 20.39 21.42 24.39 - 5.39 / 5: 7.39 10.37 11.82 12.61 14.61 17.82 20.37 21.39 22.42 25.39 - 5.78 / 6: 7.78 10.76 12.22 13.00 15.00 18.22 20.76 21.78 22.81 25.78 - 6.51 / 7: 8.51 11.49 12.95 13.73 15.73 18.95 21.49 22.51 23.54 26.51 - 8 / 8: 10.00 12.97 14.43 15.22 17.22 20.43 22.97 24.00 25.03 28.00 - 9.49 / 9: 11.49 14.46 15.92 16.71 18.71 21.92 24.46 25.49 26.51 29.49 - 10 / 10: 12.00 14.97 16.43 17.22 19.22 22.43 24.97 26.00 27.03 30.00 -show grid - Default grid for DEFINE VARIABLE is MYGRID - Last successful data access was on grid MYGRID - GRID MYGRID - name axis # pts start end subset - MYX X 10 i 1 10 full - MYY Y 10 i 1 10 full - normal Z - normal T - -! --- force the x axis to be regular -set axis /regular myx -list /format=(F8.5) x - VARIABLE : X - axis MYX - BAD FLAG : -1.E+34 - SUBSET : 10 points (X) - X : 0.5 to 10.5 - 1.00000 - 2.00000 - 3.00000 - 4.00000 - 5.00000 - 6.00000 - 7.00000 - 8.00000 - 9.00000 -10.00000 -list /format=(F8.5) y - VARIABLE : Y - axis MYY - BAD FLAG : -1.E+34 - SUBSET : 10 points (Y) - Y : 0.7437 to 10.26 - 1.00000 - 1.51254 - 2.78306 - 4.39092 - 5.39092 - 5.78306 - 6.51254 - 8.00000 - 9.48746 -10.00000 -list myvar - VARIABLE : 2 * X + Y - SUBSET : 10 by 10 points (X-Y) - 1 2 3 4 5 6 7 8 9 10 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1: 3.00 5.97 7.43 8.22 10.22 13.43 15.97 17.00 18.03 21.00 - 1.51 / 2: 3.51 6.49 7.95 8.73 10.73 13.95 16.49 17.51 18.54 21.51 - 2.78 / 3: 4.78 7.76 9.22 10.00 12.00 15.22 17.76 18.78 19.81 22.78 - 4.39 / 4: 6.39 9.37 10.82 11.61 13.61 16.82 19.37 20.39 21.42 24.39 - 5.39 / 5: 7.39 10.37 11.82 12.61 14.61 17.82 20.37 21.39 22.42 25.39 - 5.78 / 6: 7.78 10.76 12.22 13.00 15.00 18.22 20.76 21.78 22.81 25.78 - 6.51 / 7: 8.51 11.49 12.95 13.73 15.73 18.95 21.49 22.51 23.54 26.51 - 8 / 8: 10.00 12.97 14.43 15.22 17.22 20.43 22.97 24.00 25.03 28.00 - 9.49 / 9: 11.49 14.46 15.92 16.71 18.71 21.92 24.46 25.49 26.51 29.49 - 10 / 10: 12.00 14.97 16.43 17.22 19.22 22.43 24.97 26.00 27.03 30.00 -show grid - Default grid for DEFINE VARIABLE is MYGRID - Last successful data access was on grid MYGRID - GRID MYGRID - name axis # pts start end subset - MYX X 10 r 1 10 full - MYY Y 10 i 1 10 full - normal Z - normal T - -! --- setting a regular axis as regular does nothing -set axis /regular myx -list /format=(F8.5) x - VARIABLE : X - axis MYX - BAD FLAG : -1.E+34 - SUBSET : 10 points (X) - X : 0.5 to 10.5 - 1.00000 - 2.00000 - 3.00000 - 4.00000 - 5.00000 - 6.00000 - 7.00000 - 8.00000 - 9.00000 -10.00000 -list /format=(F8.5) y - VARIABLE : Y - axis MYY - BAD FLAG : -1.E+34 - SUBSET : 10 points (Y) - Y : 0.7437 to 10.26 - 1.00000 - 1.51254 - 2.78306 - 4.39092 - 5.39092 - 5.78306 - 6.51254 - 8.00000 - 9.48746 -10.00000 -list myvar - VARIABLE : 2 * X + Y - SUBSET : 10 by 10 points (X-Y) - 1 2 3 4 5 6 7 8 9 10 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1: 3.00 5.97 7.43 8.22 10.22 13.43 15.97 17.00 18.03 21.00 - 1.51 / 2: 3.51 6.49 7.95 8.73 10.73 13.95 16.49 17.51 18.54 21.51 - 2.78 / 3: 4.78 7.76 9.22 10.00 12.00 15.22 17.76 18.78 19.81 22.78 - 4.39 / 4: 6.39 9.37 10.82 11.61 13.61 16.82 19.37 20.39 21.42 24.39 - 5.39 / 5: 7.39 10.37 11.82 12.61 14.61 17.82 20.37 21.39 22.42 25.39 - 5.78 / 6: 7.78 10.76 12.22 13.00 15.00 18.22 20.76 21.78 22.81 25.78 - 6.51 / 7: 8.51 11.49 12.95 13.73 15.73 18.95 21.49 22.51 23.54 26.51 - 8 / 8: 10.00 12.97 14.43 15.22 17.22 20.43 22.97 24.00 25.03 28.00 - 9.49 / 9: 11.49 14.46 15.92 16.71 18.71 21.92 24.46 25.49 26.51 29.49 - 10 / 10: 12.00 14.97 16.43 17.22 19.22 22.43 24.97 26.00 27.03 30.00 -show grid - Default grid for DEFINE VARIABLE is MYGRID - Last successful data access was on grid MYGRID - GRID MYGRID - name axis # pts start end subset - MYX X 10 r 1 10 full - MYY Y 10 i 1 10 full - normal Z - normal T - -! --- clean up -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -cancel grid mygrid - -! --- read a NetCDF file with the irregular axes and data -use bn_set_axis_regular -show data - currently SET data sets: - 1> ./data/bn_set_axis_regular.nc (default) - name title I J K L - MYDATA 2 * X + Y 1:10 1:10 ... ... - -list mydata - VARIABLE : 2 * X + Y - FILENAME : bn_set_axis_regular.nc - SUBSET : 10 by 10 points (X-Y) - 1 2.49 3.22 3.61 4.61 6.22 7.49 8 8.51 10 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1: 3.00 5.97 7.43 8.22 10.22 13.43 15.97 17.00 18.03 21.00 - 1.51 / 2: 3.51 6.49 7.95 8.73 10.73 13.95 16.49 17.51 18.54 21.51 - 2.78 / 3: 4.78 7.76 9.22 10.00 12.00 15.22 17.76 18.78 19.81 22.78 - 4.39 / 4: 6.39 9.37 10.82 11.61 13.61 16.82 19.37 20.39 21.42 24.39 - 5.39 / 5: 7.39 10.37 11.82 12.61 14.61 17.82 20.37 21.39 22.42 25.39 - 5.78 / 6: 7.78 10.76 12.22 13.00 15.00 18.22 20.76 21.78 22.81 25.78 - 6.51 / 7: 8.51 11.49 12.95 13.73 15.73 18.95 21.49 22.51 23.54 26.51 - 8 / 8: 10.00 12.97 14.43 15.22 17.22 20.43 22.97 24.00 25.03 28.00 - 9.49 / 9: 11.49 14.46 15.92 16.71 18.71 21.92 24.46 25.49 26.51 29.49 - 10 / 10: 12.00 14.97 16.43 17.22 19.22 22.43 24.97 26.00 27.03 30.00 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid GOZ1 - GRID GOZ1 - name axis # pts start end subset - MYX1 X 10 i 1 10 full - MYY Y 10 i 1 10 full - normal Z - normal T - -! --- force the x axis to be regular -set axis /regular `..dimnames[i=1]` - !-> set axis /regular MYX1 -list mydata - VARIABLE : 2 * X + Y - FILENAME : bn_set_axis_regular.nc - SUBSET : 10 by 10 points (X-Y) - 1 2 3 4 5 6 7 8 9 10 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1: 3.00 5.97 7.43 8.22 10.22 13.43 15.97 17.00 18.03 21.00 - 1.51 / 2: 3.51 6.49 7.95 8.73 10.73 13.95 16.49 17.51 18.54 21.51 - 2.78 / 3: 4.78 7.76 9.22 10.00 12.00 15.22 17.76 18.78 19.81 22.78 - 4.39 / 4: 6.39 9.37 10.82 11.61 13.61 16.82 19.37 20.39 21.42 24.39 - 5.39 / 5: 7.39 10.37 11.82 12.61 14.61 17.82 20.37 21.39 22.42 25.39 - 5.78 / 6: 7.78 10.76 12.22 13.00 15.00 18.22 20.76 21.78 22.81 25.78 - 6.51 / 7: 8.51 11.49 12.95 13.73 15.73 18.95 21.49 22.51 23.54 26.51 - 8 / 8: 10.00 12.97 14.43 15.22 17.22 20.43 22.97 24.00 25.03 28.00 - 9.49 / 9: 11.49 14.46 15.92 16.71 18.71 21.92 24.46 25.49 26.51 29.49 - 10 / 10: 12.00 14.97 16.43 17.22 19.22 22.43 24.97 26.00 27.03 30.00 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid GOZ1 - GRID GOZ1 - name axis # pts start end subset - MYX1 X 10 r 1 10 full - MYY Y 10 i 1 10 full - normal Z - normal T - - -GO bn_reset bn_set_cancel_redirect -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_set_cancel_redirect -GO bn_set_cancel_redirect -! bn_set_cancel_redirect.jnl -! Karl Smith, 5/2010 -! test for SET REDIRECT and CANCEL REDIRECT - -! --- 1. redirect/tee both stdout and stderr to a file -set redirect /tee /file="redirect.txt" /clobber stdout stderr - -! --- 2. produce some output to both stdout and stderr -define axis /x=0:6:0.5 myaxis -set axis myaxis -define grid /x=myaxis mygrid -set grid mygrid -let wave=sin(x) -list wave - VARIABLE : SIN(X) - SUBSET : 13 points (X) - 0 / 1: 0.0000 - 0.5 / 2: 0.4794 - 1 / 3: 0.8415 - 1.5 / 4: 0.9975 - 2 / 5: 0.9093 - 2.5 / 6: 0.5985 - 3 / 7: 0.1411 - 3.5 / 8: -0.3508 - 4 / 9: -0.7568 - 4.5 / 10: -0.9775 - 5 / 11: -0.9589 - 5.5 / 12: -0.7055 - 6 / 13: -0.2794 -go /help - -! --- 3. cancel the stderr redirect and produce output -cancel redirect stderr -show axis myaxis - name axis # pts start end - MYAXIS X 13 r 0 6 - Axis span (to cell edges) = 6.5 -go /help - -! --- 4. cancel all redirection and produce some output -cancel redirect -show grid mygrid - GRID MYGRID - name axis # pts start end - MYAXIS X 13 r 0 6 - normal Y - normal Z - normal T -go /help - -! --- 5. show the contents of the redirect file -! --- should be all contents of 2., stdout of 3. and nothing but the cancel from 4. -let contents = { spawn:"cat redirect.txt" } -list contents - VARIABLE : { SPAWN:"cat redirect.txt" } - SUBSET : 39 points (X) - 1 / 1:" " - 2 / 2:"! --- 2. produce some output to both stdout and stderr" - 3 / 3:"define axis /x=0:6:0.5 myaxis" - 4 / 4:"set axis myaxis" - 5 / 5:"define grid /x=myaxis mygrid" - 6 / 6:"set grid mygrid" - 7 / 7:"let wave=sin(x)" - 8 / 8:"list wave" - 9 / 9:" VARIABLE : SIN(X)" - 10 / 10:" SUBSET : 13 points (X)" - 11 / 11:" 0 / 1: 0.0000" - 12 / 12:" 0.5 / 2: 0.4794" - 13 / 13:" 1 / 3: 0.8415" - 14 / 14:" 1.5 / 4: 0.9975" - 15 / 15:" 2 / 5: 0.9093" - 16 / 16:" 2.5 / 6: 0.5985" - 17 / 17:" 3 / 7: 0.1411" - 18 / 18:" 3.5 / 8: -0.3508" - 19 / 19:" 4 / 9: -0.7568" - 20 / 20:" 4.5 / 10: -0.9775" - 21 / 21:" 5 / 11: -0.9589" - 22 / 22:" 5.5 / 12: -0.7055" - 23 / 23:" 6 / 13: -0.2794" - 24 / 24:"go /help" - 25 / 25:" Use the GO command to name a file of FERRET commands to be executed." - 26 / 26:" e.g. yes? GO filename" - 27 / 27:" " - 28 / 28:" Use "GO/HELP filename" to read documentation in the file to be executed." - 29 / 29:" " - 30 / 30:"! --- 3. cancel the stderr redirect and produce output" - 31 / 31:"cancel redirect stderr" - 32 / 32:"show axis myaxis" - 33 / 33:" name axis # pts start end" - 34 / 34:" MYAXIS X 13 r 0 6" - 35 / 35:" Axis span (to cell edges) = 6.5" - 36 / 36:"go /help" - 37 / 37:" " - 38 / 38:"! --- 4. cancel all redirection and produce some output" - 39 / 39:"cancel redirect" -cancel var contents - -! --- 6. redirect/tee both stdout and stderr, appending to the redirect file -set redirect /tee /file="redirect.txt" /append stdout stderr - -! --- 7. produce output to both stdout and stderr -list wave - VARIABLE : SIN(X) - SUBSET : 13 points (X) - 0 / 1: 0.0000 - 0.5 / 2: 0.4794 - 1 / 3: 0.8415 - 1.5 / 4: 0.9975 - 2 / 5: 0.9093 - 2.5 / 6: 0.5985 - 3 / 7: 0.1411 - 3.5 / 8: -0.3508 - 4 / 9: -0.7568 - 4.5 / 10: -0.9775 - 5 / 11: -0.9589 - 5.5 / 12: -0.7055 - 6 / 13: -0.2794 -go /help - -! --- 8. cancel the stdout redirect and produce output -cancel redirect stdout -show axis myaxis - name axis # pts start end - MYAXIS X 13 r 0 6 - Axis span (to cell edges) = 6.5 -go /help - -! --- 9. cancel all redirection and produce some output -cancel redirect stderr -show grid mygrid - GRID MYGRID - name axis # pts start end - MYAXIS X 13 r 0 6 - normal Y - normal Z - normal T -go /help - -! --- 10. results of CANCEL REDIRECT when nothing is redirected -cancel redirect - -! --- 11. show the updated contents of the redirect file -! --- should be all contents of 2., stdout of 3. and nothing but the cancel from 4. -! --- plus all contents of 7. and stderr of 8. -let contents = { spawn:"cat redirect.txt" } -list contents - VARIABLE : { SPAWN:"cat redirect.txt" } - SUBSET : 69 points (X) - 1 / 1:" " - 2 / 2:"! --- 2. produce some output to both stdout and stderr" - 3 / 3:"define axis /x=0:6:0.5 myaxis" - 4 / 4:"set axis myaxis" - 5 / 5:"define grid /x=myaxis mygrid" - 6 / 6:"set grid mygrid" - 7 / 7:"let wave=sin(x)" - 8 / 8:"list wave" - 9 / 9:" VARIABLE : SIN(X)" - 10 / 10:" SUBSET : 13 points (X)" - 11 / 11:" 0 / 1: 0.0000" - 12 / 12:" 0.5 / 2: 0.4794" - 13 / 13:" 1 / 3: 0.8415" - 14 / 14:" 1.5 / 4: 0.9975" - 15 / 15:" 2 / 5: 0.9093" - 16 / 16:" 2.5 / 6: 0.5985" - 17 / 17:" 3 / 7: 0.1411" - 18 / 18:" 3.5 / 8: -0.3508" - 19 / 19:" 4 / 9: -0.7568" - 20 / 20:" 4.5 / 10: -0.9775" - 21 / 21:" 5 / 11: -0.9589" - 22 / 22:" 5.5 / 12: -0.7055" - 23 / 23:" 6 / 13: -0.2794" - 24 / 24:"go /help" - 25 / 25:" Use the GO command to name a file of FERRET commands to be executed." - 26 / 26:" e.g. yes? GO filename" - 27 / 27:" " - 28 / 28:" Use "GO/HELP filename" to read documentation in the file to be executed." - 29 / 29:" " - 30 / 30:"! --- 3. cancel the stderr redirect and produce output" - 31 / 31:"cancel redirect stderr" - 32 / 32:"show axis myaxis" - 33 / 33:" name axis # pts start end" - 34 / 34:" MYAXIS X 13 r 0 6" - 35 / 35:" Axis span (to cell edges) = 6.5" - 36 / 36:"go /help" - 37 / 37:" " - 38 / 38:"! --- 4. cancel all redirection and produce some output" - 39 / 39:"cancel redirect" - 40 / 40:" " - 41 / 41:"! --- 7. produce output to both stdout and stderr" - 42 / 42:"list wave" - 43 / 43:" VARIABLE : SIN(X)" - 44 / 44:" SUBSET : 13 points (X)" - 45 / 45:" 0 / 1: 0.0000" - 46 / 46:" 0.5 / 2: 0.4794" - 47 / 47:" 1 / 3: 0.8415" - 48 / 48:" 1.5 / 4: 0.9975" - 49 / 49:" 2 / 5: 0.9093" - 50 / 50:" 2.5 / 6: 0.5985" - 51 / 51:" 3 / 7: 0.1411" - 52 / 52:" 3.5 / 8: -0.3508" - 53 / 53:" 4 / 9: -0.7568" - 54 / 54:" 4.5 / 10: -0.9775" - 55 / 55:" 5 / 11: -0.9589" - 56 / 56:" 5.5 / 12: -0.7055" - 57 / 57:" 6 / 13: -0.2794" - 58 / 58:"go /help" - 59 / 59:" Use the GO command to name a file of FERRET commands to be executed." - 60 / 60:" e.g. yes? GO filename" - 61 / 61:" " - 62 / 62:" Use "GO/HELP filename" to read documentation in the file to be executed." - 63 / 63:" " - 64 / 64:"! --- 8. cancel the stdout redirect and produce output" - 65 / 65:"cancel redirect stdout" - 66 / 66:" Use the GO command to name a file of FERRET commands to be executed." - 67 / 67:" e.g. yes? GO filename" - 68 / 68:" " - 69 / 69:" Use "GO/HELP filename" to read documentation in the file to be executed." -cancel var contents - -! --- 12. redirect only stdout to a file and produce some output to show stdout redirected, stderr normal -! --- warning: can get confusing - look ahead for file contents -! --- immediately following redirect line should be stderr of 12 and contents of 13, -! --- which shows file contents of stdout of 12 and cancel redirect of 13 -set redirect /file="redirect.txt" /clobber stdout -let contents = { spawn:"cat redirect.txt" } -list contents - VARIABLE : { SPAWN:"cat redirect.txt" } - SUBSET : 21 points (X) - 1 / 1:"list wave" - 2 / 2:" VARIABLE : SIN(X)" - 3 / 3:" SUBSET : 13 points (X)" - 4 / 4:" 0 / 1: 0.0000" - 5 / 5:" 0.5 / 2: 0.4794" - 6 / 6:" 1 / 3: 0.8415" - 7 / 7:" 1.5 / 4: 0.9975" - 8 / 8:" 2 / 5: 0.9093" - 9 / 9:" 2.5 / 6: 0.5985" - 10 / 10:" 3 / 7: 0.1411" - 11 / 11:" 3.5 / 8: -0.3508" - 12 / 12:" 4 / 9: -0.7568" - 13 / 13:" 4.5 / 10: -0.9775" - 14 / 14:" 5 / 11: -0.9589" - 15 / 15:" 5.5 / 12: -0.7055" - 16 / 16:" 6 / 13: -0.2794" - 17 / 17:"go /help" - 18 / 18:" " - 19 / 19:"! --- 13. cancel the redirection and show the redirect file contents" - 20 / 20:"! --- should be the "missing" stdout of 12." - 21 / 21:"cancel redirect stdout" -cancel var contents - -! --- 14. redirect only stderr, appending to a file and produce some output to show stdout normal, stderr redirected -set redirect /file="redirect.txt" /append stderr -show axis myaxis - name axis # pts start end - MYAXIS X 13 r 0 6 - Axis span (to cell edges) = 6.5 -go /help - -! --- 15. cancel the redirection and show the redirect file contents -! --- should be the stdout of 12, cancel redirect of 13, and stderr of 14 -cancel redirect stderr -let contents = { spawn:"cat redirect.txt" } -list contents - VARIABLE : { SPAWN:"cat redirect.txt" } - SUBSET : 25 points (X) - 1 / 1:"list wave" - 2 / 2:" VARIABLE : SIN(X)" - 3 / 3:" SUBSET : 13 points (X)" - 4 / 4:" 0 / 1: 0.0000" - 5 / 5:" 0.5 / 2: 0.4794" - 6 / 6:" 1 / 3: 0.8415" - 7 / 7:" 1.5 / 4: 0.9975" - 8 / 8:" 2 / 5: 0.9093" - 9 / 9:" 2.5 / 6: 0.5985" - 10 / 10:" 3 / 7: 0.1411" - 11 / 11:" 3.5 / 8: -0.3508" - 12 / 12:" 4 / 9: -0.7568" - 13 / 13:" 4.5 / 10: -0.9775" - 14 / 14:" 5 / 11: -0.9589" - 15 / 15:" 5.5 / 12: -0.7055" - 16 / 16:" 6 / 13: -0.2794" - 17 / 17:"go /help" - 18 / 18:" " - 19 / 19:"! --- 13. cancel the redirection and show the redirect file contents" - 20 / 20:"! --- should be the "missing" stdout of 12." - 21 / 21:"cancel redirect stdout" - 22 / 22:" Use the GO command to name a file of FERRET commands to be executed." - 23 / 23:" e.g. yes? GO filename" - 24 / 24:" " - 25 / 25:" Use "GO/HELP filename" to read documentation in the file to be executed." -cancel var contents - -! --- 16. redirect/tee stdout to one file and stderr to another file -set redirect /tee /file="redirect_stdout.txt" /clobber stdout -set redirect /tee /file="redirect_stderr.txt" /clobber stderr - -! --- 17. produce some output -show grid mygrid - GRID MYGRID - name axis # pts start end - MYAXIS X 13 r 0 6 - normal Y - normal Z - normal T -go /help - -! --- 18. see what happens to messages (say, warn, error) -say " This is a say message" - This is a say message -set axis /regular myaxis -set mode ignore_error -show grid garbage -cancel mode ignore_error - -! --- 19. cancel redirections and show the contents of the files -cancel redirect -let contents = { spawn:"cat redirect_stdout.txt" } -! --- should be the stdout of 17, whatever stdout of 18, and cancel redirect from 19 -list contents - VARIABLE : { SPAWN:"cat redirect_stdout.txt" } - SUBSET : 22 points (X) - 1 / 1:"set redirect /tee /file="redirect_stderr.txt" /clobber stderr" - 2 / 2:" " - 3 / 3:"! --- 17. produce some output" - 4 / 4:"show grid mygrid" - 5 / 5:" GRID MYGRID" - 6 / 6:" name axis # pts start end" - 7 / 7:" MYAXIS X 13 r 0 6" - 8 / 8:" normal Y" - 9 / 9:" normal Z" - 10 / 10:" normal T" - 11 / 11:"go /help" - 12 / 12:" " - 13 / 13:"! --- 18. see what happens to messages (say, warn, error)" - 14 / 14:"say " This is a say message"" - 15 / 15:" This is a say message" - 16 / 16:"set axis /regular myaxis" - 17 / 17:"set mode ignore_error" - 18 / 18:"show grid garbage" - 19 / 19:"cancel mode ignore_error" - 20 / 20:" " - 21 / 21:"! --- 19. cancel redirections and show the contents of the files" - 22 / 22:"cancel redirect" -cancel var contents -let contents = { spawn:"cat redirect_stderr.txt" } -! --- should be the stderr of 17. -list contents - VARIABLE : { SPAWN:"cat redirect_stderr.txt" } - SUBSET : 7 points (X) - 1 / 1:" Use the GO command to name a file of FERRET commands to be executed." - 2 / 2:" e.g. yes? GO filename" - 3 / 3:" " - 4 / 4:" Use "GO/HELP filename" to read documentation in the file to be executed." - 5 / 5:" *** NOTE: Axis is already regular: MYAXIS" - 6 / 6:" **ERROR: variable unknown or not in data set: GARBAGE" - 7 / 7:"show grid garbage" -cancel var contents - -! --- 20. turn on journal mode to a special filename -set mode journal:redirect_journal.txt - -! --- 21. turn on redirection to the journal with default source (stdout) -set redirect /tee /journal - -! --- 22. produce some output to stdout and stderr -list wave - VARIABLE : SIN(X) - SUBSET : 13 points (X) - 0 / 1: 0.0000 - 0.5 / 2: 0.4794 - 1 / 3: 0.8415 - 1.5 / 4: 0.9975 - 2 / 5: 0.9093 - 2.5 / 6: 0.5985 - 3 / 7: 0.1411 - 3.5 / 8: -0.3508 - 4 / 9: -0.7568 - 4.5 / 10: -0.9775 - 5 / 11: -0.9589 - 5.5 / 12: -0.7055 - 6 / 13: -0.2794 -go /help - -! --- 23. cancel journal redirect and produce some output -! --- should warn that stderr not redirected -cancel redirect stdout stderr -show axis myaxis - name axis # pts start end - MYAXIS X 13 r 0 6 - Axis span (to cell edges) = 6.5 -go /help - -! --- 24. redirect/tee both stdout and stderr to the journal -set redirect /tee /journal stderr stdout - -! --- 25. produce some output to stdout and stderr -show grid mygrid - GRID MYGRID - name axis # pts start end - MYAXIS X 13 r 0 6 - normal Y - normal Z - normal T -go /help - -! --- 26. turn off journal mode -set mode journal:ferret.jnl -cancel mode journal - -! --- 27. produce some output to show journal redirect with no journal is not a problem -list wave - VARIABLE : SIN(X) - SUBSET : 13 points (X) - 0 / 1: 0.0000 - 0.5 / 2: 0.4794 - 1 / 3: 0.8415 - 1.5 / 4: 0.9975 - 2 / 5: 0.9093 - 2.5 / 6: 0.5985 - 3 / 7: 0.1411 - 3.5 / 8: -0.3508 - 4 / 9: -0.7568 - 4.5 / 10: -0.9775 - 5 / 11: -0.9589 - 5.5 / 12: -0.7055 - 6 / 13: -0.2794 -go /help - -! --- 28. cancel journal redirect and show contents of the journal file -! --- all redirected output should be commented, and should be the stdout of 22., -! --- cancel redirect of 23., all contents of 25, and set mode journal of 26 -cancel redirect -let contents = { spawn:"cat redirect_journal.txt" } -list contents - VARIABLE : { SPAWN:"cat redirect_journal.txt" } - SUBSET : 45 points (X) - 1 / 1:" ! NOAA/PMEL TMAP" - 2 / 2:" ! PyFerret v7.51 (debug)" - 3 / 3:" ! Linux 2.6.32-754.17.1.el6.x86_64 - 08/20/19" - 4 / 4:" ! 20-Aug-19 12:13 " - 5 / 5:"" - 6 / 6:"! " - 7 / 7:"!! --- 22. produce some output to stdout and stderr" - 8 / 8:"!list wave" - 9 / 9:"! VARIABLE : SIN(X)" - 10 / 10:"! SUBSET : 13 points (X)" - 11 / 11:"! 0 / 1: 0.0000" - 12 / 12:"! 0.5 / 2: 0.4794" - 13 / 13:"! 1 / 3: 0.8415" - 14 / 14:"! 1.5 / 4: 0.9975" - 15 / 15:"! 2 / 5: 0.9093" - 16 / 16:"! 2.5 / 6: 0.5985" - 17 / 17:"! 3 / 7: 0.1411" - 18 / 18:"! 3.5 / 8: -0.3508" - 19 / 19:"! 4 / 9: -0.7568" - 20 / 20:"! 4.5 / 10: -0.9775" - 21 / 21:"! 5 / 11: -0.9589" - 22 / 22:"! 5.5 / 12: -0.7055" - 23 / 23:"! 6 / 13: -0.2794" - 24 / 24:"!go /help" - 25 / 25:"! " - 26 / 26:"!! --- 23. cancel journal redirect and produce some output" - 27 / 27:"!! --- should warn that stderr not redirected" - 28 / 28:"!cancel redirect stdout stderr" - 29 / 29:"! " - 30 / 30:"!! --- 25. produce some output to stdout and stderr" - 31 / 31:"!show grid mygrid" - 32 / 32:"! GRID MYGRID" - 33 / 33:"! name axis # pts start end" - 34 / 34:"! MYAXIS X 13 r 0 6" - 35 / 35:"! normal Y" - 36 / 36:"! normal Z" - 37 / 37:"! normal T" - 38 / 38:"!go /help" - 39 / 39:"! Use the GO command to name a file of FERRET commands to be executed." - 40 / 40:"! e.g. yes? GO filename" - 41 / 41:"! " - 42 / 42:"! Use "GO/HELP filename" to read documentation in the file to be executed." - 43 / 43:"! " - 44 / 44:"!! --- 26. turn off journal mode" - 45 / 45:"!set mode journal:ferret.jnl" -cancel var contents - -! --- clean-up: get rid of mygrid -set grid abstract -cancel grid mygrid - -!!! NOTE: journal mode is now turned off !!! - -GO bn_reset bn_min_max_smoothers -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_min_max_smoothers -GO bn_min_max_smoothers -! bn_min_max_smoothers.jnl -! New transforms @SMN and @SMX, smoothers based on the -! min and max of the data in the window. -sh trans -variable transforms e.g.SST[T=1-jan:15-mar@DDC] - code description code description - ---- ----------- ---- ----------- - @ITP interpolated @FAV ave-filled - @AVE averaged @FLN linear-filled - @VAR variance @FNR nearest-filled - @SUM summed @NGD number of valid - @RSU running sum @NBD number flagged bad - @SHF shifted @LOC location - @MIN minimum @WEQ weighted equal - @MAX maximum @CDA closest dist above - @DDC centered derivative @CDB closest dist below - @DDF forward derivative @CIA closest index above - @DDB backwards derivative @CIB closest index below - @DIN integrated @EVN event mask - @IIN indef. integ. @MED median smoothed - @SBX box smoothed @SMX maximum smoothed - @SBN binomial smoothed @SMN minimum smoothed - @SWL Welch smoothed @STD standard deviation - @SHN Hanning smoothed @WGT weights for avg,int - @SPZ Parzen smoothed @SPX box smooth w/missing - -regridding transforms e.g.SST[GX=x5deg@AVE] - code description code description - ---- ----------- ---- ----------- - @LIN lin. interp. @MODVAR modulo var - @AVE area-wgtd avgd @MODNGD # gd mod pts - @XACT exact match @MODNBD #bad mod pts - @ASN index assn @MODSUM modulo sum - @VAR variance @MODMIN modulo min - @MIN minimum @MODMAX modulo max - @MAX maximum @NRST nearst coord - @SUM area-wgtd sum @BIN unwgtd avg - @NGD #gd pts, area wgtd @NBIN #good in bin - @MOD modulo ave @IIN #indef integral - -auxiliary varible regridding transforms e.g.TEMP[GZ(depth)=zax@AVE] - code description code description - ---- ----------- ---- ----------- - @LIN lin. interp. @PLAVE pc-wise linear ave -use gt4d011 -plot/x=123.5w/y=2.5/k=1 temp, temp[L=@med], temp[L=@smx], temp[L=@smn] - -plot/x=123.5w/y=2.5/k=1 temp, temp[L=@med:3], temp[L=@smx:3], temp[L=@smn:3] -plot/x=123.5w/y=2.5/k=1 temp, temp[L=@med:5], temp[L=@smx:5], temp[L=@smn:5] -plot/x=123.5w/y=2.5/k=1 temp, temp[L=@med:5], temp[L=@smx:6], temp[L=@smn:6] - -plot/y=2.5/k=1/l=1/x=139.5W:122.5W temp, temp[i=@med], temp[i=@smx], temp[i=@smn] -plot/k=1/l=1/x=123.5w temp, temp[j=@med], temp[j=@smx], temp[j=@smn] -plot/l=1/x=123.5w/y=2.5/z=0:100 temp, temp[k=@med], temp[k=@smx], temp[k=@smn] - -! Numeric results -list/x=123.5w/y=2.5/k=1 temp, temp[L=@med], temp[L=@smx], temp[L=@smn] - DATA SET: ./data/gt4d011.cdf - TIME: 14-AUG-1982 11:00 to 13-JAN-1983 13:00 - LONGITUDE: 123.5W - LATITUDE: 2.5N - DEPTH (m): 5 - Column 1: TEMP is TEMPERATURE (deg. C) - Column 2: TEMP[T=@MED:3] is TEMPERATURE (deg. C)(median smoothed by 3 pts on T) - Column 3: TEMP[T=@SMX:3] is TEMPERATURE (deg. C)(maximum smoothed by 3 pts on T) - Column 4: TEMP[T=@SMN:3] is TEMPERATURE (deg. C)(minimum smoothed by 3 pts on T) - TEMP TEMP TEMP TEMP -17-AUG-1982 12 / 1: 27.15 27.23 27.23 27.15 -23-AUG-1982 14 / 2: 27.23 27.23 27.36 27.15 -29-AUG-1982 16 / 3: 27.36 27.36 27.54 27.23 -04-SEP-1982 18 / 4: 27.54 27.54 27.79 27.36 -10-SEP-1982 20 / 5: 27.79 27.79 28.09 27.54 -16-SEP-1982 22 / 6: 28.09 28.09 28.33 27.79 -23-SEP-1982 00 / 7: 28.33 28.33 28.47 28.09 -29-SEP-1982 02 / 8: 28.47 28.47 28.61 28.33 -05-OCT-1982 04 / 9: 28.61 28.61 28.91 28.47 -11-OCT-1982 06 / 10: 28.91 28.91 29.34 28.61 -17-OCT-1982 08 / 11: 29.34 29.34 29.76 28.91 -23-OCT-1982 10 / 12: 29.76 29.76 30.20 29.34 -29-OCT-1982 12 / 13: 30.20 30.20 30.75 29.76 -04-NOV-1982 14 / 14: 30.75 30.75 31.42 30.20 -10-NOV-1982 16 / 15: 31.42 31.42 31.84 30.75 -16-NOV-1982 18 / 16: 31.84 31.84 31.98 31.42 -22-NOV-1982 20 / 17: 31.98 31.98 32.13 31.84 -28-NOV-1982 22 / 18: 32.13 32.13 32.41 31.98 -05-DEC-1982 00 / 19: 32.41 32.41 32.73 32.13 -11-DEC-1982 02 / 20: 32.73 32.73 32.94 32.41 -17-DEC-1982 04 / 21: 32.94 32.94 32.97 32.73 -23-DEC-1982 06 / 22: 32.97 32.94 32.97 32.94 -29-DEC-1982 08 / 23: 32.94 32.94 32.97 32.81 -04-JAN-1983 10 / 24: 32.81 32.81 32.94 32.59 -10-JAN-1983 12 / 25: 32.59 32.81 32.81 32.59 - -list/x=123.5w/y=2.5/k=1 temp, temp[L=@med:3], temp[L=@smx:3], temp[L=@smn:3] - DATA SET: ./data/gt4d011.cdf - TIME: 14-AUG-1982 11:00 to 13-JAN-1983 13:00 - LONGITUDE: 123.5W - LATITUDE: 2.5N - DEPTH (m): 5 - Column 1: TEMP is TEMPERATURE (deg. C) - Column 2: TEMP[T=@MED:3] is TEMPERATURE (deg. C)(median smoothed by 3 pts on T) - Column 3: TEMP[T=@SMX:3] is TEMPERATURE (deg. C)(maximum smoothed by 3 pts on T) - Column 4: TEMP[T=@SMN:3] is TEMPERATURE (deg. C)(minimum smoothed by 3 pts on T) - TEMP TEMP TEMP TEMP -17-AUG-1982 12 / 1: 27.15 27.23 27.23 27.15 -23-AUG-1982 14 / 2: 27.23 27.23 27.36 27.15 -29-AUG-1982 16 / 3: 27.36 27.36 27.54 27.23 -04-SEP-1982 18 / 4: 27.54 27.54 27.79 27.36 -10-SEP-1982 20 / 5: 27.79 27.79 28.09 27.54 -16-SEP-1982 22 / 6: 28.09 28.09 28.33 27.79 -23-SEP-1982 00 / 7: 28.33 28.33 28.47 28.09 -29-SEP-1982 02 / 8: 28.47 28.47 28.61 28.33 -05-OCT-1982 04 / 9: 28.61 28.61 28.91 28.47 -11-OCT-1982 06 / 10: 28.91 28.91 29.34 28.61 -17-OCT-1982 08 / 11: 29.34 29.34 29.76 28.91 -23-OCT-1982 10 / 12: 29.76 29.76 30.20 29.34 -29-OCT-1982 12 / 13: 30.20 30.20 30.75 29.76 -04-NOV-1982 14 / 14: 30.75 30.75 31.42 30.20 -10-NOV-1982 16 / 15: 31.42 31.42 31.84 30.75 -16-NOV-1982 18 / 16: 31.84 31.84 31.98 31.42 -22-NOV-1982 20 / 17: 31.98 31.98 32.13 31.84 -28-NOV-1982 22 / 18: 32.13 32.13 32.41 31.98 -05-DEC-1982 00 / 19: 32.41 32.41 32.73 32.13 -11-DEC-1982 02 / 20: 32.73 32.73 32.94 32.41 -17-DEC-1982 04 / 21: 32.94 32.94 32.97 32.73 -23-DEC-1982 06 / 22: 32.97 32.94 32.97 32.94 -29-DEC-1982 08 / 23: 32.94 32.94 32.97 32.81 -04-JAN-1983 10 / 24: 32.81 32.81 32.94 32.59 -10-JAN-1983 12 / 25: 32.59 32.81 32.81 32.59 -list/x=123.5w/y=2.5/k=1 temp, temp[L=@med:5], temp[L=@smx:5], temp[L=@smn:5] - DATA SET: ./data/gt4d011.cdf - TIME: 14-AUG-1982 11:00 to 13-JAN-1983 13:00 - LONGITUDE: 123.5W - LATITUDE: 2.5N - DEPTH (m): 5 - Column 1: TEMP is TEMPERATURE (deg. C) - Column 2: TEMP[T=@MED:5] is TEMPERATURE (deg. C)(median smoothed by 5 pts on T) - Column 3: TEMP[T=@SMX:5] is TEMPERATURE (deg. C)(maximum smoothed by 5 pts on T) - Column 4: TEMP[T=@SMN:5] is TEMPERATURE (deg. C)(minimum smoothed by 5 pts on T) - TEMP TEMP TEMP TEMP -17-AUG-1982 12 / 1: 27.15 27.23 27.36 27.15 -23-AUG-1982 14 / 2: 27.23 27.36 27.54 27.15 -29-AUG-1982 16 / 3: 27.36 27.36 27.79 27.15 -04-SEP-1982 18 / 4: 27.54 27.54 28.09 27.23 -10-SEP-1982 20 / 5: 27.79 27.79 28.33 27.36 -16-SEP-1982 22 / 6: 28.09 28.09 28.47 27.54 -23-SEP-1982 00 / 7: 28.33 28.33 28.61 27.79 -29-SEP-1982 02 / 8: 28.47 28.47 28.91 28.09 -05-OCT-1982 04 / 9: 28.61 28.61 29.34 28.33 -11-OCT-1982 06 / 10: 28.91 28.91 29.76 28.47 -17-OCT-1982 08 / 11: 29.34 29.34 30.20 28.61 -23-OCT-1982 10 / 12: 29.76 29.76 30.75 28.91 -29-OCT-1982 12 / 13: 30.20 30.20 31.42 29.34 -04-NOV-1982 14 / 14: 30.75 30.75 31.84 29.76 -10-NOV-1982 16 / 15: 31.42 31.42 31.98 30.20 -16-NOV-1982 18 / 16: 31.84 31.84 32.13 30.75 -22-NOV-1982 20 / 17: 31.98 31.98 32.41 31.42 -28-NOV-1982 22 / 18: 32.13 32.13 32.73 31.84 -05-DEC-1982 00 / 19: 32.41 32.41 32.94 31.98 -11-DEC-1982 02 / 20: 32.73 32.73 32.97 32.13 -17-DEC-1982 04 / 21: 32.94 32.94 32.97 32.41 -23-DEC-1982 06 / 22: 32.97 32.94 32.97 32.73 -29-DEC-1982 08 / 23: 32.94 32.94 32.97 32.59 -04-JAN-1983 10 / 24: 32.81 32.94 32.97 32.59 -10-JAN-1983 12 / 25: 32.59 32.81 32.94 32.59 -list/x=123.5w/y=2.5/k=1 temp, temp[L=@med:5], temp[L=@smx:6], temp[L=@smn:6] - DATA SET: ./data/gt4d011.cdf - TIME: 14-AUG-1982 11:00 to 13-JAN-1983 13:00 - LONGITUDE: 123.5W - LATITUDE: 2.5N - DEPTH (m): 5 - Column 1: TEMP is TEMPERATURE (deg. C) - Column 2: TEMP[T=@MED:5] is TEMPERATURE (deg. C)(median smoothed by 5 pts on T) - Column 3: TEMP[T=@SMX:6] is TEMPERATURE (deg. C)(maximum smoothed by 6 pts on T) - Column 4: TEMP[T=@SMN:6] is TEMPERATURE (deg. C)(minimum smoothed by 6 pts on T) - TEMP TEMP TEMP TEMP -17-AUG-1982 12 / 1: 27.15 27.23 27.54 27.15 -23-AUG-1982 14 / 2: 27.23 27.36 27.79 27.15 -29-AUG-1982 16 / 3: 27.36 27.36 28.09 27.15 -04-SEP-1982 18 / 4: 27.54 27.54 28.33 27.15 -10-SEP-1982 20 / 5: 27.79 27.79 28.47 27.23 -16-SEP-1982 22 / 6: 28.09 28.09 28.61 27.36 -23-SEP-1982 00 / 7: 28.33 28.33 28.91 27.54 -29-SEP-1982 02 / 8: 28.47 28.47 29.34 27.79 -05-OCT-1982 04 / 9: 28.61 28.61 29.76 28.09 -11-OCT-1982 06 / 10: 28.91 28.91 30.20 28.33 -17-OCT-1982 08 / 11: 29.34 29.34 30.75 28.47 -23-OCT-1982 10 / 12: 29.76 29.76 31.42 28.61 -29-OCT-1982 12 / 13: 30.20 30.20 31.84 28.91 -04-NOV-1982 14 / 14: 30.75 30.75 31.98 29.34 -10-NOV-1982 16 / 15: 31.42 31.42 32.13 29.76 -16-NOV-1982 18 / 16: 31.84 31.84 32.41 30.20 -22-NOV-1982 20 / 17: 31.98 31.98 32.73 30.75 -28-NOV-1982 22 / 18: 32.13 32.13 32.94 31.42 -05-DEC-1982 00 / 19: 32.41 32.41 32.97 31.84 -11-DEC-1982 02 / 20: 32.73 32.73 32.97 31.98 -17-DEC-1982 04 / 21: 32.94 32.94 32.97 32.13 -23-DEC-1982 06 / 22: 32.97 32.94 32.97 32.41 -29-DEC-1982 08 / 23: 32.94 32.94 32.97 32.59 -04-JAN-1983 10 / 24: 32.81 32.94 32.97 32.59 -10-JAN-1983 12 / 25: 32.59 32.81 32.97 32.59 - -list/y=2.5/k=1/l=1/x=139.5W:122.5W temp, temp[i=@med], temp[i=@smx], temp[i=@smn] - DATA SET: ./data/gt4d011.cdf - LONGITUDE: 139.5W to 122.5W - LATITUDE: 2.5N - DEPTH (m): 5 - TIME: 17-AUG-1982 12:00 - Column 1: TEMP is TEMPERATURE (deg. C) - Column 2: TEMP[X=@MED:3] is TEMPERATURE (deg. C)(median smoothed by 3 pts on X) - Column 3: TEMP[X=@SMX:3] is TEMPERATURE (deg. C)(maximum smoothed by 3 pts on X) - Column 4: TEMP[X=@SMN:3] is TEMPERATURE (deg. C)(minimum smoothed by 3 pts on X) - TEMP TEMP TEMP TEMP -139.5W / 91: 26.58 26.65 26.65 26.58 -138.5W / 92: 26.65 26.65 26.90 26.58 -137.5W / 93: 26.90 26.90 27.14 26.65 -136.5W / 94: 27.14 27.14 27.24 26.90 -135.5W / 95: 27.24 27.18 27.24 27.14 -134.5W / 96: 27.18 27.18 27.24 26.91 -133.5W / 97: 26.91 26.91 27.18 26.70 -132.5W / 98: 26.70 26.81 26.91 26.70 -131.5W / 99: 26.81 26.81 27.01 26.70 -130.5W / 100: 27.01 27.01 27.16 26.81 -129.5W / 101: 27.16 27.16 27.21 27.01 -128.5W / 102: 27.21 27.20 27.21 27.16 -127.5W / 103: 27.20 27.20 27.21 27.18 -126.5W / 104: 27.18 27.18 27.20 27.14 -125.5W / 105: 27.14 27.14 27.18 27.13 -124.5W / 106: 27.13 27.14 27.15 27.13 -123.5W / 107: 27.15 27.15 27.17 27.13 -122.5W / 108: 27.17 27.17 27.17 27.15 -list/k=1/l=1/x=123.5w temp, temp[j=35:56@med], temp[j=35:56@smx], temp[j=35:56@smn] - DATA SET: ./data/gt4d011.cdf - LATITUDE: 3.667S to 3.667N - LONGITUDE: 123.5W - DEPTH (m): 5 - TIME: 17-AUG-1982 12:00 - Column 1: TEMP is TEMPERATURE (deg. C) - Column 2: TEMP[Y=@MED:3] is TEMPERATURE (deg. C)(median smoothed by 3 pts on Y) - Column 3: TEMP[Y=@SMX:3] is TEMPERATURE (deg. C)(maximum smoothed by 3 pts on Y) - Column 4: TEMP[Y=@SMN:3] is TEMPERATURE (deg. C)(minimum smoothed by 3 pts on Y) - TEMP TEMP TEMP TEMP -3.5S / 35: 26.00 26.00 26.00 25.95 -3.17S / 36: 25.95 25.95 26.00 25.89 -2.83S / 37: 25.89 25.89 25.95 25.82 -2.5S / 38: 25.82 25.82 25.89 25.74 -2.17S / 39: 25.74 25.74 25.82 25.66 -1.83S / 40: 25.66 25.66 25.74 25.60 -1.5S / 41: 25.60 25.60 25.66 25.54 -1.17S / 42: 25.54 25.54 25.60 25.50 -0.83S / 43: 25.50 25.50 25.54 25.50 -0.5S / 44: 25.50 25.50 25.54 25.50 -0.17S / 45: 25.54 25.54 25.63 25.50 -0.17N / 46: 25.63 25.63 25.76 25.54 -0.5N / 47: 25.76 25.76 25.93 25.63 -0.83N / 48: 25.93 25.93 26.15 25.76 -1.17N / 49: 26.15 26.15 26.42 25.93 -1.5N / 50: 26.42 26.42 26.69 26.15 -1.83N / 51: 26.69 26.69 26.92 26.42 -2.17N / 52: 26.92 26.92 27.15 26.69 -2.5N / 53: 27.15 27.15 27.40 26.92 -2.83N / 54: 27.40 27.40 27.70 27.15 -3.17N / 55: 27.70 27.70 28.06 27.40 -3.5N / 56: 28.06 28.06 28.06 27.70 - -list/l=1/x=123.5w/y=2.5/z=0:100 temp, temp[k=@med], temp[k=@smx], temp[k=@smn] - DATA SET: ./data/gt4d011.cdf - DEPTH (m): 0 to 100 - LONGITUDE: 123.5W - LATITUDE: 2.5N - TIME: 17-AUG-1982 12:00 - Column 1: TEMP is TEMPERATURE (deg. C) - Column 2: TEMP[Z=@MED:3] is TEMPERATURE (deg. C)(median smoothed by 3 pts on Z) - Column 3: TEMP[Z=@SMX:3] is TEMPERATURE (deg. C)(maximum smoothed by 3 pts on Z) - Column 4: TEMP[Z=@SMN:3] is TEMPERATURE (deg. C)(minimum smoothed by 3 pts on Z) - TEMP TEMP TEMP TEMP -5 / 1: 27.15 27.15 27.15 27.10 -15 / 2: 27.10 27.10 27.15 27.10 -25 / 3: 27.10 27.10 27.10 27.10 -35 / 4: 27.10 27.10 27.10 27.09 -45 / 5: 27.09 27.09 27.10 26.84 -55 / 6: 26.84 26.84 27.09 26.21 -65 / 7: 26.21 26.21 26.84 25.40 -75 / 8: 25.40 25.40 26.21 24.51 -85 / 9: 24.51 24.51 25.40 23.54 -95 / 10: 23.54 24.51 24.51 23.54 - - -GO bn_reset bn_vector_symbols -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_vector_symbols -GO bn_vector_symbols -! bn_vector_symbols.jnl -! ACM 7/16/21010 Ferret V6.6.3 -! -! On any vector plot command, define symbols -! PPL_VECLEN containing the vector length scale -! PPL_VEC_XSKIP, PPL_VEC_YSKIP containing the skip -! -! They are defined whether they are automatically set or -! set via qualifiers. - -VECTOR/I=1:10/J=1:20 i/j,j/i -SHOW SYMBOL ppl_vec* -PPL_VECLEN = " 7.39" -PPL_VEC_XSKIP = "1" -PPL_VEC_YSKIP = "1" - -VECTOR/I=1:10/J=1:20/LEN=8 i/j,j/i -SHOW SYMBOL ppl_vec* -PPL_VECLEN = " 8.00" -PPL_VEC_XSKIP = "1" -PPL_VEC_YSKIP = "1" - -VECTOR/I=1:300/J=1:200/LEN=8.2 i/j,j/i -SHOW SYMBOL ppl_vec* -PPL_VECLEN = " 8.20" -PPL_VEC_XSKIP = "8" -PPL_VEC_YSKIP = "7" - -VECTOR/I=1:300/J=1:200/XSKIP=10/YSKIP=8 i/j,j/i -SHOW SYMBOL ppl_vec* -PPL_VECLEN = " 25.1" -PPL_VEC_XSKIP = "10" -PPL_VEC_YSKIP = "8" - -VECTOR/I=1:300/J=1:200/LEN=12.2/XSKIP=10/YSKIP=8 i/j,j/i -SHOW SYMBOL ppl_vec* -PPL_VECLEN = " 12.2" -PPL_VEC_XSKIP = "10" -PPL_VEC_YSKIP = "8" - -! Also, vector/KEY turns on the key even if /NOLAB was set. -VECTOR/NOLAB/KEY/I=1:300/J=1:200/LEN=12.2/XSKIP=10/YSKIP=6 i/j,j/i - -VECTOR/OVER/KEY/NOLAB/I=1:300/J=1:200/LEN=12.2/XSKIP=10/YSKIP=4 i/j,j/i - -GO bn_reset bn_variance_large -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_variance_large -GO bn_variance_large -! bn_variance_large.jnl -! Previous to v6.6.4, these returned messages **too big** - -USE coads_climatology -LET huge = sst*1.e18 -STAT/L=1 huge - - SST*1.E18 - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 6694 - Minimum value: -1.8E+18 - Maximum value: 3.1E+19 - Mean value: 1.652E+19 (unweighted average) - Standard deviation: 1.0139E+19 -SHADE/L=1/LEV=v huge - -LET huge = sst*1.e25 -STAT/L=1 huge - - SST*1.E25 - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 6694 - Minimum value: -1.8E+25 - Maximum value: 3.1E+26 - Mean value: 1.652E+26 (unweighted average) - Standard deviation: 1.0139E+26 -SHADE/L=1/LEV=v huge - -CANCEL SYMBOL lev* - -GO bn_reset bn_labnum_calendar -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_labnum_calendar -GO bn_labnum_calendar -! bn_labnum_calendar.jn. -! Define new symbol, when a Calendar label is on -! the plot, pointing to its ppl label number. - -! Use a non-standard calendar -! label LABNUM_CALEN is defined. - -use gt4d011 -set axis/calendar=noleap `temp,return=taxis` - !-> set axis/calendar=noleap TIME110 -plot/x=132w/y=2n/k=1 temp -sh sym LABNUM_CALEND -LABNUM_CALEND = "4" -sh sym lab($labnum_calend) - !-> sh sym lab4 -LAB4 = "CALENDAR: NOLEAP" - - -! *********** v6.65 Additions *********** - -GO bn_reset bn665_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn665_bug_fixes -GO bn665_bug_fixes -! bn65_bug_fixes.jnl -! test various fixes that went into version 6.6.5 -! 11/2010 ACM -! - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err664_xml_keep_case -! err664_xml_keep_case.jnl -! -! See bug 1177, xml output should keep the original case of -! variables and axis names. Previously xml output upcased -! variable and coordinate axis names. -! -! This dataset has variables and axes in various cases: -! upper case axis TIME -! lower case axis zt, variable temp -! mixed case axes grid_x_T, grid_y_T - -!******* Note this is NOT implemented in the V6.65 release ******! -!******* Needs further changes to integrate it with LAS ******! - -use a_cartesian_bug1179.nc -sh var/xml - -! List the xml for just the axes in this file. sho axis/all/xml -! lists all axes here at the end of the benchmarks. - -LET axis_names = ..dimnames -LET nd = ..ndims -REPEAT/RANGE=1:`nd`/name=m (DEFINE SYMBOL m = `m`; SH AXIS/XML `axis_names[i=($m)]`) - !-> REPEAT/RANGE=1:4/name=m (DEFINE SYMBOL m = `m`; SH AXIS/XML `axis_names[i=($m)]`) -!-> REPEAT: M:1 - !-> DEFINE SYMBOL m = 1 - !-> SH AXIS/XML TIME28 - - - - - - - - - - 1 - - - 1900-02-15 03:00:00 - - - 1900-02-15 03:00:00 - - - - - - - - - - - - - - - -!-> REPEAT: M:2 - !-> DEFINE SYMBOL m = 2 - !-> SH AXIS/XML grid_x_T - - - - - - - - - - 1 - - - 79 - - - 79 - - - - - - no - - - - - - - - - - - - - - - -!-> REPEAT: M:3 - !-> DEFINE SYMBOL m = 3 - !-> SH AXIS/XML grid_y_T - - - - - - - - - - 1 - - - -0.25 - - - -0.25 - - - - - - no - - - - - - - - - - - - - - - -!-> REPEAT: M:4 - !-> DEFINE SYMBOL m = 4 - !-> SH AXIS/XML zt - - - - - - - - - - 10 - - - 22.5 - - - 157.9952 - - - - - - uneven - - - no - - - - - - - - - - - - - - - zt_bnds - - - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err664_xml_one_point_axis -! err664_xml_one_point_axis.jnl -! See LAS ticket 969. -! Previously the xml listing incorrectly skipped valid one-point axes. -! (When an axis is averaged away xml listings correctly -! skip the now-degenerate axis. - -USE a_cartesian_bug1179.nc -SH DAT - currently SET data sets: - 1> ./data/a_cartesian_bug1179.nc (default) - name title I J K L - TEMP THETA_FO(SALT_EXTRAP,TEMP_EXTRA 1:1 1:1 1:10 1:1 - - -LET/D=1 a = temp -! These listings should show the X,Y, and T axes, valid one-point axes -! and also the Z axis which has 10 points. -SH VAR/XML - - - - - - - -1.E+34 - - - - - - -GRID_X_T -GRID_Y_T -ZT -TIME28 - - - - - -CANCEL VAR a - -LET/D=1 temp_ave_t = temp[Z=37.5:112.5@AVE] -! These listings should show the X,Y, and T axes, valid one-point axes -! but not the Z axis, which has been averaged away. -SH VAR/XML - - - - - - - -1.E+34 - - - - - - -GRID_X_T -GRID_Y_T -TIME28 - - - - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err65_read_epic_cdf -! Ned Cokelet reports that the time coordinate is read incorrectly -! from this file. Should translate to 04-MAY-2007 05:02 -! Bug was in v6.4 - 6.6 Ferret - -set mode calendar:minutes ! this was set to months, back in bn_pattern.jnl -use epic_formatted_file.nc -list/prec=7 t[gt=t_28] - VARIABLE : T - axis TIME28 - FILENAME : epic_formatted_file.nc - TIME : 04-MAY-2007 05:02 - 38825.21 - -! 1/2016 additional tests, reading and saving data, -! getting attribute information. - -set att/output=all . -save/file=a.nc/clobber/k=1:5 t_28 -sp ncdump -h a.nc | grep INST_TYPE - :INST_TYPE = "Sea-Bird CTD SBE 9" ; - -let evar = T_28.generic_name -save/append/file=a.nc evar - -list ..dimnames - VARIABLE : ..DIMNAMES - FILENAME : epic_formatted_file.nc - SUBSET : 4 points (X) - 1 / 1:"TIME28" - 2 / 2:"dep" - 3 / 3:"lat" - 4 / 4:"lon" - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err664_tax_fcns -! err664_tax_fcns.jnl -! Fixes for tickets 1766 and 1765 - -! 1765 Functions did not test for missing data. - - -! tax_ functions -use gt4d011 -let tval = t[gt=temp] - -list tax_dayfrac({`tval[l=1]`,`tval[l=13]`,},tval) - !-> list tax_dayfrac({22702,24454,},tval) - VARIABLE : TAX_DAYFRAC({22702,24454,},TVAL) - FILENAME : gt4d011.cdf - SUBSET : 3 points (X) - 1 / 1: 0.5000 - 2 / 2: 0.5000 - 3 / 3: .... -list tax_day({`tval[l=1]`,`tval[l=13]`,},tval) - !-> list tax_day({22702,24454,},tval) - VARIABLE : TAX_DAY({22702,24454,},TVAL) - FILENAME : gt4d011.cdf - SUBSET : 3 points (X) - 1 / 1: 17.00 - 2 / 2: 29.00 - 3 / 3: .... -list tax_month({`tval[l=1]`,`tval[l=13]`,},tval) - !-> list tax_month({22702,24454,},tval) - VARIABLE : TAX_MONTH({22702,24454,},TVAL) - FILENAME : gt4d011.cdf - SUBSET : 3 points (X) - 1 / 1: 8.00 - 2 / 2: 10.00 - 3 / 3: .... -list tax_year({`tval[l=1]`,`tval[l=13]`,},tval) - !-> list tax_year({22702,24454,},tval) - VARIABLE : TAX_YEAR({22702,24454,},TVAL) - FILENAME : gt4d011.cdf - SUBSET : 3 points (X) - 1 / 1: 1982. - 2 / 2: 1982. - 3 / 3: .... - -! 1766 tax_year retured 0 for year 0001 - -def ax/edge/t=1-jan-0000:1-jan-0005:1/unit=year tax -let a = t[gt=tax] -list tax_year(a,a) - VARIABLE : TAX_YEAR(A,A) - SUBSET : 6 points (TIME) - JUL-0000 / 1: 0.000 - JUL-0001 / 2: 1.000 - JUL-0002 / 3: 2.000 - JUL-0003 / 4: 3.000 - JUL-0004 / 5: 4.000 - JUL-0005 / 6: 5.000 - -! Likewise no year for year 0000 and 0001 in tax_datestring - list tax_datestring(a, a, "day") - VARIABLE : TAX_DATESTRING(A, A, "day") - SUBSET : 6 points (TIME) - JUL-0000 / 1:"01-JUL-0000" - JUL-0001 / 2:"01-JUL-0001" - JUL-0002 / 3:"02-JUL-0002" - JUL-0003 / 4:"02-JUL-0003" - JUL-0004 / 5:"01-JUL-0004" - JUL-0005 / 6:"01-JUL-0005" - - -GO bn_reset bn_floatstr -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_floatstr -GO bn_floatstr -! bn_floatstr.jnl -! testing new function to convert floating-point -! variables to strings. - -LET string = FLOATSTR({3.14159,2.71828},"(f3.1)") -LIST string - VARIABLE : FLOATSTR({3.14159,2.71828},"(f3.1)") - SUBSET : 2 points (X) - 1 / 1:"3.1" - 2 / 2:"2.7" - -! Missing data returned as the null string -LET string = FLOATSTR({3.14159,2.71828,},"(g8.2)") -LIST string - VARIABLE : FLOATSTR({3.14159,2.71828,},"(g8.2)") - SUBSET : 3 points (X) - 1 / 1:" 3.1" - 2 / 2:" 2.7" - 3 / 3:"" - -! Test some large and small values -LET var = {3.14159,2.71828,} -LIST FLOATSTR(36*var,"(e9.4)") - VARIABLE : FLOATSTR(36*VAR,"(e9.4)") - SUBSET : 3 points (X) - 1 / 1:".1131E+03" - 2 / 2:".9786E+02" - 3 / 3:"" -LIST FLOATSTR(1.e14*var,"(e9.4)") - VARIABLE : FLOATSTR(1.E14*VAR,"(e9.4)") - SUBSET : 3 points (X) - 1 / 1:".3142E+15" - 2 / 2:".2718E+15" - 3 / 3:"" -LIST FLOATSTR(1.e-14*var,"(e9.4)") - VARIABLE : FLOATSTR(1.E-14*VAR,"(e9.4)") - SUBSET : 3 points (X) - 1 / 1:".3142E-13" - 2 / 2:".2718E-13" - 3 / 3:"" -LIST FLOATSTR(1.e-14*var,"(f4.1)") - VARIABLE : FLOATSTR(1.E-14*VAR,"(f4.1)") - SUBSET : 3 points (X) - 1 / 1:" 0.0" - 2 / 2:" 0.0" - 3 / 3:"" -LIST FLOATSTR(1.e-14*var,"(1pg9.2)") - VARIABLE : FLOATSTR(1.E-14*VAR,"(1pg9.2)") - SUBSET : 3 points (X) - 1 / 1:" 3.14E-14" - 2 / 2:" 2.72E-14" - 3 / 3:"" - -! Result shape is inherited from the input variable -USE gt4d011.cdf -LIST/I=100/J=36:38/T=1-dec-1982:1-jan-1983 FLOATSTR(tauy, "(f8.4)") - VARIABLE : FLOATSTR(TAUY, "(f8.4)") - FILENAME : gt4d011.cdf - SUBSET : 3 by 6 points (LATITUDE-TIME) - LONGITUDE: 130W - 3S 2.67S 2.33S - 36 37 38 - 28-NOV-1982 22 / 18:" -0.0272"" -0.0240"" -0.0208" - 05-DEC-1982 00 / 19:" -0.0283"" -0.0252"" -0.0220" - 11-DEC-1982 02 / 20:" -0.0294"" -0.0263"" -0.0232" - 17-DEC-1982 04 / 21:" -0.0357"" -0.0324"" -0.0291" - 23-DEC-1982 06 / 22:" -0.0470"" -0.0434"" -0.0397" - 29-DEC-1982 08 / 23:" -0.0583"" -0.0543"" -0.0503" - -USE coads_climatology -LET var = FLOATSTR(sst,"(1pg8.3)") - -LIST/X=165W:135W/Y=-50/L=1 var - VARIABLE : FLOATSTR(SST,"(1pg8.3)") - FILENAME : coads_climatology.cdf - SUBSET : 16 points (LONGITUDE) - LATITUDE : 51S - TIME : 16-JAN 06:00 - 51S - 20 - 165W / 88:"10.5" - 163W / 89:"11.2" - 161W / 90:"11.8" - 159W / 91:"11.0" - 157W / 92:"10.7" - 155W / 93:"10.9" - 153W / 94:"10.7" - 151W / 95:"10.5" - 149W / 96:"10.6" - 147W / 97:"11.0" - 145W / 98:"10.1" - 143W / 99:"11.0" - 141W / 100:"" - 139W / 101:"" - 137W / 102:"" - 135W / 103:"" -LIST/X=165W:135W/Y=-50/L=1 STRLEN(var) - VARIABLE : STRLEN(VAR) - FILENAME : coads_climatology.cdf - SUBSET : 16 points (LONGITUDE) - LATITUDE : 51S - TIME : 16-JAN 06:00 - 51S - 20 - 165W / 88: 4.000 - 163W / 89: 4.000 - 161W / 90: 4.000 - 159W / 91: 4.000 - 157W / 92: 4.000 - 155W / 93: 4.000 - 153W / 94: 4.000 - 151W / 95: 4.000 - 149W / 96: 4.000 - 147W / 97: 4.000 - 145W / 98: 4.000 - 143W / 99: 4.000 - 141W / 100: 0.000 - 139W / 101: 0.000 - 137W / 102: 0.000 - 135W / 103: 0.000 - -! *********** v6.7 Additions *********** - -GO bn_reset bn67_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn67_bug_fixes -GO bn67_bug_fixes -! bn67_bug_fixes.jnl -! test various fixes that went into version 6.7 -! 2/2011 ACM - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err665_sum_4d_labels -! A multi-dimensioned sum is now done as a 4D transformation. -! the labels on a LISTing of the result contained ??? -! ticket 1788 - -use coads_climatology -list sst[X=125E,Y=75S:75N@sum,l=1:12@sum] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 125E - LATITUDE : 75S to 75N (YT summed) - TIME : 01-JAN 00:45 to 31-DEC 18:13 (YT summed) - 7563. - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err665_din -! err665_din -! Fixing incorrect latitude corrections for single-point y axis, -! and the @DIN transformation. See ticket 1348, comment 12. - -! Compute the correct area of a 10m-deep, 1-deglon cell at 26.5N. -let pi = 3.1415926 -let/unit="m"/title="authalic radius of earth" r_authalic = 6371005 -let/unit="degrees_north" lat = 26.5 -let/unit="degrees_east" dx = 1 -let/unit="m" dz = 10 -let dx_meters = r_authalic * cos(lat * pi/180) * (dx * pi/180) -list dx_meters*dz - VARIABLE : DX_METERS*DZ - 995122. - -! Next try to reproduce this with Ferret. -! First make a one-cell XYZ variable, with a value of 1. -def ax/x=279:280:1/modulo=360/unit=degrees_east/edge xax -def ax/y=`lat-0.5`:`lat+0.5`:1/unit=degrees_north/edge yax - !-> def ax/y=26:27:1/unit=degrees_north/edge yax -def ax/z=0:10:10/unit=m/edge/depth zax -let p = 1+0*(x[gx=xax]+y[gy=yax]+z[gz=zax]) - -! Compute its integral (area) over XZ. -list p[x=279:380@din,z=0:10@din] - VARIABLE : 1+0*(X[GX=XAX]+Y[GY=YAX]+Z[GZ=ZAX]) - LONGITUDE: 81W to 20E(380) (XZ integ.) - LATITUDE : 26.5N - DEPTH (m): 0 to 10 (XZ integ.) - 995121. - - -! Now do it farther north. -LET/unit="degrees_north" lat = 72.5 -list dx_meters*dz - VARIABLE : DX_METERS*DZ - 334370. - -! Next try to reproduce this with Ferret. -! Compute its integral (area) over XZ. -def ax/y=`lat-0.5`:`lat+0.5`:1/unit=degrees_north/edge yax - !-> def ax/y=72:73:1/unit=degrees_north/edge yax -list p[x=279:380@din,z=0:10@din] - VARIABLE : 1+0*(X[GX=XAX]+Y[GY=YAX]+Z[GZ=ZAX]) - LONGITUDE: 81W to 20E(380) (XZ integ.) - LATITUDE : 72.5N - DEPTH (m): 0 to 10 (XZ integ.) - 334370. - -! Now in the south. -LET/unit="degrees_north" lat = -72.5 -list dx_meters*dz - VARIABLE : DX_METERS*DZ - 334370. - -! Next try to reproduce this with Ferret. -! Compute its integral (area) over XZ. -def ax/y=`lat-0.5`:`lat+0.5`:1/unit=degrees_north/edge yax - !-> def ax/y=-73:-72:1/unit=degrees_north/edge yax -list p[x=279:380@din,z=0:10@din] - VARIABLE : 1+0*(X[GX=XAX]+Y[GY=YAX]+Z[GZ=ZAX]) - LONGITUDE: 81W to 20E(380) (XZ integ.) - LATITUDE : 72.5S - DEPTH (m): 0 to 10 (XZ integ.) - 334370. - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err665_centered_lev -! err665_centered_lev -! Bug 1803; computation of new levels isnt requested for -! centered levels after a SHADE/LINE/LEV=c or FILL/LINE/LEV=c - -USE coads_climatology -SHADE/L=1/LINE/KEY/LEV=c sst -SHO SYM lev* -LEV_TEXT = "C" -LEV_MIN = "-32" -LEV_MAX = "32" -LEV_NUM = "32" -LEV_DEL = "2" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "-32,-30,-28,-26,-24,-22,-20,-18,-16,-14,-12,-10,-8,-6,-4,-2,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32" - -SHADE/L=1/LINE/KEY/LEV=10c sst -SHO SYM lev* -LEV_TEXT = "10C" -LEV_MIN = "-35" -LEV_MAX = "35" -LEV_NUM = "14" -LEV_DEL = "5" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "-35,-30,-25,-20,-15,-10,-5,0,5,10,15,20,25,30,35" - -FILL/L=3/LINE/KEY/LEV=c sst -SHO SYM lev* -LEV_TEXT = "C" -LEV_MIN = "-34" -LEV_MAX = "34" -LEV_NUM = "34" -LEV_DEL = "2" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "-34,-32,-30,-28,-26,-24,-22,-20,-18,-16,-14,-12,-10,-8,-6,-4,-2,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34" - -FILL/L=3/LINE/KEY/LEV=10c sst -SHO SYM lev* -LEV_TEXT = "10C" -LEV_MIN = "-35" -LEV_MAX = "35" -LEV_NUM = "14" -LEV_DEL = "5" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "-35,-30,-25,-20,-15,-10,-5,0,5,10,15,20,25,30,35" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err665_hours_since_T -! err665_hours_since_T.jnl -! Ticket 1806: allow time-axis units string to -! be written with a T between the date and time parts, -! e.g. units: "hours since 2011-03-08T12:00:00Z" - -! Check that T0 includes hour 12:00 -! Previously the hours, minutes, seconds were set to 00 - -use hourst.nc -sh axis/all hourax - name axis # pts start end - HOURAX TIME 29 r 01-JAN-2001 12:00 15-JAN-2001 12:00 -T0 = 15-JAN-1901 12:00:00 - Axis span (to cell edges) = 348 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err667_att_too_long -! err667_att_too_long.jnl -! 3/25/2011 ACM -! bug 1820; too-long string attribute causes crash or hang - -use toolong.nc -sh dat/att - currently SET data sets: - 1> ./data/toolong.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 28 T FERRET V6.7 (beta) 25-Mar-11 - Conventions CHAR 6 F CF-1.0 - nco_input_file_number - INT 1 F 1000 - nco_input_file_list - CHAR 2760 F b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0001.SURF.nc b40.coup_carb.004.cam2.h0.0002.SURF.nc b40.coup_carb.004.cam2.h0.0003.SURF.nc b40.coup_carb.004.cam2.h0.0004.SURF.nc b40.coup_carb.004.cam2.h0.0005.SURF.nc b40.coup_carb.004.cam2.h0.0006.SURF.nc b40.coup_carb.004.cam2.h0.0007.SURF.nc b40.coup_carb.004.cam2.h0.0008.SURF.nc b40.coup_carb.004.cam2.h0.0009.SURF.nc b40.coup_carb.004.cam2.h0.0010.SURF.nc b40.coup_carb.004.cam2.h0.0011.SURF.nc b40.coup_carb.004.cam2.h0.0012.SURF.nc b40.coup_carb.004.cam2.h0.0013.SURF.nc b40.coup_carb.004.cam2.h0.0014.SURF.nc b40.coup_carb.004.cam2.h0.0015.SURF.nc b40.coup_carb.004.cam2.h0.0016.SURF.nc b40.coup_carb.004.cam2.h0.0017.SURF.nc b40.coup_carb.004.cam2.h0.0018.SURF.nc b40.coup_carb.004.cam2.h0.0019.SURF.nc b40.coup_carb.004.cam2.h0.0020.SURF.nc b40.coup_carb.004.cam2.h0.0021.SURF.nc b40.coup_carb.004.cam2.h0.0022.SURF.nc b40.coup_carb.004.cam2.h0.0023.SURF.nc b40.coup_carb.004.cam2.h0.0024.SURF.nc b40.coup_carb.004.cam2.h0.0025.SURF.nc b40.coup_carb.004.cam2.h0.0026.SURF.nc b40.coup_carb.004.cam2.h0.0027.SURF.nc b40.coup_carb.004.cam2.h0.0028.SURF.nc b40.coup_carb.004.cam2.h0.0029.SURF.nc b40.coup_carb.004.cam2.h0.0030.SURF.nc b40.coup_carb.004.cam2.h0.0031.SURF.nc b40.coup_carb.004.cam2.h0.0032.SURF.nc b40.coup_carb.004.cam2.h0.0033.SURF.nc b40.coup_carb.004.cam2.h0.0034.SURF.nc b40.coup_carb.004.cam2.h0.0035.SURF.nc b40.coup_carb.004.cam2.h0.0036.SURF.nc b40.coup_carb.004.cam2.h0.0037.SURF.nc b40.coup_carb.004.cam2.h0.0038.SURF.nc b40.coup_carb.004.cam2.h0.0039.SURF.nc b40.coup_carb.004.cam2.h0.0040.SURF.nc b40.coup_carb.004.cam2.h0.0041.SURF.nc b40.coup_carb.004.cam2.h0.0042.SURF.nc b40.coup_carb.004.cam2.h0.0043.SURF.nc b40.coup_carb.004.cam2.h0.0044.SURF.nc b40.coup_carb.004.cam2.h0.0045.SURF.nc b40.coup_carb.004.cam2.h0.0046.SURF.nc b40.coup_carb.004.cam2.h0.0047.SURF.nc b40.coup_carb.004.cam2.h0.0048.SURF.nc b40.coup_carb.004.cam2.h0.0049.SURF.nc b40.coup_carb.004.cam2.h0.0050.SURF.nc b40.coup_carb.004.cam2.h0.0051.SURF.nc b40.coup_carb.004.cam2.h0.0052 - -(LON273_289) DOUBLE long_name CHAR 9 T longitude - units CHAR 12 T degrees_east - modulo DOUBLE 1 T 360 - point_spacing CHAR 4 T even - axis CHAR 1 T X - orig_file_axname - CHAR 10 F LON273_289 - -(LAT54_54) DOUBLE long_name CHAR 8 T latitude - units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - orig_file_axname - CHAR 8 F LAT54_54 - -(TIME28) DOUBLE long_name CHAR 23 T time interval endpoints - units CHAR 30 T days since 0001-01-01 00:00:00 - calendar CHAR 6 T noleap - axis CHAR 1 T T - orig_file_axname - CHAR 4 F TIME - - SFCO2 FLOAT units CHAR 7 T kg/m2/s - long_name CHAR 16 T CO2 surface flux - history CHAR 10 T From SFCO2 - -save/file=aa.nc/clobber sfco2 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err667_mode_desperate -! err667_mode_desperate -! 3/25/2011 ACM -! Fixing bug 1819: too-large requests for value of -! MODE DESPERATE, and formatting of the value of the -! setting in SHOW MODE. - -! Mode desperate is no longer used as of Ferret v7.2 -EXIT/SCRIPT - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err667_dup_axnames -! err667_dup_axnames.jnl -! See bug 1750 -! -! create two files with same-named y-axis -def ax/y=-90:90:5 yax_dup_axnames -let g = y[gy=yax_dup_axnames] -save/clob/file=g.nc g -def ax/y=-30:30:5 yax_dup_axnames -let h = y[gy=yax_dup_axnames] -save/clob/file=h.nc h - -can var g h -can ax yax_dup_axnames -! collect variables into a single file -use g.nc -use h.nc - -save/clob/file="gh.nc" g[d=1], h[d=2] - -! When the two datasets are opened, they both have Y axes with the same name -! but different contents, so internally the axis of H is named yax_dup_axnames1. -! If there is not a duplicate name in the output file, we want to write H with -! the original axis name. Check for that. - -save/clob/file="justh.nc" h[d=2] -save/clob/file="justg.nc" g[d=1] - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err667_string_if -! err667_string_if.jnl -! Previously both of these LIST commands caused a crash. -! tickets 1764, 1795 -! - -let a = {"x","y"} -let b = IF a EQ "x" THEN "z" ELSE a -list b - VARIABLE : IF A EQ "x" THEN "z" ELSE A - SUBSET : 2 points (X) - 1 / 1:"z" - 2 / 2:"y" - -let strings = {"a","b"} -list IF strings EQ "a" THEN "" ELSE strings - VARIABLE : IF STRINGS EQ "a" THEN "" ELSE STRINGS - SUBSET : 2 points (X) - 1 / 1:"" - 2 / 2:"b" - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err667_show_var_twice - ! err667_show_var_twice.jnl - ! ticket 1825 - -use coads_climatology -sh var sst[d=1] - SST[D=1]: SEA SURFACE TEMPERATURE, in dataset ./data/coads_climatology.cdf -sh var sst[d=1] - SST[D=1]: SEA SURFACE TEMPERATURE, in dataset ./data/coads_climatology.cdf - -!should return nothing -sh var airt - -let/d=1 airt2 = airt*2 -sh var airt2[d=1] - AIRT2[D=coads_climatology] = AIRT*2 -sh var airt2[d=1] - AIRT2[D=coads_climatology] = AIRT*2 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err667_5d_netcdf -exit/script ! this test is not valid for 6D Ferret. - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err67_save_append_open -! err67_save_append_open.jnl -! ticket 1832 -! SAVE to a file that's open for reading - -! Create a file -use gt4d011.cdf -save/clobber/file=a.nc temp -can data/all - -! Open for reading -use a.nc -let tempave = temp[t=@ave] -let temp_mm = temp - tempave - -! read from the file and then append to it -save/append/file=a.nc temp_mm - -! The dataset still shows just the original contents -sh dat - currently SET data sets: - 1> ./a.nc (default) - name title I J K L - TEMP TEMPERATURE 1:18 1:22 1:10 1:25 - -can dat/all - -! Close it and open again. -! Now it shows the variable we appended -use a.nc -sh dat - currently SET data sets: - 1> ./a.nc (default) - name title I J K L - TEMP TEMPERATURE 1:18 1:22 1:10 1:25 - TEMP_MM TEMP - TEMPAVE 1:18 1:22 1:10 1:25 - (T=14-AUG-1982 11:00:13-JAN-1983 13:00) - - - -GO bn_reset bn_NaN_note -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_NaN_note -GO bn_NaN_note -! bn_NaN_note.jnl -! Ferret v6.7 2/2011 -! The message about no missing flags, and assuming NaN, -! is issued only when MODE DIAGNOSTIC is turned on. - -! This dataset has no missing-valueu flags on its variables -! No notes on opening it -USE test0 -! -! Close it and then open it with MODE DIAG -! Now we get the NOTE -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -SET MODE diag -USE test0 -CANCEL MODE diag - -! *********** v6.71 Additions *********** - -GO bn_reset bn671_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn671_bug_fixes -GO bn671_bug_fixes -! bn671_bug_fixes.jnl -! test various fixes that went into version 6.71 -! 4/2011 ACM - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err67_tax_modtime -! err67_tax_modtime.jnl -! 5/17/2011 -! tickets 1853, 1854: TAX_* functions returned -! incorrect results when the time axis is modulo -set mode ignore_error - -!use climatological_axes -!can dat climatological_axes -let tvar = t[gt=month_reg] - -list/L=15:20 tax_datestring(t[gt=tvar],tvar,"hour") - VARIABLE : TAX_DATESTRING(T[GT=TVAR],TVAR,"hour") - SUBSET : 6 points (TIME) - 17-MAR / 15:"17-MAR 08" - 16-APR / 16:"16-APR 19" - 17-MAY / 17:"17-MAY 05" - 16-JUN / 18:"16-JUN 16" - 17-JUL / 19:"17-JUL 02" - 16-AUG / 20:"16-AUG 13" -list/L=15:20 tax_datestring(t[gt=tvar],tvar,"day") - VARIABLE : TAX_DATESTRING(T[GT=TVAR],TVAR,"day") - SUBSET : 6 points (TIME) - 17-MAR / 15:"17-MAR" - 16-APR / 16:"16-APR" - 17-MAY / 17:"17-MAY" - 16-JUN / 18:"16-JUN" - 17-JUL / 19:"17-JUL" - 16-AUG / 20:"16-AUG" -list/L=15:20 tax_dayfrac(t[gt=tvar],tvar), tax_dayfrac(t[gt=tvar],tvar)*24. - TIME: 02-MAR 03:32 to 31-AUG 18:27 - Column 1: TAX_DAYFRAC(T[GT=TVAR],TVAR) - Column 2: EX#2 is TAX_DAYFRAC(T[GT=TVAR],TVAR)*24. - (C001,V002) EX#2 -17-MAR / 15: 0.3662 8.79 -16-APR / 16: 0.8031 19.27 -17-MAY / 17: 0.2400 5.76 -16-JUN / 18: 0.6769 16.25 -17-JUL / 19: 0.1138 2.73 -16-AUG / 20: 0.5506 13.21 -list/L=15:20 tax_day(t[gt=tvar],tvar), tax_jday(t[gt=tvar],tvar) - TIME: 02-MAR 03:32 to 31-AUG 18:27 - Column 1: TAX_DAY(T[GT=TVAR],TVAR) - Column 2: TAX_JDAY(T[GT=TVAR],TVAR) - (C001,V002) (C001,V005) -17-MAR / 15: 17.00 76.0 -16-APR / 16: 16.00 106.0 -17-MAY / 17: 17.00 137.0 -16-JUN / 18: 16.00 167.0 -17-JUL / 19: 17.00 198.0 -16-AUG / 20: 16.00 228.0 -list/L=15:20 tax_month(t[gt=tvar],tvar), tax_yearfrac(t[gt=tvar],tvar) - TIME: 02-MAR 03:32 to 31-AUG 18:27 - Column 1: TAX_MONTH(T[GT=TVAR],TVAR) - Column 2: TAX_YEARFRAC(T[GT=TVAR],TVAR) - (C001,V002) (C001,V005) -17-MAR / 15: 3.000 0.2092 -16-APR / 16: 4.000 0.2926 -17-MAY / 17: 5.000 0.3760 -16-JUN / 18: 6.000 0.4594 -17-JUL / 19: 7.000 0.5428 -16-AUG / 20: 8.000 0.6262 -! the following is an error for a modulo time axis -list/L=15:20 tax_year(t[gt=tvar],tvar) -list tax_units(tvar) - VARIABLE : TAX_UNITS(TVAR) - 3600. - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err67_save_append_open -! err67_save_append_open.jnl -! ticket 1832 -! SAVE to a file that's open for reading - -! Create a file -use gt4d011.cdf -save/clobber/file=a.nc temp -can data/all - -! Open for reading -use a.nc -let tempave = temp[t=@ave] -let temp_mm = temp - tempave - -! read from the file and then append to it -save/append/file=a.nc temp_mm - -! The dataset still shows just the original contents -sh dat - currently SET data sets: - 1> ./a.nc (default) - name title I J K L - TEMP TEMPERATURE 1:18 1:22 1:10 1:25 - -can dat/all - -! Close it and open again. -! Now it shows the variable we appended -use a.nc -sh dat - currently SET data sets: - 1> ./a.nc (default) - name title I J K L - TEMP TEMPERATURE 1:18 1:22 1:10 1:25 - TEMP_MM TEMP - TEMPAVE 1:18 1:22 1:10 1:25 - (T=14-AUG-1982 11:00:13-JAN-1983 13:00) - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err67_regridding_dyn -! err67_regridding_dyn.jnl -! 6/2011 -! See ticket 1862 -! Create three variables. Regrid one to the grid -! of the other two which share an X axis and -! have different Y axes; one coarser than the other. -! The regridding and modulo operatinons incorrectly -! re-use intermediate results. - -! Create test datasets to use -use coads_climatology -let filled = MISSING(sst[L=1], 0) -save/file=cc.nc/clobber filled[x=-179:179] - -! Define an x axis over a different x range from above, -! and two y axes, same y range but different resoloutions. - -define axis/x=0:356.25:3.75/units=deg lon -define axis/y=-90:90/npoints=72/units=deg lat1 -define axis/y=-90:90/npoints=92/units=deg lat2 - -save/clobber/file=c1.nc filled[gx=lon,gy=lat1] -can mem -save/clobber/file=c2.nc filled[gx=lon,gy=lat2] - -can dat/all; can mem; can var/all; - -! Now regrid the data coming in on x=-179:179 to the other grids -use c1 -use c2 -use cc - -set view upper -shade filled[d=3,gxy=filled[d=1]] -list/x=330/y=40:90 filled[d=3,gxy=filled[d=1]] - VARIABLE : MISSING(SST[L=1], 0) - regrid: FILLED[D=c1] - FILENAME : cc.nc - SUBSET : 21 points (LATITUDE) - LONGITUDE: 30W - TIME : 16-JAN 06:00 - 30W - 89 - 90N / 72: .... - 87.5N / 71: 0.00 - 84.9N / 70: 0.00 - 82.4N / 69: 0.00 - 79.9N / 68: 0.00 - 77.3N / 67: 0.00 - 74.8N / 66: 0.00 - 72.3N / 65: 0.00 - 69.7N / 64: 0.96 - 67.2N / 63: 3.25 - 64.6N / 62: 5.60 - 62.1N / 61: 6.40 - 59.6N / 60: 7.31 - 57N / 59: 7.79 - 54.5N / 58: 7.79 - 52N / 57: 9.27 - 49.4N / 56: 11.43 - 46.9N / 55: 12.80 - 44.4N / 54: 14.01 - 41.8N / 53: 15.02 - 39.3N / 52: 15.98 - -! The bug has data wrapped around incorrectly -set view lower -shade filled[d=3,gxy=filled[d=2]] -list/x=330/y=40:90 filled[d=3,gxy=filled[d=2]] - VARIABLE : MISSING(SST[L=1], 0) - regrid: FILLED[D=c2] - FILENAME : cc.nc - SUBSET : 26 points (LATITUDE) - LONGITUDE: 30W - TIME : 16-JAN 06:00 - 30W - 89 - 90N / 92: .... - 88N / 91: 0.00 - 86N / 90: 0.00 - 84.1N / 89: 0.00 - 82.1N / 88: 0.00 - 80.1N / 87: 0.00 - 78.1N / 86: 0.00 - 76.2N / 85: 0.00 - 74.2N / 84: 0.00 - 72.2N / 83: 0.00 - 70.2N / 82: 0.59 - 68.2N / 81: 2.23 - 66.3N / 80: 4.17 - 64.3N / 79: 5.74 - 62.3N / 78: 6.37 - 60.3N / 77: 6.93 - 58.4N / 76: 7.66 - 56.4N / 75: 7.76 - 54.4N / 74: 7.81 - 52.4N / 73: 8.75 - 50.4N / 72: 10.77 - 48.5N / 71: 11.99 - 46.5N / 70: 13.01 - 44.5N / 69: 13.95 - 42.5N / 68: 14.76 - 40.5N / 67: 15.50 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err67_reverse_bounds -! err67_reverse_bounds.jnl -! -! Bug in reversing the bounds when an axis is reversed -! previously this gave a warning: -! NOTE: Error in bounds "lev_bnds" or bounds do not enclose point - -use reverse_z_bnds.nc -list lev_var, zboxlo[gz=lev_var], zboxhi[gz=lev_var] - DATA SET: ./data/reverse_z_bnds.nc - Z: 0 to 1 - Column 1: LEV_VAR is a variable on the depth axis (none) - Column 2: ZBOXLO is ZBOXLO (axis LEV) - Column 3: ZBOXHI is ZBOXHI (axis LEV) - LEV_VAR ZBOXLO ZBOXHI -0.0045 / 1: 24.00 0.0000 0.009 -0.0216 / 2: 23.00 0.0089 0.034 -0.0542 / 3: 22.00 0.0343 0.074 -0.1001 / 4: 21.00 0.0741 0.126 -0.1574 / 5: 20.00 0.1262 0.189 -0.2239 / 6: 19.00 0.1886 0.259 -0.2977 / 7: 18.00 0.2593 0.336 -0.3765 / 8: 17.00 0.3361 0.417 -0.4565 / 9: 16.00 0.4170 0.496 -0.5318 / 10: 15.00 0.4961 0.568 -0.5998 / 11: 14.00 0.5676 0.632 -0.6608 / 12: 13.00 0.6320 0.690 -0.7152 / 13: 12.00 0.6896 0.741 -0.7635 / 14: 11.00 0.7408 0.786 -0.806 / 15: 10.00 0.7861 0.826 -0.8432 / 16: 9.00 0.8259 0.860 -0.8754 / 17: 8.00 0.8605 0.890 -0.9031 / 18: 7.00 0.8903 0.916 -0.9266 / 19: 6.00 0.9158 0.937 -0.9464 / 20: 5.00 0.9374 0.955 -0.9628 / 21: 4.00 0.9554 0.970 -0.9763 / 22: 3.00 0.9703 0.982 -0.9873 / 23: 2.00 0.9824 0.992 -0.9961 / 24: 1.00 0.9922 1.000 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err67_nrst_trans -! err67_nrst_trans.jnl -! -! See ticket 1875: for short axes the @NRST transform -! missed points - no valid data was returned from this LIST. - -define axis/x=333:335:1 xax -define axis/x=300:400:10 xlong -let x3 = x[gx=xax] -let var = x3[gx=xlong@nrst] -list var - VARIABLE : X3[GX=XLONG@NRST] - SUBSET : 11 points (X) - 300 / 1: .... - 310 / 2: .... - 320 / 3: .... - 330 / 4: 333.0 - 340 / 5: 335.0 - 350 / 6: .... - 360 / 7: .... - 370 / 8: .... - 380 / 9: .... - 390 / 10: .... - 400 / 11: .... - -! *********** v6.8 Additions *********** - -GO bn_reset bn68_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn68_bug_fixes -GO bn68_bug_fixes -! bn68_bug_fixes.jnl -! test various fixes that went into version 6.8 -! -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err672_stray_line -! err672_stray_line.jnl -! bug 1545, present in older versions of Ferret too. -! Lines ( as in go land ), that go near but outside the outer -! corners of the plot, either from the bottom to the left side -! of the plot, or from the top to the left, but not crossing -! any axis, may cause a stray line to be drawn outward from the -! corner. - -use coads_climatology -shade/noax/nolab/nokey sst[x=148.68:262.0,y=-29.83:45.35,L=1] - -! Line near but not crossing from top to left -plot/vs/over/nolab/line/sym {148.83, 148.33}, {45.5, 45.25} - -! Line near but not crossing from bottom to the left -plot/over/vs/nolab/line/sym {148.83, 148.17}, {-29.96, -29.68} - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err672_tax_functions_prec -! See ticket 1642: arg 1 of TAX_* functions -! is a single-precision variale representing double-precision coords. - - -set mode ignore - -define axis/t=30-jan-2010:31-dec-2010:86400/unit=seconds taxis -let var = t[gt=taxis] - -! Previously this was incorrect- varied in the seconds place -list/l=1:7 TAX_DATESTRING(t[gt=var],var,"seconds") - VARIABLE : TAX_DATESTRING(T[GT=VAR],VAR,"seconds") - SUBSET : 7 points (TIME) - 30-JAN-2010 00 / 1:"30-JAN-2010 00:00:00.0" - 31-JAN-2010 00 / 2:"31-JAN-2010 00:00:00.0" - 01-FEB-2010 00 / 3:"01-FEB-2010 00:00:00.0" - 02-FEB-2010 00 / 4:"02-FEB-2010 00:00:00.0" - 03-FEB-2010 00 / 5:"03-FEB-2010 00:00:00.0" - 04-FEB-2010 00 / 6:"04-FEB-2010 00:00:00.0" - 05-FEB-2010 00 / 7:"05-FEB-2010 00:00:00.0" - -! Note there is no complete fix. This axis needs more than single- -! precision representation at the far end. -list/t=1-dec-2010:5-dec-2010 TAX_DATESTRING(t[gt=var],var,"seconds") - VARIABLE : TAX_DATESTRING(T[GT=VAR],VAR,"seconds") - SUBSET : 5 points (TIME) - 01-DEC-2010 00 / 306:"01-DEC-2010 00:00:00.0" - 02-DEC-2010 00 / 307:"02-DEC-2010 00:00:00.0" - 03-DEC-2010 00 / 308:"03-DEC-2010 00:00:00.0" - 04-DEC-2010 00 / 309:"04-DEC-2010 00:00:00.0" - 05-DEC-2010 00 / 310:"05-DEC-2010 00:00:00.0" - -! Likewise all these were off by a bit (except month and year) -list/l=1:7 TAX_DAY(t[gt=var], var) - VARIABLE : TAX_DAY(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 30-JAN-2010 00 / 1: 30.00 - 31-JAN-2010 00 / 2: 31.00 - 01-FEB-2010 00 / 3: 1.00 - 02-FEB-2010 00 / 4: 2.00 - 03-FEB-2010 00 / 5: 3.00 - 04-FEB-2010 00 / 6: 4.00 - 05-FEB-2010 00 / 7: 5.00 -list/l=1:7 TAX_DAYFRAC(t[gt=var], var) - VARIABLE : TAX_DAYFRAC(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 30-JAN-2010 00 / 1: 0.0000 - 31-JAN-2010 00 / 2: 0.0000 - 01-FEB-2010 00 / 3: 0.0000 - 02-FEB-2010 00 / 4: 0.0000 - 03-FEB-2010 00 / 5: 0.0000 - 04-FEB-2010 00 / 6: 0.0000 - 05-FEB-2010 00 / 7: 0.0000 -list/l=1:7 TAX_jday1900(t[gt=var], var) - VARIABLE : TAX_JDAY1900(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 30-JAN-2010 00 / 1: 40206. - 31-JAN-2010 00 / 2: 40207. - 01-FEB-2010 00 / 3: 40208. - 02-FEB-2010 00 / 4: 40209. - 03-FEB-2010 00 / 5: 40210. - 04-FEB-2010 00 / 6: 40211. - 05-FEB-2010 00 / 7: 40212. -list/l=1:7 TAX_jday(t[gt=var], var) - VARIABLE : TAX_JDAY(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 30-JAN-2010 00 / 1: 30.00 - 31-JAN-2010 00 / 2: 31.00 - 01-FEB-2010 00 / 3: 32.00 - 02-FEB-2010 00 / 4: 33.00 - 03-FEB-2010 00 / 5: 34.00 - 04-FEB-2010 00 / 6: 35.00 - 05-FEB-2010 00 / 7: 36.00 -list/l=1:7 TAX_month(t[gt=var], var) - VARIABLE : TAX_MONTH(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 30-JAN-2010 00 / 1: 1.000 - 31-JAN-2010 00 / 2: 1.000 - 01-FEB-2010 00 / 3: 2.000 - 02-FEB-2010 00 / 4: 2.000 - 03-FEB-2010 00 / 5: 2.000 - 04-FEB-2010 00 / 6: 2.000 - 05-FEB-2010 00 / 7: 2.000 -list/l=1:7 TAX_year(t[gt=var], var) - VARIABLE : TAX_YEAR(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 30-JAN-2010 00 / 1: 2010. - 31-JAN-2010 00 / 2: 2010. - 01-FEB-2010 00 / 3: 2010. - 02-FEB-2010 00 / 4: 2010. - 03-FEB-2010 00 / 5: 2010. - 04-FEB-2010 00 / 6: 2010. - 05-FEB-2010 00 / 7: 2010. -list/l=1:7 TAX_yearfrac(t[gt=var], var) - VARIABLE : TAX_YEARFRAC(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 30-JAN-2010 00 / 1: 0.08219 - 31-JAN-2010 00 / 2: 0.08493 - 01-FEB-2010 00 / 3: 0.08767 - 02-FEB-2010 00 / 4: 0.09041 - 03-FEB-2010 00 / 5: 0.09315 - 04-FEB-2010 00 / 6: 0.09589 - 05-FEB-2010 00 / 7: 0.09863 - -! This axis even worse, all results the same -! All of these will bail out with repeated ARG1 values -define axis/t=1-jan-2010:2-jan-2010:5/unit=seconds taxis -let var = t[gt=taxis] -list/l=1:7 TAX_DATESTRING(t[gt=var,L=1:50],var[L=1:50],"seconds") - VARIABLE : TAX_DATESTRING(T[GT=VAR,L=1:50],VAR[L=1:50],"seconds") - SUBSET : 7 points (TIME) - 01-JAN-2010 00:00:00 / 1:"01-JAN-2010 00:00:00.0" - 01-JAN-2010 00:00:05 / 2:"01-JAN-2010 00:00:05.0" - 01-JAN-2010 00:00:10 / 3:"01-JAN-2010 00:00:10.0" - 01-JAN-2010 00:00:15 / 4:"01-JAN-2010 00:00:15.0" - 01-JAN-2010 00:00:20 / 5:"01-JAN-2010 00:00:20.0" - 01-JAN-2010 00:00:25 / 6:"01-JAN-2010 00:00:25.0" - 01-JAN-2010 00:00:30 / 7:"01-JAN-2010 00:00:30.0" - -list/l=1:7 TAX_DAY(t[gt=var], var) - VARIABLE : TAX_DAY(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 01-JAN-2010 00:00:00 / 1: 1.000 - 01-JAN-2010 00:00:05 / 2: 1.000 - 01-JAN-2010 00:00:10 / 3: 1.000 - 01-JAN-2010 00:00:15 / 4: 1.000 - 01-JAN-2010 00:00:20 / 5: 1.000 - 01-JAN-2010 00:00:25 / 6: 1.000 - 01-JAN-2010 00:00:30 / 7: 1.000 -list/l=1:7 TAX_DAYFRAC(t[gt=var], var) - VARIABLE : TAX_DAYFRAC(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 01-JAN-2010 00:00:00 / 1: 0.000E+00 - 01-JAN-2010 00:00:05 / 2: 5.787E-05 - 01-JAN-2010 00:00:10 / 3: 1.157E-04 - 01-JAN-2010 00:00:15 / 4: 1.736E-04 - 01-JAN-2010 00:00:20 / 5: 2.315E-04 - 01-JAN-2010 00:00:25 / 6: 2.894E-04 - 01-JAN-2010 00:00:30 / 7: 3.472E-04 -list/l=1:7 TAX_jday1900(t[gt=var], var) - VARIABLE : TAX_JDAY1900(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 01-JAN-2010 00:00:00 / 1: 40177. - 01-JAN-2010 00:00:05 / 2: 40177. - 01-JAN-2010 00:00:10 / 3: 40177. - 01-JAN-2010 00:00:15 / 4: 40177. - 01-JAN-2010 00:00:20 / 5: 40177. - 01-JAN-2010 00:00:25 / 6: 40177. - 01-JAN-2010 00:00:30 / 7: 40177. -list/l=1:7 TAX_jday(t[gt=var], var) - VARIABLE : TAX_JDAY(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 01-JAN-2010 00:00:00 / 1: 1.000 - 01-JAN-2010 00:00:05 / 2: 1.000 - 01-JAN-2010 00:00:10 / 3: 1.000 - 01-JAN-2010 00:00:15 / 4: 1.000 - 01-JAN-2010 00:00:20 / 5: 1.000 - 01-JAN-2010 00:00:25 / 6: 1.000 - 01-JAN-2010 00:00:30 / 7: 1.000 -list/l=1:7 TAX_month(t[gt=var], var) - VARIABLE : TAX_MONTH(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 01-JAN-2010 00:00:00 / 1: 1.000 - 01-JAN-2010 00:00:05 / 2: 1.000 - 01-JAN-2010 00:00:10 / 3: 1.000 - 01-JAN-2010 00:00:15 / 4: 1.000 - 01-JAN-2010 00:00:20 / 5: 1.000 - 01-JAN-2010 00:00:25 / 6: 1.000 - 01-JAN-2010 00:00:30 / 7: 1.000 -list/l=1:7 TAX_year(t[gt=var], var) - VARIABLE : TAX_YEAR(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 01-JAN-2010 00:00:00 / 1: 2010. - 01-JAN-2010 00:00:05 / 2: 2010. - 01-JAN-2010 00:00:10 / 3: 2010. - 01-JAN-2010 00:00:15 / 4: 2010. - 01-JAN-2010 00:00:20 / 5: 2010. - 01-JAN-2010 00:00:25 / 6: 2010. - 01-JAN-2010 00:00:30 / 7: 2010. -list/l=1:7 TAX_yearfrac(t[gt=var], var) - VARIABLE : TAX_YEARFRAC(T[GT=VAR], VAR) - SUBSET : 7 points (TIME) - 01-JAN-2010 00:00:00 / 1: 0.002740 - 01-JAN-2010 00:00:05 / 2: 0.002740 - 01-JAN-2010 00:00:10 / 3: 0.002740 - 01-JAN-2010 00:00:15 / 4: 0.002740 - 01-JAN-2010 00:00:20 / 5: 0.002740 - 01-JAN-2010 00:00:25 / 6: 0.002741 - 01-JAN-2010 00:00:30 / 7: 0.002741 - -! This example from Patrick B. Output of TAX_dayfrac repeats. -! We need to just return an error mesage. Cant represent 2.5 years -! of seconds as a single-precision variable. (Can't represent even a month...) - -def axis/t="1-jan-2008":"31-dec-2010":1/units=seconds/t0="1-jan-2008" mytaxis -let tt = t[gt=mytaxis] - -let a = TAX_year(tt[t="02-JUN-2010:13:34:40":"02-JUN-2010:13:34:50"], tt[L=76340000:76350000]) -let b = TAX_jday(tt[t="02-JUN-2010:13:34:40":"02-JUN-2010:13:34:50"], tt[L=76340000:76350000]) -let c = TAX_dayfrac(tt[t="02-JUN-2010:13:34:40":"02-JUN-2010:13:34:50"], tt[L=76340000:76350000]) - -list/prec=7 a - VARIABLE : TAX_YEAR(TT[T="02-JUN-2010:13:34:40":"02-JUN-2010:13:34:50"], TT[L=76340000:76350000]) - SUBSET : 11 points (TIME) - 02-JUN-2010 13:34:40 / 76340081: 2010.000 - 02-JUN-2010 13:34:41 / 76340082: 2010.000 - 02-JUN-2010 13:34:42 / 76340083: 2010.000 - 02-JUN-2010 13:34:43 / 76340084: 2010.000 - 02-JUN-2010 13:34:44 / 76340085: 2010.000 - 02-JUN-2010 13:34:45 / 76340086: 2010.000 - 02-JUN-2010 13:34:46 / 76340087: 2010.000 - 02-JUN-2010 13:34:47 / 76340088: 2010.000 - 02-JUN-2010 13:34:48 / 76340089: 2010.000 - 02-JUN-2010 13:34:49 / 76340090: 2010.000 - 02-JUN-2010 13:34:50 / 76340091: 2010.000 -list/prec=7 b - VARIABLE : TAX_JDAY(TT[T="02-JUN-2010:13:34:40":"02-JUN-2010:13:34:50"], TT[L=76340000:76350000]) - SUBSET : 11 points (TIME) - 02-JUN-2010 13:34:40 / 76340081: 153.0000 - 02-JUN-2010 13:34:41 / 76340082: 153.0000 - 02-JUN-2010 13:34:42 / 76340083: 153.0000 - 02-JUN-2010 13:34:43 / 76340084: 153.0000 - 02-JUN-2010 13:34:44 / 76340085: 153.0000 - 02-JUN-2010 13:34:45 / 76340086: 153.0000 - 02-JUN-2010 13:34:46 / 76340087: 153.0000 - 02-JUN-2010 13:34:47 / 76340088: 153.0000 - 02-JUN-2010 13:34:48 / 76340089: 153.0000 - 02-JUN-2010 13:34:49 / 76340090: 153.0000 - 02-JUN-2010 13:34:50 / 76340091: 153.0000 -list/prec=7 c - VARIABLE : TAX_DAYFRAC(TT[T="02-JUN-2010:13:34:40":"02-JUN-2010:13:34:50"], TT[L=76340000:76350000]) - SUBSET : 11 points (TIME) - 02-JUN-2010 13:34:40 / 76340081: 0.5657407 - 02-JUN-2010 13:34:41 / 76340082: 0.5657523 - 02-JUN-2010 13:34:42 / 76340083: 0.5657639 - 02-JUN-2010 13:34:43 / 76340084: 0.5657755 - 02-JUN-2010 13:34:44 / 76340085: 0.5657870 - 02-JUN-2010 13:34:45 / 76340086: 0.5657986 - 02-JUN-2010 13:34:46 / 76340087: 0.5658102 - 02-JUN-2010 13:34:47 / 76340088: 0.5658218 - 02-JUN-2010 13:34:48 / 76340089: 0.5658333 - 02-JUN-2010 13:34:49 / 76340090: 0.5658449 - 02-JUN-2010 13:34:50 / 76340091: 0.5658565 - -! Can do this example -let a = TAX_year(tt[t="13-JAN-2008:13:34:40":"13-JAN-2008:13:34:50"], tt[L=1080000:1090000]) -let b = TAX_jday(tt[t="13-JAN-2008:13:34:40":"13-JAN-2008:13:34:50"], tt[L=1080000:1090000]) -let c = TAX_dayfrac(tt[t="13-JAN-2008:13:34:40":"13-JAN-2008:13:34:50"], tt[L=1080000:1090000]) - -list/prec=7 a - VARIABLE : TAX_YEAR(TT[T="13-JAN-2008:13:34:40":"13-JAN-2008:13:34:50"], TT[L=1080000:1090000]) - SUBSET : 11 points (TIME) - 13-JAN-2008 13:34:40 / 1085681: 2008.000 - 13-JAN-2008 13:34:41 / 1085682: 2008.000 - 13-JAN-2008 13:34:42 / 1085683: 2008.000 - 13-JAN-2008 13:34:43 / 1085684: 2008.000 - 13-JAN-2008 13:34:44 / 1085685: 2008.000 - 13-JAN-2008 13:34:45 / 1085686: 2008.000 - 13-JAN-2008 13:34:46 / 1085687: 2008.000 - 13-JAN-2008 13:34:47 / 1085688: 2008.000 - 13-JAN-2008 13:34:48 / 1085689: 2008.000 - 13-JAN-2008 13:34:49 / 1085690: 2008.000 - 13-JAN-2008 13:34:50 / 1085691: 2008.000 -list/prec=7 b - VARIABLE : TAX_JDAY(TT[T="13-JAN-2008:13:34:40":"13-JAN-2008:13:34:50"], TT[L=1080000:1090000]) - SUBSET : 11 points (TIME) - 13-JAN-2008 13:34:40 / 1085681: 13.00000 - 13-JAN-2008 13:34:41 / 1085682: 13.00000 - 13-JAN-2008 13:34:42 / 1085683: 13.00000 - 13-JAN-2008 13:34:43 / 1085684: 13.00000 - 13-JAN-2008 13:34:44 / 1085685: 13.00000 - 13-JAN-2008 13:34:45 / 1085686: 13.00000 - 13-JAN-2008 13:34:46 / 1085687: 13.00000 - 13-JAN-2008 13:34:47 / 1085688: 13.00000 - 13-JAN-2008 13:34:48 / 1085689: 13.00000 - 13-JAN-2008 13:34:49 / 1085690: 13.00000 - 13-JAN-2008 13:34:50 / 1085691: 13.00000 -list/prec=7 c - VARIABLE : TAX_DAYFRAC(TT[T="13-JAN-2008:13:34:40":"13-JAN-2008:13:34:50"], TT[L=1080000:1090000]) - SUBSET : 11 points (TIME) - 13-JAN-2008 13:34:40 / 1085681: 0.5657407 - 13-JAN-2008 13:34:41 / 1085682: 0.5657523 - 13-JAN-2008 13:34:42 / 1085683: 0.5657639 - 13-JAN-2008 13:34:43 / 1085684: 0.5657755 - 13-JAN-2008 13:34:44 / 1085685: 0.5657870 - 13-JAN-2008 13:34:45 / 1085686: 0.5657986 - 13-JAN-2008 13:34:46 / 1085687: 0.5658102 - 13-JAN-2008 13:34:47 / 1085688: 0.5658218 - 13-JAN-2008 13:34:48 / 1085689: 0.5658333 - 13-JAN-2008 13:34:49 / 1085690: 0.5658449 - 13-JAN-2008 13:34:50 / 1085691: 0.5658565 - -can mode ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err672_subscr_precision -! err672_subscr_precision.jnl -! See ticket 1888. - - -def axis/t="1-jan-2008":"31-dec-2010":1/units=sec/t0="1-jan-2008" mytaxis -let tt = t[gt=mytaxis] - -! This command should list 11 timesteps, previously listed only 8 (64-bit) -! or 9 (32-bit). -list/t="02-JUN-2010:13:34:40":"02-JUN-2010:13:34:50" tt - VARIABLE : T[GT=MYTAXIS] - SUBSET : 11 points (TIME) - 02-JUN-2010 13:34:40 / 76340081: 7.634E+07 - 02-JUN-2010 13:34:41 / 76340082: 7.634E+07 - 02-JUN-2010 13:34:42 / 76340083: 7.634E+07 - 02-JUN-2010 13:34:43 / 76340084: 7.634E+07 - 02-JUN-2010 13:34:44 / 76340085: 7.634E+07 - 02-JUN-2010 13:34:45 / 76340086: 7.634E+07 - 02-JUN-2010 13:34:46 / 76340087: 7.634E+07 - 02-JUN-2010 13:34:47 / 76340088: 7.634E+07 - 02-JUN-2010 13:34:48 / 76340089: 7.634E+07 - 02-JUN-2010 13:34:49 / 76340090: 7.634E+07 - 02-JUN-2010 13:34:50 / 76340091: 7.634E+07 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err672_vert_axislabel -! err672_vert_axislabel.jnl -! bug 1896 -! -! When the vertical axis needs a lot of characters -! in the numeric axis, the axis label runs off the edge -! of the plot - -! starting w/ v683, shrink yaxis lab size only if -! MODE shrink_ylab is set. (ticket 1958) - -SET MODE shrink_ylab - -define axis/x=1:100:1 xax -let/units="Observation value" var = 1.e37 * sin(randu(x[gx=xax])-1) -plot var - -use gt4d011 -plot/x=130w psi[t=@din] - -! If the margins are too small the method just makes a nominal setting. -go margins 0.2 0.6 0.2, 0.2 -plot/i=1:200 (sin(x/30)) - -go margins "reset" - -SET MODE/LAST shrink_ylab - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err672_axis_label_prec -! See ticket 1907 -! Axis label format didnt give enough precision for accurate labels -! for some cases where the range is between -1 and 1. - -! The upper tic was labeled 0.04 (or 0.05 depending on the OS and compiler) -! Should be 0.045 -let v = {0.02, 0.047,0.007, 0.02} -set view left -plot v - -! This was a workaround -set view right -plot/set v -ppl yfor (f5.3) -ppl plot - -can view - -! Here are more variables that caused similar -! inadequate precision in the format. - -let v = -1*{0.02, 0.042, 0.007, 0.02} -set view left -plot v - -! This one had labels -0.02, -0.02, -0.02, -0.01, -0.01, 0.00, 0.00, 0.1 -let v = {-0.023, -0.01, 0.007, 0.004} -set view right -plot v - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err672_long_show_axis -! See ticket 1905 - axes with very large number of points overflowed -! the format in SHOW AXIS commands - -define axis/t=1-jan-1900:1-jan-2000:1/units=minutes huge -sh axis huge - name axis # pts start end - HUGE TIME 52594561 r 01-JAN-1900 00:00 01-JAN-2000 00:00 -T0 = 01-JAN-1900 - Axis span (to cell edges) = 5.259456E+07 -can axis huge - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err672_axis_order -! err672_axis_order -! See comment 5 under ticket 1774. - - -use err67_axis_order.nc -sp cp data/err67_axis_order.nc err67_axis_order_copy.nc -use err67_axis_order_copy.nc -sh dat - currently SET data sets: - 1> ./data/err67_axis_order.nc - name title I J K L - UCOV UCOV 1:6 1:9 1:3 1:1 - CONTROLE CONTROLE 1:6 ... ... ... - NIVSIGS NIVSIGS ... ... 1:3 ... - NIVSIG NIVSIG 1:6 ... ... ... - AP AP 1:6 ... ... ... - - 2> ./err67_axis_order_copy.nc (default) - name title I J K L - UCOV UCOV 1:6 1:9 1:3 1:1 - CONTROLE CONTROLE 1:6 ... ... ... - NIVSIGS NIVSIGS ... ... 1:3 ... - NIVSIG NIVSIG 1:6 ... ... ... - AP AP 1:6 ... ... ... - - -! Listings should be identical with the bug they are reversed. -list/k=3/i=1 ucov[d=1] - VARIABLE : UCOV - FILENAME : err67_axis_order.nc - SUBSET : 9 points (Y) - X : 1.014 - Z : 3 - TIME : 08-JAN-1980 00:00 - 1.014 - 1 - -1.554 / 1: -642176. - -1.521 / 2: -621550. - -1.488 / 3: -700065. - -1.455 / 4: -640073. - 0.033 / 5: -375011. - 1.455 / 6: -153460. - 1.488 / 7: 10663. - 1.521 / 8: 60693. - 1.554 / 9: 0. -list/k=3/i=1 ucov[d=2] - VARIABLE : UCOV - FILENAME : err67_axis_order_copy.nc - SUBSET : 9 points (Y) - X : 1.014 - Z : 3 - TIME : 08-JAN-1980 00:00 - 1.014 - 1 - -1.554 / 1: -642176. - -1.521 / 2: -621550. - -1.488 / 3: -700065. - -1.455 / 4: -640073. - 0.033 / 5: -375011. - 1.455 / 6: -153460. - 1.488 / 7: 10663. - 1.521 / 8: 60693. - 1.554 / 9: 0. - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err672_runoff_page -! err672_runoff_page -! acm 5/3/2012 -! Test for the fix to ticket 1896 . Y-Axis labels may run off the -! edge of the page if the numbers have lots of digits. -! We change the ax-label size just for this axis issue a note. -! -! starting w/ v683, shrink yaxis lab size only if -! MODE shrink_ylab is set. (ticket 1958) - -SET MODE shrink_ylab - -define axis/x=1:100:1 xax -let/units="Observation value" var = 1.e37 * sin(randu(x[gx=xax])-1) -plot var - -SET MODE/LAST shrink_ylab - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err672_samplexy_modulo -! err672_samplexy_modulo.jnl -! See ticket 1950: samplexy doesnt correctly do modulo operations. - -use coads_climatology -! There is data at x=-20,y=0: -list sst[x=-20,y=0] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (TIME) - LONGITUDE: 21W(-21) - LATITUDE : 1S - 21W - -20 - 16-JAN / 1: 26.91 - 15-FEB / 2: 27.39 - 17-MAR / 3: 27.85 - -! But samplexy doesn't find it. -! Previously the last column was all-missing. -list samplexy(sst,{160,180,-20},{0,0,0}) - VARIABLE : SAMPLEXY(SST,{160,180,-20},{0,0,0}) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 3 points (X-TIME) - 1 2 3 - 1 2 3 - 16-JAN / 1: 29.09 28.36 26.90 - 15-FEB / 2: 29.09 28.38 27.42 - 17-MAR / 3: 29.01 28.00 27.87 - -! Check that we get data back at the edges of the longitude axis -list samplexy(sst,{21,379},{-41,-41}) - VARIABLE : SAMPLEXY(SST,{21,379},{-41,-41}) - FILENAME : coads_climatology.cdf - SUBSET : 2 by 3 points (X-TIME) - 1 2 - 1 2 - 16-JAN / 1: 16.45 18.15 - 15-FEB / 2: 17.85 17.90 - 17-MAR / 3: 17.19 17.11 - -! Check samplexyt -let t1 = `t[gt=sst,L=1]` - !-> DEFINE VARIABLE t1 = 366 -list samplexyt(sst,{160,180,-20},{0,0,0},{`t1`,`t1`,`t1`}) - !-> list samplexyt(sst,{160,180,-20},{0,0,0},{366,366,366}) - VARIABLE : SAMPLEXYT(SST,{160,180,-20},{0,0,0},{366,366,366}) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - 1 / 1: 29.09 - 2 / 2: 28.36 - 3 / 3: 26.90 - - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err672_varnames -! err672_varnames.jnl -! ticket 1938 -! -! We can define variable names that match operators, -! but not use them. -! yes? let ne = 5 -! yes? list ne -! previously the LET command was allowed but an error on the -! LIST, (unless we do list 'NE'). Just disallow those names -! to begin with, in xeq_define. Using these names now returns error -! AND OR GT GE LT LE EQ NE, also IF and ELSE. - -SET MODE IGNORE - -LET AND = 5 -LET OR = 5 -LET GT = 5 -LET GE = 5 -LET LT = 5 -LET LE = 5 -LET EQ = 5 -LET NE = 5 -LET IF = 5 -LET ELSE = 5 - -CAN MODE IGNORE - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err672_dset_cx -! err672_dset_cx.jnl -! Ticket 1951: The dataset specified in list x[gx=a[d=1,i=1:3]] is not applied. -! - -let a = x[gx=0:2:1]; save/clob/file=a1.nc a -sho grid/x a - GRID (G101) - name axis # pts start end subset - (AX126) X 3 r 0 2 3 pts - normal Y - normal Z - normal T - - I X XBOX XBOXLO - 1> 0 1 -0.5 - 2> 1 1 0.5 - 3> 2 1 1.5 - -let a = x[gx=1:3:1]; save/clob/file=a2.nc a -sho grid/x a - GRID (G101) - name axis # pts start end subset - (AX121) X 3 r 1 3 3 pts - normal Y - normal Z - normal T - - I X XBOX XBOXLO - 1> 1 1 0.5 - 2> 2 1 1.5 - 3> 3 1 2.5 - -can var/all; can dat/all - -! It's already strange that the first axis is named AX002 and the second AX001, -! but oh well. Let's use the first dataset, and list the axis values in two ways -! that give identical answers. No problem here. - -use a1 -list x[gx=a[d=1]] - VARIABLE : X - axis AX126 - SUBSET : 3 points (X) - 0 / 1: 0.000 - 1 / 2: 1.000 - 2 / 3: 2.000 -list x[gx=a[d=1,i=1:3]] - VARIABLE : X - axis AX126 - SUBSET : 3 points (X) - 0 / 1: 0.000 - 1 / 2: 1.000 - 2 / 3: 2.000 - -! Next we use the second dataset, and repeat the exact same commands as above -- -! note that we are again listing the variables from the first dataset, not the -! second one. Our results shouldn't have changed, since they explicitly refer to -! dataset 1 -- but one of them does change! - -use a2 - -list x[gx=a[d=1]] - VARIABLE : X - axis AX126 - SUBSET : 3 points (X) - 0 / 1: 0.000 - 1 / 2: 1.000 - 2 / 3: 2.000 - -! The bug was that this listed 1,2,3 rather than 0,1,2 -list x[gx=a[d=1,i=1:3]] - VARIABLE : X - axis AX126 - SUBSET : 3 points (X) - 0 / 1: 0.000 - 1 / 2: 1.000 - 2 / 3: 2.000 - -! The second LIST has somehow associated variable A from the first file -! with AX001 from the second file! -! -! The only thing that the second USE should have changed about Ferret's state, -! was that it brought a new dataset into memory and made it the default. Why should -! that have affected the second evaluation of the variable from dataset 1? - -! Why is the following different? -list x[gx=a[d=1],i=1:3] - VARIABLE : X - axis AX126 - SUBSET : 3 points (X) - 0 / 1: 0.000 - 1 / 2: 1.000 - 2 / 3: 2.000 - -GO bn_reset bn_ifv -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ifv -GO bn_ifv -! bn_ifv.jnl -! test IFV IfValid masking for a variety of combos - - - -! operators -CANCEL REGION -SET REGION/I=1:5/J=1:5 - -! IF, THEN, ELSE -LIST/ORDER=X IFV I GT 3 THEN I - VARIABLE : IFV I GT 3 THEN I - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - .... .... .... 4.000 5.000 -LIST/ORDER=X IFV I GT 3 THEN I ELSE 0 - VARIABLE : IFV I GT 3 THEN I ELSE 0 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.000 0.000 0.000 4.000 5.000 -! error: nested IFV tests -SET MODE IGNORE_ERRORS -LIST/ORDER=X IFV I GT 3 THEN ( IFV I LT 5 THEN I ELSE -9 ) ELSE .333 ! err -LET A = ifv I LT 5 THEN I ELSE -9 ! err -SET MODE/LAST IGNORE_ERRORS -LET A = ifv I LT 5 THEN I ELSE (-9) -LIST/ORDER=X IFV I GT 3 THEN ( A ) ELSE .333 - VARIABLE : IFV I GT 3 THEN ( A ) ELSE .333 - SUBSET : 5 points (X) - 1 2 3 4 5 - 1 2 3 4 5 - 0.333 0.333 0.333 4.000 -9.000 -CANCEL REGION - -LET r = {1,2,0,1,,3,4,5,0,,1} -LIST r, IF r THEN 1, IFV r THEN 1, IF r THEN 1 ELSE 2, IFV r THEN 1 ELSE 2 - X: 0.5 to 11.5 - Column 1: R is {1,2,0,1,,3,4,5,0,,1} - Column 2: EX#2 is IF R THEN 1 - Column 3: EX#3 is IFV R THEN 1 - Column 4: EX#4 is IF R THEN 1 ELSE 2 - Column 5: EX#5 is IFV R THEN 1 ELSE 2 - R EX#2 EX#3 EX#4 EX#5 -1 / 1: 1.000 1.000 1.000 1.000 1.000 -2 / 2: 2.000 1.000 1.000 1.000 1.000 -3 / 3: 0.000 .... 1.000 2.000 1.000 -4 / 4: 1.000 1.000 1.000 1.000 1.000 -5 / 5: .... .... .... 2.000 2.000 -6 / 6: 3.000 1.000 1.000 1.000 1.000 -7 / 7: 4.000 1.000 1.000 1.000 1.000 -8 / 8: 5.000 1.000 1.000 1.000 1.000 -9 / 9: 0.000 .... 1.000 2.000 1.000 -10 / 10: .... .... .... 2.000 2.000 -11 / 11: 1.000 1.000 1.000 1.000 1.000 - -! Mask with data that has integer values including zero, -USE coads_climatology -SET REG/L=1 -LET intvar = INT(sst/5) - -SET VIEW ul -SHADE IF intvar THEN 1 -STAT IF intvar THEN 1 - - IF INTVAR THEN 1 - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 8780 - Minimum value: 1 - Maximum value: 1 - Mean value: 1 (unweighted average) - Standard deviation: 0 - -SET VIEW ur -SHADE IFV intvar THEN 1 -STAT IFV intvar THEN 1 - - IFV INTVAR THEN 1 - LONGITUDE: 20E to 20E(380) - LATITUDE: 90S to 90N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 16200 (180*90*1*1*1*1) - # flagged as bad data: 6694 - Minimum value: 1 - Maximum value: 1 - Mean value: 1 (unweighted average) - Standard deviation: 0 - -! IFV on string arguments behaves just like IF. - -LET a = {"x","y"} -LET b = IF a EQ "x" THEN "z" ELSE a -LIST b - VARIABLE : IF A EQ "x" THEN "z" ELSE A - SUBSET : 2 points (X) - 1 / 1:"z" - 2 / 2:"y" -LET b = IFV a EQ "x" THEN "z" ELSE a -LIST b - VARIABLE : IFV A EQ "x" THEN "z" ELSE A - SUBSET : 2 points (X) - 1 / 1:"z" - 2 / 2:"y" - - -let strings = {"a","b",} -list IF strings EQ "a" THEN "" ELSE strings - VARIABLE : IF STRINGS EQ "a" THEN "" ELSE STRINGS - SUBSET : 3 points (X) - 1 / 1:"" - 2 / 2:"b" - 3 / 3:"" - -let strings = {"a","b",} -list IFV strings EQ "a" THEN "" ELSE strings - VARIABLE : IFV STRINGS EQ "a" THEN "" ELSE STRINGS - SUBSET : 3 points (X) - 1 / 1:"" - 2 / 2:"b" - 3 / 3:"" - -GO bn_reset bn_randu2_randn2 -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_randu2_randn2 -GO bn_randu2_randn2 -! Test randu2 and randn2 with newer random-number algorithm. -! 9/2011 acm -! Note that most of these results will differe from one -! run of the benchmarks to the next. - -! Changes to make it easier to see that theser results vary from -! one run to another because they are calls to random-number functions - -! 1/2014 *acm* To make it easier to clean up the logs for comparison, write -! each output line with the text randu2_randn2 at the start of each line. - -can mode ver - VARIABLE : RANDU2(XBIG,-1) - BAD FLAG : -1.E+34 - SUBSET : 5 points (X) - X : 0.5 to 5.5 -randu2_randn2 0.786 -randu2_randn2 0.756 -randu2_randn2 0.094 -randu2_randn2 0.915 -randu2_randn2 0.288 - VARIABLE : RANDU2(XBIG,-1) - BAD FLAG : -1.E+34 - SUBSET : 5 points (X) - X : 0.5 to 5.5 -randu2_randn2 0.506 -randu2_randn2 0.626 -randu2_randn2 0.511 -randu2_randn2 0.587 -randu2_randn2 0.052 - VARIABLE : RANDU2(XX,0) - BAD FLAG : -1.E+34 - SUBSET : 6 points (X) - X : 0.5 to 6.5 -randu2_randn2 0.520 -randu2_randn2 0.602 -randu2_randn2 0.579 -randu2_randn2 0.251 -randu2_randn2 0.672 -randu2_randn2 0.288 - VARIABLE : RANDU2(XX,0) - BAD FLAG : -1.E+34 - SUBSET : 6 points (X) - X : 0.5 to 6.5 -randu2_randn2 0.756 -randu2_randn2 0.641 -randu2_randn2 0.002 -randu2_randn2 0.901 -randu2_randn2 0.879 -randu2_randn2 0.690 - VARIABLE : RANDU2(XX,12436) - BAD FLAG : -1.E+34 - SUBSET : 6 points (X) - X : 0.5 to 6.5 -randu2_randn2 0.302 -randu2_randn2 0.380 -randu2_randn2 0.926 -randu2_randn2 0.672 -randu2_randn2 0.238 -randu2_randn2 0.638 - VARIABLE : RANDU2(XX,12436) - BAD FLAG : -1.E+34 - SUBSET : 6 points (X) - X : 0.5 to 6.5 -randu2_randn2 0.302 -randu2_randn2 0.380 -randu2_randn2 0.926 -randu2_randn2 0.672 -randu2_randn2 0.238 -randu2_randn2 0.638 - VARIABLE : RANDN2(XBIG,-1) - BAD FLAG : -1.E+34 - SUBSET : 5 points (X) - X : 0.5 to 5.5 -randu2_randn2 -0.757 -randu2_randn2 1.187 -randu2_randn2 -0.385 -randu2_randn2 0.851 -randu2_randn2 -0.082 - VARIABLE : RANDN2(XBIG,-1) - BAD FLAG : -1.E+34 - SUBSET : 5 points (X) - X : 0.5 to 5.5 -randu2_randn2 -0.527 -randu2_randn2 -0.845 -randu2_randn2 -0.629 -randu2_randn2 0.680 -randu2_randn2 -0.717 - VARIABLE : RANDN2(XX,0) - BAD FLAG : -1.E+34 - SUBSET : 6 points (X) - X : 0.5 to 6.5 -randu2_randn2 0.454 -randu2_randn2 -1.076 -randu2_randn2 0.484 -randu2_randn2 -1.091 -randu2_randn2 0.403 -randu2_randn2 -1.954 - VARIABLE : RANDN2(XX,0) - BAD FLAG : -1.E+34 - SUBSET : 6 points (X) - X : 0.5 to 6.5 -randu2_randn2 -0.074 -randu2_randn2 0.001 -randu2_randn2 -0.112 -randu2_randn2 0.188 -randu2_randn2 0.678 -randu2_randn2 1.710 - VARIABLE : RANDN2(XX,12436) - BAD FLAG : -1.E+34 - SUBSET : 6 points (X) - X : 0.5 to 6.5 -randu2_randn2 -0.906 -randu2_randn2 -1.503 -randu2_randn2 0.217 -randu2_randn2 0.537 -randu2_randn2 0.674 -randu2_randn2 -1.279 - VARIABLE : RANDN2(XX,12436) - BAD FLAG : -1.E+34 - SUBSET : 6 points (X) - X : 0.5 to 6.5 -randu2_randn2 -0.906 -randu2_randn2 -1.503 -randu2_randn2 0.217 -randu2_randn2 0.537 -randu2_randn2 0.674 -randu2_randn2 -1.279 - Z: 1 to 140 - Column 1: VAR2 is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) - Column 2: VAR2[Z=@MED:3] is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) (median smoothed by 3 pts on Z) - Column 3: VAR2[Z=@MED:9] is COS(Z[GZ=ZAX]/30) + RANDU2(1+K[GZ=ZAX],-1) (median smoothed by 9 pts on Z) -randu2_randn2 1.771 1.771 0.620 -randu2_randn2 1.032 1.032 0.620 -randu2_randn2 0.620 0.620 -0.189 -randu2_randn2 -0.335 -0.335 0.287 -randu2_randn2 -0.515 -0.515 0.287 -randu2_randn2 -0.685 -0.515 0.287 -randu2_randn2 -0.189 -0.189 0.287 -randu2_randn2 0.287 0.287 0.287 - -GO bn_reset bn_axis_cf -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_cf -GO bn_axis_cf -! Ticket 1792: Write axes with CF-compliant units -! and with standard name attributes for geophysical attrs. - - -define axis/x=-10:10:2/units="deg" xax -let xx = x[gx=xax] -save/clobber/file=a.nc xx - -define axis/y=1:15:3/units="degrees" yax -let yy = y[gy=yax] -save/append/file=a.nc yy - -define axis/t="1-jan-2001":"5-jan-2001":1/units="DAYS"/t0="1-jan-2000" taxis -let tt = t[gt=taxis] -save/append/file=a.nc tt - -define axis/z/depth/units="meters" zaxdn = {0,10,40,100} -let zdn = z[gz=zaxdn] -save/append/file=a.nc zdn - -define axis/z/units="meters" zaxup = {0,10,40,100,200} -let zup = z[gz=zaxup] -save/append/file=a.nc zup - -sp echo "bn_axis_cf.jnl, degrees_east, degrees_north, std names on axes:" >> all_ncdump.out -sp ncdump -h a.nc >> all_ncdump.out - -! If the axis is defined in a file or the command line as -! having units of "degrees" in any of its forms, write units -! as the cf-compliant "degrees_east" or "degrees_north" -! Previously these would have been saved as "DEGREES" and "DEG" - -use degrees -sh att/all (`var,return=xaxis`) - !-> sh att/all (XAXIS) - attributes for dataset: ./data/degrees.nc - (XAXIS).units = degrees_east - (XAXIS).point_spacing = even - (XAXIS).axis = X - (XAXIS).modulo = 360 - (XAXIS).orig_file_axname = XAXIS -save/clobber/file=a.nc var - -define axis/units="DEG"/y=-90:90:15 yfifteen -save/append/file=a.nc y[gy=yfifteen] - -sp echo "bn_axis_cf.jnl, Convert forms of DEG, degrees to degrees_east:" >> all_ncdump.out -sp ncdump -h a.nc >> all_ncdump.out - -! This dataset has time units of "DAYS since ..." -! On output, downcase the units string. - -use bn_strides -sh att/all (TTIME) - attributes for dataset: ./data/bn_strides.cdf - (TTIME).units = DAYS since 1901-01-15 00:00:00 - (TTIME).time_origin = 15-JAN-1901 - (TTIME).point_spacing = even - (TTIME).orig_file_axname = TTIME -save/clobber/file=a.nc xytvar - -sp echo "bn_axis_cf.jnl, Downcase units, e.g. in time axis DAYS since" >> all_ncdump.out -sp ncdump -h a.nc >> all_ncdump.out - - - -GO bn_reset bn_repeated_coords -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_repeated_coords -GO bn_repeated_coords -! Test the use of micro-adjusting on NetCDF read -! when coordinates are repeated. -! See ticket 1910 - -! Axis has repeated coordinate values. - -use repeat_t_coord.nc -show grid a - GRID GKT1 - name axis # pts start end subset - normal X - normal Y - normal Z - TMIN TIME 71 i 01-JAN-2001 00:00 01-JAN-2001 01:10 full -show axis tmin - name axis # pts start end - TMIN TIME 71 i 01-JAN-2001 00:00 01-JAN-2001 01:10 -T0 = 15-JAN-1901 00:00:00 - Axis span (to cell edges) = 71 -list a[L=1:71:10] - VARIABLE : SIN(L[GT=TMIN]/30) - regrid: on T - FILENAME : repeat_t_coord.nc - SUBSET : 8 points (TIME) - 01-JAN-2001 00:00:00 / 1: 0.0333 - 01-JAN-2001 00:10:00 / 2: 0.3585 - 01-JAN-2001 00:20:00 / 3: 0.6442 - 01-JAN-2001 00:30:00 / 4: 0.8590 - 01-JAN-2001 00:40:00 / 5: 0.9792 - 01-JAN-2001 00:50:00 / 6: 0.9917 - 01-JAN-2001 01:00:00 / 7: 0.8949 - 01-JAN-2001 01:10:00 / 8: 0.6997 - -! Previous behavior is retained with qualifier /STRICT -! The listing of variable aa here is identical to what is just above. -can dat/all - -use/strict repeat_t_coord.nc -show grid a - GRID GKT1 - name axis # pts start end subset - normal X - normal Y - normal Z - TMIN T 71 r 1 71 full -show axis tmin - name axis # pts start end - TMIN T 71 r 1 71 -T0 = %% - Axis span (to cell edges) = 71 - -define axis/t/t0=15-jan-1901/units=minute tnew = tmin -let aa = RESHAPE(a, t[gt=tnew]) -list aa[L=1:71:10] - VARIABLE : RESHAPE(A, T[GT=TNEW]) - regrid: on T - FILENAME : repeat_t_coord.nc - SUBSET : 8 points (TIME) - 01-JAN-2001 00:00:00 / 1: 0.0333 - 01-JAN-2001 00:10:00 / 2: 0.3585 - 01-JAN-2001 00:20:00 / 3: 0.6442 - 01-JAN-2001 00:30:00 / 4: 0.8590 - 01-JAN-2001 00:40:00 / 5: 0.9792 - 01-JAN-2001 00:50:00 / 6: 0.9917 - 01-JAN-2001 01:00:00 / 7: 0.8949 - 01-JAN-2001 01:10:00 / 8: 0.6997 - - -GO bn_reset bn_xml_header -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_xml_header -GO bn_xml_header -! bn_xml_header.jnl -! run the exact script that LAS uses to make XML header files - -go xml_header_script.jnl xml_use_coads.jnl xml_out.xml -!header.jnl -! argument 1 is a script that opens the dataset -! argument 2 is the name of the xml file to write -! Requires Ferret v6.5 or higher - -! This is the header.jnl script from LAS; comment out can mode verify -! Ferret v685, show/data/var/xml includes the output of show axis, so remove that. - -! cancel mode verify -IF `($ferret_version) LT 6.5` THEN - !-> IF 0 THEN -ENDIF - -go "$1" - !-> go "xml_use_coads.jnl" -use coads_climatology - -DEFINE SYMBOL output_xml_file = $2 - !-> DEFINE SYMBOL output_xml_file = xml_out.xml - -say/quiet/outfile="($output_xml_file)"/clobber - !-> MESSAGE/CONTINUE/quiet/outfile="xml_out.xml"/clobber -say/quiet/outfile="($output_xml_file)"/append - !-> MESSAGE/CONTINUE/quiet/outfile="xml_out.xml"/append - -show data/var/xml/append/outfile="($output_xml_file)" 1 - !-> show data/var/xml/append/outfile="xml_out.xml" 1 -say/quiet/append/outfile="($output_xml_file)" - !-> MESSAGE/CONTINUE/quiet/append/outfile="xml_out.xml" -sp cat xml_out.xml - - - - - - - - - - - - - - -1.E+34 - - - -1.E+34 - - - - - - - - - -COADSX -COADSY -TIME25 - - - - - - - - - - - - - - - 180 - - - 21 - - - 379 - - - - - - - - - - - - - - - - - - - - - - - 90 - - - -89 - - - 89 - - - - - - no - - - - - - - - - - - - - - - - - 3 - - - 0000-01-16 06:00:00 - - - 0000-03-17 02:58:12 - - - - - - - - - - - - - - - 8765.82 - - - - - -! Here's one where the dataset has a string variable - -can dat/all - -go xml_header_script.jnl xml_use_numstring.jnl xml_out_string.xml -!header.jnl -! argument 1 is a script that opens the dataset -! argument 2 is the name of the xml file to write -! Requires Ferret v6.5 or higher - -! This is the header.jnl script from LAS; comment out can mode verify -! Ferret v685, show/data/var/xml includes the output of show axis, so remove that. - -! cancel mode verify -IF `($ferret_version) LT 6.5` THEN - !-> IF 0 THEN -ENDIF - -go "$1" - !-> go "xml_use_numstring.jnl" -use numstring - -DEFINE SYMBOL output_xml_file = $2 - !-> DEFINE SYMBOL output_xml_file = xml_out_string.xml - -say/quiet/outfile="($output_xml_file)"/clobber - !-> MESSAGE/CONTINUE/quiet/outfile="xml_out_string.xml"/clobber -say/quiet/outfile="($output_xml_file)"/append - !-> MESSAGE/CONTINUE/quiet/outfile="xml_out_string.xml"/append - -show data/var/xml/append/outfile="($output_xml_file)" 1 - !-> show data/var/xml/append/outfile="xml_out_string.xml" 1 -say/quiet/append/outfile="($output_xml_file)" - !-> MESSAGE/CONTINUE/quiet/append/outfile="xml_out_string.xml" - -! Find instances of dimension and list the next several lines -sp grep -A5 dimension xml_out_string.xml -STRING1_7 -XAX1_10 - - - - --- - - - - 7 - - - - - -GO bn_reset bn_eof_simple -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_eof_simple -GO bn_eof_simple -! bn_eof_simple -! Define a simple function with two known functions. -! decompose with EOFs. -! 7/2012 -! In version 6.8 (double precision), the old eof functions are not available -! Run the script calling eofsvd functions and exit, leaving old eof function calls. -! 11/2017 - still try to test old eof functions, if they are re-implemented - -! Define two locations. -def axis /X=1:2:1 xaxis -def axis /Y=1:1:1 yaxis - -! Thinking of the time axis as number of months. -def axis /T=0.0:59.75:0.25 taxis -def grid /X=xaxis /Y=yaxis /T=taxis xytgrid -set grid xytgrid - -! Make standing waves with a period of 12 months. -let cosT = cos(T * 3.141592653589793 / 6.0) -let sinT = sin(T * 3.141592653589793 / 6.0) - -! Put a standing wave at each location. -! The two waves are orthonormal and zero-mean over time. -let spacetime = if (i eq 1) then cosT else sinT + 1 -show grid spacetime - GRID XYTGRID - name axis # pts start end subset - XAXIS X 2 r 1 2 full - YAXIS Y 1 r 1 1 full - normal Z - TAXIS T 240 r 0 59.75 full - -show func eofsvd_stat -EOFSVD_STAT(A) - SVD EOF statistics from XYT field. j=1:#EOFs, j=2:%variation, j=3:eigenvalues - A: Variable in x,y,t; may be fcn of z,e,f -! Run each of the eof functions and show the results. -! Both are equally significant. Eigenvalues should be 0.5. -! Other EOF descriptions do not divide the covariance -! matrix by the number of time values, in which case the -! the eigenvalues will be much larger, but still equal -! to each other. -list eofsvd_stat(spacetime) - VARIABLE : EOFSVD_STAT(SPACETIME) - SUBSET : 2 by 3 points (X-Y) - 1 2 - 1 2 - 1 / 1: 2.00 2.00 - 2 / 2: 50.00 50.00 - 3 / 3: 0.50 0.50 - -show func eofsvd_space -EOFSVD_SPACE(A) - Return SVD EOF spatial fields from XYT field - A: Variable in x,y,t; may be fcn of z,e,f -! Ideally the vectors (0.0, sqrt(0.5)) and (sqrt(0.5), 0.0), -! but might be mixed by rotation. -! This is if the EOF functions are in units of the original data, -! thus the eigenvectors times the square-root of the eigenvalue. -! EOF vectors are always orthogonal to each other. -let eofs = eofsvd_space(spacetime[I=1:2]) -load eofs -let v1 = eofs[I=1] -show grid v1 - GRID (G087) - name axis # pts start end subset - XAXIS X 2 r 1 2 1 pt - YAXIS Y 1 r 1 1 full - normal Z - ABSTRACT T 99999999 r 1 1.E+08 (axis from grid-changing func) -let v2 = eofs[I=2] -show grid v2 - GRID (G087) - name axis # pts start end subset - XAXIS X 2 r 1 2 1 pt - YAXIS Y 1 r 1 1 full - normal Z - ABSTRACT T 99999999 r 1 1.E+08 (axis from grid-changing func) -list dot_t(v1, v1) - VARIABLE : DOT_T(V1, V1) - X : 1 - 0.5000 -list dot_t(v1, v2) - VARIABLE : DOT_T(V1, V2) - X : 1 - 0.0000 -list dot_t(v2, v1) - VARIABLE : DOT_T(V2, V1) - X : 2 - 0.0000 -list dot_t(v2, v2) - VARIABLE : DOT_T(V2, V2) - X : 2 - 0.5000 - -show func eofsvd_tfunc -EOFSVD_TFUNC(A) - Return SVD EOF time functions from XYT field. - A: Variable in x,y,t; may be fcn of z,e,f -! Ideally sqrt(2.0) * (cosT, sinT), but may be mixed by rotation. -! TAF vectors are always orthogonal to each other. -let tafs = eofsvd_tfunc(spacetime[I=1:2]) -load tafs -let v1 = tafs[I=1] -show grid v1 - GRID (G087) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 (axis from grid-changing func) - normal Y - normal Z - TAXIS T 240 r 0 59.75 full -let v2 = tafs[I=2] -show grid v2 - GRID (G087) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 (axis from grid-changing func) - normal Y - normal Z - TAXIS T 240 r 0 59.75 full -list dot_t(v1, v1) - VARIABLE : DOT_T(V1, V1) - X : 1 - 240.0 -list dot_t(v1, v2) - VARIABLE : DOT_T(V1, V2) - X : 1 - -3.775E-15 -list dot_t(v2, v1) - VARIABLE : DOT_T(V2, V1) - X : 2 - -3.775E-15 -list dot_t(v2, v2) - VARIABLE : DOT_T(V2, V2) - X : 2 - 240.0 - -! The sum over all significant EOFs of the outer product of -! EOF(i) and TAF(i) should return the zero-time-meaned data -! (original data with the time-series mean subtracted to give -! a zero mean for each time series). -! In this case, EOF(1) o TAF(1) + EOF(2) o TAF(2) = (cosT, sinT) - -! Missing-data cases -! -! If there are locations where the timeseries is all missing or incomplete -! (as in a dataset where missing data represents land), return a result -! based only locations with complete timeseries. - -def axis /X=1:3:1 xaxis -let spacetime = if (i eq 1) then cosT else sinT + 1 -let space12 = if i ne 3 then spacetime - -list eofsvd_stat(space12) - VARIABLE : EOFSVD_STAT(SPACE12) - SUBSET : 3 by 3 points (X-Y) - 1 2 3 - 1 2 3 - 1 / 1: 2.00 2.00 2.00 - 2 / 2: 50.00 50.00 0.00 - 3 / 3: 0.50 0.50 0.00 - -let eofs = eofsvd_space(space12[I=1:3]) -load eofs -let v1 = eofs[I=1] -show grid v1 - GRID (G087) - name axis # pts start end subset - XAXIS X 3 r 1 3 1 pt - YAXIS Y 1 r 1 1 full - normal Z - ABSTRACT T 99999999 r 1 1.E+08 (axis from grid-changing func) -let v2 = eofs[I=2] -show grid v2 - GRID (G087) - name axis # pts start end subset - XAXIS X 3 r 1 3 1 pt - YAXIS Y 1 r 1 1 full - normal Z - ABSTRACT T 99999999 r 1 1.E+08 (axis from grid-changing func) -list dot_t(v1, v1) - VARIABLE : DOT_T(V1, V1) - X : 1 - 0.5000 -list dot_t(v1, v2) - VARIABLE : DOT_T(V1, V2) - X : 1 - 0.0000 -list dot_t(v2, v1) - VARIABLE : DOT_T(V2, V1) - X : 2 - 0.0000 -list dot_t(v2, v2) - VARIABLE : DOT_T(V2, V2) - X : 2 - 0.5000 - -let tafs = eofsvd_tfunc(space12[I=1:3]) -load tafs -let v1 = tafs[I=1] -show grid v1 - GRID (G087) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 (axis from grid-changing func) - normal Y - normal Z - TAXIS T 240 r 0 59.75 full -let v2 = tafs[I=2] -show grid v2 - GRID (G087) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 (axis from grid-changing func) - normal Y - normal Z - TAXIS T 240 r 0 59.75 full -list dot_t(v1, v1) - VARIABLE : DOT_T(V1, V1) - X : 1 - 240.0 -list dot_t(v1, v2) - VARIABLE : DOT_T(V1, V2) - X : 1 - -3.775E-15 -list dot_t(v2, v1) - VARIABLE : DOT_T(V2, V1) - X : 2 - -3.775E-15 -list dot_t(v2, v2) - VARIABLE : DOT_T(V2, V2) - X : 2 - 240.0 - -! If there are no complete time series, the functions should bail with an error - -let spacegap = if L ne 2 then spacetime - -set mode ignore - -list eofsvd_stat(spacegap) -list eofsvd_space(spacegap) -list eofsvd_tfunc(spacegap) - -set mode/last ignore - -! ----------------------------------------------- -! previous commands that called eof_space, eof_stat, eof_tfunc -! these functions all now bail out - do not work properly in double precision - -set mode ignore - -def axis /X=1:2:1 xaxis -let spacetime = if (i eq 1) then cosT else sinT + 1 - -show func eof_stat -EOF_STAT(A,frac_timeser) - Function NOT AVAILABLE in this Ferret version - A: Variable in x,y,t; may be fcn of z,e,f - frac_timeser: Use only those time series with this fraction valid data. -! Run each of the eof functions and show the results. -! Both are equally significant. Eigenvalues should be 0.5. -! Other EOF descriptions do not divide the covariance -! matrix by the number of time values, in which case the -! the eigenvalues will be much larger, but still equal -! to each other. -list eof_stat(spacetime, 1.0) - -show func eof_space -EOF_SPACE(A,frac_timeser) - Function NOT AVAILABLE in this Ferret version - A: Variable in x,y,t; may be fcn of z,e,f - frac_timeser: Use only those time series with this fraction valid data -! Ideally the vectors (0.0, sqrt(0.5)) and (sqrt(0.5), 0.0), -! but might be mixed by rotation. -! This is if the EOF functions are in units of the original data, -! thus the eigenvectors times the square-root of the eigenvalue. -! EOF vectors are always orthogonal to each other. -let eofs = eof_space(spacetime[I=1:2], 1.0) -load eofs -let v1 = eofs[I=1] -show grid v1 - GRID (G087) - name axis # pts start end subset - XAXIS X 2 r 1 2 1 pt - YAXIS Y 1 r 1 1 full - normal Z - ABSTRACT T 99999999 r 1 1.E+08 (axis from grid-changing func) -let v2 = eofs[I=2] -show grid v2 - GRID (G087) - name axis # pts start end subset - XAXIS X 2 r 1 2 1 pt - YAXIS Y 1 r 1 1 full - normal Z - ABSTRACT T 99999999 r 1 1.E+08 (axis from grid-changing func) -list dot_t(v1, v1) -list dot_t(v1, v2) -list dot_t(v2, v1) -list dot_t(v2, v2) - -show func eof_tfunc -EOF_TFUNC(A,frac_timeser) - Function NOT AVAILABLE in this Ferret version - A: Variable in x,y,t; may be fcn of z,e,f - frac_timeser: Use only those time series with this fraction valid data -! Ideally sqrt(2.0) * (cosT, sinT), but may be mixed by rotation. -! TAF vectors are always orthogonal to each other. -let tafs = eof_tfunc(spacetime[I=1:2], 1.0) -load tafs -let v1 = tafs[I=1] -show grid v1 - GRID (G087) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 (axis from grid-changing func) - normal Y - normal Z - TAXIS T 240 r 0 59.75 full -let v2 = tafs[I=2] -show grid v2 - GRID (G087) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 (axis from grid-changing func) - normal Y - normal Z - TAXIS T 240 r 0 59.75 full -list dot_t(v1, v1) -list dot_t(v1, v2) -list dot_t(v2, v1) -list dot_t(v2, v2) - -set mode/last ignore - -! The sum over all significant EOFs of the outer product of -! EOF(i) and TAF(i) should return the zero-time-meaned data -! (original data with the time-series mean subtracted to give -! a zero mean for each time series). -! In this case, EOF(1) o TAF(1) + EOF(2) o TAF(2) = (cosT, sinT) - -! clean-up -set grid abstract -can var /all -can grid xytgrid - -GO bn_reset bn_eof_simple2 -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_eof_simple2 -GO bn_eof_simple2 -! bn_eof_simple2 -! Define a simple function with four known functions, two of which are degenerate. -! decompose with EOFs. -! 7/2012 -! In version 6.8 (double precision), the old eof functions are not available -! Run the script calling eofsvd functions and exit, leaving old eof function calls. -! 11/2017 - still try to test old eof functions, if they are re-implemented - -! Define four locations. -def axis /X=1:2:1 xaxis -def axis /Y=1:2:1 yaxis - -! Thinking of the time axis as number of months. -def axis /T=0.0:23.9:0.1 taxis -def grid /X=xaxis /Y=yaxis /T=taxis xytgrid -set grid xytgrid - -! Make standing waves with a period of 12 months. -let cosT = cos(T * 3.141592653589793 / 6.0) -let sinT = sin(T * 3.141592653589793 / 6.0) - -! Put a products of the standing waves at each location. -let spacetime12 = if (i eq 1) and (j eq 1) then cost * cost else cost * sint + 1 -let spacetime123 = if (i eq 2) and (j eq 1) then cost * sint + 2 else spacetime12 -let spacetime = if (i eq 2) and (j eq 2) then sint * sint + 3 else spacetime123 -show grid spacetime - GRID XYTGRID - name axis # pts start end subset - XAXIS X 2 r 1 2 full - YAXIS Y 2 r 1 2 full - normal Z - TAXIS T 240 r 0 23.9 full - -show func eofsvd_stat -EOFSVD_STAT(A) - SVD EOF statistics from XYT field. j=1:#EOFs, j=2:%variation, j=3:eigenvalues - A: Variable in x,y,t; may be fcn of z,e,f -! Two are of equal significance with eigenvalues of 0.25. -! Two are negligable (eigenvalues of zero or close to it). -list eofsvd_stat(spacetime) - VARIABLE : EOFSVD_STAT(SPACETIME) - SUBSET : 4 by 3 points (X-Y) - 1 2 3 4 - 1 2 3 4 - 1 / 1: 4.00 4.00 4.00 4.00 - 2 / 2: 50.00 50.00 0.00 0.00 - 3 / 3: 0.25 0.25 0.00 0.00 - -show func eofsvd_space -EOFSVD_SPACE(A) - Return SVD EOF spatial fields from XYT field - A: Variable in x,y,t; may be fcn of z,e,f -! Ideally: -! +- [ 0.35355, 0.0, -! 0.0, -0.35355 ] (norm^2 = 0.25) -! corresponding to 0.25 * sqrt(2.0) * (cosT^2 - sinT^2) -! = 0.25 * sqrt(2.0) * cos2T -! and -! +- [ 0.0, 0.35355, -! 0.35355, 0.0 ] (norm^2 = 0.25) -! corresponding to 0.25 * sqrt(2.0) * 2 * cosT * sinT -! = 0.25 * sqrt(2.0) * sin2T -! The norm^2 of an EOF should be the eigenvalue. -! The two EOFs should be orthogonal to each other. -! Rotation (mixing) of these two may occur. -let eofs = eofsvd_space(spacetime[I=1:2]) -load eofs -let v1 = eofs[I=1] -show grid v1 - GRID (G087) - name axis # pts start end subset - XAXIS X 2 r 1 2 1 pt - YAXIS Y 2 r 1 2 full - normal Z - ABSTRACT T 99999999 r 1 1.E+08 (axis from grid-changing func) -let v2 = eofs[I=2] -show grid v2 - GRID (G087) - name axis # pts start end subset - XAXIS X 2 r 1 2 1 pt - YAXIS Y 2 r 1 2 full - normal Z - ABSTRACT T 99999999 r 1 1.E+08 (axis from grid-changing func) -list dot_t(v1, v1) - VARIABLE : DOT_T(V1, V1) - SUBSET : 2 points (Y) - X : 1 - 1 - 1 - 1 / 1: 0.1250 - 2 / 2: 0.1250 -list dot_t(v1, v2) - VARIABLE : DOT_T(V1, V2) - SUBSET : 2 points (Y) - X : 1 - 1 - 1 - 1 / 1: -3.123E-17 - 2 / 2: 2.082E-17 -list dot_t(v2, v1) - VARIABLE : DOT_T(V2, V1) - SUBSET : 2 points (Y) - X : 2 - 2 - 2 - 1 / 1: -3.123E-17 - 2 / 2: 2.082E-17 -list dot_t(v2, v2) - VARIABLE : DOT_T(V2, V2) - SUBSET : 2 points (Y) - X : 2 - 2 - 2 - 1 / 1: 0.1250 - 2 / 2: 0.1250 - -show func eofsvd_tfunc -EOFSVD_TFUNC(A) - Return SVD EOF time functions from XYT field. - A: Variable in x,y,t; may be fcn of z,e,f -! Ideally: -! +- sqrt(2.0) * cos2T (norm^2 = 240) -! +- sqrt(2.0) * sin2T (norm^2 = 240) -! The norm^2 of a TAF should be the number of time values. -! The two TAFs should be orthogonal to each other. -! Rotation (mixing) of these two may occur. -let tafs = eofsvd_tfunc(spacetime[I=1:2]) -load tafs -let v1 = tafs[I=1] -show grid v1 - GRID (G087) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 (axis from grid-changing func) - normal Y - normal Z - TAXIS T 240 r 0 23.9 full -let v2 = tafs[I=2] -show grid v2 - GRID (G087) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 (axis from grid-changing func) - normal Y - normal Z - TAXIS T 240 r 0 23.9 full -list dot_t(v1, v1) - VARIABLE : DOT_T(V1, V1) - X : 1 - 240.0 -list dot_t(v1, v2) - VARIABLE : DOT_T(V1, V2) - X : 1 - -5.285E-14 -list dot_t(v2, v1) - VARIABLE : DOT_T(V2, V1) - X : 2 - -5.285E-14 -list dot_t(v2, v2) - VARIABLE : DOT_T(V2, V2) - X : 2 - 240.0 - -! Explanation: -! Time series means = (0.5, 0.0, 0.0, 0.5) + (0, 1, 2, 3) -! EOF1 * TAF1 = (0.5 * cos2T, 0.0, 0.0, -0.5 * cos2T) -! = (cosT^2 - 0.5, 0.0, 0.0, sinT^2 - 0.5) -! EOF2 * TAF2 = (0.0, 0.5 * sin2T, 0.5 * sin2T, 0.0) -! = (0.0, cosT * sinT, cosT * sinT, 0.0) -! Adding these three gives the original data - -! ----------------------------------------------- -! previous commands that called eof_space, eof_stat, eof_tfunc -! these functions all now bail out - do not work properly in double precision - -set mode ignore - -show func eof_stat -EOF_STAT(A,frac_timeser) - Function NOT AVAILABLE in this Ferret version - A: Variable in x,y,t; may be fcn of z,e,f - frac_timeser: Use only those time series with this fraction valid data. -! Two are of equal significance with eigenvalues of 0.25. -! Two are negligable (eigenvalues of zero or close to it). -list eof_stat(spacetime, 1.0) - -show func eof_space -EOF_SPACE(A,frac_timeser) - Function NOT AVAILABLE in this Ferret version - A: Variable in x,y,t; may be fcn of z,e,f - frac_timeser: Use only those time series with this fraction valid data -! Ideally: -! +- [ 0.35355, 0.0, -! 0.0, -0.35355 ] (norm^2 = 0.25) -! corresponding to 0.25 * sqrt(2.0) * (cosT^2 - sinT^2) -! = 0.25 * sqrt(2.0) * cos2T -! and -! +- [ 0.0, 0.35355, -! 0.35355, 0.0 ] (norm^2 = 0.25) -! corresponding to 0.25 * sqrt(2.0) * 2 * cosT * sinT -! = 0.25 * sqrt(2.0) * sin2T -! The norm^2 of an EOF should be the eigenvalue. -! The two EOFs should be orthogonal to each other. -! Rotation (mixing) of these two may occur. -let eofs = eof_space(spacetime[I=1:2], 1.0) -load eofs -let v1 = eofs[I=1] -show grid v1 - GRID (G087) - name axis # pts start end subset - XAXIS X 2 r 1 2 1 pt - YAXIS Y 2 r 1 2 full - normal Z - ABSTRACT T 99999999 r 1 1.E+08 (axis from grid-changing func) -let v2 = eofs[I=2] -show grid v2 - GRID (G087) - name axis # pts start end subset - XAXIS X 2 r 1 2 1 pt - YAXIS Y 2 r 1 2 full - normal Z - ABSTRACT T 99999999 r 1 1.E+08 (axis from grid-changing func) -list dot_t(v1, v1) -list dot_t(v1, v2) -list dot_t(v2, v1) -list dot_t(v2, v2) - -show func eof_tfunc -EOF_TFUNC(A,frac_timeser) - Function NOT AVAILABLE in this Ferret version - A: Variable in x,y,t; may be fcn of z,e,f - frac_timeser: Use only those time series with this fraction valid data -! Ideally: -! +- sqrt(2.0) * cos2T (norm^2 = 240) -! +- sqrt(2.0) * sin2T (norm^2 = 240) -! The norm^2 of a TAF should be the number of time values. -! The two TAFs should be orthogonal to each other. -! Rotation (mixing) of these two may occur. -let tafs = eof_tfunc(spacetime, 1.0) -load tafs -let v1 = tafs[I=1] -show grid v1 - GRID (G087) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 (axis from grid-changing func) - normal Y - normal Z - TAXIS T 240 r 0 23.9 full -let v2 = tafs[I=2] -show grid v2 - GRID (G087) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 (axis from grid-changing func) - normal Y - normal Z - TAXIS T 240 r 0 23.9 full -list dot_t(v1, v1) -list dot_t(v1, v2) -list dot_t(v2, v1) -list dot_t(v2, v2) - -! Explanation: -! Time series means = (0.5, 0.0, 0.0, 0.5) + (0, 1, 2, 3) -! EOF1 * TAF1 = (0.5 * cos2T, 0.0, 0.0, -0.5 * cos2T) -! = (cosT^2 - 0.5, 0.0, 0.0, sinT^2 - 0.5) - ! EOF2 * TAF2 = (0.0, 0.5 * sin2T, 0.5 * sin2T, 0.0) -! = (0.0, cosT * sinT, cosT * sinT, 0.0) -! Adding these three gives the original data - -set mode/last ignore - -! clean-up -set grid abstract -can var /all -can grid xytgrid - -! 6D tests for Ferret v6.8 - -GO bn_reset bn_interpolate_6d -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_interpolate_6d -GO bn_interpolate_6d -! bn_interpolate_6d.JNL -! benchmark interpolation along various axes -! including the E and F axis -! note with fix to ticket 2399 mode calendar applies to F axis - -SET LIST/PRECISION=6 -SET MODE LATITUDE:4 -set mode calendar:years - -LET v = x + 10*y + 100*_e + 1000*_f -SET REGION/X=1:3/Y=1:3/E=1:3/F=1:3 -DEF REG/X=1.5 xpt -DEF REG/Y=1.05 ypt -DEF REG/E=1.005 ept -DEF REG/F=1.0005 fpt - -! first without interpolation -CANCEL MODE INTERPOLATE -GO bn_interpolate_6d.sub -! bn_interpolate_6d.SUB -! interpolate in various geometries - -! this routine assumes that a 4-D region and an expression are already set - -! cubes of data -LIST v[@xpt] - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 by 3 points (Y-E-F) - X : 1 - 1 2 3 - 1 2 3 - ---- N:1 F: 1 - 1 / 1: 1111.00 1121.00 1131.00 - 2 / 2: 1211.00 1221.00 1231.00 - 3 / 3: 1311.00 1321.00 1331.00 - ---- N:2 F: 2 - 1 / 1: 2111.00 2121.00 2131.00 - 2 / 2: 2211.00 2221.00 2231.00 - 3 / 3: 2311.00 2321.00 2331.00 - ---- N:3 F: 3 - 1 / 1: 3111.00 3121.00 3131.00 - 2 / 2: 3211.00 3221.00 3231.00 - 3 / 3: 3311.00 3321.00 3331.00 -LIST v[@ypt] - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 by 3 points (X-E-F) - Y : 1 - 1 2 3 - 1 2 3 - ---- N:1 F: 1 - 1 / 1: 1111.00 1112.00 1113.00 - 2 / 2: 1211.00 1212.00 1213.00 - 3 / 3: 1311.00 1312.00 1313.00 - ---- N:2 F: 2 - 1 / 1: 2111.00 2112.00 2113.00 - 2 / 2: 2211.00 2212.00 2213.00 - 3 / 3: 2311.00 2312.00 2313.00 - ---- N:3 F: 3 - 1 / 1: 3111.00 3112.00 3113.00 - 2 / 2: 3211.00 3212.00 3213.00 - 3 / 3: 3311.00 3312.00 3313.00 -LIST v[@ept] - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 by 3 points (X-Y-F) - E : 1 - 1 2 3 - 1 2 3 - ---- N:1 F: 1 - 1 / 1: 1111.00 1112.00 1113.00 - 2 / 2: 1121.00 1122.00 1123.00 - 3 / 3: 1131.00 1132.00 1133.00 - ---- N:2 F: 2 - 1 / 1: 2111.00 2112.00 2113.00 - 2 / 2: 2121.00 2122.00 2123.00 - 3 / 3: 2131.00 2132.00 2133.00 - ---- N:3 F: 3 - 1 / 1: 3111.00 3112.00 3113.00 - 2 / 2: 3121.00 3122.00 3123.00 - 3 / 3: 3131.00 3132.00 3133.00 -LIST v[@fpt] - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 by 3 points (X-Y-E) - F : 1 - 1 2 3 - 1 2 3 - ---- M:1 E: 1 - 1 / 1: 1111.00 1112.00 1113.00 - 2 / 2: 1121.00 1122.00 1123.00 - 3 / 3: 1131.00 1132.00 1133.00 - ---- M:2 E: 2 - 1 / 1: 1211.00 1212.00 1213.00 - 2 / 2: 1221.00 1222.00 1223.00 - 3 / 3: 1231.00 1232.00 1233.00 - ---- M:3 E: 3 - 1 / 1: 1311.00 1312.00 1313.00 - 2 / 2: 1321.00 1322.00 1323.00 - 3 / 3: 1331.00 1332.00 1333.00 - -! planes of data -LIST v[@ept,@fpt] !XY - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 points (X-Y) - E : 1 - F : 1 - 1 2 3 - 1 2 3 - 1 / 1: 1111.00 1112.00 1113.00 - 2 / 2: 1121.00 1122.00 1123.00 - 3 / 3: 1131.00 1132.00 1133.00 -LIST v[@ypt,@fpt] !XE - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 points (X-E) - Y : 1 - F : 1 - 1 2 3 - 1 2 3 - 1 / 1: 1111.00 1112.00 1113.00 - 2 / 2: 1211.00 1212.00 1213.00 - 3 / 3: 1311.00 1312.00 1313.00 -LIST v[@ypt,@ept] !XF - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 points (X-F) - Y : 1 - E : 1 - 1 2 3 - 1 2 3 - 1 / 1: 1111.00 1112.00 1113.00 - 2 / 2: 2111.00 2112.00 2113.00 - 3 / 3: 3111.00 3112.00 3113.00 -LIST v[@xpt,@fpt] !YE - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 points (Y-E) - X : 1 - F : 1 - 1 2 3 - 1 2 3 - 1 / 1: 1111.00 1121.00 1131.00 - 2 / 2: 1211.00 1221.00 1231.00 - 3 / 3: 1311.00 1321.00 1331.00 -LIST v[@xpt,@ept] !YF - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 points (Y-F) - X : 1 - E : 1 - 1 2 3 - 1 2 3 - 1 / 1: 1111.00 1121.00 1131.00 - 2 / 2: 2111.00 2121.00 2131.00 - 3 / 3: 3111.00 3121.00 3131.00 -LIST v[@xpt,@ypt] !EF - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 points (E-F) - X : 1 - Y : 1 - 1 2 3 - 1 2 3 - 1 / 1: 1111.00 1211.00 1311.00 - 2 / 2: 2111.00 2211.00 2311.00 - 3 / 3: 3111.00 3211.00 3311.00 - -! lines of data -LIST/ORDER=F v[@xpt,@ypt,@ept] ! F - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 points (F) - X : 1 - Y : 1 - E : 1 - 1 2 3 - 1 2 3 - 1111.00 2111.00 3111.00 -LIST/ORDER=E v[@xpt,@ypt,@fpt] ! E - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 points (E) - X : 1 - Y : 1 - F : 1 - 1 2 3 - 1 2 3 - 1111.00 1211.00 1311.00 -LIST/ORDER=Y v[@xpt,@ept,@fpt] ! Y - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 points (Y) - X : 1 - E : 1 - F : 1 - 1 2 3 - 1 2 3 - 1111.00 1121.00 1131.00 -LIST/ORDER=X v[@ypt,@ept,@fpt] ! X - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 points (X) - Y : 1 - E : 1 - F : 1 - 1 2 3 - 1 2 3 - 1111.00 1112.00 1113.00 - -! point of data -LIST v[@xpt,@ypt,@ept,@fpt] - VARIABLE : X + 10*Y + 100*_E + 1000*_F - X : 1 - Y : 1 - E : 1 - F : 1 - 1111.00 - -! then with interpolation -SET MODE INTERPOLATE -GO bn_interpolate_6d.sub -! bn_interpolate_6d.SUB -! interpolate in various geometries - -! this routine assumes that a 4-D region and an expression are already set - -! cubes of data -LIST v[@xpt] - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 by 3 points (Y-E-F) - X : 1.5 (interpolated) - 1 2 3 - 1 2 3 - ---- N:1 F: 1 - 1 / 1: 1111.50 1121.50 1131.50 - 2 / 2: 1211.50 1221.50 1231.50 - 3 / 3: 1311.50 1321.50 1331.50 - ---- N:2 F: 2 - 1 / 1: 2111.50 2121.50 2131.50 - 2 / 2: 2211.50 2221.50 2231.50 - 3 / 3: 2311.50 2321.50 2331.50 - ---- N:3 F: 3 - 1 / 1: 3111.50 3121.50 3131.50 - 2 / 2: 3211.50 3221.50 3231.50 - 3 / 3: 3311.50 3321.50 3331.50 -LIST v[@ypt] - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 by 3 points (X-E-F) - Y : 1.05 (interpolated) - 1 2 3 - 1 2 3 - ---- N:1 F: 1 - 1 / 1: 1111.50 1112.50 1113.50 - 2 / 2: 1211.50 1212.50 1213.50 - 3 / 3: 1311.50 1312.50 1313.50 - ---- N:2 F: 2 - 1 / 1: 2111.50 2112.50 2113.50 - 2 / 2: 2211.50 2212.50 2213.50 - 3 / 3: 2311.50 2312.50 2313.50 - ---- N:3 F: 3 - 1 / 1: 3111.50 3112.50 3113.50 - 2 / 2: 3211.50 3212.50 3213.50 - 3 / 3: 3311.50 3312.50 3313.50 -LIST v[@ept] - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 by 3 points (X-Y-F) - E : 1.005 (interpolated) - 1 2 3 - 1 2 3 - ---- N:1 F: 1 - 1 / 1: 1111.50 1112.50 1113.50 - 2 / 2: 1121.50 1122.50 1123.50 - 3 / 3: 1131.50 1132.50 1133.50 - ---- N:2 F: 2 - 1 / 1: 2111.50 2112.50 2113.50 - 2 / 2: 2121.50 2122.50 2123.50 - 3 / 3: 2131.50 2132.50 2133.50 - ---- N:3 F: 3 - 1 / 1: 3111.50 3112.50 3113.50 - 2 / 2: 3121.50 3122.50 3123.50 - 3 / 3: 3131.50 3132.50 3133.50 -LIST v[@fpt] - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 by 3 points (X-Y-E) - F : 1 (interpolated) - 1 2 3 - 1 2 3 - ---- M:1 E: 1 - 1 / 1: 1111.50 1112.50 1113.50 - 2 / 2: 1121.50 1122.50 1123.50 - 3 / 3: 1131.50 1132.50 1133.50 - ---- M:2 E: 2 - 1 / 1: 1211.50 1212.50 1213.50 - 2 / 2: 1221.50 1222.50 1223.50 - 3 / 3: 1231.50 1232.50 1233.50 - ---- M:3 E: 3 - 1 / 1: 1311.50 1312.50 1313.50 - 2 / 2: 1321.50 1322.50 1323.50 - 3 / 3: 1331.50 1332.50 1333.50 - -! planes of data -LIST v[@ept,@fpt] !XY - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 points (X-Y) - E : 1.005 (interpolated) - F : 1 (interpolated) - 1 2 3 - 1 2 3 - 1 / 1: 1112.00 1113.00 1114.00 - 2 / 2: 1122.00 1123.00 1124.00 - 3 / 3: 1132.00 1133.00 1134.00 -LIST v[@ypt,@fpt] !XE - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 points (X-E) - Y : 1.05 (interpolated) - F : 1 (interpolated) - 1 2 3 - 1 2 3 - 1 / 1: 1112.00 1113.00 1114.00 - 2 / 2: 1212.00 1213.00 1214.00 - 3 / 3: 1312.00 1313.00 1314.00 -LIST v[@ypt,@ept] !XF - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 points (X-F) - Y : 1.05 (interpolated) - E : 1.005 (interpolated) - 1 2 3 - 1 2 3 - 1 / 1: 1112.00 1113.00 1114.00 - 2 / 2: 2112.00 2113.00 2114.00 - 3 / 3: 3112.00 3113.00 3114.00 -LIST v[@xpt,@fpt] !YE - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 points (Y-E) - X : 1.5 (interpolated) - F : 1 (interpolated) - 1 2 3 - 1 2 3 - 1 / 1: 1112.00 1122.00 1132.00 - 2 / 2: 1212.00 1222.00 1232.00 - 3 / 3: 1312.00 1322.00 1332.00 -LIST v[@xpt,@ept] !YF - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 points (Y-F) - X : 1.5 (interpolated) - E : 1.005 (interpolated) - 1 2 3 - 1 2 3 - 1 / 1: 1112.00 1122.00 1132.00 - 2 / 2: 2112.00 2122.00 2132.00 - 3 / 3: 3112.00 3122.00 3132.00 -LIST v[@xpt,@ypt] !EF - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 by 3 points (E-F) - X : 1.5 (interpolated) - Y : 1.05 (interpolated) - 1 2 3 - 1 2 3 - 1 / 1: 1112.00 1212.00 1312.00 - 2 / 2: 2112.00 2212.00 2312.00 - 3 / 3: 3112.00 3212.00 3312.00 - -! lines of data -LIST/ORDER=F v[@xpt,@ypt,@ept] ! F - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 points (F) - X : 1.5 (interpolated) - Y : 1.05 (interpolated) - E : 1.005 (interpolated) - 1 2 3 - 1 2 3 - 1112.50 2112.50 3112.50 -LIST/ORDER=E v[@xpt,@ypt,@fpt] ! E - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 points (E) - X : 1.5 (interpolated) - Y : 1.05 (interpolated) - F : 1 (interpolated) - 1 2 3 - 1 2 3 - 1112.50 1212.50 1312.50 -LIST/ORDER=Y v[@xpt,@ept,@fpt] ! Y - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 points (Y) - X : 1.5 (interpolated) - E : 1.005 (interpolated) - F : 1 (interpolated) - 1 2 3 - 1 2 3 - 1112.50 1122.50 1132.50 -LIST/ORDER=X v[@ypt,@ept,@fpt] ! X - VARIABLE : X + 10*Y + 100*_E + 1000*_F - SUBSET : 3 points (X) - Y : 1.05 (interpolated) - E : 1.005 (interpolated) - F : 1 (interpolated) - 1 2 3 - 1 2 3 - 1112.50 1113.50 1114.50 - -! point of data -LIST v[@xpt,@ypt,@ept,@fpt] - VARIABLE : X + 10*Y + 100*_E + 1000*_F - X : 1.5 (interpolated) - Y : 1.05 (interpolated) - E : 1.005 (interpolated) - F : 1 (interpolated) - 1113.00 - -set mode/last calendar - -GO bn_reset bn_regrid_6d -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_6d -GO bn_regrid_6d -! bn_regrid_6d.jnl -! version of bn_regrid, using E and F directions. -! note with fix to ticket 2399 mode calendar applies to F axis - -set mode latit_label -4 -set mode long_label -4 -set mode calendar:years - -define axis/x=2:20:2 xeven -define axis/x=1:19:2 xodd -define axis/y=2:20:2 yeven -define axis/y=1:19:2 yodd -define axis/e=2:20:2 eeven -define axis/e=1:19:2 eodd -define axis/f=2:20:2/t0="1-jan-1980"/unit=days feven -define axis/f=1:19:2/t0="1-jan-1980"/unit=days fodd - -! default grid -define grid/x=xeven/y=yeven/e=eeven/f=feven even - -! 1 axis different -define grid/x=xodd/y=yeven/e=eeven/f=feven g1 -define grid/x=xeven/y=yodd/e=eeven/f=feven g2 -define grid/x=xeven/y=yeven/e=eodd/f=feven g3 -define grid/x=xeven/y=yeven/e=eeven/f=fodd g4 - -! 2 axes different -define grid/x=xodd/y=yodd/e=eeven/f=feven g12 -define grid/x=xodd/y=yeven/e=eodd/f=feven g13 -define grid/x=xodd/y=yeven/e=eeven/f=fodd g14 -define grid/x=xeven/y=yodd/e=eodd/f=feven g23 -define grid/x=xeven/y=yodd/e=eeven/f=fodd g24 -define grid/x=xeven/y=yeven/e=eodd/f=fodd g33 - -! 3 axes different -define grid/x=xeven/y=yodd/e=eodd/f=fodd g234 -define grid/x=xodd/y=yeven/e=eodd/f=fodd g134 -define grid/x=xodd/y=yodd/e=eeven/f=fodd g124 -define grid/x=xodd/y=yodd/e=eodd/f=feven g123 - -! all axes different -define grid/x=xodd/y=yodd/e=eodd/f=fodd g1234 - -LET veven = 1000*i[g=even] + 100*j[g=even] + 10*_m[g=even] + _n[g=even] - -LET v1 = veven[g=g1] -LET v2 = veven[g=g2] -LET v3 = veven[g=g3] -LET v4 = veven[g=g4] -LET v12 = veven[g=g12] -LET v13 = veven[g=g13] -LET v14 = veven[g=g14] -LET v23 = veven[g=g23] -LET v24 = veven[g=g24] -LET v33 = veven[g=g33] -LET v234 = veven[g=g234] -LET v134 = veven[g=g134] -LET v124 = veven[g=g124] -LET v123 = veven[g=g123] -LET v1234 = veven[g=g1234] - -SET REGION/X=4.01:8.99/Y=4.01:8.99/e=4.01:8.99/f=4.01:8.99 - -! background -list veven - VARIABLE : 1000*I[G=EVEN] + 100*J[G=EVEN] + 10*_M[G=EVEN] + _N[G=EVEN] - SUBSET : 3 by 3 by 3 by 3 points (X-Y-E-FORECAST) - 4 6 8 - 2 3 4 - ---- N:2 F: 1980 - ---- M:2 E: 4 - 4 / 2: 2222.00 3222.00 4222.00 - 6 / 3: 2322.00 3322.00 4322.00 - 8 / 4: 2422.00 3422.00 4422.00 - ---- M:3 E: 6 - 4 / 2: 2232.00 3232.00 4232.00 - 6 / 3: 2332.00 3332.00 4332.00 - 8 / 4: 2432.00 3432.00 4432.00 - ---- M:4 E: 8 - 4 / 2: 2242.00 3242.00 4242.00 - 6 / 3: 2342.00 3342.00 4342.00 - 8 / 4: 2442.00 3442.00 4442.00 - ---- N:3 F: 1980 - ---- M:2 E: 4 - 4 / 2: 2223.00 3223.00 4223.00 - 6 / 3: 2323.00 3323.00 4323.00 - 8 / 4: 2423.00 3423.00 4423.00 - ---- M:3 E: 6 - 4 / 2: 2233.00 3233.00 4233.00 - 6 / 3: 2333.00 3333.00 4333.00 - 8 / 4: 2433.00 3433.00 4433.00 - ---- M:4 E: 8 - 4 / 2: 2243.00 3243.00 4243.00 - 6 / 3: 2343.00 3343.00 4343.00 - 8 / 4: 2443.00 3443.00 4443.00 - ---- N:4 F: 1980 - ---- M:2 E: 4 - 4 / 2: 2224.00 3224.00 4224.00 - 6 / 3: 2324.00 3324.00 4324.00 - 8 / 4: 2424.00 3424.00 4424.00 - ---- M:3 E: 6 - 4 / 2: 2234.00 3234.00 4234.00 - 6 / 3: 2334.00 3334.00 4334.00 - 8 / 4: 2434.00 3434.00 4434.00 - ---- M:4 E: 8 - 4 / 2: 2244.00 3244.00 4244.00 - 6 / 3: 2344.00 3344.00 4344.00 - 8 / 4: 2444.00 3444.00 4444.00 -list v1234 - VARIABLE : VEVEN[G=G1234] - SUBSET : 3 by 3 by 3 by 3 points (X-Y-E-FORECAST) - 5 7 9 - 3 4 5 - ---- N:3 F: 1980 - ---- M:3 E: 5 - 5 / 3: 2777.50 3777.50 4777.50 - 7 / 4: 2877.50 3877.50 4877.50 - 9 / 5: 2977.50 3977.50 4977.50 - ---- M:4 E: 7 - 5 / 3: 2787.50 3787.50 4787.50 - 7 / 4: 2887.50 3887.50 4887.50 - 9 / 5: 2987.50 3987.50 4987.50 - ---- M:5 E: 9 - 5 / 3: 2797.50 3797.50 4797.50 - 7 / 4: 2897.50 3897.50 4897.50 - 9 / 5: 2997.50 3997.50 4997.50 - ---- N:4 F: 1980 - ---- M:3 E: 5 - 5 / 3: 2778.50 3778.50 4778.50 - 7 / 4: 2878.50 3878.50 4878.50 - 9 / 5: 2978.50 3978.50 4978.50 - ---- M:4 E: 7 - 5 / 3: 2788.50 3788.50 4788.50 - 7 / 4: 2888.50 3888.50 4888.50 - 9 / 5: 2988.50 3988.50 4988.50 - ---- M:5 E: 9 - 5 / 3: 2798.50 3798.50 4798.50 - 7 / 4: 2898.50 3898.50 4898.50 - 9 / 5: 2998.50 3998.50 4998.50 - ---- N:5 F: 1980 - ---- M:3 E: 5 - 5 / 3: 2779.50 3779.50 4779.50 - 7 / 4: 2879.50 3879.50 4879.50 - 9 / 5: 2979.50 3979.50 4979.50 - ---- M:4 E: 7 - 5 / 3: 2789.50 3789.50 4789.50 - 7 / 4: 2889.50 3889.50 4889.50 - 9 / 5: 2989.50 3989.50 4989.50 - ---- M:5 E: 9 - 5 / 3: 2799.50 3799.50 4799.50 - 7 / 4: 2899.50 3899.50 4899.50 - 9 / 5: 2999.50 3999.50 4999.50 -stat veven - - 1000*I[G=EVEN] + 100*J[G=EVEN] + 10*_M[G=EVEN] + _N[G=EVEN] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2222 - Maximum value: 4444 - Mean value: 3333 (unweighted average) - Standard deviation: 825.72 - -! first all from one memory variable -load/x=1:11/y=1:11/e=1:11/f=1:11 veven -GO bn_regrid.sub -! BN200_REGRID.SUB -! compare various regriddings to the original data - -stat v1[g=even]-veven, v1 - - V1[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G1] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2722 - Maximum value: 4944 - Mean value: 3833 (unweighted average) - Standard deviation: 825.72 -stat v2[g=even]-veven, v2 - - V2[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G2] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2272 - Maximum value: 4494 - Mean value: 3383 (unweighted average) - Standard deviation: 825.72 -stat v3[g=even]-veven, v3 - - V3[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G3] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2227 - Maximum value: 4449 - Mean value: 3338 (unweighted average) - Standard deviation: 825.72 -stat v4[g=even]-veven, v4 - - V4[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G4] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2222.5 - Maximum value: 4444.5 - Mean value: 3333.5 (unweighted average) - Standard deviation: 825.72 -stat v12[g=even]-veven, v12 - - V12[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G12] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2772 - Maximum value: 4994 - Mean value: 3883 (unweighted average) - Standard deviation: 825.72 -stat v13[g=even]-veven, v13 - - V13[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G13] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2727 - Maximum value: 4949 - Mean value: 3838 (unweighted average) - Standard deviation: 825.72 -stat v14[g=even]-veven, v14 - - V14[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G14] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2722.5 - Maximum value: 4944.5 - Mean value: 3833.5 (unweighted average) - Standard deviation: 825.72 -stat v23[g=even]-veven, v23 - - V23[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G23] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2277 - Maximum value: 4499 - Mean value: 3388 (unweighted average) - Standard deviation: 825.72 -stat v24[g=even]-veven, v24 - - V24[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G24] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2272.5 - Maximum value: 4494.5 - Mean value: 3383.5 (unweighted average) - Standard deviation: 825.72 -stat v33[g=even]-veven, v33 - - V33[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G33] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2227.5 - Maximum value: 4449.5 - Mean value: 3338.5 (unweighted average) - Standard deviation: 825.72 -stat v234[g=even]-veven, v234 - - V234[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G234] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2277.5 - Maximum value: 4499.5 - Mean value: 3388.5 (unweighted average) - Standard deviation: 825.72 -stat v134[g=even]-veven, v134 - - V134[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G134] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2727.5 - Maximum value: 4949.5 - Mean value: 3838.5 (unweighted average) - Standard deviation: 825.72 -stat v124[g=even]-veven, v124 - - V124[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G124] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2772.5 - Maximum value: 4994.5 - Mean value: 3883.5 (unweighted average) - Standard deviation: 825.72 -stat v123[g=even]-veven, v123 - - V123[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G123] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2777 - Maximum value: 4999 - Mean value: 3888 (unweighted average) - Standard deviation: 825.72 -stat v1234[g=even]-veven, v1234 - - V1234[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G1234] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2777.5 - Maximum value: 4999.5 - Mean value: 3888.5 (unweighted average) - Standard deviation: 825.72 - -! and now with recalculations at every step -CANCEL MEMORY/ALL -SET MODE STUPID -GO bn_regrid.sub -! BN200_REGRID.SUB -! compare various regriddings to the original data - -stat v1[g=even]-veven, v1 - - V1[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G1] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2722 - Maximum value: 4944 - Mean value: 3833 (unweighted average) - Standard deviation: 825.72 -stat v2[g=even]-veven, v2 - - V2[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G2] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2272 - Maximum value: 4494 - Mean value: 3383 (unweighted average) - Standard deviation: 825.72 -stat v3[g=even]-veven, v3 - - V3[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G3] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2227 - Maximum value: 4449 - Mean value: 3338 (unweighted average) - Standard deviation: 825.72 -stat v4[g=even]-veven, v4 - - V4[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G4] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2222.5 - Maximum value: 4444.5 - Mean value: 3333.5 (unweighted average) - Standard deviation: 825.72 -stat v12[g=even]-veven, v12 - - V12[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G12] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2772 - Maximum value: 4994 - Mean value: 3883 (unweighted average) - Standard deviation: 825.72 -stat v13[g=even]-veven, v13 - - V13[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G13] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2727 - Maximum value: 4949 - Mean value: 3838 (unweighted average) - Standard deviation: 825.72 -stat v14[g=even]-veven, v14 - - V14[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G14] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2722.5 - Maximum value: 4944.5 - Mean value: 3833.5 (unweighted average) - Standard deviation: 825.72 -stat v23[g=even]-veven, v23 - - V23[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G23] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2277 - Maximum value: 4499 - Mean value: 3388 (unweighted average) - Standard deviation: 825.72 -stat v24[g=even]-veven, v24 - - V24[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G24] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2272.5 - Maximum value: 4494.5 - Mean value: 3383.5 (unweighted average) - Standard deviation: 825.72 -stat v33[g=even]-veven, v33 - - V33[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G33] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2227.5 - Maximum value: 4449.5 - Mean value: 3338.5 (unweighted average) - Standard deviation: 825.72 -stat v234[g=even]-veven, v234 - - V234[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G234] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2277.5 - Maximum value: 4499.5 - Mean value: 3388.5 (unweighted average) - Standard deviation: 825.72 -stat v134[g=even]-veven, v134 - - V134[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G134] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2727.5 - Maximum value: 4949.5 - Mean value: 3838.5 (unweighted average) - Standard deviation: 825.72 -stat v124[g=even]-veven, v124 - - V124[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G124] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2772.5 - Maximum value: 4994.5 - Mean value: 3883.5 (unweighted average) - Standard deviation: 825.72 -stat v123[g=even]-veven, v123 - - V123[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G123] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2777 - Maximum value: 4999 - Mean value: 3888 (unweighted average) - Standard deviation: 825.72 -stat v1234[g=even]-veven, v1234 - - V1234[G=EVEN]-VEVEN - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - - VEVEN[G=G1234] - X: 4.01 to 8.99 - Y: 4.01 to 8.99 - Z: N/A - T: N/A - E: 4.01 to 8.99 - FORECAST: 1980 to 1980 - DATA SET: N/A - - Total # of data points: 81 (3*3*1*1*3*3) - # flagged as bad data: 0 - Minimum value: 2777.5 - Maximum value: 4999.5 - Mean value: 3888.5 (unweighted average) - Standard deviation: 825.72 - -!****************** area-averaging regrids ******************* -! check easily computable area-averaged regrid -LET vfine = X+Y -LET vcoarse = vfine[g=gcoarse] - -! first test without COS(latitude) corrections -define axis/x=1:100:1/unit=cm xfine -define axis/x=5.5:95.5:10/unit=cm xcoarse -define axis/y=1:100:1/unit=cm yfine -define axis/y=5.5:95.5:10/unit=cm ycoarse -define grid/x=xfine/y=yfine gfine -define grid/x=xcoarse/y=ycoarse gcoarse - -set grid gfine -set reg/x=20.5:80.5/y=20.5:80.5 -list vcoarse - VARIABLE : VFINE[G=GCOARSE] - SUBSET : 6 by 6 points (X (CM)-Y (CM)) - 25.5 35.5 45.5 55.5 65.5 75.5 - 3 4 5 6 7 8 - 25.5 / 3: 51.000 61.000 71.000 81.000 91.000 101.000 - 35.5 / 4: 61.000 71.000 81.000 91.000 101.000 111.000 - 45.5 / 5: 71.000 81.000 91.000 101.000 111.000 121.000 - 55.5 / 6: 81.000 91.000 101.000 111.000 121.000 131.000 - 65.5 / 7: 91.000 101.000 111.000 121.000 131.000 141.000 - 75.5 / 8: 101.000 111.000 121.000 131.000 141.000 151.000 -stat vcoarse,vfine - - VFINE[G=GCOARSE] - X (CM): 20.5 to 80.5 - Y (CM): 20.5 to 80.5 - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 36 (6*6*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 51 - Maximum value: 151 - Mean value: 101 (unweighted average) - Standard deviation: 24.495 - - X+Y - X (CM): 20.5 to 80.5 - Y (CM): 20.5 to 80.5 - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 3600 (60*60*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 42 - Maximum value: 160 - Mean value: 101 (unweighted average) - Standard deviation: 24.495 -list vcoarse[x=@ave,y=@ave],vfine[x=@ave,y=@ave] - X (CM): 20.5 to 80.5 (XY ave) - Y (CM): 20.5 to 80.5 (XY ave) - Column 1: VCOARSE is VFINE[G=GCOARSE] - Column 2: VFINE is X+Y - VCOARSE VFINE -I / *: 101.000 101.000 - -! then test with COS(latitude) corrections -define axis/x=1:100:1/unit=degrees xfine -define axis/x=5.5:95.5:10/unit=degrees xcoarse -define axis/y=1:100:1/unit=degrees yfine -define axis/y=5.5:95.5:10/unit=degrees ycoarse -define grid/x=xfine/y=yfine gfine -define grid/x=xcoarse/y=ycoarse gcoarse - -set grid gfine -set reg/x=20.5:80.5/y=20.5:80.5 -list vcoarse - VARIABLE : VFINE[G=GCOARSE] - SUBSET : 6 by 6 points (LONGITUDE-LATITUDE) - 25.5E 35.5E 45.5E 55.5E 65.5E 75.5E - 3 4 5 6 7 8 - 75.5N / 8: 101.000 111.000 121.000 131.000 141.000 151.000 - 65.5N / 7: 91.000 101.000 111.000 121.000 131.000 141.000 - 55.5N / 6: 81.000 91.000 101.000 111.000 121.000 131.000 - 45.5N / 5: 71.000 81.000 91.000 101.000 111.000 121.000 - 35.5N / 4: 61.000 71.000 81.000 91.000 101.000 111.000 - 25.5N / 3: 51.000 61.000 71.000 81.000 91.000 101.000 -stat vcoarse,vfine - - VFINE[G=GCOARSE] - LONGITUDE: 20.5E to 80.5E - LATITUDE: 20.5N to 80.5N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 36 (6*6*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 51 - Maximum value: 151 - Mean value: 101 (unweighted average) - Standard deviation: 24.495 - - X+Y - LONGITUDE: 20.5E to 80.5E - LATITUDE: 20.5N to 80.5N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 3600 (60*60*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 42 - Maximum value: 160 - Mean value: 101 (unweighted average) - Standard deviation: 24.495 -list vcoarse[x=@ave,y=@ave],vfine[x=@ave,y=@ave] - LONGITUDE: 20.5E to 80.5E (XY ave) - LATITUDE: 20.5N to 80.5N (XY ave) - Column 1: VCOARSE is VFINE[G=GCOARSE] - Column 2: VFINE is X+Y - VCOARSE VFINE -I / *: 94.7056 94.5308 - -!****************** F axis regridding ******************* -define axis/f="1-jan-1980":"1-jan-1982":24/t0="1-jan-1970" fax24 -define axis/f="1-jan-1980":"1-jan-1982":48/t0="1-jan-1920" fax48 -define grid/f=fax24 g24 -define grid/f=fax48 g48 -show grid/N=1:4 g24 g48 - GRID G24 - name axis # pts start end - normal X - normal Y - normal Z - normal T - normal E - FAX24 FORECAST 732 r 01-JAN-1980 00:00 01-JAN-1982 00:00 - - N F FBOX FBOXLO TSTEP (HOURS) - 1> 01-JAN-1980 00:00:00 24 31-DEC-1979 12:00:00 87648 - 2> 02-JAN-1980 00:00:00 24 01-JAN-1980 12:00:00 87672 - 3> 03-JAN-1980 00:00:00 24 02-JAN-1980 12:00:00 87696 - 4> 04-JAN-1980 00:00:00 24 03-JAN-1980 12:00:00 87720 - GRID G48 - name axis # pts start end - normal X - normal Y - normal Z - normal T - normal E - FAX48 FORECAST 367 r 01-JAN-1980 00:00 02-JAN-1982 00:00 - - N F FBOX FBOXLO TSTEP (HOURS) - 1> 01-JAN-1980 00:00:00 48 31-DEC-1979 00:00:00 525960 - 2> 03-JAN-1980 00:00:00 48 02-JAN-1980 00:00:00 526008 - 3> 05-JAN-1980 00:00:00 48 04-JAN-1980 00:00:00 526056 - 4> 07-JAN-1980 00:00:00 48 06-JAN-1980 00:00:00 526104 -set region/F="1-jan-1980":"8-jan-1980" -let a24 = _F[g=g24] -let a48 = _F[g=g48] -list a24 - VARIABLE : _F[G=G24] - SUBSET : 8 points (FORECAST) - 01-JAN-1980 00 / 1: 87648.0 - 02-JAN-1980 00 / 2: 87672.0 - 03-JAN-1980 00 / 3: 87696.0 - 04-JAN-1980 00 / 4: 87720.0 - 05-JAN-1980 00 / 5: 87744.0 - 06-JAN-1980 00 / 6: 87768.0 - 07-JAN-1980 00 / 7: 87792.0 - 08-JAN-1980 00 / 8: 87816.0 -list a48 - VARIABLE : _F[G=G48] - SUBSET : 4 points (FORECAST) - 01-JAN-1980 00 / 1: 525960. - 03-JAN-1980 00 / 2: 526008. - 05-JAN-1980 00 / 3: 526056. - 07-JAN-1980 00 / 4: 526104. - -list a24[g=g48] - VARIABLE : _F[G=G24] - regrid: G48 - SUBSET : 4 points (FORECAST) - 01-JAN-1980 00 / 1: 87648.0 - 03-JAN-1980 00 / 2: 87696.0 - 05-JAN-1980 00 / 3: 87744.0 - 07-JAN-1980 00 / 4: 87792.0 -list a24[g=g48]-a48 - VARIABLE : A24[G=G48]-A48 - SUBSET : 4 points (FORECAST) - 01-JAN-1980 00 / 1: -438312. - 03-JAN-1980 00 / 2: -438312. - 05-JAN-1980 00 / 3: -438312. - 07-JAN-1980 00 / 4: -438312. - - - -set mode/last latit_label -set mode/last long_label -set mode/last calendar - - -GO bn_reset bn_syntax_6d -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_syntax_6d -GO bn_syntax_6d -! bn_syntax_6d.JNL -! - test syntax interpretation of Program FERRET 6D - -! SET - SHOW - CANCEL DATA - -! 6D file based on gtbc011 -USE 6dfile - -SHOW GRID - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid G48 - GRID G48 - name axis # pts start end subset - normal X - normal Y - normal Z - normal T - normal E - FAX48 FORECAST 367 r 01-JAN-1980 00:00 02-JAN-1982 00:00 full -LIST/I=1:2/J=50/K=1/L=2/M=3/N=4 SALT - VARIABLE : (SALINITY(ppt) - 35) /1000 (frac. by wt. less .035) - FILENAME : 6dfile.nc - SUBSET : 2 points (LONGITUDE) - LATITUDE : 6.1667N - DEPTH (m): 5 - TIME : 15-MAR-1983 11:00 - E : 3 - F : 7 - 6.17N - 50 - 160.5W / 1: 3.70015 - 159.5W / 2: 3.70015 -SHOW GRID - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid GNJ2 - GRID GNJ2 - name axis # pts start end subset - PSXT70_71 LONGITUDE 2mr 160.5W 159.5W full - PSYT15_75 LATITUDE 61 i 10.169S 9.833N full - PSZT2 DEPTH (m) 27 i- 5 3824 full - TIME28 TIME 3 r 15-MAR-1983 10:00 15-MAR-1983 12:00 full - EAXIS E 5 r 1 5 full - FAXIS F 4 r 1 7 full -SET GRID/SAVE -SET GRID ABSTRACT -SHOW GRID - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid GNJ2 - GRID GNJ2 - name axis # pts start end subset - PSXT70_71 LONGITUDE 2mr 160.5W 159.5W full - PSYT15_75 LATITUDE 61 i 10.169S 9.833N full - PSZT2 DEPTH (m) 27 i- 5 3824 full - TIME28 TIME 3 r 15-MAR-1983 10:00 15-MAR-1983 12:00 full - EAXIS E 5 r 1 5 full - FAXIS F 4 r 1 7 full -SHOW GRID/X=180:165W SALT - GRID GNJ2 - name axis # pts start end subset - PSXT70_71 LONGITUDE 2mr 160.5W 159.5W full - PSYT15_75 LATITUDE 61 i 10.169S 9.833N full - PSZT2 DEPTH (m) 27 i- 5 3824 full - TIME28 TIME 3 r 15-MAR-1983 10:00 15-MAR-1983 12:00 full - EAXIS E 5 r 1 5 full - FAXIS F 4 r 1 7 full - - I X XBOX XBOXLO - 0> 20E 358 159W(-159) -SET GRID/RESTORE -SHOW GRID - Default grid for DEFINE VARIABLE is ABSTRACT - -can dat/all - -! nested brackets (7/95 - version 4.01) -use 6dfile,gt4d011 -stat/k=1/l=1/j=40/i=3/M=3/N=4/d=2 temp[d=1] - - TEMPERATURE - LONGITUDE: 158.5W - LATITUDE: 2.8333N - DEPTH (m): 5 - TIME: 15-MAR-1983 10:00 - E: 3 - F: 7 - DATA SET: ./data/6dfile.nc - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 34.97 - Maximum value: 34.97 - Mean value: 34.97 (unweighted average) -stat/k=1/l=1/j=40/i=3/M=3/N=4/d=2 temp[d=1,g=u] - - TEMPERATURE - regrid: U - LONGITUDE: 159W - LATITUDE: 3N - DEPTH (m): 5 - TIME: 15-MAR-1983 10:00 - E: 3 - F: 7 - DATA SET: ./data/6dfile.nc - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 34.962 - Maximum value: 34.962 - Mean value: 34.962 (unweighted average) - -! a common example: continuation for REPEAT loops -repeat/M=1:3 (cancel data/all;\ -show data;\ -let a = _m;\ -list/nohead a;\ -cancel variables/all;\ -) -!-> REPEAT: M=1 - currently SET data sets: - 1.00000 -!-> REPEAT: M=2 - currently SET data sets: - 2.00000 -!-> REPEAT: M=3 - currently SET data sets: - 3.00000 - -GO bn_reset bn_expressions_6d -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_expressions_6d -GO bn_expressions_6d -! bn_expressions_6d.jnl -! testing expressions syntax in E and F directions. -! Note pseudo-variables are _E, - -! test grid creation for a variety of combos -let c1 = 2 -let m1 = _m -let n1 = _n - -! ... constant plus variable or pseudovariable -set reg/m=1:3 -list/order=e _m + 2 - VARIABLE : _M + 2 - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e 2 + _m - VARIABLE : 2 + _M - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e m1 + 2 - VARIABLE : M1 + 2 - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e 2 + m1 - VARIABLE : 2 + M1 - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e _m + c1 - VARIABLE : _M + C1 - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e c1 + _m - VARIABLE : C1 + _M - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e m1 + c1 - VARIABLE : M1 + C1 - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e c1 + m1 - VARIABLE : C1 + M1 - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 - -! ... constant plus variable or pseudovariable with modified region -set reg/m=11:13 -list/order=e _m[m=1:3] + 2 - VARIABLE : _M[M=1:3] + 2 - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e 2 + _m[m=1:3] - VARIABLE : 2 + _M[M=1:3] - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e m1[m=1:3] + 2 - VARIABLE : M1[M=1:3] + 2 - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e 2 + m1[m=1:3] - VARIABLE : 2 + M1[M=1:3] - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e _m[m=1:3] + c1 - VARIABLE : _M[M=1:3] + C1 - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e c1 + _m[m=1:3] - VARIABLE : C1 + _M[M=1:3] - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e m1[m=1:3] + c1 - VARIABLE : M1[M=1:3] + C1 - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e c1 + m1[m=1:3] - VARIABLE : C1 + M1[M=1:3] - SUBSET : 3 points (E) - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 - -! ... two variables or pseudovariables -set reg/m=1:3/n=2 -list/order=e _m + _n - VARIABLE : _M + _N - SUBSET : 3 points (E) - F : 2 - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e _m + n1 - VARIABLE : _M + N1 - SUBSET : 3 points (E) - F : 2 - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e n1 + _m - VARIABLE : N1 + _M - SUBSET : 3 points (E) - F : 2 - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 - -! ... two variables or pseudovariables with modified region -set reg/m=1:3/n=1 -list/order=e _m + _n[n=2] - VARIABLE : _M + _N[N=2] - SUBSET : 3 points (E) - F : 2 - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e _m + n1[n=2] - VARIABLE : _M + N1[N=2] - SUBSET : 3 points (E) - F : 2 - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 -list/order=e n1[n=2] + _m - VARIABLE : N1[N=2] + _M - SUBSET : 3 points (E) - F : 2 - 1 2 3 - 1 2 3 - 3.00000 4.00000 5.00000 - -! operators -CANCEL REGION -SET REGION/m=1:5/n=1:5 -LIST 10+2 - VARIABLE : 10+2 - 12.0000 -LIST/order=e _m - VARIABLE : _M - axis ABSTRACT - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.00000 2.00000 3.00000 4.00000 5.00000 -LIST/order=e _m*3 - VARIABLE : _M*3 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 3.0000 6.0000 9.0000 12.0000 15.0000 -LIST/order=e _m/3 - VARIABLE : _M/3 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.33333 0.66667 1.00000 1.33333 1.66667 -LIST/order=e _m+3 - VARIABLE : _M+3 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 4.00000 5.00000 6.00000 7.00000 8.00000 -LIST/order=e _m-3 - VARIABLE : _M-3 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - -2.00000 -1.00000 0.00000 1.00000 2.00000 -LIST/order=e _m^3 - VARIABLE : _M^3 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.000 8.000 27.000 64.000 125.000 -LIST/order=e _m EQ 3 - VARIABLE : _M EQ 3 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.00000 0.00000 1.00000 0.00000 0.00000 -LIST/order=e _m NE 3 - VARIABLE : _M NE 3 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.00000 1.00000 0.00000 1.00000 1.00000 -LIST/order=e _m GT 3 - VARIABLE : _M GT 3 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.00000 0.00000 0.00000 1.00000 1.00000 -LIST/order=e _m GE 3 - VARIABLE : _M GE 3 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.00000 0.00000 1.00000 1.00000 1.00000 -LIST/order=e _m LT 3 - VARIABLE : _M LT 3 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.00000 1.00000 0.00000 0.00000 0.00000 -LIST/order=e _m LE 3 - VARIABLE : _M LE 3 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.00000 1.00000 1.00000 0.00000 0.00000 -LIST/order=e (_m LT 3) OR (_m GT 3) - VARIABLE : (_M LT 3) OR (_M GT 3) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.00000 1.00000 0.00000 1.00000 1.00000 -LIST/order=e (_m LE 3) AND (_m GE 3) - VARIABLE : (_M LE 3) AND (_M GE 3) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.00000 0.00000 1.00000 0.00000 0.00000 -LIST/order=e (_m+3)*3 - 9 - (_m+_m+_m) - VARIABLE : (_M+3)*3 - 9 - (_M+_M+_M) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.000000 0.000000 0.000000 0.000000 0.000000 -LIST/order=e _n * ( (_m+3)*3 - 9 - (_m+_m+_m) ) - VARIABLE : _N * ( (_M+3)*3 - 9 - (_M+_M+_M) ) - SUBSET : 5 by 5 points (E-F) - 1 2 3 4 5 - 1 2 3 4 5 - ---- N:1 F: 1 - N:1 F: 0.000000 0.000000 0.000000 0.000000 0.000000 - ---- N:2 F: 2 - N:2 F: 0.000000 0.000000 0.000000 0.000000 0.000000 - ---- N:3 F: 3 - N:3 F: 0.000000 0.000000 0.000000 0.000000 0.000000 - ---- N:4 F: 4 - N:4 F: 0.000000 0.000000 0.000000 0.000000 0.000000 - ---- N:5 F: 5 - N:5 F: 0.000000 0.000000 0.000000 0.000000 0.000000 - -! IF, THEN, ELSE -LIST/order=e IF _m GT 3 THEN _m - VARIABLE : IF _M GT 3 THEN _M - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - .... .... .... 4.00000 5.00000 -LIST/order=e IF _m GT 3 THEN _m ELSE 0 - VARIABLE : IF _M GT 3 THEN _M ELSE 0 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.00000 0.00000 0.00000 4.00000 5.00000 -! error: nested IF tests -SET MODE IGNORE_ERRORS -LIST/order=e IF _m GT 3 THEN ( IF _m LT 5 THEN _m ELSE -9 ) ELSE .333 ! err -LET A = IF _m LT 5 THEN _m ELSE -9 ! err -SET MODE/LAST IGNORE_ERRORS -LET A = IF _m LT 5 THEN _m ELSE (-9) -LIST/order=e IF _m GT 3 THEN ( A ) ELSE .333 - VARIABLE : IF _M GT 3 THEN ( A ) ELSE .333 - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.33300 0.33300 0.33300 4.00000 -9.00000 - -! functions -LIST/order=e MAX(_m,3) - VARIABLE : MAX(_M,3) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 3.00000 3.00000 3.00000 4.00000 5.00000 -LIST/order=e MIN(_m,3) - VARIABLE : MIN(_M,3) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.00000 2.00000 3.00000 3.00000 3.00000 -LIST/order=e INT(_m/3) - VARIABLE : INT(_M/3) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.00000 0.00000 1.00000 1.00000 1.00000 -LIST/order=e ABS(_m-3) - VARIABLE : ABS(_M-3) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 2.00000 1.00000 0.00000 1.00000 2.00000 -LIST/order=e EXP(_m) - VARIABLE : EXP(_M) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 2.718 7.389 20.086 54.598 148.413 -LIST/order=e LN(_m) - VARIABLE : LN(_M) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.00000 0.69315 1.09861 1.38629 1.60944 -LIST/order=e LN(EXP(_m)) - VARIABLE : LN(EXP(_M)) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.00000 2.00000 3.00000 4.00000 5.00000 -LIST/order=e EXP(LN(_m)) - VARIABLE : EXP(LN(_M)) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.00000 2.00000 3.00000 4.00000 5.00000 -LIST/order=e LOG(_m) - VARIABLE : LOG(_M) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.000000 0.301030 0.477121 0.602060 0.698970 -LIST/order=e LOG(10^_m) - VARIABLE : LOG(10^_M) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.00000 2.00000 3.00000 4.00000 5.00000 -LIST/order=e 10^LOG(_m) - VARIABLE : 10^LOG(_M) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.00000 2.00000 3.00000 4.00000 5.00000 -LIST/order=e SIN(_m) - VARIABLE : SIN(_M) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.841471 0.909297 0.141120 -0.756802 -0.958924 -LIST/order=e ASIN(SIN(_m/3)) - VARIABLE : ASIN(SIN(_M/3)) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.33333 0.66667 1.00000 1.33333 1.47493 -LIST/order=e COS(_m) - VARIABLE : COS(_M) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.540302 -0.416147 -0.989992 -0.653644 0.283662 -LIST/order=e ACOS(COS(_m/3)) - VARIABLE : ACOS(COS(_M/3)) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.33333 0.66667 1.00000 1.33333 1.66667 -LIST/order=e TAN(_m) - VARIABLE : TAN(_M) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.55741 -2.18504 -0.14255 1.15782 -3.38052 -LIST/order=e ATAN(TAN(_m/3)) - VARIABLE : ATAN(TAN(_M/3)) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.33333 0.66667 1.00000 1.33333 -1.47493 -LIST/n=1:3 ATAN2(_n-1,_m-1) - VARIABLE : ATAN2(_N-1,_M-1) - SUBSET : 5 by 3 points (E-F) - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: .... 0.00000 0.00000 0.00000 0.00000 - 2 / 2: 1.57080 0.78540 0.46365 0.32175 0.24498 - 3 / 3: 1.57080 1.10715 0.78540 0.58800 0.46365 -LIST/order=e MOD(_m,3) - VARIABLE : MOD(_M,3) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 1.00000 2.00000 0.00000 1.00000 2.00000 -LIST/order=e IGNORE0(_m-3) - VARIABLE : IGNORE0(_M-3) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - -2.00000 -1.00000 .... 1.00000 2.00000 -LIST/order=e MISSING( IGNORE0(_m-3),-9 ) - VARIABLE : MISSING( IGNORE0(_M-3),-9 ) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - -2.00000 -1.00000 -9.00000 1.00000 2.00000 -LIST/order=e RANDU(_m) - VARIABLE : RANDU(_M) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - 0.337575 0.723822 0.030403 0.849932 0.169352 -LIST/order=e RANDN(_m) - VARIABLE : RANDN(_M) - SUBSET : 5 points (E) - 1 2 3 4 5 - 1 2 3 4 5 - -0.26718 0.28276 -0.32292 1.21676 -0.30437 - -! syntax errors -SET MODE IGNORE_ERRORS -load a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21 -SET MODE/LAST IGNORE_ERRORS - -! test formatted output where the output field is too small -LIST/m=1:3/FORMAT=(F6.2) 1/(_m-2) ! single column test - VARIABLE : 1/(_M-2) - BAD FLAG : -1.E+34 - SUBSET : 3 points (E) - E : 0.5 to 3.5 - -1.00 -****** - 1.00 -LIST/m=1:3/FORMAT=(2F6.2) 1/(_m-2),2/(_m-2) ! multi-column test - E: 0.5 to 3.5 - Column 1: EX#1 is 1/(_M-2) - Column 2: EX#2 is 2/(_M-2) - -1.00 -2.00 -************ - 1.00 2.00 - -! test grid box limit pseudo-variables -LIST/m=5:7 EBOXLO, EBOXHI - E: 4.5 to 7.5 - Column 1: EBOXLO is EBOXLO (axis ABSTRACT) - Column 2: EBOXHI is EBOXHI (axis ABSTRACT) - EBOXLO EBOXHI -5 / 5: 4.50000 5.50000 -6 / 6: 5.50000 6.50000 -7 / 7: 6.50000 7.50000 -LIST/n=5:7 FBOXLO, FBOXHI - F: 4.5 to 7.5 - Column 1: FBOXLO is FBOXLO (axis ABSTRACT) - Column 2: FBOXHI is FBOXHI (axis ABSTRACT) - FBOXLO FBOXHI -5 / 5: 4.50000 5.50000 -6 / 6: 5.50000 6.50000 -7 / 7: 6.50000 7.50000 - -GO bn_reset bn_direction_fcns_6d -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_direction_fcns_6d -GO bn_direction_fcns_6d -! bn_direction_functions_6d -! Tests of sort, sample, reverse, convolve, compress, and compess_by -! functions in the E and F directions. - -! Sort and sort-string in E direction - -let b = {5,4,3} -let c = esequence(b) -let m_index = sortm(c) -list c, m_index, samplem(c, m_index) - E: 0.5 to 3.5 - Column 1: C is ESEQUENCE(B) - Column 2: M_INDEX is SORTM(C) - Column 3: EX#3 is SAMPLEM(C, M_INDEX) - C M_INDEX EX#3 -1 / 1: 5.00000 3.00000 3.00000 -2 / 2: 4.00000 2.00000 4.00000 -3 / 3: 3.00000 1.00000 5.00000 - -let e1 = esequence({"q", "0", "c"}) -let m_index = sortm(e1) ! or sortm_str -list e1, m_index, samplem(e1, m_index) - E: 0.5 to 3.5 - Column 1: E1 is ESEQUENCE({"q", "0", "c"}) - Column 2: M_INDEX is SORTM(E1) - Column 3: EX#3 is SAMPLEM(E1, M_INDEX) - E1 M_INDEX EX#3 -1 / 1: "q" 2.00000 "0" -2 / 2: "0" 3.00000 "c" -3 / 3: "c" 1.00000 "q" - - -! Sort and sort-string in F direction - -let b = {5,4,3} -let c = fsequence(b) -let n_index = sortn(c) -list c, n_index, samplen(c, n_index) - F: 0.5 to 3.5 - Column 1: C is FSEQUENCE(B) - Column 2: N_INDEX is SORTN(C) - Column 3: EX#3 is SAMPLEN(C, N_INDEX) - C N_INDEX EX#3 -1 / 1: 5.00000 3.00000 3.00000 -2 / 2: 4.00000 2.00000 4.00000 -3 / 3: 3.00000 1.00000 5.00000 - -let f1 = fsequence({"q", "0", "c"}) -let n_index = sortn(f1) ! or sortn_str -list f1, n_index, samplen(f1, n_index) - F: 0.5 to 3.5 - Column 1: F1 is FSEQUENCE({"q", "0", "c"}) - Column 2: N_INDEX is SORTN(F1) - Column 3: EX#3 is SAMPLEN(F1, N_INDEX) - F1 N_INDEX EX#3 -1 / 1: "q" 2.00000 "0" -2 / 2: "0" 3.00000 "c" -3 / 3: "c" 1.00000 "q" - -! Ereverse and Freverse -use 6dfile - -list/i=1/j=15/k=1/l=1/n=1 temp, ereverse(temp) - WARNING: Listed variables have ambiguous coordinates on axes: E - DATA SET: ./data/6dfile.nc - LONGITUDE: 160.5W - LATITUDE: 5.5S - DEPTH (m): 5 - TIME: 15-MAR-1983 10:00 - F: 1 - Column 1: TEMP is TEMPERATURE (deg. C) - Column 2: EX#2 is EREVERSE(TEMP) - TEMP EX#2 -M / 1: 30.7500 34.7500 -M / 2: 31.7500 33.7500 -M / 3: 32.7500 32.7500 -M / 4: 33.7500 31.7500 -M / 5: 34.7500 30.7500 -list/i=1/j=15/k=1/l=1/m=1 temp, freverse(temp) - WARNING: Listed variables have ambiguous coordinates on axes: F - DATA SET: ./data/6dfile.nc - LONGITUDE: 160.5W - LATITUDE: 5.5S - DEPTH (m): 5 - TIME: 15-MAR-1983 10:00 - E: 1 - Column 1: TEMP[D=6dfile,F=0:8] is TEMPERATURE (deg. C) - Column 2: EX#2 is FREVERSE(TEMP) - TEMP EX#2 -N / 1: 30.7500 31.3500 -N / 2: 30.9500 31.1500 -N / 3: 31.1500 30.9500 -N / 4: 31.3500 30.7500 -can dat/all - -! ConvolveM, ConvolveN -let a = esequence({0,1,1,0,1,0,0,0,,0,0,0}) -let apat = esequence({.25,.5,.25}) -list a, a[m=@spz], convolvem(a,apat), convolvem(a,{.1,.4,.4,.1}) - E: 0.5 to 12.5 - Column 1: A is ESEQUENCE({0,1,1,0,1,0,0,0,,0,0,0}) - Column 2: A[E=@SPZ:3] is ESEQUENCE({0,1,1,0,1,0,0,0,,0,0,0}) (Parzen smoothed by 3 pts on E) - Column 3: EX#3 is CONVOLVEM(A,APAT) - Column 4: EX#4 is CONVOLVEM(A,{.1,.4,.4,.1}) - A A EX#3 EX#4 -1 / 1: 0.00000 .... .... .... -2 / 2: 1.00000 0.750000 0.750000 0.800000 -3 / 3: 1.00000 0.750000 0.750000 0.600000 -4 / 4: 0.00000 0.500000 0.500000 0.500000 -5 / 5: 1.00000 0.500000 0.500000 0.400000 -6 / 6: 0.00000 0.250000 0.250000 0.100000 -7 / 7: 0.00000 0.000000 0.000000 .... -8 / 8: 0.00000 .... .... .... -9 / 9: .... .... .... .... -10 / 10: 0.00000 .... .... .... -11 / 11: 0.00000 0.000000 0.000000 .... -12 / 12: 0.00000 .... .... .... - -let b = fsequence({0,1,1,0,1,0,0,0,,0,0,0}) -let bpat = fsequence({.25,.5,.25}) -list b, b[n=@spz], convolven(b,bpat), convolven(b,{.1,.4,.4,.1}) - F: 0.5 to 12.5 - Column 1: B is FSEQUENCE({0,1,1,0,1,0,0,0,,0,0,0}) - Column 2: B[F=@SPZ:3] is FSEQUENCE({0,1,1,0,1,0,0,0,,0,0,0}) (Parzen smoothed by 3 pts on F) - Column 3: EX#3 is CONVOLVEN(B,BPAT) - Column 4: EX#4 is CONVOLVEN(B,{.1,.4,.4,.1}) - B B EX#3 EX#4 -1 / 1: 0.00000 .... .... .... -2 / 2: 1.00000 0.750000 0.750000 0.800000 -3 / 3: 1.00000 0.750000 0.750000 0.600000 -4 / 4: 0.00000 0.500000 0.500000 0.500000 -5 / 5: 1.00000 0.500000 0.500000 0.400000 -6 / 6: 0.00000 0.250000 0.250000 0.100000 -7 / 7: 0.00000 0.000000 0.000000 .... -8 / 8: 0.00000 .... .... .... -9 / 9: .... .... .... .... -10 / 10: 0.00000 .... .... .... -11 / 11: 0.00000 0.000000 0.000000 .... -12 / 12: 0.00000 .... .... .... - -! CompressM, CompressN -let a = esequence({0,1,1,,1,0,,0}) + fsequence({0,,1,,1}) -list a - VARIABLE : ESEQUENCE({0,1,1,,1,0,,0}) + FSEQUENCE({0,,1,,1}) - SUBSET : 8 by 5 points (E-F) - 1 2 3 4 5 6 7 8 - 1 2 3 4 5 6 7 8 - 1 / 1: 0.00000 1.00000 1.00000 .... 1.00000 0.00000 .... 0.00000 - 2 / 2: .... .... .... .... .... .... .... .... - 3 / 3: 1.00000 2.00000 2.00000 .... 2.00000 1.00000 .... 1.00000 - 4 / 4: .... .... .... .... .... .... .... .... - 5 / 5: 1.00000 2.00000 2.00000 .... 2.00000 1.00000 .... 1.00000 -list compressm(a) - VARIABLE : COMPRESSM(A) - SUBSET : 8 by 5 points (E-F) - 1 2 3 4 5 6 7 8 - 1 2 3 4 5 6 7 8 - 1 / 1: 0.00000 1.00000 1.00000 1.00000 0.00000 0.00000 .... .... - 2 / 2: .... .... .... .... .... .... .... .... - 3 / 3: 1.00000 2.00000 2.00000 2.00000 1.00000 1.00000 .... .... - 4 / 4: .... .... .... .... .... .... .... .... - 5 / 5: 1.00000 2.00000 2.00000 2.00000 1.00000 1.00000 .... .... -list compressn(a) - VARIABLE : COMPRESSN(A) - SUBSET : 8 by 5 points (E-F) - 1 2 3 4 5 6 7 8 - 1 2 3 4 5 6 7 8 - 1 / 1: 0.00000 1.00000 1.00000 .... 1.00000 0.00000 .... 0.00000 - 2 / 2: 1.00000 2.00000 2.00000 .... 2.00000 1.00000 .... 1.00000 - 3 / 3: 1.00000 2.00000 2.00000 .... 2.00000 1.00000 .... 1.00000 - 4 / 4: .... .... .... .... .... .... .... .... - 5 / 5: .... .... .... .... .... .... .... .... - -let mask = esequence({1,,1,,1}) + 0*L[l=101:102] -list mask - VARIABLE : ESEQUENCE({1,,1,,1}) + 0*L[L=101:102] - SUBSET : 2 by 5 points (T-E) - 101 102 - 101 102 - 1 / 1: 1.00000 1.00000 - 2 / 2: .... .... - 3 / 3: 1.00000 1.00000 - 4 / 4: .... .... - 5 / 5: 1.00000 1.00000 -list compressm_by(esequence({10,20,30,40,50}),mask) - VARIABLE : COMPRESSM_BY(ESEQUENCE({10,20,30,40,50}),MASK) - SUBSET : 2 by 5 points (T-E) - 101 102 - 101 102 - 1 / 1: 10.0000 10.0000 - 2 / 2: 30.0000 30.0000 - 3 / 3: 50.0000 50.0000 - 4 / 4: .... .... - 5 / 5: .... .... - -let mask = fsequence({1,,1,,1}) + 0*L[l=101:102] -list mask - VARIABLE : FSEQUENCE({1,,1,,1}) + 0*L[L=101:102] - SUBSET : 2 by 5 points (T-F) - 101 102 - 101 102 - 1 / 1: 1.00000 1.00000 - 2 / 2: .... .... - 3 / 3: 1.00000 1.00000 - 4 / 4: .... .... - 5 / 5: 1.00000 1.00000 -list compressn_by(fsequence({10,20,30,40,50}),mask) - VARIABLE : COMPRESSN_BY(FSEQUENCE({10,20,30,40,50}),MASK) - SUBSET : 2 by 5 points (T-F) - 101 102 - 101 102 - 1 / 1: 10.0000 10.0000 - 2 / 2: 30.0000 30.0000 - 3 / 3: 50.0000 50.0000 - 4 / 4: .... .... - 5 / 5: .... .... - -GO bn_reset bn_regrid_transforms_6d -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_transforms_6d -GO bn_regrid_transforms_6d -! bn_regrid_transforms_6d.jnl -! benchmark to test regridding transformations and syntax -! version of bn_regrid_transforms, using E and F directions. -! note with fix to ticket 2399 mode calendar applies to F axis - -use gtsa056_1_ef -set mode diag -set mode calendar:years - -define axis/f=23-jan-1982:30-jan-1982:20/unit=hour fax20 -define axis/x=120e:60w:10/unit=degrees xax10 -define grid/like=temp/f=fax20 g5day - getgrid EX#1 C: 6 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GGR1 PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAXIS - dealloc dynamic grid GGR1 PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAXIS - -set reg/x=130w:125w/y=0:1.5/e=1:2/f=23-JAN-1982:24-jan-1982/t=21-JAN-1982/z=5 - -use gtsa056_1_ef !kob 4/99 - -stat temp[g=g5day] - temp[g=g5day@ave] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=1982@ITP,D=1] - eval EX#1 C: 5 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - strip regrid on F: TEMP --> G5DAY @LIN - reading TEMP M:239 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - regrid TEMP M:209 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - strip regrid on F: TEMP --> G5DAY @AVE - found TEMP M:239 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - regrid TEMP M:191 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - doing --> EX#1[T=1982@ITP,D=1] - - TEMP[G=G5DAY] - TEMP[G=G5DAY@AVE] - LONGITUDE: 130W to 125W - LATITUDE: 0 to 1.5N - DEPTH (m): 5 - TIME: 1982 (interpolated) - E: 1 to 2 - FORECAST: 1982 to 1982 - DATA SET: ./data/gtsa056_1_ef.nc - - Total # of data points: 120 (5*6*1*1*2*2) - # flagged as bad data: 0 - Minimum value: -1.7333 - Maximum value: 2 - Mean value: 0.13333 (unweighted average) - Standard deviation: 1.8745 - -! basic regrid tests -LIST temp[g=g5day@ave] - -DELETE EX#1 M:178 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - -DELETE EX#1 M:206 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: -999 -999 M: 1 2 N: 1 2 - dealloc dynamic grid G5DAY PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAX20 - -DELETE TEMP M:191 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - -DELETE TEMP M:209 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=1982@ITP,D=1] - eval EX#1 C: 5 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - strip regrid on F: TEMP --> G5DAY @AVE - found TEMP M:239 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - regrid TEMP M:209 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - doing --> TEMP[T=1982@ITP,D=1] - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY on F@AVE - FILENAME : gtsa056_1_ef.nc - SUBSET : 5 by 6 by 2 by 2 points (LONGITUDE-LATITUDE-E-FORECAST) - DEPTH (m): 5 - TIME : 1982 (interpolated) - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - ---- N:1 F: 1982 - ---- M:1 E: 1 - 1.5N / 46: 32.3553 32.3552 32.5032 32.8652 33.3285 - 1.17N / 45: 32.1766 32.1710 32.2834 32.5970 33.0244 - 0.83N / 44: 32.0256 32.0016 32.0631 32.3109 32.6873 - 0.5N / 43: 31.9306 31.8902 31.8887 32.0374 32.3408 - 0.17N / 42: 31.8944 31.8343 31.7825 31.8263 32.0336 - 0.17S / 41: 31.9538 31.8657 31.7716 31.7285 31.8282 - ---- M:2 E: 2 - 1.5N / 46: 38.3553 38.3552 38.5032 38.8652 39.3285 - 1.17N / 45: 38.1766 38.1710 38.2834 38.5970 39.0244 - 0.83N / 44: 38.0256 38.0016 38.0631 38.3109 38.6873 - 0.5N / 43: 37.9306 37.8902 37.8887 38.0374 38.3408 - 0.17N / 42: 37.8944 37.8343 37.7825 37.8263 38.0336 - 0.17S / 41: 37.9538 37.8657 37.7716 37.7285 37.8282 - ---- N:2 F: 1982 - ---- M:1 E: 1 - 1.5N / 46: 37.7553 37.7552 37.9032 38.2652 38.7285 - 1.17N / 45: 37.5766 37.5710 37.6834 37.9970 38.4244 - 0.83N / 44: 37.4256 37.4016 37.4631 37.7109 38.0873 - 0.5N / 43: 37.3306 37.2902 37.2887 37.4374 37.7408 - 0.17N / 42: 37.2944 37.2343 37.1825 37.2263 37.4336 - 0.17S / 41: 37.3538 37.2657 37.1716 37.1285 37.2282 - ---- M:2 E: 2 - 1.5N / 46: 43.7553 43.7552 43.9032 44.2652 44.7285 - 1.17N / 45: 43.5766 43.5710 43.6834 43.9970 44.4244 - 0.83N / 44: 43.4256 43.4016 43.4631 43.7109 44.0873 - 0.5N / 43: 43.3306 43.2902 43.2887 43.4374 43.7408 - 0.17N / 42: 43.2944 43.2343 43.1825 43.2263 43.4336 - 0.17S / 41: 43.3538 43.2657 43.1716 43.1285 43.2282 -LIST temp[g=g5day] - dealloc dynamic grid G5DAY PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAX20 - -DELETE TEMP M:191 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: -999 -999 M: 1 2 N: 1 2 - -DELETE TEMP M:209 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=1982@ITP,D=1] - eval EX#1 C: 5 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - strip regrid on F: TEMP --> G5DAY @LIN - found TEMP M:239 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - regrid TEMP M:209 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - doing --> TEMP[T=1982@ITP,D=1] - VARIABLE : TEMPERATURE (deg. C) - regrid: G5DAY - FILENAME : gtsa056_1_ef.nc - SUBSET : 5 by 6 by 2 by 2 points (LONGITUDE-LATITUDE-E-FORECAST) - DEPTH (m): 5 - TIME : 1982 (interpolated) - 129.5W 128.5W 127.5W 126.5W 125.5W - 101 102 103 104 105 - ---- N:1 F: 1982 - ---- M:1 E: 1 - 1.5N / 46: 34.3553 34.3552 34.5032 34.8652 35.3285 - 1.17N / 45: 34.1766 34.1710 34.2834 34.5970 35.0244 - 0.83N / 44: 34.0256 34.0016 34.0631 34.3109 34.6873 - 0.5N / 43: 33.9306 33.8902 33.8887 34.0374 34.3408 - 0.17N / 42: 33.8944 33.8343 33.7825 33.8263 34.0336 - 0.17S / 41: 33.9538 33.8657 33.7716 33.7285 33.8282 - ---- M:2 E: 2 - 1.5N / 46: 40.3553 40.3552 40.5032 40.8652 41.3285 - 1.17N / 45: 40.1766 40.1710 40.2834 40.5970 41.0244 - 0.83N / 44: 40.0256 40.0016 40.0631 40.3109 40.6873 - 0.5N / 43: 39.9306 39.8902 39.8887 40.0374 40.3408 - 0.17N / 42: 39.8944 39.8343 39.7825 39.8263 40.0336 - 0.17S / 41: 39.9538 39.8657 39.7716 39.7285 39.8282 - ---- N:2 F: 1982 - ---- M:1 E: 1 - 1.5N / 46: 36.0220 36.0219 36.1698 36.5318 36.9952 - 1.17N / 45: 35.8433 35.8377 35.9501 36.2637 36.6910 - 0.83N / 44: 35.6923 35.6682 35.7298 35.9776 36.3539 - 0.5N / 43: 35.5973 35.5568 35.5554 35.7040 36.0075 - 0.17N / 42: 35.5610 35.5010 35.4491 35.4929 35.7003 - 0.17S / 41: 35.6205 35.5323 35.4383 35.3952 35.4948 - ---- M:2 E: 2 - 1.5N / 46: 42.0220 42.0219 42.1698 42.5318 42.9952 - 1.17N / 45: 41.8433 41.8377 41.9501 42.2637 42.6910 - 0.83N / 44: 41.6923 41.6682 41.7298 41.9776 42.3539 - 0.5N / 43: 41.5973 41.5568 41.5554 41.7040 42.0075 - 0.17N / 42: 41.5610 41.5010 41.4491 41.4929 41.7003 - 0.17S / 41: 41.6205 41.5323 41.4383 41.3952 41.4948 - -! unspecified regions -SET MODE IGNORE ! V.5 change -canc reg -set reg/n=1:3/t=21-JAN-1982/z=5 ! x,y,e unspecified - -canc reg -set reg/i=101:105/j=41:42/t=21-JAN-1982/z=5 ! e,f unspecified - -SET MODE/LAST IGNORE ! V.5 change - -! plot verifications -set mode interp ! regridding is also an interpolation -cancel viewports -set window/size=.5/aspect=.4 1 - -! E axis -use gtsa056_1_ef !kob 4/99 -set region/x=180E/y=0/f=23-JAN-1982/t=21-JAN-1982/z=5 -plot temp - dealloc dynamic grid G5DAY PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAX20 - -DELETE TEMP M:191 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: -999 -999 M: 1 2 N: 1 2 - -DELETE TEMP M:209 dset: 1 I: 101 105 J: 41 46 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GGR1 PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAXIS - strip --> EX#1[F=1982@ITP,D=1] - strip --> EX#1[T=1982@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - strip --> EX#1[X=180E@ITP,D=1] - eval EX#1 C: 8 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - reading TEMP M:209 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - doing --> TEMP[X=180E@ITP,D=1] - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=1982@ITP,D=1] - doing --> TEMP[F=1982@ITP,D=1] -setting up plot -PPL plot 867 complete -plot/over temp[g=g5day] - dealloc dynamic grid GGR1 PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAXIS - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=1982@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - strip --> EX#1[X=180E@ITP,D=1] - eval EX#1 C: 7 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - strip regrid on F: TEMP --> G5DAY @LIN - found TEMP M:209 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - regrid TEMP M:158 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - doing --> TEMP[X=180E@ITP,D=1] - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=1982@ITP,D=1] -setting up plot -PPL plot 868 complete -plot/over temp[g=g5day@ave] - dealloc dynamic grid G5DAY PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAX20 - -DELETE TEMP M:158 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - -DELETE TEMP M:172 dset: 1 I: -999 -999 J: -999 -999 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - -DELETE TEMP M:181 dset: 1 I: -999 -999 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - -DELETE TEMP M:225 dset: 1 I: -999 -999 J: -999 -999 K: 1 1 L: -999 -999 M: 1 2 N: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=1982@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - strip --> EX#1[X=180E@ITP,D=1] - eval EX#1 C: 7 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - strip regrid on F: TEMP --> G5DAY @AVE - found TEMP M:209 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - regrid TEMP M:225 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - doing --> TEMP[X=180E@ITP,D=1] - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=1982@ITP,D=1] -setting up plot -PPL plot 869 complete -plot/over temp[g=g5day@asn] - dealloc dynamic grid G5DAY PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAX20 - -DELETE TEMP M:158 dset: 1 I: -999 -999 J: -999 -999 K: 1 1 L: -999 -999 M: 1 2 N: 1 1 - -DELETE TEMP M:172 dset: 1 I: -999 -999 J: -999 -999 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - -DELETE TEMP M:181 dset: 1 I: -999 -999 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - -DELETE TEMP M:225 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=1982@ITP,D=1] - strip --> EX#1[Y=0@ITP,D=1] - strip --> EX#1[X=180E@ITP,D=1] - eval EX#1 C: 7 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - strip regrid on F: TEMP --> G5DAY @ASN - found TEMP M:209 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 2 - regrid TEMP M:225 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - doing --> TEMP[X=180E@ITP,D=1] - doing --> TEMP[Y=0@ITP,D=1] - doing --> TEMP[T=1982@ITP,D=1] -setting up plot -PPL plot 870 complete - -! F axis -set region/x=180/y=20s:20n/e=2/t=21-JAN-1982/z=5 -plot temp - dealloc dynamic grid G5DAY PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAX20 - -DELETE TEMP M:158 dset: 1 I: -999 -999 J: -999 -999 K: 1 1 L: -999 -999 M: 1 2 N: 1 1 - -DELETE TEMP M:172 dset: 1 I: -999 -999 J: -999 -999 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - -DELETE TEMP M:181 dset: 1 I: -999 -999 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - -DELETE TEMP M:225 dset: 1 I: 50 51 J: 41 42 K: 1 1 L: 2 3 M: 1 2 N: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GGR1 PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAXIS - strip --> EX#1[F=1982@ITP,D=1] - strip --> EX#1[T=1982@ITP,D=1] - strip --> EX#1[X=180E@ITP,D=1] - eval EX#1 C: 7 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 2 - reading TEMP M:225 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 2 - doing --> TEMP[X=180E@ITP,D=1] - doing --> TEMP[T=1982@ITP,D=1] - doing --> TEMP[F=1982@ITP,D=1] -setting up plot -PPL plot 871 complete -plot/over temp[g=g5day] - dealloc dynamic grid GGR1 PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAXIS - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=1982@ITP,D=1] - strip --> EX#1[X=180E@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 1 - strip regrid on F: TEMP --> G5DAY @LIN - found TEMP M:225 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 2 - regrid TEMP M:177 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 1 - doing --> TEMP[X=180E@ITP,D=1] - doing --> TEMP[T=1982@ITP,D=1] -setting up plot -PPL plot 872 complete -plot/over temp[g=g5day@ave] - dealloc dynamic grid G5DAY PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAX20 - -DELETE TEMP M:156 dset: 1 I: -999 -999 J: 1 84 K: 1 1 L: -999 -999 M: 2 2 N: 1 1 - -DELETE TEMP M:177 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 1 - -DELETE TEMP M:224 dset: 1 I: -999 -999 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=1982@ITP,D=1] - strip --> EX#1[X=180E@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 1 - strip regrid on F: TEMP --> G5DAY @AVE - found TEMP M:225 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 2 - regrid TEMP M:224 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 1 - doing --> TEMP[X=180E@ITP,D=1] - doing --> TEMP[T=1982@ITP,D=1] -setting up plot -PPL plot 873 complete -plot/over temp[g=g5day@asn] - dealloc dynamic grid G5DAY PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAX20 - -DELETE TEMP M:156 dset: 1 I: -999 -999 J: 1 84 K: 1 1 L: -999 -999 M: 2 2 N: 1 1 - -DELETE TEMP M:177 dset: 1 I: -999 -999 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 1 - -DELETE TEMP M:224 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - strip --> EX#1[T=1982@ITP,D=1] - strip --> EX#1[X=180E@ITP,D=1] - eval EX#1 C: 6 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 1 - strip regrid on F: TEMP --> G5DAY @ASN - found TEMP M:225 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 2 - regrid TEMP M:224 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 1 - doing --> TEMP[X=180E@ITP,D=1] - doing --> TEMP[T=1982@ITP,D=1] -setting up plot -PPL plot 874 complete - -set mode/last interp -cancel region - -! test 2D regrid -define axis/e=1.1:2.1:1 eoffset -define axis/e=2.5/npoints=1 e1pt -define axis/e=1.5:2.5:1 e2pt -define axis/e=1.5:2.5:.5 e4pt - -define axis/f=15-jan-1982:15-mar-1982:4/unit=day fax4day -define axis/f=21-jan-1982/npoints=1/unit=day f1pt -define axis/f=21-jan-1982:25-jan-1982/npoints=48/unit=hour f2pt -define axis/f=15-jan-1982:15-mar-1982:96/unit=hour fax4day - - -let a1 = _e[ge=e1pt]+_f[gf=f1pt] -let a2 = _e[ge=e2pt]+_f[gf=f2pt] - -list a1[ge=eoffset@ave, gf=fax4day@ave] - dealloc dynamic grid G5DAY PSXT PSYT5_89 PSZT1_2 TIME28 EAXIS FAX20 - -DELETE TEMP M:156 dset: 1 I: -999 -999 J: 1 84 K: 1 1 L: -999 -999 M: 2 2 N: 1 1 - -DELETE TEMP M:177 dset: 1 I: -999 -999 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 1 - -DELETE TEMP M:224 dset: 1 I: 50 51 J: 1 84 K: 1 1 L: 2 3 M: 2 2 N: 1 1 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A1 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G087) NORMAL NORMAL NORMAL NORMAL NORMAL F1PT - dealloc dynamic grid (G087) NORMAL NORMAL NORMAL NORMAL NORMAL F1PT - allocate dynamic grid (G087) NORMAL NORMAL NORMAL NORMAL E1PT NORMAL - dealloc dynamic grid (G087) NORMAL NORMAL NORMAL NORMAL E1PT NORMAL - allocate dynamic grid (G087) NORMAL NORMAL NORMAL NORMAL E1PT F1PT - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - strip regrid on E: A1 --> (G101) @AVE - strip regrid on F: A1 --> ENTERMED @AVE - eval A1 C: 8 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: 1 1 - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL E1PT NORMAL - pseudo _E M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: -999 -999 - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL NORMAL F1PT - pseudo _F M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: 1 1 - -DELETE _F M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: 1 1 - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL NORMAL F1PT - -DELETE _E M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: -999 -999 - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL E1PT NORMAL - regrid A1 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: 1 16 - regrid A1 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - -DELETE A1 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: 1 16 - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - VARIABLE : _E[GE=E1PT]+_F[GF=F1PT] - regrid: 1 delta on E@AVE, 96 hour on F@AVE - SUBSET : 2 by 16 points (E-FORECAST) - 1.1 2.1 - 1 2 - 15-JAN-1982 00 / 1: .... .... - 19-JAN-1982 00 / 2: .... 29593.5 - 23-JAN-1982 00 / 3: .... 29593.5 - 27-JAN-1982 00 / 4: .... .... - 31-JAN-1982 00 / 5: .... .... - 04-FEB-1982 00 / 6: .... .... - 08-FEB-1982 00 / 7: .... .... - 12-FEB-1982 00 / 8: .... .... - 16-FEB-1982 00 / 9: .... .... - 20-FEB-1982 00 / 10: .... .... - 24-FEB-1982 00 / 11: .... .... - 28-FEB-1982 00 / 12: .... .... - 04-MAR-1982 00 / 13: .... .... - 08-MAR-1982 00 / 14: .... .... - 12-MAR-1982 00 / 15: .... .... - 16-MAR-1982 00 / 16: .... .... -list a1[ge=eoffset@sum, gf=fax4day@sum] - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - -DELETE A1 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - strip regrid on E: A1 --> (G101) @SUM - strip regrid on F: A1 --> ENTERMED @SUM - found A1 M:156 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: 1 1 - regrid A1 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: 1 16 - regrid A1 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - -DELETE A1 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: 1 16 - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - VARIABLE : _E[GE=E1PT]+_F[GF=F1PT] - regrid: 1 delta on E@SUM, 96 hour on F@SUM - SUBSET : 2 by 16 points (E-FORECAST) - 1.1 2.1 - 1 2 - 15-JAN-1982 00 / 1: .... .... - 19-JAN-1982 00 / 2: .... 8878.05 - 23-JAN-1982 00 / 3: .... 8878.05 - 27-JAN-1982 00 / 4: .... .... - 31-JAN-1982 00 / 5: .... .... - 04-FEB-1982 00 / 6: .... .... - 08-FEB-1982 00 / 7: .... .... - 12-FEB-1982 00 / 8: .... .... - 16-FEB-1982 00 / 9: .... .... - 20-FEB-1982 00 / 10: .... .... - 24-FEB-1982 00 / 11: .... .... - 28-FEB-1982 00 / 12: .... .... - 04-MAR-1982 00 / 13: .... .... - 08-MAR-1982 00 / 14: .... .... - 12-MAR-1982 00 / 15: .... .... - 16-MAR-1982 00 / 16: .... .... -list a1[ge=eoffset@var, gf=fax4day@var] - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - -DELETE A1 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - strip regrid on E: A1 --> (G101) @VAR - strip regrid on F: A1 --> ENTERMED @VAR - found A1 M:156 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: 1 1 - regrid A1 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: 1 16 - regrid A1 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - -DELETE A1 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: 1 16 - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - VARIABLE : Variance of _E[GE=E1PT]+_F[GF=F1PT] - regrid: 1 delta on E@VAR, 96 hour on F@VAR - SUBSET : 2 by 16 points (E-FORECAST) - 1.1 2.1 - 1 2 - 15-JAN-1982 00 / 1:........ - 19-JAN-1982 00 / 2:........ - 23-JAN-1982 00 / 3:........ - 27-JAN-1982 00 / 4:........ - 31-JAN-1982 00 / 5:........ - 04-FEB-1982 00 / 6:........ - 08-FEB-1982 00 / 7:........ - 12-FEB-1982 00 / 8:........ - 16-FEB-1982 00 / 9:........ - 20-FEB-1982 00 / 10:........ - 24-FEB-1982 00 / 11:........ - 28-FEB-1982 00 / 12:........ - 04-MAR-1982 00 / 13:........ - 08-MAR-1982 00 / 14:........ - 12-MAR-1982 00 / 15:........ - 16-MAR-1982 00 / 16:........ - -list a2[ge=eoffset@ave, gf=fax4day@ave] - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - -DELETE A1 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A2 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL NORMAL F2PT - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL NORMAL F2PT - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL E2PT NORMAL - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL E2PT NORMAL - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL E2PT F2PT - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - strip regrid on E: A2 --> (G089) @AVE - strip regrid on F: A2 --> ENTERMED @AVE - eval A2 C: 8 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 48 - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL E2PT NORMAL - pseudo _E M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - allocate dynamic grid (G106) NORMAL NORMAL NORMAL NORMAL NORMAL F2PT - pseudo _F M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: 1 48 - -DELETE _F M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: 1 48 - dealloc dynamic grid (G106) NORMAL NORMAL NORMAL NORMAL NORMAL F2PT - -DELETE _E M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL E2PT NORMAL - regrid A2 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - regrid A2 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - -DELETE A2 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - VARIABLE : _E[GE=E2PT]+_F[GF=F2PT] - regrid: 1 delta on E@AVE, 96 hour on F@AVE - SUBSET : 2 by 16 points (E-FORECAST) - 1.1 2.1 - 1 2 - 15-JAN-1982 00 / 1: .... .... - 19-JAN-1982 00 / 2: 710186. 710186. - 23-JAN-1982 00 / 3: 710234. 710234. - 27-JAN-1982 00 / 4: 710282. 710282. - 31-JAN-1982 00 / 5: .... .... - 04-FEB-1982 00 / 6: .... .... - 08-FEB-1982 00 / 7: .... .... - 12-FEB-1982 00 / 8: .... .... - 16-FEB-1982 00 / 9: .... .... - 20-FEB-1982 00 / 10: .... .... - 24-FEB-1982 00 / 11: .... .... - 28-FEB-1982 00 / 12: .... .... - 04-MAR-1982 00 / 13: .... .... - 08-MAR-1982 00 / 14: .... .... - 12-MAR-1982 00 / 15: .... .... - 16-MAR-1982 00 / 16: .... .... -list a2[ge=eoffset@sum, gf=fax4day@sum] - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - -DELETE A2 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - strip regrid on E: A2 --> (G089) @SUM - strip regrid on F: A2 --> ENTERMED @SUM - found A2 M:154 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 48 - regrid A2 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - regrid A2 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - -DELETE A2 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - VARIABLE : _E[GE=E2PT]+_F[GF=F2PT] - regrid: 1 delta on E@SUM, 96 hour on F@SUM - SUBSET : 2 by 16 points (E-FORECAST) - 1.1 2.1 - 1 2 - 15-JAN-1982 00 / 1: .... .... - 19-JAN-1982 00 / 2: 213056. 355093. - 23-JAN-1982 00 / 3: 20028585. 33381003. - 27-JAN-1982 00 / 4: 213084. 355141. - 31-JAN-1982 00 / 5: .... .... - 04-FEB-1982 00 / 6: .... .... - 08-FEB-1982 00 / 7: .... .... - 12-FEB-1982 00 / 8: .... .... - 16-FEB-1982 00 / 9: .... .... - 20-FEB-1982 00 / 10: .... .... - 24-FEB-1982 00 / 11: .... .... - 28-FEB-1982 00 / 12: .... .... - 04-MAR-1982 00 / 13: .... .... - 08-MAR-1982 00 / 14: .... .... - 12-MAR-1982 00 / 15: .... .... - 16-MAR-1982 00 / 16: .... .... -list a2[ge=eoffset@var, gf=fax4day@var] - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - -DELETE A2 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - strip regrid on E: A2 --> (G089) @VAR - strip regrid on F: A2 --> ENTERMED @VAR - found A2 M:154 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 48 - regrid A2 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - regrid A2 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - -DELETE A2 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - VARIABLE : Variance of _E[GE=E2PT]+_F[GF=F2PT] - regrid: 1 delta on E@VAR, 96 hour on F@VAR - SUBSET : 2 by 16 points (E-FORECAST) - 1.1 2.1 - 1 2 - 15-JAN-1982 00 / 1: .... .... - 19-JAN-1982 00 / 2: .... .... - 23-JAN-1982 00 / 3: .... 0.000000 - 27-JAN-1982 00 / 4: .... .... - 31-JAN-1982 00 / 5: .... .... - 04-FEB-1982 00 / 6: .... .... - 08-FEB-1982 00 / 7: .... .... - 12-FEB-1982 00 / 8: .... .... - 16-FEB-1982 00 / 9: .... .... - 20-FEB-1982 00 / 10: .... .... - 24-FEB-1982 00 / 11: .... .... - 28-FEB-1982 00 / 12: .... .... - 04-MAR-1982 00 / 13: .... .... - 08-MAR-1982 00 / 14: .... .... - 12-MAR-1982 00 / 15: .... .... - 16-MAR-1982 00 / 16: .... .... - -! 1/00 additions to check details of @MIN,@MAX bevavior - -let a1 = _e[ge=e1pt] - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET FAX4DAY - -DELETE A2 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 16 - -DELETE A2 M:154 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: 1 48 - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL E2PT F2PT - -DELETE A1 M:156 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: 1 1 - dealloc dynamic grid (G087) NORMAL NORMAL NORMAL NORMAL E1PT F1PT -let a2 = _e[ge=e2pt] -let a4 = _e[ge=e4pt] - -list a1[ge=eoffset@max] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A1 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G087) NORMAL NORMAL NORMAL NORMAL E1PT NORMAL - dealloc dynamic grid (G087) NORMAL NORMAL NORMAL NORMAL E1PT NORMAL - allocate dynamic grid (G087) NORMAL NORMAL NORMAL NORMAL E1PT NORMAL - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - strip regrid on E: A1 --> (G101) @MAX - eval A1 C: 7 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: -999 -999 - allocate dynamic grid (G087) NORMAL NORMAL NORMAL NORMAL E1PT NORMAL - pseudo _E M:156 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: -999 -999 - dealloc dynamic grid (G087) NORMAL NORMAL NORMAL NORMAL E1PT NORMAL - regrid A1 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - VARIABLE : _E[GE=E1PT] - regrid: 1 delta on E@MAX - SUBSET : 2 points (E) - 1.1 / 1: .... - 2.1 / 2: 2.50000 -list a2[ge=eoffset@max] - -DELETE _E M:156 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 1 N: -999 -999 - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - -DELETE A1 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A2 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL E2PT NORMAL - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL E2PT NORMAL - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL E2PT NORMAL - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - strip regrid on E: A2 --> (G089) @MAX - eval A2 C: 7 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - allocate dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL E2PT NORMAL - pseudo _E M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - dealloc dynamic grid (G101) NORMAL NORMAL NORMAL NORMAL E2PT NORMAL - regrid A2 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - VARIABLE : _E[GE=E2PT] - regrid: 1 delta on E@MAX - SUBSET : 2 points (E) - 1.1 / 1: 1.50000 - 2.1 / 2: 2.50000 -list a4[ge=eoffset@max] - -DELETE _E M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - -DELETE A2 M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A4 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL E4PT NORMAL - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL E4PT NORMAL - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL E4PT NORMAL - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - strip regrid on E: A4 --> (G092) @MAX - eval A4 C: 7 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 3 N: -999 -999 - allocate dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL E4PT NORMAL - pseudo _E M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 3 N: -999 -999 - dealloc dynamic grid (G089) NORMAL NORMAL NORMAL NORMAL E4PT NORMAL - regrid A4 M:228 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - VARIABLE : _E[GE=E4PT] - regrid: 1 delta on E@MAX - SUBSET : 2 points (E) - 1.1 / 1: 1.50000 - 2.1 / 2: 2.50000 -list a4[ge=eoffset@min] - -DELETE _E M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 3 N: -999 -999 - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - -DELETE A4 M:228 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - strip regrid on E: A4 --> (G092) @MIN - found A4 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 3 N: -999 -999 - regrid A4 M:228 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - VARIABLE : _E[GE=E4PT] - regrid: 1 delta on E@MIN - SUBSET : 2 points (E) - 1.1 / 1: 1.50000 - 2.1 / 2: 2.00000 -list a4[ge=eoffset@sum] ! 5+5.5+6+6.5=23 - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - -DELETE A4 M:228 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - strip regrid on E: A4 --> (G092) @SUM - found A4 M:224 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 3 N: -999 -999 - regrid A4 M:228 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - VARIABLE : _E[GE=E4PT] - regrid: 1 delta on E@SUM - SUBSET : 2 points (E) - 1.1 / 1: 1.05000 - 2.1 / 2: 4.20000 - -! time axes with different encodings -define axis/f=1-jan-1990:5-jan-1990:1/units=days eday -define axis/f=1-jan-1990:5-jan-1990:24/units=hours ehour -let afcst = _f[gf=eday] -list afcst - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL EOFFSET NORMAL - -DELETE A4 M:228 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 2 N: -999 -999 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid AFCST C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL NORMAL EDAY - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL NORMAL EDAY - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL NORMAL EDAY - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL NORMAL EDAY - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: 1 5 - eval AFCST C: 6 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: 1 5 - allocate dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL NORMAL EDAY - pseudo _F M:228 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: 1 5 - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL NORMAL EDAY - VARIABLE : _F[GF=EDAY] - SUBSET : 5 points (FORECAST) - 01-JAN-1990 00 / 1: 32493.0 - 02-JAN-1990 00 / 2: 32494.0 - 03-JAN-1990 00 / 3: 32495.0 - 04-JAN-1990 00 / 4: 32496.0 - 05-JAN-1990 00 / 5: 32497.0 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G092) - GRID (G092) - name axis # pts start end subset - normal X - normal Y - normal Z - normal T - normal E - EDAY FORECAST 5 r 01-JAN-1990 00:00 05-JAN-1990 00:00 full -list afcst[gf=ehour@max] - -DELETE _F M:228 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: 1 5 - dealloc dynamic grid (G092) NORMAL NORMAL NORMAL NORMAL NORMAL EDAY - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G106) NORMAL NORMAL NORMAL NORMAL NORMAL EHOUR - dealloc dynamic grid (G106) NORMAL NORMAL NORMAL NORMAL NORMAL EHOUR - allocate dynamic grid (G106) NORMAL NORMAL NORMAL NORMAL NORMAL EHOUR - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: 1 5 - allocate dynamic grid (G106) NORMAL NORMAL NORMAL NORMAL NORMAL EHOUR - strip regrid on F: AFCST --> (G106) @MAX - found AFCST M:177 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: 1 5 - regrid AFCST M:228 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: 1 5 - dealloc dynamic grid (G106) NORMAL NORMAL NORMAL NORMAL NORMAL EHOUR - VARIABLE : _F[GF=EDAY] - regrid: 24 hour on F@MAX - SUBSET : 5 points (FORECAST) - 01-JAN-1990 00 / 1: 32493.0 - 02-JAN-1990 00 / 2: 32494.0 - 03-JAN-1990 00 / 3: 32495.0 - 04-JAN-1990 00 / 4: 32496.0 - 05-JAN-1990 00 / 5: 32497.0 -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G106) - GRID (G106) - name axis # pts start end subset - normal X - normal Y - normal Z - normal T - normal E - EHOUR FORECAST 5 r 01-JAN-1990 00:00 05-JAN-1990 00:00 full - -set mode/last diag -set mode/last calendar - -GO bn_reset bn_aggregate_e -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_aggregate_e -GO bn_aggregate_e -! bn_aggregate_e.jnl -! using the DEFINE DATA/AGGREGATE/E command -! Datasets share sst, but only ens1 has airt. - -! v6.95+ 11/15 *sh* -- /T is now the default orientation -! v6.98 12/15 *sh -- modified so that the sequence number of each -! dataset in the aggregation is not also its Ferret dataset number -! Allowing them to be the same was hiding bugs - -! V741 6/18 Global attributes of member files are promoted to variables -! on the E axis. Note auto-generated grid names changedfrom -! previous benchmark runs - -set mode diag - -use ens1, ens2, ens3, ens4 -define data/agg/E fourfiles = ens1, ens3, ens2, ens4 - -! The grid of SST is known. -! global attributes are promoted to varibles on e-axis - -show data fourfiles - currently SET data sets: - 5> fourfiles (default) Ensemble aggregation - name title I J K L M N - SST SST_IN 1:10 1:9 ... 1:12 1:4 ... - ------------------------------ - MEMBER_DSET - Member dataset names in Ensembl ... ... ... ... 1:4 ... - TITLE Global Att *title* in Ensemble ... ... ... ... 1:4 ... - HISTORY Global Att *history* in Ensembl ... ... ... ... 1:4 ... - CONVENTIONS - Global Att *Conventions* in Ens ... ... ... ... 1:4 ... - MODEL Global Att *MODEL* in Ensemble ... ... ... ... 1:4 ... - NUMBER Global Att *NUMBER* in Ensemble ... ... ... ... 1:4 ... - - -list/i=3 sst[T=@ave] - getgrid EX#1 C: 5 dset: 5 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G107) COADSX116_COADSY52_6NORMAL TIME29 ENSEMBLE NORMAL - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 5 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 M: 1 4 N: -999 -999 - strip --> SST[T=01-JAN00:45:31-DEC06:34@AVE,D=5] - strip aggregate gathering SST on E axis: 1 4 dset: 5 - reading SST M:239 dset: 1 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - doing aggregate gathering SST on E axis: 1 1 dset: 1 - -DELETE SST M:239 dset: 1 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - reading SST M:239 dset: 3 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - doing aggregate gathering SST on E axis: 2 2 dset: 3 - -DELETE SST M:239 dset: 3 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - reading SST M:239 dset: 2 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - doing aggregate gathering SST on E axis: 3 3 dset: 2 - -DELETE SST M:239 dset: 2 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - reading SST M:239 dset: 4 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - doing aggregate gathering SST on E axis: 4 4 dset: 4 - -DELETE SST M:239 dset: 4 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - doing --> SST[T=01-JAN00:45:31-DEC06:34@AVE,D=5] - final --> SST[T=01-JAN00:45:31-DEC06:34@AVE,D=5] - VARIABLE : SST_IN (Deg C) - DATA SET : Ensemble series of 4 datasets patterned on ens1 - FILENAME : fourfiles - SUBSET : 9 by 4 points (LATITUDE-E (realization)) - LONGITUDE: 105W - TIME : 01-JAN 00:45 to 31-DEC 06:34 (averaged) - 13N 15N 17N 19N 21N 23N 25N 27N 29N - 1 2 3 4 5 6 7 8 9 - 1 / 1: 28.513 28.441 27.892 27.457 26.726 25.561 .... .... .... - 2 / 2: 85.539 85.323 83.676 82.370 80.177 76.683 .... .... .... - 3 / 3: 57.026 56.882 55.784 54.913 53.452 51.122 .... .... .... - 4 / 4: 114.051 113.765 111.568 109.826 106.903 102.245 .... .... .... - -show memory/all ! show memory-resident variables before canceling dataset - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 4.32 Kb - Current cache: 4.03 Kb -all data in memory: - SST[D=fourfiles] YE mr:239 size:0.58 Kb - 3/106W 1/12N ... / ... ... /01-JAN 00:45 1/0.5 ... / ... - 3/104W 9/30N ... / ... ... /31-DEC 06:34 4/4.5 ... / ... - AVE - SST[D=fourfiles] YTE mr:225 size:3.46 Kb - 3/106W 1/12N ... / ... 1/01-JAN 00:45 1/0.5 ... / ... - 3/104W 9/30N ... / ... 12/31-DEC 06:34 4/4.5 ... / ... - -cancel data fourfiles - dealloc dynamic grid (G107) COADSX116_COADSY52_6NORMAL TIME29 ENSEMBLE NORMAL - canceling dset fourfiles - -DELETE SST M:225 dset: 5 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 M: 1 4 N: -999 -999 - -DELETE SST M:239 dset: 5 I: 3 3 J: 1 9 K: -999 -999 L: -999 -999 M: 1 4 N: -999 -999 -show memory/all ! show memory-resident variables after canceling dataset - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 4.32 Kb - Current cache: 0 Kb -all data in memory: - -! 12/15 now do again adding COADS to de-align toe dset #s from the sequence #s -cancel data/all - canceling dset ./data/ens1.nc - canceling dset ./data/ens2.nc - canceling dset ./data/ens3.nc - canceling dset ./data/ens4.nc -use coads_climatology -use ens1, ens2, ens3, ens4 -define data/agg/E/hide fourfiles = ens1, ens3, ens2, ens4 -! confirm that it isn't COADS that got hidden -show data - currently SET data sets: - 1> ./data/coads_climatology.cdf - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - - 6> fourfiles (default) Ensemble aggregation - name title I J K L M N - SST SST_IN 1:10 1:9 ... 1:12 1:4 ... - ------------------------------ - MEMBER_DSET - Member dataset names in Ensembl ... ... ... ... 1:4 ... - TITLE Global Att *title* in Ensemble ... ... ... ... 1:4 ... - HISTORY Global Att *history* in Ensembl ... ... ... ... 1:4 ... - CONVENTIONS - Global Att *Conventions* in Ens ... ... ... ... 1:4 ... - MODEL Global Att *MODEL* in Ensemble ... ... ... ... 1:4 ... - NUMBER Global Att *NUMBER* in Ensemble ... ... ... ... 1:4 ... - -cancel data fourfiles - canceling dset ./data/ens1.nc - canceling dset ./data/ens3.nc - canceling dset ./data/ens2.nc - canceling dset ./data/ens4.nc - canceling dset fourfiles -show data/brief/all/hidden - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - -! Create airt in the other datasets by LET/D definitions. -use ens1, ens2, ens3, ens4 -let/d=ens2 airt = sst + 1 -let/d=ens3 airt = sst + 1 -let/d=ens4 airt = sst + 1 - -ENSEMBLE fourfiles = ens1, ens3, ens2, ens4 - getgrid AIRT C: 5 dset: 4 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GOH1 COADSX116_COADSY52_6NORMAL TIME29 - getgrid AIRT C: 5 dset: 3 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GOH1 COADSX116_COADSY52_6NORMAL TIME29 - getgrid AIRT C: 5 dset: 5 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GOH1 COADSX116_COADSY52_6NORMAL TIME29 -show data fourfiles - currently SET data sets: - 6> fourfiles (default) Ensemble aggregation - name title I J K L M N - SST SST_IN 1:10 1:9 ... 1:12 1:4 ... - AIRT AIR TEMPERATURE 1:10 1:9 ... 1:12 1:4 ... - ------------------------------ - MEMBER_DSET - Member dataset names in Ensembl ... ... ... ... 1:4 ... - TITLE Global Att *title* in Ensemble ... ... ... ... 1:4 ... - HISTORY Global Att *history* in Ensembl ... ... ... ... 1:4 ... - CONVENTIONS - Global Att *Conventions* in Ens ... ... ... ... 1:4 ... - MODEL Global Att *MODEL* in Ensemble ... ... ... ... 1:4 ... - NUMBER Global Att *NUMBER* in Ensemble ... ... ... ... 1:4 ... - - -list/i=3 airt[T=@ave] - getgrid EX#1 C: 5 dset: 6 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G085) COADSX116_COADSY52_6NORMAL TIME29 ENSEMBLE NORMAL - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 6 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 M: 1 4 N: -999 -999 - strip --> AIRT[T=01-JAN00:45:31-DEC06:34@AVE,D=6] - strip aggregate gathering AIRT on E axis: 1 4 dset: 6 - reading AIRT M:239 dset: 2 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - doing aggregate gathering AIRT on E axis: 1 1 dset: 2 - -DELETE AIRT M:239 dset: 2 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - eval AIRT C: 9 dset: 4 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - reading SST M:239 dset: 4 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - constan cnst M:209 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE cnst M:209 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - doing aggregate gathering AIRT on E axis: 2 2 dset: 4 - -DELETE AIRT M:206 dset: 4 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - eval AIRT C: 9 dset: 3 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - reading SST M:206 dset: 3 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - constan cnst M:209 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE cnst M:209 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - doing aggregate gathering AIRT on E axis: 3 3 dset: 3 - -DELETE AIRT M:191 dset: 3 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - eval AIRT C: 9 dset: 5 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - reading SST M:191 dset: 5 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - constan cnst M:209 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE cnst M:209 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - doing aggregate gathering AIRT on E axis: 4 4 dset: 5 - -DELETE AIRT M:181 dset: 5 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - doing --> AIRT[T=01-JAN00:45:31-DEC06:34@AVE,D=6] - final --> AIRT[T=01-JAN00:45:31-DEC06:34@AVE,D=6] - VARIABLE : AIR TEMPERATURE (DEG C) - DATA SET : Ensemble series of 4 datasets patterned on ens1 - FILENAME : fourfiles - SUBSET : 9 by 4 points (LATITUDE-E (realization)) - LONGITUDE: 105W - TIME : 01-JAN 00:45 to 31-DEC 06:34 (averaged) - 13N 15N 17N 19N 21N 23N 25N 27N 29N - 1 2 3 4 5 6 7 8 9 - 1 / 1: 27.675 27.570 27.061 26.673 25.793 25.207 .... .... .... - 2 / 2: 86.539 86.323 84.676 83.370 81.177 77.683 .... .... .... - 3 / 3: 58.026 57.882 56.784 55.913 54.452 52.122 .... .... .... - 4 / 4: 115.051 114.765 112.568 110.826 107.903 103.245 .... .... .... - -! create an ensemble where one member is missing -ENSEMBLE fourfiles_gap = ens1, -, ens3, ens4 - getgrid AIRT C: 5 dset: 4 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GOH1 COADSX116_COADSY52_6NORMAL TIME29 - getgrid AIRT C: 5 dset: 5 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GOH1 COADSX116_COADSY52_6NORMAL TIME29 -show data/files fourfiles_gap - currently SET data sets: - 7> fourfiles_gap (default) Ensemble aggregation - name title I J K L M N - SST SST_IN 1:10 1:9 ... 1:12 1:4 ... - AIRT AIR TEMPERATURE 1:10 1:9 ... 1:12 1:4 ... - ------------------------------ - MEMBER_DSET - Member dataset names in Ensembl ... ... ... ... 1:4 ... - TITLE Global Att *title* in Ensemble ... ... ... ... 1:4 ... - HISTORY Global Att *history* in Ensembl ... ... ... ... 1:4 ... - CONVENTIONS - Global Att *Conventions* in Ens ... ... ... ... 1:4 ... - MODEL Global Att *MODEL* in Ensemble ... ... ... ... 1:4 ... - NUMBER Global Att *NUMBER* in Ensemble ... ... ... ... 1:4 ... - - Member datasets: - 7.1: ./data/ens1.nc - 7.2: (dummy) - 7.3: ./data/ens3.nc - 7.4: ./data/ens4.nc -list/i=3 airt[T=@ave] - getgrid EX#1 C: 5 dset: 7 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G085) COADSX116_COADSY52_6NORMAL TIME29 ENSEMBLE NORMAL - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 7 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 M: 1 4 N: -999 -999 - strip --> AIRT[T=01-JAN00:45:31-DEC06:34@AVE,D=7] - strip aggregate gathering AIRT on E axis: 1 4 dset: 7 - reading AIRT M:209 dset: 2 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - doing aggregate gathering AIRT on E axis: 1 1 dset: 2 - -DELETE AIRT M:209 dset: 2 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - dummy AIRT M:209 dset:5001 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - doing aggregate gathering AIRT on E axis: 2 2 dset:5001 - -DELETE AIRT M:209 dset:5001 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - eval AIRT C: 9 dset: 4 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - found SST M:239 dset: 4 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - constan cnst M:209 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE cnst M:209 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - doing aggregate gathering AIRT on E axis: 3 3 dset: 4 - -DELETE AIRT M:172 dset: 4 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - eval AIRT C: 9 dset: 5 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - found SST M:191 dset: 5 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - constan cnst M:172 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE cnst M:172 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - doing aggregate gathering AIRT on E axis: 4 4 dset: 5 - -DELETE AIRT M:209 dset: 5 I: 3 3 J: 1 9 K: -999 -999 L: 1 12 - doing --> AIRT[T=01-JAN00:45:31-DEC06:34@AVE,D=7] - final --> AIRT[T=01-JAN00:45:31-DEC06:34@AVE,D=7] - VARIABLE : AIR TEMPERATURE (DEG C) - DATA SET : Ensemble series of 4 datasets patterned on ens1 - FILENAME : fourfiles_gap - SUBSET : 9 by 4 points (LATITUDE-E (realization)) - LONGITUDE: 105W - TIME : 01-JAN 00:45 to 31-DEC 06:34 (averaged) - 13N 15N 17N 19N 21N 23N 25N 27N 29N - 1 2 3 4 5 6 7 8 9 - 1 / 1: 27.675 27.570 27.061 26.673 25.793 25.207 .... .... .... - 2 / 2: .... .... .... .... .... .... .... .... .... - 3 / 3: 86.539 86.323 84.676 83.370 81.177 77.683 .... .... .... - 4 / 4: 115.051 114.765 112.568 110.826 107.903 103.245 .... .... .... - -cancel mode diag -cancel data/all -cancel var/all - -! Subsets of coads_climatology and monthly_navy_winds. -! Define an ensemble after making LET/D definitions so that -! variables have the same name and grid. -use coads_uw -use navy_uw - -! Define the ensemble dataset - -! intentional errors: -set mode ignore - -! Use dataset thats not open. -ensemble windy = 1,2,3 - -! No variables on comparable grids. -ensemble windy = 1,2 - -set mode/last ignore - -! Rename the varibles in dataset 2, then define UWND and VWND as -! variables on the grid of dset 1. -set dat 2 -set var/name=uin uwnd -set var/name=vin vwnd - -! Define uwnd and vwnd in dataset 2 to have the grid of -! those variables in dataset 1 - -let/d=2/units="`uin,return=units`"/title="`uin,return=title`" \ - uwnd = uin[d=2,gxy=uwnd[d=1],gt=uwnd[d=1]@mod] - !-> DEFINE VARIABLE/d=2/units="M/S"/title="ZONAL WIND" uwnd = uin[d=2,gxy=uwnd[d=1],gt=uwnd[d=1]@mod] -let/d=2/units="`vin,return=units`"/title="`vin,return=title`" \ - vwnd = vin[d=2,gxy=vwnd[d=1],gt=vwnd[d=1]@mod] - !-> DEFINE VARIABLE/d=2/units="M/S"/title="MERIDIONAL WIND" vwnd = vin[d=2,gxy=vwnd[d=1],gt=vwnd[d=1]@mod] - -show data - currently SET data sets: - 1> ./data/coads_uw.nc - name title I J K L - UWND ZONAL WIND 1:30 1:30 ... 1:12 - VWND MERIDIONAL WIND 1:30 1:30 ... 1:12 - SPEH SPECIFIC HUMIDITY 1:30 1:30 ... 1:12 - - 2> ./data/navy_uw.nc (default) - name title I J K L - UIN ZONAL WIND 1:30 1:30 ... 1:30 - VIN MERIDIONAL WIND 1:30 1:30 ... 1:30 - ------------------------------ - VWND[D=navy_uw] = VIN[D=2,GXY=VWND[D=1],GT=VWND[D=1]@MOD] - UWND[D=navy_uw] = UIN[D=2,GXY=UWND[D=1],GT=UWND[D=1]@MOD] - - -! Define the ensemble dataset -ensemble windy = 1,2 - -! The grid of the aggregate variables with LET/D is known. -show data windy - currently SET data sets: - 3> windy (default) Ensemble aggregation - name title I J K L M N - UWND ZONAL WIND 1:30 1:30 ... 1:12 1:2 ... - VWND MERIDIONAL WIND 1:30 1:30 ... 1:12 1:2 ... - ------------------------------ - MEMBER_DSET - Member dataset names in Ensembl ... ... ... ... 1:2 ... - HISTORY Global Att *history* in Ensembl ... ... ... ... 1:2 ... - CONVENTIONS - Global Att *Conventions* in Ens ... ... ... ... 1:2 ... - - -! Use variable from the new dataset -list/l=3/y=30/x=-59:-51 uwnd[d=1], uwnd[d=2], uwnd[d=3,e=1], uwnd[d=3,e=2], uwnd[d=3,e=@ave] - LONGITUDE: 59W(-59) to 51W(-51) - LATITUDE: 30N (interpolated) - TIME: 17-MAR 02:58 - Column 1: UWND[D=coads_uw] is ZONAL WIND (M/S) - Column 2: UWND[D=navy_uw] is ZONAL WIND (M/S) - Column 3: UWND[D=windy,E=1 (coads_uw)] is ZONAL WIND (M/S) - Column 4: UWND[D=windy,E=2 (navy_uw)] is ZONAL WIND (M/S) - Column 5: UWND[D=windy,E=1:2@AVE] is ZONAL WIND (M/S) - UWND UWND UWND UWND UWND -59W / -30: 2.20244 0.934329 2.20244 0.934329 1.56839 -57W / -29: 2.26128 0.812758 2.26128 0.812758 1.53702 -55W / -28: 1.99826 0.681776 1.99826 0.681776 1.34002 -53W / -27: 1.93361 0.507158 1.93361 0.507158 1.22038 -51W / -26: 1.64932 0.330430 1.64932 0.330430 0.98987 - -! Use the other order. As long as we have a file variable, we're ok -show data/brief ! see what is *not* hidden - currently SET data sets: - 1> ./data/coads_uw.nc - 2> ./data/navy_uw.nc - 3> windy (default) Ensemble aggregation - - -cancel data 3 -show data/brief ! see what is *not* hidden - currently SET data sets: - 1> ./data/coads_uw.nc - 2> ./data/navy_uw.nc - -! Define the ensemble dataset -ensemble windy = 2,1 - -! The grid of the aggregate variables with LET/D is known. -show data windy - currently SET data sets: - 3> windy (default) Ensemble aggregation - name title I J K L M N - VWND MERIDIONAL WIND 1:30 1:30 ... 1:12 1:2 ... - UWND ZONAL WIND 1:30 1:30 ... 1:12 1:2 ... - ------------------------------ - MEMBER_DSET - Member dataset names in Ensembl ... ... ... ... 1:2 ... - HISTORY Global Att *history* in Ensembl ... ... ... ... 1:2 ... - CONVENTIONS - Global Att *Conventions* in Ens ... ... ... ... 1:2 ... - - -! Use variable from the new dataset -list/l=3/y=30/x=-59:-51 uwnd[d=1], uwnd[d=2], uwnd[d=3,e=1], uwnd[d=3,e=2], uwnd[d=3,e=@ave] - LONGITUDE: 59W(-59) to 51W(-51) - LATITUDE: 30N (interpolated) - TIME: 17-MAR 02:58 - Column 1: UWND[D=coads_uw] is ZONAL WIND (M/S) - Column 2: UWND[D=navy_uw] is ZONAL WIND (M/S) - Column 3: UWND[D=windy,E=1 (navy_uw)] is ZONAL WIND (M/S) - Column 4: UWND[D=windy,E=2 (coads_uw)] is ZONAL WIND (M/S) - Column 5: UWND[D=windy,E=1:2@AVE] is ZONAL WIND (M/S) - UWND UWND UWND UWND UWND -59W / -30: 2.20244 0.934329 0.934329 2.20244 1.56839 -57W / -29: 2.26128 0.812758 0.812758 2.26128 1.53702 -55W / -28: 1.99826 0.681776 0.681776 1.99826 1.34002 -53W / -27: 1.93361 0.507158 0.507158 1.93361 1.22038 -51W / -26: 1.64932 0.330430 0.330430 1.64932 0.98987 - -cancel data/all -cancel variable/all - -! DEFINE DATA/HIDE -! SHOW DATA/HIDDEN -! Alias ENSEMBLE for DEFINE DATA/AGG/E - -! If define the ensemble with /HIDE then SHOW DAT will skip the -! member datasets and show only the ensemble. -! show dat/hidden forces showing all - -show command define - DEFINE - DEFINE REGION/I/J/K/L/M/N/X/Y/Z/T/E/F/DEFAULT/DX/DY/DZ/DT/DE/DF/DI/DJ/DK - /DL/DM/DN - DEFINE GRID/X/Y/Z/T/E/F/FILE/LIKE - DEFINE VARIABLE/TITLE/UNITS/QUIET/DATASET/BAD/REMOTE/LIKE - DEFINE AXIS/X/Y/Z/T/E/F/FILE/UNITS/T0/NAME/FROMDATA/DEPTH/MODULO/NPOINTS - /EDGES/CALENDAR/BOUNDS/QUIET/MONTHLY/LIKE - DEFINE VIEWPORT/TEXT/XLIMITS/YLIMITS/SIZE/ORIGIN/CLIP/AXES - DEFINE ALIAS - DEFINE SYMBOL - DEFINE ATTRIBUT/DATASET/TYPE/OUTPUT/QUIET - DEFINE PYFUNC/NAME - DEFINE DATA/AGGREGAT/T/E/F/TITLE/QUIET/HIDE/U/TAXIS/FAXIS/TOVERLAP - DEFINE ANNOTATI/USER/NORM/NOUSER/XPOS/YPOS/HALIGN/VALIGN/ANGLE/SIZE/NLAB -show command show - SHOW/ALL - SHOW WINDOW/ALL - SHOW REGION/ALL - SHOW AXIS/ALL/I/J/K/L/M/N/X/Y/Z/T/E/F/XML/OUTFILE/APPEND/CLOBBER - SHOW EXPRSION/ALL - SHOW LIST/ALL - SHOW DATA/ALL/BRIEF/FULL/VARIABLE/FILES/XML/ATTR/OUTFILE/APPEND/CLOBBER - /HIDDEN/MEMBERS - SHOW MODE/ALL - SHOW MOVIE/ALL - SHOW VARIABLE/ALL/DATASET/USER/XML/OUTFILE/APPEND/CLOBBER/TREE/LAYERZ/CURVILIN - SHOW COMMANDS/ALL/BRIEF - SHOW MEMORY/ALL/DIAGNOST/TEMPORY/PERMANT/FREE - SHOW GRID/ALL/I/J/K/L/M/N/X/Y/Z/T/E/F/DYNAMIC/XML/OUTFILE/APPEND/CLOBBER - SHOW VIEWPORT/ALL - SHOW TRANFORM/ALL - SHOW ALIAS/ALL - SHOW SYMBOL/ALL - SHOW ATTRIBUT/ALL/DATASET/OUTPUT - SHOW NCCACHE - SHOW GIFFILE - SHOW FUNCTION/ALL/BRIEF/EXTERNAL/INTERNAL/DETAILS - SHOW TEXT - SHOW QUERIES/ALL - -use coads_climatology ! to offset indices so they arent equal to Ferret dset #s - -use ens1, ens2, ens3, ens4 -ensemble/HIDE/title="ensemble with hidden members" fourfiles = ens1, ens2, ens3, ens4 - -! should just show the ensemble set. Members are hidden. -show data/brief - currently SET data sets: - 1> ./data/coads_climatology.cdf - 6> fourfiles (default) Ensemble aggregation - -! If ask for a member set by name or number, do show it -show data/brief 2 - currently SET data sets: - 2> ./data/ens1.nc -show data/brief ens3 - currently SET data sets: - 4> ./data/ens3.nc - -! should show all members plus ensemble -show data/brief/hidden - currently SET data sets: - 1> ./data/coads_climatology.cdf - 2> ./data/ens1.nc - 3> ./data/ens2.nc - 4> ./data/ens3.nc - 5> ./data/ens4.nc - 6> fourfiles (default) Ensemble aggregation - -! Since the members were hidden, they get deleted with the aggregation -cancel data fourfiles -show data/brief - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) -cancel data/all - -! Cancel a member, then the ensemble gets canceled. -! The hidden members get canceled along with the parent (1/16) -use coads_climatology ! to offset indices so they arent equal to Ferret dset #s -use ens1, ens2, ens3, ens4 -ensemble/HIDE/title="uvars in dset 2" my_ens = 2,3 -show data/brief - currently SET data sets: - 1> ./data/coads_climatology.cdf - 4> ./data/ens3.nc - 5> ./data/ens4.nc - 6> my_ens (default) Ensemble aggregation -cancel data ens2 -show data/brief - currently SET data sets: - 1> ./data/coads_climatology.cdf - 4> ./data/ens3.nc - 5> ./data/ens4.nc - -! Cancel the ensemble, then hidden members get canceled too - -use ens1, ens2, ens3, ens4 -ensemble/HIDE/title="uvars in dset 2" my_ens = 2,3,4,5 - -! members hidden, showing only ensemble. -show data/brief - currently SET data sets: - 1> ./data/coads_climatology.cdf - 6> my_ens (default) Ensemble aggregation -cancel data my_ens - -! Cancel ensemble dataset: hidden members deleted -show data/brief - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - -! Define several ensembles with /HIDE -ensemble/HIDE/title="ensemble with hidden members" fourfiles = ens1, ens2, ens3, ens4 -ensemble/HIDE/title="ensemble with hidden members" some = ens1, ens2 -ensemble/HIDE/title="ensemble with hidden members" more = ens2, ens3, ens4 - -! Shows all the ensembles -show data/brief/files - currently SET data sets: - 1> ./data/coads_climatology.cdf - 6> fourfiles Ensemble aggregation - Member datasets: - 6.1: ./data/ens1.nc - 6.2: ./data/ens2.nc - 6.3: ./data/ens3.nc - 6.4: ./data/ens4.nc - 7> some Ensemble aggregation - Member datasets: - 7.1: ./data/ens1.nc - 7.2: ./data/ens2.nc - 8> more (default) Ensemble aggregation - Member datasets: - 8.1: ./data/ens2.nc - 8.2: ./data/ens3.nc - 8.3: ./data/ens4.nc - -! Cancel a member of all the ensembles. All the ensembles get deleted. -cancel data ens2 -show data/brief - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - - -GO bn_reset bn_6d_lab_mode -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_6d_lab_mode -GO bn_6d_lab_mode -! bn_6d_lab_mode.jnl -! -! Tests of CANCEL MODE 6d_lab, writes SHOW and STAT output in classic 4D form. -! -use gt4d011 - -! Mode affects output of SHOW - -set mode 6d_lab ! this is the default setting -show data - currently SET data sets: - 1> ./data/gt4d011.cdf (default) - name title I J K L - TEMP TEMPERATURE 91:108 35:56 1:10 1:25 - SALT (SALINITY(ppt) - 35) /1000 91:108 35:55 1:10 1:25 - U ZONAL VELOCITY 91:108 35:55 1:10 1:25 - V MERIDIONAL VELOCITY 91:108 35:55 1:10 1:25 - W VERTICAL VELOCITY 91:108 36:55 1:10 1:25 - TAUX ZONAL WIND STRESS 91:108 35:55 ... 1:25 - TAUY MERIDIONAL WIND STRESS 91:108 35:55 ... 1:25 - PSI STREAM FUNCTION 91:108 35:56 ... 1:25 - -cancel mode 6d_lab -show data - currently SET data sets: - 1> ./data/gt4d011.cdf (default) - name title I J K L - TEMP TEMPERATURE 91:108 35:56 1:10 1:25 - SALT (SALINITY(ppt) - 35) /1000 91:108 35:55 1:10 1:25 - U ZONAL VELOCITY 91:108 35:55 1:10 1:25 - V MERIDIONAL VELOCITY 91:108 35:55 1:10 1:25 - W VERTICAL VELOCITY 91:108 36:55 1:10 1:25 - TAUX ZONAL WIND STRESS 91:108 35:55 ... 1:25 - TAUY MERIDIONAL WIND STRESS 91:108 35:55 ... 1:25 - PSI STREAM FUNCTION 91:108 35:56 ... 1:25 - - -! Mode affects output of SHOW GRID - -set mode 6d_lab -show grid temp - GRID PS3DT21 - name axis # pts start end subset - PSXT LONGITUDE 160mr 130.5E 70.5W full - PSYT1 LATITUDE 100 i 28.836S 48.568N full - PSZT2 DEPTH (m) 27 i- 5 3824 full - TIME111 TIME 25 r 17-AUG-1982 12:00 10-JAN-1983 12:00 full -cancel mode 6d_lab -show grid temp - GRID PS3DT21 - name axis # pts start end subset - PSXT LONGITUDE 160mr 130.5E 70.5W full - PSYT1 LATITUDE 100 i 28.836S 48.568N full - PSZT2 DEPTH (m) 27 i- 5 3824 full - TIME111 TIME 25 r 17-AUG-1982 12:00 10-JAN-1983 12:00 full - -! Mode affects output of STAT - -set mode 6d_lab -stat temp - - TEMPERATURE - LONGITUDE: 140W to 122W - LATITUDE: 3.6667S to 3.6667N - DEPTH (m): 0 to 100 - TIME: 14-AUG-1982 11:00 to 13-JAN-1983 13:00 - E: N/A - F: N/A - DATA SET: ./data/gt4d011.cdf - - Total # of data points: 99000 (18*22*10*25*1*1) - # flagged as bad data: 0 - Minimum value: 21.597 - Maximum value: 33.497 - Mean value: 27.704 (unweighted average) - Standard deviation: 2.4542 -cancel mode 6d_lab -stat temp - - TEMPERATURE - LONGITUDE: 140W to 122W - LATITUDE: 3.6667S to 3.6667N - DEPTH (m): 0 to 100 - TIME: 14-AUG-1982 11:00 to 13-JAN-1983 13:00 - DATA SET: ./data/gt4d011.cdf - - Total # of data points: 99000 (18*22*10*25) - # flagged as bad data: 0 - Minimum value: 21.597 - Maximum value: 33.497 - Mean value: 27.704 (unweighted average) - Standard deviation: 2.4542 - -! Mode affects diagnostic output - -set mode diag -set mode 6d_lab -list/L=1:8 taux[x=@ave,y=@ave] - dealloc dynamic grid PS3DT21 PSXT PSYT1 PSZT2 TIME111 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS2DU2 PSXU PSYU NORMAL TIME111 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 160 J: 1 100 K: -999 -999 L: 1 8 - strip --> TAUX[Y=28.8361S:51.4321N@AV4,D=1] - reading TAUX M:178 dset: 1 I: 91 108 J: 35 55 K: -999 -999 L: 1 8 - doing --> TAUX[Y=3.5S:3.5N@AV4,D=1] - final --> TAUX[Y=3.5S:3.5N@AV4,D=1] - VARIABLE : ZONAL WIND STRESS (dynes/cm**2) - FILENAME : gt4d011.cdf - SUBSET : 8 points (TIME) - LONGITUDE: 139.5W to 121.5W (XY ave) - LATITUDE : 3.5S to 3.5N (XY ave) - 17-AUG-1982 12 / 1: -0.274203 - 23-AUG-1982 14 / 2: -0.236318 - 29-AUG-1982 16 / 3: -0.198434 - 04-SEP-1982 18 / 4: -0.160549 - 10-SEP-1982 20 / 5: -0.122665 - 16-SEP-1982 22 / 6: -0.104062 - 23-SEP-1982 00 / 7: -0.104740 - 29-SEP-1982 02 / 8: -0.105418 -cancel mode 6d_lab -list/L=1:8 taux[x=@sum,y=@sum] - dealloc dynamic grid PS2DU2 PSXU PSYU NORMAL TIME111 - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid PS2DU2 PSXU PSYU NORMAL TIME111 - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 160 J: 1 100 K: -999 -999 L: 1 8 - strip --> TAUX[Y=28.8361S:51.4321N@SM4,D=1] - found TAUX M:178 dset: 1 I: 91 108 J: 35 55 K: -999 -999 L: 1 8 - doing --> TAUX[Y=3.5S:3.5N@SM4,D=1] - VARIABLE : ZONAL WIND STRESS (dynes/cm**2) - FILENAME : gt4d011.cdf - SUBSET : 8 points (TIME) - LONGITUDE: 139.5W to 121.5W (XY summed) - LATITUDE : 3.5S to 3.5N (XY summed) - 17-AUG-1982 12 / 1: -103.649 - 23-AUG-1982 14 / 2: -89.328 - 29-AUG-1982 16 / 3: -75.007 - 04-SEP-1982 18 / 4: -60.686 - 10-SEP-1982 20 / 5: -46.365 - 16-SEP-1982 22 / 6: -39.333 - 23-SEP-1982 00 / 7: -39.590 - 29-SEP-1982 02 / 8: -39.847 -can mode diag - -! restore default setting -set mode 6d_lab - -! *********** v6.82 Additions *********** - -GO bn_reset bn682_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn682_bug_fixes -GO bn682_bug_fixes -! bn682_bug_fixes.jnl -! test various fixes that went into version 6.82 -! 8/2012 ACM - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err681_dims_direction -! err681_dims_direction.jnl -! ticket 1955: Code still existed that determined axis direction -! according to axis name. Here, coordinate variables are defined, -! but their dimensions are not coordinate variables, so there isn't -! direct info in the file about the directions of the dimensions. -! netcdf dims { -! dimensions: -! ETA = 4 ; -! TAU1 = 7 ; -! ZT_OCEAN = 1 ; -! variables: -! ... -! float LON_C(TAU, ETA) ; -! LON_C:long_name = "uv longitude" ; -! LON_C:units = "degrees_E" ; -! LON_C:history = "From data_1302" ; -! -! Where tau is intended to be a Y axis and ETA is an X axis. -! 4D Ferret puts these in an X and a T direction, and inital versions -! of 6D Ferret had them in the E and T directions. They should just -! get assigned by position, here with TAU in the Y direction an ETA in x. - -use dims_not_coord -sh dat - currently SET data sets: - 1> ./data/dims_not_coord.nc (default) - name title I J K L - U zonal current 1:4 1:7 1:1 ... - LON_C uv longitude 1:4 1:7 ... ... - LAT_C uv latitude 1:4 1:7 ... ... - -sho grid lon_c - GRID GOS2 - name axis # pts start end subset - ETA X 4 r 1 4 full - TAU1 Y 7 r 1 7 full - normal Z - normal T - - -! *********** v6.83 Additions *********** -! (was released as v6.84) - -GO bn_reset bn683_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn683_bug_fixes -GO bn683_bug_fixes -! bn683_bug_fixes.jnl -! test various fixes that went into version 6.83 -! 8/2012 ACM - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err682_shrink_axlab -! err682_shrink_axlab.jnl -! See ticket 1958. Scripts may want the axis labels to -! run out of the viewport or off the page. So shrink labels -! only if MODE SHRINK_YLAB has been set. -! See also err672_runoff_page.jnl and err672_vert_axislabel.jnl -! -! Default setting, mode shrink_ylab is cancelled. - -! The lower plot has its vertical axis labels intact and visible. -! The upper one will have them shrink away to nothing. - -set view lr -go magnify -plot/vs {-1,1},{-1,1} - -set mode shrink_ylab - -set view ur -go magnify -plot/vs {-1,1},{-1,1} - -set mode/last shrink_ylab - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err682_xact_high_prec -! err682_xact_high_prec.jnl -! based on an example from the Users List, -! http://www.pmel.noaa.gov/maillists/tmap/ferret_users/fu_2012/msg00477.html - -! shows that the @XACT regridding in double-precision Ferret is broken. - -! 3/17 *sh* - broke after change to RESHAPE in GCF_IMPOSE_AXES -! - fixed it by cleaning up the definition of var_regrid - -Let time = {\ - 22585.3295833333,\ - 22585.3302777778,\ - 22585.3309722222,\ - 22585.3316666667,\ - 22585.3323611111,\ - 22585.3330555556,\ - 22585.33375,\ - 22585.3344444444,\ - 22585.3351388889,\ - 22585.3358333333} - -Define Axis /T /From /T0=1-JAN-1950 /Units=days my_axis = time - -Let fake_var = T[GT=my_axis] -! this was the definition prior to 3/17 -!Let var = RANDU( fake_var ) -!Let var_regrid = RESHAPE( var, fake_var ) -Let var_regrid = RANDU( fake_var ) ! new definition - - -List /T="2-nov-2011 07:54":"2-nov-2011 08:04" var_regrid - VARIABLE : RANDU( FAKE_VAR ) - SUBSET : 10 points (TIME) - 02-NOV-2011 07:54:36 / 1: 0.625140 - 02-NOV-2011 07:55:36 / 2: 0.220931 - 02-NOV-2011 07:56:36 / 3: 0.607368 - 02-NOV-2011 07:57:36 / 4: 0.322594 - 02-NOV-2011 07:58:36 / 5: 0.107545 - 02-NOV-2011 07:59:36 / 6: 0.225720 - 02-NOV-2011 08:00:36 / 7: 0.081070 - 02-NOV-2011 08:01:36 / 8: 0.898013 - 02-NOV-2011 08:02:36 / 9: 0.716275 - 02-NOV-2011 08:03:36 / 10: 0.664871 - -! Note that if we define the axis as below, the regridding is -! successful. But the @XACT regridding in v6.82 was requiring too -! much matching precision. - -! DEFINE AXIS/t="02-nov-2011:07:54:36":"02-nov-2011:08:03:36":60/units=seconds/T0=1-JAN-1950 my_axis -! let time = t[gt=my_axis] -! Let var = TSEQUENCE( RANDU( time ) ) -! Let fake_var = T[GT=my_axis] -! Let var_regrid = RESHAPE( var, fake_var ) - -! New time axis -Define Axis /T="01-NOV-2011 00:00":"30-NOV-2011 23:00":1 /Units=seconds /T0=1-JAN-1950 t_axis_seconds - -Let var_sec = var_regrid[ GT=t_axis_seconds@XACT ] - -! Here we got no good data, should be one at 7:54:36. - -List /T="2-nov-2011 07:54:30":"2-nov-2011 07:54:50" var_sec - VARIABLE : VAR_REGRID[ GT=T_AXIS_SECONDS@XACT ] - SUBSET : 21 points (TIME) - 02-NOV-2011 07:54:30 / 114871: .... - 02-NOV-2011 07:54:31 / 114872: .... - 02-NOV-2011 07:54:32 / 114873: .... - 02-NOV-2011 07:54:33 / 114874: .... - 02-NOV-2011 07:54:34 / 114875: .... - 02-NOV-2011 07:54:35 / 114876: .... - 02-NOV-2011 07:54:36 / 114877: 0.625140 - 02-NOV-2011 07:54:37 / 114878: .... - 02-NOV-2011 07:54:38 / 114879: .... - 02-NOV-2011 07:54:39 / 114880: .... - 02-NOV-2011 07:54:40 / 114881: .... - 02-NOV-2011 07:54:41 / 114882: .... - 02-NOV-2011 07:54:42 / 114883: .... - 02-NOV-2011 07:54:43 / 114884: .... - 02-NOV-2011 07:54:44 / 114885: .... - 02-NOV-2011 07:54:45 / 114886: .... - 02-NOV-2011 07:54:46 / 114887: .... - 02-NOV-2011 07:54:47 / 114888: .... - 02-NOV-2011 07:54:48 / 114889: .... - 02-NOV-2011 07:54:49 / 114890: .... - 02-NOV-2011 07:54:50 / 114891: .... - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err682_if_yes_exit -! err682_if_yes_exit.jnl -! Ticket 1965 -! -! As reported by Hein Zelle -! http://www.pmel.noaa.gov/maillists/tmap/ferret_users/fu_2012/msg00487.html -! This should exit the script on failure of the first test. -! Instead it continues on and only exits with the /script qualifier or as part -! of a block - -let test = 1 -if `test` then exit - !-> if 1 then exit - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err682_use_no_quotes -! err682_use_no_quotes.jnl -! See ticket 1974 - on 64-bit machines, this statement causes a crash. -! It should just generate an error message, as the file spec. should have -! quotes around it. - -SET MODE ignore -use ./z1.nc - -CANCEL MODE ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err682_axis_no_clue -! err682_axis_no_clue.jnl -! See ticket 1975. The axis sax is intended to be -! used as a Y axis. The axes of the variable are -! TEMP(zax, sax, xax). The grid should be XYZ but -! Ferret v6.82 created a grid thats XZT instead. - -use xsz.nc -sh dat - currently SET data sets: - 1> ./data/xsz.nc (default) - name title I J K L - TEMP TEMPERATURE 1:5 1:7 1:3 ... - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err682_grid_merge -! err682_grid_merge.jnl -! Bug 1972. When merging contexts, the calendar time-axis -! info gets lost, causing an error with the time axis. - -use truemonth.nc -let a = 2 -let b = a * var -list a*var[t=1-jan-1960:1-jan-1961] - VARIABLE : A*VAR[T=1-JAN-1960:1-JAN-1961] - FILENAME : truemonth.nc - SUBSET : 12 points (TIME) - 16-JAN-1960 12 / 121: 1.63183 - 15-FEB-1960 12 / 122: 1.90067 - 16-MAR-1960 12 / 123: 1.99973 - 16-APR-1960 00 / 124: 1.91734 - 16-MAY-1960 12 / 125: 1.65796 - 16-JUN-1960 00 / 126: 1.24555 - 16-JUL-1960 12 / 127: 0.71815 - 16-AUG-1960 12 / 128: 0.11450 - 16-SEP-1960 00 / 129: -0.49038 - 16-OCT-1960 12 / 130: -1.05001 - 16-NOV-1960 00 / 131: -1.51270 - 16-DEC-1960 12 / 132: -1.83577 - -! The bug had this statement failing with a time-region error -list b[T=1-JAN-1960:1-JAN-1961] - VARIABLE : A * VAR - FILENAME : truemonth.nc - SUBSET : 12 points (TIME) - 16-JAN-1960 12 / 121: 1.63183 - 15-FEB-1960 12 / 122: 1.90067 - 16-MAR-1960 12 / 123: 1.99973 - 16-APR-1960 00 / 124: 1.91734 - 16-MAY-1960 12 / 125: 1.65796 - 16-JUN-1960 00 / 126: 1.24555 - 16-JUL-1960 12 / 127: 0.71815 - 16-AUG-1960 12 / 128: 0.11450 - 16-SEP-1960 00 / 129: -0.49038 - 16-OCT-1960 12 / 130: -1.05001 - 16-NOV-1960 00 / 131: -1.51270 - 16-DEC-1960 12 / 132: -1.83577 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err682_scale_no_offset -! err682_scale_no_offset.jnl -! See ticket 1980 and the report on the Ferret list at -! http://www.pmel.noaa.gov/maillists/tmap/ferret_users/fu_2012/msg00585.html -! Dataset with a scale_factor attributue on variables but no add_offset att. - - -use err682_scale_no_offset.nc -say `sst_rms[x=@ngd,y=@ngd]` SHOULD BE 91 - !-> MESSAGE/CONTINUE 91 SHOULD BE 91 -91 SHOULD BE 91 - -can dat 1 -use err682_scale_no_offset.nc -say `sst_cor[x=@ngd,y=@ngd]` SHOULD BE 91 - !-> MESSAGE/CONTINUE 91 SHOULD BE 91 -91 SHOULD BE 91 -use tripolar_subset -can dat 2 - -say `sst_rms[x=@ngd,y=@ngd]` SHOULD BE 91 - !-> MESSAGE/CONTINUE 91 SHOULD BE 91 -91 SHOULD BE 91 -load sst_rms - -say `sst_rms[x=@ngd,y=@ngd]` SHOULD BE 91 - !-> MESSAGE/CONTINUE 91 SHOULD BE 91 -91 SHOULD BE 91 -load sst_rms -say `sst_rms[x=@nbd,y=@nbd]` SHOULD BE 30 - !-> MESSAGE/CONTINUE 30 SHOULD BE 30 -30 SHOULD BE 30 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err682_append_packed -! err682_append_packed.jnl -! See ticket 2004. Write packed variable with scale attributes -! Append more values, data was not correctly scaled. - -use append_pack.nc -list temp ! values should be 28.69, 28.63 - VARIABLE : Potential temperature (degrees C) - FILENAME : append_pack.nc - SUBSET : 2 points (TIME) - LONGITUDE: 180E(179.9) - LATITUDE : 0.05S - DEPTH (m): 2.5 - 179.95E - 1 - 01-JAN-1994 12 / 1: 28.6949 - 02-JAN-1994 12 / 2: 28.6344 - -cancel mode upcase_output -set att/output=all temp -save/clobber/file=a.nc/outtype=short/L=1 temp -save/append/file=a.nc/outtype=short/L=2 temp - -can data/all -use a.nc - -list temp ! values should match those above. - VARIABLE : Potential temperature (degrees C) - FILENAME : a.nc - SUBSET : 2 points (TIME) - LONGITUDE: 180E(179.9) - LATITUDE : 0.05S - DEPTH (m): 2.5 - 179.95E - 1 - 01-JAN-1994 12 / 1: 28.6949 - 02-JAN-1994 12 / 2: 28.6344 - -set mode/last upcase_output - -GO bn_reset bn_outtype -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_outtype -GO bn_outtype -! bn_outtype -! Tests of output-type control: -! SET VAR/OUTTYPE -! SET LIST/OUTTYPE -! save/x=300/y=0:5/OUTTYPE - -! SET LIST/OUTTYPE takes precedence over the variable type from -! an input dataset or the SET VAR/OUTTYPE -! save/x=300/y=0:5/OUTTYPE takes precedence over both - -! SET VAR/OUTTYPE -can dat/all -use coads_climatology - -let sst2 = 2*sst -set var/outtype=double sst2 - -! For saving as INT and smaller, the default missing value -! can't be the default Ferret value -let/bad=-999 sst3 = missing(sst, -999) -set var/outtype=int sst3 - -! sst is saved in its native type, float -! sst2 and sst3 have SET VAR/OUTTYPE types - -save/x=300/y=0:5/clobber/file=mytype.nc sst, sst2, sst3 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 23 T SEA SURFACE TEMPERATURE - history CHAR 22 T From coads_climatology - units CHAR 5 T Deg C - long_name_mod CHAR 9 F X=60W@ITP - - SST2 DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 5 T 2*SST - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - SST3 INT missing_value INT 1 T -999 - _FillValue INT 1 T -999 - long_name CHAR 18 T MISSING(SST, -999) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - -! SET LIST/OUTTYPE overrides native type and SET VAR/OUTTYPE -can var/all - -let sst2 = 2*sst -let/bad=-999 sst3 = missing(sst, -999) -set var/outtype=int sst3 - -set list/outtype=double -save/x=300/y=0:5/clobber/file=mytype.nc sst, sst2 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 23 T SEA SURFACE TEMPERATURE - history CHAR 22 T From coads_climatology - units CHAR 5 T Deg C - Ferret_Precision_Note - CHAR 69 F This variable written using Ferret was converted from FLOAT to DOUBLE - long_name_mod CHAR 9 F X=60W@ITP - - SST2 DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 5 T 2*SST - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - -set list/outtype=float -save/x=300/y=0:5/clobber/file=mytype.nc sst, sst2 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 23 T SEA SURFACE TEMPERATURE - history CHAR 22 T From coads_climatology - units CHAR 5 T Deg C - Ferret_Precision_Note - CHAR 69 F This variable written using Ferret was converted from FLOAT to DOUBLE - long_name_mod CHAR 9 F X=60W@ITP - - SST2 FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 5 T 2*SST - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - -set list/outtype=int -save/x=300/y=0:5/clobber/file=mytype.nc sst3 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST3 INT missing_value INT 1 T -999 - _FillValue INT 1 T -999 - long_name CHAR 18 T MISSING(SST, -999) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - -set list/outtype=short -save/x=300/y=0:5/clobber/file=mytype.nc sst3 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST3 SHORT missing_value SHORT 1 T -999 - _FillValue SHORT 1 T -999 - long_name CHAR 18 T MISSING(SST, -999) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - -set list/outtype=byte -let/bad=-99 sst4 = missing(sst, -99) -save/x=300/y=0:5/clobber/file=mytype.nc sst4 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST4 BYTE missing_value BYTE 1 T -99 - _FillValue BYTE 1 T -99 - long_name CHAR 17 T MISSING(SST, -99) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - -! shows the outtype -show list - SET LIST/PRECISION = 6 - SET LIST/FORMAT = [Default] - SET LIST/HEADING is ENABLED - SET LIST/APPEND is DISABLED - SET LIST/FILE=AUTO [created by program] ( when LIST/FILE is used ) - SET LIST/OUTTYPE = Byte - ---- - NetCDF-4 settings: - NetCDF file type = classic - NetCDF chunk sizes = default - SHUFFLE set to on - ENDIAN set to native - -! CANCEL LIST/OUTTYPE -cancel list/outtype -show list - SET LIST/PRECISION = 6 - SET LIST/FORMAT = [Default] - SET LIST/HEADING is ENABLED - SET LIST/APPEND is DISABLED - SET LIST/FILE=AUTO [created by program] ( when LIST/FILE is used ) - SET LIST/OUTTYPE = [Default] - ---- - NetCDF-4 settings: - NetCDF file type = classic - NetCDF chunk sizes = default - SHUFFLE set to on - ENDIAN set to native - -save/x=300/y=0:5/clobber/file=mytype.nc sst, sst2, sst3 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 23 T SEA SURFACE TEMPERATURE - history CHAR 22 T From coads_climatology - units CHAR 5 T Deg C - Ferret_Precision_Note - CHAR 69 F This variable written using Ferret was converted from FLOAT to DOUBLE - long_name_mod CHAR 9 F X=60W@ITP - - SST2 DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 5 T 2*SST - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - SST3 INT missing_value INT 1 T -999 - _FillValue INT 1 T -999 - long_name CHAR 18 T MISSING(SST, -999) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - -set list/outtype=int -save/x=300/y=0:5/clobber/file=mytype.nc sst3 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST3 INT missing_value INT 1 T -999 - _FillValue INT 1 T -999 - long_name CHAR 18 T MISSING(SST, -999) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - -cancel list/all -show list - SET LIST/PRECISION = 4 - SET LIST/FORMAT = [Default] - SET LIST/HEADING is ENABLED - SET LIST/APPEND is DISABLED - SET LIST/FILE=AUTO [created by program] ( when LIST/FILE is used ) - SET LIST/OUTTYPE = [Default] - ---- - NetCDF-4 settings: - NetCDF file type = classic - NetCDF chunk sizes = default - SHUFFLE set to on - ENDIAN set to native - -! SAVE/OUTTYPE overrides all other settings -can var/all -let sst2 = 2*sst3 - -let/bad=-999 sst3 = missing(sst, -999) -set var/outtype=int sst3 - -let/bad=-99 sst4 = missing(sst, -99) -set var/outtype=short sst4 - - -save/x=300/y=0:5/clobber/file=mytype.nc/outtype=double sst2, sst3 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST2 DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 6 T 2*SST3 - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - SST3 DOUBLE missing_value DOUBLE 1 T -999 - _FillValue DOUBLE 1 T -999 - long_name CHAR 18 T MISSING(SST, -999) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - -save/x=300/y=0:5/clobber/file=mytype.nc/outtype=float sst2, sst3 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST2 FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 6 T 2*SST3 - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - SST3 FLOAT missing_value FLOAT 1 T -999 - _FillValue FLOAT 1 T -999 - long_name CHAR 18 T MISSING(SST, -999) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - -save/x=300/y=0:5/clobber/file=mytype.nc/outtype=int sst4, sst3 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST4 INT missing_value INT 1 T -99 - _FillValue INT 1 T -99 - long_name CHAR 17 T MISSING(SST, -99) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - SST3 INT missing_value INT 1 T -999 - _FillValue INT 1 T -999 - long_name CHAR 18 T MISSING(SST, -999) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - -save/x=300/y=0:5/clobber/file=mytype.nc/outtype=byte sst4 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST4 BYTE missing_value BYTE 1 T -99 - _FillValue BYTE 1 T -99 - long_name CHAR 17 T MISSING(SST, -99) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - -! Type will be int -set list/outtype=float -save/x=300/y=0:5/clobber/file=mytype.nc/outtype=int sst4, sst3 -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo CHAR 1 T - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST4 INT missing_value INT 1 T -99 - _FillValue INT 1 T -99 - long_name CHAR 17 T MISSING(SST, -99) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - SST3 INT missing_value INT 1 T -999 - _FillValue INT 1 T -999 - long_name CHAR 18 T MISSING(SST, -999) - long_name_mod CHAR 9 F X=60W@ITP - history CHAR 22 T From coads_climatology - - -! Go back to default setting. -can list/outtype - -GO bn_reset bn_ribbon_plot -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ribbon_plot -GO bn_ribbon_plot -! bn_ribbon_plot.jnl -! Test color-line-by variable style of plots - -show alias ribbon - Alias Command - ----- ------- - RIBBON PLOT/RIBBON - -! ribbon plot is 3-variable RIBBON/VS plot -! RIBBON/VS/LEV= xpts, ypts, var -! or 2-variable line plot in any direction. -! RIBBON/LEV= var1, var2 - -! File variables -use TAO_SST_clim -set view ul; RIBBON/thick/i=3/lev=10 sst_clim[j=6], sst_clim[j=5] -set view ur; RIBBON/j=3/lev=10/thick sst_clim[l=6], sst_clim[L=9] -set view ll; RIBBON/thick/L=3/lev=10 sst_clim[j=4], sst_clim[j=6] -use gt4d011.cdf -set view lr; RIBBON/l=15/j=40/lev=v/thick/pal=rnb2 temp[i=96], temp[i=103] -can data/all - -! xpts, ypts all present, compare when var has missing. - -can view -let/title="Xpts"/units=degrees_east xpts = {\ -151.0,153.0,155.0,157.0,159.0,161.0,163.0,165.0,167.0,169.0,171.0,173.0,175.0,\ -177.0,179.0,181.0,183.0,185.0,187.0,189.0} - -let/title="SST"/units="Deg C" ypts {\ -29.42,29.43,29.33,29.19,29.22,29.12,29.36,29.22,29.04,28.92,29.00,28.59,28.31,\ -28.69,28.20,28.86,27.98,27.80,28.29,27.94} - -let/title="VAR"/Units="V" var = {\ -14.16,14.31,13.34,11.90,12.19,11.20,13.57,12.25,10.37, 9.22,10.05, 5.91, \ -3.13, 6.88, 2.02, 8.63,-0.23,-1.97, 2.94,-0.65} - -set view ul -RIBBON/vs/line/thick/vlim=26:30 xpts,ypts,var - -! Gaps in one of the vs variables -set view ur -RIBBON/vs/line/thick/vlim=26:30 xpts,ypts,var - -let/title="SST"/units="Deg C" ypts2 {\ -29.42,29.43,29.33,29.19,29.22,29.12,29.36,29.22,29.04,28.92,29.00,28.59,28.31,\ -28.69,28.20,28.86,27.98,27.80,28.29,27.94} - 0.3 - -let/title="VAR"/Units="V" var2 = {\ -14.16,14.31,13.34,,,,13.57,12.25,10.37, 9.22,10.05, 5.91, \ -3.13, 6.88, 2.02, 8.63,,-1.97, 2.94,-0.65} - -! /FAST does not interpolate colors from one point to the next -list xpts, ypts2, var2 - X: 0.5 to 20.5 - Column 1: XPTS is Xpts (degrees_east) - Column 2: YPTS2 is SST (Deg C) - Column 3: VAR2 is VAR (V) - XPTS YPTS2 VAR2 -1 / 1: 151.0 29.12 14.16 -2 / 2: 153.0 29.13 14.31 -3 / 3: 155.0 29.03 13.34 -4 / 4: 157.0 28.89 .... -5 / 5: 159.0 28.92 .... -6 / 6: 161.0 28.82 .... -7 / 7: 163.0 29.06 13.57 -8 / 8: 165.0 28.92 12.25 -9 / 9: 167.0 28.74 10.37 -10 / 10: 169.0 28.62 9.22 -11 / 11: 171.0 28.70 10.05 -12 / 12: 173.0 28.29 5.91 -13 / 13: 175.0 28.01 3.13 -14 / 14: 177.0 28.39 6.88 -15 / 15: 179.0 27.90 2.02 -16 / 16: 181.0 28.56 8.63 -17 / 17: 183.0 27.68 .... -18 / 18: 185.0 27.50 -1.97 -19 / 19: 187.0 27.99 2.94 -20 / 20: 189.0 27.64 -0.65 -RIBBON/vs/line/nokey/over/thick=3/fast xpts,ypts2,var2 - -let yp3 = if var2 then ypts2 - 0.3 -PLOT/over/nolab/vs/line/color=black/sym=20 xpts, yp3 - - -! Testing other palettes - -let/title="Xpts"/units=degrees_east xpts = { 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,\ -15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35} - -let/title="Ypts"/units=degrees_north ypts = { 9.04, 8.67, 8.96, 9.29, 9.18, 9.42,\ - 9.43, 9.33, 9.19, 9.22, 9.12, 9.36, 9.22, 9.04, 8.92, 9.00, 8.59,\ - 8.31, 8.69, 8.20, 8.86, 7.98, 7.80, 8.29, 7.94, 8.05, 7.85, 7.55,\ - 7.56, 6.82, 7.04, 6.66, 6.56, 7.36, 6.52} - -let/title="SST"/Units="Deg C" var = {\ - 1.5, 1.5, 1.5, 1.5, 1.5,\ - 2.5, 2.5, 2.5, 2.5, 2.5,\ - 3.5, 3.5, 3.5, 3.5, 3.5,\ - 4.5, 4.5, 4.5, 4.5, 4.5,\ - 5.5, 5.5, 5.5, 5.5, 5.5,\ - 6.5, 6.5, 6.5, 6.5, 6.5,\ - 7.5, 7.5, 7.5, 7.5, 7.5} -set view ll -RIBBON/vs/line/lev=(1,9,1)/pal=ten_by_levels xpts,ypts,var - - -let/title="Xpts"/units=degrees_east xpts = { 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,\ -15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35} - -let/title="Ypts"/units=degrees_north ypts = { 9.04, 8.67, 8.96, 9.29, 9.18, 9.42,\ - 9.43, 9.33, 9.19, 9.22, 9.12, 9.36, 9.22, 9.04, 8.92, 9.00, 8.59,\ - 8.31, 8.69, 8.20, 8.86, 7.98, 7.80, 8.29, 7.94, 8.05, 7.85, 7.55,\ - 7.56, 6.82, 7.04, 6.66, 6.56, 7.36, 6.52} - -let/title="SST"/Units="Deg C" var = {\ - 1.5, 1.5, 1.5, 1.5, 1.5,\ - 2.5, 2.5, 2.5, 2.5, 2.5,\ - 3.5, 3.5, 3.5, 3.5, 3.5,\ - 4.5, 4.5, 4.5, 4.5, 4.5,\ - 5.5, 5.5, 5.5, 5.5, 5.5,\ - 6.5, 6.5, 6.5, 6.5, 6.5,\ - 7.5, 7.5, 7.5, 7.5, 7.5} - -set view lr -RIBBON/vs/line/thick/lev=(1,8,1)/pal=ten_by_levels xpts,ypts,var - -PLOT/vs/over/sym=20 xpts,ypts - - -can view - -! Do an overlay on a map. -! To use RIBBON/SET, finish with PPL RIBBON/OVER - -use coads_climatology -let mask = if sst then 0 else 1 -shade/NOLAB/L=1/x=-50:100/y=-60:50/pal=grayscale mask - -RIBBON/vs/over/nolab/thick=3/sym=20/key/set xpts, ypts, var -ppl shakey,1,0 -ppl ribbon/over - -GO bn_reset bn_descr_4digit -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_descr_4digit -GO bn_descr_4digit - ! bn_descr_4digit.jnl - ! See ticket 1969: step files have 3- or 4-digit extensions - ! coads_clim.999, coads_clim.1000, coads_clim.1001 - -use coads_clim_4digit.des -sh dat - currently SET data sets: - 1> ./data/coads_clim_4digit.des (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:4 1:4 ... 1:6 - -list/x=180/y=0 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - DATA SET : COAD - FILENAME : coads_clim_4digit.des - SUBSET : 6 points (TIME) - LONGITUDE: 180E (interpolated) - LATITUDE : 0 (interpolated) - 16-JAN-1900 / 1: 28.36 - 15-FEB-1900 / 2: 28.38 - 18-MAR-1900 / 3: 28.00 - 17-APR-1900 / 4: 27.99 - 17-MAY-1900 / 5: 28.41 - 17-JUN-1900 / 6: 28.23 - -GO bn_reset bn_axis_outtype -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_outtype -GO bn_axis_outtype -! bn_axis_outtype.jnl -! SET AXIS/OUTTYPE -! 23-Oct-2012 - -can dat/all -use coads_climatology - -set axis/outtype=float `sst,return=xaxis` - !-> set axis/outtype=float COADSX -set axis/outtype=float `sst,return=yaxis` - !-> set axis/outtype=float COADSY -set axis/outtype=float `sst,return=taxis` - !-> set axis/outtype=float TIME25 - -save/x=300/y=0:5/clobber/file=mytype.nc sst -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) FLOAT units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME251) FLOAT units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo FLOAT 1 T 8765.82 - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 23 T SEA SURFACE TEMPERATURE - history CHAR 22 T From coads_climatology - units CHAR 5 T Deg C - long_name_mod CHAR 9 F X=60W@ITP - - -! SAVE/OUTTYPE sets the type of the variable not the axes -save/x=300/y=0:5/clobber/file=mytype.nc/outtype=double sst -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) FLOAT units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME251) FLOAT units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo FLOAT 1 T 8765.82 - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 23 T SEA SURFACE TEMPERATURE - history CHAR 22 T From coads_climatology - units CHAR 5 T Deg C - Ferret_Precision_Note - CHAR 69 F This variable written using Ferret was converted from FLOAT to DOUBLE - long_name_mod CHAR 9 F X=60W@ITP - - -! Restore the axis type from the file - -set axis/outtype=input `sst,return=xaxis` - !-> set axis/outtype=input COADSX -set axis/outtype=input `sst,return=yaxis` - !-> set axis/outtype=input COADSY -set axis/outtype=input `sst,return=taxis` - !-> set axis/outtype=input TIME25 - -save/x=300/y=0:5/clobber/file=mytype.nc sst -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSY46_48) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 11 F COADSY46_48 - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo DOUBLE 1 T 8765.82 - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 6 F TIME25 - - SST FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 23 T SEA SURFACE TEMPERATURE - history CHAR 22 T From coads_climatology - units CHAR 5 T Deg C - Ferret_Precision_Note - CHAR 69 F This variable written using Ferret was converted from FLOAT to DOUBLE - long_name_mod CHAR 9 F X=60W@ITP - - -! User-defined axes are output as double by default. - -define axis/t=1-jan-1990:1-feb-1990:2/units=hours myhours -let tt = t[gt=myhours] - `t[gt=myhours,L=1]` - !-> DEFINE VARIABLE tt = t[gt=myhours] - 779832 - -save/clobber/file=mytype.nc tt -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(MYHOURS) DOUBLE units CHAR 22 T hours since 1901-01-15 - axis CHAR 1 T T - calendar CHAR 9 T GREGORIAN - time_origin CHAR 11 T 15-JAN-1901 - standard_name CHAR 4 F time - orig_file_axname - CHAR 7 F MYHOURS - - TT DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 22 T T[GT=MYHOURS] - 779832 - - -set axis/outtype=int myhours -set var/bad=-9999 tt - -save/clobber/file=mytype.nc/outtype=int tt -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(MYHOURS) INT units CHAR 22 T hours since 1901-01-15 - axis CHAR 1 T T - calendar CHAR 9 T GREGORIAN - time_origin CHAR 11 T 15-JAN-1901 - standard_name CHAR 4 F time - orig_file_axname - CHAR 7 F MYHOURS - - TT INT missing_value INT 1 T -9999 - _FillValue INT 1 T -9999 - long_name CHAR 22 T T[GT=MYHOURS] - 779832 - - -! Restore the type of non-file axis, to double - -set axis/outtype=input myhours -save/clobber/file=mytype.nc tt -use mytype.nc; sh dat/att mytype.nc; can data mytype - currently SET data sets: - 2> ./mytype.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(MYHOURS) DOUBLE units CHAR 22 T hours since 1901-01-15 - axis CHAR 1 T T - calendar CHAR 9 T GREGORIAN - time_origin CHAR 11 T 15-JAN-1901 - standard_name CHAR 4 F time - orig_file_axname - CHAR 7 F MYHOURS - - TT DOUBLE missing_value DOUBLE 1 T -9999 - _FillValue DOUBLE 1 T -9999 - long_name CHAR 22 T T[GT=MYHOURS] - 779832 - - - -! not all axes can be correctly represented in all data types -! Intentional errors: -set mode ignore - -define axis/t=1-jan-1990:1-feb-1992:2/units=seconds myseconds -let tt = t[gt=myseconds] - `t[gt=myseconds,L=1]` - !-> DEFINE VARIABLE tt = t[gt=myseconds] - 2807395200 - -set axis/outtype=int myseconds -save/L=32875000:32875201/clobber/file=mytype.nc tt - - -use proleptic_gregorian.nc -set axis/outtype=byte `my_data,return=taxis` - !-> set axis/outtype=byte TDAYS1 -save/clobber/file=mytype.nc my_data - -set axis/outtype=int `my_data,return=taxis` - !-> set axis/outtype=int TDAYS1 -save/clobber/file=mytype.nc my_data - -cancel mode ignore - - -GO bn_reset bn_axis_nonmonotonic -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_axis_nonmonotonic -GO bn_axis_nonmonotonic -! bn_axis_nonmonotonic.jnl -! bn_define_axis doesnt test the case where the varible is not monotonic -! ACM 11/2012 With Ferret v6.83+ the message tells us the index value - -! Intentional error - -set mode ignore -let tvar = {85, 86, 86, 87, 88, 89, 90, 91, 92, 92, 92, 91, 92, 94, 95, 98} -define axis/t/units=days tax = tvar - -cancel mode ignore - -GO bn_reset bn_vec_mod -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_vec_mod -GO bn_vec_mod -! bn_vec_mod.jnl -! /MODULO qualifier for the vector command. -! 12/12/2012 ACM -! -! (Note for a test of POLY/MODULO see -! /home/users/ansley/ans_ferret/users/brockmann/polymod.jnl) - -use tripolar_subset.nc - -! Define a V component for vectors - -let fakev = 0.8*u - 0.1*geolat_c -set view ul -vec u,fakev,geolon_c,geolat_c -set view ll -vec/MOD/HLIM=0:360 u,fakev,geolon_c,geolat_c -set view lr -vec/MOD/HLIM=-180:180 u,fakev,geolon_c,geolat_c - -can view - -! *********** v6.85 Additions *********** - -GO bn_reset bn685_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn685_bug_fixes -GO bn685_bug_fixes -! bn685_bug_fixes.jnl -! test various fixes that went into version 6.85 -! 1/2013 ACM - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_label_quotes -! err684_label_quotes.jnl -! See ticket 1298. - -! A long-standing bug, error message if a label -! enclosed in single quotes is sent to pplus -! The single quotes triggers an attempt to translate -! a pplus symbol. - -plot/set/i=1:12 1./i - ppl xlab "'My X label'" - ppl ylab "'My Y Label'" - ppl title "'A title w/ single quotes'. Need not be in pairs: Ka'imimoana" -ppl plot - - -! Here is the example from the ticket - -! This is ok -say "'hello'" -'hello' - -! this returned an error -label 4.5 .5 0 0 .3 "'hello'" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_context_shape -! when limits are omitted with a compressing transformation the grave -! accent R=SHAPE erroneously includes the corresponding axis in the shape - -! The problem was when INTERP_CONTEXT calls COMPLETE_MISSING_LIMITS. -! That routine fills in both the SS and the WW limits as the full axis span. -! in a full-fledged evaluation occurred the ss limits would be set to -! -999:-999 at the time that the transform was stripped from the stack - -! The fix is to simulate this action inside of INTERP_CONTEXT - -use coads_climatology -say `sst[l=1:12@ave],ret=shape` - !-> MESSAGE/CONTINUE XY -XY -say `sst[l=@ave],ret=shape` - !-> MESSAGE/CONTINUE XY -XY - -let a = sst[l=1:12@ave] -let b = sst[l=@ave] -say `a,ret=shape` - !-> MESSAGE/CONTINUE XY -XY -say `b,ret=shape` - !-> MESSAGE/CONTINUE XY -XY - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_tax_fcns -!err684_tax_fcns.jnl -! See ticket 2043, bug in workaround for single-precision arguments -! no longer needed in double-precision Ferret -! The output at 13-oct and 18-oct was incorrect - - define axis/t/units=days/t0=1-jan-1950 tday = { \ - 20724.935546875, 20729.921875, 20734.951171875,\ -20739.96484375, 20744.939453125, 20749.8984375, 20754.92578125} - - let var = t[gt=tday] - - - list/L=3:7 tax_datestring(var, var, "second") - VARIABLE : TAX_DATESTRING(VAR, VAR, "second") - SUBSET : 5 points (TIME) - 08-OCT-2006 22 / 3:"08-OCT-2006 22:49:41" - 13-OCT-2006 23 / 4:"13-OCT-2006 23:09:22" - 18-OCT-2006 22 / 5:"18-OCT-2006 22:32:48" - 23-OCT-2006 21 / 6:"23-OCT-2006 21:33:45" - 28-OCT-2006 22 / 7:"28-OCT-2006 22:13:07" - - list/L=3:7 tax_day(var, var) - VARIABLE : TAX_DAY(VAR, VAR) - SUBSET : 5 points (TIME) - 08-OCT-2006 22 / 3: 8.00 - 13-OCT-2006 23 / 4: 13.00 - 18-OCT-2006 22 / 5: 18.00 - 23-OCT-2006 21 / 6: 23.00 - 28-OCT-2006 22 / 7: 28.00 - - list/L=3:7 tax_dayfrac(var, var) - VARIABLE : TAX_DAYFRAC(VAR, VAR) - SUBSET : 5 points (TIME) - 08-OCT-2006 22 / 3: 0.9512 - 13-OCT-2006 23 / 4: 0.9648 - 18-OCT-2006 22 / 5: 0.9394 - 23-OCT-2006 21 / 6: 0.8984 - 28-OCT-2006 22 / 7: 0.9258 - - list/L=3:7 tax_jday(var, var) - VARIABLE : TAX_JDAY(VAR, VAR) - SUBSET : 5 points (TIME) - 08-OCT-2006 22 / 3: 281.0 - 13-OCT-2006 23 / 4: 286.0 - 18-OCT-2006 22 / 5: 291.0 - 23-OCT-2006 21 / 6: 296.0 - 28-OCT-2006 22 / 7: 301.0 - - list/L=3:7 tax_jday1900(var, var) - VARIABLE : TAX_JDAY1900(VAR, VAR) - SUBSET : 5 points (TIME) - 08-OCT-2006 22 / 3: 38996. - 13-OCT-2006 23 / 4: 39001. - 18-OCT-2006 22 / 5: 39006. - 23-OCT-2006 21 / 6: 39011. - 28-OCT-2006 22 / 7: 39016. - - list/L=3:7 tax_month(var, var) - VARIABLE : TAX_MONTH(VAR, VAR) - SUBSET : 5 points (TIME) - 08-OCT-2006 22 / 3: 10.00 - 13-OCT-2006 23 / 4: 10.00 - 18-OCT-2006 22 / 5: 10.00 - 23-OCT-2006 21 / 6: 10.00 - 28-OCT-2006 22 / 7: 10.00 - - list/L=3:7 tax_yearfrac(var, var) - VARIABLE : TAX_YEARFRAC(VAR, VAR) - SUBSET : 5 points (TIME) - 08-OCT-2006 22 / 3: 0.7725 - 13-OCT-2006 23 / 4: 0.7862 - 18-OCT-2006 22 / 5: 0.7998 - 23-OCT-2006 21 / 6: 0.8134 - 28-OCT-2006 22 / 7: 0.8272 - - list/L=3:7 tax_year(var, var) - VARIABLE : TAX_YEAR(VAR, VAR) - SUBSET : 5 points (TIME) - 08-OCT-2006 22 / 3: 2006. - 13-OCT-2006 23 / 4: 2006. - 18-OCT-2006 22 / 5: 2006. - 23-OCT-2006 21 / 6: 2006. - 28-OCT-2006 22 / 7: 2006. - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_save_subset -! err684_bug_save_subset -! see ticke 2064, precision in internal comparison of coordinate data - -! previously gave a message about inconsistent coords - -use bug_save_subset.nc -save/clobber/file=aa.nc/i=5:15 sh - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_save_subset -! err684_bug_save_subset -! see ticke 2064, precision in internal comparison of coordinate data - -! previously gave a message about inconsistent coords - -use bug_save_subset.nc -save/clobber/file=aa.nc/i=5:15 sh - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_line_plot_zero -! err684_line_plot_zero.jnl -! plot all-zero variable gave blank plot. -! For a correct plot, yaxis_min and yaxis_max should be -1.0 and 1.0 not 0.0, 0.0 - -plot {0,0,0} -sh sym yaxis* -YAXIS_REVERSED = "0" -YAXIS_MIN = "-1.00000000" -YAXIS_MAX = "1.00000000" - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_delimited_precision -! err684_delimited_precision.jnl -! 5/2013 Fixing bug 2066 -! Reading numeric data with /FORM=DELIM converted to single precision - -! Data has numeric, longitude, and latitude values needing double precision. -! The seconds portion of time is also now read with double precision -sp cat data/delim_prec.dat - 734654.0000 330.1234500E 42.00001000N 00:00:1.00000001 - 734654.0104 330.1234600E 42.00004000N 00:00:1.00000003 - 734654.0208 330.1234700E 42.00006000N 00:00:1.00000007 - 734654.0313 330.1234800E 42.00007000N 00:00:1.000000095 - -! Delimited read, automatically detect data types -set data/ez/format=delim/del=" " delim_prec.dat -list/i=1:5/prec=10 v1,v2,v3,v4 - DATA SET: ./data/delim_prec.dat - X: 0.5 to 4.5 - Column 1: V1 - Column 2: V2 is V2 (degrees_east)(Longitude) - Column 3: V3 is V3 (degrees_north)(Latitude) - Column 4: V4 is V4 (hours)(Time of day) - V1 V2 V3 V4 -1 / 1: 734654.0000 330.1234500 42.00001000 2.777777806E-04 -2 / 2: 734654.0104 330.1234600 42.00004000 2.777777861E-04 -3 / 3: 734654.0208 330.1234700 42.00006000 2.777777972E-04 -4 / 4: 734654.0313 330.1234800 42.00007000 2.777778042E-04 - -! Delimited read, specify data types -can dat/all -set data/ez/format=delim/del=" "/var="day,lon,lat,tim"/type="numeric,longitude,latitude,time" delim_prec.dat -list/prec=10 day, lon, lat, tim - DATA SET: ./data/delim_prec.dat - X: 0.5 to 4.5 - Column 1: DAY is day - Column 2: LON is lon (degrees_east)(Longitude) - Column 3: LAT is lat (degrees_north)(Latitude) - Column 4: TIM is tim (hours)(Time of day) - DAY LON LAT TIM -1 / 1: 734654.0000 330.1234500 42.00001000 2.777777806E-04 -2 / 2: 734654.0104 330.1234600 42.00004000 2.777777861E-04 -3 / 3: 734654.0208 330.1234700 42.00006000 2.777777972E-04 -4 / 4: 734654.0313 330.1234800 42.00007000 2.777778042E-04 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err6842_context_shape -! err6842_context_shape.jnl -! 5/2013 acm -! Continuing the fixes for #1801 (see ticket 2051, and -! see err68_context_shape.jnl - -! Compound expressions did not always return the correct -! result,depending on the order of the sub-expressions. - -use coads_climatology - -! All the returns in this script should say XYT - -! Here the second used to just say XY - -let a = sst - sst[t=1:12@ave] -let b = sst - sst[t=@ave] -say `a,ret=shape` - !-> MESSAGE/CONTINUE XYT -XYT -say `b,ret=shape` - !-> MESSAGE/CONTINUE XYT -XYT - -let a = sst[t=1:12@ave] + sst -let b = sst[t=@ave] + sst -say `a,ret=shape` - !-> MESSAGE/CONTINUE XYT -XYT -say `b,ret=shape` - !-> MESSAGE/CONTINUE XYT -XYT - -! The second used to just say XY -! and the third said XY - -let a = sst - sst[t=1:12@ave] + sst[x=1:100@ave] -let b = sst - sst[t=@ave] + sst[x=@ave] -let c = sst - sst[x=@ave] + sst[t=@ave] -say `a,ret=shape` - !-> MESSAGE/CONTINUE XYT -XYT -say `b,ret=shape` - !-> MESSAGE/CONTINUE XYT -XYT -say `c,ret=shape` - !-> MESSAGE/CONTINUE XYT -XYT - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_evnt_z -! err684_evnt_z.jnl -! see ticket 2054 - -! Result of @EVNT is correct in x direction - -let my_var1 = { 0, 0, 1, 2, 3, 4 } -let my_event1 = my_var1[x=@evnt:0.1] -list my_var1, my_event1! Right answer - X: 0.5 to 6.5 - Column 1: MY_VAR1 is { 0, 0, 1, 2, 3, 4 } - Column 2: MY_EVENT1 is MY_VAR1[X=@EVNT:0.1] - MY_VAR1 MY_EVENT1 -1 / 1: 0.000 0.000 -2 / 2: 0.000 0.000 -3 / 3: 1.000 1.000 -4 / 4: 2.000 1.000 -5 / 5: 3.000 1.000 -6 / 6: 4.000 1.000 - -! Should be same in the Z direction: - -let my_var = zsequence( my_var1) -let my_event = my_var[z=@evnt:0.1] -list my_var, my_event - Z: 0.5 to 6.5 - Column 1: MY_VAR is ZSEQUENCE( MY_VAR1) - Column 2: MY_EVENT is MY_VAR[Z=@EVNT:0.1] - MY_VAR MY_EVENT -1 / 1: 0.000 0.000 -2 / 2: 0.000 0.000 -3 / 3: 1.000 1.000 -4 / 4: 2.000 1.000 -5 / 5: 3.000 1.000 -6 / 6: 4.000 1.000 - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_save_expression -! err684_save_expression.jnl -! Bug 2076. If we write out an expression that has not been defined -! as a user-variable, the variable didn't have missing_value and _FillValue -! attributes and was written as single-precision float. - -! Define a variable - result is correct -use coads_climatology -let a = sst[x=@ave,y=@ave]-sst[x=@ave,y=@ave,t=@ave] -save/clob/file=a.nc a -sp ncdump a.nc -netcdf a { -dimensions: - TIME25 = UNLIMITED ; // (3 currently) -variables: - double TIME25(TIME25) ; - TIME25:units = "hour since 0000-01-01 00:00:00" ; - TIME25:time_origin = "01-JAN-0000 00:00:00" ; - TIME25:modulo = " " ; - TIME25:axis = "T" ; - TIME25:standard_name = "time" ; - double A(TIME25) ; - A:missing_value = -1.e+34 ; - A:_FillValue = -1.e+34 ; - A:long_name = "SST[X=@AVE,Y=@AVE]-SST[X=@AVE,Y=@AVE,T=@AVE]" ; - A:long_name_mod = "X=20E:20E(380), Y=90S:90N, T=01-JAN 00:45:01-APR 08:12" ; - A:history = "From coads_climatology" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - TIME25 = 366, 1096.485, 1826.97 ; - - A = -0.0994369294620867, -0.0415768591395924, 0.141480238198152 ; -} - -save/clob/file=aa.nc sst[x=@ave,y=@ave]-sst[x=@ave,y=@ave,t=@ave] -sp ncdump aa.nc -netcdf aa { -dimensions: - TIME25 = UNLIMITED ; // (3 currently) -variables: - double TIME25(TIME25) ; - TIME25:units = "hour since 0000-01-01 00:00:00" ; - TIME25:time_origin = "01-JAN-0000 00:00:00" ; - TIME25:modulo = " " ; - TIME25:axis = "T" ; - TIME25:standard_name = "time" ; - double E410(TIME25) ; - E410:missing_value = -1.e+34 ; - E410:_FillValue = -1.e+34 ; - E410:long_name = "SST[X=@AVE,Y=@AVE]-SST[X=@AVE,Y=@AVE,T=@AVE]" ; - E410:long_name_mod = "X=20E:20E(380), Y=90S:90N, T=01-JAN 00:45:01-APR 08:12" ; - E410:history = "From coads_climatology" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - TIME25 = 366, 1096.485, 1826.97 ; - - E410 = -0.0994369294620867, -0.0415768591395924, 0.141480238198152 ; -} - -! Double check the missing-value matches what is written. - -save/clob/file=aa.nc/y=-81:-75 sst[x=@ave]-sst[x=@ave,t=@ave] -use aa.nc -list e410 - VARIABLE : SST[X=@AVE]-SST[X=@AVE,T=@AVE] - X=20E:20E(380), T=01-JAN 00:45:01-APR 08:12 - FILENAME : aa.nc - SUBSET : 4 by 3 points (LATITUDE-TIME) - 81S 79S 77S 75S - 1 2 3 4 - 16-JAN / 1: .... .... 0.278 0.379 - 15-FEB / 2: .... .... -0.005 -0.122 - 17-MAR / 3: .... .... -1.028 -0.484 - -can dat 2 - -! Can we ask to save as another data type? -! Note can't set the bad-flag of an expresion so -! asking for type of INT cannot match missing to -! data type so will fail. - -save/clob/file=aa.nc/outtype=float sst[x=@ave,y=@ave]-sst[x=@ave,y=@ave,t=@ave] -sp ncdump aa.nc -netcdf aa { -dimensions: - TIME25 = UNLIMITED ; // (3 currently) -variables: - double TIME25(TIME25) ; - TIME25:units = "hour since 0000-01-01 00:00:00" ; - TIME25:time_origin = "01-JAN-0000 00:00:00" ; - TIME25:modulo = " " ; - TIME25:axis = "T" ; - TIME25:standard_name = "time" ; - float E410(TIME25) ; - E410:missing_value = -1.e+34f ; - E410:_FillValue = -1.e+34f ; - E410:long_name = "SST[X=@AVE,Y=@AVE]-SST[X=@AVE,Y=@AVE,T=@AVE]" ; - E410:long_name_mod = "X=20E:20E(380), Y=90S:90N, T=01-JAN 00:45:01-APR 08:12" ; - E410:history = "From coads_climatology" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - TIME25 = 366, 1096.485, 1826.97 ; - - E410 = -0.09943693, -0.04157686, 0.1414802 ; -} - -save/clob/file=aa.nc/outtype=float/y=-81:-75 sst[x=@ave]-sst[x=@ave,t=@ave] -use aa.nc -list e410 - VARIABLE : SST[X=@AVE]-SST[X=@AVE,T=@AVE] - X=20E:20E(380), T=01-JAN 00:45:01-APR 08:12 - FILENAME : aa.nc - SUBSET : 4 by 3 points (LATITUDE-TIME) - 81S 79S 77S 75S - 1 2 3 4 - 16-JAN / 1: .... .... 0.278 0.379 - 15-FEB / 2: .... .... -0.005 -0.122 - 17-MAR / 3: .... .... -1.028 -0.484 - -can dat 2 - -! Note can't set the bad-flag of an expresion so -! asking for type of INT cannot match missing to -! data type so will return an error. - -set mode ignore -save/clob/file=aa.nc/outtype=int sst[x=@ave,y=@ave]-sst[x=@ave,y=@ave,t=@ave] - -set mode/last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_degC_axlab -! err684_degC_axlab.jnl -! ACM 6/2013 -! See ticket 2080. Units of degree_C interpreted as if degree_north. - -ppl clsplt -set win/asp=1 -can mode logo -set mode meta degC_axlab.plt - -let/units="degree_C"/title=temperature temp = {1,2,3,2,0} -let/units="m"/title=depth depth = {1,5,1,5,0} -plot/vs temp, depth - -set mode/last meta -set mode/last logo - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_null_stringwrite -! err684_null_stringwrite.jnl -! 18-Jun-2013 ACM -! -! Bug 2081 -! write a null string variable (0-length string) to NetCDF - -! This is ok -let avar = {"a", "", "c"} -save/file=a.nc/clobber avar - -! Write just a null value resulted in a NetCDF library error - -set mode ignore -let anull = avar[i=2] - -save/clobber/file=a.nc anull -set mode/last ignore - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_FillValue_xml -! err684_FillValue_xml.jnl -! ACM 6/2013 -! -! See the dataset at http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/woa09_1deg_monthly -! where the "number of" variables have _FillValues attributes = -2147483647 -! This value was being written to the xml headers as a float, without enough precision. -! See las ticket #761, fixes in show_data_set_vars_xml.F - -! should be -2147483647 -! instead of: -2.147484E+09 - -use fill_value_int.nc -sh dat/var/xml - - -INT variable with _FillValue -2147483647 - - - - - - - - - -2147483647 - - - - - - - - - -LON1 - - - - - - - - - - - - - - - 2 - - - 300.5 - - - 301.5 - - - - - - - - - 360 - - - - - - - - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_axticlab -! err684_axticlab -! 7/10/2013 *acm -! -! ticket 1990: axis tic labels for higher precison data -! had just 2 digits, and didnt capture the data range. - -set mode meta axticlabel.plt - -let/title="tic labels on dependent axis" var = {\ -1.715,1.7136,1.711,1.7083,1.7056,1.703,1.7003,1.6976,1.695,1.6923,\ -1.6897,1.687,1.6843,1.6817,1.679,1.6765,1.676,1.676} - -plot/line/sym/title="Vert axis labels should be 1.675 thru 1.715" var -cancel mode meta - -! rename the metafile. Else we get weird contents in axticlabel.plt -! once the whole benchmark suite has finished. (why?) -set mode meta metafile.plt -cancel mode meta - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_dotstart -! err684_dotstart.jnl -! 12-Jul-2013 ACM -! -! Bug 2084. Avoid a STOP if the expression starts with a . -! Issue a normal error message if its an invalid string. - -set mode ignore - -! This previously kicked out with STOP ALG_BREAK_UP -! Now will issue an error -list .hello - -! Related syntax: var.att. Generate errors since no dataset is open -list a.units -list ..history - -! Just a dot is interpretd as a number. -list . - VARIABLE : constant - 0.0000 - -set mode/last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_vfine_to_coarse - ! err684_vfine_to_coarse - ! see ticket 2070. - -def ax/x/edge axi = {0,31,61,92} -def ax/x/edge axi_coarse = {0, 92} -let vdat = {3.034547, 3.078104, 3.059311} -let v = vdat[gx=axi@asn] -let v_coarse = v[gx=axi_coarse@max] - -list v_coarse - VARIABLE : V[GX=AXI_COARSE@MAX] - X : 46 - 3.078 -list v eq v_coarse[gx=v@ave] - VARIABLE : V EQ V_COARSE[GX=V@AVE] - SUBSET : 3 points (X) - 15.5 / 1: 0.000 - 46 / 2: 1.000 - 76.5 / 3: 0.000 - - -! Y direction -can var/all - -def ax/y/edge axi = {0,31,61,92} -def ax/y/edge axi_coarse = {0, 92} -let vdat = ySEQUENCE({3.034547, 3.078104, 3.059311}) -let v = vdat[gy=axi@asn] -let v_coarse = v[gy=axi_coarse@max] - -list v_coarse - VARIABLE : V[GY=AXI_COARSE@MAX] - Y : 46 - 3.078 -list v eq v_coarse[gy=v@ave] - VARIABLE : V EQ V_COARSE[GY=V@AVE] - SUBSET : 3 points (Y) - 15.5 / 1: 0.000 - 46 / 2: 1.000 - 76.5 / 3: 0.000 - - -! Z direction -can var/all - -def ax/z/edge axi = {0,31,61,92} -def ax/z/edge axi_coarse = {0, 92} -let vdat = zSEQUENCE({3.034547, 3.078104, 3.059311}) -let v = vdat[gz=axi@asn] -let v_coarse = v[gz=axi_coarse@max] - -list v_coarse - VARIABLE : V[GZ=AXI_COARSE@MAX] - Z : 46 - 3.078 -list v eq v_coarse[gz=v@ave] - VARIABLE : V EQ V_COARSE[GZ=V@AVE] - SUBSET : 3 points (Z) - 15.5 / 1: 0.000 - 46 / 2: 1.000 - 76.5 / 3: 0.000 - - -! T direction -can var/all - -def ax/t/edge axi = {0,31,61,92} -def ax/t/edge axi_coarse = {0, 92} -let vdat = TSEQUENCE({3.034547, 3.078104, 3.059311}) -let v = vdat[gt=axi@asn] -let v_coarse = v[gt=axi_coarse@max] - -list v_coarse - VARIABLE : V[GT=AXI_COARSE@MAX] - T : 46 - 3.078 -list v eq v_coarse[gt=v@ave] - VARIABLE : V EQ V_COARSE[GT=V@AVE] - SUBSET : 3 points (T) - 15.5 / 1: 0.000 - 46 / 2: 1.000 - 76.5 / 3: 0.000 - - -! E direction -can var/all - -def ax/e/edge axi = {0,31,61,92} -def ax/e/edge axi_coarse = {0, 92} -let vdat = ESEQUENCE({3.034547, 3.078104, 3.059311}) -let v = vdat[ge=axi@asn] -let v_coarse = v[ge=axi_coarse@max] - -list v_coarse - VARIABLE : V[GE=AXI_COARSE@MAX] - E : 46 - 3.078 -list v eq v_coarse[ge=v@ave] - VARIABLE : V EQ V_COARSE[GE=V@AVE] - SUBSET : 3 points (E) - 15.5 / 1: 0.000 - 46 / 2: 1.000 - 76.5 / 3: 0.000 - - - -! F direction -can var/all - -def ax/f/edge axi = {0,31,61,92} -def ax/f/edge axi_coarse = {0, 92} -let vdat = FSEQUENCE({3.034547, 3.078104, 3.059311}) -let v = vdat[gf=axi@asn] -let v_coarse = v[gf=axi_coarse@max] - -list v_coarse - VARIABLE : V[GF=AXI_COARSE@MAX] - F : 46 - 3.078 -list v eq v_coarse[gf=v@ave] - VARIABLE : V EQ V_COARSE[GF=V@AVE] - SUBSET : 3 points (F) - 15.5 / 1: 0.000 - 46 / 2: 1.000 - 76.5 / 3: 0.000 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_repeated_coordindates -! err685_repeated_coordindates.jnl -! The NOTE about repeated axis coordaintes reported the wrong index location. - -use latestOb.nc - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_packed_output -! err684_packed_output.jnl -! See ticket 2089 -! By default keep the output type, means we need to -! re-pack packed data. - -use err684_packed_output.nc -list/i=1:3 sst - VARIABLE : Daily Sea Surface Temperature (degC) - FILENAME : err684_packed_output.nc - SUBSET : 3 by 4 points (LONGITUDE-LATITUDE) - TIME : 01-OCT-2012 00:00 - 80.13E 80.38E 80.63E - 1 2 3 - 15.88N / 4: .... .... 29.03 - 15.63N / 3: .... 29.18 29.09 - 15.38N / 2: 29.36 29.21 29.10 - 15.13N / 1: 29.40 29.27 29.13 - -! data is SHORT, is not scaled - -save/clobber/file=sst_new.nc sst - -can data/all -use sst_new.nc -list/i=1:3 sst - VARIABLE : Daily Sea Surface Temperature (degC) - FILENAME : sst_new.nc - SUBSET : 3 by 4 points (LONGITUDE-LATITUDE) - TIME : 01-OCT-2012 00:00 - 80.13E 80.38E 80.63E - 1 2 3 - 15.88N / 4: .... .... 29.03 - 15.63N / 3: .... 29.18 29.09 - 15.38N / 2: 29.36 29.21 29.10 - 15.13N / 1: 29.40 29.27 29.13 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_string_dim_name -! err685_string_dim_name.jnl -! Ticket 2091. If the string variable shares its dimension name, -! want to just mark it as a file variable not a coord variable. - -! Previously issued warnings about string coordinate variable. -use trajectory_trajectory_name.nc - -! Previously trajectory was not listed among the file variables. -list ..varnames - VARIABLE : ..VARNAMES - FILENAME : trajectory_trajectory_name.nc - SUBSET : 6 points (X) - 1 / 1:"trajectory" - 2 / 2:"rowSize" - 3 / 3:"longitude" - 4 / 4:"latitude" - 5 / 5:"time" - 6 / 6:"temp" - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err684_define_grid -! err684_define_grid.jnl -! 25-Oct-2013 ACM -! -! Bug 2096, defining grid with some user-defined axes. Previously -! this resulted in err msg with inappropriate orientation for Z axis - -define axis/z=0:100:2/depth/unit=meters zax -define axis/x=-178:-157:1/units=degrees_east lon_ax -define axis/y=54:66:0.5/units=degrees_north lat_ax - -define grid/x=lon_ax/y=lat_ax/z=zax three_d_grd - - -GO bn_reset bn_dsg_e_x -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_e_x -GO bn_dsg_e_x -! bn_dsg_e.jnl -! Note: This test is for non-dsg-enabled Ferret. DSG_enabled ferret -! sees the file diffrently... -! -! Discrete Sampling Geometries files -! Create grids such that the instance dimension -! is on the E axis, so that the variable which -! has the cf_role attribute has an E grid. -! The obs axis is in the X direction. - -use dsg.nc -sh dat - currently SET data sets: - 1> ./data/dsg.nc (default) - DSG Feature type Profile - name title I J K L M N - ROWSIZE number of obs for this profile ... ... ... ... 1:3 ... - PROFILE profile ID: Cruise and Station ... ... ... ... 1:3 ... - TIME time ... ... ... ... 1:3 ... - LATITUDE station latitude ... ... ... ... 1:3 ... - LONGITUDE - station longitude ... ... ... ... 1:3 ... - POT_TEMP_DEGC - pot_temp_degc ... ... tot 34 ... 1:3 ... - SAL sal ... ... tot 34 ... 1:3 ... - DEPTH DEPTH_M ... ... tot 34 ... 1:3 ... - -sh att profile - attributes for dataset: ./data/dsg.nc - profile.missing_value = -1.E+34 - profile._FillValue = -1.E+34 - profile.long_name = profile ID: Cruise and Station - profile.cf_role = profile_id - profile.history = From FINAL_verification_data_all_PacOOS_NHL_OCNMS_CCCC_03072013.txt -sh grid rowsize - GRID GEN1 - name axis # pts start end subset - normal X - normal Y - normal Z - normal T - FEATURES E (instance) 3 r 1 3 full - normal F -sh grid sal - GRID (G102) - DSG Feature type Profile - name axis # pts start end subset - normal X - normal Y - FEATURE_Z DEPTH (m) 34 r- 2.12 33.211 Variable lengths - normal T - FEATURES E (instance) 3 r 1 3 full - normal F - -! This file from the datset "West Coast Carbon cruises" in our -! example erdadp, has the cf_role attribute on a coordinate variable. -! prof, time, latitude, longitude, and rowsize are on the E axis -! press_db and pco2 are on the X asis - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - -sh dat 2 - currently SET data sets: - 2> ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc (default) - DSG Feature type Profile - name title I J K L M N - PROF Prof ... ... ... ... 1:21 ... - PROFILE profile ID: Cruise and Station ... ... ... ... 1:21 ... - TIME Time ... ... ... ... 1:21 ... - LATITUDE Latitude ... ... ... ... 1:21 ... - LONGITUDE - Longitude ... ... ... ... 1:21 ... - ROWSIZE Number of Observations for this ... ... ... ... 1:21 ... - PRESS_DB PRESS_DB ... ... tot 373 ... 1:21 ... - PCO2 PCO2 ... ... tot 373 ... 1:21 ... - -sh att (profile) - attributes for dataset: ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - (profile)._FillValue = -1.E+34 - (profile).actual_range = 70, 90 - (profile).cf_role = profile_id - (profile).history = From allDataFrom2007-2011-2012WestCoastCarbonCruises-revised3-6-13-1.txt - (profile).long_name = profile ID: Cruise and Station - (profile).missing_value = -1.E+34 - (profile).orig_file_axname = profile -sh grid rowsize - GRID GSS1 - name axis # pts start end subset - normal X - normal Y - normal Z - normal T - FEATURES1 E (instance) 21 r 1 21 full - normal F -sh grid pco2 - GRID (G102) - DSG Feature type Profile - name axis # pts start end subset - normal X - normal Y - FEATURE_Z1 Z 373 r- 2.85 2800.2 Variable lengths - normal T - FEATURES1 E (instance) 21 r 1 21 full - normal F - -GO bn_reset bn_nco_append -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_nco_append -GO bn_nco_append -! bn_nco_append.jnl -! 5/2013 add a test appending files with ncks - - ! These functions use Unix NCO utilities, found at http://nco.sourceforge.net/ - ! If NCO is not installed, it is fine to comment out this script when running - ! the Ferret benchmark suite. - -! Prior to v6.85 Ferret's NCO function always included -O for Override. -! Appending failed. In v6.85+, if -A is included then dont send -O to ncks. -use z1 -use z2 -sh dat - currently SET data sets: - 1> ./z1.nc - name title I J K L - DDAT_ORIG - DDAT[GZ=ZAXIS_ORIG@ASN] ... ... 1:5 ... - - 2> ./z2.nc (default) - name title I J K L - CYCLE_ORIG - CYCLE[GZ=ZAXIS_ORIG@ASN] ... ... 1:5 ... - - -! Write a file to be appended to and append variable in z1.nc to the file. - -save/clobber/file=append_to_this.nc cycle_orig -load nco("ncks", "-A -h z1.nc append_to_this.nc") -sp ncdump -h append_to_this.nc -netcdf append_to_this { -dimensions: - ZAXIS_ORIG = 5 ; -variables: - double ZAXIS_ORIG(ZAXIS_ORIG) ; - ZAXIS_ORIG:point_spacing = "even" ; - ZAXIS_ORIG:axis = "Z" ; - ZAXIS_ORIG:standard_name = "altitude" ; - double CYCLE_ORIG(ZAXIS_ORIG) ; - CYCLE_ORIG:missing_value = -1.e+34 ; - CYCLE_ORIG:_FillValue = -1.e+34 ; - CYCLE_ORIG:long_name = "CYCLE[GZ=ZAXIS_ORIG@ASN]" ; - CYCLE_ORIG:history = "From z2" ; - double DDAT_ORIG(ZAXIS_ORIG) ; - DDAT_ORIG:missing_value = -1.e+34 ; - DDAT_ORIG:_FillValue = -1.e+34 ; - DDAT_ORIG:long_name = "DDAT[GZ=ZAXIS_ORIG@ASN]" ; - -// global attributes: - :history = "Tue Aug 20 12:18:32 2019: ncks -h -A -h z1.nc append_to_this.nc\n", - "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; - :history_of_appended_files = "Tue Aug 20 12:18:32 2019: Appended file z1.nc had following \"history\" attribute:\n", - "PyFerret V7.51 (debug) 20-Aug-19\n", - "" ; - :NCO = "netCDF Operators version 4.7.5 (Homepage = http://nco.sf.net, Code = http://github.com/nco/nco)" ; -} - -GO bn_reset bn_nobounds -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_nobounds -GO bn_nobounds -! bn_nobounds.jnl -! The SAVE/NOBOUNDS qualifier causes bounds never to be written -! even if the data is irregular, and even if the axis came into -! Ferret with bounds. - -define axis/x/units=meters xirreg = {0,1,2,4,8} -let avar = x[gx=xirreg] -save/clobber/file=a.nc avar -sp ncdump a.nc -netcdf a { -dimensions: - XIRREG = 5 ; - bnds = 2 ; -variables: - double XIRREG(XIRREG) ; - XIRREG:point_spacing = "uneven" ; - XIRREG:axis = "X" ; - XIRREG:bounds = "XIRREG_bnds" ; - XIRREG:units = "meters" ; - double XIRREG_bnds(XIRREG, bnds) ; - double AVAR(XIRREG) ; - AVAR:missing_value = -1.e+34 ; - AVAR:_FillValue = -1.e+34 ; - AVAR:long_name = "X[GX=XIRREG]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XIRREG = 0, 1, 2, 4, 8 ; - - XIRREG_bnds = - -0.5, 0.5, - 0.5, 1.5, - 1.5, 3, - 3, 6, - 6, 10 ; - - AVAR = 0, 1, 2, 4, 8 ; -} -save/nobounds/clobber/file=a.nc avar -sp ncdump a.nc -netcdf a { -dimensions: - XIRREG = 5 ; -variables: - double XIRREG(XIRREG) ; - XIRREG:point_spacing = "uneven" ; - XIRREG:axis = "X" ; - XIRREG:units = "meters" ; - double AVAR(XIRREG) ; - AVAR:missing_value = -1.e+34 ; - AVAR:_FillValue = -1.e+34 ; - AVAR:long_name = "X[GX=XIRREG]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XIRREG = 0, 1, 2, 4, 8 ; - - AVAR = 0, 1, 2, 4, 8 ; -} - -! The dataset has a bounds attribute on the time axis -! (the bounds themselves get corrected by Ferret on opening the file) -use gappy_bounds.nc -sh dat - currently SET data sets: - 1> ./data/gappy_bounds.nc (default) - name title I J K L - A SST[X=150:180@AVE,Y=-10:0@AVE] ... ... ... 1:6 - - -! See the bounds attribute on the t axis -sh dat/att - currently SET data sets: - 1> ./data/gappy_bounds.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 24 T FERRET V5.60 24-May-04 - -(TGAP) DOUBLE units CHAR 30 T DAYS since 1990-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-1990 00:00:00 - axis CHAR 1 T T - bounds CHAR 9 T TGAP_bnds - orig_file_axname - CHAR 4 F TGAP - - TGAP_bnds DOUBLE - - A FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 30 T SST[X=150:180@AVE,Y=-10:0@AVE] - history CHAR 10 T From coads - - -! On a SAVE/NOBOUNDS, do not write the bounds -! and do not write a bounds attribute on the axis. -save/clobber/file=a.nc/nobounds a -sp ncdump -h a.nc -netcdf a { -dimensions: - TGAP = UNLIMITED ; // (6 currently) -variables: - double TGAP(TGAP) ; - TGAP:units = "days since 1990-01-01 00:00:00" ; - TGAP:time_origin = "01-JAN-1990 00:00:00" ; - TGAP:axis = "T" ; - TGAP:standard_name = "time" ; - float A(TGAP) ; - A:missing_value = -1.e+34f ; - A:_FillValue = -1.e+34f ; - A:long_name = "SST[X=150:180@AVE,Y=-10:0@AVE]" ; - A:history = "From coads" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! On a SAVE either with /BOUNDS or no bounds qualifier, -! bounds are written for this irregular time axis. -save/clobber/file=a.nc/bounds a - -sp ncdump -h a.nc -netcdf a { -dimensions: - TGAP = UNLIMITED ; // (6 currently) - bnds = 2 ; -variables: - double TGAP(TGAP) ; - TGAP:units = "days since 1990-01-01 00:00:00" ; - TGAP:time_origin = "01-JAN-1990 00:00:00" ; - TGAP:axis = "T" ; - TGAP:bounds = "TGAP_bnds" ; - TGAP:standard_name = "time" ; - double TGAP_bnds(TGAP, bnds) ; - float A(TGAP) ; - A:missing_value = -1.e+34f ; - A:_FillValue = -1.e+34f ; - A:long_name = "SST[X=150:180@AVE,Y=-10:0@AVE]" ; - A:history = "From coads" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - - -GO bn_reset bn_write_integer_att -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_write_integer_att -GO bn_write_integer_att -! bn_write_integer_att.jnl -! ACM 6/2013 -! -! This file has an integer attribute -! MHCHLA:numberOfObservations = 15736939 ; -! With double-precision Ferret, we need to call CD_WRITE_ATTVAL_DP -! in cdf_list.F, so that the value, read in as a double, is written -! out correctly (else get a netcdf data type matching error). - -use write_int_att.nc -sh att mhchla - attributes for dataset: ./data/write_int_att.nc - MHCHLA.missing_value = -9999999 - MHCHLA._FillValue = -9999999 - MHCHLA.actual_range = 0.00049, 91.76669 - MHCHLA.coordsys = geographic - MHCHLA.fraction_digits = 2 - MHCHLA.long_name = Chlorophyll-a, Aqua MODIS, NPP, 0.05 degrees, Global, Science Quality - MHCHLA.numberOfObservations = 1.573694E+07 - MHCHLA.percentCoverage = 0.4216215 - MHCHLA.standard_name = concentration_of_chlorophyll_in_sea_water - MHCHLA.units = mg m-3 - MHCHLA.history = From http://oceanwatch.pfeg.noaa.gov/thredds/dodsC/satellite/MH/chla/mday -set att/output=all mhchla -save/file=a.nc/clobber mhchla - -sp ncdump a.nc | grep numberOfObservations - MHCHLA:numberOfObservations = 15736939 ; - - - -GO bn_reset bn_descriptor_mc -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_descriptor_mc -GO bn_descriptor_mc -! bn_descriptor_mc.jnl -! 7/2013 ACM -! See ticket 2087 -! -! Allow extension ".mc" to indicate a descriptor file, as discussed in -! http://www.pmel.noaa.gov/maillists/tmap/ferret_users/fu_2013/msg00355.html -! -use des.mc -list/x=180/y=0 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : des.mc - SUBSET : 6 points (TIME) - LONGITUDE: 180E (interpolated) - LATITUDE : 0 (interpolated) - 16-JAN-0000 / 1: 28.36 - 15-FEB-0000 / 2: 28.38 - 17-MAR-0000 / 3: 28.00 - 16-APR-0000 / 4: 27.99 - 16-MAY-0000 / 5: 28.41 - 16-JUN-0000 / 6: 28.23 - -! Also implement /FORMAT=desriptor for both USE and SET DATA - -use/format=desc des.my_descriptor -list /x=300/y=10 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : des.my_descriptor - SUBSET : 4 points (TIME) - LONGITUDE: 60W (interpolated) - LATITUDE : 10N (interpolated) - 17-MAR-0000 / 1: 26.70 - 16-APR-0000 / 2: 27.17 - 16-MAY-0000 / 3: 27.39 - 16-JUN-0000 / 4: 27.65 - -GO bn_reset bn_plot_color_only -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot_color_only -GO bn_plot_color_only -! bn_plot_color_only.jnl -! 9/20/2013 ACM -! ticket 2094 -! PLOT/COLOR with no argument skips the black pen and starts with the next one. - -let pi=atan(1.)*4. -let a = (-1)*pi*4 + i[i=1:500]*(8*pi/500) -let b = sin(a)/a - - -set view upper -plot/color b, b[i=@shf:20] - -! With user-defined colors -ppl color 2, 0, 50, 100 -ppl color 3, 100, 50, 0 -set view lower -plot/color/thick=3/dash=(0.05,0.1,0.2,0.1) b, b[i=@shf:20] - -! With extra user-defined colors -can view -set mode linec:12 -can win/all; set win/new -ppl color,7,100,65,51 ! orange -ppl color,8,0,55,0 ! dark green -ppl color,9,60,0,100 ! purple -ppl color,10,100,70,100 ! magenta -ppl color,11,80,70,60 ! tan -ppl color,12,100,88,0 ! yellow - -plot/thick/color/line/i=1:100 \ - cos(i/20), cos(i/24), cos(i/28), cos(i/32), \ - cos(i/36), cos(i/40), cos(i/44), cos(i/48), \ - cos(i/52), cos(i/56), cos(i/60), cos(i/64) - -cancel mode linecolors -can win/all; set win/new - -! If lines are plotted using /OVER, Ferret keeps track of the number of lines -! and continues with the next set of colors. When /startcolor is given, the -! count is incremented so that subsequent plots continue with the color -! sequence. - -! colors 1, 2, 3, 4 -set view upper -plot/thick/i=1:50/vlim=-1.1:1.1 sin(i/6) -plot/thick/i=1:50/over sin(i/7) -plot/thick/i=1:50/over 0.6*sin(i/8) -plot/thick/i=1:50/over 0.6*sin(i/9) - -! colors 2, 3, 4, 5 -set view lower -plot/thick/i=1:50/vlim=-1.1:1.1/COLOR sin(i/6) -plot/thick/i=1:50/over sin(i/7) -plot/thick/i=1:50/over 0.6*sin(i/8) -plot/thick/i=1:50/over 0.6*sin(i/9) - -! intentional errors -! /COLOR (w/o argument) not allowed on PLOT/OVER. - -can view -set mode ignore - -plot/i=1:100 sin(i/6) -plot/i=1:100/over/COLOR 0.6*sin(i/7) - -! PLOT/COLOR not allowed on PLOT/RIBBON. - -can view -plot/i=1:100/ribbon/COLOR sin(i/6),0.6*sin(i/7) - -set mode/last ignore - - - -GO bn_reset bn_vtree -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_vtree -GO bn_vtree -! bn_tree.jnl - -! 11/2013 -- demonstrate SHOW VARIABLE/TREE and RETRUN=STATUS -! 12/14 update to test regridding output using bn_vtree_regrid.jnl -! 11/15 - DEFINE DATA/AGG has become /T instead of /E - -CANCEL DATA/ALL -! pure abstract variable -- no dataset -let a = 1 -show var/tree a - A = 1 - -let b = 1 -let c = SIN(b) -show var/tree c - C = SIN(B) - B = 1 - -! create dummy datasets so we'll have named file variables to play with -let fv1 = 1 -let fvx = x[i=1:3] -let fvz = Z[k=1:3] -SAVE/CLOBBER/QUIET/FILE=my_file_vars.nc fv1, fvx, fvz -SAVE/CLOBBER/QUIET/FILE=other_file_vars.nc fv1 -SAVE/CLOBBER/QUIET/FILE=another_file_vars.nc fv1 -CAN VAR/ALL -use my_file_vars, other_file_vars, another_file_vars -set data 1 - -! ================ - -! more pure abstract variables -let a = 1 -let b = 1 -let c = SIN(b) -go bn_vtree.sub c -/TREE=ALL - in default dataset my_file_vars - C = SIN(B) - B = 1 -/TREE=USER - in default dataset my_file_vars - C = SIN(B) - B = 1 -/TREE=FILE -c is ready and AVAILABLE -************************ - -! file variables -go bn_vtree.sub fv1 -/TREE=ALL - in default dataset my_file_vars - FV1 -/TREE=USER -/TREE=FILE - FV1[d=my_file_vars] -fv1 is ready and AVAILABLE -************************ -show var/tree/d=other_file_vars fv1 - -! expressions -let a = fv1 + fvx -go bn_vtree.sub a -/TREE=ALL - in default dataset my_file_vars - A = FV1 + FVX - FV1 - FVX -/TREE=USER - in default dataset my_file_vars - A = FV1 + FVX -/TREE=FILE - FV1[d=my_file_vars] - FVX[d=my_file_vars] -a is ready and AVAILABLE -************************ - -let a = fv1[d=1] - fv1[d=2] -vtree=file a - FV1[d=my_file_vars] - FV1[d=other_file_vars] -vtree=all a - in default dataset my_file_vars - A = FV1[D=1] - FV1[D=2] - FV1 - FV1[d=other_file_vars] -vtree=all /d=1 a - in default dataset my_file_vars - A = FV1[D=1] - FV1[D=2] - FV1 - FV1[d=other_file_vars] -vtree=all /d=2 a - in default dataset other_file_vars - A = FV1[D=1] - FV1[D=2] - FV1[d=my_file_vars] - FV1 -******************************** - -! unrecognized variable names -go bn_vtree.sub noexist -/TREE=ALL - in default dataset my_file_vars - NOEXIST ?? <== UNKNOWN VARIABLE ****** -/TREE=USER - in default dataset my_file_vars - NOEXIST ?? <== UNKNOWN VARIABLE ****** -/TREE=FILE - *unknown variable: NOEXIST -the problem is UNKNOWN VARIABLE: NOEXIST -************************ - -! unrecognized dataset -go bn_vtree.sub v[d=noexist] -/TREE=ALL - in default dataset my_file_vars - V[D=NOEXIST] ?? <== UNKNOWN DATASET ****** -/TREE=USER - in default dataset my_file_vars - V[D=NOEXIST] ?? <== UNKNOWN DATASET ****** -/TREE=FILE - *unknown dataset: V[D=NOEXIST] -the problem is UNKNOWN DATASET: V[D=NOEXIST] -************************ - -! unrecognized dataset and variable -go bn_vtree.sub novar[d=nodset] -/TREE=ALL - in default dataset my_file_vars - NOVAR[D=NODSET] ?? <== UNKNOWN DATASET ****** -/TREE=USER - in default dataset my_file_vars - NOVAR[D=NODSET] ?? <== UNKNOWN DATASET ****** -/TREE=FILE - *unknown dataset: NOVAR[D=NODSET] -the problem is UNKNOWN DATASET: NOVAR[D=NODSET] -************************ - -let b = noexist -go bn_vtree.sub b -/TREE=ALL - in default dataset my_file_vars - B = NOEXIST - NOEXIST ?? <== UNKNOWN VARIABLE ****** -/TREE=USER - in default dataset my_file_vars - B = NOEXIST - NOEXIST ?? <== UNKNOWN VARIABLE ****** -/TREE=FILE - *unknown variable: NOEXIST -the problem is UNKNOWN VARIABLE: NOEXIST -************************ - -! grid-changing functions -go bn_vtree.sub RESHAPE(fvx,fvz) -/TREE=ALL - in default dataset my_file_vars - FVX - FVZ -/TREE=USER -/TREE=FILE - FVX[d=my_file_vars] - FVZ[d=my_file_vars] -RESHAPE(fvx,fvz) is ready and AVAILABLE -************************ - -! file variable aux var -LET Zpts = Z[Z=0:500:100] -define axis/z/units=meters zax = zpts -LET fv1z = fv1[gz(fvz)=zpts] + fvx -go bn_vtree.sub fv1z -/TREE=ALL - in default dataset my_file_vars - FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX - FV1 - regrid to ZPTS = Z[Z=0:500:100] - FVZ - FVX -/TREE=USER - in default dataset my_file_vars - FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX - regrid to ZPTS = Z[Z=0:500:100] -/TREE=FILE - FV1[d=my_file_vars] - FVZ[d=my_file_vars] - FVX[d=my_file_vars] -fv1z is ready and AVAILABLE -************************ - -! user-defined aux vars -let depth = z[g=fvz] -LET fv1z = fv1[gz(depth)=zpts] + fvx -go bn_vtree.sub fv1z -/TREE=ALL - in default dataset my_file_vars - FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX - FV1 - regrid to ZPTS = Z[Z=0:500:100] - DEPTH = Z[G=FVZ] - FVX -/TREE=USER - in default dataset my_file_vars - FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX - regrid to ZPTS = Z[Z=0:500:100] - DEPTH = Z[G=FVZ] -/TREE=FILE - FV1[d=my_file_vars] - FVX[d=my_file_vars] -fv1z is ready and AVAILABLE -************************ - -let depth = z[g=fvz]+ 0*fvz[k=1] -LET fv1z = fv1[gz(depth)=zpts] + fvx -go bn_vtree.sub fv1z -/TREE=ALL - in default dataset my_file_vars - FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX - FV1 - regrid to ZPTS = Z[Z=0:500:100] - DEPTH = Z[G=FVZ]+ 0*FVZ[K=1] - FVZ - FVX -/TREE=USER - in default dataset my_file_vars - FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX - regrid to ZPTS = Z[Z=0:500:100] - DEPTH = Z[G=FVZ]+ 0*FVZ[K=1] -/TREE=FILE - FV1[d=my_file_vars] - FVZ[d=my_file_vars] - FVX[d=my_file_vars] -fv1z is ready and AVAILABLE -************************ - -! unknown aux var -LET fv1z = fv1[gz(noexist)=zpts] + fvx -go bn_vtree.sub fv1z -/TREE=ALL - in default dataset my_file_vars - FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX - NOEXIST (unknown auxiliary variable) - FVX -/TREE=USER - in default dataset my_file_vars - FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX - NOEXIST (unknown auxiliary variable) -/TREE=FILE - *unknown auxiliary variable: NOEXIST - FVX[d=my_file_vars] -the problem is UNKNOWN AUXILIARY VARIABLE: NOEXIST -************************ - -! unknown variable with known aux var -LET fv1z = noexist[gz(depth)=zpts] + fvx -go bn_vtree.sub fv1z -/TREE=ALL - in default dataset my_file_vars - FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX - NOEXIST[GZ(DEPTH)=ZPTS] ?? <== UNKNOWN VARIABLE ****** - regrid to ZPTS = Z[Z=0:500:100] - DEPTH = Z[G=FVZ]+ 0*FVZ[K=1] - FVZ - FVX -/TREE=USER - in default dataset my_file_vars - FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX - NOEXIST[GZ(DEPTH)=ZPTS] ?? <== UNKNOWN VARIABLE ****** - regrid to ZPTS = Z[Z=0:500:100] - DEPTH = Z[G=FVZ]+ 0*FVZ[K=1] -/TREE=FILE - *unknown variable: NOEXIST[GZ(DEPTH)=ZPTS] - FVZ[d=my_file_vars] - FVX[d=my_file_vars] -the problem is UNKNOWN VARIABLE: NOEXIST[GZ(DEPTH)=ZPTS] -************************ - -! unknown variable with unknown aux var -LET fv1z = noexist[gz(unknown_aux)=zpts] + fvx -go bn_vtree.sub fv1z -/TREE=ALL - in default dataset my_file_vars - FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX - NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ?? <== UNKNOWN VARIABLE ****** - regrid to ZPTS = Z[Z=0:500:100] - UNKNOWN_AUX (unknown auxiliary variable) - FVX -/TREE=USER - in default dataset my_file_vars - FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX - NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ?? <== UNKNOWN VARIABLE ****** - regrid to ZPTS = Z[Z=0:500:100] - UNKNOWN_AUX (unknown auxiliary variable) -/TREE=FILE - *unknown variable: NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] - *unknown auxiliary variable: UNKNOWN_AUX - FVX[d=my_file_vars] -the problem is UNKNOWN VARIABLE: NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] -************************ - -! aggregate (ensemble) dataset of file variables -ENSEMBLE my_agg = my_file_vars, other_file_vars, another_file_vars -go bn_vtree.sub fv1 -/TREE=ALL - in default dataset my_agg - FV1 (aggregate variable) - FV1[d=my_file_vars] - FV1[d=other_file_vars] - FV1[d=another_file_vars] -/TREE=USER - in default dataset my_agg - FV1 (aggregate variable) -/TREE=FILE - - FV1[d=my_file_vars] - FV1[d=other_file_vars] - FV1[d=another_file_vars] -fv1 is ready and AVAILABLE -************************ - -! aggregation in which some members are uvars -let/d=other_file_vars fvx = fv1 + x[gx=fvx[d=1],i=1:3] -let/d=another_file_vars fvx = 2*fv1 + x[gx=fvx[d=1],i=1:3] -ENSEMBLE my_uvar_agg = my_file_vars, other_file_vars, another_file_vars -go bn_vtree.sub fvx -/TREE=ALL - in default dataset my_uvar_agg - FVX (aggregate variable) - FVX[d=my_file_vars] - FVX[d=other_file_vars] = FV1 + X[GX=FVX[D=1],I=1:3] - FV1[d=other_file_vars] - FVX[d=another_file_vars] = 2*FV1 + X[GX=FVX[D=1],I=1:3] - FV1[d=another_file_vars] -/TREE=USER - in default dataset my_uvar_agg - FVX (aggregate variable) - FVX[d=other_file_vars] = FV1 + X[GX=FVX[D=1],I=1:3] - FVX[d=another_file_vars] = 2*FV1 + X[GX=FVX[D=1],I=1:3] -/TREE=FILE - - FVX[d=my_file_vars] - FV1[d=other_file_vars] - FV1[d=another_file_vars] -fvx is ready and AVAILABLE -************************ - -! recursions -! ... a circular parent dependency is a recursion; sibling dependency is not -let p0 = s1 + p1 -let p1 = s2 + p2 -let p2 = s3 + p3 -let p3 = p1 + S3 -go bn_vtree.sub p0 ! recursion -/TREE=ALL - in default dataset my_uvar_agg - P0 = S1 + P1 - S1 ?? <== UNKNOWN VARIABLE ****** - P1 = S2 + P2 - S2 ?? <== UNKNOWN VARIABLE ****** - P2 = S3 + P3 - S3 ?? <== UNKNOWN VARIABLE ****** - P3 = P1 + S3 - P1 = *** WARNING: RECURSIVE DEFINITION. See above - S3 ?? <== UNKNOWN VARIABLE ****** -/TREE=USER - in default dataset my_uvar_agg - P0 = S1 + P1 - S1 ?? <== UNKNOWN VARIABLE ****** - P1 = S2 + P2 - S2 ?? <== UNKNOWN VARIABLE ****** - P2 = S3 + P3 - S3 ?? <== UNKNOWN VARIABLE ****** - P3 = P1 + S3 - P1 = *** WARNING: RECURSIVE DEFINITION. See above - S3 ?? <== UNKNOWN VARIABLE ****** -/TREE=FILE - *unknown variable: S1 - *unknown variable: S2 - *unknown variable: S3 - *unknown variable: S3 -the problem is ILLEGAL RECURSIVE VARIABLES: P1 -************************ -let p3 = s1 + S3 -go bn_vtree.sub p0 ! ok -/TREE=ALL - in default dataset my_uvar_agg - P0 = S1 + P1 - S1 ?? <== UNKNOWN VARIABLE ****** - P1 = S2 + P2 - S2 ?? <== UNKNOWN VARIABLE ****** - P2 = S3 + P3 - S3 ?? <== UNKNOWN VARIABLE ****** - P3 = S1 + S3 - S1 ?? <== UNKNOWN VARIABLE ****** - S3 ?? <== UNKNOWN VARIABLE ****** -/TREE=USER - in default dataset my_uvar_agg - P0 = S1 + P1 - S1 ?? <== UNKNOWN VARIABLE ****** - P1 = S2 + P2 - S2 ?? <== UNKNOWN VARIABLE ****** - P2 = S3 + P3 - S3 ?? <== UNKNOWN VARIABLE ****** - P3 = S1 + S3 - S1 ?? <== UNKNOWN VARIABLE ****** - S3 ?? <== UNKNOWN VARIABLE ****** -/TREE=FILE - *unknown variable: S1 - *unknown variable: S2 - *unknown variable: S3 - *unknown variable: S1 - *unknown variable: S3 -the problem is UNKNOWN VARIABLE: S1 -************************ - -! suppressing duplicated siblings (twins) -let fv = fv1 + fv1 + fv1 -let uv = fvx + fvx + fvx -show var/tree/d=my_file_vars fv - in default dataset my_file_vars - FV = FV1 + FV1 + FV1 -show var/tree/d=my_uvar_agg fv - in default dataset my_uvar_agg - FV = FV1 + FV1 + FV1 - FV1 (aggregate variable) -show var/tree/d=other_file_vars uv - in default dataset other_file_vars - UV = FVX + FVX + FVX - FVX = FV1 + X[GX=FVX[D=1],I=1:3] -show var/tree/d=my_uvar_agg uv - in default dataset my_uvar_agg - UV = FVX + FVX + FVX - FVX (aggregate variable) - FVX[d=other_file_vars] = FV1 + X[GX=FVX[D=1],I=1:3] - FVX[d=another_file_vars] = 2*FV1 + X[GX=FVX[D=1],I=1:3] -*************************** - -! suppressing duplicates elsewhere in the family tree ("defined above") -let b = c -let c = 1 -let v1 = a + b + b^2 -let v2 = v1 + b + a + a ! a appears after v1 -let v3 = a + v1 + b + a + a ! a appears before v1 -go bn_vtree.sub v2 -/TREE=ALL - in default dataset my_uvar_agg - V2 = V1 + B + A + A - V1 = A + B + B^2 - A = FV1[D=1] - FV1[D=2] - FV1[d=my_file_vars] - FV1[d=other_file_vars] - B = C - C = 1 - B = (defined above) - A = (defined above) -/TREE=USER - in default dataset my_uvar_agg - V2 = V1 + B + A + A - V1 = A + B + B^2 - A = FV1[D=1] - FV1[D=2] - B = C - C = 1 - B = (defined above) - A = (defined above) -/TREE=FILE - FV1[d=my_file_vars] - FV1[d=other_file_vars] -v2 is ready and AVAILABLE -************************ -go bn_vtree.sub v3 -/TREE=ALL - in default dataset my_uvar_agg - V3 = A + V1 + B + A + A - A = FV1[D=1] - FV1[D=2] - FV1[d=my_file_vars] - FV1[d=other_file_vars] - V1 = A + B + B^2 - A = (defined above) - B = C - C = 1 - B = (defined above) -/TREE=USER - in default dataset my_uvar_agg - V3 = A + V1 + B + A + A - A = FV1[D=1] - FV1[D=2] - V1 = A + B + B^2 - A = (defined above) - B = C - C = 1 - B = (defined above) -/TREE=FILE - FV1[d=my_file_vars] - FV1[d=other_file_vars] -v3 is ready and AVAILABLE -************************ - -! collections of trees handled as a group -! display from large tree size to small, suppressing definitions already displayed -cancel var/all -let a = f -let b = fv1[d=my_file_vars] -let c = 1 -let d = b + c -let e = 1 -go bn_vtree.sub "a, b, c, noexist, d, e, fvx[d=my_file_vars]" -/TREE=ALL - in default dataset my_uvar_agg - D = B + C - B = FV1[D=MY_FILE_VARS] - FV1[d=my_file_vars] - C = 1 - A = F - F ?? <== UNKNOWN VARIABLE ****** - NOEXIST ?? <== UNKNOWN VARIABLE ****** - E = 1 - FVX[d=my_file_vars] -/TREE=USER - in default dataset my_uvar_agg - D = B + C - B = FV1[D=MY_FILE_VARS] - C = 1 - A = F - F ?? <== UNKNOWN VARIABLE ****** - NOEXIST ?? <== UNKNOWN VARIABLE ****** - E = 1 -/TREE=FILE - *unknown variable: F - FV1[d=my_file_vars] - *unknown variable: NOEXIST - FVX[d=my_file_vars] -the problem is UNKNOWN VARIABLE: F -************************ - -! reporting other errors in definitions - set mode ignore - - ! unidentified grid - let a = i[i=1:5] - let b = a[g=noexist] - go bn_vtree.sub b -/TREE=ALL - in default dataset my_uvar_agg - B = A[G=NOEXIST] - A = I[I=1:5] - regrid to NOEXIST ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset my_uvar_agg - B = A[G=NOEXIST] - A = I[I=1:5] - regrid to NOEXIST ?? <== UNKNOWN GRID ****** -/TREE=FILE - *unknown grid: NOEXIST -the problem is UNKNOWN GRID: NOEXIST -************************ - list b - - ! syntax error - format of longitude - let c = a[x=45s] - go bn_vtree.sub c -/TREE=ALL - in default dataset my_uvar_agg - C = A[X=45S] - A[X=45S] *** WARNING: ERROR IN DEFINITION -/TREE=USER - in default dataset my_uvar_agg - C = A[X=45S] - A[X=45S] *** WARNING: ERROR IN DEFINITION -/TREE=FILE - *WARNING: syntax error: A[X=45S] -the problem is ERROR IN EXPRESSION: A[X=45S] -************************ - list c - - ! syntax error - extra comma - let d = a[i=1,,j=2] - go bn_vtree.sub d -/TREE=ALL - in default dataset my_uvar_agg - D = A[I=1,,J=2] - A[I=1,,J=2] *** WARNING: ERROR IN DEFINITION -/TREE=USER - in default dataset my_uvar_agg - D = A[I=1,,J=2] - A[I=1,,J=2] *** WARNING: ERROR IN DEFINITION -/TREE=FILE - *WARNING: syntax error: A[I=1,,J=2] -the problem is ERROR IN EXPRESSION: A[I=1,,J=2] -************************ - list d - - ! syntax error - unknown pseudovariable - let e = a[p=1] - go bn_vtree.sub e -/TREE=ALL - in default dataset my_uvar_agg - E = A[P=1] - A[P=1] *** WARNING: ERROR IN DEFINITION -/TREE=USER - in default dataset my_uvar_agg - E = A[P=1] - A[P=1] *** WARNING: ERROR IN DEFINITION -/TREE=FILE - *WARNING: syntax error: A[P=1] -the problem is ERROR IN EXPRESSION: A[P=1] -************************ - list e - - ! out of limit region -- not detectable as error, because grids are never determined - let f = a[i=10] - go bn_vtree.sub f -/TREE=ALL - in default dataset my_uvar_agg - F = A[I=10] - A = I[I=1:5] -/TREE=USER - in default dataset my_uvar_agg - F = A[I=10] - A = I[I=1:5] -/TREE=FILE -f is ready and AVAILABLE -************************ - list f - - set mode/last ignore - -! dependency through attribute sharing (not yet implemented) -let a = fvz.long_name[d=1] -show var/tree a - in default dataset my_uvar_agg - A = FVZ.LONG_NAME[D=1] -let a = ..history[d=1] -show var/tree a - in default dataset my_uvar_agg - A = ..HISTORY[D=1] - -! ***** -! 12/14 addition to test regridding dependencies -go bn_vtree_regrid -! bn_vtree_regrid.jnl -! exercise 12/14 enhancements to display regrid target on a separate line -! updated 1/26/15 to exercise multiple regrid target outputs -! updated 2/23/15 to report target of regrid even when aux regridding occurs -! 5/2017 note that the fix for #2533 causes some duplicate UNKNOWN GRID lines - -! case 1: target grid known, regridded variable known -let myvar = 1 ! var to be regridded is known -let gvar = x[x=1:5] ! target regridding var is known -let a = myvar[g=gvar] + unvar + kvar -let kvar = 1 ! known var -! unvar is always unknown -sho var/tree a - in default dataset my_uvar_agg - A = MYVAR[G=GVAR] + UNVAR + KVAR - MYVAR = 1 - regrid to GVAR = X[X=1:5] - UNVAR ?? <== UNKNOWN VARIABLE ****** - KVAR = 1 - -! case 2: target grid known, regridded variable unknown -canc var/all -! myvar unknown -let gvar = x[x=1:5] ! target regridding var is known -let a = myvar[g=gvar] + unvar + kvar -let kvar = 1 ! known var -! unvar is always unknown -sho var/tree a - in default dataset my_uvar_agg - A = MYVAR[G=GVAR] + UNVAR + KVAR - MYVAR[G=GVAR] ?? <== UNKNOWN VARIABLE ****** - regrid to GVAR = X[X=1:5] - UNVAR ?? <== UNKNOWN VARIABLE ****** - KVAR = 1 - -! case 3: target grid unknown, regridded variable known -canc var/all -let myvar = 1 ! var to be regridded is known -! gvar unknown -let a = myvar[g=gvar] + unvar + kvar -let kvar = 1 ! known var -! unvar is always unknown -sho var/tree a - in default dataset my_uvar_agg - A = MYVAR[G=GVAR] + UNVAR + KVAR - MYVAR = 1 - regrid to GVAR ?? <== UNKNOWN GRID ****** - UNVAR ?? <== UNKNOWN VARIABLE ****** - KVAR = 1 - -! case 4: target grid unknown, regridded variable unknown -canc var/all -! myvar unknown -! gvar unknown -let a = myvar[g=gvar] + unvar + kvar -let kvar = 1 ! known var -! unvar is always unknown -sho var/tree a - in default dataset my_uvar_agg - A = MYVAR[G=GVAR] + UNVAR + KVAR - MYVAR[G=GVAR] ?? <== UNKNOWN VARIABLE ****** - regrid to GVAR ?? <== UNKNOWN GRID ****** - UNVAR ?? <== UNKNOWN VARIABLE ****** - KVAR = 1 - -! ************************************** -! same tests but now with a dataset named with the target grid -use coads_climatology -use levitus_climatology ! default to d=2 - -! case 1: target grid known, regridded variable known -canc var/all -let myvar = 1 ! var to be regridded is known -let a = myvar[g=sst[d=1]] + unvar + kvar -let kvar = 1 ! known var -! unvar is always unknown -sho var/tree=all a - in default dataset levitus_climatology - A = MYVAR[G=SST[D=1]] + UNVAR + KVAR - MYVAR = 1 - regrid to SST[D=1] ?? <== UNKNOWN GRID ****** - UNVAR ?? <== UNKNOWN VARIABLE ****** - KVAR = 1 - -! case 2: target grid known, regridded variable unknown -canc var/all -! myvar unknown -let a = myvar[g=sst[d=1]] + unvar + kvar -let kvar = 1 ! known var -! unvar is always unknown -sho var/tree=all a - in default dataset levitus_climatology - A = MYVAR[G=SST[D=1]] + UNVAR + KVAR - MYVAR[G=SST[D=1]] ?? <== UNKNOWN VARIABLE ****** - regrid to SST[D=1] ?? <== UNKNOWN GRID ****** - UNVAR ?? <== UNKNOWN VARIABLE ****** - KVAR = 1 - -! case 3a: target grid unknown, regridded variable known -canc var/all -let myvar = 1 ! var to be regridded is known -! gvar unknown -let a = myvar[g=gvar[d=1]] + unvar + kvar -let kvar = 1 ! known var -! unvar is always unknown -sho var/tree=all a - in default dataset levitus_climatology - A = MYVAR[G=GVAR[D=1]] + UNVAR + KVAR - MYVAR = 1 - regrid to GVAR[D=1] ?? <== UNKNOWN GRID ****** - UNVAR ?? <== UNKNOWN VARIABLE ****** - KVAR = 1 - -! case 3b: target grid unknown cuz of dataset, regridded variable known -canc var/all -let myvar = 1 ! var to be regridded is known -! gvar unknown -let a = myvar[g=sst[d=bad_dset]] + unvar + kvar -let kvar = 1 ! known var -! unvar is always unknown -sho var/tree=all a - in default dataset levitus_climatology - A = MYVAR[G=SST[D=BAD_DSET]] + UNVAR + KVAR - MYVAR[G=SST[D=BAD_DSET]] ?? <== UNKNOWN DATASET ****** - UNVAR ?? <== UNKNOWN VARIABLE ****** - KVAR = 1 - -! case 4: target grid unknown, regridded variable unknown -canc var/all -! myvar unknown -! gvar unknown -let a = myvar[g=gvar[d=1]] + unvar + kvar -let kvar = 1 ! known var -! unvar is always unknown -sho var/tree=all a - in default dataset levitus_climatology - A = MYVAR[G=GVAR[D=1]] + UNVAR + KVAR - MYVAR[G=GVAR[D=1]] ?? <== UNKNOWN VARIABLE ****** - regrid to GVAR[D=1] ?? <== UNKNOWN GRID ****** - UNVAR ?? <== UNKNOWN VARIABLE ****** - KVAR = 1 - -! ******************* -! file variable listing, only -canc var/all -let myvar = 1 -let fvar = airt[d=1] -let kvar = 1 ! known var -* /TREE=FILE with know regrid target -let a = myvar[g=sst[d=1]] + fvar + kvar -sho var/tree=file a - *unknown grid: SST[D=1] - *unknown variable: AIRT[D=1] - -* /TREE=FILE with unknow regrid target -let a = myvar[g=unknown] + fvar + kvar -sho var/tree=file a - *unknown grid: UNKNOWN - *unknown variable: AIRT[D=1] - -! ******************** -! regridding to multiple targets - -define axis/x=140e:160e:1 x1 -define axis/y=20s:20n:1 y1 -LET myvar = X[gx=x1] + Y[gy=y1] - -define axis/y=5s:5n:.5 yp5 - -go bn_vtree.sub myvar[g=temp] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] -/TREE=FILE - regrid to TEMP[d=levitus_climatology] -myvar[g=temp] is ready and AVAILABLE -************************ - -! second target *is* a named variable -go bn_vtree.sub myvar[g=temp,gy=sst[d=1]] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP - regrid to SST[D=1] ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to SST[D=1] ?? <== UNKNOWN GRID ****** -/TREE=FILE - regrid to TEMP[d=levitus_climatology] - *unknown grid: SST[D=1] -the problem is UNKNOWN GRID: SST[D=1] -************************ -go bn_vtree.sub myvar[gx=temp,gy=sst[d=1]] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP - regrid to SST[D=1] ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to SST[D=1] ?? <== UNKNOWN GRID ****** -/TREE=FILE - regrid to TEMP[d=levitus_climatology] - *unknown grid: SST[D=1] -the problem is UNKNOWN GRID: SST[D=1] -************************ -go bn_vtree.sub myvar[gy=sst[d=1],gx=temp] ! reverse order, only -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to SST[D=1] ?? <== UNKNOWN GRID ****** - regrid to TEMP -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to SST[D=1] ?? <== UNKNOWN GRID ****** -/TREE=FILE - *unknown grid: SST[D=1] - regrid to TEMP[d=levitus_climatology] -the problem is UNKNOWN GRID: SST[D=1] -************************ - -! second target is not a named variable -go bn_vtree.sub myvar[g=temp,gy=yp5] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] -/TREE=FILE - regrid to TEMP[d=levitus_climatology] -myvar[g=temp,gy=yp5] is ready and AVAILABLE -************************ -go bn_vtree.sub myvar[gx=temp,gy=yp5] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] -/TREE=FILE - regrid to TEMP[d=levitus_climatology] -myvar[gx=temp,gy=yp5] is ready and AVAILABLE -************************ -go bn_vtree.sub myvar[g=temp,y=5s:5n:.5] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] -/TREE=FILE - regrid to TEMP[d=levitus_climatology] -myvar[g=temp,y=5s:5n:.5] is ready and AVAILABLE -************************ -go bn_vtree.sub myvar[g=sst[d=1],y=5s:5n:.5] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to SST[D=1] ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to SST[D=1] ?? <== UNKNOWN GRID ****** -/TREE=FILE - *unknown grid: SST[D=1] -the problem is UNKNOWN GRID: SST[D=1] -************************ - -! multiple targets, including unknown variables -go bn_vtree.sub myvar[g=temp,gy=mybad] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=FILE - regrid to TEMP[d=levitus_climatology] - *unknown grid: MYBAD -the problem is UNKNOWN GRID: MYBAD -************************ -go bn_vtree.sub myvar[g=mybad,gy=temp] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD ?? <== UNKNOWN GRID ****** - regrid to TEMP -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=FILE - *unknown grid: MYBAD - regrid to TEMP[d=levitus_climatology] -the problem is UNKNOWN GRID: MYBAD -************************ -go bn_vtree.sub myvar[gy=temp,g=mybad[d=1]] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP - regrid to MYBAD[D=1] ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD[D=1] ?? <== UNKNOWN GRID ****** -/TREE=FILE - regrid to TEMP[d=levitus_climatology] - *unknown grid: MYBAD[D=1] -the problem is UNKNOWN GRID: MYBAD[D=1] -************************ -go bn_vtree.sub myvar[g=temp,gx=mybad[d=1],gy=mybad2]! distinct unknown targets -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP - regrid to MYBAD[D=1] ?? <== UNKNOWN GRID ****** - regrid to MYBAD2 ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD[D=1] ?? <== UNKNOWN GRID ****** - regrid to MYBAD2 ?? <== UNKNOWN GRID ****** -/TREE=FILE - regrid to TEMP[d=levitus_climatology] - *unknown grid: MYBAD[D=1] - *unknown grid: MYBAD2 -the problem is UNKNOWN GRID: MYBAD[D=1] -************************ -go bn_vtree.sub myvar[gx=temp,gy=temp,g=mybad[d=1]] ! dup known targets -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP - regrid to TEMP - regrid to MYBAD[D=1] ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD[D=1] ?? <== UNKNOWN GRID ****** -/TREE=FILE - regrid to TEMP[d=levitus_climatology] - *unknown grid: MYBAD[D=1] -the problem is UNKNOWN GRID: MYBAD[D=1] -************************ -go bn_vtree.sub myvar[g=temp,gx=mybad,gy=mybad] ! dup unknown suppressed -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP - regrid to MYBAD ?? <== UNKNOWN GRID ****** - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD ?? <== UNKNOWN GRID ****** - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=FILE - regrid to TEMP[d=levitus_climatology] - *unknown grid: MYBAD - *unknown grid: MYBAD -the problem is UNKNOWN GRID: MYBAD -************************ -go bn_vtree.sub myvar[g=temp,gx=mybad[d=2],gy=mybad] ! dup unknown missed -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP - regrid to MYBAD[D=2] ?? <== UNKNOWN GRID ****** - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD[D=2] ?? <== UNKNOWN GRID ****** - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=FILE - regrid to TEMP[d=levitus_climatology] - *unknown grid: MYBAD[D=2] - *unknown grid: MYBAD -the problem is UNKNOWN GRID: MYBAD[D=2] -************************ -go bn_vtree.sub myvar[g=temp,gx=mybad,gy='MYBAD'] ! dup unknown missed -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to TEMP - regrid to MYBAD ?? <== UNKNOWN GRID ****** - regrid to 'MYBAD' ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD ?? <== UNKNOWN GRID ****** - regrid to 'MYBAD' ?? <== UNKNOWN GRID ****** -/TREE=FILE - regrid to TEMP[d=levitus_climatology] - *unknown grid: MYBAD - *unknown grid: 'MYBAD' -the problem is UNKNOWN GRID: MYBAD -************************ -go bn_vtree.sub myvar[g=myvar,gy=mybad] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=FILE - *unknown grid: MYBAD -the problem is UNKNOWN GRID: MYBAD -************************ -go bn_vtree.sub myvar[gy=yp5,g=mybad] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=FILE - *unknown grid: MYBAD -the problem is UNKNOWN GRID: MYBAD -************************ -go bn_vtree.sub myvar[g=mybad,y=5s:5n:.5] -/TREE=ALL - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=USER - in default dataset levitus_climatology - MYVAR = X[GX=X1] + Y[GY=Y1] - regrid to MYBAD ?? <== UNKNOWN GRID ****** -/TREE=FILE - *unknown grid: MYBAD -the problem is UNKNOWN GRID: MYBAD -************************ - -! 2/15 additions -- auxiliary variable regridding -USE levitus_climatology -LET myzvar = Z[Z=100:500:100] -DEFINE AXIS/z/units=meters zax = myzvar -SET REGION/i=101:102/j=41:42 - -LET/D=levitus_climatology depth = z[g=temp]+ 0*temp[k=1] - -! valid aux var and target variable -LET tempz = temp[gz(depth)=myzvar] -vtree=all tempz - in default dataset levitus_climatology - TEMPZ = TEMP[GZ(DEPTH)=MYZVAR] - TEMP - regrid to MYZVAR = Z[Z=100:500:100] - DEPTH = Z[G=TEMP]+ 0*TEMP[K=1] - TEMP - -! valid aux var. Target is axis name -LET tempz1 = temp[gz(depth)=zax] -vtree=all tempz1 - in default dataset levitus_climatology - TEMPZ1 = TEMP[GZ(DEPTH)=ZAX] - TEMP - DEPTH = Z[G=TEMP]+ 0*TEMP[K=1] - TEMP - -! valid aux var. Target is unknown -LET tempz2 = temp[gz(depth)=unknown_target] -vtree=all tempz2 - in default dataset levitus_climatology - TEMPZ2 = TEMP[GZ(DEPTH)=UNKNOWN_TARGET] - TEMP - regrid to UNKNOWN_TARGET ?? <== UNKNOWN GRID ****** - DEPTH = Z[G=TEMP]+ 0*TEMP[K=1] - TEMP - -! --- unknown aux var, valid target --- -! When an unknown auxiliary variable error occurs it suppresses -! the reporting of both the variable being regridded and the regrid target -! The underlying issue is that GET_VAR_CONTEXT (called from is_dependencies.F) -! can return only a single error status -! If it contains ferr_unknown_auxvar, then the success or failure of other -! parts of the context processing are unknown. -! One could kludge the code to find a way around this, but the violence -! required is not justified in order to fix this small loss in error reporting. -LET tempz3 = temp[gz(unknown_aux)=myzvar] -vtree=all tempz3 - in default dataset levitus_climatology - TEMPZ3 = TEMP[GZ(UNKNOWN_AUX)=MYZVAR] - UNKNOWN_AUX (unknown auxiliary variable) - -! a syntax error leads to a similar behavior -LET tempz3a = temp[gz(unknown_aux)=myzvar,SYNTAX_ERROR] -vtree=all tempz3a - in default dataset levitus_climatology - TEMPZ3A = TEMP[GZ(UNKNOWN_AUX)=MYZVAR,SYNTAX_ERROR] - TEMP[GZ(UNKNOWN_AUX)=MYZVAR,SYNTAX_ERROR] *** WARNING: ERROR IN DEFINITION - -! similar behavior here: the unknown_target does not get reported -LET tempz4 = temp[gz(unknown_aux)=unknown_target] -vtree=all tempz4 - in default dataset levitus_climatology - TEMPZ4 = TEMP[GZ(UNKNOWN_AUX)=UNKNOWN_TARGET] - UNKNOWN_AUX (unknown auxiliary variable) - - - -! *********** v6.86 Additions *********** - -GO bn_reset bn686_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn686_bug_fixes -GO bn686_bug_fixes -! bn686_bug_fixes -! test various fixes that went into version 6.86 -! 11/2013 ACM - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err685_ribbon_by_val -! err685_ribbon_by_val.jnl -! 11/21/2013 -! See ticket 2111: Palette that is by_lev or by_value -! in combination with a /missing= caused errors - -us coads_climatology -let ypts = y[gy=sst] -let xpts = sst[L=1,x=150] -let fpts = sst[L=1,x=150] -plot/vs/line/thick/ribbon/MISS=black/PAL=ocean_temp xpts, ypts, fpts - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err685_ppl_palette -! err685_ppl_palette.jnl -! Further fix for ticket 2049. If the palette or pattern file -! name given in PPL SHASET SPECTRUM= or PPL PATSET PATTERN= -! started with a space, the command failed. - -pal rnb2 -use levitus_climatology; shade/k=1 temp - -pal bluescale.spk -use levitus_climatology; shade/k=1 temp - -! pyferret does not yet support patterns -! pattern 4patterns -use coads_climatology -shade/pal=black/lev=(10,30,5,-3)/key/L=1 sst - -pal default -! pyferret does not yet support patterns -! pattern solid - -fill sst[l=@ave] -! pyferret does not yet support patterns -! pattern tiny_squares.pat -fill/lev=(15,21,2)/over/nolab/pal=black sst[l=@ave] - -! restore defaults -palette default -! pyferret does not yet support patterns -! pattern solid - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err685_show_grid_e -! err685_show_grid_e.jnl -! See ticket 2122 -! SHOW GRID/E and SHOW GRID/F failed - -def ax /e=1:12:1 ense -def ax /f=1:10:1 verf -def ax /t=1980:2013:1 yrt -def grid /e=ense/t=yrt/f=verf gensy -sh grid gensy - GRID GENSY - name axis # pts start end - normal X - normal Y - normal Z - YRT T 34 r 1980 2013 - ENSE E 12 r 1 12 - VERF F 10 r 1 10 -sh grid /e gensy - GRID GENSY - name axis # pts start end - normal X - normal Y - normal Z - YRT T 34 r 1980 2013 - ENSE E 12 r 1 12 - VERF F 10 r 1 10 - - M E EBOX EBOXLO - 1> 1 1 0.5 - 2> 2 1 1.5 - 3> 3 1 2.5 - 4> 4 1 3.5 - 5> 5 1 4.5 - 6> 6 1 5.5 - 7> 7 1 6.5 - 8> 8 1 7.5 - 9> 9 1 8.5 - 10> 10 1 9.5 - 11> 11 1 10.5 - 12> 12 1 11.5 -sh grid /f gensy - GRID GENSY - name axis # pts start end - normal X - normal Y - normal Z - YRT T 34 r 1980 2013 - ENSE E 12 r 1 12 - VERF F 10 r 1 10 - - N F FBOX FBOXLO - 1> 1 1 0.5 - 2> 2 1 1.5 - 3> 3 1 2.5 - 4> 4 1 3.5 - 5> 5 1 4.5 - 6> 6 1 5.5 - 7> 7 1 6.5 - 8> 8 1 7.5 - 9> 9 1 8.5 - 10> 10 1 9.5 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err685_lowercaseAxis -! err685_lowercaseAxis.jnl -! Ticket 2126 -! If the axis name is lower case in the file, and we do SET AXIS commands -! to reset units etc, the axis is "lost" to commands like SHOW AXIS - -use lowercaseTime.nc -sh dat - currently SET data sets: - 1> ./data/lowercaseTime.nc (default) - name title I J K L - AA ... ... ... 1:15 - BB ... ... ... 1:8 - -! This axis has uppercase in the file -set axis/t0=1-jan-2001/units=days uppercasetime - -! All this was correct -show axis uppercasetime - name axis # pts start end - UPPERCASETIME TIME 8 r 02-JAN-2001 00:00 09-JAN-2001 00:00 -T0 = 1-JAN-2001 - Axis span (to cell edges) = 8 -show grid bb - GRID GHC2 - name axis # pts start end subset - normal X - normal Y - normal Z - UPPERCASETIME TIME 8 r 02-JAN-2001 00:00 09-JAN-2001 00:00 full - -! This variable has axis time, lowercase in the file -sh grid aa - GRID GHC1 - name axis # pts start end subset - normal X - normal Y - normal Z - TIME34 T 15 r 1 15 full -set axis/t0=1-jan-2001/units=days time - -! showed no output -show axis time - name axis # pts start end - TIME TIME 3 i 01-JAN-2001 00:00 04-JAN-2001 00:00 -T0 = 1-JAN-2001 - Axis span (to cell edges) = 4.5 - -! The axis did get changed but is inconsistently listed in the -! internal arrays that store axis info. - -list/L=1:5 aa - VARIABLE : AA - FILENAME : lowercaseTime.nc - SUBSET : 5 points (T) - 1 / 1: 1.000 - 2 / 2: 2.000 - 3 / 3: 3.000 - 4 / 4: 4.000 - 5 / 5: 5.000 - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err685_redefine_uvar_att -! err685_redefine_uvar_att.jnl -! ticket 2127 Redefine an attribute for a -! user variable, with bounds-checking on, -! returned a runtime error. - -let a = 1 -define att/type=string a.ival = 99 -define att/type=STRING a.ival = 99 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err685_use_no_extension -! Ticket 2128: if no extension, we should try .cdf, .nc, .des -! but .des was not being tried. - -! The directory contains files with all three extensions -sp ls data/duplicate.* -data/duplicate.cdf -data/duplicate.des -data/duplicate.nc - -! The one that's used is .nc -use duplicate -sh dat - currently SET data sets: - 1> ./data/duplicate.nc (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:1 1:10 ... 1:3 - - -set mode ignore -! Specify a nonexistent file with an extension -use nosuchfile.nc - -! Specify a nonexistent file, no extension -use nosuchfile - -! There is a file called snoopy.dat but not .cdf, .nc, or .des -! Check for correct error messages. -use snoopy - -use snoopy.dat - -set mode/last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err685_samplexy -! err685_samplexy.jnl -! Fix for ticket 2137. out-of-bounds error -! sending sub-range of variable into samplexy - -! running this, with bounds-checking on, resulted in a bounds error. -use coads_climatology -let lon = {300,301,302} -let lat = {11,12,13} -list samplexy(sst[x=290:310,y=0:20], lon, lat) - VARIABLE : SAMPLEXY(SST[X=290:310,Y=0:20], LON, LAT) - FILENAME : coads_climatology.cdf - SUBSET : 3 by 3 points (X-TIME) - 1 2 3 - 1 2 3 - 16-JAN / 1: 26.84 26.77 26.66 - 15-FEB / 2: 26.60 26.52 26.35 - 17-MAR / 3: 26.68 26.61 26.49 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err685_shade_set -! err685_shade_set.jnl -! -! test fix for bug 883 -! Inside a SHADE/SET, and several other plot commands, -! if we do an operation that evalueates an expression, the -! plot is then blank. - -can dat/all - -can view -use climatological_axes -def axis/t=1-jan-2000:31-jan-2010:1/units=days timax -let tseries = t[gt=timax] -! evaluate info about an expression, with a different grid than the -! epression being SHADED, inside a SHADE/SET -shade/set tseries*z[gz=1:5:1] -say `tseries[GT=month_irreg@mod],r=tunit` - !-> MESSAGE/CONTINUE DAYS -DAYS -ppl shade !GAVE A BLANK PLOT - -shade/set tseries*z[gz=1:5:1] -ppl shade !but this works - -shade/set tseries*z[gz=1:5:1] -say `tseries,r=tunit` - !-> MESSAGE/CONTINUE DAYS -DAYS -ppl shade !and this works - -let a = tseries*z[gz=1:5:1] -shade/set a -say `tseries[GT=month_irreg@mod],r=tunit` - !-> MESSAGE/CONTINUE DAYS -DAYS -ppl shade !and this works - -shade/title="`tseries[GT=month_irreg],r=tunit`" tseries*z[gz=1:5:1] - !-> shade/title="DAYS" tseries*z[gz=1:5:1] - -can var/all; can mem -can axis timax -set mode/last logo - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err686_individual_levels -! err686_individual_levels.jnl -! Ticket 2142 -! The bug appeared just in a beta release of v686. The behavior needs a test. - -use coads_climatology - -cancel symbol lev* -shade/l=1/lev=(10)(20)(30)(40) sst - -! The levels should be min,max,del = 10,40,10 -sh sym lev* -LEV_TEXT = "(10)(20)(30)(40)" -LEV_MIN = "10" -LEV_MAX = "40" -LEV_NUM = "3" -LEV_DEL = "10" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "10,20,30,40" - -cancel symbol lev* -contour/l=1/lev=(10)(15)(20)(25)(30) sst -sh sym lev* -LEV_TEXT = "(10)(15)(20)(25)(30)" -LEV_MIN = "10" -LEV_MAX = "30" -LEV_NUM = "4" -LEV_DEL = "5" -LEV_CENTERED_LABELS = "off" -LEV_ALL = "10,15,20,25,30" - - -GO bn_reset bn_long_symnames -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_long_symnames -GO bn_long_symnames -! bn_long_symnames.jnl -! *ACM* 11/22/2013 -! Allow longer names for Ferret symbols - -! Define a couple of symbols longer than previous limit of 30 -define symbol ferret_temperature_equilibrator_min = -2 -define symbol ferret_temperature_equilibrator_max = 35 - -! SHOW -show symbol ferret_temperature_* -FERRET_TEMPERATURE_EQUILIBRATOR_MIN = "-2" -FERRET_TEMPERATURE_EQUILIBRATOR_MAX = "35" - -! CANCEL -can sym ferret_temperature_equilibrator_max -show symbol ferret_temperature_* -FERRET_TEMPERATURE_EQUILIBRATOR_MIN = "-2" - -! DEFINE and redefine -define symbol ferret_temperature_equilibrator_min = 0 -define symbol ferret_temperature_equilibrator_max = 35 - -can sym *max - -show symbol ferret_temperature_* -FERRET_TEMPERATURE_EQUILIBRATOR_MIN = "0" - - -! bn_symbols had a line to -! demonstrate the 30 character cap on symbol length -! Lets demonstrate the 120 character cap on symbol length -define symbol q23456789012345678901234567890q23456789012345678901234567890q23456789012345678901234567890q23456789012345678901234567890 = 5 -define symbol q23456789012345678901234567890q23456789012345678901234567890q23456789012345678901234567890q23456789012345678901234567xxxaaaa = 6 -show symbol q* -Q23456789012345678901234567890Q23456789012345678901234567890Q23456789012345678901234567890Q23456789012345678901234567890 = "5" -Q23456789012345678901234567890Q23456789012345678901234567890Q23456789012345678901234567890Q23456789012345678901234567XXX = "6" - -GO bn_reset bn_strdim -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_strdim -GO bn_strdim -! bn_strdim.jnl -! Keep the string dimension name and size from the intput file -! on writing the string variable. - -use strdimfile.nc - -! Previously Ferret created the string dimension name and length -! Now it keeps the file's name and length. - -save/file=a.nc/clobber labels -sp ncdump -h a.nc -netcdf a { -dimensions: - ENSEMBLE = 3 ; - maxStrlen64 = 64 ; -variables: - double ENSEMBLE(ENSEMBLE) ; - ENSEMBLE:long_name = "Ensemble of Realizations" ; - ENSEMBLE:axis = "E" ; - ENSEMBLE:point_spacing = "even" ; - char LABELS(ENSEMBLE, maxStrlen64) ; - LABELS:long_name = "Realizations" ; - LABELS:history = "From http://dunkel.pmel.noaa.gov:8930/thredds/dodsC/data/atmos3.ncml" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! The behavior is unchanged for user-defined variables -! Dimension name is created from STRING and the length -! length is the max length of strings in the variable. - -let/title="mystrings" strvar = {"alpha", "beta", "gamma"} -save/file=a.nc/clobber strvar -sp ncdump -h a.nc -netcdf a { -dimensions: - XAX1_3 = 3 ; - STRING1_5 = 5 ; -variables: - double XAX1_3(XAX1_3) ; - XAX1_3:point_spacing = "even" ; - XAX1_3:axis = "X" ; - char STRVAR(XAX1_3, STRING1_5) ; - STRVAR:long_name = "mystrings" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - - -GO bn_reset bn_single_colorlev -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_single_colorlev -GO bn_single_colorlev -! bn_single_colorlev.jnl -! Ticket 2123, mis-labeled color bars when -! single level is specified with a range of values - -use coads_climatology - -! Previously this labeled both top and bottom with 20 -shade/lev=(20,25,5)/L=1 sst - -! These cases were correct, and the reason for the above behavior -shade/lev=(5)/L=1 INT(sst) -shade/lev=(25)/L=1 INT(sst) - -! Label upper and lower end of the color bar with the range -fill/lev=(20,30,10)/L=1 sst - - -! *********** v6.9 Additions *********** - -GO bn_reset bn69_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn69_bug_fixes -GO bn69_bug_fixes -! bn69_bug_fixes -! test various fixes that went into version 6.9 -! 02/2014 ACM - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err686_long_list_varnames -! err686_long_list_varnames.jnl -! -! bug 2114 -! Reading a file with 54 variables. The names of variables get long, -! and the list gets truncated by the SET DATA command. -! - -columns/skip=1/var="\ -sta,\ -type,\ -month,\ -day,\ -year,\ -hour,\ -minute,\ -longitude,\ -latitude,\ -bottomD,\ -sampledepth,\ -dep,\ -temp,\ -sal,\ -xCO2_water_sst_wet_ppm,\ -xCO2_water_equi_temp_wet_ppm,\ -xCO2_water_sst_dry_ppm,\ -xCO2_water_equi_temp_dry_ppm,\ -fCO2_water_sst_100humidity_uatm,\ -fCO2_water_corr_25_uatm,\ -fCO2_water_corr_to_20,\ -fCO2_water_equi_uatm,\ -pCO2_water_sst_100humidity_uatm,\ -pCO2_water_equi_temp,\ -pCO2_theta_SW_corrected_to_sst,\ -Temperature_equi,\ -Pressure_atm,\ -Pressure_equi,\ -wind_direc_deg,\ -wind_speed,\ -ship_speed,\ -ship_direc,\ -Humidity,\ -woa_sss,\ -woa_land_marker,\ -pressure_ncep_slp,\ -speed_calc_knots,\ -etopo2_depth,\ -fCO2_insitu_from_xCO2_water_equi_temp_dry_ppm,\ -fCO2_insitu_from_xCO2_water_sst_dry_ppm,\ -fCO2_from_pCO2_water_water_equi_temp,\ -fCO2_from_pCO2_water_sst_100humidity_uatm,\ -fCO2_insitu_from_fCO2_water_equi_uatm,\ -fCO2_insitu_from_fCO2_water_sst_100humidty_uatm,\ -fCO2_from_pCO2_water_water_equi_temp_ncep,\ -fCO2_from_pCO2_water_sst_100humidity_uatm_ncep,\ -fCO2_insitu_from_xCO2_water_equi_temp_dry_ppm_woa,\ -fCO2_insitu_from_xCO2_water_sst_dry_ppm_woa,\ -fCO2_insitu_from_xCO2_water_equi_temp_dry_ppm_ncep,\ -fCO2_insitu_from_xCO2_water_sst_dry_ppm_ncep,\ -fCO2_insitu_from_xCO2_water_equi_temp_dry_ppm_ncep_woa,\ -fCO2_insitu_from_xCO2_water_sst_dry_ppm_ncep_woa,\ -fCO2_rec,\ -fco2_source" \ -longvarnames.tsv - -! The list was cut off after woa_land_marker. -! Try to load a variable later than that in the list. - -list etopo2_depth - VARIABLE : etopo2_depth - FILENAME : longvarnames.tsv - SUBSET : 10 points (X) - 1 / 1: -97.00 - 2 / 2: -97.00 - 3 / 3: -97.00 - 4 / 4: -97.00 - 5 / 5: -97.00 - 6 / 6: -97.00 - 7 / 7: -97.00 - 8 / 8: -99.00 - 9 / 9: -99.00 - 10 / 10: -99.00 - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err686_faxis_label -! err686_faxis_label.jnl -! 3/11/2014 ACM -! ticket 2149 -! If the time axis has a calendar label, region label for F axis -! shouldn't automatically get it. - -! Define a variable with a Julian calendar axis, and an abstract F axis - -define axis/t=1-jan-2000:1-jan-2010:1/units=days/calendar=julian jtime -define axis/f=1:10:1 faxis - -use err64_small_latlon.nc -let bath_tf = bathy + _N[gf=faxis] + 0*t[gt=jtime] -shade/n=3/L=6 bath_tf - -! This label should be just F : 3 -sh sym lab($labnum_f) - !-> sh sym lab2 -LAB2 = "F : 3" - -! Might an F axis have a calendar? -define axis/f=1-jan-2000:12-jan-2000:1/units=days/calendar=julian naxis -let bath_tf = bathy + _N[gf=naxis] + 0*t[gt=jtime] -shade/n=3/L=6 bath_tf - -! If so its label will show Julian too. -sh sym lab($labnum_f) - !-> sh sym lab2 -LAB2 = "FORECAST : 03-JAN-2000 00:00 JULIAN" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err686_dup_axnames -! err686_dup_axnames -! Ticket 1750 -! -! Make some datasets. Same axis length and name, -! different coordinates. - -def ax/x=1:4:1 xaxis_test -let a = x[gx=xaxis_test] -save/clob/file=a.nc a -def ax/x=11:14:1 xaxis_test -let b = x[gx=xaxis_test] -save/clob/file=b.nc b -can var/all; can dat/all - -! Check axis coords. -use a; use b -sh dat - currently SET data sets: - 1> ./a.nc - name title I J K L - A X[GX=XAXIS_TEST] 1:4 ... ... ... - - 2> ./b.nc (default) - name title I J K L - B X[GX=XAXIS_TEST] 1:4 ... ... ... - -sh grid a[d=1] - GRID GSI1 - name axis # pts start end subset - XAXIS_TEST1 X 4 r 1 4 full - normal Y - normal Z - normal T -sh grid b[d=2] - GRID GRR1 - name axis # pts start end subset - XAXIS_TEST X 4 r 11 14 full - normal Y - normal Z - normal T - -! Write b with its Ferret internal axis name XAXIS_TEST1 -save/clob/file=c.nc a[d=1],b -sp ncdump -h c.nc -netcdf c { -dimensions: - XAXIS_TEST1 = 4 ; - XAXIS_TEST = 4 ; -variables: - double XAXIS_TEST1(XAXIS_TEST1) ; - XAXIS_TEST1:point_spacing = "even" ; - XAXIS_TEST1:axis = "X" ; - double A(XAXIS_TEST1) ; - A:missing_value = -1.e+34 ; - A:_FillValue = -1.e+34 ; - A:long_name = "X[GX=XAXIS_TEST]" ; - A:history = "From a" ; - double XAXIS_TEST(XAXIS_TEST) ; - XAXIS_TEST:point_spacing = "even" ; - XAXIS_TEST:axis = "X" ; - double B(XAXIS_TEST) ; - B:missing_value = -1.e+34 ; - B:_FillValue = -1.e+34 ; - B:long_name = "X[GX=XAXIS_TEST]" ; - B:history = "From b" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! Yet more combinations -save/clob/file=c.nc b, a[d=1] -sp ncdump -h c.nc -netcdf c { -dimensions: - XAXIS_TEST = 4 ; - XAXIS_TEST1 = 4 ; -variables: - double XAXIS_TEST(XAXIS_TEST) ; - XAXIS_TEST:point_spacing = "even" ; - XAXIS_TEST:axis = "X" ; - double B(XAXIS_TEST) ; - B:missing_value = -1.e+34 ; - B:_FillValue = -1.e+34 ; - B:long_name = "X[GX=XAXIS_TEST]" ; - B:history = "From b" ; - double XAXIS_TEST1(XAXIS_TEST1) ; - XAXIS_TEST1:point_spacing = "even" ; - XAXIS_TEST1:axis = "X" ; - double A(XAXIS_TEST1) ; - A:missing_value = -1.e+34 ; - A:_FillValue = -1.e+34 ; - A:long_name = "X[GX=XAXIS_TEST]" ; - A:history = "From a" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! We can use /KEEP_AXISNAMES, changes XAXIS_TEST1 to XAXIS_TEST -save/clobber/file=c.nc b -sp ncdump -h c.nc -netcdf c { -dimensions: - XAXIS_TEST = 4 ; -variables: - double XAXIS_TEST(XAXIS_TEST) ; - XAXIS_TEST:point_spacing = "even" ; - XAXIS_TEST:axis = "X" ; - double B(XAXIS_TEST) ; - B:missing_value = -1.e+34 ; - B:_FillValue = -1.e+34 ; - B:long_name = "X[GX=XAXIS_TEST]" ; - B:history = "From b" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! Subsets also use XAXIS_TEST1 -save/clobber/file=c.nc/i=2:4 b -sp ncdump -h c.nc -netcdf c { -dimensions: - XAXIS_TEST2_4 = 3 ; -variables: - double XAXIS_TEST2_4(XAXIS_TEST2_4) ; - XAXIS_TEST2_4:point_spacing = "even" ; - XAXIS_TEST2_4:axis = "X" ; - double B(XAXIS_TEST2_4) ; - B:missing_value = -1.e+34 ; - B:_FillValue = -1.e+34 ; - B:long_name = "X[GX=XAXIS_TEST]" ; - B:history = "From b" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! Unless we use /KEEP_AXISNAMES - which removes renaming -! due to subsetting and also due to internal names -save/clobber/file=c.nc/i=2:4/keep b -sp ncdump -h c.nc -netcdf c { -dimensions: - XAXIS_TEST = 3 ; -variables: - double XAXIS_TEST(XAXIS_TEST) ; - XAXIS_TEST:point_spacing = "even" ; - XAXIS_TEST:axis = "X" ; - double B(XAXIS_TEST) ; - B:missing_value = -1.e+34 ; - B:_FillValue = -1.e+34 ; - B:long_name = "X[GX=XAXIS_TEST]" ; - B:history = "From b" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! If we try /KEEP_AXISNAMES but there is a conflict, it's an err -set mode ignore -save/clobber/keep/file=nc b,a[d=1] - -set mode/last ignore - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err686_cancel_invalid_var -! err686_cancel_invalid_var -! ticket 2159 -! (Note that the shade of a one-cell or less region is -! allowed fully as of Ferret v7.1. See ticket 2494) - -! The cancel variable ran into an incorrect setting -! for variable-in-memory - -set mode ignore -let b = 1 -shade b - -set mode/last ignore -cancel var b - -! Shade plot of a less-than-one cell region. Its where the bug came from. -use coads_climatology -shade/x=161.1:161.3/y=0.2:0.4/L=1 sst - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err686_redef_ascii_att -! err686_redef_ascii_att.jnl -! Bug 2161 -! DEFINE ATT to redefine title or units for variable -! in ascii dataset caused crash - -columns/delim=" " EZ.DAT -sh att v1 - attributes for dataset: ./data/EZ.DAT - V1.long_name = V1 - V1.missing_value = -1.E+34 - -! A new attribuge causes no problems -define att/output v1.comment = "First var from EZ.DAT" -sh att v1 - attributes for dataset: ./data/EZ.DAT - V1.long_name = V1 - V1.missing_value = -1.E+34 - V1.comment = First var from EZ.DAT - -! Initial definition of units is ok. -! Re-defining the title or units causes crash -define att/output v1.long_name = "vee one" - -! Initial definition of units is ok. -! Re-defining units causes crash -define att/output v1.units="km" -define att/output v1.units="meters" - -sh att v1 - attributes for dataset: ./data/EZ.DAT - V1.long_name = vee one - V1.missing_value = -1.E+34 - V1.comment = First var from EZ.DAT - V1.units = meters - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err686_sho_nonexist_att -! err686_sho_nonexist_att.jnl -! See ticket 2133 - -! Too many error messages were issued on this error -set mode ignore - -use levitus_climatology -show att temp.noexist[d=levitus_climatology] - -set mode/last ignore - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err686_set_var_name -! err686_set_var_name.jnl -! ticket 2152 -! rename user var or file var. Err message was -! wrong if the name already exists. - -SET MODE IGNORE - -let a = 1 -let b = 2 -! Intentional error, new name is already a defined variable -set var/name=b a -! This rename is ok -set var/name=c a -sh var - Created by DEFINE VARIABLE: - >>> Definitions that replace any file variable of same name: - B = 2 - C = 1 - -use gt4d011.cdf -! again, with user-variables and an open dataset the message is as above - -let a = 1 -let b = 2 -set var/name=b a - -! Intentional error, new name already in file - - -! Intentional error, new name already in file -set var/name=temp salt -show dat - currently SET data sets: - 1> ./data/gt4d011.cdf (default) - name title I J K L - TEMP TEMPERATURE 91:108 35:56 1:10 1:25 - SALT (SALINITY(ppt) - 35) /1000 91:108 35:55 1:10 1:25 - U ZONAL VELOCITY 91:108 35:55 1:10 1:25 - V MERIDIONAL VELOCITY 91:108 35:55 1:10 1:25 - W VERTICAL VELOCITY 91:108 36:55 1:10 1:25 - TAUX ZONAL WIND STRESS 91:108 35:55 ... 1:25 - TAUY MERIDIONAL WIND STRESS 91:108 35:55 ... 1:25 - PSI STREAM FUNCTION 91:108 35:56 ... 1:25 - -! This rename is ok -set var/name=salinity salt -show dat - currently SET data sets: - 1> ./data/gt4d011.cdf (default) - name title I J K L - TEMP TEMPERATURE 91:108 35:56 1:10 1:25 - SALINITY (SALINITY(ppt) - 35) /1000 91:108 35:55 1:10 1:25 - U ZONAL VELOCITY 91:108 35:55 1:10 1:25 - V MERIDIONAL VELOCITY 91:108 35:55 1:10 1:25 - W VERTICAL VELOCITY 91:108 36:55 1:10 1:25 - TAUX ZONAL WIND STRESS 91:108 35:55 ... 1:25 - TAUY MERIDIONAL WIND STRESS 91:108 35:55 ... 1:25 - PSI STREAM FUNCTION 91:108 35:56 ... 1:25 - - -! Test LET/D variables: -let/d=1 myvar = taux - tauy -! This is an error, new name already in file -set var/name=psi myvar -! This is ok, new let/d name associated with the file -set var/name=diff myvar -show dat - currently SET data sets: - 1> ./data/gt4d011.cdf (default) - name title I J K L - TEMP TEMPERATURE 91:108 35:56 1:10 1:25 - SALINITY (SALINITY(ppt) - 35) /1000 91:108 35:55 1:10 1:25 - U ZONAL VELOCITY 91:108 35:55 1:10 1:25 - V MERIDIONAL VELOCITY 91:108 35:55 1:10 1:25 - W VERTICAL VELOCITY 91:108 36:55 1:10 1:25 - TAUX ZONAL WIND STRESS 91:108 35:55 ... 1:25 - TAUY MERIDIONAL WIND STRESS 91:108 35:55 ... 1:25 - PSI STREAM FUNCTION 91:108 35:56 ... 1:25 - ------------------------------ - DIFF[D=gt4d011] = TAUX - TAUY - - -! another error, new name is a user-var -set var/name=diff w - -SET MODE/LAST ignore - -GO bn_reset bn_bad_axis_bounds -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_bad_axis_bounds -GO bn_bad_axis_bounds -! bn_bad_axis_bounds -! Ticket 2146 If there are invalid axis bounds -! make them into a dependent variable. - -use badbounds.nc -show data - currently SET data sets: - 1> ./data/badbounds.nc (default) - name title I J K L - MONTH_IRREG_BNDS - 1:2 ... ... 1:12 - (invalid axis bounds) - TEMP2 TEMP[GT=MONTH_IRREG@ASN] 1:1 1:1 1:1 1:12 - - -GO bn_reset bn_enter_exit_GO -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_enter_exit_GO -GO bn_enter_exit_GO -! GO bn_enter_exit_GO -! Lines to allow trace of GO scripts: -! -! ! Enter_GO and ! Exit_GO lines written to the journal file -! or output file only if SET REDIRECT is turned on - -! Check that we have the ! Enter_GO and ! Exit_GO lines - -set redirect/tee/journal -go bn_shortgo -! Enter_GO bn_shortgo -! bn_shortgo.jnl -! short script for bn_enter_exit_GO - -plot/i=1:15/color=red/thick i -! Exit_GO - -! Inside an IF -let a = 1 -if `a gt 0` THEN GO bn_shortgo2 - !-> if 1 THEN GO bn_shortgo2 -! Enter_GO bn_shortgo2 -! bn_shortgo2.jnl -! short script extracted from bn_negative_t for bn_enter_exit_GO - -DEFINE AXIS/T=-10:10:2 tax -LET tvar = t[gt=tax] -GO bn_short.sub tvar ave -! Enter_GO bn_short.sub tvar ave -! bn_short.sub -! short script extracted from bn_negative_t.sub for bn_enter_exit_GO - -LIST/nohead/norow $1[t=-5:9@$2] ! neg/pos t endpoints - !-> LIST/nohead/norow tvar[t=-5:9@ave] - 2.000 - -! Exit_GO -! Exit_GO - -! Inside a REPEAT -define symbol ok = 0 -repeat/L=1:3 (if ($ok) then go bn_shortgo; def sym ok = `($ok)+1`) - !-> repeat/L=1:3 (if ($ok) then go bn_shortgo; def sym ok = `($ok)+1`) -!-> REPEAT: L=1 - !-> if 0 then go bn_shortgo - !-> def sym ok = 1 -!-> REPEAT: L=2 - !-> if 1 then go bn_shortgo -! Enter_GO bn_shortgo -! bn_shortgo.jnl -! short script for bn_enter_exit_GO - -plot/i=1:15/color=red/thick i -! Exit_GO - !-> def sym ok = 2 -!-> REPEAT: L=3 - !-> if 2 then go bn_shortgo -! Enter_GO bn_shortgo -! bn_shortgo.jnl -! short script for bn_enter_exit_GO - -plot/i=1:15/color=red/thick i -! Exit_GO - !-> def sym ok = 3 - -cancel redirect - -GO bn_reset bn_stddev -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_stddev -GO bn_stddev -! bn_std.jnl -! New StdDev transform - -use coads_climatology -list/x=100/y=10 sst[t=@STD] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 100E (interpolated) - LATITUDE : 10N (interpolated) - TIME : 01-JAN 00:45 to 01-APR 08:12 (standard deviation) - 0.4323 -list/x=100/L=1 sst[y=@STD] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 100E (interpolated) - LATITUDE : 90S to 90N (standard deviation) - TIME : 16-JAN 06:00 - 10.09 -list/y=10/L=1 sst[x=@STD] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 20E to 20E(380) (standard deviation) - LATITUDE : 10N (interpolated) - TIME : 16-JAN 06:00 - 0.7935 - -use gt4d011.cdf -list/y=3/l=1/x=233 u[z=@STD] - VARIABLE : ZONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - LONGITUDE: 127W - LATITUDE : 3N (interpolated) - DEPTH (m): 0 to 100 (standard deviation) - TIME : 17-AUG-1982 12:00 - 3.366 -list/y=3/l=1 temp[x=@std] - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 10 points (DEPTH (m)) - LONGITUDE: 140W to 122W (standard deviation) - LATITUDE : 3N (interpolated) - TIME : 17-AUG-1982 12:00 - 5 / 1: 0.2508 - 15 / 2: 0.2559 - 25 / 3: 0.2623 - 35 / 4: 0.2318 - 45 / 5: 0.1489 - 55 / 6: 0.1136 - 65 / 7: 0.2355 - 75 / 8: 0.4054 - 85 / 9: 0.5649 - 95 / 10: 0.7755 -list/y=3/l=1 temp[z=@std,x=@std] - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - LONGITUDE: 140W to 122W (XZ stddev) - LATITUDE : 3N (interpolated) - DEPTH (m): 0 to 100 (XZ stddev) - TIME : 17-AUG-1982 12:00 - 1.037 - -GO bn_reset bn_set_axis_name -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_set_axis_name -GO bn_set_axis_name -! bn_set_axis_name.jnl -! ticket 2160 Implementing new qualifier SET AXIS/NAME -! 3/2014 -! -! -! Prepare a dataset with a time axis - -define axis/t=1-may-2010:5-may-2010:1/units=days daysaxis -let a = t[gt=daysaxis] -save/clobber/file=a.nc a - -cancel variable a -cancel axis daysaxis - -! We define some axis, then open a dataset with an axis of that name. - -define axis/t=1-jan-2000:31-jan-2000:1/units=days daysaxis - -use a.nc - -! The axis in the dataset has been renamed. -say `a,return=taxis` - !-> MESSAGE/CONTINUE DAYSAXIS1 -DAYSAXIS1 - -! So, rename our user-defined axis -set axis/name=days2000 daysaxis - -! and now rename the one from the dataset back to its original name -set axis/name=daysaxis `a,return=taxis` - !-> set axis/name=daysaxis DAYSAXIS1 -sh grid a - GRID GSI1 - name axis # pts start end subset - normal X - normal Y - normal Z - DAYSAXIS TIME 5 r 01-MAY-2010 00:00 05-MAY-2010 00:00 full - -cancel data/all - -! If an axis is used in several datsets, renaming it of course -! changes the name for all grids. -! The attribute structure gets updated as well. - -! Make several datasets with the same x axis. -define axis/x=1:13:1/units=meters x13axis -let a = x[gx=x13axis] -let b = 3*x[gx=x13axis] -let c = 5*x[gx=x13axis] -save/clobber/file=a.nc a -save/clobber/file=b.nc b -save/clobber/file=c.nc c - -can var/all -can axis x13axis - -! Open them in Ferret; all grids are the same. -use a.nc, b.nc, c.nc -say `a[d=1],return=xaxis` - !-> MESSAGE/CONTINUE X13AXIS -X13AXIS -say `b[d=2],return=xaxis` - !-> MESSAGE/CONTINUE X13AXIS -X13AXIS -say `c[d=3],return=xaxis` - !-> MESSAGE/CONTINUE X13AXIS -X13AXIS - -! Rename the axis -set axis/name=x_in_meters x13axis -say `a[d=1],return=xaxis` - !-> MESSAGE/CONTINUE X_IN_METERS -X_IN_METERS -say `b[d=2],return=xaxis` - !-> MESSAGE/CONTINUE X_IN_METERS -X_IN_METERS -say `c[d=3],return=xaxis` - !-> MESSAGE/CONTINUE X_IN_METERS -X_IN_METERS - -! For SHOW DAT/ATT we get info from the attribute structure. -! It has the udated name. -sh dat/att - currently SET data sets: - 1> ./a.nc - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(x_in_meters) DOUBLE units CHAR 6 T meters - point_spacing CHAR 4 T even - axis CHAR 1 T X - orig_file_axname - CHAR 7 F X13AXIS - - A DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 13 T X[GX=X13AXIS] - - 2> ./b.nc - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(x_in_meters) DOUBLE units CHAR 6 T meters - point_spacing CHAR 4 T even - axis CHAR 1 T X - orig_file_axname - CHAR 7 F X13AXIS - - B DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 15 T 3*X[GX=X13AXIS] - - 3> ./c.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(x_in_meters) DOUBLE units CHAR 6 T meters - point_spacing CHAR 4 T even - axis CHAR 1 T X - orig_file_axname - CHAR 7 F X13AXIS - - C DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 15 T 5*X[GX=X13AXIS] - - -! Intentional errors -set mode ignore - -! Name already in use -set axis/name=days2000 x_in_meters - -! Missing or illegal name -set axis/name x_in_meters -set axis/name=45 x_in_meters -set axis/name=.fr x_in_meters - -set mode/last ignore - -GO bn_reset bn_let_remote -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_let_remote -GO bn_let_remote -! bn_let_remote.jnl -! Tests of the F-TDS LET/REMOTE -! 6/2016 installed NVODS on new-bock server -! 9/2016 load smaller subsets of the data -! 4/2017 Update thredds server urls. To find the right URL, go to the dataset -! in the NVODS server, and hit the "Export to Desktop Application" -! button. The .jnl address is the correct F-TDS URL. - -! See if the F-TDS is working and bail if not. -let status = TEST_OPENDAP("http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/COADS-climatology/data_coads_climatology.jnl") -load status -if `status NE 0` then EXIT/SCRIPT - !-> if 0 then EXIT/SCRIPT - -use "http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/woa05_annual/data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl" -let/D=1/remote myvar = t00an1[k=1:5@sum] -let/D=1/remote ave_z = t00an1[z=0:20@ave] -sh var - Created by DEFINE VARIABLE: - AVE_Z[D=data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl] (/REMOTE) = T00AN1[Z=0:20@AVE] - MYVAR[D=data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl] (/REMOTE) = T00AN1[K=1:5@SUM] - >>> Definitions that replace any file variable of same name: - STATUS = TEST_OPENDAP("http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/COADS-climatology/data_coads_climatology.jnl") -set view ul; shade/l=7/x=180:200/y=20:30 myvar -set view ur; shade/l=3/x=180:200/y=20:30 ave_z - -list/l=7/x=300:310/y=15 myvar, ave_z - DATA SET: http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/woa05_annual/data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl - LONGITUDE: 60W to 50W - LATITUDE: 15N (interpolated) - TIME: 02-JUL-0003 05:27 - Column 1: MYVAR is T00AN1[K=1:5@SUM] - Column 2: AVE_Z is T00AN1[Z=0:20@AVE] - MYVAR AVE_Z -59.5W / 301: 136.6 27.41 -58.5W / 302: 136.4 27.37 -57.5W / 303: 136.2 27.31 -56.5W / 304: 135.8 27.24 -55.5W / 305: 135.3 27.15 -54.5W / 306: 134.9 27.05 -53.5W / 307: 134.4 26.95 -52.5W / 308: 133.8 26.84 -51.5W / 309: 133.3 26.72 -50.5W / 310: 132.7 26.60 - -let/D=1/remote ave_t = t00an1[L=1:12@ave] -set view ll; shade/z=0/x=180:200/y=20:30 ave_t - -let/D=1/remote/units="`t00an1,ret=units`"/title="Summer average Temperature" ave_summer = t00an1[t=15-jun:15-sep@ave] - !-> DEFINE VARIABLE/D=1/remote/units="deg C"/title="Summer average Temperature" ave_summer = t00an1[t=15-jun:15-sep@ave] -set view lr; shade/z=0/x=180:200/y=20:30 ave_summer - -can view -can data/all; can var/all - -! open another dataset, define more remote variables - -use "http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/woa05_annual/data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl" -use "http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/COADS-climatology/data_coads_climatology.jnl" -let/D=2/remote sstsum = sst[L=1:5@sum] -let/D=2/remote airtsum = airt[L=1:5@sum] -sh dat - currently SET data sets: - 1> http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/woa05_annual/data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl - name title I J K L - T00AN1 Temperature 1:360 1:180 1:33 1:1 - - 2> http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/COADS-climatology/data_coads_climatology.jnl (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:12 - AIRT AIR TEMPERATURE 1:180 1:90 ... 1:12 - SPEH SPECIFIC HUMIDITY 1:180 1:90 ... 1:12 - WSPD WIND SPEED 1:180 1:90 ... 1:12 - UWND ZONAL WIND 1:180 1:90 ... 1:12 - VWND MERIDIONAL WIND 1:180 1:90 ... 1:12 - SLP SEA LEVEL PRESSURE 1:180 1:90 ... 1:12 - ------------------------------ - AIRTSUM[D=data_coads_climatology.jnl] (/REMOTE) = AIRT[L=1:5@SUM] - SSTSUM[D=data_coads_climatology.jnl] (/REMOTE) = SST[L=1:5@SUM] - - -set view ul; plot/y=-10/x=50:150 sstsum -set view ur; plot/y=-10/x=50:150 airtsum -list/y=-10/x=50:59 sstsum,airtsum - DATA SET: http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/COADS-climatology/data_coads_climatology.jnl - LONGITUDE: 50E to 59E - LATITUDE: 10S (interpolated) - Column 1: SSTSUM is SST[L=1:5@SUM] - Column 2: AIRTSUM is AIRT[L=1:5@SUM] - SSTSUM AIRTSUM -51E / 16: 141.4 139.2 -53E / 17: 140.8 138.9 -55E / 18: 141.4 139.4 -57E / 19: 141.2 138.7 -59E / 20: 141.6 139.4 - -let both = sstsum + airtsum -set view lower; plot/y=-10/x=50:150 both -list/y=-10/x=50:59 sstsum, airtsum, both - DATA SET: http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/COADS-climatology/data_coads_climatology.jnl - LONGITUDE: 50E to 59E - LATITUDE: 10S (interpolated) - Column 1: SSTSUM is SST[L=1:5@SUM] - Column 2: AIRTSUM is AIRT[L=1:5@SUM] - Column 3: BOTH is SSTSUM + AIRTSUM - SSTSUM AIRTSUM BOTH -51E / 16: 141.4 139.2 280.5 -53E / 17: 140.8 138.9 279.7 -55E / 18: 141.4 139.4 280.7 -57E / 19: 141.2 138.7 279.9 -59E / 20: 141.6 139.4 281.0 - -can dat/all; can var/all - -! make several remote definitions. They can be used together in an expression. -use "http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/COADS-climatology/data_coads_climatology.jnl" -let/D=1/remote sstsum = sst[L=1:5@sum] -let/D=1/remote airtsum = airt[L=1:5@sum] -let/D=1/remote factor = 12 -let/D=1/remote combo = factor*(airtsum - sstsum) -list/y=-5/x=130w:110w combo - VARIABLE : FACTOR*(AIRTSUM - SSTSUM) - FILENAME : data_coads_climatology.jnl - FILEPATH : http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/COADS-climatology/ - SUBSET : 10 points (LONGITUDE) - LATITUDE : 5S - 5S - 43 - 129W / 106: -7.04 - 127W / 107: -7.88 - 125W / 108: -0.59 - 123W / 109: -10.31 - 121W / 110: -1.90 - 119W / 111: -4.39 - 117W / 112: -6.35 - 115W / 113: -9.40 - 113W / 114: -9.81 - 111W / 115: -11.41 - - -can dat/all; can var/all - -use "http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/woa05_annual/data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl" - -! This is ok let/remote/D= -let/D=1/remote myvar = t00an1[z=1:100@ave] - -! Intentional errors: - -! But cannot put d= within the expression: the expr is evaluated on -! the remote server so the same datsets are not open there. - -set mode ignore -let/D=1/remote rvar = t00an1[d=1,z=1:100@ave] - - -! But, require LET/D= with /REMOTE -let/remote rvar = t00an1[d=1,z=1:100@ave] - -! If expressions involve local variables not defined in the remote dset, -! then the variable can be computed but not as a remote-var. - -let a = 12 -let/D=1/remote avar = a*t00an1[L=@ave] -list/x=300/y=15 avar - -SET MODE/LAST ignore - -! The dataset remains open, we can fix the definition. -let/D=1/remote a = 12 -sho dat - currently SET data sets: - 1> http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/woa05_annual/data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl (default) - name title I J K L - T00AN1 Temperature 1:360 1:180 1:33 1:1 - ------------------------------ - A[D=data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl] (/REMOTE) = 12 - AVAR[D=data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl] (/REMOTE) = A*T00AN1[L=@AVE] - MYVAR[D=data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl] (/REMOTE) = T00AN1[Z=1:100@AVE] - -list/x=300/y=15/z=0:100 avar - VARIABLE : A*T00AN1[L=@AVE] - FILENAME : data_ferret.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl - FILEPATH : http://ferret.pmel.noaa.gov/nvods/thredds/dodsC/las/woa05_annual/ - SUBSET : 7 points (DEPTH (m)) - LONGITUDE: 60W (interpolated) - LATITUDE : 15N (interpolated) - TIME : 01-JUL 00:00 to 02-JUL 00:00 - 0 / 1: 329.3 - 10 / 2: 329.1 - 20 / 3: 328.8 - 30 / 4: 328.2 - 50 / 5: 324.4 - 75 / 6: 313.9 - 100 / 7: 300.0 - -can dat/all; can var/all - - -! *********** v6.93 Additions *********** - -GO bn_reset bn691_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn691_bug_fixes -GO bn691_bug_fixes -! bn691_bug_fixes -! test various fixes that went into version 6.91 -! 04/2014 ACM - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_arg_type_error -! err69_arg_type_error -! See ticket 2169 -! -set mode ignore -sh func tax_datestring -TAX_DATESTRING(A,B,C) - Returns date string for time axis coordinate values - A: time steps to convert - B: variable with reference time axis - C: output precision, e,g. "day" or "minute" (STRING) -sh func /detail tax_datestring -TAX_DATESTRING(A,B,C) - Returns date string for time axis coordinate values - Axes of result: - X: inherited from argument(s) - Y: inherited from argument(s) - Z: inherited from argument(s) - T: inherited from argument(s) - E: inherited from argument(s) - F: inherited from argument(s) - A: time steps to convert (FLOAT) - Influence on output axes: - X: passed to result grid - Y: passed to result grid - Z: passed to result grid - T: passed to result grid - E: passed to result grid - F: passed to result grid - B: variable with reference time axis (FLOAT) - Influence on output axes: - X: no influence (indicate argument limits with "[]") - Y: no influence (indicate argument limits with "[]") - Z: no influence (indicate argument limits with "[]") - T: no influence (indicate argument limits with "[]") - E: no influence (indicate argument limits with "[]") - F: no influence (indicate argument limits with "[]") - C: output precision, e,g. "day" or "minute" (STRING) - Influence on output axes: - X: no influence (indicate argument limits with "[]") - Y: no influence (indicate argument limits with "[]") - Z: no influence (indicate argument limits with "[]") - T: no influence (indicate argument limits with "[]") - E: no influence (indicate argument limits with "[]") - F: no influence (indicate argument limits with "[]") - -define axis/t=1-jan-2000:31-jan-2000:1/units=days my_tax -let tt = t[gt=my_tax] - -! Intentional errors -list tax_datestring (tt[L=3], tt, 5) -list tax_datestring (tt[L=3], tt, "minutes") - VARIABLE : TAX_DATESTRING (TT[L=3], TT, "minutes") - TIME : 03-JAN-2000 00:00 - "03-JAN-2000 00:00" -list tax_datestring (tt[L=3], "my_tax", "minutes") - -set mode /last ignore - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_bad_bounds -! err69_bad_bounds.jnl -! See ticket 2170 - -set mode ignore - -! time axis has a point_spacing=even attribute -! and an invalid set of bounds. -! caused Ferret to mis-read the time axis -use badbounds_even.nc -list var, tbox[gt=var] - DATA SET: ./data/badbounds_even.nc - TIME: 03-JAN-2000 12:00 to 02-FEB-2000 12:00 - Column 1: VAR is T (My Variable) - Column 2: TBOX is TBOX (axis TAX_BB_PTSPAC) - VAR TBOX -06-JAN-2000 00 / 1: 1.000 5.000 -11-JAN-2000 00 / 2: 2.000 5.000 -16-JAN-2000 00 / 3: 3.000 5.000 -21-JAN-2000 00 / 4: 4.000 5.000 -26-JAN-2000 00 / 5: 5.000 5.000 -31-JAN-2000 00 / 6: 6.000 5.000 - -! Same time axis but with a different error in the bounds -! also has a point-spacing=even attribute -! caused Ferret to mis-read the time axis -use badbounds_non_enclose -list var, tbox[gt=var] - DATA SET: ./data/badbounds_non_enclose.nc - TIME: 03-JAN-2000 12:00 to 02-FEB-2000 12:00 - Column 1: VAR is T (My Variable) - Column 2: TBOX is TBOX (axis TAX_BB_EVEN_NOENC) - VAR TBOX -06-JAN-2000 00 / 1: 1.000 5.000 -11-JAN-2000 00 / 2: 2.000 5.000 -16-JAN-2000 00 / 3: 3.000 5.000 -21-JAN-2000 00 / 4: 4.000 5.000 -26-JAN-2000 00 / 5: 5.000 5.000 -31-JAN-2000 00 / 6: 6.000 5.000 - -! Same definition except that the coordinates are irregularly -! spaced, no point-spacing attribute. -use badbounds_uneven -list var, tbox[gt=var] - DATA SET: ./data/badbounds_uneven.nc - TIME: 02-JAN-2000 12:00 to 02-FEB-2000 12:00 - Column 1: VAR is T (My Variable) - Column 2: TBOX is TBOX (axis TAX_BB_IRR) - VAR TBOX -06-JAN-2000 00 / 1: 1.000 7.000 -13-JAN-2000 00 / 2: 2.000 5.000 -16-JAN-2000 00 / 3: 3.000 4.000 -21-JAN-2000 00 / 4: 4.000 5.000 -26-JAN-2000 00 / 5: 5.000 5.000 -31-JAN-2000 00 / 6: 6.000 5.000 - -sh axis TAX_BB* - name axis # pts start end - TAX_BB_IRR TIME 6 i 06-JAN-2000 00:00 31-JAN-2000 00:00 -T0 = 01-JAN-2000 00:00:00 - Axis span (to cell edges) = 31 - TAX_BB_EVEN_NOENC TIME 6 r 06-JAN-2000 00:00 31-JAN-2000 00:00 -T0 = 01-JAN-2000 00:00:00 - Axis span (to cell edges) = 30 - TAX_BB_PTSPAC TIME 6 r 06-JAN-2000 00:00 31-JAN-2000 00:00 -T0 = 01-JAN-2000 00:00:00 - Axis span (to cell edges) = 30 - -set mode/last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_const_array -! err69_const_array.jnl -! 5/8/2014 ACM -! See ticket 2174 -! expressions are not allowed in constant-array definitions. - -set mode ignore - -! The code to read constant-array definitions into memory was simply doing -! a read on each comma-separated portion of the command-line defining it. -! Need to first determine if the buffer represents a simple constant. - -! These already returned an error as cos(1) can't be read with a Fortran read. -list {cos(1), sin(0)} - -! Previously the first was read as {0,180} and the second as {0.1,0.2,1}, and -! the third as {30,2000} ! -! They should be reported as syntax errors - -list {0-180, 180} -list {0.1, 0.2, 1./5.} -list {5*3+1, 2+3} - -! These are ok, and always have been -list/prec=8 {-0.001, 1.23e-2, -45.e3} - VARIABLE : {-0.001, 1.23E-2, -45.E3} - SUBSET : 3 points (X) - 1 / 1: -0.001 - 2 / 2: 0.012 - 3 / 3: -45000.000 - -set mode/last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_multi_label_ascii -! err69_multi_label_ascii.jnl -! 5/2014 ACM -! ticket 2176 -! Multi-line labels and ascii fonts. - -plot/vs/nolab {0,1},{0,1} - - -label .05 .96 0 0 .12 "@CR@P4Single Line examples. Ascii font with and without escape for new color:" -label .05 .9 0 0 .16 "@ASNo_escapes@c002good_1@c003friend_2" -label .05 .83 0 0 .16 "@ASEscape_new_colors@c002red_1@c003green_2" - - -label .05 .65 0 0 .12 "@CR@P4Multi Line ascii examples:" - -label .05 .56 0 0 .12 "@CR@P4without escape" -label .05 .5 0 0 .16 "@ASNo_escapes@c002good_1@c003friend_2" - -label .55 .56 0 0 .12 "@CR@P4with escape:" -label .55 .5 0 0 .16 "@ASEscape_new_colors@c002red_1@c003green_2" - -! escape just the special characters. -label .05 .26 0 0 .12 "@CR@P4Settings around underscores:" -label .05 .2 0 0 .16 "hello@AS_@SRthere@c002good@AS_@SR1@c003friend@AS_@SR2" - -! escape new pen setting, not the font -label .55 .26 0 0 .12 "@CR@P4Escape just the color changes:" -label .55 .2 0 0 .16 "@ASEscape_color_not_font@P2@SRred_1@P3@SRgreen_2" - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_ens_badvalue -! err69_ens_badvalue.jnl -! -! Datasets have _FillValue but not missing_value attributes. -! In this case the missing data info was not correctly handled -! when defining an ensemble. - -use maize_1.nc, maize_2.nc, maize_3.nc - -! Note the _FillValue, flag -sho att maize_yield - attributes for dataset: ./data/maize_3.nc - MAIZE_YIELD._FillValue = 9.96921E+36 - MAIZE_YIELD.long_name = Maize harvest - MAIZE_YIELD.units = kgC.m-2.yr-1 - MAIZE_YIELD.history = From new_ORCH_CORD_MIR_B1_maize -ensemble ens = 1,2,3 - -! MAIZE_YIELD[M=@NGD] should have values of 0, 2, and 3. -list/y=29.25 MAIZE_YIELD[d=1], MAIZE_YIELD[d=2], MAIZE_YIELD[d=3], MAIZE_YIELD[m=@ngd] - LONGITUDE: 8W(-8) to 6W(-6) - LATITUDE: 29.25N - E (realization): 0.5 to 3.5 (number of valid) - Column 1: MAIZE_YIELD[D=maize_1] is Maize harvest (kgC.m-2.yr-1) - Column 2: MAIZE_YIELD[D=maize_2] is Maize harvest (kgC.m-2.yr-1) - Column 3: MAIZE_YIELD[D=maize_3] is Maize harvest (kgC.m-2.yr-1) - Column 4: MAIZE_YIELD[D=ens,E=@NGD] is Maize harvest (# of points) - MAIZE_YIELD MAIZE_YI MAIZE_Y MAIZE_YIELD -7.75W / 1: .... 0.05247 0.1022 2.000 -7.25W / 2: 0.01818 0.03588 0.0049 3.000 -6.75W / 3: -0.00002 0.02030 -0.0139 3.000 -6.25W / 4: .... .... .... 0.000 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_ribbon_by_levels -! err69_ribbon_by_levels.jnl -! ACM 5/19/2014 -! See ticket 2179 -! colors were not repeating after the first 10. - - -let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\ -16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35} - -let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\ -9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\ -8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\ -6.66,6.56,7.36,6.52} - -let/title=colors var = {\ -1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\ -17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\ -5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5} - -RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels xpts,ypts,var - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_ribbon_histogram -! err69_ribbon_histogram.jnl -! ACM 5/24/2014 -! Histogram levels with ribbon line plots - - -let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\ -16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35} - -let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\ -9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\ -8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\ -6.66,6.56,7.36,6.52} - -let/title=colors var = {\ -1.5,1.6,1.8,2.5,2.6,3.7,3.8,1.9,1.1,1.3,1.1,1.2,2.3,\ -2.4,2.4,2.2,2.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\ -5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5} - -! linear levels, then histogram levels -can view; set v left -ribbon/vs/line/thick/lev=10 xpts,ypts,var -set v right -ribbon/vs/line/thick/lev=10h xpts,ypts,var - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_repl_scinot -! err69_repl_scinot.jnl -! ticket 2175 -! The returned number had a bunch of trailing spaces - -let a = 1.e-10 -say (`a`) - !-> MESSAGE/CONTINUE (0.0000000001) -(0.0000000001) - -let a = -1.e-10 -say (`a`) - !-> MESSAGE/CONTINUE (-0.0000000001) -(-0.0000000001) - -let a = -1.23e-10 -say (`a`) - !-> MESSAGE/CONTINUE (-0.000000000123) -(-0.000000000123) - -let a = -1.23e-2 -say (`a`) - !-> MESSAGE/CONTINUE (-0.0123) -(-0.0123) - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err691_bnds_case -! err691_bnds_case -! 6/30/14 -! Ticket 2182 bounds variable incorrectly created with upper-cased axis name - -def ax/t tax = {1,2,4,8} -let tval = t[gt=tax] -can mode upcase_output -save/clob/file=tval.nc tval - -set mode/last upcase_output - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_plot_vs_labs -! err69_plot_vs_labs.jnl -! ticket 2187: the axis labels on the dependent axis -! for PLOT/VS is wrong. LABX and LABY contain the labels used. - -use coads_climatology - -let a = sst[L=1] -let b = a[x=180e:100w@ave] -let c = a[x=150w:90w@ave] -let d = a[x=150w:90w@ave] -set v left; plot/vs b,c; sh sym labx,laby -LABX = "A[X=180E:100W@AVE]" -LABY = "A[X=150W:90W@AVE]" -set v right; plot/vs c,b; sh sym labx,laby -LABX = "A[X=150W:90W@AVE]" -LABY = "A[X=180E:100W@AVE]" - -can view -plot/vs/ribbon c,b,d; sh sym labx,laby -LABX = "A[X=150W:90W@AVE]" -LABY = "A[X=180E:100W@AVE]" - -set v left; plot/trans/vs b,c; sh sym labx,laby -LABX = "A[X=150W:90W@AVE]" -LABY = "A[X=180E:100W@AVE]" -set v right; plot/trans/vs c,b; sh sym labx,laby -LABX = "A[X=180E:100W@AVE]" -LABY = "A[X=150W:90W@AVE]" - -can view -plot/vs/trans/ribbon c,b,d; sh sym labx,laby -LABX = "A[X=180E:100W@AVE]" -LABY = "A[X=150W:90W@AVE]" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_levels_v -! err69_levels_v.jnl -! Ferret ticket 2186, and LAS ticket 1598 -! the data has values in the range 300 to 500, -! and several values over 100000. The variance- -! based levels returned useless levels. Changes -! made to throw out data outside 3 std when -! computing the mean and std dev for color levels. -! Note: fixes to LEV=V 2/2016 - -use "lev_v_bug.nc" -shade/lev=v var2d - -! previously the computed levels spanned -8000 to 16000. -sh sym *lev* -LEV_ALL = "290,300,310,320,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,410,420,430,440,450,1.149E+05" -LEV_TEXT = "V" -LEV_OPNLEVS = "(290,330,10)(332,402,2)(400,450,10)(inf)" -LEV_MIN = "290" -LEV_NUM = "45" -LEV_DEL = "irregular" -LEV_CENTERED_LABELS = "off" -LEV_MAX = "open-ended" - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_letd_dsetnum -! err69_letd_dsetnum.jnl -! Ticket 2189. Previously the grave-accent expression didn't get -! translated, and the let command failed. - -use coads_climatology -let/d=`sst,r=dsetnum` a = 1 - !-> DEFINE VARIABLE/d=1 a = 1 -sh dat - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - ------------------------------ - A[D=coads_climatology] = 1 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_long_string_to_xml -! err69_long_string_to_xml.jnl -! ticket 2190 8-8-2014 -! previously the string was cut off at 512 characters. For this example -! it was in the middle of the code AAAAAAAAAAAA -! - -list/clobber/file="out.xml"/nohead/norow 1 -LET longstring = "Where expocode is 33GG20090204, 33GG20090227, 33GG20090407, 33GG20090419, 33GG20090513, 33GG20090611, 33GG20090701, 33GG20090727, 33GG20090830, 33GG20090915, 33GG20080403, 33GG20080419, 33GG20080512, 33GG20080920, 33GG20081014, 33GG20081028, 33GG20081114, 33GG20091019, 33GG20091101, 332220110627, 332220110716, 332220110802, 332220110820, 332220120220, 332220120327, 332220120717, 332220120905, 33GC20040510, 33GC20040511, 33GC20040512, 33GC20040521, 33GC20040602, 33GC20040603, 33GC20040605, 33GC20040611, AAAAAAAAAAAA, 33GC20040616, 33GC20040617, 33GC20040618, 33GC20040701, 33GC20040721, 33GC20040727, 33GC20040728, 33GC20040729, 33GC20040730, 33GC20040816, 33GC20040908, 33GC20040924, 33GC20041006, 33GC20041028, 33GC20041029, 33GC20041104, 33GC20041108, 33GC20041206, 33GC20041209, 33GC20050119, 33GC20050130, 33GC20050131, 33GC20050217, 33GC20050315, 33GC20050316, 33GC20050317, 33GC20050318, 33GC20050406, 33GC20050407, 33GC20050419, 33GC20050420, 33GC20050510, 33GC20050511, 33GC20050518, 33GC20050519, 33GC20050617, 33GC20050629, 33GC20050630, 33GC20050712, 33GC20050713, 33GC20050714" -LET status = list_value_xml ("mytag", longstring, 1, "out.xml") -LOAD status - -sp cat out.xml - 1.000 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_fill_trans -! err69_fill_trans.jnl -! ticket 2196. Visible only if bounds-checking is turned on. -! 9/22/2014 - -DEFINE AXIS/x=1:15:1 xaxis -let var = {1,2,3,,,,,,,4,,5,6,7,8} -LET myvar = var[gx=xaxis@asn] - -list myvar - VARIABLE : VAR[GX=XAXIS@ASN] - SUBSET : 15 points (X) - 1 / 1: 1.000 - 2 / 2: 2.000 - 3 / 3: 3.000 - 4 / 4: .... - 5 / 5: .... - 6 / 6: .... - 7 / 7: .... - 8 / 8: .... - 9 / 9: .... - 10 / 10: 4.000 - 11 / 11: .... - 12 / 12: 5.000 - 13 / 13: 6.000 - 14 / 14: 7.000 - 15 / 15: 8.000 -list myvar[x=6@fnr:2] - VARIABLE : VAR[GX=XAXIS@ASN] - X : 6 (nearest-filled by 2 pts) - .... - -! This caused attempt to load variable at index i = -4 -list myvar[x=6@fnr:10] - VARIABLE : VAR[GX=XAXIS@ASN] - X : 6 (nearest-filled by 10 pts) - 3.000 - -! Likewise the way @FAV is computed, this caused Ferret -! to try to get data at i=-3 -list myvar[x=6@fav:18] - VARIABLE : VAR[GX=XAXIS@ASN] - X : 6 (ave-filled by 18 pts) - 4.500 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_load_big_grid -! err69_load_big_grid -! ticket 1758 -! error about "a negative number of words requested... grid too large" -! in fact all large grids misreports size. Now computations are done -! in real numbers and in block not word sizes. - -set mode ignore - -def axis/x=1:360:1 xaxis -def axis/y=1:180:1 yaxis -def axis/z=1:20:1 zaxis - -! this gave the error about "a negative number of words requested... grid too large" -define axis/t=1-jan-2000:1-jan-2005:1/units=days longtime -let bigvar = x[gx=xaxis]+y[gy=yaxis] + z[gz=zaxis] + t[gt=longtime] -sh grid bigvar - GRID (G105) - name axis # pts start end subset - XAXIS X 360 r 1 360 full - YAXIS Y 180 r 1 180 full - ZAXIS Z 20 r 1 20 full - LONGTIME TIME 1828 r 01-JAN-2000 00:00 01-JAN-2005 00:00 full -load bigvar - To fulfill this request would exceed the current SET MEMORY/SIZE= limit of 250Mb - At the moment that the memory limit was reached - memory was committed as follows: - - to objects used in computation: 1297828 (4%) - The size of the requested object was: 18.95 Gb (7581%) - -! also was an incorrect size. -define axis/t=1-jan-2000:1-jan-2010:1/units=days longtime -sh grid bigvar - GRID (G105) - name axis # pts start end subset - XAXIS X 360 r 1 360 full - YAXIS Y 180 r 1 180 full - ZAXIS Z 20 r 1 20 full - LONGTIME TIME 3654 r 01-JAN-2000 00:00 01-JAN-2010 00:00 full -load bigvar - To fulfill this request would exceed the current SET MEMORY/SIZE= limit of 250Mb - At the moment that the memory limit was reached - memory was committed as follows: - - to objects used in computation: 1299654 (4%) - The size of the requested object was: 37.88 Gb (15154%) - -cancel mode ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_write_attribute -! err69_write_attribute.jnl -! Bug 1863 - -use gt4d011.cdf -sh grid temp - GRID PS3DT21 - name axis # pts start end subset - PSXT LONGITUDE 160mr 130.5E 70.5W full - PSYT1 LATITUDE 100 i 28.836S 48.568N full - PSZT2 DEPTH (m) 27 i- 5 3824 full - TIME111 TIME 25 r 17-AUG-1982 12:00 10-JAN-1983 12:00 full -let a = temp[x=@ave,y=@ave,L=1] - -! The attribute we ask not to write is not written for this variable -can att/output (`a,r=zaxis`).point_spacing - !-> can att/output (PSZT2).point_spacing -save/q/clob/file="a.nc"/bounds a -sp ncdump -h a.nc | grep -i "`a,r=zaxis`" - !-> sp ncdump -h a.nc | grep -i "PSZT2" - PSZT21_10 = 10 ; - double PSZT21_10(PSZT21_10) ; - PSZT21_10:units = "meters" ; - PSZT21_10:positive = "down" ; - PSZT21_10:standard_name = "depth" ; - PSZT21_10:bounds = "PSZT21_10_bnds" ; - double PSZT21_10_bnds(PSZT21_10, bnds) ; - double A(TIME111, PSZT21_10) ; - -! But it was being written for this one. It should not. -let b = temp[x=@ave,y=@ave,L=1,d=1] -save/q/clob/file="a.nc"/bounds b -sp ncdump -h a.nc | grep -i "`b,r=zaxis`" - !-> sp ncdump -h a.nc | grep -i "PSZT2" - PSZT21_10 = 10 ; - double PSZT21_10(PSZT21_10) ; - PSZT21_10:units = "meters" ; - PSZT21_10:positive = "down" ; - PSZT21_10:standard_name = "depth" ; - PSZT21_10:bounds = "PSZT21_10_bnds" ; - double PSZT21_10_bnds(PSZT21_10, bnds) ; - double B(TIME111, PSZT21_10) ; - -! A variable that depends on more than one dataset. -use coads_climatology -let c = temp[x=@ave,y=@ave,L=1,d=1] + sst[x=@ave,y=@ave,t=@ave,d=2] -save/q/clob/file="a.nc"/bounds c -sp ncdump -h a.nc | grep -i "`c,r=zaxis`" - !-> sp ncdump -h a.nc | grep -i "PSZT2" - PSZT21_10 = 10 ; - double PSZT21_10(PSZT21_10) ; - PSZT21_10:units = "meters" ; - PSZT21_10:positive = "down" ; - PSZT21_10:standard_name = "depth" ; - PSZT21_10:bounds = "PSZT21_10_bnds" ; - double PSZT21_10_bnds(PSZT21_10, bnds) ; - double C(PSZT21_10) ; - -can data/all -can var/all - -! When there are two datasets with the same axis name but different depths, -! the second axis name is changed internally. - -DEFINE AXIS/z/depth zzdep = {0,10,20,30,50,75,100,150,200,300,400,600,800,1000,1200,1500,2000,3000,4000,5000} - -LET temp = z[gz=zzdep] -save/clobber/file=aa.nc temp -save/clobber/keep/file=bb.nc temp[k=1:15] -can var/all -can axis zzdep - -use aa -use bb -set data 1 - -show att (`temp,r=zaxis`) - !-> show att (ZZDEP) - attributes for dataset: ./aa.nc - (ZZDEP).point_spacing = uneven - (ZZDEP).axis = Z - (ZZDEP).bounds = ZZDEP_bnds - (ZZDEP).positive = down - (ZZDEP).standard_name = depth - (ZZDEP).orig_file_axname = ZZDEP - -let a = temp[d=1,x=@ave,y=@ave] -can att/output (`a,r=zaxis`).point_spacing - !-> can att/output (ZZDEP).point_spacing -save/clobber/file=a.nc a -sp ncdump -h a.nc | grep -i `a,r=zaxis` - !-> sp ncdump -h a.nc | grep -i ZZDEP - ZZDEP = 20 ; - double ZZDEP(ZZDEP) ; - ZZDEP:axis = "Z" ; - ZZDEP:bounds = "ZZDEP_bnds" ; - ZZDEP:positive = "down" ; - ZZDEP:standard_name = "depth" ; - double ZZDEP_bnds(ZZDEP, bnds) ; - double A(ZZDEP) ; - -set data 2 -let a = temp[d=2,x=@ave,y=@ave] -can att/output (`a,r=zaxis`).point_spacing - !-> can att/output (ZZDEP1).point_spacing -save/clobber/file=a.nc a -sp ncdump -h a.nc | grep -i `a,r=zaxis` - !-> sp ncdump -h a.nc | grep -i ZZDEP1 - ZZDEP1 = 15 ; - double ZZDEP1(ZZDEP1) ; - ZZDEP1:axis = "Z" ; - ZZDEP1:bounds = "ZZDEP1_bnds" ; - ZZDEP1:positive = "down" ; - ZZDEP1:standard_name = "depth" ; - double ZZDEP1_bnds(ZZDEP1, bnds) ; - double A(ZZDEP1) ; - -let a = temp[d=2,gz=temp[d=1]] - -can att/output (`a,r=zaxis`).point_spacing - !-> can att/output (ZZDEP).point_spacing - -save/clobber/file=a.nc a -sp ncdump -h a.nc | grep -i `a,r=zaxis` - !-> sp ncdump -h a.nc | grep -i ZZDEP - ZZDEP = 20 ; - double ZZDEP(ZZDEP) ; - ZZDEP:axis = "Z" ; - ZZDEP:bounds = "ZZDEP_bnds" ; - ZZDEP:positive = "down" ; - ZZDEP:standard_name = "depth" ; - double ZZDEP_bnds(ZZDEP, bnds) ; - double A(ZZDEP) ; - -sp rm aa.nc bb.nc - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_isready_status_errmsgs -! err69_isready_status_errmsgs -! ticket 2197 -! RETURN=isready or RETURN=status caused error reporting -! to go silent. - -set mode ignore -list a -say `a,return=isready` - !-> MESSAGE/CONTINUE 0 -0 -say `c,return=status` - !-> MESSAGE/CONTINUE UNKNOWN VARIABLE: C -UNKNOWN VARIABLE: C -list a -list b -shade a - -set mode/last ignore - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_isready_status_errmsgs -! err69_isready_status_errmsgs -! ticket 2197 -! RETURN=isready or RETURN=status caused error reporting -! to go silent. - -set mode ignore -list a -say `a,return=isready` - !-> MESSAGE/CONTINUE 0 -0 -say `c,return=status` - !-> MESSAGE/CONTINUE UNKNOWN VARIABLE: C -UNKNOWN VARIABLE: C -list a -list b -shade a - -set mode/last ignore - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_countervar_context -! err69_countervar_context.jnl -! ACM 10/3/2014 -! Ticket 2200. Context from SET REGION should not -! apply in named-repeat loop. The loop would run, -! but returned values of 0. - -let a = b -set region/i=20:30 -repeat/name=b/range=1:3 (say `a`) -!-> REPEAT: B:1 - !-> MESSAGE/CONTINUE 1 -1 -!-> REPEAT: B:2 - !-> MESSAGE/CONTINUE 2 -2 -!-> REPEAT: B:3 - !-> MESSAGE/CONTINUE 3 -3 - -can region - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_label_backspace -! err69_label_backspace -! Ticket 2203: \\ before a character backspaces before -! making the character. This broke in the 64-bit versions. - -plot/vs/nolab {0,1},{0,1} -label .5 .5 0 0 1 "El Nin\\^@MA45@SRo\!" - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_isready_and_regridding -! err69_isready_and_regridding.jnl -! Ticket 2204: A `var,return=isready` sends Ferret into a hanged -! state after other contexts have been defined - -can dat/all - -! create & load a file with a Gregorian time axis -def ax/t/unit=days/t0=1-jan-1979 tax_g = {15,45,75,105,135} -let a = t[gt=tax_g] -save/clob/file=a.nc a -can var a -can ax tax_g -use a.nc - -! create a variable on a Julian time axis -def ax/edge/t=1-feb-1980:1-feb-2003/np=276/cal=julian/unit="hour"/t0=1-jan-1900 tax_j -let b = t[gt=tax_j] - -! put the Gregorian data on the Julian axis -let a2 = a -let a2_on_b = a2[gt=b] - -! create a climatological axis (Julian) -def ax/t/unit=days/t0=1-jan-0001/modulo=365.25/cal=julian tax_jc = {15.5,45.125,74.75,105.25,135.75,166.25,196.75,227.75,258.25,288.75,319.25,349.75} - -let b_one = missing(1+0*b,1) !set everything to 1 -let nyr = b_one[gl=tax_jc@modsum] !# years that include each month - -! Execute some commands which put things into context storage - -say `a2_on_b,r=title` - !-> MESSAGE/CONTINUE A2[GT=B] -A2[GT=B] -say `nyr[l=1]` - !-> MESSAGE/CONTINUE 23 -23 - -! This got us into a weird hanged state -IF `a2_on_b,r=isready` THEN - !-> IF 1 THEN -ENDIF - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_vtree_and_uvar_regrid -! err69_vtree_and_uvar_regrid.jnl -! Ticket 2206: This lead to a crash. -! 10/9/2014 - -let a = t[gt=1:2:1] -let b2 = a -let c = b2[gt=a] -GO bn_vtree.sub c -/TREE=ALL - C = B2[GT=A] - B2 = A - regrid to A = T[GT=1:2:1] - A = T[GT=1:2:1] -/TREE=USER - C = B2[GT=A] - B2 = A - regrid to A = T[GT=1:2:1] - A = T[GT=1:2:1] -/TREE=FILE -c is ready and AVAILABLE -************************ - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_vtree_cancel_axis -! err69_vtree_cancel_axis -! Ticket 2201: After a return=isready, -! cannot cancel the axis used by the var -! 10-Oct-2014 - -define axis/x=0:360:1 xax1 -define axis/x=0:360:10 xax2 - -let a = x[gx=xax1] -say `a,return=title` - !-> MESSAGE/CONTINUE X[GX=XAX1] -X[GX=XAX1] - -let b = a[gx=xax2] -say `b,return=isready` - !-> MESSAGE/CONTINUE 1 -1 - -cancel var a b -cancel axis xax1 -cancel axis xax2 - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err69_isready_bugs -! err69_isready_bugs.jnl -! Tickets 2201 and 2215 -! updated error script 12/14 *sh* - to ensure that bench log file -! has verification of this problem and its fix, as well as the bench error file - -! ticket 2201: isready operation meant we couldn't cancel the second axis - -def ax/x=0:360:1 xax_isready_1 -def ax/x=0:360:10 xax_isready_2 -let a = x[gx=xax_isready_1] -say `a,r=title` - !-> MESSAGE/CONTINUE X[GX=XAX_ISREADY_1] -X[GX=XAX_ISREADY_1] -let b = a[gx=xax_isready_2] -load b -say `b,r=isready` - !-> MESSAGE/CONTINUE 1 -1 - - -can var a -can axis xax_isready_1 -can var b -can axis xax_isready_2 - -! 12/14 additions: -show grid/dynamic ! look for "err: grid over-allocated" messages -Dynamic grids: - no implicit grids -Dynamic axes: - AXIS (AX132) use count: 1 - AXIS (AX054) use count: 13 - AXIS (AX052) use count: 13 - AXIS (AX009) use count: 2 -show axis xax_isready_1, xax_isready_2 ! did they both get canceled? - name axis # pts start end - -! Ticket 2215, only with an unreleased Ferret; the first fix to 2201. - -let a = x[gx=1:3:1] -let b = a - a[gx=a] -let c = 1 -let/unit="m" f = b*c -say `f,r=isready` - !-> MESSAGE/CONTINUE 1 -1 - -say `f,r=unit` - !-> MESSAGE/CONTINUE m -m - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err691_substring_arg -! err693_substring_arg -! ACM 12/10/2014 -! ticket 2210. Argument checking was not done for the SUBSTRING function - -set mode ignore -list substring("hello",1,-2) -list substring("hello",1,-3) - -set mode/last ignore - -GO bn_reset bn_append_dsg -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_append_dsg -GO bn_append_dsg -! bn_append_dsg.jnl -!From SOCAT 3: appending to a dsg file where the new variable is on the obs -! dimension. THe file has no coordinate variable, and we want to keep it that way. -! Ferret needs to detect the dimension-only axis and keep it as-is. Do not upcase, -! do not write a coordinate variable. -! -! Contains the metadata variables, global attributes, and incoming variables. -! Where we recompute some of the incoming variables and append them to the file, -! the values in the file are replaced. -! -! Argument is a file name; the single-cruise dsg file from the data entry -! -! We append more variables to the file, using the same obs dimension. -! NOTE With the fix for ticket 2241, we need to add CANCEL MODE UPCASE. - -! 2/13/2019, updates for DSG-enabled Ferret -! Changing the data in test_save_dsg.nc, to make the lon360 computation more obvious -! List the data at the end of this script Note in DSG-enabled Ferret this works -! when the new data is a LET/D variable on the dataset's obs grid or feature-grid. - - -sp rm test_save_dsg.nc -sp cp data/test_save_dsg_in.nc test_save_dsg.nc - -use test_save_dsg.nc - -cancel mode upcase - -! Lon in 0-360 -let/D=1/like=longitude lon360 = IF longitude LT 0 THEN longitude+360 else longitude -cancel attribute/output lon360.axis -cancel attribute/output lon360.actual_range -define attribute/output lon360.history = "added to test_save_dsg.nc" - -save/quiet/append/file=test_save_dsg.nc lon360 - -! The longitude and lon360 variables should have the same lowercase (obs) dimension. - -sp ncdump -h test_save_dsg.nc -netcdf test_save_dsg { -dimensions: - trajectory = 1 ; - string_length = 12 ; - obs = 25 ; - char_length = 1 ; -variables: - char expocode(trajectory, string_length) ; - expocode:cf_role = "trajectory_id" ; - char cruiseName(trajectory, string_length) ; - char vesselName(trajectory, string_length) ; - char scienceGroup(trajectory, string_length) ; - char origDataRef(trajectory, string_length) ; - char socatDOI(trajectory, string_length) ; - char socatDOIHRef(trajectory, string_length) ; - double rowSize(trajectory) ; - rowSize:sample_dimension = "obs" ; - rowSize:long_name = "Number of Observations" ; - double longitude(obs) ; - longitude:missing_value = -1.e+34 ; - longitude:_FillValue = -1.e+34 ; - longitude:units = "degrees_east" ; - longitude:long_name = "longitude" ; - longitude:standard_name = "longitude" ; - longitude:axis = "X" ; - double latitude(obs) ; - latitude:missing_value = -1.e+34 ; - latitude:_FillValue = -1.e+34 ; - latitude:units = "degrees_north" ; - latitude:long_name = "latitude" ; - latitude:standard_name = "latitude" ; - latitude:axis = "Y" ; - double time(obs) ; - time:units = "seconds since 1970-01-01 00:00:00" ; - time:axis = "T" ; - time:time_origin = "1-JAN-1970" ; - time:standard_name = "time" ; - double var(obs) ; - var:missing_value = -1.e+34 ; - var:_FillValue = -1.e+34 ; - var:long_name = "Variable" ; - var:units = "Deg C" ; - double lon360(obs) ; - lon360:missing_value = -1.e+34 ; - lon360:_FillValue = -1.e+34 ; - lon360:units = "degrees_east" ; - lon360:long_name = "longitude" ; - lon360:standard_name = "longitude" ; - lon360:history = "added to test_save_dsg.nc" ; - -// global attributes: - :History = "CruiseDsgNcFile 1.0 with axis and actual_range attributes" ; - :featureType = "Trajectory" ; - :Conventions = "CF-1.6" ; - :geospatial_lon_min = 7.7 ; - :geospatial_lon_max = 7.4 ; - :geospatial_lat_min = 2.59 ; - :geospatial_lat_max = 2.66 ; - :time_coverage_start = "2010-01-01T00:00:00Z" ; - :time_converage_end = "2010-01-13T00:00:00Z" ; - :history = "FERRET V7.441 (DSG: beta/debug) 13-Feb-19PyFerret V7.51 (debug) 20-Aug-19" ; -} - -! List it, in dsg-listing format. Compare longitude and lon360 -can var/all -can data/all -use test_save_dsg.nc -list lon360 - DATA SET: ./test_save_dsg.nc - EXPOCODE is Trajectory-id - LON360 is longitude (degrees_east) - FEATURE EXPOCODE LONGITUDE LATITUDE TIME LON360 - - 1 31B520060606 170.5W 1.241N 01-MAR-2010 00:00 189.5 - 1 31B520060606 171.5W 1.241N 01-MAR-2010 12:00 188.5 - 1 31B520060606 170.4W 3.2413N 02-MAR-2010 00:00 189.6 - 1 31B520060606 175.4W 4.2462N 02-MAR-2010 12:00 184.6 - 1 31B520060606 177.4W 4.2478N 03-MAR-2010 00:00 182.6 - 1 31B520060606 170.3W 2.2408N 03-MAR-2010 12:00 189.7 - 1 31B520060606 174.3E 2.2407N 04-MAR-2010 00:00 174.3 - 1 31B520060606 170W 2.2407N 04-MAR-2010 12:00 190.0 - 1 31B520060606 172.2W 2.24N 05-MAR-2010 00:00 187.8 - 1 31B520060606 171.3W 3.2403N 05-MAR-2010 12:00 188.7 - 1 31B520060606 174.5W 3.2407N 06-MAR-2010 00:00 185.5 - 1 31B520060606 170.7W 3.241N 06-MAR-2010 12:00 189.3 - 1 31B520060606 173.1W 4.2495N 07-MAR-2010 00:00 186.9 - 1 31B520060606 173.9W 4.2511N 07-MAR-2010 12:00 186.1 - 1 31B520060606 174.8W 5.2488N 08-MAR-2010 00:00 185.3 - 1 31B520060606 175.6W 5.2467N 08-MAR-2010 12:00 184.4 - 1 31B520060606 176.4W 5.2447N 09-MAR-2010 00:00 183.6 - 1 31B520060606 175.4W 7.2426N 09-MAR-2010 12:00 184.6 - 1 31B520060606 174.4W 7.2377N 10-MAR-2010 00:00 185.6 - 1 31B520060606 173.3W 1.2409N 10-MAR-2010 12:00 186.7 - 1 31B520060606 172.3W 1.2408N 11-MAR-2010 00:00 187.7 - 1 31B520060606 171.3W 5.2528N 11-MAR-2010 12:00 188.7 - 1 31B520060606 178.8E 5.2508N 12-MAR-2010 00:00 178.8 - 1 31B520060606 178E 7.2359N 12-MAR-2010 12:00 177.9 - 1 31B520060606 179E 7.234N 13-MAR-2010 00:00 179.0 - -set mode/last upcase - - -GO bn_reset bn_global_atts -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_global_atts -GO bn_global_atts -! bn_global_atts -! NOTE With the fix for ticket 2241, we need to add CANCEL MODE UPCASE. -! Note With auto-detection of DSG files, this is detected as an invalid DSG. -! Ignore it's dsg-ness. - -cancel mode upcase - -sp cp data/global.nc global_copy.nc -use/feature=none global_copy.nc -! Lon in 0-360 -let/title="longitude"/units="degrees_east" lon360 = IF longitude LT 0 THEN longitude+360 else longitude -define attribute/output lon360.ioos_category = "Location" -define attribute/output lon360.standard_name = "Longitude" -define attribute/output lon360.history = "added to test_save_dsg.nc" -save/quiet/append/file=global_copy.nc lon360 -sp ncdump -h data/global.nc -netcdf global { -dimensions: - trajectory = 1 ; - string_length = 33 ; - obs = 25 ; - char_length = 1 ; -variables: - char expocode(trajectory, string_length) ; - expocode:cf_role = "trajectory_id" ; - char cruiseName(trajectory, string_length) ; - char vesselName(trajectory, string_length) ; - char scienceGroup(trajectory, string_length) ; - char origDataRef(trajectory, string_length) ; - char socatDOI(trajectory, string_length) ; - char socatDOIHRef(trajectory, string_length) ; - double rowSize(trajectory) ; - rowSize:sample_dimension = "obs" ; - rowSize:long_name = "Number of Observations" ; - double longitude(obs) ; - longitude:missing_value = -1.e+34 ; - longitude:_FillValue = -1.e+34 ; - longitude:units = "degrees_east" ; - longitude:long_name = "longitude" ; - longitude:standard_name = "longitude" ; - longitude:axis = "X" ; - longitude:actual_range = -92.766, -92.7472 ; - longitude:ioos_category = "Location" ; - -// global attributes: - :history = "CruiseDsgNcFile 1.0 .10/2017 add axis and actual_range attributes" ; - :featureType = "Trajectory" ; - :Conventions = "Some other conventions" ; - :geospatial_lon_min = -92.77 ; - :geospatial_lon_max = -92.74 ; - :geospatial_lat_min = 20.04 ; - :geospatial_lat_max = 29.07 ; - :time_coverage_start = "2006-06-10T23:48:00Z" ; - :time_converage_end = "2006-06-11T00:12:00Z" ; -} -sp ncdump -h global_copy.nc -netcdf global_copy { -dimensions: - trajectory = 1 ; - string_length = 33 ; - obs = 25 ; - char_length = 1 ; -variables: - char expocode(trajectory, string_length) ; - expocode:cf_role = "trajectory_id" ; - char cruiseName(trajectory, string_length) ; - char vesselName(trajectory, string_length) ; - char scienceGroup(trajectory, string_length) ; - char origDataRef(trajectory, string_length) ; - char socatDOI(trajectory, string_length) ; - char socatDOIHRef(trajectory, string_length) ; - double rowSize(trajectory) ; - rowSize:sample_dimension = "obs" ; - rowSize:long_name = "Number of Observations" ; - double longitude(obs) ; - longitude:missing_value = -1.e+34 ; - longitude:_FillValue = -1.e+34 ; - longitude:units = "degrees_east" ; - longitude:long_name = "longitude" ; - longitude:standard_name = "longitude" ; - longitude:axis = "X" ; - longitude:actual_range = -92.766, -92.7472 ; - longitude:ioos_category = "Location" ; - double lon360(obs) ; - lon360:missing_value = -1.e+34 ; - lon360:_FillValue = -1.e+34 ; - lon360:long_name = "longitude" ; - lon360:units = "degrees_east" ; - lon360:ioos_category = "Location" ; - lon360:standard_name = "Longitude" ; - lon360:history = "added to test_save_dsg.nc" ; - -// global attributes: - :history = "CruiseDsgNcFile 1.0 .10/2017 add axis and actual_range attributesPyFerret V7.51 (debug) 20-Aug-19" ; - :featureType = "Trajectory" ; - :Conventions = "Some other conventionsCF-1.6" ; - :geospatial_lon_min = -92.77 ; - :geospatial_lon_max = -92.74 ; - :geospatial_lat_min = 20.04 ; - :geospatial_lat_max = 29.07 ; - :time_coverage_start = "2006-06-10T23:48:00Z" ; - :time_converage_end = "2006-06-11T00:12:00Z" ; -} - -! This dataset has global attributes history and Conventions that include -! a Ferret version and CF version that Ferret will replace. - -sp ncgen -o anew_global.nc data/anew_global.cdl -use anew_global.nc -sh att . - attributes for dataset: ./anew_global.nc - ..history = Subset of etopo20, - FERRET V6.71 9-May-14 - ..Conventions = Existing conventions note, CF-1.0 -let var = 8 -save/append/file=anew_global.nc var -can dat/all; use anew_global.nc -sh att . - attributes for dataset: ./anew_global.nc - ..history = Subset of etopo20, - PyFerret V7.51 (debug) 20-Aug-19 - ..Conventions = Existing conventions note, , CF-1.6 - - -set mode/last upcase - - -GO bn_reset bn_conventions_history -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_conventions_history -GO bn_conventions_history -! bn_conventions_history.jnl -! ticket 2169: -! Write conventions CF-1.6 -! When appending to the Conventions and history -! attribute, add the new stuff with a comma and newline. - -sp cp data/conventions_history_in.nc conventions_history.nc -use conventions_history -! -! The existing global attributes -sh att . - attributes for dataset: ./conventions_history.nc - ..history = The history of the file - ..Conventions = Conventions for variables named V2 -! -! Write to the file -let v3 = v1+v2 -save/append/file=conventions_history.nc v3 -can dat/all; use conventions_history -! -! The new attibutes -sh att . - attributes for dataset: ./conventions_history.nc - ..history = The history of the filePyFerret V7.51 (debug) 20-Aug-19 - ..Conventions = Conventions for variables named V2CF-1.6 - -GO bn_reset bn_center_key_labels -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_center_key_labels -GO bn_center_key_labels -! bn_center_key_labels -! 6/2014 -! -! Arguments to /KEY qualifier on color plots -! /CENTERLABEL for label between lines on colorbar -! /HORIZONTAL for horizontal key - -use levitus_climatology.cdf -shade/lev=10/key=cent,horiz temp -fill/lev=10v/key=cent temp - -! Ribbon plots and all three keywords: centerlab, horizontal, continuous -let/title=xpts xpts = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,\ -16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35} -let/title=ypts ypts = { 9.04,8.67,8.96,9.29,9.18,9.42,9.43,\ -9.33,9.19,9.22,9.12,9.36,9.22,9.04,8.92,9.00,8.59,8.31,8.69,\ -8.20,8.86,7.98,7.80,8.29,7.94,8.05,7.85,7.55,7.56,6.82,7.04,\ -6.66,6.56,7.36,6.52} -let/title=colors var = {\ -1.5,1.6,1.8,2.5,2.6,3.7,3.8,14.9,14.1,5.3,16.1,16.2,17.3,\ -17.4,8.4,8.2,9.5,9.1,10.1,10.2,12.2,12.6,1.7,1.1,5.2,5.3,\ -5.4,13.6,13.7,14.8,14.2,14.9,14.7,14.6,14.5} -RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key=center,horiz,cont xpts,ypts,var - -! Automatically restore non-continuous key, non-center, vertical -RIBBON/vs/line/thick/lev=(1,20,1)/fast/pal=ten_by_levels/key xpts,ypts,var - -! Polygons: the polymark script needs multiple key qualifiers to be in quotes. -use coads_climatology -def axis/x=0:360:5 xq -def axis/y=-90:90:4 yq -let fsst = sst[l=1,gx=xq,gy=yq] - -let lon = xsequence(x[gx=xq] + 0*y[gy=yq]) -let lat = xsequence(0*x[gx=xq] + y[gy=yq]) -shade/nokey/pal=white/nolab/axes=0,0,0,0 fsst ! set up - -go polymark poly/key="horiz,center"/title="polygons"/lev=(-inf)(4,26,1)(inf), lon, lat, xsequence(fsst), square, 0.4 - -can data coads_climatology - -! Automatically restore regular handling of levels -shade temp - - -GO bn_reset bn_wgt_transform -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_wgt_transform -GO bn_wgt_transform -! bn_wgt_transform.jnl test new @WGT transform, -! returns weights used in the equiv. average or integral transform -! ACM 7/2014 - -! Define an XYT grid - -def axis/x=2:360:2/units=degrees_east x2 -def axis/y=-89:89:2/units=degrees_north y2 -let var = x[gx=x2] + y[gy=y2] + t[gt=month_irreg] -let weights= var[x=@wgt,y=@wgt,t=@wgt] - -! Varies in y with latitude correction -shade/l=1 weights - -! Sum of xy transform is the surface area of the earth, meters -let weights= var[x=@wgt,y=@wgt] -list/l=1 weights[i=@sum,j=@sum] - VARIABLE : VAR[X=@WGT,Y=@WGT] - LONGITUDE: 1E to 1E(361) (XY summed) - LATITUDE : 90S to 90N (XY summed) - TIME : 16-JAN 12:00 - 5.101E+14 - -! Varies in T because of irregular t axis -shade/x=1 weights - - -! The result t=@WGT returned in seconds -let mywt = var[t=@wgt] - -let secperday = 24*3600 -list/x=1/y=1 mywt, mywt/secperday - TIME: 01-JAN 00:00 to 31-DEC 05:49 - LONGITUDE: 1E (interpolated) - LATITUDE: 1N - Column 1: MYWT is VAR[T=@WGT] - Column 2: EX#2 is MYWT/SECPERDAY - MYWT EX#2 -16-JAN 12 / 1: 2678400. 31.00 -15-FEB 02 / 2: 2440152. 28.24 -15-MAR 17 / 3: 2678400. 31.00 -15-APR 05 / 4: 2592000. 30.00 -15-MAY 17 / 5: 2678400. 31.00 -15-JUN 05 / 6: 2592000. 30.00 -15-JUL 17 / 7: 2678400. 31.00 -15-AUG 17 / 8: 2678400. 31.00 -15-SEP 05 / 9: 2592000. 30.00 -15-OCT 17 / 10: 2678400. 31.00 -15-NOV 05 / 11: 2592000. 30.00 -15-DEC 17 / 12: 2678400. 31.00 - -! Test reusing results. (ticket 2183) -use gt4d011.cdf -! The last value is a partial grid cell -list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt] - VARIABLE : TEMPERATURE (deg. C) - weights for avg,int on Z - FILENAME : gt4d011.cdf - SUBSET : 5 points (DEPTH (m)) - LONGITUDE: 130W (interpolated) - LATITUDE : 1.5N (interpolated) - TIME : 01-SEP-1982 00:00 (interpolated) - 5 / 1: 2.00 - 15 / 2: 10.00 - 25 / 3: 10.00 - 35 / 4: 10.00 - 45 / 5: 3.50 - -! Now load the result over a larger region -list/y=1.5/x=130w/z=0:82/t=1-sep-1982 temp[z=@wgt] - VARIABLE : TEMPERATURE (deg. C) - weights for avg,int on Z - FILENAME : gt4d011.cdf - SUBSET : 9 points (DEPTH (m)) - LONGITUDE: 130W (interpolated) - LATITUDE : 1.5N (interpolated) - TIME : 01-SEP-1982 00:00 (interpolated) - 5 / 1: 10.00 - 15 / 2: 10.00 - 25 / 3: 10.00 - 35 / 4: 10.00 - 45 / 5: 10.00 - 55 / 6: 10.00 - 65 / 7: 10.00 - 75 / 8: 10.00 - 85 / 9: 2.00 - -! This finds the previous result in memory - needs to -! reuse the correct one. - -list/y=1.5/x=130w/z=8:43.5/t=1-sep-1982 temp[z=@wgt] - VARIABLE : TEMPERATURE (deg. C) - weights for avg,int on Z - FILENAME : gt4d011.cdf - SUBSET : 5 points (DEPTH (m)) - LONGITUDE: 130W (interpolated) - LATITUDE : 1.5N (interpolated) - TIME : 01-SEP-1982 00:00 (interpolated) - 5 / 1: 2.00 - 15 / 2: 10.00 - 25 / 3: 10.00 - 35 / 4: 10.00 - 45 / 5: 3.50 - -GO bn_reset bn_show_outfile -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_show_outfile -GO bn_show_outfile -! bn_show_outfile -! Adding tests for SHOW/OUTFILE= -! Previously only tests when SHOW/XML/OUTFILE= -! Bugs in SHOW/OUTFILE reported in ticket 2194 -! 8/18/2014 - -! test various combinations of /append and /clobber - -!can mode verify - -! show axis/outfile - - -sho ax/clobber/outfile=a.txt month_irreg -sho ax/clobber/outfile=a.txt month_irreg - -SAY ---------------- Just axis month_irreg ----------------- Just axis month_irreg -sp cat a.txt - name axis # pts start end - MONTH_IRREG TIME 12mi 16-JAN 12:00 15-DEC 17:49 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - -show axis/append/outfile=a.txt PS* - -SAY ---------------- appending all axes starting with PS ----------------- appending all axes starting with PS -sp cat a.txt - name axis # pts start end - MONTH_IRREG TIME 12mi 16-JAN 12:00 15-DEC 17:49 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - name axis # pts start end - PSYT5_89 LATITUDE 85 i 20.151S 21.613N - Axis span (to cell edges) = 43.60417 - PSZT1_2 DEPTH (m) 2 r- 5 15 - Axis span (to cell edges) = 20 - PSZT2 DEPTH (m) 27 i- 5 3824 - Axis span (to cell edges) = 4149 - PSXT LONGITUDE 160mr 130.5E 70.5W - Axis span (to cell edges) = 160 (modulo length = 360) - PSYT1 LATITUDE 100 i 28.836S 48.568N - Axis span (to cell edges) = 80.00004 - PSZT1 Z (METERS) 27 i 5 3824 - Axis span (to cell edges) = 4149 - PSXU LONGITUDE 160mr 131E 70W - Axis span (to cell edges) = 160 (modulo length = 360) - PSYU LATITUDE 100 i 27.672S 50N - Axis span (to cell edges) = 80.2682 - PSZW DEPTH (m) 27 i- 10 4149 - Axis span (to cell edges) = 4144 - PSYT Y (seconds) 100 i -28.836 48.568 - Axis span (to cell edges) = 80.00004 - -! show grid/outfile - -use coads_climatology -show grid/clobber/outfile=a.txt sst - -SAY ---------------- Just the grid of sst ----------------- Just the grid of sst -sp cat a.txt - GRID GSQ1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 full - -! show var/outfile - -use coads_climatology -let two = 2 -let myvar = sst*2 -show var/clobber/outfile=a.txt myvar, two - -SAY ---------------- show var output from two user vars ----------------- show var output from two user vars -sp cat a.txt - MYVAR = SST*2 - TWO = 2 -cancel var/all - -! show data/outfile - -show data/append/outfile=a.txt - -SAY ---------------- appending show data ----------------- appending show data -sp cat a.txt - MYVAR = SST*2 - TWO = 2 - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - - -! combinations of /append and /clobber - -show data/clobber/outfile=a.txt -show data/clobber/outfile=a.txt - -SAY ---------------- Just show data, two show data/clobber commands in a row ----------------- Just show data, two show data/clobber commands in a row -sp cat a.txt - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - - -show grid/clobber/outfile=a.txt sst - -SAY ---------------- Just grid of sst ----------------- Just grid of sst -sp cat a.txt - GRID GSQ1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 full - -use coads_climatology -use levitus_climatology - -show data/clobber/outfile=a.txt 1 - -SAY ---------------- Just dataset 1 ----------------- Just dataset 1 -sp cat a.txt - currently SET data sets: - 1> ./data/coads_climatology.cdf - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - - -show data/append/outfile=a.txt levitus_climatology - -SAY ---------------- appending datset 2 by name ----------------- appending datset 2 by name -sp cat a.txt - currently SET data sets: - 1> ./data/coads_climatology.cdf - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - - currently SET data sets: - 2> ./data/levitus_climatology.cdf (default) - name title I J K L - TEMP TEMPERATURE 1:160 1:90 1:1 ... - -show grid/clobber/outfile=a.txt PS3* - -SAY ---------------- only showing all grids starting with PS3 ----------------- only showing all grids starting with PS3 -sp cat a.txt - PS3DT2 - -SAY ---------------- tests sending output of vtree to a file ----------------- tests sending output of vtree to a file -GO bn_vtree_outfile -! bn_tree_outfile.jnl - -! 8/2014 -- demonstrate SHOW VARIABLE/TREE/OUTFILE -! 11/15 -- default for DEFINE DATA/AGG has become /T instead of /E - -CANCEL DATA/ALL -! pure abstract variable -- no dataset -let a = 1 - -! -show var/tree/outfile=a.txt/clobber a -show var/tree/outfile=a.txt/clobber a -sp cat a.txt - A = 1 - -let b = 1 -let c = SIN(b) -show var/tree/outfile=a.txt/clobber c -sp cat a.txt - C = SIN(B) - B = 1 - -! create dummy datasets so we'll have named file variables to play with -let fv1 = 1 -let fvx = x[i=1:3] -let fvz = Z[k=1:3] -SAVE/CLOBBER/QUIET/FILE=my_file_vars.nc fv1, fvx, fvz -SAVE/CLOBBER/QUIET/FILE=other_file_vars.nc fv1 -SAVE/CLOBBER/QUIET/FILE=another_file_vars.nc fv1 -CAN VAR/ALL -use my_file_vars, other_file_vars, another_file_vars -set data 1 - -! ================ - -! more pure abstract variables -let a = 1 -let b = 1 -let c = SIN(b) -go bn_vtree_outfile.sub c -/TREE=ALL -/TREE=USER -/TREE=FILE -c is ready and AVAILABLE -************************ - in default dataset my_file_vars - C = SIN(B) - B = 1 - in default dataset my_file_vars - C = SIN(B) - B = 1 -/TREE=ALL -/TREE=USER -/TREE=FILE -fv1 is ready and AVAILABLE -************************ - in default dataset my_file_vars - FV1 - FV1[d=my_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -a is ready and AVAILABLE -************************ - in default dataset my_file_vars - A = FV1 + FVX - FV1 - FVX - in default dataset my_file_vars - A = FV1 + FVX - FV1[d=my_file_vars] - FVX[d=my_file_vars] - FV1[d=my_file_vars] - FV1[d=other_file_vars] - in default dataset my_file_vars - A = FV1[D=1] - FV1[D=2] - FV1 - FV1[d=other_file_vars] - in default dataset my_file_vars - A = FV1[D=1] - FV1[D=2] - FV1 - FV1[d=other_file_vars] - in default dataset other_file_vars - A = FV1[D=1] - FV1[D=2] - FV1[d=my_file_vars] - FV1 -******************************** -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is UNKNOWN VARIABLE: NOEXIST -************************ - in default dataset my_file_vars - NOEXIST ?? <== UNKNOWN VARIABLE ****** - in default dataset my_file_vars - NOEXIST ?? <== UNKNOWN VARIABLE ****** - *unknown variable: NOEXIST -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is UNKNOWN DATASET: V[D=NOEXIST] -************************ - in default dataset my_file_vars - V[D=NOEXIST] ?? <== UNKNOWN DATASET ****** - in default dataset my_file_vars - V[D=NOEXIST] ?? <== UNKNOWN DATASET ****** - *unknown dataset: V[D=NOEXIST] -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is UNKNOWN DATASET: NOVAR[D=NODSET] -************************ - in default dataset my_file_vars - NOVAR[D=NODSET] ?? <== UNKNOWN DATASET ****** - in default dataset my_file_vars - NOVAR[D=NODSET] ?? <== UNKNOWN DATASET ****** - *unknown dataset: NOVAR[D=NODSET] -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is UNKNOWN VARIABLE: NOEXIST -************************ - in default dataset my_file_vars - B = NOEXIST - NOEXIST ?? <== UNKNOWN VARIABLE ****** - in default dataset my_file_vars - B = NOEXIST - NOEXIST ?? <== UNKNOWN VARIABLE ****** - *unknown variable: NOEXIST -/TREE=ALL -/TREE=USER -/TREE=FILE -RESHAPE(fvx,fvz) is ready and AVAILABLE -************************ - in default dataset my_file_vars - FVX - FVZ - FVX[d=my_file_vars] - FVZ[d=my_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -fv1z is ready and AVAILABLE -************************ - in default dataset my_file_vars - FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX - FV1 - regrid to ZPTS = Z[Z=0:500:100] - FVZ - FVX - in default dataset my_file_vars - FV1Z = FV1[GZ(FVZ)=ZPTS] + FVX - regrid to ZPTS = Z[Z=0:500:100] - FV1[d=my_file_vars] - FVZ[d=my_file_vars] - FVX[d=my_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -fv1z is ready and AVAILABLE -************************ - in default dataset my_file_vars - FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX - FV1 - regrid to ZPTS = Z[Z=0:500:100] - DEPTH = Z[G=FVZ] - FVX - in default dataset my_file_vars - FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX - regrid to ZPTS = Z[Z=0:500:100] - DEPTH = Z[G=FVZ] - FV1[d=my_file_vars] - FVX[d=my_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -fv1z is ready and AVAILABLE -************************ - in default dataset my_file_vars - FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX - FV1 - regrid to ZPTS = Z[Z=0:500:100] - DEPTH = Z[G=FVZ]+ 0*FVZ[K=1] - FVZ - FVX - in default dataset my_file_vars - FV1Z = FV1[GZ(DEPTH)=ZPTS] + FVX - regrid to ZPTS = Z[Z=0:500:100] - DEPTH = Z[G=FVZ]+ 0*FVZ[K=1] - FV1[d=my_file_vars] - FVZ[d=my_file_vars] - FVX[d=my_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is UNKNOWN AUXILIARY VARIABLE: NOEXIST -************************ - in default dataset my_file_vars - FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX - NOEXIST (unknown auxiliary variable) - FVX - in default dataset my_file_vars - FV1Z = FV1[GZ(NOEXIST)=ZPTS] + FVX - NOEXIST (unknown auxiliary variable) - *unknown auxiliary variable: NOEXIST - FVX[d=my_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is UNKNOWN VARIABLE: NOEXIST[GZ(DEPTH)=ZPTS] -************************ - in default dataset my_file_vars - FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX - NOEXIST[GZ(DEPTH)=ZPTS] ?? <== UNKNOWN VARIABLE ****** - regrid to ZPTS = Z[Z=0:500:100] - DEPTH = Z[G=FVZ]+ 0*FVZ[K=1] - FVZ - FVX - in default dataset my_file_vars - FV1Z = NOEXIST[GZ(DEPTH)=ZPTS] + FVX - NOEXIST[GZ(DEPTH)=ZPTS] ?? <== UNKNOWN VARIABLE ****** - regrid to ZPTS = Z[Z=0:500:100] - DEPTH = Z[G=FVZ]+ 0*FVZ[K=1] - *unknown variable: NOEXIST[GZ(DEPTH)=ZPTS] - FVZ[d=my_file_vars] - FVX[d=my_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is UNKNOWN VARIABLE: NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] -************************ - in default dataset my_file_vars - FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX - NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ?? <== UNKNOWN VARIABLE ****** - regrid to ZPTS = Z[Z=0:500:100] - UNKNOWN_AUX (unknown auxiliary variable) - FVX - in default dataset my_file_vars - FV1Z = NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] + FVX - NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] ?? <== UNKNOWN VARIABLE ****** - regrid to ZPTS = Z[Z=0:500:100] - UNKNOWN_AUX (unknown auxiliary variable) - *unknown variable: NOEXIST[GZ(UNKNOWN_AUX)=ZPTS] - *unknown auxiliary variable: UNKNOWN_AUX - FVX[d=my_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -fv1 is ready and AVAILABLE -************************ - in default dataset my_agg - FV1 (aggregate variable) - FV1[d=my_file_vars] - FV1[d=other_file_vars] - FV1[d=another_file_vars] - in default dataset my_agg - FV1 (aggregate variable) - - FV1[d=my_file_vars] - FV1[d=other_file_vars] - FV1[d=another_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -fvx is ready and AVAILABLE -************************ - in default dataset my_uvar_agg - FVX (aggregate variable) - FVX[d=my_file_vars] - FVX[d=other_file_vars] = FV1 + X[GX=FVX[D=1],I=1:3] - FV1[d=other_file_vars] - FVX[d=another_file_vars] = 2*FV1 + X[GX=FVX[D=1],I=1:3] - FV1[d=another_file_vars] - in default dataset my_uvar_agg - FVX (aggregate variable) - FVX[d=other_file_vars] = FV1 + X[GX=FVX[D=1],I=1:3] - FVX[d=another_file_vars] = 2*FV1 + X[GX=FVX[D=1],I=1:3] - - FVX[d=my_file_vars] - FV1[d=other_file_vars] - FV1[d=another_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is ILLEGAL RECURSIVE VARIABLES: P1 -************************ - in default dataset my_uvar_agg - P0 = S1 + P1 - S1 ?? <== UNKNOWN VARIABLE ****** - P1 = S2 + P2 - S2 ?? <== UNKNOWN VARIABLE ****** - P2 = S3 + P3 - S3 ?? <== UNKNOWN VARIABLE ****** - P3 = P1 + S3 - P1 = *** WARNING: RECURSIVE DEFINITION. See above - S3 ?? <== UNKNOWN VARIABLE ****** - in default dataset my_uvar_agg - P0 = S1 + P1 - S1 ?? <== UNKNOWN VARIABLE ****** - P1 = S2 + P2 - S2 ?? <== UNKNOWN VARIABLE ****** - P2 = S3 + P3 - S3 ?? <== UNKNOWN VARIABLE ****** - P3 = P1 + S3 - P1 = *** WARNING: RECURSIVE DEFINITION. See above - S3 ?? <== UNKNOWN VARIABLE ****** - *unknown variable: S1 - *unknown variable: S2 - *unknown variable: S3 - *unknown variable: S3 -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is UNKNOWN VARIABLE: S1 -************************ - in default dataset my_uvar_agg - P0 = S1 + P1 - S1 ?? <== UNKNOWN VARIABLE ****** - P1 = S2 + P2 - S2 ?? <== UNKNOWN VARIABLE ****** - P2 = S3 + P3 - S3 ?? <== UNKNOWN VARIABLE ****** - P3 = S1 + S3 - S1 ?? <== UNKNOWN VARIABLE ****** - S3 ?? <== UNKNOWN VARIABLE ****** - in default dataset my_uvar_agg - P0 = S1 + P1 - S1 ?? <== UNKNOWN VARIABLE ****** - P1 = S2 + P2 - S2 ?? <== UNKNOWN VARIABLE ****** - P2 = S3 + P3 - S3 ?? <== UNKNOWN VARIABLE ****** - P3 = S1 + S3 - S1 ?? <== UNKNOWN VARIABLE ****** - S3 ?? <== UNKNOWN VARIABLE ****** - *unknown variable: S1 - *unknown variable: S2 - *unknown variable: S3 - *unknown variable: S1 - *unknown variable: S3 - in default dataset my_file_vars - FV = FV1 + FV1 + FV1 - in default dataset my_uvar_agg - FV = FV1 + FV1 + FV1 - FV1 (aggregate variable) - in default dataset other_file_vars - UV = FVX + FVX + FVX - FVX = FV1 + X[GX=FVX[D=1],I=1:3] - in default dataset my_uvar_agg - UV = FVX + FVX + FVX - FVX (aggregate variable) - FVX[d=other_file_vars] = FV1 + X[GX=FVX[D=1],I=1:3] - FVX[d=another_file_vars] = 2*FV1 + X[GX=FVX[D=1],I=1:3] -*************************** -/TREE=ALL -/TREE=USER -/TREE=FILE -v2 is ready and AVAILABLE -************************ - in default dataset my_uvar_agg - V2 = V1 + B + A + A - V1 = A + B + B^2 - A = FV1[D=1] - FV1[D=2] - FV1[d=my_file_vars] - FV1[d=other_file_vars] - B = C - C = 1 - B = (defined above) - A = (defined above) - in default dataset my_uvar_agg - V2 = V1 + B + A + A - V1 = A + B + B^2 - A = FV1[D=1] - FV1[D=2] - B = C - C = 1 - B = (defined above) - A = (defined above) - FV1[d=my_file_vars] - FV1[d=other_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -v3 is ready and AVAILABLE -************************ - in default dataset my_uvar_agg - V3 = A + V1 + B + A + A - A = FV1[D=1] - FV1[D=2] - FV1[d=my_file_vars] - FV1[d=other_file_vars] - V1 = A + B + B^2 - A = (defined above) - B = C - C = 1 - B = (defined above) - in default dataset my_uvar_agg - V3 = A + V1 + B + A + A - A = FV1[D=1] - FV1[D=2] - V1 = A + B + B^2 - A = (defined above) - B = C - C = 1 - B = (defined above) - FV1[d=my_file_vars] - FV1[d=other_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is UNKNOWN VARIABLE: F -************************ - in default dataset my_uvar_agg - D = B + C - B = FV1[D=MY_FILE_VARS] - FV1[d=my_file_vars] - C = 1 - A = F - F ?? <== UNKNOWN VARIABLE ****** - NOEXIST ?? <== UNKNOWN VARIABLE ****** - E = 1 - FVX[d=my_file_vars] - in default dataset my_uvar_agg - D = B + C - B = FV1[D=MY_FILE_VARS] - C = 1 - A = F - F ?? <== UNKNOWN VARIABLE ****** - NOEXIST ?? <== UNKNOWN VARIABLE ****** - E = 1 - *unknown variable: F - FV1[d=my_file_vars] - *unknown variable: NOEXIST - FVX[d=my_file_vars] -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is UNKNOWN GRID: NOEXIST -************************ - in default dataset my_uvar_agg - B = A[G=NOEXIST] - A = I[I=1:5] - regrid to NOEXIST ?? <== UNKNOWN GRID ****** - in default dataset my_uvar_agg - B = A[G=NOEXIST] - A = I[I=1:5] - regrid to NOEXIST ?? <== UNKNOWN GRID ****** - *unknown grid: NOEXIST -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is ERROR IN EXPRESSION: A[X=45S] -************************ - in default dataset my_uvar_agg - C = A[X=45S] - A[X=45S] *** WARNING: ERROR IN DEFINITION - in default dataset my_uvar_agg - C = A[X=45S] - A[X=45S] *** WARNING: ERROR IN DEFINITION - *WARNING: syntax error: A[X=45S] -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is ERROR IN EXPRESSION: A[I=1,,J=2] -************************ - in default dataset my_uvar_agg - D = A[I=1,,J=2] - A[I=1,,J=2] *** WARNING: ERROR IN DEFINITION - in default dataset my_uvar_agg - D = A[I=1,,J=2] - A[I=1,,J=2] *** WARNING: ERROR IN DEFINITION - *WARNING: syntax error: A[I=1,,J=2] -/TREE=ALL -/TREE=USER -/TREE=FILE -the problem is ERROR IN EXPRESSION: A[P=1] -************************ - in default dataset my_uvar_agg - E = A[P=1] - A[P=1] *** WARNING: ERROR IN DEFINITION - in default dataset my_uvar_agg - E = A[P=1] - A[P=1] *** WARNING: ERROR IN DEFINITION - *WARNING: syntax error: A[P=1] -/TREE=ALL -/TREE=USER -/TREE=FILE -f is ready and AVAILABLE -************************ - in default dataset my_uvar_agg - F = A[I=10] - A = I[I=1:5] - in default dataset my_uvar_agg - F = A[I=10] - A = I[I=1:5] - in default dataset my_uvar_agg - A = FVZ.LONG_NAME[D=1] - in default dataset my_uvar_agg - A = ..HISTORY[D=1] - - - -GO bn_reset bn_date1900_array -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_date1900_array -GO bn_date1900_array -! bn_date1900_array.jnl -! Let date1900 accept an array of date strings, returning a list -! of coordinate values, days since 1-jan-1900. - - -sh func/details date1900 -DATE1900(formatted date) - Convert date strings into Julian days since 1-Jan-1900 (integer days using Gregorian calendar) - Axes of result: - X: inherited from argument(s) - Y: NORMAL (no axis) - Z: NORMAL (no axis) - T: NORMAL (no axis) - E: NORMAL (no axis) - F: NORMAL (no axis) - formatted date: dd-MMM-yy or dd-MMM-yyyy (e.g. "20-Dec-00") (STRING) - Influence on output axes: - X: passed to result grid - Y: no influence (indicate argument limits with "[]") - Z: no influence (indicate argument limits with "[]") - T: no influence (indicate argument limits with "[]") - E: no influence (indicate argument limits with "[]") - F: no influence (indicate argument limits with "[]") - -! Function always worked just on one date string. -list date1900("01-jan-2001") - VARIABLE : DATE1900("01-jan-2001") - 36890. - - -! Now the argument can be an array -let datestrings = {"01-jan-2001", "02-jan-2001", "30-Jul-2002"} -list date1900(datestrings) - VARIABLE : DATE1900(DATESTRINGS) - SUBSET : 3 points (X) - 1 / 1: 36890. - 2 / 2: 36891. - 3 / 3: 37465. - -def axis/t/units=days/t0=1-jan-1900 taxis = date1900(datestrings) -list t[gt=taxis] - VARIABLE : T - axis TAXIS - SUBSET : 3 points (TIME) - 01-JAN-2001 00 / 1: 36890. - 02-JAN-2001 00 / 2: 36891. - 30-JUL-2002 00 / 3: 37465. - - -GO bn_reset bn_spawn_size -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_spawn_size -GO bn_spawn_size -! bn_spawn_size.jnl -! Added 9/9/2014 -! Fix for ticket 981 -! Return the size of the result of a spawn, not -! the nominal abstract axis length. - -! 1/2017 *acm* change this script so the results are always consistent, -! not depending on the contents of the directory which may change. - -! Make some files to operate on -let a = x + 1 -save/clobber/i=1:5/file=bn_spawn_size1.cdf a -save/clobber/i=1:5/file=bn_spawn_size2.cdf a -save/clobber/i=1:5/file=bn_spawn_size3.cdf a -save/clobber/i=1:5/file=bn_spawn_size4.cdf a -save/clobber/i=1:5/file=bn_spawn_size5.cdf a - -list/clobber/i=1:7/file=bn_spawn_size02.dat a -list/clobber/i=1:7/file=bn_spawn_size04.dat a -list/clobber/i=1:7/file=bn_spawn_size06.dat a -list/clobber/i=1:7/file=bn_spawn_size08.dat a -list/clobber/i=1:7/file=bn_spawn_size10.dat a -list/clobber/i=1:7/file=bn_spawn_size12.dat a -list/clobber/i=1:7/file=bn_spawn_size14.dat a - -! Previously these return=isize results returned 2000 - -let files = {spawn:"ls *bn_spawn_size*4.*"} -list files - VARIABLE : {SPAWN:"ls *bn_spawn_size*4.*"} - SUBSET : 3 points (X) - 1 / 1:"bn_spawn_size04.dat" - 2 / 2:"bn_spawn_size14.dat" - 3 / 3:"bn_spawn_size4.cdf" -say `files,return=isize` - !-> MESSAGE/CONTINUE 3 -3 - -! Evaluate size without loading the variable first -let datfiles = {spawn:"ls bn_spawn_size1*.dat"} -say `datfiles,return=isize` - !-> MESSAGE/CONTINUE 3 -3 - -! expression syntax -say `{spawn:"ls bn_spawn_size*.dat"},return=isize` - !-> MESSAGE/CONTINUE 7 -7 -list {spawn:"ls bn_spawn_size*.dat"} - VARIABLE : {SPAWN:"ls bn_spawn_size*.dat"} - SUBSET : 7 points (X) - 1 / 1:"bn_spawn_size02.dat" - 2 / 2:"bn_spawn_size04.dat" - 3 / 3:"bn_spawn_size06.dat" - 4 / 4:"bn_spawn_size08.dat" - 5 / 5:"bn_spawn_size10.dat" - 6 / 6:"bn_spawn_size12.dat" - 7 / 7:"bn_spawn_size14.dat" - -! Test variables based on a function operating on output of a spawn. -! These already worked correctly, has a grid-changing function. - -LET filesets = XCAT({spawn:"ls bn_spawn_size*.cdf"}, {spawn:"ls bn_spawn_size*.dat"}) -say `filesets, return=isize` - !-> MESSAGE/CONTINUE 12 -12 - -let files = {spawn:"ls bn_spawn_size*.dat"} -let name_len = STRINDEX(files, "ze0") -say `name_len, return=isize` - !-> MESSAGE/CONTINUE 7 -7 - -! clean up -sp rm bn_spawn_size*.dat bn_spawn_size*.cdf - - -GO bn_reset bn_polygon_log -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_polygon_log -GO bn_polygon_log -! bn_polygon_log.jnl -! polygon plots on a log axis need tests - -let xsqr = YSEQUENCE({0,.1,.1,0}) -let ysqr = YSEQUENCE({0,0,.1,.1}) -let xpts = cos(x/10) + 2 -let ypts = x/10+1 - -! Polygon plot - -set view ul -polygon/title="NOT LOG"/i=1:100 xpts+xsqr, ypts+ysqr, x*x/10 - -! Poly/vlog and /hlog -! (known bug: Whats up with the colorbar labels?) -set view ur; poly/title=VLOG/i=1:100/vlog xpts+xsqr,ypts+ysqr,x*x/10 -set view ll; poly/title=HLOG/i=1:100/hlog xpts+xsqr,ypts+ysqr,x*x/10 -set view lr;poly/title=BOTH/i=1:100/vlog/hlog xpts+xsqr,ypts+ysqr,x*x/10 - -! These are errors - log of negative values on axis - -set mode ignore - -let ybad = x/10 - 1 -let xbad = cos(x/10) + 0.8 - -can view -polygon/i=1:100/nolab xbad+xsqr,ybad+ysqr,x*x/10 - -poly/i=1:100/vlog xbad+xsqr,ybad+ysqr,x*x/10 -poly/i=1:100/hlog xbad+xsqr,ybad+ysqr,x*x/10 - -set mode/last ignore - -! *********** v6.94Additions *********** - -GO bn_reset bn694_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn694_bug_fixes -GO bn694_bug_fixes -! bn694_bug_fixes -! test various fixes that went into version 6.94 -! 11/2014 ACM -! 12/2014 *sh* added IF-THEN flow fixes, including review of past tickets -! 1/2015 *sh* added test for undetected bad dataset name in regrid target - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_upcase_quoted_name -! err693_upcase_quoted_name.jnl -! ticket 2050. Names are saved in uppercase -! form unless there are duplicates other than case. -! Then searching for the name in quotes looked -! only with a case-sensitive search. - -let abc = 12 -cancel mode upcase - -save/file=aa.nc/clobber abc -can dat/all; can var/all - -use aa.nc -! previously this failed to find the name. -list 'abc' - VARIABLE : 12 - FILENAME : aa.nc - 12.00 - -set mode/last upcase - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_isready_hang -! err693_isready_hang.jnl -! ACM 12/10/2014 -! ticket 2219. The last of these commands caused Ferret to hang. - -use gt4d011 -def ax/t/t0="`u,r=t0`"/unit="`u,r=tunit`" time = t[gt=u] - !-> def ax/t/t0="14-JAN-1980 14:00:00"/unit="hour" time = t[gt=u] -let a = u -IF `a,r=isready` THEN; let/title="`a,r=title`" a1 = a; ENDIF - !-> IF 1 THEN - !-> DEFINE VARIABLE/title="U" a1 = a -IF `a,r=isready` THEN; let/title="`a,r=title`" a2 = a; ENDIF - !-> IF 1 THEN - !-> DEFINE VARIABLE/title="U" a2 = a -IF `a,r=isready` THEN; let/title="`a,r=title`" a3 = a; ENDIF - !-> IF 1 THEN - !-> DEFINE VARIABLE/title="U" a3 = a -IF `a,r=isready` THEN; let/title="`a,r=title`" a4 = a; ENDIF - !-> IF 1 THEN - !-> DEFINE VARIABLE/title="U" a4 = a -IF `a,r=isready` THEN; let/title="`a,r=title`" a5 = a; ENDIF - !-> IF 1 THEN - !-> DEFINE VARIABLE/title="U" a5 = a - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_isready_dyn_grid_crash ! 12/23/2014 -let/unit="m" b = x[gx=1:5:1] -say "`b,r=unit`" ! this causes dynamic grid of b to be created - !-> MESSAGE/CONTINUE "m" -m -let c = x[gx=1:5:2] -let b2 = b+0*c[gx=b] ! dynamic grid of b exists, but not grid of c -VTREE b2 - B2 = B+0*C[GX=B] - B = X[GX=1:5:1] - C = X[GX=1:5:2] - regrid to B = X[GX=1:5:1] - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_attr_in_gcfcn -! err693_attr_in_gcfcn.jnl -! ACM 12/10/2014 -! bug 2220 varname.attname as an argument to grid-changing functions. -! All except the last of these caused various ungraceful stops. - -let/units="m" a = 1 -list is_element_of_str(a.units,{"m","a"}) - VARIABLE : IS_ELEMENT_OF_STR(A.UNITS,{"m","a"}) - X : 1 - 1.000 - -let/units="m" a = 1 -let b = a.units -list is_element_of_str(b,{"m","a"}) - VARIABLE : IS_ELEMENT_OF_STR(B,{"m","a"}) - X : 1 - 1.000 - - -use levitus_climatology - -list is_element_of_str_n (temp.long_name, {"Temperature", "temp"}) - VARIABLE : IS_ELEMENT_OF_STR_N (TEMP.LONG_NAME, {"Temperature", "temp"}) - FILENAME : levitus_climatology.cdf - X : 1 - 2.000 - -let a = temp.units -list is_element_of_str (a, {"Kelvin", "Celsius", "DEG C"}) - VARIABLE : IS_ELEMENT_OF_STR (A, {"Kelvin", "Celsius", "DEG C"}) - FILENAME : levitus_climatology.cdf - X : 1 - 1.000 - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_inconsistent_quote -! inconsistent interpretation of surrounding double quotes -! the original source of the problem is in PARSE_COMMAND -! arg_start and arg_end are set to skip surrounding quotation marks. -! But since this behavior permeates so many routines it is best to repair -! the problem in ALL_1_ARG - - -let foobar = 1 -LIST "foobar", "foobar" ! this is correct - list as strings - Column 1: str is "foobar" - Column 2: str is "foobar" - str str -I / *: "foobar" "foobar" -LIST "foobar" ! error: lists the value instead - VARIABLE : "foobar" - "foobar" - -! IF-THEN flow tests -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_if_then_flow_2214 -! bug 2214 -! If we put the "say hi" in parentheses, this seems to work. -! But parentheses haven't previously been required, so there are a lot of -! scripts that don't have them. - -* 12/14 note (sh) - Ferret handles this situation correctly because -* PARSE_COMMAND acts on the semi-colons in the full command line *before* -* it acts on the "IF". Thus the thress semicolon-connected commands -* follow the same logical path through Ferret as if they were separated -* onto three lines - -IF 0 THEN; rep/i=1:1 say ERROR; ENDIF - -IF 1 THEN; rep/i=1:1 say CORRECT; ENDIF -!-> REPEAT: I=1 -CORRECT - -(IF 0 THEN; rep/i=1:1 say ERROR; ENDIF) - -(IF 1 THEN; rep/i=1:1 say CORRECT; ENDIF) -!-> REPEAT: I=1 -CORRECT - -!yes? quit -!yes? quit -!yes? ^Z -!Suspended - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_if_then_flow_2211 -! bug #2211 - - -IF 0 THEN -ELSE - exit/script - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_if_then_flow_1860 -! from bug 1860 -! continue line found within grave accents - -CANCEL MODE VERIFY -This works: -CORRECT IF THIS DISPLAYS -This works: -CORRECT IF THIS DISPLAYS -This works: -CORRECT IF THIS DISPLAYS - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_if_then_flow_1446 -! testing ticket 1446 - -! the presence of a tab preceding the "!" comment caused a parsing error - -! the behavior of this even in v69+ today is problematic in that -! it echos an ENDIF statement that should be a plain old skip - -IF 0 THEN -ENDIF - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_if_then_flow_1681 -! testing ticker 1681 - -!The third block of the following script issues an error: -!ERROR: invalid command: ENDIF can only be used in an IF clause -! -!Looks like a parsing bug -- it seems the ENDIF inside the REPEAT is being -!applied to the outermost IF. Note that the error goes away if we change -!the outer 0 to a 1. - - -say "test1" -test1 -if 0 then -endif - -say "test2" -test2 -if 0 then -endif - -say "test3" -test3 -if 0 then -endif - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_if_then_flow_1706 -! testing ticket 1706 -! -def sym a say hi\\; say hi - -IF 0 THEN -ENDIF - -! some versions (not v550 but yes v63 but not v6301) fail to say "here" -IF 1 THEN - say here -here -ENDIF - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_if_then_flow_1368 ! Jan 28, 2010, Ferret version 5.812 -! testing ticket 1368 - first found in Ferret v5.812 (Jan 28, 2010) - -! this is still a bug in V69+ -! the initial IF command is not being closed by the first ENDIF -! it is skipping down to the elif command - -define symbol xend 180 -let key_flag = 0 - -! test 1 - line 1 false condition should suppress both outputs -IF `($xend) GT 360` THEN - !-> IF 0 THEN -ENDIF - - -! test 2 - line 1 false condition should cause else clause - "point G" -let dxymin = 0.20 -if `dxymin lt 0.12` then - !-> if 0 then -elif `dxymin lt 0.25` then - !-> elif 1 then - SAY "CORRECT. this message should display" -CORRECT. this message should display -endif - -! test 3 - this is from bug #918 -- looks like the same bug as #1368 -IF 0 THEN -ENDIF - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_ribbon_start_missing -! err693_ribbon_start_missing -! 1/6/2015 ACM -! -! Bug 2226: If data starts with a missing-value and we're using (-inf) then -! the ribbon plot started with the lowest color instead of plotting as for missing -! Only the cases starting with missing data were incorrect previous to fixing this bug. - -DEFINE SYMBOL ribbon_command = PLOT/VS/RIBBON/LINE/SYM/FAST/LEVELS=(-inf)(160,560,20)(INF)/THICK=3 - -let/units=degrees_east xvar = {-177,-174,-186} -let/units=degrees_north yvar = {-43, -45, -42} -let vvar = {,271, 319} -! This previously started with purple, not a gray missing-value point -($ribbon_command)/title="(-inf) in levels" xvar,yvar,vvar - !-> PLOT/VS/RIBBON/LINE/SYM/FAST/LEVELS=(-inf)(160,560,20)(INF)/THICK=3/title="(-inf) in levels" xvar,yvar,vvar - -let/units=degrees_east xvar = {-177,-174,-186,-184,-196} -let/units=degrees_north yvar = {-43, -45, -42, -45, -42} -let vvar = {,,,271,319} -($ribbon_command)/title="start with several missing" xvar,yvar,vvar - !-> PLOT/VS/RIBBON/LINE/SYM/FAST/LEVELS=(-inf)(160,560,20)(INF)/THICK=3/title="start with several missing" xvar,yvar,vvar - -let/units=degrees_east xvar = {-177,-174,-186,-184,-196} -let/units=degrees_north yvar = {-43, -45, -42, -45, -42} -let vvar = {,,271,319,1000} -($ribbon_command)/title="end large positive value" xvar,yvar,vvar - !-> PLOT/VS/RIBBON/LINE/SYM/FAST/LEVELS=(-inf)(160,560,20)(INF)/THICK=3/title="end large positive value" xvar,yvar,vvar - -let/units=degrees_east xvar = {-177,-174,-186,-184,-196} -let/units=degrees_north yvar = {-43, -45, -42, -45, -42} -let vvar = {,271,319,1000,} -($ribbon_command)/title="end with large positive and missing" xvar,yvar,vvar - !-> PLOT/VS/RIBBON/LINE/SYM/FAST/LEVELS=(-inf)(160,560,20)(INF)/THICK=3/title="end with large positive and missing" xvar,yvar,vvar - -let/units=degrees_east xvar = {-177,-174,-186,-184,-196} -let/units=degrees_north yvar = {-43, -45, -42, -45, -42} -let vvar = {1.e7,,,271,319} -($ribbon_command)/title="start with large positive" xvar,yvar,vvar - !-> PLOT/VS/RIBBON/LINE/SYM/FAST/LEVELS=(-inf)(160,560,20)(INF)/THICK=3/title="start with large positive" xvar,yvar,vvar - -let/units=degrees_east xvar = {-177,-174,-186,-184,-196} -let/units=degrees_north yvar = {-43, -45, -42, -45, -42} -let vvar = {,1.e7,,271,319} -($ribbon_command)/title="start with missing then large positive" xvar,yvar,vvar - !-> PLOT/VS/RIBBON/LINE/SYM/FAST/LEVELS=(-inf)(160,560,20)(INF)/THICK=3/title="start with missing then large positive" xvar,yvar,vvar - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err691_pt_in_poly -! err691_pt_in_poly -! ticket 1961: modulo longitude for pt_in_poly -! and sending subset of the xy field - -use coads_climatology - -let xpts = {64,81,81,82,88,88,79,79,76,73,68,64} -let ypts = {31,30,29,29,27,24,20,19,20,25,27,31} - -let pts = pt_in_poly(sst[L=5,x=60:90,y=15:35], xpts, ypts) -shade/lev=(-2,2,1)/pal=ten_by_levels pts -plot/vs/over/line/nolab xpts, ypts -list minmax(pts) - VARIABLE : MINMAX(PTS) - FILENAME : coads_climatology.cdf - SUBSET : 2 points (X) - 1 / 1: -1.000 - 2 / 2: 1.000 - -! Put the xpts on different modulo branches -! Previously the list commands would have listed -1,-1 - -let xpts0 = {64,81,81,82,88,88,79,79,76,73,68,64} -let/title=lon/units=degrees_east xpts = xpts0 + 360 - -shade/title="Plus 360"/lev=(-2,2,1)/pal=ten_by_levels pts -plot/vs/over/line/nolab xpts, ypts -list minmax(pts) - VARIABLE : MINMAX(PTS) - FILENAME : coads_climatology.cdf - SUBSET : 2 points (X) - 1 / 1: -1.000 - 2 / 2: 1.000 - -let/title=lon/units=degrees_east xpts = xpts0 - 360 - -shade/title="Minus 360"/lev=(-2,2,1)/pal=ten_by_levels pts -plot/vs/over/line/nolab xpts, ypts -list minmax(pts) - VARIABLE : MINMAX(PTS) - FILENAME : coads_climatology.cdf - SUBSET : 2 points (X) - 1 / 1: -1.000 - 2 / 2: 1.000 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_undetected_regrid_dset -! err693_undetected_regrid_dset.jnl - Jan 2015 - -! in GET_CONTEXT_MODS no check is made whether dataset name/number is -! valid following "gdset = FIND_DSET_NUMBER( name(dstart:dend) )" - -use coads_climatology -use levitus_climatology ! default to d=2 - -canc var/all -let myvar = temp -let a = myvar[g=temp[d=bad_d]] ! THIS SHOULD BE DETECTED AS AN ERROR - -set mode ignore -stat/l=1/x=180/y=0 a ! this *SHOULD* trigger an error. Yes. Detect it. -set mode/last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_line_over_axis -! Ticket 2232: line plots overlaid the plot axes -show mode meta - MODE STATE ARGUMENT - METAFILE CANCELED metafile.plt -! line plot with /VS draw on top of the axes -let xval = {0.0, 0.2, 1.0, 0.8, 0} -let yval = {0.0, 1.1, 1.1, 0.0, 0} -plot/vs/line/thick=3/color=lightblue xval, yval - -! any line overlay may draw on the axes -let xval = {0.0, 0.0, 0.8, 0.2, 0} -let yval = {0.1, 1.2, 1.2, 0.1, 0.1} -plot/ribbon/vs/line/thick=3/over/nolab/pal=green_light xval, yval, yval - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_save_packed -! err693_save_packed.jnl -! ticket 2240: bug writing multiple vars with one SAVE when scaled -! -! Previously saw a netcdf error because first variable was mis-scaled on writing. - -use err693_save_packed.nc -save/clobber/file=a.nc QA_OF_SEAICE_CONC_CDR, GODDARD_MERGED_SEAICE_CONC - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_subspan_trans -! err693_subspan_trans -! bug 2241 3/9/2015 - -use coads_climatology -let a = sst[x=120:284,y=-2:2@ave,t=@ave] -save/clob/file=a.nc a -can var a -use a -set reg/x=25:385 -let b = a[x=@min] - -set mode diag -say `a[x=@min]` - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSI1 COADSX51_1NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 0 83 J: -999 -999 K: -999 -999 L: -999 -999 - strip --> A[X=25E:25E(385)@MIN,D=2] - strip modulo-void-filling A on X axis: 0 83 dset: 2 - strip moduloing A on X axis: 0 82 dset: 2 - reading A M:184 dset: 2 I: 1 82 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing A on X axis: 1 82 dset: 2 - doing modulo-void-filling A on X axis: 0 82 dset: 2 - doing --> A[X=25E:25E(385)@MIN,D=2] - -DELETE A M:172 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - !-> MESSAGE/CONTINUE 25.27740573883057 -25.27740573883057 - -! This previously resulted in an error. -say `b` - dealloc dynamic grid GSI1 COADSX51_1NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid B C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GSI1 COADSX51_1NORMAL NORMAL NORMAL - allocate dynamic grid GSI1 COADSX51_1NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 2 I: 0 83 J: -999 -999 K: -999 -999 L: -999 -999 - eval B C: 6 dset: 2 I: 0 83 J: -999 -999 K: -999 -999 L: -999 -999 - found A M:181 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE B M:178 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - !-> MESSAGE/CONTINUE 25.27740573883057 -25.27740573883057 - -can mode diag - -! What if the region for @MIN is in the saved portion? -say `a[x=150:200@min]` - !-> MESSAGE/CONTINUE 26.96305592854818 -26.96305592854818 -let b = a[x=150:200@min] -say `b` - !-> MESSAGE/CONTINUE 26.96305592854818 -26.96305592854818 - -! What if the region for @MIN extends beyond the saved portion? -say `a[x=200:300@min]` - !-> MESSAGE/CONTINUE 25.27740573883057 -25.27740573883057 -let b = a[x=200:300@min] -say `b` - !-> MESSAGE/CONTINUE 25.27740573883057 -25.27740573883057 - -! What if the region for @MIN is outside the saved portion? -say `a[x=300:385@min]` - !-> MESSAGE/CONTINUE bad -bad -let b = a[x=300:385@min] -say `b` - !-> MESSAGE/CONTINUE bad -bad - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_repeat_err -! err693_repeat_err.jnl -! test fix for ticket 2244: Error handling in REPEAT - -! The second of these should result in an error - in debug mode -! it instead was hitting an out-of-range subscript error. - -repeat/range=1:2/name=column repeat/range=1:2/name=row say `column`,`row` -!-> REPEAT: COLUMN:1 -!-> REPEAT: ROW:1 - !-> MESSAGE/CONTINUE 1,1 -1,1 -!-> REPEAT: ROW:2 - !-> MESSAGE/CONTINUE 1,2 -1,2 -!-> REPEAT: COLUMN:2 -!-> REPEAT: ROW:1 - !-> MESSAGE/CONTINUE 2,1 -2,1 -!-> REPEAT: ROW:2 - !-> MESSAGE/CONTINUE 2,2 -2,2 - -set mode ignore -repeat/range=1:2/name=column repeat/range=1:2/name=row -!-> REPEAT: COLUMN:1 -!-> REPEAT: COLUMN:2 -set mode/last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_edit_useratt -! err693_edit_useratt.jnl -! ticket 2249: set attribute properties for user-defined variable - -use err491_attval.cdf -list/x=135.402W:135.321W/y=58.609 elev - VARIABLE : Surface elevation (meter) - DATA SET : K-Bay OAR3d model (200m) - FILENAME : err491_attval.cdf - SUBSET : 7 points (LONGITUDE) - LATITUDE : 58.609N (interpolated) - T (day) : 1.7837 - 135.402W / 45: .... - 135.389W / 46: .... - 135.375W / 47: .... - 135.362W / 48: 2.953 - 135.348W / 49: 2.953 - 135.335W / 50: 2.950 - 135.321W / 51: 2.953 - - -! Rename the file variable, define a variable using its name -set var/name=elev_in elev -let elev = missing(elev_in, -1.e34) - -! Inherit attributes from the file variable. -! cancel writing the scale attributes -set att/like=elev_in elev -can att/output elev.scale_factor -can att/output elev.add_offset - -! set the bad-flag (can't do this before the SET ATT/LIKE -set var/bad=-1.e34 elev - -! save -save/clobber/file=a.nc elev -can var/all -use a.nc -list/x=135.402W:135.321W/y=58.609 elev - VARIABLE : Surface elevation (meter) - FILENAME : a.nc - SUBSET : 7 points (LONGITUDE) - LATITUDE : 58.609N (interpolated) - T (day) : 1.7837 - 135.402W / 45: .... - 135.389W / 46: .... - 135.375W / 47: .... - 135.362W / 48: 2.953 - 135.348W / 49: 2.953 - 135.335W / 50: 2.950 - 135.321W / 51: 2.953 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_redef_rec_axis -! err693_redef_rec_axis.jnl -! ticket 2271. Redefining the record axis meant -! that SHOW AXIS/FULL couldnt get the time axis info - -define axis/x=1:5:1 xax -define axis/y=2:10:2 yax -define axis/t=1:7:1 tredef -let var = x[gx=xax] + y[gy=yax] + t[gt=tredef] -save/clobber/file=a.nc var - -can var/all -can axis xax -can axis yax -can axis tredef - -use a.nc -define axis/t=1:7:1/units=days/t0=1-jan-2000 tredef - -! Previously the output had time range: ??? -show data/full - currently SET data sets: - 1> ./a.nc (default) - - name title I J K L - VAR X[GX=XAX] + Y[GY=YAX] + T[GT=TR 1:5 1:5 ... 1:7 - on grid GSI1 with -1.E+34 for missing data - X=0.5:5.5 Y=1:11 - - time range: 02-JAN-2000 00:00 to 08-JAN-2000 00:00 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_frame_types -! bn_frame_types.jnl -! Ticket 2275 -! The default file type for FRAME was still HDF - -set mode ignore - -use coads_climatology -shade/l=1 sst - -! This issued an error and quit -frame/format=hdf/file=a.hdf - -! so did this -frame/file=a.png - -! this is (always) ok -frame/file=a.gif -frame/format=gif file=a.plot - -sp rm a.gif - -set mode/last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_shape -! err693_shape.jnl -! bug 2273 shape of variable with various subexpressions - -use coads_climatology -let a = sst[x=@ave] -let a_clim = a[gt=MONTH_IRREG@mod] -let a_anom = a - a_clim[gt=a@nrst] - -! Should all be YT -say `a,r=shape` `a_clim[gt=a@nrst],r=shape` `a_anom,r=shape` - !-> MESSAGE/CONTINUE YT YT YT -YT YT YT - -! Also works for size returns - -! Should be 180, 1, 1 -say `sst,r=isize` `a,r=isize` `a_anom,r=isize` - !-> MESSAGE/CONTINUE 180 1 1 -180 1 1 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_ef_axis_precision - ! NOAA/PMEL TMAP - ! FERRET v6.94 - ! Linux 2.6.32-504.12.2.el6.x86_64 64-bit - 03/20/15 - ! 11-May-15 16:51 - -define axis/f faxis = {0.001, 0.123, 0.234, 0.498} -define axis/e eaxis = {1001.1009, 1234.005, 2112.321, 2520.45} -let efvar = _M[ge=eaxis] + _n[gf=faxis] -set view upper; plot/n=3 efvar -set view lower; plot/m=2 efvar -list/n=3 efvar - VARIABLE : _M[GE=EAXIS] + _N[GF=FAXIS] - SUBSET : 4 points (E) - F : 0.234 - 1001.1 / 1: 4.000 - 1234 / 2: 5.000 - 2112.3 / 3: 6.000 - 2520.4 / 4: 7.000 -list/m=2 efvar - VARIABLE : _M[GE=EAXIS] + _N[GF=FAXIS] - SUBSET : 4 points (F) - E : 1234.005 - 0 / 1: 3.000 - 0.12 / 2: 4.000 - 0.23 / 3: 5.000 - 0.5 / 4: 6.000 -q - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_string_results -! err693_string_results.jnl -! Ticket 2234, the LIST B returned the numeric pointer to the string. -! *acm* 5/14/2015 - -let b = IF a then "yes" else "no" -let a = 1/0 -list b - VARIABLE : IF A THEN "yes" ELSE "no" - "no" - -! The LOAD C makes the data type of D correct -let d = if c then "ok" else "not ok" -let c = 1/0 -load C -list d - VARIABLE : IF C THEN "ok" ELSE "not ok" - "not ok" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_lev_nv_over -! err693_lev_nv_over.jnl -! The polygon command with /LEV=20V caused a crash; levels settings incorrect. - -! draw any underlay to set up for polymark script -use coads_climatology -shade/x=120:250/Y=25s:65n/L=1/pal=white/nokey sst - -LET xpts = 180 + 50*COS(2*3.14*I[I=1:50]/60) -LET ypts = 15 + 20*SIN(2*3.14*I[I=1:50]/60) - -! Variable is a constant w/ negative value -LET sst = -5 + 0*ypts - -! The poly/over command caused a Fortran runtime error in tm_fmt_sngl -GO polymark polygon/over/lev=20v/key/title="SST" xpts,ypts,sst,square, 0.5 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_fcn_of_attvar -! err693_fcn_of_attvar.jnl -! Ticket 2291 Function of attribute-expression -! returned just the first result - -use coads_climatology -list sst.dimnames - VARIABLE : SST.DIMNAMES - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - 1 / 1:"COADSX" - 2 / 2:"COADSY" - 3 / 3:"TIME25" -list dncase(sst.dimnames) - VARIABLE : DNCASE(SST.DIMNAMES) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - 1 / 1:"coadsx" - 2 / 2:"coadsy" - 3 / 3:"time25" -list strlen( sst.dimnames) - VARIABLE : STRLEN( SST.DIMNAMES) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - 1 / 1: 6.000 - 2 / 2: 6.000 - 3 / 3: 6.000 -list substring(sst.dimnames,2,3) - VARIABLE : SUBSTRING(SST.DIMNAMES,2,3) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - 1 / 1:"OAD" - 2 / 2:"OAD" - 3 / 3:"IME" -list dncase(substring(sst.dimnames,2,3)) - VARIABLE : DNCASE(SUBSTRING(SST.DIMNAMES,2,3)) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (X) - 1 / 1:"oad" - 2 / 2:"oad" - 3 / 3:"ime" -list ysequence(dncase(sst.dimnames)) - VARIABLE : YSEQUENCE(DNCASE(SST.DIMNAMES)) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (Y) - 1 / 1:"coadsx" - 2 / 2:"coadsy" - 3 / 3:"time25" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_isize_and_gcfcn -! err693_isize_and_gcfcn.jnl -! ticket 2213 -! SET REGION interacting with ABSTRACT AXES -! When the variable using XSEQUENCE was defined, suddenly the -! region was being applied (inconsistently). - -can mode verify -8 - GRID XABSTRACT - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 8 pts - normal Y - normal Z - normal T -8 -8 a -8 -8 b -8 -8 c -8 -8 d -8 -8 e -8 -8 f -8 -8 g -8 -8 h -8 - GRID XABSTRACT - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 full - normal Y - normal Z - normal T -8 -8 a -8 -8 b -8 -8 c -8 -8 d -8 -8 e -8 -8 f -8 -8 g -8 -8 h - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_ribbon_scale -! err693_ribbon_scale.jnl -! ticket 2295: the vertical scale is mis-computed -! 5/29/2015 - -let var = {-81,-81,-81} -let color = {2,2,2} -plot/ribbon/key var,color - -! should be -82 to -80 -sh sym yaxis* -YAXIS_REVERSED = "0" -YAXIS_MIN = "-72.9000000" -YAXIS_MAX = "-89.1000000" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_parse_curly -! err693_parse_curly.jnl -! the sub-routine defines a string variable containing commands for overlays in -! different directions. the bug was that the parser doesn't handle quoted strings -! inside { } if those strings include curly braces. -! The argument chooses one of the strings with commands and plots the overlay - -use gt4d011 - -shade/i=100/l=1/pal=grayscale temp -go err693_parse_curly.sub yz -! err693_parse_curly.sub -! Define a variable with commands for overlays in different directions -! the bug was that the parser doesn't handle quoted strings inside { } if those -! strings include curly braces. -! Choose one of the strings and plot the overlay - -! list of valid shapes - -let prd_shapes = {"xy", "xz", "yz"} - -! List of associated overlays -! This is the part that's not working; due to bug #2296 we can't write {"...{}..."}. - -let prd_overlays = {\ - "go land 6; go draw_line 180 -90 180 90 1; go draw_box 210 270 -5 5 6/dash=(.04,.06,.04,.06)",\ - "plot/vs/ov/nolab/line=6/dash=(.02,.12,.02,.12) {-1e3,1e3,,-1e3,1e3,,-1e3,1e3,,-136,-136,,-126,-126}, {85,85,,50,50,,20,20,,-1e4,1e4,,-1e4,1e4}",\ - "plot/vs/ov/nolab/line=6/dash=(.02,.12,.02,.12) 1e3*{-1,1,,-1,1,,-1,1},{85,85,,50,50,,20,20}"} - -! Then later when we're generating figures, we'll be -! passing one of these shapes into a script like this: - -let p1s_shape = "$1%xy%" - !-> DEFINE VARIABLE p1s_shape = "yz" - -! For the specified shape, find the associated overlay command -! (default is no overlay). -let p1s_ov = "" -IF `prd_shapes,r=isready` THEN - !-> IF 1 THEN - ) - !-> rep/name=s/range=1:3 (let p1s_this_shape = prd_shapes[i=`s`]; IF `p1s_this_shape EQ p1s_shape` THEN; let p1s_ov = prd_overlays[i=`s`]; exit/loop; ENDIF; ) -!-> REPEAT: S:1 - !-> DEFINE VARIABLE p1s_this_shape = prd_shapes[i=1] - !-> IF 0 THEN -!-> REPEAT: S:2 - !-> DEFINE VARIABLE p1s_this_shape = prd_shapes[i=2] - !-> IF 0 THEN -!-> REPEAT: S:3 - !-> DEFINE VARIABLE p1s_this_shape = prd_shapes[i=3] - !-> IF 1 THEN - !-> DEFINE VARIABLE p1s_ov = prd_overlays[i=3] - can var p1s_this_shape -ENDIF - -! generate a figure, with the appropriate overlay -define symbol overcommands = `p1s_ov` - !-> define symbol overcommands = plot/vs/ov/nolab/line=6/dash=(.02,.12,.02,.12) 1e3*{-1,1,,-1,1,,-1,1},{85,85,,50,50,,20,20} -($overcommands) - !-> plot/vs/ov/nolab/line=6/dash=(.02,.12,.02,.12) 1e3*{-1,1,,-1,1,,-1,1},{85,85,,50,50,,20,20} - - shade/j=40/l=1/pal=grayscale temp -go err693_parse_curly.sub xz -! err693_parse_curly.sub -! Define a variable with commands for overlays in different directions -! the bug was that the parser doesn't handle quoted strings inside { } if those -! strings include curly braces. -! Choose one of the strings and plot the overlay - -! list of valid shapes - -let prd_shapes = {"xy", "xz", "yz"} - -! List of associated overlays -! This is the part that's not working; due to bug #2296 we can't write {"...{}..."}. - -let prd_overlays = {\ - "go land 6; go draw_line 180 -90 180 90 1; go draw_box 210 270 -5 5 6/dash=(.04,.06,.04,.06)",\ - "plot/vs/ov/nolab/line=6/dash=(.02,.12,.02,.12) {-1e3,1e3,,-1e3,1e3,,-1e3,1e3,,-136,-136,,-126,-126}, {85,85,,50,50,,20,20,,-1e4,1e4,,-1e4,1e4}",\ - "plot/vs/ov/nolab/line=6/dash=(.02,.12,.02,.12) 1e3*{-1,1,,-1,1,,-1,1},{85,85,,50,50,,20,20}"} - -! Then later when we're generating figures, we'll be -! passing one of these shapes into a script like this: - -let p1s_shape = "$1%xy%" - !-> DEFINE VARIABLE p1s_shape = "xz" - -! For the specified shape, find the associated overlay command -! (default is no overlay). -let p1s_ov = "" -IF `prd_shapes,r=isready` THEN - !-> IF 1 THEN - ) - !-> rep/name=s/range=1:3 (let p1s_this_shape = prd_shapes[i=`s`]; IF `p1s_this_shape EQ p1s_shape` THEN; let p1s_ov = prd_overlays[i=`s`]; exit/loop; ENDIF; ) -!-> REPEAT: S:1 - !-> DEFINE VARIABLE p1s_this_shape = prd_shapes[i=1] - !-> IF 0 THEN -!-> REPEAT: S:2 - !-> DEFINE VARIABLE p1s_this_shape = prd_shapes[i=2] - !-> IF 1 THEN - !-> DEFINE VARIABLE p1s_ov = prd_overlays[i=2] - can var p1s_this_shape -ENDIF - -! generate a figure, with the appropriate overlay -define symbol overcommands = `p1s_ov` - !-> define symbol overcommands = plot/vs/ov/nolab/line=6/dash=(.02,.12,.02,.12) {-1e3,1e3,,-1e3,1e3,,-1e3,1e3,,-136,-136,,-126,-126}, {85,85,,50,50,,20,20,,-1e4,1e4,,-1e4,1e4} -($overcommands) - !-> plot/vs/ov/nolab/line=6/dash=(.02,.12,.02,.12) {-1e3,1e3,,-1e3,1e3,,-1e3,1e3,,-136,-136,,-126,-126}, {85,85,,50,50,,20,20,,-1e4,1e4,,-1e4,1e4} - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_list_missing -! err693_list_missing.jnl - -let a= {1,2,3} -let b = 1./0 - -! Ths listing of b is .... was squashed onto the ends of values of a. -! 1 / 1: 1.000.. -! 2 / 2: 2.000.. - -list a,b - X: 0.5 to 3.5 - Column 1: A is {1,2,3} - Column 2: B is 1./0 - A B -1 / 1: 1.000 .... -2 / 2: 2.000 .... -3 / 3: 3.000 .... - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_shf_subscr -! err693_shf_subscr.jnl -! ticket 2231 Subscripts used to compute @SHF-1 at the low end of the axis - - -def ax/edge/z=0:40:10 zax_t -def ax/edge/z=5:45:10 zax_w -let zw = z[gz=zax_w] -let zdiff = zw - missing(zw[z=@shf:-1],0) -let zdiff_t = zdiff[gz=zax_t@asn] - -! a range of K shows the values correctly -list zdiff_t - VARIABLE : ZDIFF[GZ=ZAX_T@ASN] - SUBSET : 4 points (Z) - 5 / 1: 10.00 - 15 / 2: 10.00 - 25 / 3: 10.00 - 35 / 4: 10.00 - -! but just K=1 returned a K=0 error -can mem -list/k=1 zdiff_t - VARIABLE : ZDIFF[GZ=ZAX_T@ASN] - Z : 5 - 10.00 - -! Shift of +1 -can mem -let zdiff = zw - missing(zw[z=@shf:1],0) -list/k=4 zdiff_t - VARIABLE : ZDIFF[GZ=ZAX_T@ASN] - Z : 35 - 40.00 -list/k=3:4 zdiff_t - VARIABLE : ZDIFF[GZ=ZAX_T@ASN] - SUBSET : 2 points (Z) - 25 / 3: -10.00 - 35 / 4: 40.00 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_shift_w_region -! err693_shift_w_region -! Ticket 2300. In fact with bounds checking on, the list a[i=@shf] would have -! caused a Fortran runtime error with out-of-bounds subscripts. The fix for -! ticket 2301 fixes this as well. - -set region/x=10:20 -let a = {1,2,3} -list a - VARIABLE : {1,2,3} - SUBSET : 3 points (X) - 1 / 1: 1.000 - 2 / 2: 2.000 - 3 / 3: 3.000 -list a[i=@shf] - VARIABLE : {1,2,3} - shifted by 1 pts on X - SUBSET : 3 points (X) - 1 / 1: 2.000 - 2 / 2: 3.000 - 3 / 3: .... -cancel region -list a[i=@shf] - VARIABLE : {1,2,3} - shifted by 1 pts on X - SUBSET : 3 points (X) - 1 / 1: 2.000 - 2 / 2: 3.000 - 3 / 3: .... - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_scalar_grids -! err693_scalar_grids.jnl -! See ticket 1602 - -! multiplication by scalar variable "let one = 1" added -! abstract axes to the expression in all directions not -! already reperesented in the grid. - - -! The T averaging is ignored; no T direction in the grid. -use levitus_climatology -let a = temp[x=140,y=0,z=0] -list a[t=1-jan-0001:1-jan-0020@ave] - VARIABLE : TEMP[X=140,Y=0,Z=0] - FILENAME : levitus_climatology.cdf - LONGITUDE: 140E - LATITUDE : 0 - DEPTH (m): 0 - 29.30 - -! Multiply by a variable which is a constant (prev. this -! resulted in an illegal use of transform error.) -let one = 1 -let b = one*a -list b[t=1-jan-0001:1-jan-0020@ave] - VARIABLE : ONE*A - FILENAME : levitus_climatology.cdf - DEPTH (m): 0 - 29.30 - -! Test with a constant-array variable. -let two = {2} -let c = two*a -list c[t=1-jan-0001:1-jan-0020@ave] - VARIABLE : TWO*A - FILENAME : levitus_climatology.cdf - X : 1 - DEPTH (m): 0 - 58.59 - - -! check interactions with GC functions (prev. this -! resulted in an illegal use of transform error.) -LET v = X[x=1:4:1] + Y[Y=.1:.4:.1] -LET a = XSEQUENCE( v[I=2:3,J=2:3] ) + Z[Z=.01:.02:.01] -LIST a[t=1-jan-0001:1-jan-0020@ave] - VARIABLE : XSEQUENCE( V[I=2:3,J=2:3] ) + Z[Z=.01:.02:.01] - SUBSET : 4 by 2 points (X-Z) - 1 2 3 4 - 1 2 3 4 - 0.01 / 1: 2.210 3.210 2.310 3.310 - 0.02 / 2: 2.220 3.220 2.320 3.320 -list b - VARIABLE : ONE*A - SUBSET : 4 by 2 points (X-Z) - 1 2 3 4 - 1 2 3 4 - 0.01 / 1: 2.210 3.210 2.310 3.310 - 0.02 / 2: 2.220 3.220 2.320 3.320 - -list b[x=@ave,k=@ave] - VARIABLE : ONE*A - X : 0.5 to 4.5 (XZ ave) - Z : 0.005 to 0.025 (XZ ave) - 2.765 - - - -GO bn_reset bn_permute_ascii -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_permute_ascii -GO bn_permute_ascii -! bn_permute_ascii.jnl -! test permutations when reading ascii data, in E and F directions -! 11/18/2014 -! see ticket 2217: was not working for grids in E and F - - -! First with T axis - -! unpermuted -def axis/t=1:12:1 t12 -define axis/x=1:4:1 x4ax -def grid/x=x4ax/t=t12 txgrid - FILE/SKIP=4/VAR="Tm"/COL=12/order=tx/GRID=txgrid fxdata.dat -sh dat - currently SET data sets: - 1> ./data/fxdata.dat (default) - name title I J K L - TM Tm 1:4 ... ... 1:12 - -list tm - VARIABLE : Tm - FILENAME : fxdata.dat - SUBSET : 4 by 12 points (X-T) - 1 2 3 4 - 1 2 3 4 - 1 / 1: -6.85 -6.75 -6.65 -6.55 - 2 / 2: -11.71 -11.72 -11.73 -11.74 - 3 / 3: -19.12 -19.22 -19.32 -19.42 - 4 / 4: -24.81 -24.82 -24.83 -24.84 - 5 / 5: -27.19 -27.29 -27.39 -27.49 - 6 / 6: -28.51 -28.52 -28.53 -28.54 - 7 / 7: -30.27 -30.37 -30.47 -30.57 - 8 / 8: -31.34 -31.54 -31.64 -31.74 - 9 / 9: -29.34 -29.44 -29.54 -29.64 - 10 / 10: -23.29 -23.39 -23.49 -23.59 - 11 / 11: -14.91 -14.92 -14.93 -14.94 - 12 / 12: -8.09 -8.19 -8.29 -8.39 - -! permuted -def axis/t=1:12:1 t12 -define axis/x=1:4:1 x4ax -def grid/x=x4ax/t=t12 txgrid -FILE/SKIP=4/VAR="Tm"/COL=12/order=tx/GRID=txgrid fxdata.dat -sh dat - currently SET data sets: - 1> ./data/fxdata.dat (default) - name title I J K L - TM Tm 1:4 ... ... 1:12 - -list tm - VARIABLE : Tm - FILENAME : fxdata.dat - SUBSET : 4 by 12 points (X-T) - 1 2 3 4 - 1 2 3 4 - 1 / 1: -6.85 -6.75 -6.65 -6.55 - 2 / 2: -11.71 -11.72 -11.73 -11.74 - 3 / 3: -19.12 -19.22 -19.32 -19.42 - 4 / 4: -24.81 -24.82 -24.83 -24.84 - 5 / 5: -27.19 -27.29 -27.39 -27.49 - 6 / 6: -28.51 -28.52 -28.53 -28.54 - 7 / 7: -30.27 -30.37 -30.47 -30.57 - 8 / 8: -31.34 -31.54 -31.64 -31.74 - 9 / 9: -29.34 -29.44 -29.54 -29.64 - 10 / 10: -23.29 -23.39 -23.49 -23.59 - 11 / 11: -14.91 -14.92 -14.93 -14.94 - 12 / 12: -8.09 -8.19 -8.29 -8.39 - -! Then same with F axis -can data/all - -def axis/f=1:12:1 f12 -define axis/x=1:4:1 x4ax -def grid/x=x4ax/f=f12 fxgrid - FILE/SKIP=4/VAR="Tm"/COL=12/order=fx/GRID=fxgrid fxdata.dat -sh dat - currently SET data sets: - 1> ./data/fxdata.dat (default) - name title I J K L M N - TM Tm 1:4 ... ... ... ... 1:12 - -list tm - VARIABLE : Tm - FILENAME : fxdata.dat - SUBSET : 4 by 12 points (X-F) - 1 2 3 4 - 1 2 3 4 - 1 / 1: -6.85 -6.75 -6.65 -6.55 - 2 / 2: -11.71 -11.72 -11.73 -11.74 - 3 / 3: -19.12 -19.22 -19.32 -19.42 - 4 / 4: -24.81 -24.82 -24.83 -24.84 - 5 / 5: -27.19 -27.29 -27.39 -27.49 - 6 / 6: -28.51 -28.52 -28.53 -28.54 - 7 / 7: -30.27 -30.37 -30.47 -30.57 - 8 / 8: -31.34 -31.54 -31.64 -31.74 - 9 / 9: -29.34 -29.44 -29.54 -29.64 - 10 / 10: -23.29 -23.39 -23.49 -23.59 - 11 / 11: -14.91 -14.92 -14.93 -14.94 - 12 / 12: -8.09 -8.19 -8.29 -8.39 - -! Read same data in y-z-t -can data/all - -def axis/t=1:6:1 t6ax -define axis/z=1:4:1 z4ax -define axis/y=1:2:1 y2ax -def grid/y=y2ax/z=z4ax/t=t6ax grid3d -FILE/SKIP=4/VAR="Tm"/COL=12/GRID=grid3d fxdata.dat -sh dat - currently SET data sets: - 1> ./data/fxdata.dat (default) - name title I J K L - TM Tm ... 1:2 1:4 1:6 - -list tm - VARIABLE : Tm - FILENAME : fxdata.dat - SUBSET : 2 by 4 by 6 points (Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: -6.85 -11.71 - 2 / 2: -19.12 -24.81 - 3 / 3: -27.19 -28.51 - 4 / 4: -30.27 -31.34 - ---- L:2 T: 2 - 1 / 1: -29.34 -23.29 - 2 / 2: -14.91 -8.09 - 3 / 3: -6.75 -11.72 - 4 / 4: -19.22 -24.82 - ---- L:3 T: 3 - 1 / 1: -27.29 -28.52 - 2 / 2: -30.37 -31.54 - 3 / 3: -29.44 -23.39 - 4 / 4: -14.92 -8.19 - ---- L:4 T: 4 - 1 / 1: -6.65 -11.73 - 2 / 2: -19.32 -24.83 - 3 / 3: -27.39 -28.53 - 4 / 4: -30.47 -31.64 - ---- L:5 T: 5 - 1 / 1: -29.54 -23.49 - 2 / 2: -14.93 -8.29 - 3 / 3: -6.55 -11.74 - 4 / 4: -19.42 -24.84 - ---- L:6 T: 6 - 1 / 1: -27.49 -28.54 - 2 / 2: -30.57 -31.74 - 3 / 3: -29.64 -23.59 - 4 / 4: -14.94 -8.39 - -! And permuted - -can data/all - -def axis/t=1:6:1 t6ax -define axis/z=1:4:1 z4ax -define axis/y=1:2:1 y2ax -def grid/y=y2ax/z=z4ax/t=t6ax grid3d -FILE/SKIP=4/VAR="Tm"/COL=12/order=tyz/GRID=grid3d fxdata.dat -sh dat - currently SET data sets: - 1> ./data/fxdata.dat (default) - name title I J K L - TM Tm ... 1:2 1:4 1:6 - -list tm - VARIABLE : Tm - FILENAME : fxdata.dat - SUBSET : 2 by 4 by 6 points (Y-Z-T) - 1 2 - 1 2 - ---- L:1 T: 1 - 1 / 1: -6.85 -30.27 - 2 / 2: -6.75 -30.37 - 3 / 3: -6.65 -30.47 - 4 / 4: -6.55 -30.57 - ---- L:2 T: 2 - 1 / 1: -11.71 -31.34 - 2 / 2: -11.72 -31.54 - 3 / 3: -11.73 -31.64 - 4 / 4: -11.74 -31.74 - ---- L:3 T: 3 - 1 / 1: -19.12 -29.34 - 2 / 2: -19.22 -29.44 - 3 / 3: -19.32 -29.54 - 4 / 4: -19.42 -29.64 - ---- L:4 T: 4 - 1 / 1: -24.81 -23.29 - 2 / 2: -24.82 -23.39 - 3 / 3: -24.83 -23.49 - 4 / 4: -24.84 -23.59 - ---- L:5 T: 5 - 1 / 1: -27.19 -14.91 - 2 / 2: -27.29 -14.92 - 3 / 3: -27.39 -14.93 - 4 / 4: -27.49 -14.94 - ---- L:6 T: 6 - 1 / 1: -28.51 -8.09 - 2 / 2: -28.52 -8.19 - 3 / 3: -28.53 -8.29 - 4 / 4: -28.54 -8.39 - -! Now with Y-Z-E - -can data/all - -def axis/e=1:6:1 e6ax -define axis/z=1:4:1 z4ax -define axis/y=1:2:1 y2ax -def grid/y=y2ax/z=z4ax/e=e6ax grid3d -FILE/SKIP=4/VAR="Tm"/COL=12/GRID=grid3d fxdata.dat -sh dat - currently SET data sets: - 1> ./data/fxdata.dat (default) - name title I J K L M N - TM Tm ... 1:2 1:4 ... 1:6 ... - -list tm - VARIABLE : Tm - FILENAME : fxdata.dat - SUBSET : 2 by 4 by 6 points (Y-Z-E) - 1 2 - 1 2 - ---- M:1 E: 1 - 1 / 1: -6.85 -11.71 - 2 / 2: -19.12 -24.81 - 3 / 3: -27.19 -28.51 - 4 / 4: -30.27 -31.34 - ---- M:2 E: 2 - 1 / 1: -29.34 -23.29 - 2 / 2: -14.91 -8.09 - 3 / 3: -6.75 -11.72 - 4 / 4: -19.22 -24.82 - ---- M:3 E: 3 - 1 / 1: -27.29 -28.52 - 2 / 2: -30.37 -31.54 - 3 / 3: -29.44 -23.39 - 4 / 4: -14.92 -8.19 - ---- M:4 E: 4 - 1 / 1: -6.65 -11.73 - 2 / 2: -19.32 -24.83 - 3 / 3: -27.39 -28.53 - 4 / 4: -30.47 -31.64 - ---- M:5 E: 5 - 1 / 1: -29.54 -23.49 - 2 / 2: -14.93 -8.29 - 3 / 3: -6.55 -11.74 - 4 / 4: -19.42 -24.84 - ---- M:6 E: 6 - 1 / 1: -27.49 -28.54 - 2 / 2: -30.57 -31.74 - 3 / 3: -29.64 -23.59 - 4 / 4: -14.94 -8.39 - -can data/all - -def axis/e=1:6:1 e6ax -define axis/z=1:4:1 z4ax -define axis/y=1:2:1 y2ax -def grid/y=y2ax/z=z4ax/e=e6ax grid3d -FILE/SKIP=4/VAR="Tm"/COL=12/order=eyz/GRID=grid3d fxdata.dat -sh dat - currently SET data sets: - 1> ./data/fxdata.dat (default) - name title I J K L M N - TM Tm ... 1:2 1:4 ... 1:6 ... - -list tm - VARIABLE : Tm - FILENAME : fxdata.dat - SUBSET : 2 by 4 by 6 points (Y-Z-E) - 1 2 - 1 2 - ---- M:1 E: 1 - 1 / 1: -6.85 -30.27 - 2 / 2: -6.75 -30.37 - 3 / 3: -6.65 -30.47 - 4 / 4: -6.55 -30.57 - ---- M:2 E: 2 - 1 / 1: -11.71 -31.34 - 2 / 2: -11.72 -31.54 - 3 / 3: -11.73 -31.64 - 4 / 4: -11.74 -31.74 - ---- M:3 E: 3 - 1 / 1: -19.12 -29.34 - 2 / 2: -19.22 -29.44 - 3 / 3: -19.32 -29.54 - 4 / 4: -19.42 -29.64 - ---- M:4 E: 4 - 1 / 1: -24.81 -23.29 - 2 / 2: -24.82 -23.39 - 3 / 3: -24.83 -23.49 - 4 / 4: -24.84 -23.59 - ---- M:5 E: 5 - 1 / 1: -27.19 -14.91 - 2 / 2: -27.29 -14.92 - 3 / 3: -27.39 -14.93 - 4 / 4: -27.49 -14.94 - ---- M:6 E: 6 - 1 / 1: -28.51 -8.09 - 2 / 2: -28.52 -8.19 - 3 / 3: -28.53 -8.29 - 4 / 4: -28.54 -8.39 - - -GO bn_reset bn_lon_lat_time_string -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_lon_lat_time_string -GO bn_lon_lat_time_string -! bn_lon_lat_time_string.jnl -! Test function written for LAS, to create profile labels from -! a list of lnogitudes, latitudes, times, and a prefix string. - -show function lon_lat_time_string -LON_LAT_TIME_STRING(longitude,latitude,time,time_axis,string to prepend) - Generate strings from longitude,latitude,time - longitude: Station longitude - latitude: Station latitude - time: numeric times - time_axis: Varible with a time axis to use to convert time to time strings - string to prepend: A label to start the strings (STRING) - -! Longitudes are translated to 0:360 range -let lon = {-172.44, 210.01, -19.5} - -! latitudes are labeled N or S -let lat = {3.12, 4.9, -15.03} - -! Time steps are interpreted in terms of a time axis -let time = {1,2,3} -define axis/t=1-jan-2001:31-jan-2001:1/units=days/t0=1-jan-2001 taxis -let tt = t[gt=taxis] - -list lon_lat_time_string(lon, lat, time, tt, "my_string") - VARIABLE : LON_LAT_TIME_STRING(LON, LAT, TIME, TT, "my_string") - SUBSET : 3 points (X) - 1 / 1:"my_string_187.6E_3.12N_02-JAN-2001" - 2 / 2:"my_string_210E_4.9N_03-JAN-2001" - 3 / 3:"my_string_340.5E_15.03S_04-JAN-2001" - - -GO bn_reset bn_save_justdim -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_save_justdim -GO bn_save_justdim -! bn_save_justdim.jnl -! When a dataset has axes that are dimensions but not 1-D coordinate variables, -! no longer save the coordinate axis that Ferret creates from the dimension. -! -! Allows for a dimension and a 2-D variable to have the same name. -! see ticket 2227 -! 1/21/2015 ACM - -use twodtime.nc -sh dat - currently SET data sets: - 1> ./data/twodtime.nc (default) - name title I J K L M N - TIME GRIB forecast or observation ti ... ... ... 1:8 ... 1:3 - - -! previously this gave a name-in-use error -save/file=a.nc/clobber time - -! The file has 2D TIME variable, and TIME as a dimension. -sp ncdump a.nc >> all_ncdump.out - -! Now, keep case and axis name as on input -CANCEL MODE upcase - -save/clobber/keep/file=a.nc time -sp ncdump a.nc >> all_ncdump.out - -SET MODE/LAST upcase_output - -GO bn_reset bn_time2d -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_time2d -GO bn_time2d -! bn_time2d.jnl -! 1/30/2015 ACM - -! initial changes to handle 2d time variable: forecast and time -! plot both axes as formatted time axes. - -use twodtime.nc -sh dat - currently SET data sets: - 1> ./data/twodtime.nc (default) - name title I J K L M N - TIME GRIB forecast or observation ti ... ... ... 1:8 ... 1:3 - -sh att time - attributes for dataset: ./data/twodtime.nc - time.units = calendar Month since 2014-11-01T00:00:00Z - time.long_name = GRIB forecast or observation time - time.calendar = proleptic_gregorian - time.bounds = time_bounds - time.history = From http://tds.climatedatacloud.com/thredds/dodsC/ensembles/nmme_gfdl/TwoD - time.orig_file_axname = time - -! The file has the t axis as just a dimension. Define another -! axis with time units - -def axis/t=1:8:1/units=month/t0=1-nov-2014 taxis -let time2d = time[gt=taxis@asn] -set att/like=time time2d - -shade time2d -shade/trans time2d - -GO bn_reset bn_legend_labels -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_legend_labels -GO bn_legend_labels -! bn_legend_labels.jnl -! The legend labels on a multi-line plot describe the -! variable and context but are not controlable by the user. -! -! /KEY=title tells Ferret to label the legend with the variable -! title. -! *acm* 2/4/2015 Ticket 2231 - -! just to be sure -cancel mode logo -cancel sym lab* - - -use coads_climatology -let/title=January sst1 = sst[l=1] -let/title=February sst2 = sst[l=2] -let/title=March sst3 = sst[l=3] - -! Draw a plot and show the labels on the legend. -plot/x=300/y=20:65 sst1,sst2,sst3 -sh sym lab* -LABX = "LATITUDE" -LAB1 = "LONGITUDE : 60W (interpolated)" -LABNUM_X = "1" -LAB2 = "DATA SET: coads_climatology" -LABNUM_DSET = "2" -LABY = "" -LAB3 = "SST1[T=16-JAN 06:00]" -LABKEY = "SST3[T=17-MAR 02:58]" -LAB4 = "SST2[T=15-FEB 16:29]" -LAB5 = "SST3[T=17-MAR 02:58]" - -cancel sym lab* - -! Draw a plot with legend labeled with the variable titles. -plot/x=300/y=20:65/key=title sst1,sst2,sst3 -sh sym lab* -LABX = "LATITUDE" -LAB1 = "LONGITUDE : 60W (interpolated)" -LABNUM_X = "1" -LAB2 = "DATA SET: coads_climatology" -LABNUM_DSET = "2" -LABY = "" -LAB3 = "January" -LABKEY = "March" -LAB4 = "February" -LAB5 = "March" - -set mode/last logo - -GO bn_reset bn_DQ -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_DQ -GO bn_DQ -! bn_DQ.jnl *sh* 2/2015 -! test the use of _DQ_ and _SQ_ in lieu of " and ' - -let foobar = 1 -let foobar_ = 1 - -LIST foobar, foobar_ - Column 1: FOOBAR is 1 - Column 2: FOOBAR_ is 1 - FOOBAR FOOBAR_ -I / *: 1.000 1.000 - -LIST "foobar" ! bug fix: pre-V694 used to list the value of foobar - VARIABLE : "foobar" - "foobar" -let a = "foobar" -list a - VARIABLE : "foobar" - "foobar" - -list _DQ_foobar_DQ_ - VARIABLE : _DQ_foobar_DQ_ - "foobar" -let a = _DQ_foobar_DQ_ -list a - VARIABLE : _DQ_foobar_DQ_ - "foobar" - -! ====== -list "_DQ_foobar_DQ_" - VARIABLE : "_DQ_foobar_DQ_" - "_DQ_foobar_DQ_" -let a = "_DQ_foobar_DQ_" -list a - VARIABLE : "_DQ_foobar_DQ_" - "_DQ_foobar_DQ_" - -list _DQ_"foobar"_DQ_ - VARIABLE : _DQ_"foobar"_DQ_ - ""foobar"" -let a = _DQ_"foobar"_DQ_ -list a - VARIABLE : _DQ_"foobar"_DQ_ - ""foobar"" - -! ====== -list 'FOOBAR' - VARIABLE : 1 - 1.000 -let a = 'FOOBAR' -list a - VARIABLE : 'FOOBAR' - 1.000 - -list _SQ_FOOBAR_SQ_ - VARIABLE : 1 - 1.000 -let a = _SQ_FOOBAR_SQ_ -list a - VARIABLE : _SQ_FOOBAR_SQ_ - 1.000 - -! ====== -list "'foobar'" - VARIABLE : "'foobar'" - "'foobar'" -let a = "'foobar'" -list a - VARIABLE : "'foobar'" - "'foobar'" - -list _DQ_'foobar'_DQ_ - VARIABLE : _DQ_'foobar'_DQ_ - "'foobar'" -let a = _DQ_'foobar'_DQ_ -list a - VARIABLE : _DQ_'foobar'_DQ_ - "'foobar'" - -! ====== -list "_SQ_foobar_SQ_" - VARIABLE : "_SQ_foobar_SQ_" - "_SQ_foobar_SQ_" -let a = "_SQ_foobar_SQ_" -list a - VARIABLE : "_SQ_foobar_SQ_" - "_SQ_foobar_SQ_" - -list _DQ__SQ_foobar_SQ__DQ_ - VARIABLE : _DQ__SQ_foobar_SQ__DQ_ - "_SQ_foobar_SQ_" -let a = _DQ__SQ_foobar_SQ__DQ_ -list a - VARIABLE : _DQ__SQ_foobar_SQ__DQ_ - "_SQ_foobar_SQ_" - -! ====== -list 'FOOBAR' + 'FOOBAR' - VARIABLE : 'FOOBAR' + 'FOOBAR' - 2.000 -let a = 'FOOBAR' + 'FOOBAR' -list a - VARIABLE : 'FOOBAR' + 'FOOBAR' - 2.000 - -list _SQ_FOOBAR_SQ_ + _SQ_FOOBAR_SQ_ ! should behave like the preceding - VARIABLE : _SQ_FOOBAR_SQ_ + _SQ_FOOBAR_SQ_ - 2.000 -let a = _SQ_FOOBAR_SQ_ + _SQ_FOOBAR_SQ_ -list a - VARIABLE : _SQ_FOOBAR_SQ_ + _SQ_FOOBAR_SQ_ - 2.000 - -! ====== demonstrate hiding all sorts of characters -let a = _DQ_'"+-/;_SQ_foobar"'_DQ_ -list a - VARIABLE : _DQ_'"+-/;_SQ_foobar"'_DQ_ - "'"+-/;_SQ_foobar"'" - -! ====== -say "hello" -hello -say _DQ_hello_DQ_ -hello - -! ====== -list {"foobar","foobar"} - VARIABLE : {"foobar","foobar"} - SUBSET : 2 points (X) - 1 / 1:"foobar" - 2 / 2:"foobar" -let a = {"foobar","foobar"} -list a - VARIABLE : {"foobar","foobar"} - SUBSET : 2 points (X) - 1 / 1:"foobar" - 2 / 2:"foobar" - -list {_DQ_foobar_DQ_,_DQ_foobar_DQ_} - VARIABLE : {_DQ_foobar_DQ_,_DQ_foobar_DQ_} - SUBSET : 2 points (X) - 1 / 1:"foobar" - 2 / 2:"foobar" -let a = {_DQ_foobar_DQ_,_DQ_foobar_DQ_} -list a - VARIABLE : {_DQ_foobar_DQ_,_DQ_foobar_DQ_} - SUBSET : 2 points (X) - 1 / 1:"foobar" - 2 / 2:"foobar" - -list {_DQ_"foobar"_DQ_,_DQ_"foobar"_DQ_} ! DQ used to protect '"' - VARIABLE : {_DQ_"foobar"_DQ_,_DQ_"foobar"_DQ_} - SUBSET : 2 points (X) - 1 / 1:""foobar"" - 2 / 2:""foobar"" -let a = {_DQ_"foobar"_DQ_,_DQ_"foobar"_DQ_} -list a - VARIABLE : {_DQ_"foobar"_DQ_,_DQ_"foobar"_DQ_} - SUBSET : 2 points (X) - 1 / 1:""foobar"" - 2 / 2:""foobar"" - -! ====== -list {SPAWN:"ls data/weird_name1.cdf","foobar"} - VARIABLE : {SPAWN:"ls data/weird_name1.cdf","foobar"} - SUBSET : 2 points (X) - 1 / 1:"data/weird_name1.cdf" - 2 / 2:"foobar" -let a = {SPAWN:"ls data/weird_name1.cdf","foobar"} -list a - VARIABLE : {SPAWN:"ls data/weird_name1.cdf","foobar"} - SUBSET : 2 points (X) - 1 / 1:"data/weird_name1.cdf" - 2 / 2:"foobar" - -list {SPAWN:_DQ_ls data/weird_name1.cdf_DQ_,_DQ_foobar_DQ_} - VARIABLE : {SPAWN:_DQ_ls data/weird_name1.cdf_DQ_,_DQ_foobar_DQ_} - SUBSET : 2 points (X) - 1 / 1:"data/weird_name1.cdf" - 2 / 2:"foobar" -let a = {SPAWN:_DQ_ls data/weird_name1.cdf_DQ_,_DQ_foobar_DQ_} -list a - VARIABLE : {SPAWN:_DQ_ls data/weird_name1.cdf_DQ_,_DQ_foobar_DQ_} - SUBSET : 2 points (X) - 1 / 1:"data/weird_name1.cdf" - 2 / 2:"foobar" - -list {SPAWN:_DQ_ls "data/weird_name1.cdf"_DQ_,_DQ_foobar_DQ_} ! DQ protects '"' - VARIABLE : {SPAWN:_DQ_ls "data/weird_name1.cdf"_DQ_,_DQ_foobar_DQ_} - SUBSET : 2 points (X) - 1 / 1:"data/weird_name1.cdf" - 2 / 2:"foobar" -let a = {SPAWN:_DQ_ls "data/weird_name1.cdf"_DQ_,_DQ_foobar_DQ_} -list a - VARIABLE : {SPAWN:_DQ_ls "data/weird_name1.cdf"_DQ_,_DQ_foobar_DQ_} - SUBSET : 2 points (X) - 1 / 1:"data/weird_name1.cdf" - 2 / 2:"foobar" - -! ====== -! in repl_exprns: -say `"=" EQ "="` - !-> MESSAGE/CONTINUE 1 -1 -say `_DQ_=_DQ_ EQ _DQ_=_DQ_` - !-> MESSAGE/CONTINUE 1 -1 -say `_DQ_"="_DQ_ EQ _DQ_"="_DQ_` ! DQ used to protect '"' - !-> MESSAGE/CONTINUE 1 -1 - -! in xeq_if: -IF 1 THEN SAY "I is too big" ENDIF -I is too big -IF 1 THEN SAY _DQ_I is too big_DQ_ ENDIF -I is too big -IF 1 THEN SAY _DQ_"I is too big"_DQ_ ENDIF ! DQ used to protect '"' -"I is too big" - -! ====== -DEFINE SYMBOL a "foobar" -say ($a) - !-> MESSAGE/CONTINUE foobar -foobar -DEFINE SYMBOL a _DQ_foobar_DQ_ -say ($a) - !-> MESSAGE/CONTINUE foobar -foobar - -! ====== -! Note this result changes 6/30/2017, due to change in merge_grid for ticket -! 2313, in grid-merging the grid of a constant is now a normal grid. Previously -! it was the abstract grid. -DEFINE SYMBOL a "(`foobar,return=xaxis`)" - !-> DEFINE SYMBOL a "(NORMAL)" -say ($a) - !-> MESSAGE/CONTINUE (NORMAL) -(NORMAL) -DEFINE SYMBOL a _DQ_(`foobar,return=xaxis`)_DQ_ - !-> DEFINE SYMBOL a _DQ_(NORMAL)_DQ_ -say ($a) - !-> MESSAGE/CONTINUE (NORMAL) -(NORMAL) - -! ====== -GO bn_DQ.sub _DQ_+-/_SQ_\!foo"bar;_SQ_"_DQ_ "_DQ_+-/_SQ_\!foobar;_SQ_" -! bn_DQ.sub arg_with_DQ arg_with_quotes - -SAY _DQ_ "-quotations ok as in $1%any_arg_with_quotes%_DQ_ - !-> MESSAGE/CONTINUE _DQ_ "-quotations ok as in +-/_SQ_!foo"bar;_SQ_"_DQ_ - "-quotations ok as in +-/_SQ_!foo"bar;_SQ_" -SAY "_DQ_ delimiters ok as in $2%any_arg_with_DQ%" - !-> MESSAGE/CONTINUE "_DQ_ delimiters ok as in _DQ_+-/_SQ_!foobar;_SQ_" -_DQ_ delimiters ok as in _DQ_+-/_SQ_!foobar;_SQ_ - - -! ====== string arguments to functions -list STRCAT( "HELL" , "O" ) - VARIABLE : STRCAT( "HELL" , "O" ) - "HELLO" -list STRCAT(_DQ_HELL_DQ_,_DQ_O_DQ_) - VARIABLE : STRCAT(_DQ_HELL_DQ_,_DQ_O_DQ_) - "HELLO" - -! ====== -let/title= "title of A" a = 1 -list a - VARIABLE : title of A - 1.000 -let/title=_DQ_title of A_DQ_ a = 1 -list a - VARIABLE : title of A - 1.000 -let/title=_DQ_"title of A"_DQ_ a = 1 ! DQ used to protect '"' -list a - VARIABLE : "title of A" - 1.000 - -! ====== -use weird_name1.cdf -list 'v2-and-minus'[i=4:6] - VARIABLE : SIN(2+I/10) - FILENAME : weird_name1.cdf - SUBSET : 3 points (X) - 4 / 4: 0.6755 - 5 / 5: 0.5985 - 6 / 6: 0.5155 -list _SQ_v2-and-minus_SQ_[i=4:6] - VARIABLE : SIN(2+I/10) - FILENAME : weird_name1.cdf - SUBSET : 3 points (X) - 4 / 4: 0.6755 - 5 / 5: 0.5985 - 6 / 6: 0.5155 -list 'v2-and-minus'[i=4:6] - VARIABLE : SIN(2+I/10) - FILENAME : weird_name1.cdf - SUBSET : 3 points (X) - 4 / 4: 0.6755 - 5 / 5: 0.5985 - 6 / 6: 0.5155 -list _SQ_v2-and-minus_SQ_[i=4:6] - VARIABLE : SIN(2+I/10) - FILENAME : weird_name1.cdf - SUBSET : 3 points (X) - 4 / 4: 0.6755 - 5 / 5: 0.5985 - 6 / 6: 0.5155 -list 'v2-and-minus'[i=4:6] / 'X'[i=4:6] - VARIABLE : 'v2-and-minus'[I=4:6] / 'X'[I=4:6] - FILENAME : weird_name1.cdf - SUBSET : 3 points (X) - 4 / 4: -0.8741 - 5 / 5: -0.8482 - 6 / 6: -0.8166 -list _SQ_v2-and-minus_SQ_[i=4:6] / _SQ_X_SQ_[i=4:6] - VARIABLE : _SQ_v2-and-minus_SQ_[I=4:6] / _SQ_X_SQ_[I=4:6] - FILENAME : weird_name1.cdf - SUBSET : 3 points (X) - 4 / 4: -0.8741 - 5 / 5: -0.8482 - 6 / 6: -0.8166 - -! ====== -SET REGION/T= "1-jan-2001":"15-jan-2001" -SHOW REGION -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - T=-6.3146E+10:-6.3147E+10 - E/M is unspecified - F/N is unspecified -SET REGION/T=_DQ_1-jan-2001_DQ_:_DQ_15-jan-2001_DQ_ -SHOW REGION -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - T=-6.3146E+10:-6.3147E+10 - E/M is unspecified - F/N is unspecified -! ==> THE clean_draconian FILTER REMOVES THE FOLLOWING DATE-TIME LINES FROM LOG -SET REGION/T= "1-jan-2001:12:00":"15-jan-2001 12:00" -SHOW REGION -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - T=-6.3146E+10:-6.3147E+10 - E/M is unspecified - F/N is unspecified -SET REGION/T=_DQ_1-jan-2001:12:00_DQ_:_DQ_15-jan-2001 12:00_DQ_ -SHOW REGION -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - T=-6.3146E+10:-6.3147E+10 - E/M is unspecified - F/N is unspecified - -! ====== -DEFINE ATTRIBUTE foobar.some_text = "some text about foobar" -SHOW ATTRIBUTE/ALL foobar - attributes for user-defined variables - foobar.long_name = 1 - foobar.missing_value = -1.E+34 - foobar.some_text = some text about foobar -DEFINE ATTRIBUTE foobar.some_text = _DQ_some text about foobar_DQ_ -SHOW ATTRIBUTE/ALL foobar - attributes for user-defined variables - foobar.long_name = 1 - foobar.missing_value = -1.E+34 - foobar.some_text = some text about foobar -DEFINE ATTR foobar.some_text = _DQ_"quoted attribute"_DQ_ ! DQ protects '"' -SHOW ATTRIBUTE/ALL foobar - attributes for user-defined variables - foobar.long_name = 1 - foobar.missing_value = -1.E+34 - foobar.some_text = "quoted attribute" - -! ====== -SPAWN "ls data/weird_name1.*" -data/weird_name1.cdf -SPAWN _DQ_ls data/weird_name1.*_DQ_ -data/weird_name1.cdf - -! ====== -LET a = {"first.nc", SPAWN: "ls data/weird_name1.*" ,"last.nc"} -LIST a - VARIABLE : {"first.nc", SPAWN: "ls data/weird_name1.*" ,"last.nc"} - SUBSET : 3 points (X) - 1 / 1:"first.nc" - 2 / 2:"data/weird_name1.cdf" - 3 / 3:"last.nc" -LET a = {"first.nc", SPAWN:_DQ_ls data/weird_name1.*_DQ_,"last.nc"} -LIST a - VARIABLE : {"first.nc", SPAWN:_DQ_ls data/weird_name1.*_DQ_,"last.nc"} - SUBSET : 3 points (X) - 1 / 1:"first.nc" - 2 / 2:"data/weird_name1.cdf" - 3 / 3:"last.nc" - -! ========================= -! !!!!!! TEMPORARY LINE -! !!!!!! see bug report err693_xeq_show.jnl -show data ! to side step dset=-1 left behind by SHOW ATTRIBUTE previously - currently SET data sets: - 1> ./data/weird_name1.cdf (default) - name title I J K L - v1 lower case v1 1:20 ... ... ... - v2-and-minus - SIN(2+I/10) 1:20 ... ... ... - V1 Upper case V1 1:20 ... ... ... - I SIN(4+I/10) 1:20 ... ... ... - X SIN(5+I/10) 1:20 ... ... ... - -! !!!!!! -! ========================= - ! ====== -define grid/x=_DQ_v1_DQ_ gg -show grid gg - GRID GG - name axis # pts start end - XAX1_20 X 20 r 1 20 - normal Y - normal Z - normal T - -! ====== -LET/TITLE= _DQ_'A title w/ "sq"'. Ship_Ka'imimoana_DQ_ A = 1 ! ' char for emacs -LIST A - VARIABLE : 'A title w/ "sq"'. Ship_Ka'imimoana - 1.000 - -! ====== -contour/LEVELS= "(-10,10,2)DARK(-10,10,8)" \ - 10*SIN(X[x=1:5:.1])*COS(Y[Y=1:5:.1]) -contour/LEVELS= _DQ_(-10,10,2)DARK(-10,10,8)_DQ_ \ - 10*SIN(X[x=1:5:.1])*COS(Y[Y=1:5:.1]) - -! ====== parse, parsex routines -!plot/set x[i=1:3]^2 -!ppl title "'A title w/ single quotes'. Ship Ka'imimoana" -!ppl plot -!label 2,5,0 "'A title w/ single quotes'. Ship Ka'imimoana" - -plot/set x[i=1:3]^2 -ppl title _DQ_'A title w/ "single quotes"'. Ship_Ka'imimoana_DQ_ ! ' for emacs -ppl plot -label 2,5,0 _DQ_'A title w/ "single quotes"'. Ship_Ka'imimoana_DQ_ ! ' emacs -ppl %label 2,4,0 _DQ_'A title w/ "single quotes"'. Ship_Ka'imimoana_DQ_ ! ' emacs - -! ====== EQUAL_PEMUTE -list/order=_DQ_yx_DQ_ 10*i[i=1:3] + j[j=1:2] - VARIABLE : 10*I[I=1:3] + J[J=1:2] - SUBSET : 2 by 3 points (Y-X) - 1 2 - 1 2 - 1 / 1: 11.00 12.00 - 2 / 2: 21.00 22.00 - 3 / 3: 31.00 32.00 - -! ====== EQUAL_COLOR -plot/color=_DQ_red_DQ_ i[i=1:100]^2 - -! ====== EQUAL_RANGE -plot/vlim=-2:2/hlim="1-jan-1980":"15-feb-1980" \ - SIN(t[t=1-jan-1980:1-feb-1980:1]/5) -plot/vlim=-2:2/hlim=_DQ_1-jan-1980_DQ_:_DQ_15-feb-1980_DQ_ \ - SIN(t[t=1-jan-1980:1-feb-1980:1]/5) -! ==> THE clean_draconian FILTER REMOVES THE FOLLOWING DATE-TIME LINES FROM LOG -plot/vlim=-2:2/hlim="1-jan-1980":"15-feb-1980:12:00" \ - SIN(t[t=1-jan-1980:1-feb-1980:1]/5) -plot/vlim=-2:2/hlim=_DQ_1-jan-1980_DQ_:_DQ_15-feb-1980:12:00_DQ_ \ - SIN(t[t=1-jan-1980:1-feb-1980:1]/5) - -! the following usages for _DQ_ and _SQ_ are NOT supported: -! 1. internal PLOT+ syntax -! e.g. PPL XFOR (i5, ''LONW'') - -! 2. quote used as a delimiter for symbol substitution -! e.g. ($mysymbol"0|red>1|green>2") ! several single char als. e.g. "%" - -! in xeq_set: double quotes around SET MODE argument -- _DQ_ not supported - -! in put_label: special hack for "'date'" -- _SQ_ not supported - -! it isn't clear that there is really a requirement for the _SQ_ syntax at all -! since we are adding this feature to meet our own needs in LAS, we won't -! make the extra effort to hit all of the obscure cases. As a result, the -! occurrences of IF string .EQ. "'" in these routines will be ignored -! - break_varname -! - break_varattname -! - inherit_attrs - -! in xeq_define.F: DEFINE AXIS/NAME='my-name' is of unclear purpose - -! *********** v6.95Additions *********** - -GO bn_reset bn695_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn695_bug_fixes -GO bn695_bug_fixes -! bn695_bug_fixes -! test various fixes that went into version 6.95 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err694_shf_missing -! err694_shf_missing.jnl -! Test the fix for ticket 2314 - -! This had been getting a missing-result; now is correct -use gt4d011.cdf -list/i=100/j=50/k=1/l=24 temp[l=@shf] - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - LONGITUDE: 130.5W - LATITUDE : 1.5N - DEPTH (m): 5 - TIME : 04-JAN-1983 10:00 (shifted by 1 pts) - 32.10 - -! Check shift that takes us beyond the end of a modulo axis (at x=20) -can dat/all; use coads_climatology -list/x=10:30/y=-60/l=1 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 10 points (LONGITUDE) - LATITUDE : 60S (interpolated) - TIME : 16-JAN 06:00 - 11E / -4: 0.422 - 13E / -3: 0.368 - 15E / -2: 0.505 - 17E / -1: 0.207 - 19E / 0: 0.583 - 21E / 1: 0.734 - 23E / 2: 0.472 - 25E / 3: 0.526 - 27E / 4: 0.820 - 29E / 5: 1.017 -list/x=10:30/y=-60/l=1 sst[i=@shf:3] - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - shifted by 3 pts on X - FILENAME : coads_climatology.cdf - SUBSET : 10 points (LONGITUDE) - LATITUDE : 60S (interpolated) - TIME : 16-JAN 06:00 - 11E / -4: 0.207 - 13E / -3: 0.583 - 15E / -2: 0.734 - 17E / -1: 0.472 - 19E / 0: 0.526 - 21E / 1: 0.820 - 23E / 2: 1.017 - 25E / 3: 1.062 - 27E / 4: 1.423 - 29E / 5: 1.221 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err694_longname_showdat -! err694_longname_showdat.jnl -! ticket 2317 -! -! Make a file whose name starts the same as file with long name. -sp rm WestCoastCarbon_9d9c_f562_77b5_5.nc -sp ln -s data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc WestCoastCarbon_9d9c_f562_77b5_5.nc - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - -! Long name was not matched by SHOW DAT filename -! this previously returned an unknown dataset error -sh dat WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d - currently SET data sets: - 1> ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc (default) - DSG Feature type Profile - name title I J K L M N - PROF Prof ... ... ... ... 1:21 ... - PROFILE profile ID: Cruise and Station ... ... ... ... 1:21 ... - TIME Time ... ... ... ... 1:21 ... - LATITUDE Latitude ... ... ... ... 1:21 ... - LONGITUDE - Longitude ... ... ... ... 1:21 ... - ROWSIZE Number of Observations for this ... ... ... ... 1:21 ... - PRESS_DB PRESS_DB ... ... tot 373 ... 1:21 ... - PCO2 PCO2 ... ... tot 373 ... 1:21 ... - - -! If a file matched to 1st 32 characters, the shorter-named -! datset was mistakenly returned. - -use WestCoastCarbon_9d9c_f562_77b5_5 -sh dat WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d - currently SET data sets: - 1> ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - DSG Feature type Profile - name title I J K L M N - PROF Prof ... ... ... ... 1:21 ... - PROFILE profile ID: Cruise and Station ... ... ... ... 1:21 ... - TIME Time ... ... ... ... 1:21 ... - LATITUDE Latitude ... ... ... ... 1:21 ... - LONGITUDE - Longitude ... ... ... ... 1:21 ... - ROWSIZE Number of Observations for this ... ... ... ... 1:21 ... - PRESS_DB PRESS_DB ... ... tot 373 ... 1:21 ... - PCO2 PCO2 ... ... tot 373 ... 1:21 ... - - -sp rm WestCoastCarbon_9d9c_f562_77b5_5.nc - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err693_std4d -! err693_std4d -! Check fix to ticket 2319: std transform in multi-dimensions - - -let a = x[gx=1:3:1] * y[gy=1:3:1] -let astd = a[x=@std,y=@std] -let avar = a[x=@var,y=@var] -let a2 = a^2 -let avar_calc = a2[x=@ave,y=@ave] - a[x=@ave,y=@ave]^2 -let astd_x = a[x=@std] -let astd_x_y = astd_x[y=@std] - -! STD and VAR in x and y together; vs astd_x_y separately -list astd^2, avar, avar_calc, astd_x_y^2 - X: 0.5 to 3.5 - Y: 0.5 to 3.5 - Column 1: EX#1 is ASTD^2 - Column 2: AVAR is A[X=@VAR,Y=@VAR] - Column 3: AVAR_CALC is A2[X=@AVE,Y=@AVE] - A[X=@AVE,Y=@AVE]^2 - Column 4: EX#4 is ASTD_X_Y^2 - EX#1 AVAR AVAR_CA EX#4 -I / *: 5.778 5.778 5.778 0.4444 - - -! Now in the E and F directions - -let a = _e[ge=1:3:1] * _f[gf=1:3:1] -let astd = a[e=@std,f=@std] -let avar = a[e=@var,f=@var] -let a2 = a^2 -let avar_calc = a2[e=@ave,f=@ave] - a[e=@ave,f=@ave]^2 -let astd_e = a[e=@std] -let astd_e_f = astd_e[f=@std] - -list astd^2, avar, avar_calc, astd_e_f^2 - E: 0.5 to 3.5 - F: 0.5 to 3.5 - Column 1: EX#1 is ASTD^2 - Column 2: AVAR is A[E=@VAR,F=@VAR] - Column 3: AVAR_CALC is A2[E=@AVE,F=@AVE] - A[E=@AVE,F=@AVE]^2 - Column 4: EX#4 is ASTD_E_F^2 - EX#1 AVAR AVAR_CA EX#4 -I / *: 5.778 5.778 5.778 0.4444 - - -GO bn_reset bn_f_tax_fcns -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_f_tax_fcns -GO bn_f_tax_fcns -! bn_f_from_tax_fcns.jnl -! test tax_* functions returning results from a -! time-formatted axis in the F direction -! -! 2/2015 ACM - -define axis/f=1-jan-2011:31-jan-2011:1/units=hours fax - - - -let ff = _f[gf=fax] -! Test RETURN=F0 -say `ff,return=F0` - !-> MESSAGE/CONTINUE 15-JAN-1901 -15-JAN-1901 - -list/N=20:30 tax_datestring(_F[g=ff],ff,"minute") - VARIABLE : TAX_DATESTRING(_F[G=FF],FF,"minute") - SUBSET : 11 points (FORECAST) - 01-JAN-2011 19:00 / 20:"01-JAN-2011 19:00" - 01-JAN-2011 20:00 / 21:"01-JAN-2011 20:00" - 01-JAN-2011 21:00 / 22:"01-JAN-2011 21:00" - 01-JAN-2011 22:00 / 23:"01-JAN-2011 22:00" - 01-JAN-2011 23:00 / 24:"01-JAN-2011 23:00" - 02-JAN-2011 00:00 / 25:"02-JAN-2011 00:00" - 02-JAN-2011 01:00 / 26:"02-JAN-2011 01:00" - 02-JAN-2011 02:00 / 27:"02-JAN-2011 02:00" - 02-JAN-2011 03:00 / 28:"02-JAN-2011 03:00" - 02-JAN-2011 04:00 / 29:"02-JAN-2011 04:00" - 02-JAN-2011 05:00 / 30:"02-JAN-2011 05:00" -list/N=20:30 tax_datestring(_F[g=ff],ff,"hour") - VARIABLE : TAX_DATESTRING(_F[G=FF],FF,"hour") - SUBSET : 11 points (FORECAST) - 01-JAN-2011 19:00 / 20:"01-JAN-2011 19" - 01-JAN-2011 20:00 / 21:"01-JAN-2011 20" - 01-JAN-2011 21:00 / 22:"01-JAN-2011 21" - 01-JAN-2011 22:00 / 23:"01-JAN-2011 22" - 01-JAN-2011 23:00 / 24:"01-JAN-2011 23" - 02-JAN-2011 00:00 / 25:"02-JAN-2011 00" - 02-JAN-2011 01:00 / 26:"02-JAN-2011 01" - 02-JAN-2011 02:00 / 27:"02-JAN-2011 02" - 02-JAN-2011 03:00 / 28:"02-JAN-2011 03" - 02-JAN-2011 04:00 / 29:"02-JAN-2011 04" - 02-JAN-2011 05:00 / 30:"02-JAN-2011 05" -list/N=20:30 tax_datestring(_F[g=ff],ff,"day") - VARIABLE : TAX_DATESTRING(_F[G=FF],FF,"day") - SUBSET : 11 points (FORECAST) - 01-JAN-2011 19:00 / 20:"01-JAN-2011" - 01-JAN-2011 20:00 / 21:"01-JAN-2011" - 01-JAN-2011 21:00 / 22:"01-JAN-2011" - 01-JAN-2011 22:00 / 23:"01-JAN-2011" - 01-JAN-2011 23:00 / 24:"01-JAN-2011" - 02-JAN-2011 00:00 / 25:"02-JAN-2011" - 02-JAN-2011 01:00 / 26:"02-JAN-2011" - 02-JAN-2011 02:00 / 27:"02-JAN-2011" - 02-JAN-2011 03:00 / 28:"02-JAN-2011" - 02-JAN-2011 04:00 / 29:"02-JAN-2011" - 02-JAN-2011 05:00 / 30:"02-JAN-2011" -list/N=20:30 tax_dayfrac(_F[g=ff],ff) - VARIABLE : TAX_DAYFRAC(_F[G=FF],FF) - SUBSET : 11 points (FORECAST) - 01-JAN-2011 19:00 / 20: 0.7917 - 01-JAN-2011 20:00 / 21: 0.8333 - 01-JAN-2011 21:00 / 22: 0.8750 - 01-JAN-2011 22:00 / 23: 0.9167 - 01-JAN-2011 23:00 / 24: 0.9583 - 02-JAN-2011 00:00 / 25: 0.0000 - 02-JAN-2011 01:00 / 26: 0.0417 - 02-JAN-2011 02:00 / 27: 0.0833 - 02-JAN-2011 03:00 / 28: 0.1250 - 02-JAN-2011 04:00 / 29: 0.1667 - 02-JAN-2011 05:00 / 30: 0.2083 -list/N=20:30 tax_day(_F[g=ff],ff) - VARIABLE : TAX_DAY(_F[G=FF],FF) - SUBSET : 11 points (FORECAST) - 01-JAN-2011 19:00 / 20: 1.000 - 01-JAN-2011 20:00 / 21: 1.000 - 01-JAN-2011 21:00 / 22: 1.000 - 01-JAN-2011 22:00 / 23: 1.000 - 01-JAN-2011 23:00 / 24: 1.000 - 02-JAN-2011 00:00 / 25: 2.000 - 02-JAN-2011 01:00 / 26: 2.000 - 02-JAN-2011 02:00 / 27: 2.000 - 02-JAN-2011 03:00 / 28: 2.000 - 02-JAN-2011 04:00 / 29: 2.000 - 02-JAN-2011 05:00 / 30: 2.000 -list/N=20:30 tax_jday(_F[g=ff],ff) - VARIABLE : TAX_JDAY(_F[G=FF],FF) - SUBSET : 11 points (FORECAST) - 01-JAN-2011 19:00 / 20: 1.000 - 01-JAN-2011 20:00 / 21: 1.000 - 01-JAN-2011 21:00 / 22: 1.000 - 01-JAN-2011 22:00 / 23: 1.000 - 01-JAN-2011 23:00 / 24: 1.000 - 02-JAN-2011 00:00 / 25: 2.000 - 02-JAN-2011 01:00 / 26: 2.000 - 02-JAN-2011 02:00 / 27: 2.000 - 02-JAN-2011 03:00 / 28: 2.000 - 02-JAN-2011 04:00 / 29: 2.000 - 02-JAN-2011 05:00 / 30: 2.000 -list/N=20:30 tax_month(_F[g=ff],ff) - VARIABLE : TAX_MONTH(_F[G=FF],FF) - SUBSET : 11 points (FORECAST) - 01-JAN-2011 19:00 / 20: 1.000 - 01-JAN-2011 20:00 / 21: 1.000 - 01-JAN-2011 21:00 / 22: 1.000 - 01-JAN-2011 22:00 / 23: 1.000 - 01-JAN-2011 23:00 / 24: 1.000 - 02-JAN-2011 00:00 / 25: 1.000 - 02-JAN-2011 01:00 / 26: 1.000 - 02-JAN-2011 02:00 / 27: 1.000 - 02-JAN-2011 03:00 / 28: 1.000 - 02-JAN-2011 04:00 / 29: 1.000 - 02-JAN-2011 05:00 / 30: 1.000 -list/N=20:30 tax_yearfrac(_F[g=ff],ff) - VARIABLE : TAX_YEARFRAC(_F[G=FF],FF) - SUBSET : 11 points (FORECAST) - 01-JAN-2011 19:00 / 20: 0.004909 - 01-JAN-2011 20:00 / 21: 0.005023 - 01-JAN-2011 21:00 / 22: 0.005137 - 01-JAN-2011 22:00 / 23: 0.005251 - 01-JAN-2011 23:00 / 24: 0.005365 - 02-JAN-2011 00:00 / 25: 0.005479 - 02-JAN-2011 01:00 / 26: 0.005594 - 02-JAN-2011 02:00 / 27: 0.005708 - 02-JAN-2011 03:00 / 28: 0.005822 - 02-JAN-2011 04:00 / 29: 0.005936 - 02-JAN-2011 05:00 / 30: 0.006050 -list/N=20:30 tax_year(_F[g=ff],ff) - VARIABLE : TAX_YEAR(_F[G=FF],FF) - SUBSET : 11 points (FORECAST) - 01-JAN-2011 19:00 / 20: 2011. - 01-JAN-2011 20:00 / 21: 2011. - 01-JAN-2011 21:00 / 22: 2011. - 01-JAN-2011 22:00 / 23: 2011. - 01-JAN-2011 23:00 / 24: 2011. - 02-JAN-2011 00:00 / 25: 2011. - 02-JAN-2011 01:00 / 26: 2011. - 02-JAN-2011 02:00 / 27: 2011. - 02-JAN-2011 03:00 / 28: 2011. - 02-JAN-2011 04:00 / 29: 2011. - 02-JAN-2011 05:00 / 30: 2011. -list/N=20:30 tax_jday1900(_F[g=ff],ff) - VARIABLE : TAX_JDAY1900(_F[G=FF],FF) - SUBSET : 11 points (FORECAST) - 01-JAN-2011 19:00 / 20: 40542. - 01-JAN-2011 20:00 / 21: 40542. - 01-JAN-2011 21:00 / 22: 40542. - 01-JAN-2011 22:00 / 23: 40542. - 01-JAN-2011 23:00 / 24: 40542. - 02-JAN-2011 00:00 / 25: 40543. - 02-JAN-2011 01:00 / 26: 40543. - 02-JAN-2011 02:00 / 27: 40543. - 02-JAN-2011 03:00 / 28: 40543. - 02-JAN-2011 04:00 / 29: 40543. - 02-JAN-2011 05:00 / 30: 40543. -list tax_units(ff) - VARIABLE : TAX_UNITS(FF) - 3600. - -! commands from tax_tstep, changing time origin - -DEFINE AXIS/F="1-JAN-2000:00:00:01":"1-JAN-2000:00:15:00":2/UNITS=seconds fsec -LIST/N=440:451 _F[GF=fsec] - VARIABLE : _F - axis FSEC - SUBSET : 12 points (FORECAST) - 01-JAN-2000 00:14:39 / 440: 3.123E+09 - 01-JAN-2000 00:14:41 / 441: 3.123E+09 - 01-JAN-2000 00:14:43 / 442: 3.123E+09 - 01-JAN-2000 00:14:45 / 443: 3.123E+09 - 01-JAN-2000 00:14:47 / 444: 3.123E+09 - 01-JAN-2000 00:14:49 / 445: 3.123E+09 - 01-JAN-2000 00:14:51 / 446: 3.123E+09 - 01-JAN-2000 00:14:53 / 447: 3.123E+09 - 01-JAN-2000 00:14:55 / 448: 3.123E+09 - 01-JAN-2000 00:14:57 / 449: 3.123E+09 - 01-JAN-2000 00:14:59 / 450: 3.123E+09 - 01-JAN-2000 00:15:01 / 451: 3.123E+09 -LET bsin = SIN(_F[GF=fsec]/40000) -SAVE/FILE=a.nc/clobber bsin -CAN VAR/all -USE a.nc - -SET LIST/PREC=7 -! Reset the date to dec 1999 -! Function lets us leave off the leading 0. -LIST/N=1:15 TAX_TSTEP(bsin, "1-dec-1999:00:00:00" ) - VARIABLE : TAX_TSTEP(BSIN, "1-dec-1999:00:00:00" ) - FILENAME : a.nc - SUBSET : 15 points (FORECAST) - 01-JAN-2000 00:00:01 / 1: 2678401. - 01-JAN-2000 00:00:03 / 2: 2678403. - 01-JAN-2000 00:00:05 / 3: 2678405. - 01-JAN-2000 00:00:07 / 4: 2678407. - 01-JAN-2000 00:00:09 / 5: 2678409. - 01-JAN-2000 00:00:11 / 6: 2678411. - 01-JAN-2000 00:00:13 / 7: 2678413. - 01-JAN-2000 00:00:15 / 8: 2678415. - 01-JAN-2000 00:00:17 / 9: 2678417. - 01-JAN-2000 00:00:19 / 10: 2678419. - 01-JAN-2000 00:00:21 / 11: 2678421. - 01-JAN-2000 00:00:23 / 12: 2678423. - 01-JAN-2000 00:00:25 / 13: 2678425. - 01-JAN-2000 00:00:27 / 14: 2678427. - 01-JAN-2000 00:00:29 / 15: 2678429. - -! argument can be upper or lowercase -! Should list values 1, 3, 5... -LIST/N=1:15 TAX_TSTEP(bsin, "1-JAN-2000:00:00:00" ) - VARIABLE : TAX_TSTEP(BSIN, "1-JAN-2000:00:00:00" ) - FILENAME : a.nc - SUBSET : 15 points (FORECAST) - 01-JAN-2000 00:00:01 / 1: 1.00000 - 01-JAN-2000 00:00:03 / 2: 3.00000 - 01-JAN-2000 00:00:05 / 3: 5.00000 - 01-JAN-2000 00:00:07 / 4: 7.00000 - 01-JAN-2000 00:00:09 / 5: 9.00000 - 01-JAN-2000 00:00:11 / 6: 11.00000 - 01-JAN-2000 00:00:13 / 7: 13.00000 - 01-JAN-2000 00:00:15 / 8: 15.00000 - 01-JAN-2000 00:00:17 / 9: 17.00000 - 01-JAN-2000 00:00:19 / 10: 19.00000 - 01-JAN-2000 00:00:21 / 11: 21.00000 - 01-JAN-2000 00:00:23 / 12: 23.00000 - 01-JAN-2000 00:00:25 / 13: 25.00000 - 01-JAN-2000 00:00:27 / 14: 27.00000 - 01-JAN-2000 00:00:29 / 15: 29.00000 - -! Test with TAX_DATESTRING - -DEFINE AXIS/F="1-JAN-1902:00:00:00":"1-JAN-1902:00:30:00":5/UNITS=seconds fsec -LIST/N=200:205 _F[GF=fsec] - VARIABLE : _F - axis FSEC - SUBSET : 6 points (FORECAST) - 01-JAN-1902 00:16:35 / 200: 30327395. - 01-JAN-1902 00:16:40 / 201: 30327400. - 01-JAN-1902 00:16:45 / 202: 30327405. - 01-JAN-1902 00:16:50 / 203: 30327410. - 01-JAN-1902 00:16:55 / 204: 30327415. - 01-JAN-1902 00:17:00 / 205: 30327420. - -LET ff = _F[GF=fsec] -LET reset_date = TAX_DATESTRING(`_F[GF=fsec,n=1]`, ff, "sec") - !-> DEFINE VARIABLE reset_date = TAX_DATESTRING(30326400, ff, "sec") -LIST/N=1:15 TAX_TSTEP(ff, "`reset_date`") - !-> LIST/N=1:15 TAX_TSTEP(ff, "01-JAN-1902 00:00:00.0") - VARIABLE : TAX_TSTEP(FF, "01-JAN-1902 00:00:00.0") - SUBSET : 15 points (FORECAST) - 01-JAN-1902 00:00:00 / 1: 0.00000 - 01-JAN-1902 00:00:05 / 2: 5.00000 - 01-JAN-1902 00:00:10 / 3: 10.00000 - 01-JAN-1902 00:00:15 / 4: 15.00000 - 01-JAN-1902 00:00:20 / 5: 20.00000 - 01-JAN-1902 00:00:25 / 6: 25.00000 - 01-JAN-1902 00:00:30 / 7: 30.00000 - 01-JAN-1902 00:00:35 / 8: 35.00000 - 01-JAN-1902 00:00:40 / 9: 40.00000 - 01-JAN-1902 00:00:45 / 10: 45.00000 - 01-JAN-1902 00:00:50 / 11: 50.00000 - 01-JAN-1902 00:00:55 / 12: 55.00000 - 01-JAN-1902 00:01:00 / 13: 60.00000 - 01-JAN-1902 00:01:05 / 14: 65.00000 - 01-JAN-1902 00:01:10 / 15: 70.00000 - -GO bn_reset bn_fmrc -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_fmrc -GO bn_fmrc -! bn_fmrc.jnl -! initial test of DEFINE DATA/F - -! *sh* 11/15 MUCH MORE DETAILED BENCHMARK NEEDED! - -use "run1.nc" -use "run2.nc" -use "run3.nc" -use "run4.nc" - -define data/hide/F/agg fourfiles = 1,2,3,4 - -sh grid sst - GRID (G094) - name axis # pts start end subset - LON1 LONGITUDE 10mr 109W 91W full - LAT LATITUDE 9 r 13N 29N full - normal Z - TF_LAG_T MODEL ELAPSED TIME (12 r 0.5 11.5 full - normal E - RUN FORECAST 4 r 01-JAN-2010 12:00 07-JAN-2010 12:00 full -list/i=1/j=1/L=1:6/n=1:4 sst - VARIABLE : SST_IN (Deg C) - DATA SET : Forecast series of 4 datasets patterned on run1 - FILENAME : fourfiles - SUBSET : 6 by 4 points (MODEL ELAPSED TIME (day)-FORECAST) - LONGITUDE: 109W - LATITUDE : 13N - Verification time increases across row. Initialization time increases down page. - 0.5 1.5 2.5 3.5 4.5 5.5 - 1 2 3 4 5 6 - 01-JAN-2010 12 / 1: 27.3789 27.4378 27.5751 28.1351 28.8653 28.7771 - 03-JAN-2010 12 / 2: 54.7577 54.8756 55.1503 56.2703 57.7306 57.5541 - 05-JAN-2010 12 / 3: 82.1366 82.3133 82.7254 84.4054 86.5959 86.3312 - 07-JAN-2010 12 / 4: 109.5154 109.7511 110.3006 112.5405 115.4613 115.1082 - -show att sst - attributes for dataset: fourfiles - SST.long_name = SST_IN - SST.units = Deg C - SST.missing_value = -1.E+34 - SST.coordinates = RUN TIME33 TF_TIMES TIME33 LAT LON1 - SST._ftime2d = TF_TIMES - SST._cal_t_ax = TF_CAL_T - SST._lag_f_ax = TF_LAG_F - SST._cal_f_ax = TF_CAL_F - SST._lag_t_ax = TF_LAG_T - -! Attribute _ftime2dRef pointe to the 2D time variable -list/L=1:6/n=1:4 `sst._ftime2d` - !-> list/L=1:6/n=1:4 TF_TIMES - VARIABLE : Forecast time step matrix (day since 01-JAN-2010 00:00:00) - DATA SET : Forecast series of 4 datasets patterned on run1 - FILENAME : fourfiles - SUBSET : 6 by 4 points (MODEL ELAPSED TIME (day)-FORECAST) - Verification time increases across row. Initialization time increases down page. - 0.5 1.5 2.5 3.5 4.5 5.5 - 1 2 3 4 5 6 - 01-JAN-2010 12 / 1: 1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 - 02-JAN-2010 12 / 2: 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 - 03-JAN-2010 12 / 3: 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 - 04-JAN-2010 12 / 4: 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000 - - -GO bn_reset bn_return_defined -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_return_defined -GO bn_return_defined -! bn_return_defined.jnl -! 5/3/2015 *acm* -! `return=defined` returns 1 if the user variable is defined -! see ticket 2293 - -let a = b -say `a,r=defined` `b,r=defined` - !-> MESSAGE/CONTINUE 1 0 -1 0 - -! abbreviate to 3 letters -use levitus_climatology -let temp2 = 2*temp -say `temp2,return=def` - !-> MESSAGE/CONTINUE 1 -1 - -! returns false for file variables -say `temp,return=defined` - !-> MESSAGE/CONTINUE 0 -0 - -GO bn_reset bn_can_var_noerr -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_can_var_noerr -GO bn_can_var_noerr -! bn_can_var_noerr.jnl -! CANCEL VARIABLE/NOERROR - - -let a = 1 - -! intentional error -set mode ignore -cancel var b,a -show var - Created by DEFINE VARIABLE: - >>> Definitions that replace any file variable of same name: - A = 1 - -cancel mode ignore - -! specify /noerr and we can issue the command - -cancel var/noerror a,b -show var - Created by DEFINE VARIABLE: - -! no effect on CAN VAR/ALL or CAN VAR template_name - -let a1 = 1 -let a7 = 7 -let c = 12 - -cancel var/noerror name* -show var - Created by DEFINE VARIABLE: - >>> Definitions that replace any file variable of same name: - C = 12 - A7 = 7 - A1 = 1 - -cancel var/noerror a* -show var - Created by DEFINE VARIABLE: - >>> Definitions that replace any file variable of same name: - C = 12 - -cancel var/noerror/all -show var - Created by DEFINE VARIABLE: - -GO bn_reset bn_annotate -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_annotate -GO bn_annotate -! bn_annotate.jnl -! The command ANNOTATE /USER/NORM/NOUSER/XPOS/YPOS/HALIGN/VALIGN/ANGLE/SIZE -! locates user-defined labels on a plot. -! /USER and /NOUSER behave as the LABEL command does -! /NORM locates labels relative to the plot axis, treating them as a unit "square". -! /VALIGN moves the label up or down relative to the direction of the label -! /HALIGN is -1, 1, or 0 as always, or larger values to move the label horizontally -! relative to the direction of the label. Allows us to move, say, one character in -! or out from the axis corner. - -can mode logo - -! ANNOTATE /USER -set v ul -plot/vs/sym=28/hl=-5:5/vl=-10:10 {-1,1},{-1,1} - -annotate/nouser/xpos=`($ppl$xlen)/2`/ypos=($ppl$ylen)/halign=0/valign=-8/siz=.25 "ANNOTATE/USER labels" - !-> annotate/nouser/xpos=2.506/ypos=3.42300/halign=0/valign=-8/siz=.25 "ANNOTATE/USER labels" -annotate/user/xpos=-1/ypos=-1/halign=0/valign=0/angle=-90/siz=0.2 "X" -annotate/user/xpos=0/ypos=0/halign=0/valign=0/angle=0/siz=0.2 "X" -annotate/user/xpos=1/ypos=1/halign=0/valign=0/angle=45/siz=0.2 "X" - -plot/ov/vs/line=1/nolab {-1,1,1,-1,-1},{4,4,6,6,4} -annotate/user/xpos=0/ypos=5/halign=0/valign=0/angle=0/siz=0.2 "BOX" - -plot/ov/vs/line=1/nolab .5*{-1,1,1,-1,-1},{-2,-2,-8,-8,-2} - annotate/user/xpos=0/ypos=-5/halign=0/valign=0/angle=90/siz=0.2 "BOX" - -plot/ov/vs/sym=2/size=2/nolab 3,0 -annotate/user/xpos=3/ypos=0/halign=0/valign=1/angle=45/siz=0.2 "TOP" -annotate/user/xpos=3/ypos=0/halign=0/valign=-1/angle=45/siz=0.2 "BOTTOM" - -plot/ov/vs/sym=2/size=2/nolab -3,0 -annotate/user/xpos=-3/ypos=0/halign=-1/valign=-1/angle=45/siz=0.2 "M" -annotate/user/xpos=-3/ypos=0/halign=-1/valign=1/angle=45/siz=0.2 "M" -annotate/user/xpos=-3/ypos=0/halign=1/valign=-1/angle=45/siz=0.2 "M" -annotate/user/xpos=-3/ypos=0/halign=1/valign=1/angle=45/siz=0.2 "M" -annotate/user/xpos=-3/ypos=0/halign=-3/valign=-3/angle=45/siz=0.2 "M" -annotate/user/xpos=-3/ypos=0/halign=-3/valign=3/angle=45/siz=0.2 "M" -annotate/user/xpos=-3/ypos=0/halign=3/valign=-3/angle=45/siz=0.2 "M" -annotate/user/xpos=-3/ypos=0/halign=3/valign=3/angle=45/siz=0.2 "M" -annotate/user/xpos=-3/ypos=0/halign=-.99/valign=5/angle=45/siz=0.2 "M" -annotate/user/xpos=-3/ypos=0/halign=.99/valign=5/angle=45/siz=0.2 "M" -annotate/user/xpos=-3/ypos=0/halign=-.99/valign=-5/angle=45/siz=0.2 "M" -annotate/user/xpos=-3/ypos=0/halign=.99/valign=-5/angle=45/siz=0.2 "M" - - - -! ANNOTATE/NORM -set v ur -plot/i=1:5/vlim=1:5/hlim=1:5/color=white/nolab i -annotate/nouser/xpos=`($ppl$xlen)/2`/ypos=($ppl$ylen)/halign=0/valign=-8/siz=.25 "ANNOTATE/NORM labels" - !-> annotate/nouser/xpos=2.506/ypos=3.42300/halign=0/valign=-8/siz=.25 "ANNOTATE/NORM labels" - -annotate/norm/xpos=.5/ypos=1.1/halign=0/angle=0/size=0.14 "FLOATING TITLE" -annotate/norm/xpos=.5/ypos=-.2/halign=0/angle=0/size=0.14 "SUBMERGED TITLE" -annotate/norm/xpos=0/ypos=1/halign=-1/angle=0/size=0.14 "LEFT/TOP" -annotate/norm/xpos=.5/ypos=1/halign=0/angle=0/size=0.14 "CTR/TOP" -annotate/norm/xpos=1/ypos=1/halign=1/angle=0/size=0.14 "RIGHT/TOP" -annotate/norm/xpos=1/ypos=.5/halign=0/angle=-90/size=0.14 "RIGHT EDGE" -annotate/norm/xpos=0/ypos=.5/halign=0/angle=90/size=0.14 "LEFT EDGE" -annotate/norm/xpos=.5/ypos=.5/halign=0/valign=0/angle=0/size=0.14 "DEAD CENTER" -annotate/norm/xpos=.5/ypos=0/halign=0/valign=1/angle=0/size=0.14 "HANGING FROM BOTTOM" -annotate/norm/xpos=0/ypos=0/halign=-2/valign=-2/angle=0/siz=0.1 "BOTTOM LEFT INSET" -annotate/norm/xpos=0/ypos=1/halign=-2/valign=2/angle=0/siz=0.1 "TOP LEFT INSET" -annotate/norm/xpos=1/ypos=0/halign=2/valign=-2/angle=0/siz=0.1 "BOTTOM RIGHT INSET" -annotate/norm/xpos=1/ypos=1/halign=2/valign=2/angle=0/siz=0.1 "TOP RIGHT INSET" - -! ANNOTATE/NOUSER -set v ll -plot/i=1:5/vlim=1:5/hlim=1:5/color=white/nolab i - -annotate/nouser/xpos=`($ppl$xlen)/2`/ypos=($ppl$ylen)/halign=0/valign=-8/siz=.25 "ANNOTATE/NOUSER labels" - !-> annotate/nouser/xpos=2.506/ypos=3.42300/halign=0/valign=-8/siz=.25 "ANNOTATE/NOUSER labels" - -! nouser -annotate/nouser/xpos=0/ypos=0/halign=-1/angle=0/size=0.15 "At Origin" -annotate/nouser/xpos=0/ypos=0/halign=-3/valign=-3/angle=0/size=0.15 "With/HALIGN=-3/VALIGN=-3" - -annotate/nouser/xpos=($ppl$xlen)/ypos=($ppl$ylen)/halign=1/valign=-1/angle=0/siz=0.15 "Right-align at upper right corner" - !-> annotate/nouser/xpos=5.01200/ypos=3.42300/halign=1/valign=-1/angle=0/siz=0.15 "Right-align at upper right corner" -annotate/nouser/xpos=($ppl$xlen)/ypos=($ppl$ylen)/halign=4/valign=3/angle=0/siz=0.15 "With/HALIGN=3/VALIGN=4" - !-> annotate/nouser/xpos=5.01200/ypos=3.42300/halign=4/valign=3/angle=0/siz=0.15 "With/HALIGN=3/VALIGN=4" - -plot/vs/line/over/color=lightblue/nolab {3,3},{1,6} -plot/vs/line/over/color=lightblue/nolab {1,5}, {3,3} - -annotate/nouser/xpos=`($ppl$xlen)/2`/ypos=`($ppl$ylen)/2`/halign=0/valign=0/angle=0/siz=0.15 \ -"Arguments locate the firstline of multi-line labels " - !-> annotate/nouser/xpos=2.506/ypos=1.7115/halign=0/valign=0/angle=0/siz=0.15 "Arguments locate the firstline of multi-line labels " - -! angles -set v lr - -plot/i=1:5/vlim=1:5/hlim=1:5/color=white/nolab i -! nouser -annotate/nouser/xpos=`($ppl$xlen)/2`/ypos=($ppl$ylen)/halign=0/valign=-8/siz=.25 "ANNOTATE/NOUSER labelsUse VALIGN=0" - !-> annotate/nouser/xpos=2.506/ypos=3.42300/halign=0/valign=-8/siz=.25 "ANNOTATE/NOUSER labelsUse VALIGN=0" -annotate/nouser/xpos=0/ypos=0/halign=0/valign=0/angle=45/size=0.15 "Center At Origin" -annotate/nouser/xpos=0/ypos=($ppl$ylen)/halign=-1/valign=0/angle=-45/siz=0.15 "left-align" - !-> annotate/nouser/xpos=0/ypos=3.42300/halign=-1/valign=0/angle=-45/siz=0.15 "left-align" -annotate/nouser/xpos=($ppl$xlen)/ypos=0/halign=1/valign=0/angle=-45/siz=0.15 "right-align" - !-> annotate/nouser/xpos=5.01200/ypos=0/halign=1/valign=0/angle=-45/siz=0.15 "right-align" - -! Test defaults -! Default is like PPL user-labels -! /USER/SIZ=0.12/ANGLE=0/HALIGN=0/VALIGN=-1 - -shade/x=1:2/y=1:2/pal=grayscale i+j -annotate/xpos=1.5/ypos=1.8 "Anno Label" -label 1.5,1.6,,,, PPL label - - -! DEFINE ANNOTATION inside a grapchics call with /SET -can view -use gt4d011.cdf -shade/set temp[k=1,l=1] - DEFINE ANNOTATION/user/xpos=224/ypos=-3/halign=0/valign=0/angle=0/siz=.3 "X" -ppl shade - -shade/set/j=40/L=1 temp - DEFINE ANNOTATION/user/xpos=224/ypos=80/halign=0/valign=0/angle=0/siz=.3 "X" -ppl shade - -can data/all - -plot/set/i=1:5 i -! nouser -define annotation/nouser/xpos=0/ypos=0/halign=0/angle=0/size=0.15 "Center At Origin" -define annotation/nouser/xpos=0/ypos=($ppl$ylen)/halign=-1/angle=0/siz=0.15 "left-align at upper left corner" - !-> define annotation/nouser/xpos=0/ypos=6.00000/halign=-1/angle=0/siz=0.15 "left-align at upper left corner" -define annotation/nouser/xpos=($ppl$xlen)/ypos=0/halign=1/angle=0/siz=0.15 "right-align at lower right corner" - !-> define annotation/nouser/xpos=8.00000/ypos=0/halign=1/angle=0/siz=0.15 "right-align at lower right corner" -! user -define annotation/user/xpos=3/ypos=2/halign=0/angle=0/siz=0.15 "user units centered at 3,2" -define annotation/user/xpos=3/ypos=3/halign=-1/angle=0/siz=0.15 "user units left at 3,3" -define annotation/user/xpos=3/ypos=4/halign=1/angle=0/siz=0.15 "user units right at 3,4" -ppl plot - -! angles - -plot/set/i=1:5 i -define annotation/nouser/xpos=0/ypos=0/halign=0/angle=45/size=0.15 "Center At Origin" -define annotation/nouser/xpos=0/ypos=($ppl$ylen)/halign=-1/angle=-45/siz=0.15 "left-align at upper left corner" - !-> define annotation/nouser/xpos=0/ypos=6.00000/halign=-1/angle=-45/siz=0.15 "left-align at upper left corner" -define annotation/nouser/xpos=($ppl$xlen)/ypos=0/halign=1/angle=-45/siz=0.15 "right-align at lower right corner" - !-> define annotation/nouser/xpos=8.00000/ypos=0/halign=1/angle=-45/siz=0.15 "right-align at lower right corner" -! user -define annotation/user/xpos=3/ypos=2/halign=0/angle=45/siz=0.15 "user units centered at 3,2" -define annotation/user/xpos=3/ypos=3/halign=-1/angle=45/siz=0.15 "user units left at 3,3" -define annotation/user/xpos=3/ypos=4/halign=1/angle=45/siz=0.15 "user units right at 3,4" -ppl plot - -! DEFINE ANNO/NORM -plot/i=1:5/nolab/set i -def anno/norm/xp=.5/yp=1.1/hal=0/ang=0/size=.3 "FLOATING TITLE" -def anno/norm/xp=.5/yp=-.2/hal=0/ang=0/size=.3 "SUBMERGED TITLE" -def anno/norm/xp=0/yp=1/hal=-1/ang=0/size=.3 "LEFT/TOP" -def anno/norm/xp=.5/yp=1/hal=0/ang=0/size=.3 "CTR/TOP" -def anno/norm/xp=1/yp=1/hal=1/ang=0/size=.3 "RIGHT/TOP" -def anno/norm/xp=1/yp=.5/hal=0/ang=-90/size=.3 "RIGHT EDGE" -def anno/norm/xp=0/yp=.5/hal=0/ang=90/size=.3 "LEFT EDGE" -def anno/norm/xp=.5/yp=.5/hal=0/val=0/ang=0/size=.3 "DEAD CENTER" -def anno/norm/xp=.5/yp=0/hal=0/val=1/ang=0/size=.3 "HANGING FROM BOTTOM" -def anno/norm/xp=0/yp=0/hal=-2/val=-2/ang=0/size=.2 "BOTTOM LEFT INSET" -def anno/norm/xp=0/yp=1/hal=-2/val=2/ang=0/size=.2 "TOP LEFT INSET" -def anno/norm/xp=1/yp=0/hal=2/val=-2/ang=0/size=.2 "BOTTOM RIGHT INSET" -def anno/norm/xp=1/yp=1/hal=2/val=2/ang=0/size=.2 "TOP RIGHT INSET" -ppl plot - -plot/set/vs/sym=28/hl=-5:5/vl=-10:10 {-1,1},{-1,1} - -define annotation/user/xpos=-1/ypos=-1/halign=0/valign=0/angle=-90/siz=.5 "X" -define annotation/user/xpos=0/ypos=0/halign=0/valign=0/angle=0/siz=.5 "X" -define annotation/user/xpos=1/ypos=1/halign=0/valign=0/angle=45/siz=.5 "X" -define annotation/user/xpos=0/ypos=5/halign=0/valign=0/angle=0/siz=.5 "BOX" -define annotation/user/xpos=0/ypos=-5/halign=0/valign=0/angle=90/siz=.5 "BOX" -define annotation/user/xpos=3/ypos=0/halign=0/valign=1/angle=45/siz=.5 "TOP" -define annotation/user/xpos=3/ypos=0/halign=0/valign=-1/angle=45/siz=.5 "BOTTOM" -define annotation/user/xpos=-3/ypos=0/halign=-1/valign=-1/angle=45/siz=.5 "M" -define annotation/user/xpos=-3/ypos=0/halign=-1/valign=1/angle=45/siz=.5 "M" -define annotation/user/xpos=-3/ypos=0/halign=1/valign=-1/angle=45/siz=.5 "M" -define annotation/user/xpos=-3/ypos=0/halign=1/valign=1/angle=45/siz=.5 "M" -define annotation/user/xpos=-3/ypos=0/halign=-3/valign=-3/angle=45/siz=.5 "M" -define annotation/user/xpos=-3/ypos=0/halign=-3/valign=3/angle=45/siz=.5 "M" -define annotation/user/xpos=-3/ypos=0/halign=3/valign=-3/angle=45/siz=.5 "M" -define annotation/user/xpos=-3/ypos=0/halign=3/valign=3/angle=45/siz=.5 "M" -define annotation/user/xpos=-3/ypos=0/halign=-.99/valign=5/angle=45/siz=.5 "M" -define annotation/user/xpos=-3/ypos=0/halign=.99/valign=5/angle=45/siz=.5 "M" -define annotation/user/xpos=-3/ypos=0/halign=-.99/valign=-5/angle=45/siz=.5 "M" -define annotation/user/xpos=-3/ypos=0/halign=.99/valign=-5/angle=45/siz=.5 "M" -ppl list labels - - @AS{-1,1} - @AS{-1,1} - - XPOS YPOS HGT ROT UNITS - LAB 1 0.000E+00 6.600E+00 0.120 0 SYSTEM @ASX : 0.5 to 2.5 - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - LAB 2 -1.313E+00 -1.000E+00 0.500 -90 USER X - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB 3 0.000E+00 -8.333E-01 0.500 0 USER X - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB 4 1.221E+00 4.107E-01 0.500 45 USER X - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB 5 0.000E+00 4.167E+00 0.500 0 USER BOX - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB 6 3.125E-01 -5.000E+00 0.500 90 USER BOX - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB 7 3.442E+00 -1.179E+00 0.500 45 USER TOP - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB 8 3.000E+00 0.000E+00 0.500 45 USER BOTTOM - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB 9 -3.000E+00 0.000E+00 0.500 45 USER M - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - LAB10 -2.558E+00 -1.179E+00 0.500 45 USER M - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - LAB11 -3.000E+00 0.000E+00 0.500 45 USER M - LINE PT: 0.000E+00 0.000E+00 NO LINE RIGHT JUSTIFY LABEL - LAB12 -2.558E+00 -1.179E+00 0.500 45 USER M - LINE PT: 0.000E+00 0.000E+00 NO LINE RIGHT JUSTIFY LABEL - LAB13 -3.000E+00 2.357E+00 0.500 45 USER M - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - LAB14 -1.674E+00 -1.179E+00 0.500 45 USER M - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - LAB15 -3.884E+00 5.515E-08 0.500 45 USER M - LINE PT: 0.000E+00 0.000E+00 NO LINE RIGHT JUSTIFY LABEL - LAB16 -2.558E+00 -3.536E+00 0.500 45 USER M - LINE PT: 0.000E+00 0.000E+00 NO LINE RIGHT JUSTIFY LABEL - LAB17 -1.455E+00 -2.952E+00 0.500 45 USER M - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB18 -1.893E+00 -4.119E+00 0.500 45 USER M - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB19 -3.665E+00 2.940E+00 0.500 45 USER M - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB20 -4.103E+00 1.774E+00 0.500 45 USER M - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL -ppl plot -plot/ov/vs/line=1/nolab {-1,1,1,-1,-1},{4,4,6,6,4} -plot/ov/vs/line=1/nolab .5*{-1,1,1,-1,-1},{-2,-2,-8,-8,-2} -plot/ov/vs/sym=2/size=2/nolab 3,0 -plot/ov/vs/sym=2/size=2/nolab -3,0 - -! intentional errors -set mode ignore -can v -shade/i=1:2/j=1:2/nokey i+j - - -! errors in arguments -annotate/nouser/xpos=a2/ypos=0/halign=1/valign=0/angle=-45/siz=0.15 "My Lab" -annotate/nouser/xpos=0/ypos=b/halign=1/valign=0/angle=-45/siz=0.15 "My Lab" -annotate/nouser/xpos=0/ypos=0/halign=c/valign=0/angle=-45/siz=0.15 "My Lab" -annotate/nouser/xpos=0/ypos=0/halign=1/valign=d/angle=ee/siz=0.15 "My Lab" -annotate/nouser/xpos=0/ypos=0/halign=1/valign=0/angle=-45/siz=f "My Lab" - -! missing a location -annotate/nouser/ypos=0 "My Lab" -annotate/nouser/xpos=0/halign=1/valign=0/angle=-45/siz=0.15 "My Lab" - -! /USER and /NOUSER -annotate/nouser/user/ypos=0/halign=1/valign=0/angle=-45/siz=0.15 "My Lab" - -! define annotation - -shad/set/i=1:2/j=1:2 i+j; def anno/nou/xpos=a2/ypos=0/hal=1/val=0/ang=-45/siz=0.15 "My Lab"; ppl plot -shad/set/i=1:2/j=1:2 i+j; def anno/nou/xpos=0,3/ypos=b/hal=1/val=0/ang=-45/siz=0.15 "My Lab"; ppl plot -shad/set/i=1:2/j=1:2 i+j; def anno/nou/xpos=0/ypos=0/hal=c/val=0/ang=-45/siz=0.15 "My Lab"; ppl plot -shad/set/i=1:2/j=1:2 i+j; def anno/nou/xpos=0/ypos=0/hal=1/val=d/ang=ee/siz=0.15 "My Lab"; ppl plot -shad/set/i=1:2/j=1:2 i+j; def anno/nou/xpos=0/ypos=0/hal=1/val=0/ang=-45/siz=f "My Lab"; ppl plot -shad/set/i=1:2/j=1:2 i+j; def anno/nou/xpos=0/ypos=0/hal=1/val=0/ang=-45/siz=0.15 "My Lab"; ppl plot - -shad/set/i=1:2/j=1:2 i+j; def anno/nou/ypos=0 "My Lab"; ppl plot -shad/set/i=1:2/j=1:2 i+j; def anno/nou/xpos=0/hal=1/val=0 "My Lab"; ppl plot -shad/set/i=1:2/j=1:2 i+j; def anno/nou/user/xpos=0/ypos=0 "My Lab"; ppl plot - -GO bn_reset bn_auxiliary -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_auxiliary -GO bn_auxiliary -! bn_auxiliary.jnl: exercise auxiliary coordinate regridding - -! notes about the 6/2015 version: -! -- tests 1D regridding, only, as of 6/2015 -! -- includestests the deprecated "LAYERZ" and "__LayerzRef_" automation syntax -! ... to be replaced by a different automation syntax in the future - -! *sh* 6/2015 - -! initialize the test environment -USE levitus_3d_subset -SPAWN rm layerz_test_data.txt -LET Zpts = Z[Z=100:500:100] -DEFINE AXIS/z/units=meters zax = zpts - -! conjure a 4D auxiliary variable that contains the same values -! as the native Z coordinates -! regridding using this auxiliary variable should give the same results as -! conventional regridding -- usefuly to validate the results -LET/D=levitus_3d_subset depth = z[g=temp]+ 0*temp[k=1] - -!************ -! exercise the syntax of setting layerz associations -! do same tests on EZ, uvar, and netCDF variable - -! EZ file variable -LIST/NOHEAD/FILE=layerz_test_data.txt 1 -FILE/VAR=v layerz_test_data.txt -! set the layerz link to point to a variable named "depth" -SET VAR/layerz=depth v -SHOW VAR/LAYERZ v - DEPTH holds the designated vertical (layerz) coordinates of v -SHOW ATT v -! modify the layerz link -SET VAR/layerz=newdepth v -SHOW VAR/LAYERZ v - NEWDEPTH holds the designated vertical (layerz) coordinates of v -SHOW ATT v - attributes for dataset: ./layerz_test_data.txt - v.long_name = v - v.missing_value = -1.E+34 - v.__LayerzRef_ = NEWDEPTH -cancel var/layerz v -SHOW VAR/LAYERZ v - No variable holds vertical (layerz) coordinates of v -SHOW ATT v - attributes for dataset: ./layerz_test_data.txt - v.long_name = v - v.missing_value = -1.E+34 -CANCEL DATA layerz_test_data.txt - -! user variable -! set the layerz link -LET a = temp -SET VAR/layerz=depth a -SHOW VAR/LAYERZ a - DEPTH holds the designated vertical (layerz) coordinates of a -SHOW ATT a - attributes for user-defined variables - a.long_name = TEMP - a.missing_value = -1.E+34 - a.__LayerzRef_ = DEPTH -! modify the layerz link -SET VAR/layerz=newdepth a -SHOW VAR/LAYERZ a - NEWDEPTH holds the designated vertical (layerz) coordinates of a -SHOW ATT a - attributes for user-defined variables - a.long_name = TEMP - a.missing_value = -1.E+34 - a.__LayerzRef_ = NEWDEPTH -cancel var/layerz a -SHOW VAR/LAYERZ a - No variable holds vertical (layerz) coordinates of a -SHOW ATT a - attributes for user-defined variables - a.long_name = TEMP - a.missing_value = -1.E+34 - -! netCDF file variable -! set the layerz link -SET VAR/layerz=depth temp[d=levitus_3d_subset] -SHOW VAR/LAYERZ/d=levitus_3d_subset temp - DEPTH holds the designated vertical (layerz) coordinates of TEMP -SHOW ATT temp.__LayerzRef_[d=levitus_3d_subset] - attributes for dataset: ./data/levitus_3d_subset.nc - TEMP.__LayerzRef_ = DEPTH -! modify the layerz link -SET VAR/layerz=newdepth temp[d=levitus_3d_subset] -SHOW VAR/LAYERZ/d=levitus_3d_subset temp - NEWDEPTH holds the designated vertical (layerz) coordinates of TEMP -SHOW ATT temp.__LayerzRef_[d=levitus_3d_subset] - attributes for dataset: ./data/levitus_3d_subset.nc - TEMP.__LayerzRef_ = NEWDEPTH -cancel var/layerz temp[d=levitus_3d_subset] -SHOW VAR/LAYERZ/d=levitus_3d_subset temp - No variable holds vertical (layerz) coordinates of TEMP -SHOW ATT temp[d=levitus_3d_subset] ! __LayerzRef_ has been deleted - attributes for dataset: ./data/levitus_3d_subset.nc - TEMP.missing_value = -1.E+10 - TEMP._FillValue = -1.E+10 - TEMP.long_name = TEMPERATURE - TEMP.history = From /home/users/tmap/ferret/linux/fer_dsets/data/levitus_climatology.cdf - TEMP.units = DEG C - -! deliberate error -SET MODE ignore; SET VAR/layerz=depth noexist; SET MODE/last ignore - -!************ -! exercise the layerz calculations in various situations -! compare the manually specified syntax with the automated results - -! make "depth" the layerz coordinate variable for "temp" -SET VAR/layerz=depth temp[d=levitus_3d_subset] - -! values of the unadulterated variable -list/PREC=7 temp[z=0:500] - VARIABLE : TEMPERATURE (DEG C) - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 11 points (LONGITUDE-LATITUDE-DEPTH (m)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 0 - 48.5S / 2: 7.725000 7.917999 - 49.5S / 1: 6.827000 7.007000 - ---- K:2 Z: 10 - 48.5S / 2: 7.726000 7.917999 - 49.5S / 1: 6.843000 7.021999 - ---- K:3 Z: 20 - 48.5S / 2: 7.715000 7.907000 - 49.5S / 1: 6.840000 7.018999 - ---- K:4 Z: 30 - 48.5S / 2: 7.594000 7.789000 - 49.5S / 1: 6.740999 6.923000 - ---- K:5 Z: 50 - 48.5S / 2: 7.410999 7.584000 - 49.5S / 1: 6.624001 6.785000 - ---- K:6 Z: 75 - 48.5S / 2: 7.572001 7.666000 - 49.5S / 1: 6.750999 6.848000 - ---- K:7 Z: 100 - 48.5S / 2: 7.334999 7.436001 - 49.5S / 1: 6.462000 6.572001 - ---- K:8 Z: 150 - 48.5S / 2: 7.372000 7.464001 - 49.5S / 1: 6.466000 6.573999 - ---- K:9 Z: 200 - 48.5S / 2: 6.961000 7.073000 - 49.5S / 1: 6.025999 6.150000 - ---- K:10 Z: 300 - 48.5S / 2: 6.457001 6.636999 - 49.5S / 1: 5.445000 5.665000 - ---- K:11 Z: 400 - 48.5S / 2: 6.181999 6.377001 - 49.5S / 1: 5.187000 5.410000 -SHOW GRID - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid GAO1 - GRID GAO1 - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - ZAXLEVITR DEPTH (m) 20 i- 0 5000 11 pts - normal T - -! use aux var regridding. Target coordinate points match the source points -! identically at 0, 100, 200, ... 500 -! values should match the unadulterated variable at these points -! this command will be issued in diagnostic mode to highlight that the -! K range over which temp is read is the minimum needed to compute the result -SET MODE diagnostic -LET tempz = temp[gz(depth)=zpts] -LIST/PREC=7 tempz - dealloc dynamic grid GAO1 XAXLEVITR1YAXLEVITR4ZAXLEVITR NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid TEMPZ C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid DEPTH C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GAO1 XAXLEVITR1YAXLEVITR4ZAXLEVITR NORMAL - getgrid ZPTS C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G086) NORMAL NORMAL (AX125) NORMAL - dealloc dynamic grid (G086) NORMAL NORMAL (AX125) NORMAL - allocate dynamic grid (G086) NORMAL NORMAL (AX125) NORMAL - allocate dynamic grid (G092) XAXLEVITR1YAXLEVITR4(AX125) NORMAL - dealloc dynamic grid (G092) XAXLEVITR1YAXLEVITR4(AX125) NORMAL - allocate dynamic grid (G092) XAXLEVITR1YAXLEVITR4(AX125) NORMAL - allocate dynamic grid (G092) XAXLEVITR1YAXLEVITR4(AX125) NORMAL - eval EX#1 C: 4 dset: 1 I: 1 2 J: 1 2 K: 1 5 L: -999 -999 - eval TEMPZ C: 6 dset: 1 I: 1 2 J: 1 2 K: 1 5 L: -999 -999 - allocate dynamic grid (G092) XAXLEVITR1YAXLEVITR4(AX125) NORMAL - strip regrid on Z: TEMP --> (G092) @LIN - eval DEPTH C: 9 dset: 1 I: 1 2 J: 1 2 K: 1 20 L: -999 -999 - pseudo Z M:225 dset: 1 I: -999 -999 J: -999 -999 K: 1 20 L: -999 -999 - constan cnst M:221 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - found TEMP M:230 dset: 1 I: 1 2 J: 1 2 K: 1 11 L: -999 -999 - -DELETE cnst M:221 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE tpry M:209 dset: 0 I: 1 2 J: 1 2 K: 1 1 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE Z M:225 dset: 1 I: -999 -999 J: -999 -999 K: 1 20 L: -999 -999 - reading TEMP M:225 dset: 1 I: 1 2 J: 1 2 K: 7 12 L: -999 -999 - auxgrd TEMP M:209 dset: 1 I: 1 2 J: 1 2 K: 1 5 L: -999 -999 - dealloc dynamic grid (G092) XAXLEVITR1YAXLEVITR4(AX125) NORMAL - VARIABLE : TEMP[GZ(DEPTH)=ZPTS] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 points (LONGITUDE-LATITUDE-Z) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 100 - 48.5S / 2: 7.334999 7.436001 - 49.5S / 1: 6.462000 6.572001 - ---- K:2 Z: 200 - 48.5S / 2: 6.961000 7.073000 - 49.5S / 1: 6.025999 6.150000 - ---- K:3 Z: 300 - 48.5S / 2: 6.457001 6.636999 - 49.5S / 1: 5.445000 5.665000 - ---- K:4 Z: 400 - 48.5S / 2: 6.181999 6.377001 - 49.5S / 1: 5.187000 5.410000 - ---- K:5 Z: 500 - 48.5S / 2: 5.835500 6.045001 - 49.5S / 1: 4.879000 5.102500 -SHOW GRID tempz - dealloc dynamic grid (G092) XAXLEVITR1YAXLEVITR4(AX125) NORMAL - getgrid EX#1 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G092) XAXLEVITR1YAXLEVITR4(AX125) NORMAL - GRID (G092) - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - (AX125) Z 5 r 100 500 full - normal T -!LET tempz = temp[gz=zpts,layerz] ! same regrid using semi-automated notation -!LIST/PREC=7 tempz -!SHOW GRID tempz -SET MODE/last diagnostic - -! list a little with no imtermediate variable, so Z labeling is visible -LIST/PREC=7 temp[gz(depth)=zpts,k=1] - VARIABLE : TEMPERATURE (DEG C) - regrid: 100 delta on Z@LIN using DEPTH field - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z : 100 - 120.5E 121.5E - 1 2 - 48.5S / 2: 7.334999 7.436001 - 49.5S / 1: 6.462000 6.572001 -!LIST/PREC=7 temp[gz=zpts,k=1,layerz] ! same using semi-automated notation - -! same calculation, but with a named Z axis -LET tempzax = temp[gz(depth)=zax] -LIST tempzax - VARIABLE : TEMP[GZ(DEPTH)=ZAX] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 points (LONGITUDE-LATITUDE-Z (METERS)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 100 - 48.5S / 2: 7.334999 7.436001 - 49.5S / 1: 6.462000 6.572001 - ---- K:2 Z: 200 - 48.5S / 2: 6.961000 7.073000 - 49.5S / 1: 6.025999 6.150000 - ---- K:3 Z: 300 - 48.5S / 2: 6.457001 6.636999 - 49.5S / 1: 5.445000 5.665000 - ---- K:4 Z: 400 - 48.5S / 2: 6.181999 6.377001 - 49.5S / 1: 5.187000 5.410000 - ---- K:5 Z: 500 - 48.5S / 2: 5.835500 6.045001 - 49.5S / 1: 4.879000 5.102500 -SHOW GRID tempzax - GRID (G085) - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - ZAX Z (METERS) 5 r 100 500 full - normal T -!LET tempzax = temp[gz=zax,layerz] ! same regrid using semi-automated notation -!LIST tempzax -!SHOW GRID tempzax - -! regrid to a different set of Z points -LET tempz_alt = temp[gz(depth)=2:10:2] -LIST/PREC=7 tempz_alt - VARIABLE : TEMP[GZ(DEPTH)=2:10:2] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 points (LONGITUDE-LATITUDE-Z) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 2 - 48.5S / 2: 7.725200 7.917999 - 49.5S / 1: 6.830200 7.010000 - ---- K:2 Z: 4 - 48.5S / 2: 7.725400 7.917999 - 49.5S / 1: 6.833400 7.013000 - ---- K:3 Z: 6 - 48.5S / 2: 7.725600 7.917999 - 49.5S / 1: 6.836600 7.016000 - ---- K:4 Z: 8 - 48.5S / 2: 7.725800 7.917999 - 49.5S / 1: 6.839800 7.018999 - ---- K:5 Z: 10 - 48.5S / 2: 7.726000 7.917999 - 49.5S / 1: 6.843000 7.021999 -SHOW GRID tempz_alt - GRID (G101) - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - (AX119) Z 5 r 2 10 5 pts - normal T - -!! do same regrid using the shorhand semi-automated notation -!LIST/PREC=7 temp[z=2:10:2,layerz] ! lo:hi:delta notation -!SHOW GRID - -! test the shorthand notation var[gz(depth)=100] as an implicit aux var -! regrid via linear interpolation -! the value should match the preceding output at Z=6 -LET tempz_1pt = temp[gz(depth)=6] -LIST/PREC=7 tempz_1pt - VARIABLE : TEMP[GZ(DEPTH)=6] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z : 6 - 120.5E 121.5E - 1 2 - 48.5S / 2: 7.725600 7.917999 - 49.5S / 1: 6.836600 7.016000 -SHOW GRID/z tempz_1pt - GRID (G094) - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - (AX133) Z 1 r 6 6 1 pt - normal T - - K Z ZBOX ZBOXLO - 1> 6 0.00006 5.99997 - -! do same regrid using the shorhand semi-automated notation -LIST/PREC=7 temp[z=6,layerz] ! =1pt notation WILL BE CHANGED! - VARIABLE : TEMPERATURE (DEG C) - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 6 (interpolated using DEPTH) - 120.5E 121.5E - 1 2 - 48.5S / 2: 7.725600 7.917999 - 49.5S / 1: 6.836600 7.016000 -SHOW GRID - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid GAO1 - GRID GAO1 - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - ZAXLEVITR DEPTH (m) 20 i- 0 5000 1 pt - normal T - -! auxiliary points in reverse order -! to get results that we can check for correctness, we will reverse the Z-order -! of the temperature field as well as the depth field. -LET rvtemp0 = ZREVERSE(temp) -LET rvtemp = rvtemp0[gz=temp@asn] -LET rvdepth0 = ZREVERSE(depth) -LET/D=levitus_3d_subset rvdepth = rvdepth0[gz=temp@asn] -! **** NOTE: THERE'S A SUBTLE MISBEHAVIOR IN AUX REGRID SHOWN IN THIS COMMENTED -! OUT LINE BUT WILL RARELY OCCUR AND EASILY WORKED AROUND -!LET rvtempzax = rvtemp[gz(rvdepth)=zax] ! zlims aren't filled in if not given -LET rvtempzax = rvtemp[gz(rvdepth)=zax,z=100:500] -LIST/PREC=7 rvtempzax - tempz - VARIABLE : RVTEMPZAX - TEMPZ - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 points (LONGITUDE-LATITUDE-Z) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 100 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 - ---- K:2 Z: 200 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 - ---- K:3 Z: 300 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 - ---- K:4 Z: 400 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 - ---- K:5 Z: 500 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 -SHOW GRID rvtempzax - GRID (G085) - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - ZAX Z (METERS) 5 r 100 500 (axis from grid-changing func) - normal T - -! deliberate execution errors: -LET disordered_depth1 = IF K EQ 3 THEN DEPTH[K=1] ELSE DEPTH -LET disordered_tempz1 = temp[gz(disordered_depth1)=zax] -LET disordered_depth2 = IF K EQ 3 THEN DEPTH[K=5] ELSE DEPTH -LET disordered_tempz2 = temp[gz(disordered_depth2)=zax] -SET MODE ignore -LIST disordered_tempz1 - VARIABLE : TEMP[GZ(DISORDERED_DEPTH1)=ZAX] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 points (LONGITUDE-LATITUDE-Z (METERS)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 100 - 48.5S / 2: 7.334999 7.436001 - 49.5S / 1: 6.462000 6.572001 - ---- K:2 Z: 200 - 48.5S / 2: 6.961000 7.073000 - 49.5S / 1: 6.025999 6.150000 - ---- K:3 Z: 300 - 48.5S / 2: 6.457001 6.636999 - 49.5S / 1: 5.445000 5.665000 - ---- K:4 Z: 400 - 48.5S / 2: 6.181999 6.377001 - 49.5S / 1: 5.187000 5.410000 - ---- K:5 Z: 500 - 48.5S / 2: 5.835500 6.045001 - 49.5S / 1: 4.879000 5.102500 -LIST disordered_tempz2 - VARIABLE : TEMP[GZ(DISORDERED_DEPTH2)=ZAX] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 points (LONGITUDE-LATITUDE-Z (METERS)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 100 - 48.5S / 2: 7.334999 7.436001 - 49.5S / 1: 6.462000 6.572001 - ---- K:2 Z: 200 - 48.5S / 2: 6.961000 7.073000 - 49.5S / 1: 6.025999 6.150000 - ---- K:3 Z: 300 - 48.5S / 2: 6.457001 6.636999 - 49.5S / 1: 5.445000 5.665000 - ---- K:4 Z: 400 - 48.5S / 2: 6.181999 6.377001 - 49.5S / 1: 5.187000 5.410000 - ---- K:5 Z: 500 - 48.5S / 2: 5.835500 6.045001 - 49.5S / 1: 4.879000 5.102500 -SET MODE/last ignore - -! test VTREE with a complex auxiliary variable definitions -VTREE - in default dataset levitus_3d_subset - RVTEMPZAX = RVTEMP[GZ(RVDEPTH)=ZAX,Z=100:500] - RVTEMP = RVTEMP0[GZ=TEMP@ASN] - RVDEPTH = RVDEPTH0[GZ=TEMP@ASN] - RVDEPTH0 = ZREVERSE(DEPTH) - DEPTH = Z[G=TEMP]+ 0*TEMP[K=1] - DISORDERED_TEMPZ2 = TEMP[GZ(DISORDERED_DEPTH2)=ZAX] - DISORDERED_DEPTH2 = IF K EQ 3 THEN DEPTH[K=5] ELSE DEPTH - DEPTH = Z[G=TEMP]+ 0*TEMP[K=1] - DISORDERED_TEMPZ1 = TEMP[GZ(DISORDERED_DEPTH1)=ZAX] - DISORDERED_DEPTH1 = IF K EQ 3 THEN DEPTH[K=1] ELSE DEPTH - DEPTH = Z[G=TEMP]+ 0*TEMP[K=1] - TEMPZ = TEMP[GZ(DEPTH)=ZPTS] - regrid to ZPTS = Z[Z=100:500:100] - DEPTH = Z[G=TEMP]+ 0*TEMP[K=1] - TEMPZAX = TEMP[GZ(DEPTH)=ZAX] - DEPTH = Z[G=TEMP]+ 0*TEMP[K=1] - TEMPZ_1PT = TEMP[GZ(DEPTH)=6] - TEMPZ_ALT = TEMP[GZ(DEPTH)=2:10:2] - A = TEMP - -! 6-dimensional regridding - -! 6d temperature and 3d depth field (depth unchanging in time, ensemble and forecast) -LET temp6d = temp/100 + 1*L[L=1:2] + 10*_M[M=1:2] + 100*_N[N=1:2] -!list/k=7:12/PREC=7 temp6d -LET tempz6d = temp6d[gz(depth)=zpts] -!LIST/PREC=7 tempz6d -! compare pre- and post- regrid at a fixed depth -stat/z=100 temp6d-tempz6d - - TEMP6D-TEMPZ6D - LONGITUDE: 120E to 122E - LATITUDE: 50S to 48S - DEPTH (m): 100 - T: 0.5 to 2.5 - E: 0.5 to 2.5 - F: 0.5 to 2.5 - DATA SET: ./data/levitus_3d_subset.nc - - Total # of data points: 32 (2*2*1*2*2*2) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 -stat/z=400 temp6d-tempz6d - - TEMP6D-TEMPZ6D - LONGITUDE: 120E to 122E - LATITUDE: 50S to 48S - DEPTH (m): 400 - T: 0.5 to 2.5 - E: 0.5 to 2.5 - F: 0.5 to 2.5 - DATA SET: ./data/levitus_3d_subset.nc - - Total # of data points: 32 (2*2*1*2*2*2) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - -! 6d temperature and 6d depth field -! hold temperature constant over time, have depths change -! note that for N=2 depths of less than 100 are no longer in the data hence missing values at Z=100 -LET temp6d_const = temp + 0*L[L=1:2] + 0*_M[M=1:2] + 0*_N[N=1:2] ! constant in T,E,F -LET depth6d = depth + 10*(L[L=1:2]-1) + 50*(_M[M=1:2]-1) + 100*(_N[N=1:2]-1) -LET tempz6d_tDep = temp6d_const[gz(depth6d)=zpts] -LIST/PREC=7 tempz6d_tDep - VARIABLE : TEMP6D_CONST[GZ(DEPTH6D)=ZPTS] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 by 2 by 2 by 2 points (LONGITUDE-LATITUDE-Z-T-E-F) - 120.5E 121.5E - 1 2 - ---- N:1 F: 1 - ---- M:1 E: 1 - ---- L:1 T: 1 - ---- K:1 Z: 100 - 48.5S / 2: 7.334999 7.436001 - 49.5S / 1: 6.462000 6.572001 - ---- K:2 Z: 200 - 48.5S / 2: 6.961000 7.073000 - 49.5S / 1: 6.025999 6.150000 - ---- K:3 Z: 300 - 48.5S / 2: 6.457001 6.636999 - 49.5S / 1: 5.445000 5.665000 - ---- K:4 Z: 400 - 48.5S / 2: 6.181999 6.377001 - 49.5S / 1: 5.187000 5.410000 - ---- K:5 Z: 500 - 48.5S / 2: 5.835500 6.045001 - 49.5S / 1: 4.879000 5.102500 - ---- L:2 T: 2 - ---- K:1 Z: 100 - 48.5S / 2: 7.429800 7.528001 - 49.5S / 1: 6.577600 6.682400 - ---- K:2 Z: 200 - 48.5S / 2: 7.043200 7.151200 - 49.5S / 1: 6.113999 6.234800 - ---- K:3 Z: 300 - 48.5S / 2: 6.507401 6.680599 - 49.5S / 1: 5.503100 5.713500 - ---- K:4 Z: 400 - 48.5S / 2: 6.209499 6.403001 - 49.5S / 1: 5.212800 5.435500 - ---- K:5 Z: 500 - 48.5S / 2: 5.870150 6.078201 - 49.5S / 1: 4.909800 5.133250 - ---- M:2 E: 2 - ---- L:1 T: 1 - ---- K:1 Z: 100 - 48.5S / 2: 7.410999 7.584000 - 49.5S / 1: 6.624001 6.785000 - ---- K:2 Z: 200 - 48.5S / 2: 7.372000 7.464001 - 49.5S / 1: 6.466000 6.573999 - ---- K:3 Z: 300 - 48.5S / 2: 6.709001 6.855000 - 49.5S / 1: 5.735499 5.907500 - ---- K:4 Z: 400 - 48.5S / 2: 6.319500 6.507000 - 49.5S / 1: 5.316000 5.537500 - ---- K:5 Z: 500 - 48.5S / 2: 6.008749 6.211001 - 49.5S / 1: 5.033000 5.256250 - ---- L:2 T: 2 - ---- K:1 Z: 100 - 48.5S / 2: 7.502500 7.686500 - 49.5S / 1: 6.682500 6.854000 - ---- K:2 Z: 200 - 48.5S / 2: 7.364600 7.458401 - 49.5S / 1: 6.465200 6.573600 - ---- K:3 Z: 300 - 48.5S / 2: 6.759401 6.898600 - 49.5S / 1: 5.793599 5.956000 - ---- K:4 Z: 400 - 48.5S / 2: 6.347000 6.533000 - 49.5S / 1: 5.341800 5.563000 - ---- K:5 Z: 500 - 48.5S / 2: 6.043399 6.244201 - 49.5S / 1: 5.063800 5.287000 - ---- N:2 F: 2 - ---- M:1 E: 1 - ---- L:1 T: 1 - ---- K:1 Z: 100 - 48.5S / 2: 7.725000 7.917999 - 49.5S / 1: 6.827000 7.007000 - ---- K:2 Z: 200 - 48.5S / 2: 7.334999 7.436001 - 49.5S / 1: 6.462000 6.572001 - ---- K:3 Z: 300 - 48.5S / 2: 6.961000 7.073000 - 49.5S / 1: 6.025999 6.150000 - ---- K:4 Z: 400 - 48.5S / 2: 6.457001 6.636999 - 49.5S / 1: 5.445000 5.665000 - ---- K:5 Z: 500 - 48.5S / 2: 6.181999 6.377001 - 49.5S / 1: 5.187000 5.410000 - ---- L:2 T: 2 - ---- K:1 Z: 100 - 48.5S / 2: .... .... - 49.5S / 1: .... .... - ---- K:2 Z: 200 - 48.5S / 2: 7.429800 7.528001 - 49.5S / 1: 6.577600 6.682400 - ---- K:3 Z: 300 - 48.5S / 2: 7.043200 7.151200 - 49.5S / 1: 6.113999 6.234800 - ---- K:4 Z: 400 - 48.5S / 2: 6.507401 6.680599 - 49.5S / 1: 5.503100 5.713500 - ---- K:5 Z: 500 - 48.5S / 2: 6.209499 6.403001 - 49.5S / 1: 5.212800 5.435500 - ---- M:2 E: 2 - ---- L:1 T: 1 - ---- K:1 Z: 100 - 48.5S / 2: .... .... - 49.5S / 1: .... .... - ---- K:2 Z: 200 - 48.5S / 2: 7.410999 7.584000 - 49.5S / 1: 6.624001 6.785000 - ---- K:3 Z: 300 - 48.5S / 2: 7.372000 7.464001 - 49.5S / 1: 6.466000 6.573999 - ---- K:4 Z: 400 - 48.5S / 2: 6.709001 6.855000 - 49.5S / 1: 5.735499 5.907500 - ---- K:5 Z: 500 - 48.5S / 2: 6.319500 6.507000 - 49.5S / 1: 5.316000 5.537500 - ---- L:2 T: 2 - ---- K:1 Z: 100 - 48.5S / 2: .... .... - 49.5S / 1: .... .... - ---- K:2 Z: 200 - 48.5S / 2: 7.502500 7.686500 - 49.5S / 1: 6.682500 6.854000 - ---- K:3 Z: 300 - 48.5S / 2: 7.364600 7.458401 - 49.5S / 1: 6.465200 6.573600 - ---- K:4 Z: 400 - 48.5S / 2: 6.759401 6.898600 - 49.5S / 1: 5.793599 5.956000 - ---- K:5 Z: 500 - 48.5S / 2: 6.347000 6.533000 - 49.5S / 1: 5.341800 5.563000 -LIST/PREC=7/k=7:8 temp6d_const, depth6d ! reference values at Z=100, 200, 300 for visual comparison - DATA SET: ./data/levitus_3d_subset.nc - LONGITUDE: 120E to 122E - LATITUDE: 50S to 48S - DEPTH (m): 87.5 to 175 - T: 0.5 to 2.5 - E: 0.5 to 2.5 - F: 0.5 to 2.5 - Column 1: TEMP6D_CONST is TEMP + 0*L[L=1:2] + 0*_M[M=1:2] + 0*_N[N=1:2] - Column 2: DEPTH6D is DEPTH + 10*(L[L=1:2]-1) + 50*(_M[M=1:2]-1) + 100*(_N[N=1:2]-1) - TEMP6D_CONS DEPTH6D - ---- N:1 F: 1 - ---- M:1 E: 1 - ---- L:1 T: 1 - ---- K:7 Z: 100 - ---- J:1 Y: 49.5S -120.5E / 1: 6.462000 100.0000 -121.5E / 2: 6.572001 100.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.334999 100.0000 -121.5E / 2: 7.436001 100.0000 - ---- K:8 Z: 150 - ---- J:1 Y: 49.5S -120.5E / 1: 6.466000 150.0000 -121.5E / 2: 6.573999 150.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.372000 150.0000 -121.5E / 2: 7.464001 150.0000 - ---- L:2 T: 2 - ---- K:7 Z: 100 - ---- J:1 Y: 49.5S -120.5E / 1: 6.462000 110.0000 -121.5E / 2: 6.572001 110.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.334999 110.0000 -121.5E / 2: 7.436001 110.0000 - ---- K:8 Z: 150 - ---- J:1 Y: 49.5S -120.5E / 1: 6.466000 160.0000 -121.5E / 2: 6.573999 160.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.372000 160.0000 -121.5E / 2: 7.464001 160.0000 - ---- M:2 E: 2 - ---- L:1 T: 1 - ---- K:7 Z: 100 - ---- J:1 Y: 49.5S -120.5E / 1: 6.462000 150.0000 -121.5E / 2: 6.572001 150.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.334999 150.0000 -121.5E / 2: 7.436001 150.0000 - ---- K:8 Z: 150 - ---- J:1 Y: 49.5S -120.5E / 1: 6.466000 200.0000 -121.5E / 2: 6.573999 200.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.372000 200.0000 -121.5E / 2: 7.464001 200.0000 - ---- L:2 T: 2 - ---- K:7 Z: 100 - ---- J:1 Y: 49.5S -120.5E / 1: 6.462000 160.0000 -121.5E / 2: 6.572001 160.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.334999 160.0000 -121.5E / 2: 7.436001 160.0000 - ---- K:8 Z: 150 - ---- J:1 Y: 49.5S -120.5E / 1: 6.466000 210.0000 -121.5E / 2: 6.573999 210.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.372000 210.0000 -121.5E / 2: 7.464001 210.0000 - ---- N:2 F: 2 - ---- M:1 E: 1 - ---- L:1 T: 1 - ---- K:7 Z: 100 - ---- J:1 Y: 49.5S -120.5E / 1: 6.462000 200.0000 -121.5E / 2: 6.572001 200.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.334999 200.0000 -121.5E / 2: 7.436001 200.0000 - ---- K:8 Z: 150 - ---- J:1 Y: 49.5S -120.5E / 1: 6.466000 250.0000 -121.5E / 2: 6.573999 250.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.372000 250.0000 -121.5E / 2: 7.464001 250.0000 - ---- L:2 T: 2 - ---- K:7 Z: 100 - ---- J:1 Y: 49.5S -120.5E / 1: 6.462000 210.0000 -121.5E / 2: 6.572001 210.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.334999 210.0000 -121.5E / 2: 7.436001 210.0000 - ---- K:8 Z: 150 - ---- J:1 Y: 49.5S -120.5E / 1: 6.466000 260.0000 -121.5E / 2: 6.573999 260.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.372000 260.0000 -121.5E / 2: 7.464001 260.0000 - ---- M:2 E: 2 - ---- L:1 T: 1 - ---- K:7 Z: 100 - ---- J:1 Y: 49.5S -120.5E / 1: 6.462000 250.0000 -121.5E / 2: 6.572001 250.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.334999 250.0000 -121.5E / 2: 7.436001 250.0000 - ---- K:8 Z: 150 - ---- J:1 Y: 49.5S -120.5E / 1: 6.466000 300.0000 -121.5E / 2: 6.573999 300.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.372000 300.0000 -121.5E / 2: 7.464001 300.0000 - ---- L:2 T: 2 - ---- K:7 Z: 100 - ---- J:1 Y: 49.5S -120.5E / 1: 6.462000 260.0000 -121.5E / 2: 6.572001 260.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.334999 260.0000 -121.5E / 2: 7.436001 260.0000 - ---- K:8 Z: 150 - ---- J:1 Y: 49.5S -120.5E / 1: 6.466000 310.0000 -121.5E / 2: 6.573999 310.0000 - ---- J:2 Y: 48.5S -120.5E / 1: 7.372000 310.0000 -121.5E / 2: 7.464001 310.0000 -! ... some spot checks -LIST/PREC=7/l=1/m=1/n=1 tempz6d_tDep[Z=100] - temp6d_const[k=7] - VARIABLE : TEMPZ6D_TDEP[Z=100] - TEMP6D_CONST[K=7] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z : 100 - T : 1 - E : 1 - F : 1 - 120.5E 121.5E - 1 2 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 -LIST/PREC=7/l=1/m=2/n=1 tempz6d_tDep[Z=200] - temp6d_const[k=8] - VARIABLE : TEMPZ6D_TDEP[Z=200] - TEMP6D_CONST[K=8] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z : 200 - T : 1 - E : 2 - F : 1 - 120.5E 121.5E - 1 2 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 -LIST/PREC=7/l=1/m=2/n=2 tempz6d_tDep[Z=300] - temp6d_const[k=8] - VARIABLE : TEMPZ6D_TDEP[Z=300] - TEMP6D_CONST[K=8] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z : 300 - T : 1 - E : 2 - F : 2 - 120.5E 121.5E - 1 2 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 - -! ** deliberate error ** -! 6d temperature and 3d depth field (depth unchanging in time, ensemble and forecast) -! Ferret does not permit auxiliary variable to have an axis not found on the source variable -! (to avoid having to consider auxiliary variables during grid-getting ... possible to do) -SET MODE IGNORE -LET tempz6d_unmatch = temp[gz(depth6d)=zpts] -LIST/PREC=7 tempz6d_unmatch -SET MODE/LAST IGNORE - -! ******************************** -! test the @plave regridding -- ave defined from area under piecewise curve - -! first compare to our simplest of linear interpolation regrids, tempz -! note that results will differ due to non-linearity -! at Z=500 on the output they become identical because the Z=500 grid box -! extends 450:550 with source points at Z=400 and Z=600 -- pure linear -! LET tempz = temp[gz(depth)=zpts] -LET tempzave = temp[gz(depth)=zpts@plave] -LIST tempzave - tempz - VARIABLE : TEMPZAVE - TEMPZ - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 points (LONGITUDE-LATITUDE-Z) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 100 - 48.5S / 2: 0.07800055 0.08299971 - 49.5S / 1: 0.09349990 0.09612441 - ---- K:2 Z: 200 - 48.5S / 2: 0.03974986 0.04325008 - 49.5S / 1: 0.03737521 0.04537499 - ---- K:3 Z: 300 - 48.5S / 2: 0.02862477 0.02200031 - 49.5S / 1: 0.04037499 0.02874994 - ---- K:4 Z: 400 - 48.5S / 2: -0.00893724 -0.00900024 - 49.5S / 1: -0.00625008 -0.00656247 - ---- K:5 Z: 500 - 48.5S / 2: 0.00000000 0.00000000 - 49.5S / 1: 0.00000000 0.00000000 - -! list a little. Note the regridding transform label -LIST/PREC=7 temp[gz(depth)=zpts@plave,k=1] - VARIABLE : TEMPERATURE (DEG C) - regrid: 100 delta on Z@PLAVE using DEPTH field - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z : 50 to 150 - 120.5E 121.5E - 1 2 - 48.5S / 2: 7.413000 7.519001 - 49.5S / 1: 6.555500 6.668125 - -! Levitus has points at 50, 75, 100, 150, 200 -! define target axis with edges at 50:75 (k=1), 75:100 (k=2) -! 100:125(k=3), 125:150 (k=4), 150:175(k=5) -define axis/edges/z=50:175:25/units=m zpt2 ! point at 125 is mid-way - -! raw source data -- artifically designed for easy mental calcs -LET myvals = temp*0+100*(i-100)+10*(j-40)+k -list/PREC=7 myvals[z=50:300] - VARIABLE : TEMP*0+100*(I-100)+10*(J-40)+K - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 6 points (LONGITUDE-LATITUDE-DEPTH (m)) - 120.5E 121.5E - 1 2 - ---- K:5 Z: 50 - 48.5S / 2: -10275.00 -10175.00 - 49.5S / 1: -10285.00 -10185.00 - ---- K:6 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:7 Z: 100 - 48.5S / 2: -10273.00 -10173.00 - 49.5S / 1: -10283.00 -10183.00 - ---- K:8 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:9 Z: 200 - 48.5S / 2: -10271.00 -10171.00 - 49.5S / 1: -10281.00 -10181.00 - ---- K:10 Z: 300 - 48.5S / 2: -10270.00 -10170.00 - 49.5S / 1: -10280.00 -10180.00 - -! linear interpolation regridding -LET mzlin2 = myvals[gz(depth)=zpt2] -LIST/PREC=7 mzlin2 - VARIABLE : MYVALS[GZ(DEPTH)=ZPT2] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 62.5 - 48.5S / 2: -10274.50 -10174.50 - 49.5S / 1: -10284.50 -10184.50 - ---- K:2 Z: 87.5 - 48.5S / 2: -10273.50 -10173.50 - 49.5S / 1: -10283.50 -10183.50 - ---- K:3 Z: 112.5 - 48.5S / 2: -10272.75 -10172.75 - 49.5S / 1: -10282.75 -10182.75 - ---- K:4 Z: 137.5 - 48.5S / 2: -10272.25 -10172.25 - 49.5S / 1: -10282.25 -10182.25 - ---- K:5 Z: 162.5 - 48.5S / 2: -10271.75 -10171.75 - 49.5S / 1: -10281.75 -10181.75 - -! average-regridding -LET mzave2 = myvals[gz(depth)=zpt2@plave] - -! cases: -! 1) both edges lie on source points -LIST/PREC=7 mzave2[k=2] ! vals at 75, 100 ==> 75:100 - VARIABLE : MYVALS[GZ(DEPTH)=ZPT2@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z (M) : 87.5 - 120.5E 121.5E - 1 2 - 48.5S / 2: -10273.50 -10173.50 - 49.5S / 1: -10283.50 -10183.50 - -! 2) lower edge only lies on source point -LIST/PREC=7 mzave2[k=3] ! vals at 100, 150 ==> 100:125 - VARIABLE : MYVALS[GZ(DEPTH)=ZPT2@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z (M) : 112.5 - 120.5E 121.5E - 1 2 - 48.5S / 2: -10272.75 -10172.75 - 49.5S / 1: -10282.75 -10182.75 - -! 3) upper edge only lies on source point -LIST/PREC=7 mzave2[k=4] ! vals at 100, 150 ==> 125:150 - VARIABLE : MYVALS[GZ(DEPTH)=ZPT2@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z (M) : 137.5 - 120.5E 121.5E - 1 2 - 48.5S / 2: -10272.25 -10172.25 - 49.5S / 1: -10282.25 -10182.25 - -! 4) full range -! myvals2 is linear in k, so @plave and @lin get identical results -LIST/PREC=7 mzave2 - VARIABLE : MYVALS[GZ(DEPTH)=ZPT2@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 62.5 - 48.5S / 2: -10274.50 -10174.50 - 49.5S / 1: -10284.50 -10184.50 - ---- K:2 Z: 87.5 - 48.5S / 2: -10273.50 -10173.50 - 49.5S / 1: -10283.50 -10183.50 - ---- K:3 Z: 112.5 - 48.5S / 2: -10272.75 -10172.75 - 49.5S / 1: -10282.75 -10182.75 - ---- K:4 Z: 137.5 - 48.5S / 2: -10272.25 -10172.25 - 49.5S / 1: -10282.25 -10182.25 - ---- K:5 Z: 162.5 - 48.5S / 2: -10271.75 -10171.75 - 49.5S / 1: -10281.75 -10181.75 -LIST/PREC=7 mzave2 - mzlin2 - VARIABLE : MZAVE2 - MZLIN2 - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 62.5 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 - ---- K:2 Z: 87.5 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 - ---- K:3 Z: 112.5 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 - ---- K:4 Z: 137.5 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 - ---- K:5 Z: 162.5 - 48.5S / 2: 0.0000000 0.0000000 - 49.5S / 1: 0.0000000 0.0000000 - -! 5) divide a single source range into multiple destination cells -! a range of 50 divided into 5 cells will have means of x.1,x.3,x.5, x.7, x.9 -define axis/edges/z=150:200:10/units=m zpt3 -LET mzave3 = myvals[gz(depth)=zpt3@plave] -LIST/PREC=7 mzave3 - VARIABLE : MYVALS[GZ(DEPTH)=ZPT3@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 155 - 48.5S / 2: -10271.90 -10171.90 - 49.5S / 1: -10281.90 -10181.90 - ---- K:2 Z: 165 - 48.5S / 2: -10271.70 -10171.70 - 49.5S / 1: -10281.70 -10181.70 - ---- K:3 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:4 Z: 185 - 48.5S / 2: -10271.30 -10171.30 - 49.5S / 1: -10281.30 -10181.30 - ---- K:5 Z: 195 - 48.5S / 2: -10271.10 -10171.10 - 49.5S / 1: -10281.10 -10181.10 - -! 6) derive a single destination cell from many source points -! by manual calculation the correct answers will be n.333333 -define axis/edges/z=50:200:150/units=m zpt4 -LET mzave4 = myvals[gz(depth)=zpt4@plave] -LIST/PREC=7 mzave4 - VARIABLE : MYVALS[GZ(DEPTH)=ZPT4@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z (M) : 125 - 120.5E 121.5E - 1 2 - 48.5S / 2: -10272.67 -10172.67 - 49.5S / 1: -10282.67 -10182.67 - -! 7) derive a single destination cell from many source points -! by manual calculation the correct answers will be n.8125 -define axis/edges/z=50:250:200/units=m zpt5 -LET mzave5 = myvals[gz(depth)=zpt5@plave] -LIST/PREC=7 mzave5 - VARIABLE : MYVALS[GZ(DEPTH)=ZPT5@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z (M) : 150 - 120.5E 121.5E - 1 2 - 48.5S / 2: -10272.19 -10172.19 - 49.5S / 1: -10282.19 -10182.19 - -! 8) test the short-hand notation var[gz(depth)=0:100@ave] as an implicit -! aux var regrid via piecewice linear averaging -! To confirm correct results we create a piecewize linear function that -! has constant slope. Averaging such a function over a symmetric region -! around a point on the source data should return the value at the point -LET myvals_z = TEMP*0+100*(I-100)+10*(J-40)+Z -list/PREC=7 myvals_z[z=200] - VARIABLE : TEMP*0+100*(I-100)+10*(J-40)+Z - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 200 - 120.5E 121.5E - 1 2 - 48.5S / 2: -10080.00 -9980.00 - 49.5S / 1: -10090.00 -9990.00 -list/PREC=7 myvals_z[gz(depth)=190:210@ave] - VARIABLE : TEMP*0+100*(I-100)+10*(J-40)+Z - regrid: on Z@PLAVE using DEPTH field - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z : 190 to 210 - 120.5E 121.5E - 1 2 - 48.5S / 2: -10080.00 -9980.00 - 49.5S / 1: -10090.00 -9990.00 -list/PREC=7 myvals_z[gz(depth)=150:250@ave] - VARIABLE : TEMP*0+100*(I-100)+10*(J-40)+Z - regrid: on Z@PLAVE using DEPTH field - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - Z : 150 to 250 - 120.5E 121.5E - 1 2 - 48.5S / 2: -10080.00 -9980.00 - 49.5S / 1: -10090.00 -9990.00 - -! 8a) do same regrid using the shorhand semi-automated notation -SET VAR/LAYERZ=depth myvals_z -list/PREC=7 myvals_z[z=190:210@ave,layerz] ! lo:hi@ave notation WILL BE CHANGED - VARIABLE : TEMP*0+100*(I-100)+10*(J-40)+Z - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 190 to 210 (pc wise lin avgd using DEPTH) - 120.5E 121.5E - 1 2 - 48.5S / 2: -10080.00 -9980.00 - 49.5S / 1: -10090.00 -9990.00 -list/PREC=7 myvals_z[z=150:250@ave,layerz] ! WILL BE CHANGED - VARIABLE : TEMP*0+100*(I-100)+10*(J-40)+Z - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 points (LONGITUDE-LATITUDE) - DEPTH (m): 150 to 250 (pc wise lin avgd using DEPTH) - 120.5E 121.5E - 1 2 - 48.5S / 2: -10080.00 -9980.00 - 49.5S / 1: -10090.00 -9990.00 - -! test missing values in the depth array -! cases: -! 1) missing values at start of aux array -define axis/z=25:200:25/units=m zpt6 -LET depmis = IF (I NE 102 OR k GT 6) THEN depth -LET mzmis = myvals[gz(depmis)=zpt6] -LIST/PREC=7 mzmis - VARIABLE : MYVALS[GZ(DEPMIS)=ZPT6] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 8 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 25 - 48.5S / 2: -10276.50 -10176.50 - 49.5S / 1: -10286.50 -10186.50 - ---- K:2 Z: 50 - 48.5S / 2: -10275.00 -10175.00 - 49.5S / 1: -10285.00 -10185.00 - ---- K:3 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:4 Z: 100 - 48.5S / 2: -10273.00 -10173.00 - 49.5S / 1: -10283.00 -10183.00 - ---- K:5 Z: 125 - 48.5S / 2: -10272.50 -10172.50 - 49.5S / 1: -10282.50 -10182.50 - ---- K:6 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:7 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:8 Z: 200 - 48.5S / 2: -10271.00 -10171.00 - 49.5S / 1: -10281.00 -10181.00 -LET mzavemis = myvals[gz(depmis)=zpt6@plave] -LIST/PREC=7 mzavemis - VARIABLE : MYVALS[GZ(DEPMIS)=ZPT6@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 8 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 25 - 48.5S / 2: -10276.56 -10176.56 - 49.5S / 1: -10286.56 -10186.56 - ---- K:2 Z: 50 - 48.5S / 2: -10275.03 -10175.03 - 49.5S / 1: -10285.03 -10185.03 - ---- K:3 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:4 Z: 100 - 48.5S / 2: -10273.06 -10173.06 - 49.5S / 1: -10283.06 -10183.06 - ---- K:5 Z: 125 - 48.5S / 2: -10272.50 -10172.50 - 49.5S / 1: -10282.50 -10182.50 - ---- K:6 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:7 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:8 Z: 200 - 48.5S / 2: -10271.03 -10171.03 - 49.5S / 1: -10281.03 -10181.03 - -! 2) missing values at end of aux array -LET depmis = IF (I NE 102 OR k LT 9) THEN depth -LET mzmis = myvals[gz(depmis)=zpt6] -LIST/PREC=7 mzmis - VARIABLE : MYVALS[GZ(DEPMIS)=ZPT6] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 8 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 25 - 48.5S / 2: -10276.50 -10176.50 - 49.5S / 1: -10286.50 -10186.50 - ---- K:2 Z: 50 - 48.5S / 2: -10275.00 -10175.00 - 49.5S / 1: -10285.00 -10185.00 - ---- K:3 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:4 Z: 100 - 48.5S / 2: -10273.00 -10173.00 - 49.5S / 1: -10283.00 -10183.00 - ---- K:5 Z: 125 - 48.5S / 2: -10272.50 -10172.50 - 49.5S / 1: -10282.50 -10182.50 - ---- K:6 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:7 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:8 Z: 200 - 48.5S / 2: -10271.00 -10171.00 - 49.5S / 1: -10281.00 -10181.00 -LET mzavemis = myvals[gz(depmis)=zpt6@plave] -LIST/PREC=7 mzavemis - VARIABLE : MYVALS[GZ(DEPMIS)=ZPT6@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 8 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 25 - 48.5S / 2: -10276.56 -10176.56 - 49.5S / 1: -10286.56 -10186.56 - ---- K:2 Z: 50 - 48.5S / 2: -10275.03 -10175.03 - 49.5S / 1: -10285.03 -10185.03 - ---- K:3 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:4 Z: 100 - 48.5S / 2: -10273.06 -10173.06 - 49.5S / 1: -10283.06 -10183.06 - ---- K:5 Z: 125 - 48.5S / 2: -10272.50 -10172.50 - 49.5S / 1: -10282.50 -10182.50 - ---- K:6 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:7 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:8 Z: 200 - 48.5S / 2: -10271.03 -10171.03 - 49.5S / 1: -10281.03 -10181.03 - -! 3) missing values in midst of aux array -- stops processing beyond -LET depmis = IF (I NE 102 OR k EQ 7 OR K EQ 8) THEN depth -LET mzmis = myvals[gz(depmis)=zpt6] -LIST/PREC=7 mzmis - VARIABLE : MYVALS[GZ(DEPMIS)=ZPT6] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 8 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 25 - 48.5S / 2: -10276.50 -10176.50 - 49.5S / 1: -10286.50 -10186.50 - ---- K:2 Z: 50 - 48.5S / 2: -10275.00 -10175.00 - 49.5S / 1: -10285.00 -10185.00 - ---- K:3 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:4 Z: 100 - 48.5S / 2: -10273.00 -10173.00 - 49.5S / 1: -10283.00 -10183.00 - ---- K:5 Z: 125 - 48.5S / 2: -10272.50 -10172.50 - 49.5S / 1: -10282.50 -10182.50 - ---- K:6 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:7 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:8 Z: 200 - 48.5S / 2: -10271.00 -10171.00 - 49.5S / 1: -10281.00 -10181.00 -LET mzavemis = myvals[gz(depmis)=zpt6@plave] -LIST/PREC=7 mzavemis - VARIABLE : MYVALS[GZ(DEPMIS)=ZPT6@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 8 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 25 - 48.5S / 2: -10276.56 -10176.56 - 49.5S / 1: -10286.56 -10186.56 - ---- K:2 Z: 50 - 48.5S / 2: -10275.03 -10175.03 - 49.5S / 1: -10285.03 -10185.03 - ---- K:3 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:4 Z: 100 - 48.5S / 2: -10273.06 -10173.06 - 49.5S / 1: -10283.06 -10183.06 - ---- K:5 Z: 125 - 48.5S / 2: -10272.50 -10172.50 - 49.5S / 1: -10282.50 -10182.50 - ---- K:6 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:7 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:8 Z: 200 - 48.5S / 2: -10271.03 -10171.03 - 49.5S / 1: -10281.03 -10181.03 - -! 4) singleton non-missing values in a line of the aux array -LET depmis = IF (I NE 102 OR K EQ 8) THEN depth -LET mzmis = myvals[gz(depmis)=zpt6] -LIST/PREC=7 mzmis - VARIABLE : MYVALS[GZ(DEPMIS)=ZPT6] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 8 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 25 - 48.5S / 2: -10276.50 -10176.50 - 49.5S / 1: -10286.50 -10186.50 - ---- K:2 Z: 50 - 48.5S / 2: -10275.00 -10175.00 - 49.5S / 1: -10285.00 -10185.00 - ---- K:3 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:4 Z: 100 - 48.5S / 2: -10273.00 -10173.00 - 49.5S / 1: -10283.00 -10183.00 - ---- K:5 Z: 125 - 48.5S / 2: -10272.50 -10172.50 - 49.5S / 1: -10282.50 -10182.50 - ---- K:6 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:7 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:8 Z: 200 - 48.5S / 2: -10271.00 -10171.00 - 49.5S / 1: -10281.00 -10181.00 -LET mzavemis = myvals[gz(depmis)=zpt6@plave] -LIST/PREC=7 mzavemis - VARIABLE : MYVALS[GZ(DEPMIS)=ZPT6@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 8 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 25 - 48.5S / 2: -10276.56 -10176.56 - 49.5S / 1: -10286.56 -10186.56 - ---- K:2 Z: 50 - 48.5S / 2: -10275.03 -10175.03 - 49.5S / 1: -10285.03 -10185.03 - ---- K:3 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:4 Z: 100 - 48.5S / 2: -10273.06 -10173.06 - 49.5S / 1: -10283.06 -10183.06 - ---- K:5 Z: 125 - 48.5S / 2: -10272.50 -10172.50 - 49.5S / 1: -10282.50 -10182.50 - ---- K:6 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:7 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:8 Z: 200 - 48.5S / 2: -10271.03 -10171.03 - 49.5S / 1: -10281.03 -10181.03 - -! 5) there are only missing values in a line of the aux array -LET depmis = IF (I NE 102) THEN depth -LET mzmis = myvals[gz(depmis)=zpt6] -LIST/PREC=7 mzmis - VARIABLE : MYVALS[GZ(DEPMIS)=ZPT6] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 8 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 25 - 48.5S / 2: -10276.50 -10176.50 - 49.5S / 1: -10286.50 -10186.50 - ---- K:2 Z: 50 - 48.5S / 2: -10275.00 -10175.00 - 49.5S / 1: -10285.00 -10185.00 - ---- K:3 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:4 Z: 100 - 48.5S / 2: -10273.00 -10173.00 - 49.5S / 1: -10283.00 -10183.00 - ---- K:5 Z: 125 - 48.5S / 2: -10272.50 -10172.50 - 49.5S / 1: -10282.50 -10182.50 - ---- K:6 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:7 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:8 Z: 200 - 48.5S / 2: -10271.00 -10171.00 - 49.5S / 1: -10281.00 -10181.00 -LET mzavemis = myvals[gz(depmis)=zpt6@plave] -LIST/PREC=7 mzavemis - VARIABLE : MYVALS[GZ(DEPMIS)=ZPT6@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 8 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 25 - 48.5S / 2: -10276.56 -10176.56 - 49.5S / 1: -10286.56 -10186.56 - ---- K:2 Z: 50 - 48.5S / 2: -10275.03 -10175.03 - 49.5S / 1: -10285.03 -10185.03 - ---- K:3 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:4 Z: 100 - 48.5S / 2: -10273.06 -10173.06 - 49.5S / 1: -10283.06 -10183.06 - ---- K:5 Z: 125 - 48.5S / 2: -10272.50 -10172.50 - 49.5S / 1: -10282.50 -10182.50 - ---- K:6 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:7 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:8 Z: 200 - 48.5S / 2: -10271.03 -10171.03 - 49.5S / 1: -10281.03 -10181.03 - -! 6) two separated singletons -- only the first should be found -LET depmis = IF (I NE 102 OR K EQ 6 OR K EQ 8) THEN depth -LET mzmis = myvals[gz(depmis)=zpt6] -LIST/PREC=7 mzmis - VARIABLE : MYVALS[GZ(DEPMIS)=ZPT6] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 8 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 25 - 48.5S / 2: -10276.50 -10176.50 - 49.5S / 1: -10286.50 -10186.50 - ---- K:2 Z: 50 - 48.5S / 2: -10275.00 -10175.00 - 49.5S / 1: -10285.00 -10185.00 - ---- K:3 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:4 Z: 100 - 48.5S / 2: -10273.00 -10173.00 - 49.5S / 1: -10283.00 -10183.00 - ---- K:5 Z: 125 - 48.5S / 2: -10272.50 -10172.50 - 49.5S / 1: -10282.50 -10182.50 - ---- K:6 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:7 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:8 Z: 200 - 48.5S / 2: -10271.00 -10171.00 - 49.5S / 1: -10281.00 -10181.00 -LET mzavemis = myvals[gz(depmis)=zpt6@plave] -LIST/PREC=7 mzavemis - VARIABLE : MYVALS[GZ(DEPMIS)=ZPT6@PLAVE] - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 8 points (LONGITUDE-LATITUDE-Z (M)) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 25 - 48.5S / 2: -10276.56 -10176.56 - 49.5S / 1: -10286.56 -10186.56 - ---- K:2 Z: 50 - 48.5S / 2: -10275.03 -10175.03 - 49.5S / 1: -10285.03 -10185.03 - ---- K:3 Z: 75 - 48.5S / 2: -10274.00 -10174.00 - 49.5S / 1: -10284.00 -10184.00 - ---- K:4 Z: 100 - 48.5S / 2: -10273.06 -10173.06 - 49.5S / 1: -10283.06 -10183.06 - ---- K:5 Z: 125 - 48.5S / 2: -10272.50 -10172.50 - 49.5S / 1: -10282.50 -10182.50 - ---- K:6 Z: 150 - 48.5S / 2: -10272.00 -10172.00 - 49.5S / 1: -10282.00 -10182.00 - ---- K:7 Z: 175 - 48.5S / 2: -10271.50 -10171.50 - 49.5S / 1: -10281.50 -10181.50 - ---- K:8 Z: 200 - 48.5S / 2: -10271.03 -10171.03 - 49.5S / 1: -10281.03 -10181.03 -list depmis[z=25:200] ! to illustrate why the result is as it is - VARIABLE : IF (I NE 102 OR K EQ 6 OR K EQ 8) THEN DEPTH - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 6 points (LONGITUDE-LATITUDE-DEPTH (m)) - 120.5E 121.5E - 1 2 - ---- K:4 Z: 30 - 48.5S / 2: 30.0000 30.0000 - 49.5S / 1: 30.0000 30.0000 - ---- K:5 Z: 50 - 48.5S / 2: 50.0000 50.0000 - 49.5S / 1: 50.0000 50.0000 - ---- K:6 Z: 75 - 48.5S / 2: 75.0000 75.0000 - 49.5S / 1: 75.0000 75.0000 - ---- K:7 Z: 100 - 48.5S / 2: 100.0000 100.0000 - 49.5S / 1: 100.0000 100.0000 - ---- K:8 Z: 150 - 48.5S / 2: 150.0000 150.0000 - 49.5S / 1: 150.0000 150.0000 - ---- K:9 Z: 200 - 48.5S / 2: 200.0000 200.0000 - 49.5S / 1: 200.0000 200.0000 - -! ******** -! reversed-auxiliary variable used in regridding -! (see definitions made earlier) -! Note that the regridded result only matches the original data in regions -! where the underlying piecewise function remains strictly linear with -! unchanging slope/intercept. Since the Z=500 point has cell limits 450:550 -! and the underlying Levitus Z points (used in the definition of "depth") are -! at 400 and 600, we get the identical result from @PLAVE and @LIN -LET rvtempzaxave = rvtemp[gz(rvdepth)=zax@plave,z=100:500] -LIST/PREC=7 rvtempzaxave - tempz - VARIABLE : RVTEMPZAXAVE - TEMPZ - FILENAME : levitus_3d_subset.nc - SUBSET : 2 by 2 by 5 points (LONGITUDE-LATITUDE-Z) - 120.5E 121.5E - 1 2 - ---- K:1 Z: 100 - 48.5S / 2: 0.07800055 0.08299971 - 49.5S / 1: 0.09349990 0.09612441 - ---- K:2 Z: 200 - 48.5S / 2: 0.03974986 0.04325008 - 49.5S / 1: 0.03737521 0.04537499 - ---- K:3 Z: 300 - 48.5S / 2: 0.02862477 0.02200031 - 49.5S / 1: 0.04037499 0.02874994 - ---- K:4 Z: 400 - 48.5S / 2: -0.00893724 -0.00900024 - 49.5S / 1: -0.00625008 -0.00656247 - ---- K:5 Z: 500 - 48.5S / 2: 0.00000000 0.00000000 - 49.5S / 1: 0.00000000 0.00000000 -SHOW GRID/z rvtempzaxave - GRID (G085) - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - ZAX Z (METERS) 5 r 100 500 (axis from grid-changing func) - normal T - - K Z ZBOX ZBOXLO - 1> 100 100 50 - 2> 200 100 150 - 3> 300 100 250 - 4> 400 100 350 - 5> 500 100 450 - -! 5/15 -- added tests for non-monotonic auxiliary variable -!test_non_monotonic_aux_z.jnl - -cancel region -define axis/x=161e:165e:1 xax -define axis/z=100:600:100 zax - -let temp = 0.0001*Z[gz=zax]^2 + 0*x[gx=xax] -list temp - VARIABLE : 0.0001*Z[GZ=ZAX]^2 + 0*X[GX=XAX] - SUBSET : 5 by 6 points (LONGITUDE-Z) - 161E 162E 163E 164E 165E - 1 2 3 4 5 - 100 / 1: 1.00000 1.00000 1.00000 1.00000 1.00000 - 200 / 2: 4.00000 4.00000 4.00000 4.00000 4.00000 - 300 / 3: 9.00000 9.00000 9.00000 9.00000 9.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 25.00000 25.00000 25.00000 25.00000 25.00000 - 600 / 6: 36.00000 36.00000 36.00000 36.00000 36.00000 - -! disordered points at beginning, middle and end, missing at beginning -let density0 = 0*i[gx=xax]*k[gz=zax] + z/10 -let density1 = if i eq 2 and k eq 4 then 20 else density0 -let density2 = if i eq 3 and k eq 1 then 20 else density1 -let density3 = if i eq 3 and k eq 2 then 10 else density2 -let density4 = if i eq 4 and k eq 6 then 30 else density3 -let density = if i eq 5 and k le 2 then 1/0 else density4 ! missing at k=1:3 -list density - VARIABLE : IF I EQ 5 AND K LE 2 THEN 1/0 ELSE DENSITY4 - SUBSET : 5 by 6 points (LONGITUDE-Z) - 161E 162E 163E 164E 165E - 1 2 3 4 5 - 100 / 1: 10.00000 10.00000 20.00000 10.00000 .... - 200 / 2: 20.00000 20.00000 10.00000 20.00000 .... - 300 / 3: 30.00000 30.00000 30.00000 30.00000 30.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 50.00000 50.00000 50.00000 50.00000 50.00000 - 600 / 6: 60.00000 60.00000 60.00000 30.00000 60.00000 - -! Z=200-300 on the density axis are double valued at I=2 -list temp[gz(density)=5:65:2.5] - VARIABLE : 0.0001*Z[GZ=ZAX]^2 + 0*X[GX=XAX] - regrid: 2.5 delta on Z@LIN using DENSITY field - SUBSET : 5 by 25 points (LONGITUDE-Z) - 161E 162E 163E 164E 165E - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 7.5 / 2: .... .... .... .... .... - 10 / 3: 1.00000 1.00000 4.00000 1.00000 .... - 12.5 / 4: 1.75000 1.75000 .... 1.75000 .... - 15 / 5: 2.50000 2.50000 .... 2.50000 .... - 17.5 / 6: 3.25000 3.25000 .... 3.25000 .... - 20 / 7: 4.00000 .... .... 4.00000 .... - 22.5 / 8: 5.25000 .... 7.12500 5.25000 .... - 25 / 9: 6.50000 .... 7.75000 6.50000 .... - 27.5 / 10: 7.75000 .... 8.37500 7.75000 .... - 30 / 11: 9.00000 .... 9.00000 .... 9.00000 - 32.5 / 12: 10.75000 19.75000 10.75000 .... 10.75000 - 35 / 13: 12.50000 20.50000 12.50000 .... 12.50000 - 37.5 / 14: 14.25000 21.25000 14.25000 .... 14.25000 - 40 / 15: 16.00000 22.00000 16.00000 .... 16.00000 - 42.5 / 16: 18.25000 22.75000 18.25000 .... 18.25000 - 45 / 17: 20.50000 23.50000 20.50000 .... 20.50000 - 47.5 / 18: 22.75000 24.25000 22.75000 .... 22.75000 - 50 / 19: 25.00000 25.00000 25.00000 25.00000 25.00000 - 52.5 / 20: 27.75000 27.75000 27.75000 .... 27.75000 - 55 / 21: 30.50000 30.50000 30.50000 .... 30.50000 - 57.5 / 22: 33.25000 33.25000 33.25000 .... 33.25000 - 60 / 23: 36.00000 36.00000 36.00000 .... 36.00000 - 62.5 / 24: .... .... .... .... .... - 65 / 25: .... .... .... .... .... - - -!************************************ -! reverse-ordering of same field -let btemp = 0.0001*(700-Z[gz=zax])^2 + 0*x[gx=xax] -list btemp - VARIABLE : 0.0001*(700-Z[GZ=ZAX])^2 + 0*X[GX=XAX] - SUBSET : 5 by 6 points (LONGITUDE-Z) - 161E 162E 163E 164E 165E - 1 2 3 4 5 - 100 / 1: 36.00000 36.00000 36.00000 36.00000 36.00000 - 200 / 2: 25.00000 25.00000 25.00000 25.00000 25.00000 - 300 / 3: 16.00000 16.00000 16.00000 16.00000 16.00000 - 400 / 4: 9.00000 9.00000 9.00000 9.00000 9.00000 - 500 / 5: 4.00000 4.00000 4.00000 4.00000 4.00000 - 600 / 6: 1.00000 1.00000 1.00000 1.00000 1.00000 - -let bdensity0 = 0*i[gx=xax]*k[gz=zax] + (700-z)/10 -let bdensity1 = if i eq 2 and (7-k) eq 4 then 20 else bdensity0 -let bdensity2 = if i eq 3 and (7-k) eq 1 then 20 else bdensity1 -let bdensity3 = if i eq 3 and (7-k) eq 2 then 10 else bdensity2 -let bdensity4 = if i eq 4 and (7-k) eq 6 then 30 else bdensity3 -let bdensity = if i eq 5 and (7-k) le 2 then 1/0 else bdensity4 !missing k=1:3 - -SAY "************ TBD: STILL NEED TO MAKE SURE UNITS ARE WORKING ********" -************ TBD: STILL NEED TO MAKE SURE UNITS ARE WORKING ******** -SET VAR/units="kg/m^3" density - -list bdensity - VARIABLE : IF I EQ 5 AND (7-K) LE 2 THEN 1/0 ELSE BDENSITY4 - SUBSET : 5 by 6 points (LONGITUDE-Z) - 161E 162E 163E 164E 165E - 1 2 3 4 5 - 100 / 1: 60.00000 60.00000 60.00000 30.00000 60.00000 - 200 / 2: 50.00000 50.00000 50.00000 50.00000 50.00000 - 300 / 3: 40.00000 20.00000 40.00000 40.00000 40.00000 - 400 / 4: 30.00000 30.00000 30.00000 30.00000 30.00000 - 500 / 5: 20.00000 20.00000 10.00000 20.00000 .... - 600 / 6: 10.00000 10.00000 20.00000 10.00000 .... - -list btemp[gz(bdensity)=5:65:2.5] - VARIABLE : 0.0001*(700-Z[GZ=ZAX])^2 + 0*X[GX=XAX] - regrid: 2.5 delta on Z@LIN using BDENSITY field - SUBSET : 5 by 25 points (LONGITUDE-Z) - 161E 162E 163E 164E 165E - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 7.5 / 2: .... .... .... .... .... - 10 / 3: 1.00000 1.00000 4.00000 1.00000 .... - 12.5 / 4: 1.75000 1.75000 .... 1.75000 .... - 15 / 5: 2.50000 2.50000 .... 2.50000 .... - 17.5 / 6: 3.25000 3.25000 .... 3.25000 .... - 20 / 7: 4.00000 .... .... 4.00000 .... - 22.5 / 8: 5.25000 .... 7.12500 5.25000 .... - 25 / 9: 6.50000 .... 7.75000 6.50000 .... - 27.5 / 10: 7.75000 .... 8.37500 7.75000 .... - 30 / 11: 9.00000 .... 9.00000 .... 9.00000 - 32.5 / 12: 10.75000 19.75000 10.75000 .... 10.75000 - 35 / 13: 12.50000 20.50000 12.50000 .... 12.50000 - 37.5 / 14: 14.25000 21.25000 14.25000 .... 14.25000 - 40 / 15: 16.00000 22.00000 16.00000 .... 16.00000 - 42.5 / 16: 18.25000 22.75000 18.25000 .... 18.25000 - 45 / 17: 20.50000 23.50000 20.50000 .... 20.50000 - 47.5 / 18: 22.75000 24.25000 22.75000 .... 22.75000 - 50 / 19: 25.00000 25.00000 25.00000 25.00000 25.00000 - 52.5 / 20: 27.75000 27.75000 27.75000 .... 27.75000 - 55 / 21: 30.50000 30.50000 30.50000 .... 30.50000 - 57.5 / 22: 33.25000 33.25000 33.25000 .... 33.25000 - 60 / 23: 36.00000 36.00000 36.00000 .... 36.00000 - 62.5 / 24: .... .... .... .... .... - 65 / 25: .... .... .... .... .... - -!************************************ -! similar analysis using @plave over wider cells -! compare to reverse-ordered data -list temp[gz(density)=5:65:15@plave] - VARIABLE : 0.0001*Z[GZ=ZAX]^2 + 0*X[GX=XAX] - regrid: 15 kg/m^3 on Z@PLAVE using DENSITY field - SUBSET : 5 by 5 points (LONGITUDE-Z (kg/m^3)) - 161E 162E 163E 164E 165E - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... -list btemp[gz(bdensity)=5:65:15@plave] - VARIABLE : 0.0001*(700-Z[GZ=ZAX])^2 + 0*X[GX=XAX] - regrid: 15 delta on Z@PLAVE using BDENSITY field - SUBSET : 5 by 5 points (LONGITUDE-Z) - 161E 162E 163E 164E 165E - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - -! 6/15 -! test 1D auxiliary axis regirdding on all axes - -! p for passive axis -! a for active axis - -define axis/x=161:165:1 xp -define axis/y=161:165:1 yp -define axis/z=161:165:1 zp -define axis/t=161:165:1 tp -define axis/e=161:165:1 ep -define axis/f=161:165:1 fp - -define axis/x=100:700:100 xa -define axis/y=100:700:100 ya -define axis/z=100:700:100 za -define axis/t=100:700:100 ta -define axis/e=100:700:100 ea -define axis/f=100:700:100 fa - - -GO bn_auxiliary.sub Z,X,F - -***************************** -********** Z,X,F *********** -***************************** - -! show the underlying fields -list/order=($pax1)($aax)($REG1) temp - !-> list/order=XZ/j=1 /l=1/m=1/n=1 temp - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - SUBSET : 5 by 7 points (X-Z) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 1.00000 1.00000 1.00000 1.00000 1.00000 - 200 / 2: 4.00000 4.00000 4.00000 4.00000 4.00000 - 300 / 3: 9.00000 9.00000 9.00000 9.00000 9.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 25.00000 25.00000 25.00000 25.00000 25.00000 - 600 / 6: 36.00000 36.00000 36.00000 36.00000 36.00000 - 700 / 7: 49.00000 49.00000 49.00000 49.00000 49.00000 -list/order=($pax1)($aax)($REG1) btemp - !-> list/order=XZ/j=1 /l=1/m=1/n=1 btemp - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - SUBSET : 5 by 7 points (X-Z) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 49.00000 49.00000 49.00000 49.00000 49.00000 - 200 / 2: 36.00000 36.00000 36.00000 36.00000 36.00000 - 300 / 3: 25.00000 25.00000 25.00000 25.00000 25.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 9.00000 9.00000 9.00000 9.00000 9.00000 - 600 / 6: 4.00000 4.00000 4.00000 4.00000 4.00000 - 700 / 7: 1.00000 1.00000 1.00000 1.00000 1.00000 -list/order=($pax1)($aax)($REG1) density - !-> list/order=XZ/j=1 /l=1/m=1/n=1 density - VARIABLE : IF (_I EQ 5 OR _N EQ 5) AND _K LE 2 THEN 1/0 ELSE DENSITY4 - SUBSET : 5 by 7 points (X-Z) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 10.00000 10.00000 20.00000 10.00000 .... - 200 / 2: 20.00000 20.00000 10.00000 20.00000 .... - 300 / 3: 30.00000 30.00000 30.00000 30.00000 30.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 50.00000 50.00000 50.00000 50.00000 50.00000 - 600 / 6: 60.00000 60.00000 60.00000 30.00000 60.00000 - 700 / 7: 70.00000 70.00000 70.00000 70.00000 70.00000 -list/order=($pax1)($aax)($REG1) bdensity - !-> list/order=XZ/j=1 /l=1/m=1/n=1 bdensity - VARIABLE : IF (_I EQ 5 OR _N EQ 5) AND (8-_K) LE 2 THEN 1/0 ELSE BDENSITY4 - SUBSET : 5 by 7 points (X-Z) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 70.00000 70.00000 70.00000 70.00000 70.00000 - 200 / 2: 60.00000 60.00000 60.00000 30.00000 60.00000 - 300 / 3: 50.00000 50.00000 50.00000 50.00000 50.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 30.00000 30.00000 30.00000 30.00000 30.00000 - 600 / 6: 20.00000 20.00000 10.00000 20.00000 .... - 700 / 7: 10.00000 10.00000 20.00000 10.00000 .... - -! show the regridded fields -! using interpolation -list/order=($pax1)($aax)($REG1) temp[($gax)(density)=5:80:5] ! passive ax 1 - !-> list/order=XZ/j=1 /l=1/m=1/n=1 temp[gZ(density)=5:80:5] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on Z@LIN using DENSITY field - SUBSET : 5 by 16 points (X-Z) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... -list/order=($pax2)($aax)($REG2) temp[($gax)(density)=5:80:5] ! passive ax 2 - !-> list/order=FZ/i=1/j=1 /l=1/m=1 temp[gZ(density)=5:80:5] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on Z@LIN using DENSITY field - SUBSET : 5 by 16 points (F-Z) - X : 161 - Y : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... -list/order=($pax1)($aax)($REG1) btemp[($gax)(bdensity)=5:80:5] ! backwards pasv ax 1 - !-> list/order=XZ/j=1 /l=1/m=1/n=1 btemp[gZ(bdensity)=5:80:5] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on Z@LIN using BDENSITY field - SUBSET : 5 by 16 points (X-Z) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... -list/order=($pax2)($aax)($REG2) btemp[($gax)(bdensity)=5:80:5] ! backwards pasv ax 2 - !-> list/order=FZ/i=1/j=1 /l=1/m=1 btemp[gZ(bdensity)=5:80:5] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on Z@LIN using BDENSITY field - SUBSET : 5 by 16 points (F-Z) - X : 161 - Y : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... -! 6/2015 - test degenerate single point target axis -list/order=($pax1)($aax)($REG1) temp[($gax)(density)=35] - !-> list/order=XZ/j=1 /l=1/m=1/n=1 temp[gZ(density)=35] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on Z@LIN using DENSITY field - SUBSET : 5 points (X) - Z : 35 - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 -list/order=($pax1)($aax)($REG1) btemp[($gax)(bdensity)=35] - !-> list/order=XZ/j=1 /l=1/m=1/n=1 btemp[gZ(bdensity)=35] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on Z@LIN using BDENSITY field - SUBSET : 5 points (X) - Z : 35 - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 - - -! using piecewise linear averaging -list/order=($pax1)($aax)($REG1) temp[($gax)(density)=5:80:15@plave] - !-> list/order=XZ/j=1 /l=1/m=1/n=1 temp[gZ(density)=5:80:15@plave] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on Z@PLAVE using DENSITY field - SUBSET : 5 by 6 points (X-Z) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... -list/order=($pax2)($aax)($REG2) temp[($gax)(density)=5:80:15@plave] - !-> list/order=FZ/i=1/j=1 /l=1/m=1 temp[gZ(density)=5:80:15@plave] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on Z@PLAVE using DENSITY field - SUBSET : 5 by 6 points (F-Z) - X : 161 - Y : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... -list/order=($pax1)($aax)($REG1) btemp[($gax)(bdensity)=5:80:15@plave] - !-> list/order=XZ/j=1 /l=1/m=1/n=1 btemp[gZ(bdensity)=5:80:15@plave] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on Z@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (X-Z) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... -list/order=($pax2)($aax)($REG2) btemp[($gax)(bdensity)=5:80:15@plave] - !-> list/order=FZ/i=1/j=1 /l=1/m=1 btemp[gZ(bdensity)=5:80:15@plave] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on Z@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (F-Z) - X : 161 - Y : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... -! 6/2015 - test degenerate single point target axis -list/order=($pax1)($aax)($REG1) temp[($gax)(density)=35:55@plave] - !-> list/order=XZ/j=1 /l=1/m=1/n=1 temp[gZ(density)=35:55@plave] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on Z@PLAVE using DENSITY field - SUBSET : 5 points (X) - Z : 35 to 55 - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 -list/order=($pax1)($aax)($REG1) btemp[($gax)(bdensity)=35:55@plave] - !-> list/order=XZ/j=1 /l=1/m=1/n=1 btemp[gZ(bdensity)=35:55@plave] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on Z@PLAVE using BDENSITY field - SUBSET : 5 points (X) - Z : 35 to 55 - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 - -!********************************************************************************* -!********************************************************************************* -EXIT/SCRIPT -GO bn_auxiliary.sub Z,Y,E - -***************************** -********** Z,Y,E *********** -***************************** - -! show the underlying fields -list/order=($pax1)($aax)($REG1) temp - !-> list/order=YZ/i=1 /l=1/m=1/n=1 temp - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - SUBSET : 5 by 7 points (Y-Z) - X : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 1.00000 1.00000 1.00000 1.00000 1.00000 - 200 / 2: 4.00000 4.00000 4.00000 4.00000 4.00000 - 300 / 3: 9.00000 9.00000 9.00000 9.00000 9.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 25.00000 25.00000 25.00000 25.00000 25.00000 - 600 / 6: 36.00000 36.00000 36.00000 36.00000 36.00000 - 700 / 7: 49.00000 49.00000 49.00000 49.00000 49.00000 -list/order=($pax1)($aax)($REG1) btemp - !-> list/order=YZ/i=1 /l=1/m=1/n=1 btemp - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - SUBSET : 5 by 7 points (Y-Z) - X : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 49.00000 49.00000 49.00000 49.00000 49.00000 - 200 / 2: 36.00000 36.00000 36.00000 36.00000 36.00000 - 300 / 3: 25.00000 25.00000 25.00000 25.00000 25.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 9.00000 9.00000 9.00000 9.00000 9.00000 - 600 / 6: 4.00000 4.00000 4.00000 4.00000 4.00000 - 700 / 7: 1.00000 1.00000 1.00000 1.00000 1.00000 -list/order=($pax1)($aax)($REG1) density - !-> list/order=YZ/i=1 /l=1/m=1/n=1 density - VARIABLE : IF (_J EQ 5 OR _M EQ 5) AND _K LE 2 THEN 1/0 ELSE DENSITY4 - SUBSET : 5 by 7 points (Y-Z) - X : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 10.00000 10.00000 20.00000 10.00000 .... - 200 / 2: 20.00000 20.00000 10.00000 20.00000 .... - 300 / 3: 30.00000 30.00000 30.00000 30.00000 30.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 50.00000 50.00000 50.00000 50.00000 50.00000 - 600 / 6: 60.00000 60.00000 60.00000 30.00000 60.00000 - 700 / 7: 70.00000 70.00000 70.00000 70.00000 70.00000 -list/order=($pax1)($aax)($REG1) bdensity - !-> list/order=YZ/i=1 /l=1/m=1/n=1 bdensity - VARIABLE : IF (_J EQ 5 OR _M EQ 5) AND (8-_K) LE 2 THEN 1/0 ELSE BDENSITY4 - SUBSET : 5 by 7 points (Y-Z) - X : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 70.00000 70.00000 70.00000 70.00000 70.00000 - 200 / 2: 60.00000 60.00000 60.00000 30.00000 60.00000 - 300 / 3: 50.00000 50.00000 50.00000 50.00000 50.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 30.00000 30.00000 30.00000 30.00000 30.00000 - 600 / 6: 20.00000 20.00000 10.00000 20.00000 .... - 700 / 7: 10.00000 10.00000 20.00000 10.00000 .... - -! show the regridded fields -! using interpolation -list/order=($pax1)($aax)($REG1) temp[($gax)(density)=5:80:5] ! passive ax 1 - !-> list/order=YZ/i=1 /l=1/m=1/n=1 temp[gZ(density)=5:80:5] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on Z@LIN using DENSITY field - SUBSET : 5 by 16 points (Y-Z) - X : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... -list/order=($pax2)($aax)($REG2) temp[($gax)(density)=5:80:5] ! passive ax 2 - !-> list/order=EZ/i=1/j=1 /l=1 /n=1 temp[gZ(density)=5:80:5] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on Z@LIN using DENSITY field - SUBSET : 5 by 16 points (E-Z) - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... -list/order=($pax1)($aax)($REG1) btemp[($gax)(bdensity)=5:80:5] ! backwards pasv ax 1 - !-> list/order=YZ/i=1 /l=1/m=1/n=1 btemp[gZ(bdensity)=5:80:5] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on Z@LIN using BDENSITY field - SUBSET : 5 by 16 points (Y-Z) - X : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... -list/order=($pax2)($aax)($REG2) btemp[($gax)(bdensity)=5:80:5] ! backwards pasv ax 2 - !-> list/order=EZ/i=1/j=1 /l=1 /n=1 btemp[gZ(bdensity)=5:80:5] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on Z@LIN using BDENSITY field - SUBSET : 5 by 16 points (E-Z) - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... -! 6/2015 - test degenerate single point target axis -list/order=($pax1)($aax)($REG1) temp[($gax)(density)=35] - !-> list/order=YZ/i=1 /l=1/m=1/n=1 temp[gZ(density)=35] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on Z@LIN using DENSITY field - SUBSET : 5 points (Y) - Z : 35 - X : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 -list/order=($pax1)($aax)($REG1) btemp[($gax)(bdensity)=35] - !-> list/order=YZ/i=1 /l=1/m=1/n=1 btemp[gZ(bdensity)=35] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on Z@LIN using BDENSITY field - SUBSET : 5 points (Y) - Z : 35 - X : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 - - -! using piecewise linear averaging -list/order=($pax1)($aax)($REG1) temp[($gax)(density)=5:80:15@plave] - !-> list/order=YZ/i=1 /l=1/m=1/n=1 temp[gZ(density)=5:80:15@plave] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on Z@PLAVE using DENSITY field - SUBSET : 5 by 6 points (Y-Z) - X : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... -list/order=($pax2)($aax)($REG2) temp[($gax)(density)=5:80:15@plave] - !-> list/order=EZ/i=1/j=1 /l=1 /n=1 temp[gZ(density)=5:80:15@plave] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on Z@PLAVE using DENSITY field - SUBSET : 5 by 6 points (E-Z) - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... -list/order=($pax1)($aax)($REG1) btemp[($gax)(bdensity)=5:80:15@plave] - !-> list/order=YZ/i=1 /l=1/m=1/n=1 btemp[gZ(bdensity)=5:80:15@plave] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on Z@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (Y-Z) - X : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... -list/order=($pax2)($aax)($REG2) btemp[($gax)(bdensity)=5:80:15@plave] - !-> list/order=EZ/i=1/j=1 /l=1 /n=1 btemp[gZ(bdensity)=5:80:15@plave] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on Z@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (E-Z) - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... -! 6/2015 - test degenerate single point target axis -list/order=($pax1)($aax)($REG1) temp[($gax)(density)=35:55@plave] - !-> list/order=YZ/i=1 /l=1/m=1/n=1 temp[gZ(density)=35:55@plave] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001* _Z[GZ=ZA] ^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on Z@PLAVE using DENSITY field - SUBSET : 5 points (Y) - Z : 35 to 55 - X : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 -list/order=($pax1)($aax)($REG1) btemp[($gax)(bdensity)=35:55@plave] - !-> list/order=YZ/i=1 /l=1/m=1/n=1 btemp[gZ(bdensity)=35:55@plave] - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0.0001*(800-_Z[GZ=ZA])^2 + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on Z@PLAVE using BDENSITY field - SUBSET : 5 points (Y) - Z : 35 to 55 - X : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 - -!********************************************************************************* -!********************************************************************************* -EXIT/SCRIPT -CANC MODE VERIFY - -***************************** -********** X,Z,F *********** -***************************** - - VARIABLE : 0.0001* _X[GX=XA] ^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - SUBSET : 5 by 7 points (Z-X) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 1.00000 1.00000 1.00000 1.00000 1.00000 - 200 / 2: 4.00000 4.00000 4.00000 4.00000 4.00000 - 300 / 3: 9.00000 9.00000 9.00000 9.00000 9.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 25.00000 25.00000 25.00000 25.00000 25.00000 - 600 / 6: 36.00000 36.00000 36.00000 36.00000 36.00000 - 700 / 7: 49.00000 49.00000 49.00000 49.00000 49.00000 - VARIABLE : 0.0001*(800-_X[GX=XA])^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - SUBSET : 5 by 7 points (Z-X) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 49.00000 49.00000 49.00000 49.00000 49.00000 - 200 / 2: 36.00000 36.00000 36.00000 36.00000 36.00000 - 300 / 3: 25.00000 25.00000 25.00000 25.00000 25.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 9.00000 9.00000 9.00000 9.00000 9.00000 - 600 / 6: 4.00000 4.00000 4.00000 4.00000 4.00000 - 700 / 7: 1.00000 1.00000 1.00000 1.00000 1.00000 - VARIABLE : IF (_K EQ 5 OR _N EQ 5) AND _I LE 2 THEN 1/0 ELSE DENSITY4 - SUBSET : 5 by 7 points (Z-X) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 10.00000 10.00000 20.00000 10.00000 .... - 200 / 2: 20.00000 20.00000 10.00000 20.00000 .... - 300 / 3: 30.00000 30.00000 30.00000 30.00000 30.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 50.00000 50.00000 50.00000 50.00000 50.00000 - 600 / 6: 60.00000 60.00000 60.00000 30.00000 60.00000 - 700 / 7: 70.00000 70.00000 70.00000 70.00000 70.00000 - VARIABLE : IF (_K EQ 5 OR _N EQ 5) AND (8-_I) LE 2 THEN 1/0 ELSE BDENSITY4 - SUBSET : 5 by 7 points (Z-X) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 70.00000 70.00000 70.00000 70.00000 70.00000 - 200 / 2: 60.00000 60.00000 60.00000 30.00000 60.00000 - 300 / 3: 50.00000 50.00000 50.00000 50.00000 50.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 30.00000 30.00000 30.00000 30.00000 30.00000 - 600 / 6: 20.00000 20.00000 10.00000 20.00000 .... - 700 / 7: 10.00000 10.00000 20.00000 10.00000 .... - VARIABLE : 0.0001* _X[GX=XA] ^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on X@LIN using DENSITY field - SUBSET : 5 by 16 points (Z-X) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0.0001* _X[GX=XA] ^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on X@LIN using DENSITY field - SUBSET : 5 by 16 points (F-X) - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0.0001*(800-_X[GX=XA])^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on X@LIN using BDENSITY field - SUBSET : 5 by 16 points (Z-X) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0.0001*(800-_X[GX=XA])^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on X@LIN using BDENSITY field - SUBSET : 5 by 16 points (F-X) - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0.0001* _X[GX=XA] ^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on X@LIN using DENSITY field - SUBSET : 5 points (Z) - X : 35 - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 - VARIABLE : 0.0001*(800-_X[GX=XA])^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on X@LIN using BDENSITY field - SUBSET : 5 points (Z) - X : 35 - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 - VARIABLE : 0.0001* _X[GX=XA] ^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on X@PLAVE using DENSITY field - SUBSET : 5 by 6 points (Z-X) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0.0001* _X[GX=XA] ^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on X@PLAVE using DENSITY field - SUBSET : 5 by 6 points (F-X) - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0.0001*(800-_X[GX=XA])^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on X@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (Z-X) - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0.0001*(800-_X[GX=XA])^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on X@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (F-X) - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0.0001* _X[GX=XA] ^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on X@PLAVE using DENSITY field - SUBSET : 5 points (Z) - X : 35 to 55 - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 - VARIABLE : 0.0001*(800-_X[GX=XA])^2 + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on X@PLAVE using BDENSITY field - SUBSET : 5 points (Z) - X : 35 to 55 - Y : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 - -***************************** -********** Y,X,E *********** -***************************** - - VARIABLE : 0*_X[GX=XP] + 0.0001* _Y[GY=YA] ^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - SUBSET : 5 by 7 points (X-Y) - Z : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 1.00000 1.00000 1.00000 1.00000 1.00000 - 200 / 2: 4.00000 4.00000 4.00000 4.00000 4.00000 - 300 / 3: 9.00000 9.00000 9.00000 9.00000 9.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 25.00000 25.00000 25.00000 25.00000 25.00000 - 600 / 6: 36.00000 36.00000 36.00000 36.00000 36.00000 - 700 / 7: 49.00000 49.00000 49.00000 49.00000 49.00000 - VARIABLE : 0*_X[GX=XP] + 0.0001*(800-_Y[GY=YA])^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - SUBSET : 5 by 7 points (X-Y) - Z : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 49.00000 49.00000 49.00000 49.00000 49.00000 - 200 / 2: 36.00000 36.00000 36.00000 36.00000 36.00000 - 300 / 3: 25.00000 25.00000 25.00000 25.00000 25.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 9.00000 9.00000 9.00000 9.00000 9.00000 - 600 / 6: 4.00000 4.00000 4.00000 4.00000 4.00000 - 700 / 7: 1.00000 1.00000 1.00000 1.00000 1.00000 - VARIABLE : IF (_I EQ 5 OR _M EQ 5) AND _J LE 2 THEN 1/0 ELSE DENSITY4 - SUBSET : 5 by 7 points (X-Y) - Z : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 10.00000 10.00000 20.00000 10.00000 .... - 200 / 2: 20.00000 20.00000 10.00000 20.00000 .... - 300 / 3: 30.00000 30.00000 30.00000 30.00000 30.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 50.00000 50.00000 50.00000 50.00000 50.00000 - 600 / 6: 60.00000 60.00000 60.00000 30.00000 60.00000 - 700 / 7: 70.00000 70.00000 70.00000 70.00000 70.00000 - VARIABLE : IF (_I EQ 5 OR _M EQ 5) AND (8-_J) LE 2 THEN 1/0 ELSE BDENSITY4 - SUBSET : 5 by 7 points (X-Y) - Z : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 70.00000 70.00000 70.00000 70.00000 70.00000 - 200 / 2: 60.00000 60.00000 60.00000 30.00000 60.00000 - 300 / 3: 50.00000 50.00000 50.00000 50.00000 50.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 30.00000 30.00000 30.00000 30.00000 30.00000 - 600 / 6: 20.00000 20.00000 10.00000 20.00000 .... - 700 / 7: 10.00000 10.00000 20.00000 10.00000 .... - VARIABLE : 0*_X[GX=XP] + 0.0001* _Y[GY=YA] ^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on Y@LIN using DENSITY field - SUBSET : 5 by 16 points (X-Y) - Z : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0.0001* _Y[GY=YA] ^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on Y@LIN using DENSITY field - SUBSET : 5 by 16 points (E-Y) - X : 161 - Z : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0.0001*(800-_Y[GY=YA])^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on Y@LIN using BDENSITY field - SUBSET : 5 by 16 points (X-Y) - Z : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0.0001*(800-_Y[GY=YA])^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on Y@LIN using BDENSITY field - SUBSET : 5 by 16 points (E-Y) - X : 161 - Z : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0.0001* _Y[GY=YA] ^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on Y@LIN using DENSITY field - SUBSET : 5 points (X) - Y : 35 - Z : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 - VARIABLE : 0*_X[GX=XP] + 0.0001*(800-_Y[GY=YA])^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on Y@LIN using BDENSITY field - SUBSET : 5 points (X) - Y : 35 - Z : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 - VARIABLE : 0*_X[GX=XP] + 0.0001* _Y[GY=YA] ^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on Y@PLAVE using DENSITY field - SUBSET : 5 by 6 points (X-Y) - Z : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0.0001* _Y[GY=YA] ^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on Y@PLAVE using DENSITY field - SUBSET : 5 by 6 points (E-Y) - X : 161 - Z : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0.0001*(800-_Y[GY=YA])^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on Y@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (X-Y) - Z : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0.0001*(800-_Y[GY=YA])^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on Y@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (E-Y) - X : 161 - Z : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0.0001* _Y[GY=YA] ^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on Y@PLAVE using DENSITY field - SUBSET : 5 points (X) - Y : 35 to 55 - Z : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 - VARIABLE : 0*_X[GX=XP] + 0.0001*(800-_Y[GY=YA])^2 + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on Y@PLAVE using BDENSITY field - SUBSET : 5 points (X) - Y : 35 to 55 - Z : 161 - T : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 - -***************************** -********** T,Y,F *********** -***************************** - - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001* _T[GT=TA] ^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - SUBSET : 5 by 7 points (Y-T) - X : 161 - Z : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 1.00000 1.00000 1.00000 1.00000 1.00000 - 200 / 2: 4.00000 4.00000 4.00000 4.00000 4.00000 - 300 / 3: 9.00000 9.00000 9.00000 9.00000 9.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 25.00000 25.00000 25.00000 25.00000 25.00000 - 600 / 6: 36.00000 36.00000 36.00000 36.00000 36.00000 - 700 / 7: 49.00000 49.00000 49.00000 49.00000 49.00000 - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001*(800-_T[GT=TA])^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - SUBSET : 5 by 7 points (Y-T) - X : 161 - Z : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 49.00000 49.00000 49.00000 49.00000 49.00000 - 200 / 2: 36.00000 36.00000 36.00000 36.00000 36.00000 - 300 / 3: 25.00000 25.00000 25.00000 25.00000 25.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 9.00000 9.00000 9.00000 9.00000 9.00000 - 600 / 6: 4.00000 4.00000 4.00000 4.00000 4.00000 - 700 / 7: 1.00000 1.00000 1.00000 1.00000 1.00000 - VARIABLE : IF (_J EQ 5 OR _N EQ 5) AND _L LE 2 THEN 1/0 ELSE DENSITY4 - SUBSET : 5 by 7 points (Y-T) - X : 161 - Z : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 10.00000 10.00000 20.00000 10.00000 .... - 200 / 2: 20.00000 20.00000 10.00000 20.00000 .... - 300 / 3: 30.00000 30.00000 30.00000 30.00000 30.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 50.00000 50.00000 50.00000 50.00000 50.00000 - 600 / 6: 60.00000 60.00000 60.00000 30.00000 60.00000 - 700 / 7: 70.00000 70.00000 70.00000 70.00000 70.00000 - VARIABLE : IF (_J EQ 5 OR _N EQ 5) AND (8-_L) LE 2 THEN 1/0 ELSE BDENSITY4 - SUBSET : 5 by 7 points (Y-T) - X : 161 - Z : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 70.00000 70.00000 70.00000 70.00000 70.00000 - 200 / 2: 60.00000 60.00000 60.00000 30.00000 60.00000 - 300 / 3: 50.00000 50.00000 50.00000 50.00000 50.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 30.00000 30.00000 30.00000 30.00000 30.00000 - 600 / 6: 20.00000 20.00000 10.00000 20.00000 .... - 700 / 7: 10.00000 10.00000 20.00000 10.00000 .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001* _T[GT=TA] ^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on T@LIN using DENSITY field - SUBSET : 5 by 16 points (Y-T) - X : 161 - Z : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001* _T[GT=TA] ^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on T@LIN using DENSITY field - SUBSET : 5 by 16 points (F-T) - X : 161 - Y : 161 - Z : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001*(800-_T[GT=TA])^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on T@LIN using BDENSITY field - SUBSET : 5 by 16 points (Y-T) - X : 161 - Z : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001*(800-_T[GT=TA])^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 5 delta on T@LIN using BDENSITY field - SUBSET : 5 by 16 points (F-T) - X : 161 - Y : 161 - Z : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001* _T[GT=TA] ^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on T@LIN using DENSITY field - SUBSET : 5 points (Y) - T : 35 - X : 161 - Z : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001*(800-_T[GT=TA])^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on T@LIN using BDENSITY field - SUBSET : 5 points (Y) - T : 35 - X : 161 - Z : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001* _T[GT=TA] ^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on T@PLAVE using DENSITY field - SUBSET : 5 by 6 points (Y-T) - X : 161 - Z : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001* _T[GT=TA] ^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on T@PLAVE using DENSITY field - SUBSET : 5 by 6 points (F-T) - X : 161 - Y : 161 - Z : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001*(800-_T[GT=TA])^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on T@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (Y-T) - X : 161 - Z : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001*(800-_T[GT=TA])^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: 15 delta on T@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (F-T) - X : 161 - Y : 161 - Z : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001* _T[GT=TA] ^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on T@PLAVE using DENSITY field - SUBSET : 5 points (Y) - T : 35 to 55 - X : 161 - Z : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0.0001*(800-_T[GT=TA])^2 + 0*_E[GE=EP] + 0*_F[GF=FP] - regrid: on T@PLAVE using BDENSITY field - SUBSET : 5 points (Y) - T : 35 to 55 - X : 161 - Z : 161 - E : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 - -***************************** -********** E,Z,F *********** -***************************** - - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001* _E[GE=EA] ^2 + 0*_F[GF=FP] - SUBSET : 5 by 7 points (Z-E) - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 1.00000 1.00000 1.00000 1.00000 1.00000 - 200 / 2: 4.00000 4.00000 4.00000 4.00000 4.00000 - 300 / 3: 9.00000 9.00000 9.00000 9.00000 9.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 25.00000 25.00000 25.00000 25.00000 25.00000 - 600 / 6: 36.00000 36.00000 36.00000 36.00000 36.00000 - 700 / 7: 49.00000 49.00000 49.00000 49.00000 49.00000 - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001*(800-_E[GE=EA])^2 + 0*_F[GF=FP] - SUBSET : 5 by 7 points (Z-E) - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 49.00000 49.00000 49.00000 49.00000 49.00000 - 200 / 2: 36.00000 36.00000 36.00000 36.00000 36.00000 - 300 / 3: 25.00000 25.00000 25.00000 25.00000 25.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 9.00000 9.00000 9.00000 9.00000 9.00000 - 600 / 6: 4.00000 4.00000 4.00000 4.00000 4.00000 - 700 / 7: 1.00000 1.00000 1.00000 1.00000 1.00000 - VARIABLE : IF (_K EQ 5 OR _N EQ 5) AND _M LE 2 THEN 1/0 ELSE DENSITY4 - SUBSET : 5 by 7 points (Z-E) - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 10.00000 10.00000 20.00000 10.00000 .... - 200 / 2: 20.00000 20.00000 10.00000 20.00000 .... - 300 / 3: 30.00000 30.00000 30.00000 30.00000 30.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 50.00000 50.00000 50.00000 50.00000 50.00000 - 600 / 6: 60.00000 60.00000 60.00000 30.00000 60.00000 - 700 / 7: 70.00000 70.00000 70.00000 70.00000 70.00000 - VARIABLE : IF (_K EQ 5 OR _N EQ 5) AND (8-_M) LE 2 THEN 1/0 ELSE BDENSITY4 - SUBSET : 5 by 7 points (Z-E) - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 70.00000 70.00000 70.00000 70.00000 70.00000 - 200 / 2: 60.00000 60.00000 60.00000 30.00000 60.00000 - 300 / 3: 50.00000 50.00000 50.00000 50.00000 50.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 30.00000 30.00000 30.00000 30.00000 30.00000 - 600 / 6: 20.00000 20.00000 10.00000 20.00000 .... - 700 / 7: 10.00000 10.00000 20.00000 10.00000 .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001* _E[GE=EA] ^2 + 0*_F[GF=FP] - regrid: 5 delta on E@LIN using DENSITY field - SUBSET : 5 by 16 points (Z-E) - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001* _E[GE=EA] ^2 + 0*_F[GF=FP] - regrid: 5 delta on E@LIN using DENSITY field - SUBSET : 5 by 16 points (F-E) - X : 161 - Y : 161 - Z : 161 - T : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001*(800-_E[GE=EA])^2 + 0*_F[GF=FP] - regrid: 5 delta on E@LIN using BDENSITY field - SUBSET : 5 by 16 points (Z-E) - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001*(800-_E[GE=EA])^2 + 0*_F[GF=FP] - regrid: 5 delta on E@LIN using BDENSITY field - SUBSET : 5 by 16 points (F-E) - X : 161 - Y : 161 - Z : 161 - T : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001* _E[GE=EA] ^2 + 0*_F[GF=FP] - regrid: on E@LIN using DENSITY field - SUBSET : 5 points (Z) - E : 35 - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001*(800-_E[GE=EA])^2 + 0*_F[GF=FP] - regrid: on E@LIN using BDENSITY field - SUBSET : 5 points (Z) - E : 35 - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001* _E[GE=EA] ^2 + 0*_F[GF=FP] - regrid: 15 delta on E@PLAVE using DENSITY field - SUBSET : 5 by 6 points (Z-E) - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001* _E[GE=EA] ^2 + 0*_F[GF=FP] - regrid: 15 delta on E@PLAVE using DENSITY field - SUBSET : 5 by 6 points (F-E) - X : 161 - Y : 161 - Z : 161 - T : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001*(800-_E[GE=EA])^2 + 0*_F[GF=FP] - regrid: 15 delta on E@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (Z-E) - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001*(800-_E[GE=EA])^2 + 0*_F[GF=FP] - regrid: 15 delta on E@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (F-E) - X : 161 - Y : 161 - Z : 161 - T : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001* _E[GE=EA] ^2 + 0*_F[GF=FP] - regrid: on E@PLAVE using DENSITY field - SUBSET : 5 points (Z) - E : 35 to 55 - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0.0001*(800-_E[GE=EA])^2 + 0*_F[GF=FP] - regrid: on E@PLAVE using BDENSITY field - SUBSET : 5 points (Z) - E : 35 to 55 - X : 161 - Y : 161 - T : 161 - F : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 - -***************************** -********** F,X,T *********** -***************************** - - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001* _F[GF=FA] ^2 - SUBSET : 5 by 7 points (X-F) - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 1.00000 1.00000 1.00000 1.00000 1.00000 - 200 / 2: 4.00000 4.00000 4.00000 4.00000 4.00000 - 300 / 3: 9.00000 9.00000 9.00000 9.00000 9.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 25.00000 25.00000 25.00000 25.00000 25.00000 - 600 / 6: 36.00000 36.00000 36.00000 36.00000 36.00000 - 700 / 7: 49.00000 49.00000 49.00000 49.00000 49.00000 - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001*(800-_F[GF=FA])^2 - SUBSET : 5 by 7 points (X-F) - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 49.00000 49.00000 49.00000 49.00000 49.00000 - 200 / 2: 36.00000 36.00000 36.00000 36.00000 36.00000 - 300 / 3: 25.00000 25.00000 25.00000 25.00000 25.00000 - 400 / 4: 16.00000 16.00000 16.00000 16.00000 16.00000 - 500 / 5: 9.00000 9.00000 9.00000 9.00000 9.00000 - 600 / 6: 4.00000 4.00000 4.00000 4.00000 4.00000 - 700 / 7: 1.00000 1.00000 1.00000 1.00000 1.00000 - VARIABLE : IF (_I EQ 5 OR _L EQ 5) AND _N LE 2 THEN 1/0 ELSE DENSITY4 - SUBSET : 5 by 7 points (X-F) - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 10.00000 10.00000 20.00000 10.00000 .... - 200 / 2: 20.00000 20.00000 10.00000 20.00000 .... - 300 / 3: 30.00000 30.00000 30.00000 30.00000 30.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 50.00000 50.00000 50.00000 50.00000 50.00000 - 600 / 6: 60.00000 60.00000 60.00000 30.00000 60.00000 - 700 / 7: 70.00000 70.00000 70.00000 70.00000 70.00000 - VARIABLE : IF (_I EQ 5 OR _L EQ 5) AND (8-_N) LE 2 THEN 1/0 ELSE BDENSITY4 - SUBSET : 5 by 7 points (X-F) - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 100 / 1: 70.00000 70.00000 70.00000 70.00000 70.00000 - 200 / 2: 60.00000 60.00000 60.00000 30.00000 60.00000 - 300 / 3: 50.00000 50.00000 50.00000 50.00000 50.00000 - 400 / 4: 40.00000 20.00000 40.00000 40.00000 40.00000 - 500 / 5: 30.00000 30.00000 30.00000 30.00000 30.00000 - 600 / 6: 20.00000 20.00000 10.00000 20.00000 .... - 700 / 7: 10.00000 10.00000 20.00000 10.00000 .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001* _F[GF=FA] ^2 - regrid: 5 delta on F@LIN using DENSITY field - SUBSET : 5 by 16 points (X-F) - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001* _F[GF=FA] ^2 - regrid: 5 delta on F@LIN using DENSITY field - SUBSET : 5 by 16 points (T-F) - X : 161 - Y : 161 - Z : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001*(800-_F[GF=FA])^2 - regrid: 5 delta on F@LIN using BDENSITY field - SUBSET : 5 by 16 points (X-F) - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001*(800-_F[GF=FA])^2 - regrid: 5 delta on F@LIN using BDENSITY field - SUBSET : 5 by 16 points (T-F) - X : 161 - Y : 161 - Z : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 10 / 2: 1.00000 1.00000 4.00000 1.00000 .... - 15 / 3: 2.50000 2.50000 .... 2.50000 .... - 20 / 4: 4.00000 .... .... 4.00000 .... - 25 / 5: 6.50000 .... 7.75000 6.50000 .... - 30 / 6: 9.00000 .... 9.00000 .... 9.00000 - 35 / 7: 12.50000 20.50000 12.50000 .... 12.50000 - 40 / 8: 16.00000 22.00000 16.00000 .... 16.00000 - 45 / 9: 20.50000 23.50000 20.50000 .... 20.50000 - 50 / 10: 25.00000 25.00000 25.00000 .... 25.00000 - 55 / 11: 30.50000 30.50000 30.50000 44.12500 30.50000 - 60 / 12: 36.00000 36.00000 36.00000 45.75000 36.00000 - 65 / 13: 42.50000 42.50000 42.50000 47.37500 42.50000 - 70 / 14: 49.00000 49.00000 49.00000 49.00000 49.00000 - 75 / 15: .... .... .... .... .... - 80 / 16: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001* _F[GF=FA] ^2 - regrid: on F@LIN using DENSITY field - SUBSET : 5 points (X) - F : 35 - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001*(800-_F[GF=FA])^2 - regrid: on F@LIN using BDENSITY field - SUBSET : 5 points (X) - F : 35 - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 12.50000 20.50000 12.50000 12.50000 12.50000 - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001* _F[GF=FA] ^2 - regrid: 15 delta on F@PLAVE using DENSITY field - SUBSET : 5 by 6 points (X-F) - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001* _F[GF=FA] ^2 - regrid: 15 delta on F@PLAVE using DENSITY field - SUBSET : 5 by 6 points (T-F) - X : 161 - Y : 161 - Z : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001*(800-_F[GF=FA])^2 - regrid: 15 delta on F@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (X-F) - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001*(800-_F[GF=FA])^2 - regrid: 15 delta on F@PLAVE using BDENSITY field - SUBSET : 5 by 6 points (T-F) - X : 161 - Y : 161 - Z : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 5 / 1: .... .... .... .... .... - 20 / 2: 4.37500 .... .... 4.37500 .... - 35 / 3: 12.58333 .... 12.63542 .... .... - 50 / 4: 25.37500 26.50000 25.37500 .... 25.37500 - 65 / 5: .... .... .... .... .... - 80 / 6: .... .... .... .... .... - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001* _F[GF=FA] ^2 - regrid: on F@PLAVE using DENSITY field - SUBSET : 5 points (X) - F : 35 to 55 - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 - VARIABLE : 0*_X[GX=XP] + 0*_Y[GY=YP] + 0*_Z[GZ=ZP] + 0*_T[GT=TP] + 0*_E[GE=EP] + 0.0001*(800-_F[GF=FA])^2 - regrid: on F@PLAVE using BDENSITY field - SUBSET : 5 points (X) - F : 35 to 55 - Y : 161 - Z : 161 - T : 161 - E : 161 - 161 162 163 164 165 - 1 2 3 4 5 - 20.75000 24.00000 20.75000 .... 20.75000 - -GO bn_reset bn_plot_ribbon_gaploc -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot_ribbon_gaploc -GO bn_plot_ribbon_gaploc -! bn_plot_ribbon_gaploc.jnl -! 7/20/2015 *acm* new PLOT/VS/RIBBON/GAPLOC -! -! If a trajectory leaves the selected region and then travels -! back into the region we want to pick up the pen along that -! edge, not connect the points. - -! Note Ribbon plots define a lot of color/line combos, so -! lots of ribbon overlays on a page need either SHASET RESET or -! use of fewer than the default number of levels. - -let xpts = {1,2,3,4,5} -let ypts = {1,1,1,1,1} -let color = {1,2,3,4,5} -let gvar = {0,0,1,0,0} -plot/vs/ribbon/thick/line/lev=10/sym=21/siz=.3 xpts, 10*ypts, color -plot/ov/ribbon/nolab/vs/thick/line/lev=10/sym=21/siz=.3/gapl xpts, 10.2*ypts, color, gvar -plot/ov/ribbon/nolab/fast/vs/thick/line/lev=10/sym=21/siz=.3 xpts, 9.9*ypts, color -plot/ov/ribbon/nolab/fast/vs/thick/line/lev=10/sym=21/siz=.3/gap xpts, 9.7*ypts, color, gvar - -! DSGTBD -! The original file came from SOCAT; it has all depths missing. -! Also, the masking-style expression used to define gaploc below does not -! work at least for this trajectory set as of 10/2/2017. - -! This file is a version dsg attributes pulled out. - -use 39839D6273F1749BABAD6C1441B2BBDD_netcdf_notdsg.nc - -! The line is connected across what should be a gap -set view left -plot/vs/hlim=63.5:68/ribbon/line/thick=3/key longitude, latitude, fco2_recommended - -! The gaploc variable is 1 at the location marking the start of gaps. -let gaploc = if sample_number[I=@DDF] NE 1 THEN 1 ELSE 0 - -! Or, because DDF on an axis with units will get those units applied, use a shift: -let gap = sample_number - sample_number[i=@shf:-1] -let gaploc = if gap ne 1 then 1 else 0 - -set view right -plot/vs/hlim=63.5:68/ribbon/line/thick=3/key/gap longitude, latitude, fco2_recommended, gaploc - -! Intentional errors. Qualifier needs 4 arguments. It does not (currently) apply to -! other styles of line plots. -set mode ignore -plot/vs/thick/line/sym=21/siz=.3/ribbon/gap xpts, 10*ypts, color -plot/vs/thick/line/sym=21/siz=0.3/gap xpts, 10*ypts, 10.1*ypts, 9.93*ypts, gvar -plot/ov/nolab/vs/thick/line/sym=21/siz=.3/gapl xpts, color, gvar -set mode/last ignore - -GO bn_reset bn_time_short_axes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_time_short_axes -GO bn_time_short_axes -! bn_time_short_axes.jnl -! testing time axis style with HH:MM on the time axis labels. - -use timesec - -plot/t="21-aug-2015:00:00":"21-aug-2015:04:30" airt -plot/axes=0,1,1,0/t="21-aug-2015:01:15":"21-aug-2015:03:30" airt -plot/t="21-aug-2015:01:15":"21-aug-2015:12:00" airt - - -plot/trans/t="21-aug-2015:00:00":"21-aug-2015:04:30" airt -plot/trans/t="21-aug-2015:01:15":"21-aug-2015:03:30" airt -plot/trans/t="21-aug-2015:01:15":"21-aug-2015:12:00" airt - -! 2D plots - -define axis/x=0:360:1/units=degrees_east lonax -let var2d = airt + 0.1*x[gx=lonax] - -shade/t="21-aug-2015:00:00":"21-aug-2015:04:30" var2d -fill/t="21-aug-2015:01:15":"21-aug-2015:03:30" var2d -shade/t="21-aug-2015:01:15":"21-aug-2015:12:00" var2d - - -shade/trans/t="21-aug-2015:00:00":"21-aug-2015:04:30" var2d -fill/trans/t="21-aug-2015:01:15":"21-aug-2015:03:30" var2d -shade/trans/t="21-aug-2015:01:15":"21-aug-2015:12:00" var2d - -GO bn_reset bn_floatstr_extended -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_floatstr_extended -GO bn_floatstr_extended -! bn_floatstr_extended.jnl -! test use of Integer and zero-filled formats in FLOATSTR function (Ferret v6.95) -! 9/28/2015 - - -LET string = FLOATSTR({3.14159,2.71828},"(i3)") -LIST string - VARIABLE : FLOATSTR({3.14159,2.71828},"(i3)") - SUBSET : 2 points (X) - 1 / 1:" 3" - 2 / 2:" 2" - -LET string = FLOATSTR({3.14159,2.71828},"(i3.3)") -LIST string - VARIABLE : FLOATSTR({3.14159,2.71828},"(i3.3)") - SUBSET : 2 points (X) - 1 / 1:"003" - 2 / 2:"002" - -LET string = FLOATSTR({3.14159,2.71828},"(i03)") -LIST string - VARIABLE : FLOATSTR({3.14159,2.71828},"(i03)") - SUBSET : 2 points (X) - 1 / 1:"003" - 2 / 2:"002" - -! Missing data returned as the null string -LET string = FLOATSTR({3.14159,2.71828,},"(i3)") -LIST string - VARIABLE : FLOATSTR({3.14159,2.71828,},"(i3)") - SUBSET : 3 points (X) - 1 / 1:" 3" - 2 / 2:" 2" - 3 / 3:"" - -! Test some large and small values -LET var = {3.14159,2.71828,} -LIST FLOATSTR(36*var,"(i5)") - VARIABLE : FLOATSTR(36*VAR,"(i5)") - SUBSET : 3 points (X) - 1 / 1:" 113" - 2 / 2:" 97" - 3 / 3:"" -LIST FLOATSTR(36*var,"(i4.3)") - VARIABLE : FLOATSTR(36*VAR,"(i4.3)") - SUBSET : 3 points (X) - 1 / 1:" 113" - 2 / 2:" 097" - 3 / 3:"" -LIST FLOATSTR(1.e14*var,"(i12)") - VARIABLE : FLOATSTR(1.E14*VAR,"(i12)") - SUBSET : 3 points (X) - 1 / 1:" -2147483648" - 2 / 2:" -2147483648" - 3 / 3:"" -LIST FLOATSTR(1.e-14*var,"(i5)") - VARIABLE : FLOATSTR(1.E-14*VAR,"(i5)") - SUBSET : 3 points (X) - 1 / 1:" 0" - 2 / 2:" 0" - 3 / 3:"" - -! Result shape is inherited from the input variable -USE gt4d011.cdf -LIST/I=100/J=36:38/T=1-dec-1982:1-jan-1983 FLOATSTR(10000*tauy, "(i4)") - VARIABLE : FLOATSTR(10000*TAUY, "(i4)") - FILENAME : gt4d011.cdf - SUBSET : 3 by 6 points (LATITUDE-TIME) - LONGITUDE: 130W - 3S 2.67S 2.33S - 36 37 38 - 28-NOV-1982 22 / 18:"-271""-240""-208" - 05-DEC-1982 00 / 19:"-283""-251""-220" - 11-DEC-1982 02 / 20:"-294""-263""-231" - 17-DEC-1982 04 / 21:"-356""-323""-290" - 23-DEC-1982 06 / 22:"-469""-433""-397" - 29-DEC-1982 08 / 23:"-583""-543""-503" - -USE coads_climatology - -! i4.4 is the same as i04 - -LET var = FLOATSTR(sst,"(i4.4)") -LET var = FLOATSTR(sst,"(i04)") - -LIST/X=165W:135W/Y=-50/L=1 var - VARIABLE : FLOATSTR(SST,"(i04)") - FILENAME : coads_climatology.cdf - SUBSET : 16 points (LONGITUDE) - LATITUDE : 50S (interpolated) - TIME : 16-JAN 06:00 - 165W / 88:"" - 163W / 89:"" - 161W / 90:"" - 159W / 91:"" - 157W / 92:"" - 155W / 93:"" - 153W / 94:"" - 151W / 95:"" - 149W / 96:"" - 147W / 97:"" - 145W / 98:"" - 143W / 99:"" - 141W / 100:"" - 139W / 101:"" - 137W / 102:"" - 135W / 103:"" - -! Negative numbers cannot be listed with (i5.5) but can with (I05) -LET var1 = FLOATSTR(sst-10,"(i5.5)") -LET var2 = FLOATSTR(sst-10,"(i05)") - -LIST/X=165W/L=1 var1[j=1:40:2], var2[j=1:40:2] - DATA SET: ./data/coads_climatology.cdf - LATITUDE: 91S to 11S - LONGITUDE: 165W - TIME: 16-JAN 06:00 - Column 1: VAR1[G=4 deg on Y] is FLOATSTR(SST-10,"(i5.5)") (regrid: 4 deg on Y) - Column 2: VAR2[G=4 deg on Y] is FLOATSTR(SST-10,"(i05)") (regrid: 4 deg on Y) - VAR1 VAR2 -89S / 1: "" "" -85S / 2: "" "" -81S / 3: "" "" -77S / 4: "*****" "00-10" -73S / 5: "*****" "00-11" -69S / 6: "*****" "000-9" -65S / 7: "*****" "00-10" -61S / 8: "*****" "000-7" -57S / 9: "*****" "000-3" -53S / 10: "*****" "000-1" -49S / 11: "00002" "00002" -45S / 12: "00004" "00004" -41S / 13: "00006" "00006" -37S / 14: "00008" "00008" -33S / 15: "00010" "00010" -29S / 16: "00012" "00012" -25S / 17: "00015" "00015" -21S / 18: "00017" "00017" -17S / 19: "00018" "00018" -13S / 20: "00019" "00019" - - -! F0 format for zero-filled F format - -let a = {1.1, 3.7} -list floatstr(a, "(f04.1)") - VARIABLE : FLOATSTR(A, "(f04.1)") - SUBSET : 2 points (X) - 1 / 1:"01.1" - 2 / 2:"03.7" - -let a = {1.1, 13.7} -list floatstr(a, "(f06.1)") - VARIABLE : FLOATSTR(A, "(f06.1)") - SUBSET : 2 points (X) - 1 / 1:"0001.1" - 2 / 2:"0013.7" - -let a = {-1.1, 13.7} -list floatstr(a, "(f04.1)") - VARIABLE : FLOATSTR(A, "(f04.1)") - SUBSET : 2 points (X) - 1 / 1:"-1.1" - 2 / 2:"13.7" - -! testing negative numbers and null/missing results -LET var1 = FLOATSTR(sst-20,"(f5.1)") -LET var2 = FLOATSTR(sst-20,"(f05.1)") -LIST/X=165W/L=1 var1[j=1:40:2], var2[j=1:40:2] - DATA SET: ./data/coads_climatology.cdf - LATITUDE: 91S to 11S - LONGITUDE: 165W - TIME: 16-JAN 06:00 - Column 1: VAR1[G=4 deg on Y] is FLOATSTR(SST-20,"(f5.1)") (regrid: 4 deg on Y) - Column 2: VAR2[G=4 deg on Y] is FLOATSTR(SST-20,"(f05.1)") (regrid: 4 deg on Y) - VAR1 VAR2 -89S / 1: "" "" -85S / 2: "" "" -81S / 3: "" "" -77S / 4: "-20.4" "-20.4" -73S / 5: "-21.0" "-21.0" -69S / 6: "-19.8" "-19.8" -65S / 7: "-20.0" "-20.0" -61S / 8: "-17.3" "-17.3" -57S / 9: "-13.9" "-13.9" -53S / 10: "-11.2" "-11.2" -49S / 11: " -7.5" "0-7.5" -45S / 12: " -5.7" "0-5.7" -41S / 13: " -3.5" "0-3.5" -37S / 14: " -1.3" "0-1.3" -33S / 15: " 0.9" "000.9" -29S / 16: " 3.0" "003.0" -25S / 17: " 5.1" "005.1" -21S / 18: " 7.5" "007.5" -17S / 19: " 8.1" "008.1" -13S / 20: " 9.7" "009.7" - -! Now test (F0.0) and (I0) formats which return the -! shortest possible value without the fractional part. -! Per marco.van-hulten@lsce.ipsl.fr - this is legal in -! gfortran, so allow it. - -LET var1 = FLOATSTR(sst-20,"(f0.0)") -LET var2 = FLOATSTR(sst-20,"(I0)") -LIST/X=165W/L=1 var1[j=1:40:2], var2[j=1:40:2] - DATA SET: ./data/coads_climatology.cdf - LATITUDE: 91S to 11S - LONGITUDE: 165W - TIME: 16-JAN 06:00 - Column 1: VAR1[G=4 deg on Y] is FLOATSTR(SST-20,"(f0.0)") (regrid: 4 deg on Y) - Column 2: VAR2[G=4 deg on Y] is FLOATSTR(SST-20,"(I0)") (regrid: 4 deg on Y) - VAR1 VAR2 -89S / 1: "" "" -85S / 2: "" "" -81S / 3: "" "" -77S / 4: "-20." "-20" -73S / 5: "-21." "-21" -69S / 6: "-20." "-19" -65S / 7: "-20." "-20" -61S / 8: "-17." "-17" -57S / 9: "-14." "-13" -53S / 10: "-11." "-11" -49S / 11: "-7." "-7" -45S / 12: "-6." "-5" -41S / 13: "-4." "-3" -37S / 14: "-1." "-1" -33S / 15: "1." "0" -29S / 16: "3." "2" -25S / 17: "5." "5" -21S / 18: "8." "7" -17S / 19: "8." "8" -13S / 20: "10." "9" - -! *********** v6.96 Additions *********** - -GO bn_reset bn696_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn696_bug_fixes -GO bn696_bug_fixes -! bn696_bug_fixes -! test various fixes that went into version 6.96 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err695_bounds_match_axis -! err695_bounds_match_axis.jnl -! ticket 2321. -! -! The coordinates match the upper bound of each cell -! to machine accuracy. The internal rep of the value -! has pt > bound_hi however. The logic in tm_check_bnds -! handes this. - -use shorttemp.nc - -! Previously showed tbox=0 for every second pt. -sh grid/l=1:4444 temp - GRID GSL1 - name axis # pts start end subset - LON1 LONGITUDE 1 r 97.45W 97.45W full - LAT LATITUDE 1 r 36.65N 36.65N full - PFULL1_1 Z (hpa) 1 r- 3.3236 3.3236 full - TIME34 TIME 4 i 19-JUN-1997 00:00 19-JUN-1997 01:30 full - - L T TBOX TBOXLO TSTEP (days) - 1> 19-JUN-1997 00:00:00 0.02083 18-JUN-1997 23:30:00 0.02083333 - 2> 19-JUN-1997 00:30:00 0.02083 19-JUN-1997 00:00:00 0.04166667 - 3> 19-JUN-1997 01:00:00 0.02083 19-JUN-1997 00:30:00 0.0625 - 4> 19-JUN-1997 01:30:00 0.02083 19-JUN-1997 01:00:00 0.08333333 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err695_show_dat_nodata -! err695_show_dat_nodata.jnl -! ticket 2322 -! -! SHOW DATA noexist should include the dataset name or number -! in the error message. - -USE coads_climatology - -SHOW DATA 1 - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - -SHOW DATA coads_climatology - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - - -! intentional errors -SET MODE ignore -SHOW DATA noexist -SHOW DATA 2 -SHOW DATA/ATT noexist - -SET MODE/LAST ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err695_grave_prec -! err695_grave_prec -! Bug 2323. Large numbers had incorrect results on grave-accent -! evaluations, returning only 8 digits of precision - -list/nohead/p=16 1234567890123456, `1234567890123456` - !-> list/nohead/p=16 1234567890123456, 1234567890123456 -I / *: 1234567890123456. 1234567890123456. -list/nohead/p=16 -1234567890123.456, `-1234567890123.456` - !-> list/nohead/p=16 -1234567890123.456, -1234567890123.456 -I / *: -1234567890123.456 -1234567890123.456 - -! this was ok -list/nohead/p=16 1.234567890123456, `1.1234567890123456` - !-> list/nohead/p=16 1.234567890123456, 1.123456789012346 -I / *: 1.234567890123456 1.123456789012346 - -! check output when asking for lower precision -list/nohead/p=9 1234567890123456, `1234567890123456` - !-> list/nohead/p=9 1234567890123456, 1234567890123456 -I / *: 1.23456789E+15 1.23456789E+15 -list/nohead/p=6 1234567890123456, `1234567890123456` - !-> list/nohead/p=6 1234567890123456, 1234567890123456 -I / *: 1.23457E+15 1.23457E+15 - -let var = 1.23456e+34 -say `var` - !-> MESSAGE/CONTINUE 1.23456E+34 -1.23456E+34 - -say `var,prec=4` - !-> MESSAGE/CONTINUE 1.235E+34 -1.235E+34 - -GO bn_reset bn_bin_regrid -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_bin_regrid -GO bn_bin_regrid -! bin regridding tests - -go bn_bin_regrid.sub X -! Tests of @BIN and @NBIN regridding transforms - -DEFINE AXIS/$1=1:5:1 dcoarse - !-> DEFINE AXIS/X=1:5:1 dcoarse - -! Data on an irregular grid -LET sbin = {1.1, 1.2, 3.5, 4.7, 5} -DEFINE AXIS/$1 irr = sbin - !-> DEFINE AXIS/X irr = sbin -LET var = _$1[G$1=irr] - !-> DEFINE VARIABLE var = _X[GX=irr] - -LET dest = _$1[G$1=dcoarse] - !-> DEFINE VARIABLE dest = _X[GX=dcoarse] -! Compare @AVE and @BIN regridding -LIST dest, var[G$1=dcoarse@ave], var[G$1=dcoarse@BIN], var[G$1=dcoarse@NBIN] - !-> LIST dest, var[GX=dcoarse@ave], var[GX=dcoarse@BIN], var[GX=dcoarse@NBIN] - X: 0.5 to 5.5 - Column 1: DEST is _X[GX=DCOARSE] - Column 2: VAR[G=1 delta on X@AVE] is _X[GX=IRR] (regrid: 1 delta on X@AVE) - Column 3: VAR[G=1 delta on X@BIN] is _X[GX=IRR] (regrid: 1 delta on X@BIN) - Column 4: VAR[G=1 delta on X@NBIN] is _X[GX=IRR] (regrid: 1 delta on X@NBIN) - DEST VAR VAR VAR -1 / 1: 1.000000 1.177778 1.150000 2.000000 -2 / 2: 2.000000 1.545000 .... 0.000000 -3 / 3: 3.000000 3.500000 .... 0.000000 -4 / 4: 4.000000 3.980000 3.500000 1.000000 -5 / 5: 5.000000 4.838462 4.850000 2.000000 - - -! Data on an irregular grid with missing values -LET sbin = {1.1, 2.2, , , 5} -LET var = RESHAPE(sbin, _$1[g$1=irr]) - !-> DEFINE VARIABLE var = RESHAPE(sbin, _X[gX=irr]) -LET dest = _$1[G$1=dcoarse] - !-> DEFINE VARIABLE dest = _X[GX=dcoarse] -LIST dest, var[G$1=dcoarse@ave], var[G$1=dcoarse@BIN], var[G$1=dcoarse@NBIN] - !-> LIST dest, var[GX=dcoarse@ave], var[GX=dcoarse@BIN], var[GX=dcoarse@NBIN] - X: 0.5 to 5.5 - Column 1: DEST is _X[GX=DCOARSE] - Column 2: VAR[G=1 delta on X@AVE] is RESHAPE(SBIN, _X[GX=IRR]) (regrid: 1 delta on X@AVE) - Column 3: VAR[G=1 delta on X@BIN] is RESHAPE(SBIN, _X[GX=IRR]) (regrid: 1 delta on X@BIN) - Column 4: VAR[G=1 delta on X@NBIN] is RESHAPE(SBIN, _X[GX=IRR]) (regrid: 1 delta on X@NBIN) - DEST VAR VAR VAR -1 / 1: 1.000000 1.955556 1.650000 2.000000 -2 / 2: 2.000000 2.200000 .... 0.000000 -3 / 3: 3.000000 .... .... 0.000000 -4 / 4: 4.000000 .... .... 0.000000 -5 / 5: 5.000000 5.000000 5.000000 1.000000 - -LIST dest, var[G$1=dcoarse] - !-> LIST dest, var[GX=dcoarse] - X: 0.5 to 5.5 - Column 1: DEST is _X[GX=DCOARSE] - Column 2: VAR[G=1 delta on X] is RESHAPE(SBIN, _X[GX=IRR]) (regrid: 1 delta on X) - DEST VAR -1 / 1: 1.000000 .... -2 / 2: 2.000000 .... -3 / 3: 3.000000 .... -4 / 4: 4.000000 .... -5 / 5: 5.000000 5.000000 - -go bn_bin_regrid.sub Y -! Tests of @BIN and @NBIN regridding transforms - -DEFINE AXIS/$1=1:5:1 dcoarse - !-> DEFINE AXIS/Y=1:5:1 dcoarse - -! Data on an irregular grid -LET sbin = {1.1, 1.2, 3.5, 4.7, 5} -DEFINE AXIS/$1 irr = sbin - !-> DEFINE AXIS/Y irr = sbin -LET var = _$1[G$1=irr] - !-> DEFINE VARIABLE var = _Y[GY=irr] - -LET dest = _$1[G$1=dcoarse] - !-> DEFINE VARIABLE dest = _Y[GY=dcoarse] -! Compare @AVE and @BIN regridding -LIST dest, var[G$1=dcoarse@ave], var[G$1=dcoarse@BIN], var[G$1=dcoarse@NBIN] - !-> LIST dest, var[GY=dcoarse@ave], var[GY=dcoarse@BIN], var[GY=dcoarse@NBIN] - Y: 0.5 to 5.5 - Column 1: DEST is _Y[GY=DCOARSE] - Column 2: VAR[G=1 delta on Y@AVE] is _Y[GY=IRR] (regrid: 1 delta on Y@AVE) - Column 3: VAR[G=1 delta on Y@BIN] is _Y[GY=IRR] (regrid: 1 delta on Y@BIN) - Column 4: VAR[G=1 delta on Y@NBIN] is _Y[GY=IRR] (regrid: 1 delta on Y@NBIN) - DEST VAR VAR VAR -1 / 1: 1.000000 1.177778 1.150000 2.000000 -2 / 2: 2.000000 1.545000 .... 0.000000 -3 / 3: 3.000000 3.500000 .... 0.000000 -4 / 4: 4.000000 3.980000 3.500000 1.000000 -5 / 5: 5.000000 4.838462 4.850000 2.000000 - - -! Data on an irregular grid with missing values -LET sbin = {1.1, 2.2, , , 5} -LET var = RESHAPE(sbin, _$1[g$1=irr]) - !-> DEFINE VARIABLE var = RESHAPE(sbin, _Y[gY=irr]) -LET dest = _$1[G$1=dcoarse] - !-> DEFINE VARIABLE dest = _Y[GY=dcoarse] -LIST dest, var[G$1=dcoarse@ave], var[G$1=dcoarse@BIN], var[G$1=dcoarse@NBIN] - !-> LIST dest, var[GY=dcoarse@ave], var[GY=dcoarse@BIN], var[GY=dcoarse@NBIN] - Y: 0.5 to 5.5 - Column 1: DEST is _Y[GY=DCOARSE] - Column 2: VAR[G=1 delta on Y@AVE] is RESHAPE(SBIN, _Y[GY=IRR]) (regrid: 1 delta on Y@AVE) - Column 3: VAR[G=1 delta on Y@BIN] is RESHAPE(SBIN, _Y[GY=IRR]) (regrid: 1 delta on Y@BIN) - Column 4: VAR[G=1 delta on Y@NBIN] is RESHAPE(SBIN, _Y[GY=IRR]) (regrid: 1 delta on Y@NBIN) - DEST VAR VAR VAR -1 / 1: 1.000000 1.955556 1.650000 2.000000 -2 / 2: 2.000000 2.200000 .... 0.000000 -3 / 3: 3.000000 .... .... 0.000000 -4 / 4: 4.000000 .... .... 0.000000 -5 / 5: 5.000000 5.000000 5.000000 1.000000 - -LIST dest, var[G$1=dcoarse] - !-> LIST dest, var[GY=dcoarse] - Y: 0.5 to 5.5 - Column 1: DEST is _Y[GY=DCOARSE] - Column 2: VAR[G=1 delta on Y] is RESHAPE(SBIN, _Y[GY=IRR]) (regrid: 1 delta on Y) - DEST VAR -1 / 1: 1.000000 .... -2 / 2: 2.000000 .... -3 / 3: 3.000000 .... -4 / 4: 4.000000 .... -5 / 5: 5.000000 5.000000 - -go bn_bin_regrid.sub Z -! Tests of @BIN and @NBIN regridding transforms - -DEFINE AXIS/$1=1:5:1 dcoarse - !-> DEFINE AXIS/Z=1:5:1 dcoarse - -! Data on an irregular grid -LET sbin = {1.1, 1.2, 3.5, 4.7, 5} -DEFINE AXIS/$1 irr = sbin - !-> DEFINE AXIS/Z irr = sbin -LET var = _$1[G$1=irr] - !-> DEFINE VARIABLE var = _Z[GZ=irr] - -LET dest = _$1[G$1=dcoarse] - !-> DEFINE VARIABLE dest = _Z[GZ=dcoarse] -! Compare @AVE and @BIN regridding -LIST dest, var[G$1=dcoarse@ave], var[G$1=dcoarse@BIN], var[G$1=dcoarse@NBIN] - !-> LIST dest, var[GZ=dcoarse@ave], var[GZ=dcoarse@BIN], var[GZ=dcoarse@NBIN] - Z: 0.5 to 5.5 - Column 1: DEST is _Z[GZ=DCOARSE] - Column 2: VAR[G=1 delta on Z@AVE] is _Z[GZ=IRR] (regrid: 1 delta on Z@AVE) - Column 3: VAR[G=1 delta on Z@BIN] is _Z[GZ=IRR] (regrid: 1 delta on Z@BIN) - Column 4: VAR[G=1 delta on Z@NBIN] is _Z[GZ=IRR] (regrid: 1 delta on Z@NBIN) - DEST VAR VAR VAR -1 / 1: 1.000000 1.177778 1.150000 2.000000 -2 / 2: 2.000000 1.545000 .... 0.000000 -3 / 3: 3.000000 3.500000 .... 0.000000 -4 / 4: 4.000000 3.980000 3.500000 1.000000 -5 / 5: 5.000000 4.838462 4.850000 2.000000 - - -! Data on an irregular grid with missing values -LET sbin = {1.1, 2.2, , , 5} -LET var = RESHAPE(sbin, _$1[g$1=irr]) - !-> DEFINE VARIABLE var = RESHAPE(sbin, _Z[gZ=irr]) -LET dest = _$1[G$1=dcoarse] - !-> DEFINE VARIABLE dest = _Z[GZ=dcoarse] -LIST dest, var[G$1=dcoarse@ave], var[G$1=dcoarse@BIN], var[G$1=dcoarse@NBIN] - !-> LIST dest, var[GZ=dcoarse@ave], var[GZ=dcoarse@BIN], var[GZ=dcoarse@NBIN] - Z: 0.5 to 5.5 - Column 1: DEST is _Z[GZ=DCOARSE] - Column 2: VAR[G=1 delta on Z@AVE] is RESHAPE(SBIN, _Z[GZ=IRR]) (regrid: 1 delta on Z@AVE) - Column 3: VAR[G=1 delta on Z@BIN] is RESHAPE(SBIN, _Z[GZ=IRR]) (regrid: 1 delta on Z@BIN) - Column 4: VAR[G=1 delta on Z@NBIN] is RESHAPE(SBIN, _Z[GZ=IRR]) (regrid: 1 delta on Z@NBIN) - DEST VAR VAR VAR -1 / 1: 1.000000 1.955556 1.650000 2.000000 -2 / 2: 2.000000 2.200000 .... 0.000000 -3 / 3: 3.000000 .... .... 0.000000 -4 / 4: 4.000000 .... .... 0.000000 -5 / 5: 5.000000 5.000000 5.000000 1.000000 - -LIST dest, var[G$1=dcoarse] - !-> LIST dest, var[GZ=dcoarse] - Z: 0.5 to 5.5 - Column 1: DEST is _Z[GZ=DCOARSE] - Column 2: VAR[G=1 delta on Z] is RESHAPE(SBIN, _Z[GZ=IRR]) (regrid: 1 delta on Z) - DEST VAR -1 / 1: 1.000000 .... -2 / 2: 2.000000 .... -3 / 3: 3.000000 .... -4 / 4: 4.000000 .... -5 / 5: 5.000000 5.000000 - -go bn_bin_regrid.sub T -! Tests of @BIN and @NBIN regridding transforms - -DEFINE AXIS/$1=1:5:1 dcoarse - !-> DEFINE AXIS/T=1:5:1 dcoarse - -! Data on an irregular grid -LET sbin = {1.1, 1.2, 3.5, 4.7, 5} -DEFINE AXIS/$1 irr = sbin - !-> DEFINE AXIS/T irr = sbin -LET var = _$1[G$1=irr] - !-> DEFINE VARIABLE var = _T[GT=irr] - -LET dest = _$1[G$1=dcoarse] - !-> DEFINE VARIABLE dest = _T[GT=dcoarse] -! Compare @AVE and @BIN regridding -LIST dest, var[G$1=dcoarse@ave], var[G$1=dcoarse@BIN], var[G$1=dcoarse@NBIN] - !-> LIST dest, var[GT=dcoarse@ave], var[GT=dcoarse@BIN], var[GT=dcoarse@NBIN] - T: 0.5 to 5.5 - Column 1: DEST is _T[GT=DCOARSE] - Column 2: VAR[G=1 delta on T@AVE] is _T[GT=IRR] (regrid: 1 delta on T@AVE) - Column 3: VAR[G=1 delta on T@BIN] is _T[GT=IRR] (regrid: 1 delta on T@BIN) - Column 4: VAR[G=1 delta on T@NBIN] is _T[GT=IRR] (regrid: 1 delta on T@NBIN) - DEST VAR VAR VAR -1 / 1: 1.000000 1.177778 1.150000 2.000000 -2 / 2: 2.000000 1.545000 .... 0.000000 -3 / 3: 3.000000 3.500000 .... 0.000000 -4 / 4: 4.000000 3.980000 3.500000 1.000000 -5 / 5: 5.000000 4.838462 4.850000 2.000000 - - -! Data on an irregular grid with missing values -LET sbin = {1.1, 2.2, , , 5} -LET var = RESHAPE(sbin, _$1[g$1=irr]) - !-> DEFINE VARIABLE var = RESHAPE(sbin, _T[gT=irr]) -LET dest = _$1[G$1=dcoarse] - !-> DEFINE VARIABLE dest = _T[GT=dcoarse] -LIST dest, var[G$1=dcoarse@ave], var[G$1=dcoarse@BIN], var[G$1=dcoarse@NBIN] - !-> LIST dest, var[GT=dcoarse@ave], var[GT=dcoarse@BIN], var[GT=dcoarse@NBIN] - T: 0.5 to 5.5 - Column 1: DEST is _T[GT=DCOARSE] - Column 2: VAR[G=1 delta on T@AVE] is RESHAPE(SBIN, _T[GT=IRR]) (regrid: 1 delta on T@AVE) - Column 3: VAR[G=1 delta on T@BIN] is RESHAPE(SBIN, _T[GT=IRR]) (regrid: 1 delta on T@BIN) - Column 4: VAR[G=1 delta on T@NBIN] is RESHAPE(SBIN, _T[GT=IRR]) (regrid: 1 delta on T@NBIN) - DEST VAR VAR VAR -1 / 1: 1.000000 1.955556 1.650000 2.000000 -2 / 2: 2.000000 2.200000 .... 0.000000 -3 / 3: 3.000000 .... .... 0.000000 -4 / 4: 4.000000 .... .... 0.000000 -5 / 5: 5.000000 5.000000 5.000000 1.000000 - -LIST dest, var[G$1=dcoarse] - !-> LIST dest, var[GT=dcoarse] - T: 0.5 to 5.5 - Column 1: DEST is _T[GT=DCOARSE] - Column 2: VAR[G=1 delta on T] is RESHAPE(SBIN, _T[GT=IRR]) (regrid: 1 delta on T) - DEST VAR -1 / 1: 1.000000 .... -2 / 2: 2.000000 .... -3 / 3: 3.000000 .... -4 / 4: 4.000000 .... -5 / 5: 5.000000 5.000000 - -go bn_bin_regrid.sub E -! Tests of @BIN and @NBIN regridding transforms - -DEFINE AXIS/$1=1:5:1 dcoarse - !-> DEFINE AXIS/E=1:5:1 dcoarse - -! Data on an irregular grid -LET sbin = {1.1, 1.2, 3.5, 4.7, 5} -DEFINE AXIS/$1 irr = sbin - !-> DEFINE AXIS/E irr = sbin -LET var = _$1[G$1=irr] - !-> DEFINE VARIABLE var = _E[GE=irr] - -LET dest = _$1[G$1=dcoarse] - !-> DEFINE VARIABLE dest = _E[GE=dcoarse] -! Compare @AVE and @BIN regridding -LIST dest, var[G$1=dcoarse@ave], var[G$1=dcoarse@BIN], var[G$1=dcoarse@NBIN] - !-> LIST dest, var[GE=dcoarse@ave], var[GE=dcoarse@BIN], var[GE=dcoarse@NBIN] - E: 0.5 to 5.5 - Column 1: DEST is _E[GE=DCOARSE] - Column 2: VAR[G=1 delta on E@AVE] is _E[GE=IRR] (regrid: 1 delta on E@AVE) - Column 3: VAR[G=1 delta on E@BIN] is _E[GE=IRR] (regrid: 1 delta on E@BIN) - Column 4: VAR[G=1 delta on E@NBIN] is _E[GE=IRR] (regrid: 1 delta on E@NBIN) - DEST VAR VAR VAR -1 / 1: 1.000000 1.177778 1.150000 2.000000 -2 / 2: 2.000000 1.545000 .... 0.000000 -3 / 3: 3.000000 3.500000 .... 0.000000 -4 / 4: 4.000000 3.980000 3.500000 1.000000 -5 / 5: 5.000000 4.838462 4.850000 2.000000 - - -! Data on an irregular grid with missing values -LET sbin = {1.1, 2.2, , , 5} -LET var = RESHAPE(sbin, _$1[g$1=irr]) - !-> DEFINE VARIABLE var = RESHAPE(sbin, _E[gE=irr]) -LET dest = _$1[G$1=dcoarse] - !-> DEFINE VARIABLE dest = _E[GE=dcoarse] -LIST dest, var[G$1=dcoarse@ave], var[G$1=dcoarse@BIN], var[G$1=dcoarse@NBIN] - !-> LIST dest, var[GE=dcoarse@ave], var[GE=dcoarse@BIN], var[GE=dcoarse@NBIN] - E: 0.5 to 5.5 - Column 1: DEST is _E[GE=DCOARSE] - Column 2: VAR[G=1 delta on E@AVE] is RESHAPE(SBIN, _E[GE=IRR]) (regrid: 1 delta on E@AVE) - Column 3: VAR[G=1 delta on E@BIN] is RESHAPE(SBIN, _E[GE=IRR]) (regrid: 1 delta on E@BIN) - Column 4: VAR[G=1 delta on E@NBIN] is RESHAPE(SBIN, _E[GE=IRR]) (regrid: 1 delta on E@NBIN) - DEST VAR VAR VAR -1 / 1: 1.000000 1.955556 1.650000 2.000000 -2 / 2: 2.000000 2.200000 .... 0.000000 -3 / 3: 3.000000 .... .... 0.000000 -4 / 4: 4.000000 .... .... 0.000000 -5 / 5: 5.000000 5.000000 5.000000 1.000000 - -LIST dest, var[G$1=dcoarse] - !-> LIST dest, var[GE=dcoarse] - E: 0.5 to 5.5 - Column 1: DEST is _E[GE=DCOARSE] - Column 2: VAR[G=1 delta on E] is RESHAPE(SBIN, _E[GE=IRR]) (regrid: 1 delta on E) - DEST VAR -1 / 1: 1.000000 .... -2 / 2: 2.000000 .... -3 / 3: 3.000000 .... -4 / 4: 4.000000 .... -5 / 5: 5.000000 5.000000 - -go bn_bin_regrid.sub F -! Tests of @BIN and @NBIN regridding transforms - -DEFINE AXIS/$1=1:5:1 dcoarse - !-> DEFINE AXIS/F=1:5:1 dcoarse - -! Data on an irregular grid -LET sbin = {1.1, 1.2, 3.5, 4.7, 5} -DEFINE AXIS/$1 irr = sbin - !-> DEFINE AXIS/F irr = sbin -LET var = _$1[G$1=irr] - !-> DEFINE VARIABLE var = _F[GF=irr] - -LET dest = _$1[G$1=dcoarse] - !-> DEFINE VARIABLE dest = _F[GF=dcoarse] -! Compare @AVE and @BIN regridding -LIST dest, var[G$1=dcoarse@ave], var[G$1=dcoarse@BIN], var[G$1=dcoarse@NBIN] - !-> LIST dest, var[GF=dcoarse@ave], var[GF=dcoarse@BIN], var[GF=dcoarse@NBIN] - F: 0.5 to 5.5 - Column 1: DEST is _F[GF=DCOARSE] - Column 2: VAR[G=1 delta on F@AVE] is _F[GF=IRR] (regrid: 1 delta on F@AVE) - Column 3: VAR[G=1 delta on F@BIN] is _F[GF=IRR] (regrid: 1 delta on F@BIN) - Column 4: VAR[G=1 delta on F@NBIN] is _F[GF=IRR] (regrid: 1 delta on F@NBIN) - DEST VAR VAR VAR -1 / 1: 1.000000 1.177778 1.150000 2.000000 -2 / 2: 2.000000 1.545000 .... 0.000000 -3 / 3: 3.000000 3.500000 .... 0.000000 -4 / 4: 4.000000 3.980000 3.500000 1.000000 -5 / 5: 5.000000 4.838462 4.850000 2.000000 - - -! Data on an irregular grid with missing values -LET sbin = {1.1, 2.2, , , 5} -LET var = RESHAPE(sbin, _$1[g$1=irr]) - !-> DEFINE VARIABLE var = RESHAPE(sbin, _F[gF=irr]) -LET dest = _$1[G$1=dcoarse] - !-> DEFINE VARIABLE dest = _F[GF=dcoarse] -LIST dest, var[G$1=dcoarse@ave], var[G$1=dcoarse@BIN], var[G$1=dcoarse@NBIN] - !-> LIST dest, var[GF=dcoarse@ave], var[GF=dcoarse@BIN], var[GF=dcoarse@NBIN] - F: 0.5 to 5.5 - Column 1: DEST is _F[GF=DCOARSE] - Column 2: VAR[G=1 delta on F@AVE] is RESHAPE(SBIN, _F[GF=IRR]) (regrid: 1 delta on F@AVE) - Column 3: VAR[G=1 delta on F@BIN] is RESHAPE(SBIN, _F[GF=IRR]) (regrid: 1 delta on F@BIN) - Column 4: VAR[G=1 delta on F@NBIN] is RESHAPE(SBIN, _F[GF=IRR]) (regrid: 1 delta on F@NBIN) - DEST VAR VAR VAR -1 / 1: 1.000000 1.955556 1.650000 2.000000 -2 / 2: 2.000000 2.200000 .... 0.000000 -3 / 3: 3.000000 .... .... 0.000000 -4 / 4: 4.000000 .... .... 0.000000 -5 / 5: 5.000000 5.000000 5.000000 1.000000 - -LIST dest, var[G$1=dcoarse] - !-> LIST dest, var[GF=dcoarse] - F: 0.5 to 5.5 - Column 1: DEST is _F[GF=DCOARSE] - Column 2: VAR[G=1 delta on F] is RESHAPE(SBIN, _F[GF=IRR]) (regrid: 1 delta on F) - DEST VAR -1 / 1: 1.000000 .... -2 / 2: 2.000000 .... -3 / 3: 3.000000 .... -4 / 4: 4.000000 .... -5 / 5: 5.000000 5.000000 - - -! *********** v6.97 Additions *********** -! (released as V7.0) - -GO bn_reset bn697_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn697_bug_fixes -GO bn697_bug_fixes -! bn697_bug_fixes -! test various fixes that went into version 6.97 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_only_inf_lev -! Bug 2326: levels with only a value and (inf) or (-inf) -! should show values less-equal or greater-equal to that level. - -use coads_climatology; set reg/l=1 - -! The plots should be the same left to right; just a triangle key -! on the right -set view ul; shade/lev=(20)(50) sst -set view ur; shade/lev=(20)(inf) sst -set view ll; shade/lev=(-50)(20) sst -set view lr; shade/lev=(-inf)(20) sst - -! Horizontal keys -can view -set view ul; fill/lev=(20)(50) sst -set view ur; fill/lev=(20)(inf) sst -set view ll; fill/lev=(-50)(20) sst -set view lr; fill/lev=(-inf)(20) sst - -! silly degenerate case, two-sided inf's -can view -set view ul; shade/lev=(-inf)(22)(inf) sst -set view ur; shade/key=horiz/lev=(-inf)(22)(inf) sst - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_plot_ax_ppl -! err696_plot_ax_ppl.jnl -! ticket 2327 -! -! restore settings properly after a PLOT/axes= -! if there is a ppl axis-setting command before next plot - -plot/vs/noax 0,0 - set view upper -ppl axlabp 0 -1 -plot/nolab/vs 0,0 - - set view lower -ppl axlabp 0 -1 -plot/nolab/vs 0,0 - -can view -vector/i=1:40/j=1:30/nolab/noax j-20+(i-i),i-20+(j-j) - -set view upper -ppl axlabp 0 -1 -vector/i=1:40/j=1:30/nolab j-20+(i-i),i-20+(j-j) - - set view lower -ppl axlabp 0 -1 -vector/i=1:40/j=1:30/nolab j-20+(i-i),i-20+(j-j) - -can view -let var2d = i+j - -shade/i=1:40/j=1:30/nolab/noax var2d - set view upper -ppl axlabp 0 -1 -shade/i=1:40/j=1:30/nolab var2d - - set view lower -ppl axlabp 0 -1 -shade/i=1:40/j=1:30/nolab var2d - -can view - -contour/i=1:40/j=1:30/nolab/noax var2d - set view upper -ppl axlabp 0 -1 -contour/i=1:40/j=1:30/nolab var2d - - set view lower -ppl axlabp 0 -1 -contour/i=1:40/j=1:30/nolab var2d - -can view - -let xsqr = YSEQUENCE({0,.1,.1,0}) -let ysqr = YSEQUENCE({0,0,.1,.1}) -let ypts = x/10 -let xpts = cos(x/10) - -polygon/trans/i=1:100/nolab/noax xpts+xsqr, ypts+ysqr, x*x/10 - - set view upper -ppl axlabp 0 -1 -polygon/trans/i=1:100/nolab xpts+xsqr, ypts+ysqr, x*x/10 - - set view lower -ppl axlabp 0 -1 -polygon/trans/i=1:100/nolab xpts+xsqr, ypts+ysqr, x*x/10 -can view - -! restore axis settings after a plot/set with/axes= - -set view upper -plot/i=1:100/axes=1,0,0,1/set/title="labels" i*cos(i/8) -ppl xlab "a label" -ppl labset, , , 0.08 -ppl ylab "a multi line y labelhere" -ppl plot - -set view lower -plot/i=1:199 i*cos(i/10) - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_ft_calendars -! err696_ft_calendars.jnl -! see ticket 2332: check for matching calendars when -! there are T and F axes in a file. - -! If the T or F calnedar is specified, use it for both axes -! e.g. reference time has a calendar, forecast time does not list a calendar. - -use ft_cal_one.nc -sh dat - currently SET data sets: - 1> ./data/ft_cal_one.nc (default) - name title I J K L M N - TIMEVAR GRIB forecast or observation ti ... ... ... 1:2 ... 1:3 - - -! Intentional error: two time axes with different calendars -set mode ignore -use ft_cal_mixed.nc - -can mode ignore - -can data/all - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_centerlab_restore -! err696_centerlab_restore -! Ticket 2331. -! When a plot is made with -! shade/SET/key=centerlab; ppl shade -! Then the nextsubsequent plot still had the centered key labeling. - - -use coads_climatology -set view left -shade/SET/l=1/key=centerlab sst -ppl shade - -set view right -shade/l=1 sst - -! ...although the next one does restore the default. -shade/l=1 sst - -! Horizontal plots with the same behavior. -cancel view -set view upper -shade/SET/l=1/key=centerlab,horiz sst -ppl shade - -set view lower -shade/l=1/key=horiz sst - -! FILL plots -cancel view -set view left -fill/SET/l=1/key=centerlab sst -ppl shade - -! This plot still had the labels centered -set view right -fill/l=1 sst - -! Ribbon plots -cancel view -set view left; plot/ribbon/vs/line/thick/key=cent/SET {1,2,3,4}, {1,2,3,4}, {1,2,3,4} -ppl ribbon -set view right; plot/ribbon/vs/line/thick {1,2,3,4}, {1,2,3,4}, {1,2,3,4} - -! Polygon plots -cancel view -let xsqr = YSEQUENCE({0,.1,.1,0}) -let ysqr = YSEQUENCE({0,0,.1,.1}) - -let ypts = x/10 -let xpts = cos(x/10) - -set view upper -polygon/trans/i=1:20/nolab/key=horiz,center/SET xpts+xsqr, ypts+ysqr, x*x/10 -ppl polygon -set view lower -polygon/trans/i=1:20/nolab/key=horiz xpts+xsqr, ypts+ysqr, x*x/10 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_time_overlay -! err696_time_overlay -! bug 2334, first plot/over takes too long and the line is incorrect. - -def ax/t="1-jan-0001":"1-jan-0009":1/unit="year"/t0="1-jan-0001"/cal=noleap tax_nlp -def ax/t="1-jan-0001":"1-jan-0009":1/unit="year"/t0="1-jan-0001"/cal=julian tax_jul -sp date -Tue Aug 20 12:19:42 PDT 2019 -set view upper -plot t[gt=tax_nlp] -plot/ov/vs/line/dash {1,1}, 1e6*{-1,1} -sp date -Tue Aug 20 12:19:42 PDT 2019 - -sp date -Tue Aug 20 12:19:42 PDT 2019 -set view lower -plot t[gt=tax_jul] -plot/ov/vs/line/dash {2,2}, 1e6*{-1,1} -sp date -Tue Aug 20 12:19:43 PDT 2019 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_save_noupcase -! err696_save_noupcase -! Ticket 2336: When UPCASE canceled an extra upcase axis -! was written to a file - only when user-defined axis. -! -! Note as part of this fix, if MODE UPCASE is canceled, -! then it also works as if SAVE/KEEP_AXISNAMES was given. -! If keeping the original names then also don't write the -! Ferret-added additions, e.g. TIME1 if there was already -! a time axis; or a subset addition. - - -! Tell Ferret to write everything in the original case -cancel mode upcase - -! Define some axes and variables -define axis/t=1-jan-2001:31-dec-2001:1/unit=days tday -define axis/x=10:150:10/units=degrees_east xax - -let tt = t[gt=tday] -let var = 0*tt + x[gx=xax] - -save/clobber/file=myfile.nc tt, var - -! An extra TDAY axis was written out -sp ncdump -h myfile.nc -netcdf myfile { -dimensions: - tday = UNLIMITED ; // (365 currently) - xax = 15 ; -variables: - double tday(tday) ; - tday:units = "days since 1901-01-15" ; - tday:axis = "T" ; - tday:time_origin = "15-JAN-1901" ; - tday:standard_name = "time" ; - double tt(tday) ; - tt:missing_value = -1.e+34 ; - tt:_FillValue = -1.e+34 ; - tt:long_name = "T[GT=TDAY]" ; - double xax(xax) ; - xax:point_spacing = "even" ; - xax:axis = "X" ; - xax:modulo = 360. ; - xax:units = "degrees_east" ; - xax:standard_name = "longitude" ; - double var(tday, xax) ; - var:missing_value = -1.e+34 ; - var:_FillValue = -1.e+34 ; - var:long_name = "0*TT + X[GX=XAX]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -set mode/last upcase - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_argument_blanks -! err696_argument_blanks.jnl -! Ticket 2343: quoted argument with a blank at the end. - - -! argument with a blank at the end -go err696_argument_blanks_sub "hello " -! for bug2343 - -say ($1)there($2%.%) - !-> MESSAGE/CONTINUE hello there. -hello there. - -! Preserve multiple blanks at the end -go err696_argument_blanks_sub "hello " -! for bug2343 - -say ($1)there($2%.%) - !-> MESSAGE/CONTINUE hello there. -hello there. - -! 2 arguments; one with a blank at the end, next with a blank at the start. -! Note the blanks at the start of Arg 1 are not preserved. The command is -! translated to MESSAGE/CONTINUE Hi Hi there my friend -! and the blanks after MESSAGE/CONTINUE are just treated as a delimiter. - -go err696_argument_blanks_sub " Hi Hi " " my friend" -! for bug2343 - -say ($1)there($2%.%) - !-> MESSAGE/CONTINUE Hi Hi there my friend -Hi Hi there my friend - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_annotate_numeric -! err696_annotate_numeric -! 1/7/2016 -! ticket 2350: a purely numeric string -! didn't appear on the plot. - -use coads_climatology -shade/l=1/nokey/pal=white sst - -! text including non-numeric has worked fine -annotate/user/xpos=180/ypos=30 "30 with text" - -! numeric only, with and witbhout quotes - -annotate/user/xpos=180/ypos=20/halign=-1 "20" -annotate/user/xpos=180/ypos=10/halign=-1 10 - -! tests with /NOUSER -annotate/nouser/xpos=1/ypos=2.5 40 - -! strings or purely numeric, without quotes works ok -annotate/nouser/xpos=1/ypos=2.0 1.3+7.89 -annotate/nouser/xpos=1/ypos=1.5 `1.3+7.89-154,prec=6` - !-> annotate/nouser/xpos=1/ypos=1.5 -144.81 - -! commas, just write the whole thing -annotate/nouser/xpos=1/ypos=1.0 "40,30,20" - -annotate/nouser/xpos=1/ypos=0.5 1,2,3,4,5 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_e_component_mem_crptn -! canceling of an E aggregation dataset is leaving -! corrupted variables in memory as seen by the variable names "%%" - -use ens1, ens2, ens3, ens4 -define data/agg/E fourfiles = ens1, ens3, ens2, ens4 - -show data/brief - currently SET data sets: - 1> ./data/ens1.nc - 2> ./data/ens2.nc - 3> ./data/ens3.nc - 4> ./data/ens4.nc - 5> fourfiles (default) Ensemble aggregation - -list/i=3 sst[T=@ave] - VARIABLE : SST_IN (Deg C) - DATA SET : Ensemble series of 4 datasets patterned on ens1 - FILENAME : fourfiles - SUBSET : 9 by 4 points (LATITUDE-E (realization)) - LONGITUDE: 105W - TIME : 01-JAN 00:45 to 31-DEC 06:34 (averaged) - 13N 15N 17N 19N 21N 23N 25N 27N 29N - 1 2 3 4 5 6 7 8 9 - 1 / 1: 28.5129 28.4412 27.8921 27.4565 26.7258 25.5612 .... .... .... - 2 / 2: 85.5386 85.3235 83.6763 82.3696 80.1774 76.6835 .... .... .... - 3 / 3: 57.0257 56.8823 55.7842 54.9131 53.4516 51.1223 .... .... .... - 4 / 4: 114.0514 113.7646 111.5685 109.8262 106.9033 102.2446 .... .... .... - -show mem/all - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 4.32 Kb - Current cache: 4.03 Kb -all data in memory: - SST[D=fourfiles] YE mr:221 size:0.58 Kb - 3/106W 1/12N ... / ... ... /01-JAN 00:45 1/0.5 ... / ... - 3/104W 9/30N ... / ... ... /31-DEC 06:34 4/4.5 ... / ... - AVE - SST[D=fourfiles] YTE mr:137 size:3.46 Kb - 3/106W 1/12N ... / ... 1/01-JAN 00:45 1/0.5 ... / ... - 3/104W 9/30N ... / ... 12/31-DEC 06:34 4/4.5 ... / ... - -cancel data fourfiles -show mem/all - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 4.32 Kb - Current cache: 0 Kb -all data in memory: - -exit - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_mem_err_report -! err696_mem_err_report.jnl -! 1/21/2016 *acm* -! V702: *sh* 2/17 - This script depends upon the specific formatting -! of the error string, when memory is exceeded -! Tweaked it to match the new formatting - -! Ticket 2354: The error message shows the wrong number for memory needed. -! -! Try to load some data larger than the default amount of memory - -let memsize = ($ferret_memory) - !-> DEFINE VARIABLE memsize = 31.25 -set mem/siz=2 - - -def axis/x=1:360:1 xaxis -def axis/y=1:180:1 yaxis -def axis/z=1:20:1 zaxis -define axis/t=1-jan-2000:1-jan-2005:1/units=days longtime - -let bigvar = x[gx=xaxis]+y[gy=yaxis] + z[gz=zaxis] + t[gt=longtime] -sh grid bigvar - GRID (G089) - name axis # pts start end subset - XAXIS X 360 r 1 360 full - YAXIS Y 180 r 1 180 full - ZAXIS Z 20 r 1 20 full - LONGTIME TIME 1828 r 01-JAN-2000 00:00 01-JAN-2005 00:00 full - - -set mode ignore -load/l=1:5 bigvar - To fulfill this request would exceed the current SET MEMORY/SIZE= limit of 16Mb - At the moment that the memory limit was reached - memory was committed as follows: - - to objects used in computation: 1296005 (65%) - The size of the requested object was: 51.84 Mb (324%) - -! Previously the number Mwords shown was too low -show sym fer_last_error -FER_LAST_ERROR = "**ERROR: request exceeds memory setting" -cancel mode ignore - -! V702: we no longer have to parse the error string. -! Instead look at PEAK_MEMORY - -SET MEMORY/SIZE=15 -load/l=1:5 bigvar -SHOW SYMBOL ($PEAK_MEMORY) - !-> SHOW SYMBOL 7776005 - -! restore default -set mem/siz=`memsize` - !-> set mem/siz=31.25 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_multiple_slashes -! err696_multiple_slashes.jnl -! 1/25/2016 *acm* -! -! For ticket 2356 -! Change parsing to allow multiple slashes in a row. -! simplifies DEFINE SYMBOL QUALIFIERS= kinds of definitions - -def sym qual /x=1:2 - -set reg/($qual) - !-> set reg//x=1:2 -show region -default region: - X=1:2 - Y/J is unspecified - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -cancel region - - -! Several qualifiers on a command -set reg//x=1:2///y=4:7 -show region -default region: - X=1:2 - Y=4:7 - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -cancel region - -! Qualifiers with a command argument -use coads_climatology -def sym plotqual = /pal=grayscale/line//key=cont -def sym regqual = /x=300:360///y=-20:20/L=3 - -fill/($regqual)($plotqual) sst - !-> CONTOUR/FILL//x=300:360///y=-20:20/L=3/pal=grayscale/line//key=cont sst - -! command lines with urls unchanged -IF `test_opendap("http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_sst.cdf") EQ 0` THEN - !-> IF 1 THEN - set data///format=cdf http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_sst.cdf - let//d=coads_sst myvar = 1 - sh dat - currently SET data sets: - 1> ./data/coads_climatology.cdf - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - - 2> http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_sst.cdf (default) - name title I J K L - SST Sea Surface Temperature 1:180 1:90 ... 1:1680 - ------------------------------ - MYVAR[D=coads_sst] = 1 - - cancel data/all -ENDIF - -! Other syntax examples taken from bn_syntax but with extra slashes - -! Repeat loop -cancel region -cancel data/all -show region;repeat//l=1:2 (show data;sh reg);can reg;show reg -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -!-> REPEAT: L=1 - currently SET data sets: -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - L=1 - E/M is unspecified - F/N is unspecified -!-> REPEAT: L=2 - currently SET data sets: -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - L=2 - E/M is unspecified - F/N is unspecified -default region: - X/I is unspecified - Y/J is unspecified - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified - -! continuation lines -define axis \ ! comment on the command -//x=1:10:1 \ ! comment on the qualifier -xax\ ! comment on the argument - ! this line is significant -- completes the command -show axis xax; cancel axis xax ! clean up - name axis # pts start end - XAX X 10 r 1 10 - Axis span (to cell edges) = 10 - -! Allow extra slashes at the end of the command line -set reg/x=1:2/; sho reg -default region: - X=1:2 - Y/J is unspecified - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified -set reg/x=1:4//; sho reg -default region: - X=1:4 - Y/J is unspecified - Z/K is unspecified - T/L is unspecified - E/M is unspecified - F/N is unspecified - -can reg -repeat/l=1:2 (set reg/x=1:4//) -!-> REPEAT: L=1 -!-> REPEAT: L=2 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_2d_time_overlay -! err696_2d_time_overlay.jnl -! ticket 2360: 2-D time overlay plots have never worked. - -! two different time axes - -def ax/edge/t=1-jan-1979:1-jan-2016:1/unit=year/t0=1-jan-1979 tax1 -def ax/edge/t=1-jan-1988:1-jan-2010:1/unit=year/t0=1-jan-1988 tax2 -let t1 = t[gt=tax1] -let t2 = t[gt=tax2] -let yr1 = tax_year(t1,t1) -let yr2 = tax_year(t2,t2) -let f1 = yr1 + 0*z[gz=1:5:1] -let f2 = yr2 + 0*z[gz=2:3:1] - -can view - -! a 1-D overlay works correctly -set view ul -plot/step=con yr1 -plot/step=con/ov yr2 - -set view ll - -! 2-D overlay was mis-located -shade/lev=12 f1 -shade/ov/pal=grayscale/lev f2 - -ppl shaset reset -set view ur - -! Check a vertical time axis -let fx1 = yr1 + 0*x[gx=1:5:1] -let fx2 = yr2 + 0*x[gx=2:3:1] -shade/lev=12/title="X-T plot, vertical time axis" fx1 -shade/ov/pal=grayscale/lev fx2 - - -! Different time units -set view lr -def ax/edge/t=1-jan-1988:04-feb-2010:60/unit=day/t0=1-jan-1988 tax2 - -shade/lev=12/title="Underlay units year, Overlay units days" f1 -shade/ov/pal=grayscale/lev f2 - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_singlevec_over -! err696_singlevec_over.jnl -! Ticket 2365: overlay a single vector. If -! /nolab is added it disappears. - -use gtbc011 -vector/k=1/l=1 u,v -let xa = 200 -let ya = 10 -let ya=10 -define axis/unit=degrees_east/x/from_data xax=xa -define axis/unit=degrees_north/y/from_data yax=ya -define grid/x=xax/y=yax xyg -let u1 = 10 + 0*(x[gx=xyg]+y[gy=xyg] ) -let v1 = 10 + 0*(x[gx=xyg]+y[gy=xyg] ) -! Now I can plot the vector -vec/over/len=10 u1,v1 - -! PPL_XSKIP is 1, the single vector -show sym ppl_vec*skip -PPL_VEC_XSKIP = "1" -PPL_VEC_YSKIP = "1" - -! Try it with /nolab added -vector/k=1/l=1 u,v - vec/over/len=10/nolab u1,v1 - -! PPL_XSKIP should still be 1 -! (with the bug, it was 4 from the vector underlay plot) -show sym ppl_vec*skip -PPL_VEC_XSKIP = "1" -PPL_VEC_YSKIP = "1" - -! As an aside, now return PPL_VECLEN for VECTOR/NOLABEL plots. -! previously this wasnt done. - -use gtbc011 -vector/k=3/l=1/nolab u,v -show symbol ppl_veclen -PPL_VECLEN = " 27.2" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_return_type -! err696_return_type -! See ticket #2367 -! incorrect return type when a user var -! uses an expression involving alternative string versions of -! a numeric exernal function - -! this works, explicitly calling xcat_str -let c = xcat_str({"e","f"},{"g","h"}) -let d = c -list d - VARIABLE : C - SUBSET : 4 points (X) - 1 / 1:"e" - 2 / 2:"f" - 3 / 3:"g" - 4 / 4:"h" - -! returned pointers not strings -let a = xcat({"a","b"},{"c","d"}) -let b = a -list b - VARIABLE : A - SUBSET : 4 points (X) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"c" - 4 / 4:"d" - -! Make more levels of variables, mixing xcat_str and xcat. - -let p = xcat_str({"1","2"},{"3","4"}) -let q = p - -let r = xcat({"5","6"},{"7","8"}) -let s = r - -! previously returned a string/numeric data type mix-up err. -let allcat = xcat(q,s) -list allcat - VARIABLE : XCAT(Q,S) - SUBSET : 8 points (X) - 1 / 1:"1" - 2 / 2:"2" - 3 / 3:"3" - 4 / 4:"4" - 5 / 5:"5" - 6 / 6:"6" - 7 / 7:"7" - 8 / 8:"8" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_hovmuller_mod_fill -! err696_hovmuller_mod_fill.jnl -! 3/7/2016 ACM -! Ticket 2374 -! A single color extending across the plot was missing - -use coads_slice.nc -fill/lin/t=1-jan-0000:31-dec-0001/hlim=1-jan-0000:1-jan-0001/x=180/lev=8 sst - - -!GO bn_reset! -!GO err696_axname_noupcase - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_repeat_escapes.jnl -! err696_repeat_escapes.jnl -! Ticket 2376 - parsing error with escaped grave-accent syntax - -let a = "seq 1 3" -sp echo \``a`\` - !-> sp echo `seq 1 3` -1 2 3 - -! the escapes were removed on parsing the initial -! command rather than keeping them until individual -! commands parsed within the loop -repeat/i=1:2 (sp echo \``a`\`) -!-> REPEAT: I=1 - !-> sp echo `seq 1 3` -1 2 3 -!-> REPEAT: I=2 - !-> sp echo `seq 1 3` -1 2 3 - -! nested repeats -repeat/k=1:3 (rep/i=1:2 (sp echo \``a`\`)) -!-> REPEAT: K=1 -!-> REPEAT: I=1 - !-> sp echo `seq 1 3` -1 2 3 -!-> REPEAT: I=2 - !-> sp echo `seq 1 3` -1 2 3 -!-> REPEAT: K=2 -!-> REPEAT: I=1 - !-> sp echo `seq 1 3` -1 2 3 -!-> REPEAT: I=2 - !-> sp echo `seq 1 3` -1 2 3 -!-> REPEAT: K=3 -!-> REPEAT: I=1 - !-> sp echo `seq 1 3` -1 2 3 -!-> REPEAT: I=2 - !-> sp echo `seq 1 3` -1 2 3 - - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_red_keylab.jnl -! err696_red_keylab.jnl -! Ticket 2375: outline and labels of color key were -! drawn in red on an overlay. - -use levitus_climatology -contour/lev=(0) temp - -! Always label the color key in pen0 -fill/over/nolab/key/lev=v,2min temp - - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_poly_over_label -! err696_poly_over_label -! Tiket 2396: incorrect label in the lower -! left on a POLY/OVER with just 2 arguments. - -use levitus_3d_subset.nc -let allmissing = 0/0 + temp -shade/nolabel/j=1 allmissing - -! Previously this plot had an incorrect label of ALLMISSING -polygon/palette=gray/ov {120.2,121,121,120.2},{4000,4000,1000,1000} -ppl list labels ! showed allmissing for lab2 now says cnst - - - - - XPOS YPOS HGT ROT UNITS - LAB 1 -4.200E-01 -5.500E-01 0.080 0 SYSTEM @AScnst - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - -shade/nolabel/j=1 allmissing -polygon/palette=gray/ov {120.2,121,121,120.2},{4000,4000,1000,1000}, 2 - -ppl list labels ! shows cnst for lab2 - - - - - XPOS YPOS HGT ROT UNITS - LAB 1 -4.200E-01 -5.500E-01 0.080 0 SYSTEM @AScnst - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - -shade/nolabel/j=1 allmissing -let cvar = 2 -polygon/palette=gray/ov {120.2,121,121,120.2},{4000,4000,1000,1000}, cvar -ppl list labels ! shows cvar for lab2 - - - - - XPOS YPOS HGT ROT UNITS - LAB 1 -4.200E-01 -5.500E-01 0.080 0 SYSTEM @ASCVAR - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - -! color var for 2 rectangles with multiple values -shade/nolabel/j=1 allmissing -let cvar = {2,3} -polygon/ov {120.2,121,121,120.2,,120.2,121,121,120.2},{4000,4000,1000,1000,,800,800,200,200}, cvar -ppl list labels ! shows cvar for lab2 - - - - - XPOS YPOS HGT ROT UNITS - LAB 1 -4.200E-01 -5.500E-01 0.080 0 SYSTEM @ASCVAR - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_def_ax_f -! err696_def_ax_f.jnl -! See ticket 2380 -! *acm* 4/2016 - -! Defining F axis using /F=LO:HI are ok -define axis/f=1-jan-1980:3-jan-1980:1/t0=1-jan-1980/unit=days f_ax -list _f[gf=f_ax] - VARIABLE : _F - axis F_AX - SUBSET : 3 points (FORECAST) - 01-JAN-1980 00 / 1: 0.000000 - 02-JAN-1980 00 / 2: 1.000000 - 03-JAN-1980 00 / 3: 2.000000 -define axis/f=1-jan-1980:3-jan-1980/np=3/t0=1-jan-1980/unit=days f_ax -list _f[gf=f_ax] - VARIABLE : _F - axis F_AX - SUBSET : 3 points (FORECAST) - 01-JAN-1980 00 / 1: 0.000000 - 02-JAN-1980 00 / 2: 1.000000 - 03-JAN-1980 00 / 3: 2.000000 - -! But just /F with a /T0 was putting the axis in the T direction -! Previously listing _F resulted in an error -define axis/f/t0=1-jan-1980/unit=days f_ax = {1,2,3} -list _f[gf=f_ax] - VARIABLE : _F - axis F_AX - SUBSET : 3 points (FORECAST) - 02-JAN-1980 00 / 1: 1.000000 - 03-JAN-1980 00 / 2: 2.000000 - 04-JAN-1980 00 / 3: 3.000000 - -! This came from code allowing the DEFINE to leave off the /F or /T -! If there's a T0, its an F axis. Still allow this; it becomes a T axis. -define axis/t0=1-jan-1980/unit=days aax = {1,2,3} -list _t[gt=aax] - VARIABLE : T - axis AAX - SUBSET : 3 points (TIME) - 02-JAN-1980 00 / 1: 1.000000 - 03-JAN-1980 00 / 2: 2.000000 - 04-JAN-1980 00 / 3: 3.000000 - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_mode_cal_f -! err696_mode_cal_f.jnl -! ticket 2399 MODE CALENDAR and F calendar axes -! The calendar setting should apply to T and F axes - -show mode calendar - MODE STATE ARGUMENT - CALENDAR SET minutes - -def ax/edges/t=1-jan-2016:1-mar-2016:1/unit=day/t0=1-jan-2016 t_axis -def ax/edges/f=1-jan-2016:1-mar-2016:1/unit=day/t0=1-jan-2016 f_axis -let a = _t[gt=t_axis] * {1,2,3} -let b = _f[gf=f_axis] * {1,2,3} -can view -set view upper; plot/l=1 a; sh sym lab($labnum_t) - !-> sh sym lab1 -LAB1 = "TIME : 01-JAN-2016 12:00" -set view lower; plot/n=1 b; sh sym lab($labnum_f) - !-> sh sym lab1 -LAB1 = "FORECAST : 01-JAN-2016 12:00" - -set mode calendar:days -can view -set view upper; plot/l=1 a; sh sym lab($labnum_t) - !-> sh sym lab1 -LAB1 = "TIME : 01-JAN-2016" -set view lower; plot/n=1 b; sh sym lab($labnum_f) - !-> sh sym lab1 -LAB1 = "FORECAST : 01-JAN-2016" - -set mode/last calendar -cancel mode calendar -can view -set view upper; plot/l=1 a; sh sym lab($labnum_t) - !-> sh sym lab1 -LAB1 = "T (DAY) : 0.5" -set view lower; plot/n=1 b; sh sym lab($labnum_f) - !-> sh sym lab1 -LAB1 = "F (DAY) : 0.5" - -set mode/last calendar -show mode calendar - MODE STATE ARGUMENT - CALENDAR SET minutes - -! If they are not calendar axes, it's all fine, just not -! labeled with dates - -def ax/edges/t=1:40:1/unit=day t_axis -def ax/edges/f=1:40:1/unit=day f_axis - -let a = _t[gt=t_axis] * {1,2,3} -let b = _f[gf=f_axis] * {1,2,3} -can view -set view upper; plot/l=1 a; sh sym lab($labnum_t) - !-> sh sym lab1 -LAB1 = "T (DAY) : 1.5" -set view lower; plot/n=1 b; sh sym lab($labnum_f) - !-> sh sym lab1 -LAB1 = "F (DAY) : 1.5" - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_def_ax_edges -! err696_def_ax_edges -! See ticket 2400 -! Incorrect coordinates when using /EDGES -! Also incorrectly marked axes as irregular - -let edges = x[gx=0:360:20] - -! Previuosly these axes were marked as irregular, but with correct coordinates -def ax/edge/x xax = edges[i=1:17]; sh axis xax - name axis # pts start end - XAX X 16 r 10 310 - Axis span (to cell edges) = 320 -def ax/edge/x xax = x[gx=0:360:20]; sh axis xax - name axis # pts start end - XAX X 18 r 10 350 - Axis span (to cell edges) = 360 - -! This axis incorrectly showed coordinates starting at x=20. -! It was found to be regular but start pt incorrect -def ax/edge/x xax = x[gx=20:320:20]; sh axis xax; list x[gx=xax] - name axis # pts start end - XAX X 15 r 30 310 - Axis span (to cell edges) = 300 - VARIABLE : X - axis XAX - SUBSET : 15 points (X) - 30 / 1: 30.0000 - 50 / 2: 50.0000 - 70 / 3: 70.0000 - 90 / 4: 90.0000 - 110 / 5: 110.0000 - 130 / 6: 130.0000 - 150 / 7: 150.0000 - 170 / 8: 170.0000 - 190 / 9: 190.0000 - 210 / 10: 210.0000 - 230 / 11: 230.0000 - 250 / 12: 250.0000 - 270 / 13: 270.0000 - 290 / 14: 290.0000 - 310 / 15: 310.0000 - -! This was previously irregular, with correct coordinates -def ax/edge/x xax = x[gx=20:320:20]; sh axis xax; list x[gx=xax] - name axis # pts start end - XAX X 15 r 30 310 - Axis span (to cell edges) = 300 - VARIABLE : X - axis XAX - SUBSET : 15 points (X) - 30 / 1: 30.0000 - 50 / 2: 50.0000 - 70 / 3: 70.0000 - 90 / 4: 90.0000 - 110 / 5: 110.0000 - 130 / 6: 130.0000 - 150 / 7: 150.0000 - 170 / 8: 170.0000 - 190 / 9: 190.0000 - 210 / 10: 210.0000 - 230 / 11: 230.0000 - 250 / 12: 250.0000 - 270 / 13: 270.0000 - 290 / 14: 290.0000 - 310 / 15: 310.0000 - -! Actually irregular edge locations -let edges = {0,10,20,30,60,90,150,200,280,360} -def ax/edge/x xax = edges; sh axis xax; list x[gx=xax] - name axis # pts start end - XAX X 9 i 5 320 - Axis span (to cell edges) = 360 - VARIABLE : X - axis XAX - SUBSET : 9 points (X) - 5 / 1: 5.0000 - 15 / 2: 15.0000 - 25 / 3: 25.0000 - 45 / 4: 45.0000 - 75 / 5: 75.0000 - 120 / 6: 120.0000 - 175 / 7: 175.0000 - 240 / 8: 240.0000 - 320 / 9: 320.0000 - -def ax/edge/x xax = edges[i=1:8]; sh axis xax; list x[gx=xax] - name axis # pts start end - XAX X 7 i 5 175 - Axis span (to cell edges) = 200 - VARIABLE : X - axis XAX - SUBSET : 7 points (X) - 5 / 1: 5.0000 - 15 / 2: 15.0000 - 25 / 3: 25.0000 - 45 / 4: 45.0000 - 75 / 5: 75.0000 - 120 / 6: 120.0000 - 175 / 7: 175.0000 - -! This one is regular -def ax/edge/x xax = edges[i=1:4]; sh axis xax; list x[gx=xax] - name axis # pts start end - XAX X 3 r 5 25 - Axis span (to cell edges) = 30 - VARIABLE : X - axis XAX - SUBSET : 3 points (X) - 5 / 1: 5.00000 - 15 / 2: 15.00000 - 25 / 3: 25.00000 - - - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_write_no_dim -! err696_write_no_dim.jnl -! ticket 2241: save a subset of a variable whose grid -! contains dimensions that are not coordinate variables - -use nodim -sh dat - currently SET data sets: - 1> ./data/nodim.nc (default) - name title I J K L M N - EXPOCODE expocode ... ... ... ... 1:1 ... - NUM_OBS Number of observations ... ... ... ... 1:1 ... - TEMP sea surface temperature 1:51 ... ... ... ... ... - - -! previously this gave an error -save/clobber/file=a.nc/i=30:35 expocode, num_obs, temp - -! file has a coordinate variable with the subset in the OBS dimension -sp ncdump -c a.nc -netcdf a { -dimensions: - TRAJECTORY = 1 ; - string_length = 64 ; - OBS30_35 = 6 ; -variables: - char EXPOCODE(TRAJECTORY, string_length) ; - EXPOCODE:long_name = "expocode" ; - EXPOCODE:history = "From nodim" ; - int NUM_OBS(TRAJECTORY) ; - NUM_OBS:missing_value = -99 ; - NUM_OBS:_FillValue = -99 ; - NUM_OBS:long_name = "Number of observations" ; - NUM_OBS:history = "From /home/data/socat/socatV3/11SS/11SS20140225.nc" ; - double OBS30_35(OBS30_35) ; - OBS30_35:point_spacing = "even" ; - OBS30_35:axis = "X" ; - double TEMP(OBS30_35) ; - TEMP:missing_value = -1.e+34 ; - TEMP:_FillValue = -1.e+34 ; - TEMP:units = "degrees C" ; - TEMP:long_name = "sea surface temperature" ; - TEMP:history = "From /home/data/socat/socatV3/11SS/11SS20140225.nc" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - OBS30_35 = 30, 31, 32, 33, 34, 35 ; -} - - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_mod_sub_fln -! err696_mod_sub_fln.jnl -! Ticket 2366, @FLN on a modulo subspan axis -! smears results across what should not be filled in. - -def ax/x=0:180:10/unit=degree_e xax -let xx = x[gx=xax] - -let b = IF xx GE 50 OR xx EQ 20 THEN xx -save/clob/file=a.nc b -can var/all - -use a - -! Do not get data from across the modulo void point at 90W -list/x=-180:720 b, b[x=@fln] - DATA SET: ./a.nc - LONGITUDE: 180E(-180) to 0E(720) - Column 1: B is IF XX GE 50 OR XX EQ 20 THEN XX - Column 2: B[X=@FLN:1] is IF XX GE 50 OR XX EQ 20 THEN XX (linear-filled by 1 pts on X) - B B -180E / -1: 180.0000 180.0000 -90W / 0: .... .... -0E / 1: .... .... -10E / 2: .... .... -20E / 3: 20.0000 20.0000 -30E / 4: .... 30.0000 -40E / 5: .... 40.0000 -50E / 6: 50.0000 50.0000 -60E / 7: 60.0000 60.0000 -70E / 8: 70.0000 70.0000 -80E / 9: 80.0000 80.0000 -90E / 10: 90.0000 90.0000 -100E / 11: 100.0000 100.0000 -110E / 12: 110.0000 110.0000 -120E / 13: 120.0000 120.0000 -130E / 14: 130.0000 130.0000 -140E / 15: 140.0000 140.0000 -150E / 16: 150.0000 150.0000 -160E / 17: 160.0000 160.0000 -170E / 18: 170.0000 170.0000 -180E / 19: 180.0000 180.0000 -90W / 20: .... .... -0E(360) / 21: .... .... -10E / 22: .... .... -20E / 23: 20.0000 20.0000 -30E / 24: .... 30.0000 -40E / 25: .... 40.0000 -50E / 26: 50.0000 50.0000 -60E / 27: 60.0000 60.0000 -70E / 28: 70.0000 70.0000 -80E / 29: 80.0000 80.0000 -90E / 30: 90.0000 90.0000 -100E / 31: 100.0000 100.0000 -110E / 32: 110.0000 110.0000 -120E / 33: 120.0000 120.0000 -130E / 34: 130.0000 130.0000 -140E / 35: 140.0000 140.0000 -150E / 36: 150.0000 150.0000 -160E / 37: 160.0000 160.0000 -170E / 38: 170.0000 170.0000 -180E / 39: 180.0000 180.0000 -90W / 40: .... .... -0E(720) / 41: .... .... - - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_subspan_transforms -! err696_subspan_transforms.jnl -! See ticket 2364. Results previously -! put results at the modulo void point. - -def ax/x=0:180:20/unit=degrees_e xaxis -let a = x[gx=xaxis] -save/clob/file=a.nc a -can var a; can ax xaxis; use a.nc - list/x=0:720 a, a[x=@ddc] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@DDC] is X[GX=XAXIS] (centered derivative on X) - A A -0E / 1: 0.0000 .... -20E / 2: 20.0000 8.993218E-06 -40E / 3: 40.0000 8.993218E-06 -60E / 4: 60.0000 8.993218E-06 -80E / 5: 80.0000 8.993218E-06 -100E / 6: 100.0000 8.993218E-06 -120E / 7: 120.0000 8.993218E-06 -140E / 8: 140.0000 8.993218E-06 -160E / 9: 160.0000 8.993218E-06 -180E / 10: 180.0000 .... -90W / 11: .... .... -0E(360) / 12: 0.0000 .... -20E / 13: 20.0000 8.993218E-06 -40E / 14: 40.0000 8.993218E-06 -60E / 15: 60.0000 8.993218E-06 -80E / 16: 80.0000 8.993218E-06 -100E / 17: 100.0000 8.993218E-06 -120E / 18: 120.0000 8.993218E-06 -140E / 19: 140.0000 8.993218E-06 -160E / 20: 160.0000 8.993218E-06 -180E / 21: 180.0000 .... -90W / 22: .... .... -0E(720) / 23: 0.0000 .... - list/x=0:720 a, a[x=@ddf] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@DDF] is X[GX=XAXIS] (forward derivative on X) - A A -0E / 1: 0.0000 8.993218E-06 -20E / 2: 20.0000 8.993218E-06 -40E / 3: 40.0000 8.993218E-06 -60E / 4: 60.0000 8.993218E-06 -80E / 5: 80.0000 8.993218E-06 -100E / 6: 100.0000 8.993218E-06 -120E / 7: 120.0000 8.993218E-06 -140E / 8: 140.0000 8.993218E-06 -160E / 9: 160.0000 8.993218E-06 -180E / 10: 180.0000 .... -90W / 11: .... .... -0E(360) / 12: 0.0000 8.993218E-06 -20E / 13: 20.0000 8.993218E-06 -40E / 14: 40.0000 8.993218E-06 -60E / 15: 60.0000 8.993218E-06 -80E / 16: 80.0000 8.993218E-06 -100E / 17: 100.0000 8.993218E-06 -120E / 18: 120.0000 8.993218E-06 -140E / 19: 140.0000 8.993218E-06 -160E / 20: 160.0000 8.993218E-06 -180E / 21: 180.0000 .... -90W / 22: .... .... -0E(720) / 23: 0.0000 8.993218E-06 - list/x=0:720 a, a[x=@ddb] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@DDB] is X[GX=XAXIS] (backwards derivative on X) - A A -0E / 1: 0.0000 .... -20E / 2: 20.0000 8.993218E-06 -40E / 3: 40.0000 8.993218E-06 -60E / 4: 60.0000 8.993218E-06 -80E / 5: 80.0000 8.993218E-06 -100E / 6: 100.0000 8.993218E-06 -120E / 7: 120.0000 8.993218E-06 -140E / 8: 140.0000 8.993218E-06 -160E / 9: 160.0000 8.993218E-06 -180E / 10: 180.0000 8.993218E-06 -90W / 11: .... .... -0E(360) / 12: 0.0000 .... -20E / 13: 20.0000 8.993218E-06 -40E / 14: 40.0000 8.993218E-06 -60E / 15: 60.0000 8.993218E-06 -80E / 16: 80.0000 8.993218E-06 -100E / 17: 100.0000 8.993218E-06 -120E / 18: 120.0000 8.993218E-06 -140E / 19: 140.0000 8.993218E-06 -160E / 20: 160.0000 8.993218E-06 -180E / 21: 180.0000 8.993218E-06 -90W / 22: .... .... -0E(720) / 23: 0.0000 .... - list/x=0:720 a, a[x=@shf] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@SHF:1] is X[GX=XAXIS] (shifted by 1 pts on X) - A A -0E / 1: 0.0000 20.0000 -20E / 2: 20.0000 40.0000 -40E / 3: 40.0000 60.0000 -60E / 4: 60.0000 80.0000 -80E / 5: 80.0000 100.0000 -100E / 6: 100.0000 120.0000 -120E / 7: 120.0000 140.0000 -140E / 8: 140.0000 160.0000 -160E / 9: 160.0000 180.0000 -180E / 10: 180.0000 .... -90W / 11: .... .... -0E(360) / 12: 0.0000 20.0000 -20E / 13: 20.0000 40.0000 -40E / 14: 40.0000 60.0000 -60E / 15: 60.0000 80.0000 -80E / 16: 80.0000 100.0000 -100E / 17: 100.0000 120.0000 -120E / 18: 120.0000 140.0000 -140E / 19: 140.0000 160.0000 -160E / 20: 160.0000 180.0000 -180E / 21: 180.0000 .... -90W / 22: .... .... -0E(720) / 23: 0.0000 20.0000 - list/x=0:720 a, a[x=@sbx] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@SBX:3] is X[GX=XAXIS] (box smoothed by 3 pts on X) - A A -0E / 1: 0.0000 .... -20E / 2: 20.0000 20.0000 -40E / 3: 40.0000 40.0000 -60E / 4: 60.0000 60.0000 -80E / 5: 80.0000 80.0000 -100E / 6: 100.0000 100.0000 -120E / 7: 120.0000 120.0000 -140E / 8: 140.0000 140.0000 -160E / 9: 160.0000 160.0000 -180E / 10: 180.0000 .... -90W / 11: .... .... -0E(360) / 12: 0.0000 .... -20E / 13: 20.0000 20.0000 -40E / 14: 40.0000 40.0000 -60E / 15: 60.0000 60.0000 -80E / 16: 80.0000 80.0000 -100E / 17: 100.0000 100.0000 -120E / 18: 120.0000 120.0000 -140E / 19: 140.0000 140.0000 -160E / 20: 160.0000 160.0000 -180E / 21: 180.0000 .... -90W / 22: .... .... -0E(720) / 23: 0.0000 .... - list/x=0:720 a, a[x=@sbn] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@SBN:3] is X[GX=XAXIS] (binomial smoothed by 3 pts on X) - A A -0E / 1: 0.0000 .... -20E / 2: 20.0000 20.0000 -40E / 3: 40.0000 40.0000 -60E / 4: 60.0000 60.0000 -80E / 5: 80.0000 80.0000 -100E / 6: 100.0000 100.0000 -120E / 7: 120.0000 120.0000 -140E / 8: 140.0000 140.0000 -160E / 9: 160.0000 160.0000 -180E / 10: 180.0000 .... -90W / 11: .... .... -0E(360) / 12: 0.0000 .... -20E / 13: 20.0000 20.0000 -40E / 14: 40.0000 40.0000 -60E / 15: 60.0000 60.0000 -80E / 16: 80.0000 80.0000 -100E / 17: 100.0000 100.0000 -120E / 18: 120.0000 120.0000 -140E / 19: 140.0000 140.0000 -160E / 20: 160.0000 160.0000 -180E / 21: 180.0000 .... -90W / 22: .... .... -0E(720) / 23: 0.0000 .... - list/x=0:720 a, a[x=@swl] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@SWL:3] is X[GX=XAXIS] (Welch smoothed by 3 pts on X) - A A -0E / 1: 0.0000 .... -20E / 2: 20.0000 20.0000 -40E / 3: 40.0000 40.0000 -60E / 4: 60.0000 60.0000 -80E / 5: 80.0000 80.0000 -100E / 6: 100.0000 100.0000 -120E / 7: 120.0000 120.0000 -140E / 8: 140.0000 140.0000 -160E / 9: 160.0000 160.0000 -180E / 10: 180.0000 .... -90W / 11: .... .... -0E(360) / 12: 0.0000 .... -20E / 13: 20.0000 20.0000 -40E / 14: 40.0000 40.0000 -60E / 15: 60.0000 60.0000 -80E / 16: 80.0000 80.0000 -100E / 17: 100.0000 100.0000 -120E / 18: 120.0000 120.0000 -140E / 19: 140.0000 140.0000 -160E / 20: 160.0000 160.0000 -180E / 21: 180.0000 .... -90W / 22: .... .... -0E(720) / 23: 0.0000 .... - list/x=0:720 a, a[x=@shn] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@SHN:3] is X[GX=XAXIS] (Hanning smoothed by 3 pts on X) - A A -0E / 1: 0.0000 .... -20E / 2: 20.0000 20.0000 -40E / 3: 40.0000 40.0000 -60E / 4: 60.0000 60.0000 -80E / 5: 80.0000 80.0000 -100E / 6: 100.0000 100.0000 -120E / 7: 120.0000 120.0000 -140E / 8: 140.0000 140.0000 -160E / 9: 160.0000 160.0000 -180E / 10: 180.0000 .... -90W / 11: .... .... -0E(360) / 12: 0.0000 .... -20E / 13: 20.0000 20.0000 -40E / 14: 40.0000 40.0000 -60E / 15: 60.0000 60.0000 -80E / 16: 80.0000 80.0000 -100E / 17: 100.0000 100.0000 -120E / 18: 120.0000 120.0000 -140E / 19: 140.0000 140.0000 -160E / 20: 160.0000 160.0000 -180E / 21: 180.0000 .... -90W / 22: .... .... -0E(720) / 23: 0.0000 .... - list/x=0:720 a, a[x=@spz] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@SPZ:3] is X[GX=XAXIS] (Parzen smoothed by 3 pts on X) - A A -0E / 1: 0.0000 .... -20E / 2: 20.0000 20.0000 -40E / 3: 40.0000 40.0000 -60E / 4: 60.0000 60.0000 -80E / 5: 80.0000 80.0000 -100E / 6: 100.0000 100.0000 -120E / 7: 120.0000 120.0000 -140E / 8: 140.0000 140.0000 -160E / 9: 160.0000 160.0000 -180E / 10: 180.0000 .... -90W / 11: .... .... -0E(360) / 12: 0.0000 .... -20E / 13: 20.0000 20.0000 -40E / 14: 40.0000 40.0000 -60E / 15: 60.0000 60.0000 -80E / 16: 80.0000 80.0000 -100E / 17: 100.0000 100.0000 -120E / 18: 120.0000 120.0000 -140E / 19: 140.0000 140.0000 -160E / 20: 160.0000 160.0000 -180E / 21: 180.0000 .... -90W / 22: .... .... -0E(720) / 23: 0.0000 .... - list/x=0:720 a, a[x=@med] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@MED:3] is X[GX=XAXIS] (median smoothed by 3 pts on X) - A A -0E / 1: 0.0000 20.0000 -20E / 2: 20.0000 20.0000 -40E / 3: 40.0000 40.0000 -60E / 4: 60.0000 60.0000 -80E / 5: 80.0000 80.0000 -100E / 6: 100.0000 100.0000 -120E / 7: 120.0000 120.0000 -140E / 8: 140.0000 140.0000 -160E / 9: 160.0000 160.0000 -180E / 10: 180.0000 180.0000 -90W / 11: .... .... -0E(360) / 12: 0.0000 20.0000 -20E / 13: 20.0000 20.0000 -40E / 14: 40.0000 40.0000 -60E / 15: 60.0000 60.0000 -80E / 16: 80.0000 80.0000 -100E / 17: 100.0000 100.0000 -120E / 18: 120.0000 120.0000 -140E / 19: 140.0000 140.0000 -160E / 20: 160.0000 160.0000 -180E / 21: 180.0000 180.0000 -90W / 22: .... .... -0E(720) / 23: 0.0000 20.0000 - list/x=0:720 a, a[x=@smx] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@SMX:3] is X[GX=XAXIS] (maximum smoothed by 3 pts on X) - A A -0E / 1: 0.0000 20.0000 -20E / 2: 20.0000 40.0000 -40E / 3: 40.0000 60.0000 -60E / 4: 60.0000 80.0000 -80E / 5: 80.0000 100.0000 -100E / 6: 100.0000 120.0000 -120E / 7: 120.0000 140.0000 -140E / 8: 140.0000 160.0000 -160E / 9: 160.0000 180.0000 -180E / 10: 180.0000 180.0000 -90W / 11: .... .... -0E(360) / 12: 0.0000 20.0000 -20E / 13: 20.0000 40.0000 -40E / 14: 40.0000 60.0000 -60E / 15: 60.0000 80.0000 -80E / 16: 80.0000 100.0000 -100E / 17: 100.0000 120.0000 -120E / 18: 120.0000 140.0000 -140E / 19: 140.0000 160.0000 -160E / 20: 160.0000 180.0000 -180E / 21: 180.0000 180.0000 -90W / 22: .... .... -0E(720) / 23: 0.0000 20.0000 - list/x=0:720 a, a[x=@smn] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@SMN:3] is X[GX=XAXIS] (minimum smoothed by 3 pts on X) - A A -0E / 1: 0.0000 0.0000 -20E / 2: 20.0000 0.0000 -40E / 3: 40.0000 20.0000 -60E / 4: 60.0000 40.0000 -80E / 5: 80.0000 60.0000 -100E / 6: 100.0000 80.0000 -120E / 7: 120.0000 100.0000 -140E / 8: 140.0000 120.0000 -160E / 9: 160.0000 140.0000 -180E / 10: 180.0000 160.0000 -90W / 11: .... .... -0E(360) / 12: 0.0000 0.0000 -20E / 13: 20.0000 0.0000 -40E / 14: 40.0000 20.0000 -60E / 15: 60.0000 40.0000 -80E / 16: 80.0000 60.0000 -100E / 17: 100.0000 80.0000 -120E / 18: 120.0000 100.0000 -140E / 19: 140.0000 120.0000 -160E / 20: 160.0000 140.0000 -180E / 21: 180.0000 160.0000 -90W / 22: .... .... -0E(720) / 23: 0.0000 0.0000 - list/x=0:720 a, a[x=@wgt] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@WGT] is X[GX=XAXIS] (weights for avg,int on X) - A A -0E / 1: 0.0000 2223898. -20E / 2: 20.0000 2223898. -40E / 3: 40.0000 2223898. -60E / 4: 60.0000 2223898. -80E / 5: 80.0000 2223898. -100E / 6: 100.0000 2223898. -120E / 7: 120.0000 2223898. -140E / 8: 140.0000 2223898. -160E / 9: 160.0000 2223898. -180E / 10: 180.0000 2223898. -90W / 11: .... .... -0E(360) / 12: 0.0000 2223898. -20E / 13: 20.0000 2223898. -40E / 14: 40.0000 2223898. -60E / 15: 60.0000 2223898. -80E / 16: 80.0000 2223898. -100E / 17: 100.0000 2223898. -120E / 18: 120.0000 2223898. -140E / 19: 140.0000 2223898. -160E / 20: 160.0000 2223898. -180E / 21: 180.0000 2223898. -90W / 22: .... .... -0E(720) / 23: 0.0000 2223898. - list/x=0:720 a, a[x=@spx] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@SPX:3] is X[GX=XAXIS] (box smooth w/missing by 3 pts on X) - A A -0E / 1: 0.0000 .... -20E / 2: 20.0000 20.0000 -40E / 3: 40.0000 40.0000 -60E / 4: 60.0000 60.0000 -80E / 5: 80.0000 80.0000 -100E / 6: 100.0000 100.0000 -120E / 7: 120.0000 120.0000 -140E / 8: 140.0000 140.0000 -160E / 9: 160.0000 160.0000 -180E / 10: 180.0000 170.0000 -90W / 11: .... .... -0E(360) / 12: 0.0000 .... -20E / 13: 20.0000 20.0000 -40E / 14: 40.0000 40.0000 -60E / 15: 60.0000 60.0000 -80E / 16: 80.0000 80.0000 -100E / 17: 100.0000 100.0000 -120E / 18: 120.0000 120.0000 -140E / 19: 140.0000 140.0000 -160E / 20: 160.0000 160.0000 -180E / 21: 180.0000 170.0000 -90W / 22: .... .... -0E(720) / 23: 0.0000 .... - -! Note that Running Sum and Indefinite Integral, Event mask -! now restart in each branch. - list/x=0:720 a, a[x=@rsu] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@RSU] is X[GX=XAXIS] (running sum on X) - A A -0E / 1: 0.0000 0.0000 -20E / 2: 20.0000 20.0000 -40E / 3: 40.0000 60.0000 -60E / 4: 60.0000 120.0000 -80E / 5: 80.0000 200.0000 -100E / 6: 100.0000 300.0000 -120E / 7: 120.0000 420.0000 -140E / 8: 140.0000 560.0000 -160E / 9: 160.0000 720.0000 -180E / 10: 180.0000 900.0000 -90W / 11: .... .... -0E(360) / 12: 0.0000 0.0000 -20E / 13: 20.0000 20.0000 -40E / 14: 40.0000 60.0000 -60E / 15: 60.0000 120.0000 -80E / 16: 80.0000 200.0000 -100E / 17: 100.0000 300.0000 -120E / 18: 120.0000 420.0000 -140E / 19: 140.0000 560.0000 -160E / 20: 160.0000 720.0000 -180E / 21: 180.0000 900.0000 -90W / 22: .... .... -0E(720) / 23: 0.0000 0.0000 - list/x=0:720 a, a[x=@iin] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@IIN] is X[GX=XAXIS] (indef. integ. on X) - A A -0E / 1: 0.0000 0. -20E / 2: 20.0000 44477961. -40E / 3: 40.0000 133433884. -60E / 4: 60.0000 266867768. -80E / 5: 80.0000 444779614. -100E / 6: 100.0000 667169421. -120E / 7: 120.0000 934037189. -140E / 8: 140.0000 1245382919. -160E / 9: 160.0000 1601206611. -180E / 10: 180.0000 2001508263. -90W / 11: .... .... -0E(360) / 12: 0.0000 0. -20E / 13: 20.0000 44477961. -40E / 14: 40.0000 133433884. -60E / 15: 60.0000 266867768. -80E / 16: 80.0000 444779614. -100E / 17: 100.0000 667169421. -120E / 18: 120.0000 934037189. -140E / 19: 140.0000 1245382919. -160E / 20: 160.0000 1601206611. -180E / 21: 180.0000 2001508263. -90W / 22: .... .... -0E(720) / 23: 0.0000 0. - list/x=0:720 a, a[x=@evnt:80] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is X[GX=XAXIS] - Column 2: A[X=@EVN:80] is X[GX=XAXIS] (event mask at 80 on X) - A A -0E / 1: 0.0000 0.000000 -20E / 2: 20.0000 0.000000 -40E / 3: 40.0000 0.000000 -60E / 4: 60.0000 0.000000 -80E / 5: 80.0000 1.000000 -100E / 6: 100.0000 1.000000 -120E / 7: 120.0000 1.000000 -140E / 8: 140.0000 1.000000 -160E / 9: 160.0000 1.000000 -180E / 10: 180.0000 1.000000 -90W / 11: .... .... -0E(360) / 12: 0.0000 0.000000 -20E / 13: 20.0000 0.000000 -40E / 14: 40.0000 0.000000 -60E / 15: 60.0000 0.000000 -80E / 16: 80.0000 1.000000 -100E / 17: 100.0000 1.000000 -120E / 18: 120.0000 1.000000 -140E / 19: 140.0000 1.000000 -160E / 20: 160.0000 1.000000 -180E / 21: 180.0000 1.000000 -90W / 22: .... .... -0E(720) / 23: 0.0000 0.000000 - - -! Transforms that deal with gaps -can dat/all -def ax/x=0:180:10/unit=degrees_e xaxis -let a = if x[gx=xaxis] gt 40 and x[gx=xaxis] le 150 then x[gx=xaxis] -save/clob/file=a.nc a -can var a; can ax xaxis; use a.nc - list/x=0:720 a, a[x=@fav] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is IF X[GX=XAXIS] GT 40 AND X[GX=XAXIS] LE 150 THEN X[GX=XAXIS] - Column 2: A[X=@FAV:3] is IF X[GX=XAXIS] GT 40 AND X[GX=XAXIS] LE 150 THEN X[GX=XAXIS] (ave-filled by 3 pts on X) - A A -0E / 1: .... .... -10E / 2: .... .... -20E / 3: .... .... -30E / 4: .... .... -40E / 5: .... 50.0000 -50E / 6: 50.0000 50.0000 -60E / 7: 60.0000 60.0000 -70E / 8: 70.0000 70.0000 -80E / 9: 80.0000 80.0000 -90E / 10: 90.0000 90.0000 -100E / 11: 100.0000 100.0000 -110E / 12: 110.0000 110.0000 -120E / 13: 120.0000 120.0000 -130E / 14: 130.0000 130.0000 -140E / 15: 140.0000 140.0000 -150E / 16: 150.0000 150.0000 -160E / 17: .... 150.0000 -170E / 18: .... .... -180E / 19: .... .... -90W / 20: .... .... -0E(360) / 21: .... .... -10E / 22: .... .... -20E / 23: .... .... -30E / 24: .... .... -40E / 25: .... 50.0000 -50E / 26: 50.0000 50.0000 -60E / 27: 60.0000 60.0000 -70E / 28: 70.0000 70.0000 -80E / 29: 80.0000 80.0000 -90E / 30: 90.0000 90.0000 -100E / 31: 100.0000 100.0000 -110E / 32: 110.0000 110.0000 -120E / 33: 120.0000 120.0000 -130E / 34: 130.0000 130.0000 -140E / 35: 140.0000 140.0000 -150E / 36: 150.0000 150.0000 -160E / 37: .... 150.0000 -170E / 38: .... .... -180E / 39: .... .... -90W / 40: .... .... -0E(720) / 41: .... .... - list/x=0:720 a, a[x=@fnr] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is IF X[GX=XAXIS] GT 40 AND X[GX=XAXIS] LE 150 THEN X[GX=XAXIS] - Column 2: A[X=@FNR:1] is IF X[GX=XAXIS] GT 40 AND X[GX=XAXIS] LE 150 THEN X[GX=XAXIS] (nearest-filled by 1 pts on X) - A A -0E / 1: .... 50.0000 -10E / 2: .... 50.0000 -20E / 3: .... 50.0000 -30E / 4: .... 50.0000 -40E / 5: .... 50.0000 -50E / 6: 50.0000 50.0000 -60E / 7: 60.0000 60.0000 -70E / 8: 70.0000 70.0000 -80E / 9: 80.0000 80.0000 -90E / 10: 90.0000 90.0000 -100E / 11: 100.0000 100.0000 -110E / 12: 110.0000 110.0000 -120E / 13: 120.0000 120.0000 -130E / 14: 130.0000 130.0000 -140E / 15: 140.0000 140.0000 -150E / 16: 150.0000 150.0000 -160E / 17: .... 150.0000 -170E / 18: .... 150.0000 -180E / 19: .... 150.0000 -90W / 20: .... .... -0E(360) / 21: .... 50.0000 -10E / 22: .... 50.0000 -20E / 23: .... 50.0000 -30E / 24: .... 50.0000 -40E / 25: .... 50.0000 -50E / 26: 50.0000 50.0000 -60E / 27: 60.0000 60.0000 -70E / 28: 70.0000 70.0000 -80E / 29: 80.0000 80.0000 -90E / 30: 90.0000 90.0000 -100E / 31: 100.0000 100.0000 -110E / 32: 110.0000 110.0000 -120E / 33: 120.0000 120.0000 -130E / 34: 130.0000 130.0000 -140E / 35: 140.0000 140.0000 -150E / 36: 150.0000 150.0000 -160E / 37: .... 150.0000 -170E / 38: .... 150.0000 -180E / 39: .... 150.0000 -90W / 40: .... .... -0E(720) / 41: .... 50.0000 - list/x=0:720 a, a[x=@cia] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is IF X[GX=XAXIS] GT 40 AND X[GX=XAXIS] LE 150 THEN X[GX=XAXIS] - Column 2: A[X=@CIA:1] is IF X[GX=XAXIS] GT 40 AND X[GX=XAXIS] LE 150 THEN X[GX=XAXIS] (closest index above on X) - A A -0E / 1: .... 5.000000 -10E / 2: .... 4.000000 -20E / 3: .... 3.000000 -30E / 4: .... 2.000000 -40E / 5: .... 1.000000 -50E / 6: 50.0000 0.000000 -60E / 7: 60.0000 0.000000 -70E / 8: 70.0000 0.000000 -80E / 9: 80.0000 0.000000 -90E / 10: 90.0000 0.000000 -100E / 11: 100.0000 0.000000 -110E / 12: 110.0000 0.000000 -120E / 13: 120.0000 0.000000 -130E / 14: 130.0000 0.000000 -140E / 15: 140.0000 0.000000 -150E / 16: 150.0000 0.000000 -160E / 17: .... .... -170E / 18: .... .... -180E / 19: .... .... -90W / 20: .... .... -0E(360) / 21: .... 5.000000 -10E / 22: .... 4.000000 -20E / 23: .... 3.000000 -30E / 24: .... 2.000000 -40E / 25: .... 1.000000 -50E / 26: 50.0000 0.000000 -60E / 27: 60.0000 0.000000 -70E / 28: 70.0000 0.000000 -80E / 29: 80.0000 0.000000 -90E / 30: 90.0000 0.000000 -100E / 31: 100.0000 0.000000 -110E / 32: 110.0000 0.000000 -120E / 33: 120.0000 0.000000 -130E / 34: 130.0000 0.000000 -140E / 35: 140.0000 0.000000 -150E / 36: 150.0000 0.000000 -160E / 37: .... .... -170E / 38: .... .... -180E / 39: .... .... -90W / 40: .... .... -0E(720) / 41: .... 5.000000 - list/x=0:720 a, a[x=@cib] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is IF X[GX=XAXIS] GT 40 AND X[GX=XAXIS] LE 150 THEN X[GX=XAXIS] - Column 2: A[X=@CIB:1] is IF X[GX=XAXIS] GT 40 AND X[GX=XAXIS] LE 150 THEN X[GX=XAXIS] (closest index below on X) - A A -0E / 1: .... .... -10E / 2: .... .... -20E / 3: .... .... -30E / 4: .... .... -40E / 5: .... .... -50E / 6: 50.0000 0.000000 -60E / 7: 60.0000 0.000000 -70E / 8: 70.0000 0.000000 -80E / 9: 80.0000 0.000000 -90E / 10: 90.0000 0.000000 -100E / 11: 100.0000 0.000000 -110E / 12: 110.0000 0.000000 -120E / 13: 120.0000 0.000000 -130E / 14: 130.0000 0.000000 -140E / 15: 140.0000 0.000000 -150E / 16: 150.0000 0.000000 -160E / 17: .... 1.000000 -170E / 18: .... 2.000000 -180E / 19: .... 3.000000 -90W / 20: .... .... -0E(360) / 21: .... .... -10E / 22: .... .... -20E / 23: .... .... -30E / 24: .... .... -40E / 25: .... .... -50E / 26: 50.0000 0.000000 -60E / 27: 60.0000 0.000000 -70E / 28: 70.0000 0.000000 -80E / 29: 80.0000 0.000000 -90E / 30: 90.0000 0.000000 -100E / 31: 100.0000 0.000000 -110E / 32: 110.0000 0.000000 -120E / 33: 120.0000 0.000000 -130E / 34: 130.0000 0.000000 -140E / 35: 140.0000 0.000000 -150E / 36: 150.0000 0.000000 -160E / 37: .... 1.000000 -170E / 38: .... 2.000000 -180E / 39: .... 3.000000 -90W / 40: .... .... -0E(720) / 41: .... .... - list/x=0:720 a, a[x=@cda] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is IF X[GX=XAXIS] GT 40 AND X[GX=XAXIS] LE 150 THEN X[GX=XAXIS] - Column 2: A[X=@CDA:1] is IF X[GX=XAXIS] GT 40 AND X[GX=XAXIS] LE 150 THEN X[GX=XAXIS] (closest dist above on X) - A A -0E / 1: .... 50.00000 -10E / 2: .... 40.00000 -20E / 3: .... 30.00000 -30E / 4: .... 20.00000 -40E / 5: .... 10.00000 -50E / 6: 50.0000 0.00000 -60E / 7: 60.0000 0.00000 -70E / 8: 70.0000 0.00000 -80E / 9: 80.0000 0.00000 -90E / 10: 90.0000 0.00000 -100E / 11: 100.0000 0.00000 -110E / 12: 110.0000 0.00000 -120E / 13: 120.0000 0.00000 -130E / 14: 130.0000 0.00000 -140E / 15: 140.0000 0.00000 -150E / 16: 150.0000 0.00000 -160E / 17: .... .... -170E / 18: .... .... -180E / 19: .... .... -90W / 20: .... .... -0E(360) / 21: .... 50.00000 -10E / 22: .... 40.00000 -20E / 23: .... 30.00000 -30E / 24: .... 20.00000 -40E / 25: .... 10.00000 -50E / 26: 50.0000 0.00000 -60E / 27: 60.0000 0.00000 -70E / 28: 70.0000 0.00000 -80E / 29: 80.0000 0.00000 -90E / 30: 90.0000 0.00000 -100E / 31: 100.0000 0.00000 -110E / 32: 110.0000 0.00000 -120E / 33: 120.0000 0.00000 -130E / 34: 130.0000 0.00000 -140E / 35: 140.0000 0.00000 -150E / 36: 150.0000 0.00000 -160E / 37: .... .... -170E / 38: .... .... -180E / 39: .... .... -90W / 40: .... .... -0E(720) / 41: .... 50.00000 - list/x=0:720 a, a[x=@cdb] - DATA SET: ./a.nc - LONGITUDE: 0E to 0E(720) - Column 1: A is IF X[GX=XAXIS] GT 40 AND X[GX=XAXIS] LE 150 THEN X[GX=XAXIS] - Column 2: A[X=@CDB:1] is IF X[GX=XAXIS] GT 40 AND X[GX=XAXIS] LE 150 THEN X[GX=XAXIS] (closest dist below on X) - A A -0E / 1: .... .... -10E / 2: .... .... -20E / 3: .... .... -30E / 4: .... .... -40E / 5: .... .... -50E / 6: 50.0000 0.00000 -60E / 7: 60.0000 0.00000 -70E / 8: 70.0000 0.00000 -80E / 9: 80.0000 0.00000 -90E / 10: 90.0000 0.00000 -100E / 11: 100.0000 0.00000 -110E / 12: 110.0000 0.00000 -120E / 13: 120.0000 0.00000 -130E / 14: 130.0000 0.00000 -140E / 15: 140.0000 0.00000 -150E / 16: 150.0000 0.00000 -160E / 17: .... 10.00000 -170E / 18: .... 20.00000 -180E / 19: .... 30.00000 -90W / 20: .... .... -0E(360) / 21: .... .... -10E / 22: .... .... -20E / 23: .... .... -30E / 24: .... .... -40E / 25: .... .... -50E / 26: 50.0000 0.00000 -60E / 27: 60.0000 0.00000 -70E / 28: 70.0000 0.00000 -80E / 29: 80.0000 0.00000 -90E / 30: 90.0000 0.00000 -100E / 31: 100.0000 0.00000 -110E / 32: 110.0000 0.00000 -120E / 33: 120.0000 0.00000 -130E / 34: 130.0000 0.00000 -140E / 35: 140.0000 0.00000 -150E / 36: 150.0000 0.00000 -160E / 37: .... 10.00000 -170E / 38: .... 20.00000 -180E / 39: .... 30.00000 -90W / 40: .... .... -0E(720) / 41: .... .... - - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_subspan_mod_in_expr -! err696_subspan_mod_in_expr.jnl -! ticket 1845: a subspan modulo due to context info buried -! in a multi-layer expression isn't applied when setting -! the time axis limits for the plot. -! *acm* 5/2016 - -use bug1845.nc -set v upper -shade/x=137:146 salinity[l=1] - salinity[l=2] -sh sym xaxis_m* -XAXIS_MIN = "137.000000" -XAXIS_MAX = "145.345261" - - -! When the region information is embedded a couple levels down inside -! the expressions - in the square brackets, and then an expression involving -! subtraction - the region isn't treated correctly, and the upper limit is -! the modulo void point. - -! Previously XAXIS_MAX was 496.4, the x axis too long, and most of the plot was blank - -set v lower -shade salinity[x=137:146,T="28-Mar-2011 00:00"] - salinity[x=137:146,T="28-Mar-2011 03:00"] -sh sym xaxis_m* -XAXIS_MIN = "136.443619" -XAXIS_MAX = "145.345261" - - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_shade_subspan_clim -! err696_shade_subspan_clim -! See ticket 2404 - -def ax/edges/t/unit="day"/t0=1-jan-0001/cal=gregorian/modulo=365.25 \ -tax = {31, 59.2425, 90.2425, 120.2425, 151.2425, 181.2425, 212.2425} -let a = t[gt=tax] -save/clob/file=a.nc a -can var a -can axis tax -use a.nc -can view - -! The top-left SHADE plot looks fine. -set view ul; shade a*x[gx=0:10:1] -sh sym yaxis* -YAXIS_REVERSED = "0" -YAXIS_MIN = "31.0000000" -YAXIS_MAX = "243.000000" - -! But the top-right SHADE plot was all messed up; it shifts the data -! later by a full month, and stretches the last (shifted) cell all -! the way to the upper limit of the plot domain - -set view ur; shade/t=1-jan-0001:1-jan-0002 a*x[gx=0:10:1] -sh sym yaxis* -YAXIS_REVERSED = "0" -YAXIS_MIN = "31.0000000" -YAXIS_MAX = "243.000000" - -! In the bottom-right line plot, the actual plotted data look ok. -! But the plot limits extend all the way from 1-JUL-0000 to 1-MAR-0002, -! rather than being shrink-wrapped around the data. - -set view lr; plot/step=con/t=1-jan-0001:1-jan-0002 a - -sh sym xaxis* -XAXIS_REVERSED = "0" -XAXIS_MIN = "31.0000000" -XAXIS_MAX = "243.000000" - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -! go err696_subspan_mod_strides ! do this test in bn_gif - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_def_att -! err696_def_att.jnl -! tickets 2415, 2416 -! data type for defined axes - -use coads_climatology - -! previously the values were corrupted when defining numeric -! attributes on a coordinate variable -define att/output (`sst,return=xaxis`).new2 = {1,3,6} - !-> define att/output (COADSX).new2 = {1,3,6} -save/clobber/file=a.nc sst -sp ncdump a.nc | grep -i coadsx - COADSX = 180 ; - double COADSX(COADSX) ; - COADSX:units = "degrees_east" ; - COADSX:modulo = " " ; - COADSX:point_spacing = "even" ; - COADSX:new2 = 1.f, 3.f, 6.f ; - COADSX:axis = "X" ; - COADSX:standard_name = "longitude" ; - float SST(TIME25, COADSY, COADSX) ; - COADSX = 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, - -can dat/all -use coads_climatology - -! previously could only specify /TYPE=float or /TYPE=string - -! default types from the expression -define att/output sst.newch = "A string" -define att/output sst.newch = 158.12 - -define att/output/type=byt sst.abyte = 5 -define att/output/type=int sst.aint = {-5,-12,-1556,0,1} -define att/output/type=string sst.str_from_num = 978.43 -define att/output/type=double sst.dbint = 123.45678901 - -save/clobber/file=a.nc sst -sp ncdump a.nc | grep -i sst - float SST(TIME25, COADSY, COADSX) ; - SST:missing_value = -1.e+34f ; - SST:_FillValue = -1.e+34f ; - SST:long_name = "SEA SURFACE TEMPERATURE" ; - SST:history = "From coads_climatology" ; - SST:units = "Deg C" ; - SST:newch = 158.12f ; - SST:abyte = 5b ; - SST:aint = -5, -12, -1556, 0, 1 ; - SST:str_from_num = "978.43" ; - SST:dbint = 123.45678901 ; - SST = - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err696_return_prec -! err696_return_prec.jnl -! ACM 5/16 See ticket 2389. -! For grave-accent returns, adjust the formatting so that `var,p=2` really -! means 2 digits, and returning an exponential rather than a long integer -! with lots of zero's. - -! Both of these as exponentials. Prev. the second switched to an integer. -say `1.55551e8,p=2` - !-> MESSAGE/CONTINUE 1.6E+08 -1.6E+08 -say `1.55551e7,p=2` - !-> MESSAGE/CONTINUE 1.6E+07 -1.6E+07 - -! Return only as many digits as requested - -say `1.555555551e-9,p=1` - !-> MESSAGE/CONTINUE 2.E-09 -2.E-09 -say `1.555555551e-9,p=2` - !-> MESSAGE/CONTINUE 1.6E-09 -1.6E-09 -say `1.555555551e-9,p=3` - !-> MESSAGE/CONTINUE 1.56E-09 -1.56E-09 - -say `1.555555551e-9,p=5` - !-> MESSAGE/CONTINUE 1.5556E-09 -1.5556E-09 -say `1.555555551e-9,p=7` - !-> MESSAGE/CONTINUE 1.555556E-09 -1.555556E-09 -say `1.555555551e-9,p=10` - !-> MESSAGE/CONTINUE 1.555555551E-09 -1.555555551E-09 - -! For large numbers, return an fixed-point value only when the number -! of digits is at least the magnitude of the value - -say `1.55551e8,p=2` - !-> MESSAGE/CONTINUE 1.6E+08 -1.6E+08 -say `1.55551e8,p=3` - !-> MESSAGE/CONTINUE 1.56E+08 -1.56E+08 -say `1.55551e8,p=5` - !-> MESSAGE/CONTINUE 1.5555E+08 -1.5555E+08 -say `1.55551e8,p=9` - !-> MESSAGE/CONTINUE 155551000 -155551000 -say `1.55551e8,p=10` - !-> MESSAGE/CONTINUE 155551000 -155551000 - -! Previously these returned fixed-point numbers with trailing zero's -! after the decimal point. These are removed. -say `1.55555551e8,p=14` - !-> MESSAGE/CONTINUE 155555551 -155555551 -say `1.555555001e8,p=14` - !-> MESSAGE/CONTINUE 155555500.1 -155555500.1 - - - - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err686_show_xml_letd -! ! bn_show_xml_letd -! Testing SHOW DATA/VAR/XML with a let/D variable -! Ticket 2441 - -use coads_climatology.cdf -use gtbc011.cdf -let/d=1 u2 = u[d=2] -let/d=1 v2 = v[d=2] -let/d=1 w2 = w[d=2] -let/d=1 salt2 = salt[d=2] -sh dat 1 - currently SET data sets: - 1> ./data/coads_climatology.cdf - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - ------------------------------ - SALT2[D=coads_climatology] = SALT[D=2] - W2[D=coads_climatology] = W[D=2] - V2[D=coads_climatology] = V[D=2] - U2[D=coads_climatology] = U[D=2] - - -sh dat/var/xml/outfile=out.xml/clobber 1 - -! Showed w2 twice but missed u2. -sp grep "var name" out.xml - - - - - - -GO bn_reset bn_aggregate_t -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_aggregate_t -GO bn_aggregate_t -! bn_aggregate_t.jnl -! 9/12/2015 *sh* tweak to put all test files into "tmp" subdirectory -! 1/2016 *sh* added implicit naming of aggregation from script filename -! 2/2016 and auto-sorting of member files -! 1/2017 *acm* changes in output due to backing off auto-detection of truemonth axes, tkt 2497 - -spawn "mkdir -p tmp" ! tmp directory t store files - -! *** create test files for T aggregation *** - -! --- files with regularly-spaced time points --- -define axis/t=1-jan-1980:1-jan-1990:1/unit=days tday -let myvar = SIN(T[gt=tday]/10) + L[gt=tday]/10 - -! also define a time intependent field to be saved as the second variable -! but only in the first data set -let mymap = I[x=0E:0E:5]+ 10*J[Y=80s:80n:5] - -save/clobber/file="tmp/tagg_reg_1.nc" myvar[l=1:10], mymap -save/clobber/file="tmp/tagg_reg_2.nc" myvar[l=11:20] -save/clobber/file="tmp/tagg_reg_3.nc" myvar[l=21:30] -save/clobber/file="tmp/tagg_reg_4.nc" myvar[l=31:40] -save/clobber/file="tmp/tagg_reg_5.nc" myvar[l=41:50] -save/clobber/file="tmp/tagg_reg_6.nc" myvar[l=51:60] -save/clobber/file="tmp/tagg_reg_7.nc" myvar[l=61:70] -save/clobber/file="tmp/tagg_reg_8.nc" myvar[l=71:80] -save/clobber/file="tmp/tagg_reg_9.nc" myvar[l=81:90] -save/clobber/file="tmp/tagg_reg_10.nc" myvar[l=91:100] - -! Add some global attributes which will propagate through aggregations: -! TSERIES inherits global atts from the 1st member -! ENSEMBLE aggregations promote global attrs to a variable on the E axis - -let investigator = "Ferret developers" -let description = "Example for time-aggregation working with global attributes" -save/asglobal/append/file="tmp/tagg_reg_1.nc" investigator, description - -! save a duplicate of the first file -save/clobber/file="tmp/tagg_reg_1_duplicate.nc" myvar[l=1:10], mymap - -! save a file with no time-dependent variables -save/clobber/file="tmp/tagg_reg_no_T.nc" mymap - -! make a single file that is "too long": 15 time steps instead of 10 -! so that when used in a time series it creates reverse-ordered points -define axis/t=1-jan-1980:1-jan-1990:1/unit=days tday -let myvar = SIN(T[gt=tday]/10) + L[gt=tday]/10 -save/clobber/file="tmp/tagg_reg_2_overlarge.nc" myvar[l=11:25] -cancel axis tday - -! --- files with irregularly-spaced time points --- -define axis/T0=1-jan-1980/unit=days tday_ir = L[l=1:200]^1.01 - -let myvar = SIN(T[gt=tday_ir]/10) + L[gt=tday_ir]/10 -!plot myvar[l=1:100] - -save/clobber/file="tmp/tagg_irreg_1.nc" myvar[l=1:10] -save/clobber/file="tmp/tagg_irreg_2.nc" myvar[l=11:20] -save/clobber/file="tmp/tagg_irreg_3.nc" myvar[l=21:30] -save/clobber/file="tmp/tagg_irreg_4.nc" myvar[l=31:40] -save/clobber/file="tmp/tagg_irreg_5.nc" myvar[l=41:50] -save/clobber/file="tmp/tagg_irreg_6.nc" myvar[l=51:60] -save/clobber/file="tmp/tagg_irreg_7.nc" myvar[l=61:70] -save/clobber/file="tmp/tagg_irreg_8.nc" myvar[l=71:80] -save/clobber/file="tmp/tagg_irreg_9.nc" myvar[l=81:90] -save/clobber/file="tmp/tagg_irreg_10.nc" myvar[l=91:100] - -let investigator = "Ferret developers" -let description = "Example for time-aggregation working with global attributes" - -save/asglobal/append/file="tmp/tagg_irreg_1.nc" investigator -save/asglobal/append/file="tmp/tagg_irreg_1.nc" description - -! create a regular time axis (lacking cell bounds) in the midst of the sequence -define axis/T0=1-jan-1980/unit=days tday_ir = L[l=11:20] -save/clobber/file="tmp/tagg_irreg_2_reg.nc" myvar -cancel axis tday_ir - - -! --- files in which the T0 origin varies --- -! create a sequence of files with differing T0 dates, but the very same -! timestep values (1, 2, 3, 4) - -let tt = t[gt=tday_tvar] - -repeat/i=1:5 (\ -define symbol file `i`;\ -define symbol start_day `(i-1)*4+1`;\ -define axis/T0=($start_day)-jan-1980/unit=days tday_Tvar = L[l=1:4];\ -let myvar0 = TAX_JDAY(L[l=1:4], tt);\ -let myvar = myvar0[gt=tday_Tvar@asn];\ -save/clobber/file="tmp/tagg_T0varying_($file).nc" myvar[l=1:4]) - !-> repeat/i=1:5 (define symbol file `i`;define symbol start_day `(i-1)*4+1`;define axis/T0=($start_day)-jan-1980/unit=days tday_Tvar = L[l=1:4];let myvar0 = TAX_JDAY(L[l=1:4], tt);let myvar = myvar0[gt=tday_Tvar@asn];save/clobber/file="tmp/tagg_T0varying_($file).nc" myvar[l=1:4]) -!-> REPEAT: I=1 - !-> define symbol file 1 - !-> define symbol start_day 1 - !-> define axis/T0=1-jan-1980/unit=days tday_Tvar = L[l=1:4] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_T0varying_1.nc" myvar[l=1:4] -!-> REPEAT: I=2 - !-> define symbol file 2 - !-> define symbol start_day 5 - !-> define axis/T0=5-jan-1980/unit=days tday_Tvar = L[l=1:4] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_T0varying_2.nc" myvar[l=1:4] -!-> REPEAT: I=3 - !-> define symbol file 3 - !-> define symbol start_day 9 - !-> define axis/T0=9-jan-1980/unit=days tday_Tvar = L[l=1:4] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_T0varying_3.nc" myvar[l=1:4] -!-> REPEAT: I=4 - !-> define symbol file 4 - !-> define symbol start_day 13 - !-> define axis/T0=13-jan-1980/unit=days tday_Tvar = L[l=1:4] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_T0varying_4.nc" myvar[l=1:4] -!-> REPEAT: I=5 - !-> define symbol file 5 - !-> define symbol start_day 17 - !-> define axis/T0=17-jan-1980/unit=days tday_Tvar = L[l=1:4] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_T0varying_5.nc" myvar[l=1:4] - -! --- files with T0 varying and date gaps between files --- -let myvar = L[gt=tday_Tvar] - -repeat/i=1:10 (\ -define symbol file `i`;\ -define symbol year `i+1980`;\ -define axis/T0=1-jan-($year)/unit=days tday_Tvar = L[l=1:10];\ -save/clobber/file="tmp/tagg_disjoint_T0varying_($file).nc" myvar[l=1:10]) - !-> repeat/i=1:10 (define symbol file `i`;define symbol year `i+1980`;define axis/T0=1-jan-($year)/unit=days tday_Tvar = L[l=1:10];save/clobber/file="tmp/tagg_disjoint_T0varying_($file).nc" myvar[l=1:10]) -!-> REPEAT: I=1 - !-> define symbol file 1 - !-> define symbol year 1981 - !-> define axis/T0=1-jan-1981/unit=days tday_Tvar = L[l=1:10] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_disjoint_T0varying_1.nc" myvar[l=1:10] -!-> REPEAT: I=2 - !-> define symbol file 2 - !-> define symbol year 1982 - !-> define axis/T0=1-jan-1982/unit=days tday_Tvar = L[l=1:10] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_disjoint_T0varying_2.nc" myvar[l=1:10] -!-> REPEAT: I=3 - !-> define symbol file 3 - !-> define symbol year 1983 - !-> define axis/T0=1-jan-1983/unit=days tday_Tvar = L[l=1:10] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_disjoint_T0varying_3.nc" myvar[l=1:10] -!-> REPEAT: I=4 - !-> define symbol file 4 - !-> define symbol year 1984 - !-> define axis/T0=1-jan-1984/unit=days tday_Tvar = L[l=1:10] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_disjoint_T0varying_4.nc" myvar[l=1:10] -!-> REPEAT: I=5 - !-> define symbol file 5 - !-> define symbol year 1985 - !-> define axis/T0=1-jan-1985/unit=days tday_Tvar = L[l=1:10] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_disjoint_T0varying_5.nc" myvar[l=1:10] -!-> REPEAT: I=6 - !-> define symbol file 6 - !-> define symbol year 1986 - !-> define axis/T0=1-jan-1986/unit=days tday_Tvar = L[l=1:10] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_disjoint_T0varying_6.nc" myvar[l=1:10] -!-> REPEAT: I=7 - !-> define symbol file 7 - !-> define symbol year 1987 - !-> define axis/T0=1-jan-1987/unit=days tday_Tvar = L[l=1:10] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_disjoint_T0varying_7.nc" myvar[l=1:10] -!-> REPEAT: I=8 - !-> define symbol file 8 - !-> define symbol year 1988 - !-> define axis/T0=1-jan-1988/unit=days tday_Tvar = L[l=1:10] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_disjoint_T0varying_8.nc" myvar[l=1:10] -!-> REPEAT: I=9 - !-> define symbol file 9 - !-> define symbol year 1989 - !-> define axis/T0=1-jan-1989/unit=days tday_Tvar = L[l=1:10] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_disjoint_T0varying_9.nc" myvar[l=1:10] -!-> REPEAT: I=10 - !-> define symbol file 10 - !-> define symbol year 1990 - !-> define axis/T0=1-jan-1990/unit=days tday_Tvar = L[l=1:10] - !-> LIST/FORMAT=CDF/clobber/file="tmp/tagg_disjoint_T0varying_10.nc" myvar[l=1:10] - -! alter first and third files to have only single time step -define axis/T0=1-jan-1981/unit=days tday_Tvar = L[l=1:10] -save/clobber/file="tmp/tagg_disjoint_T0varying_1.nc" myvar[l=1:1] -define axis/T0=1-jan-1983/unit=days tday_Tvar = L[l=1:10] -save/clobber/file="tmp/tagg_disjoint_T0varying_3.nc" myvar[l=1:1] - -! make an alternative file 4 that has a different name for the time axis -define axis/T0=1-jan-1984/unit=days tday_WRONG = L[l=1:10] -let myvar = L[gt=tday_WRONG] -save/clobber/file="tmp/tagg_disjoint_T0varying_4_wrong.nc" myvar[l=1:1] -cancel axis tday_Tvar -cancel axis tday_WRONG - -! --- files each containing only a single time step --- -define axis/t=1-jan-1980:1-jan-1990:1/unit=days tday - -let myvar = SIN(T[gt=tday]/10) + L[gt=tday]/10 - -! also define a time intependent field to be saved as the second variable -! but only in the first data set -let mymap = I[x=0E:0E:5]+ 10*J[Y=80s:80n:5] - -!save/rigid/keep_axisname/file=... - -save/clobber/file="tmp/tagg_single_1.nc" myvar[l=1], mymap -save/clobber/file="tmp/tagg_single_2.nc" myvar[l=2] -save/clobber/file="tmp/tagg_single_3.nc" myvar[l=3] -save/clobber/file="tmp/tagg_single_4.nc" myvar[l=4] -save/clobber/file="tmp/tagg_single_5.nc" myvar[l=5] -save/clobber/file="tmp/tagg_single_6.nc" myvar[l=6] - -cancel axis tday - -cancel var/all - - -! ***************************************** -! *** test the aggregation capabilities *** -! --- regularly-spaced axes --- -! if the first file of the aggregation is already open -! it must not get disturbed by setting up the aggregation -use tmp/tagg_reg_1.nc - -! single dataset aggregation -tseries myagg1 = tmp/tagg_reg_1.nc -show data myagg1 - currently SET data sets: - 2> myagg1 (default) - name title I J K L - MYVAR SIN(T[GT=TDAY]/10) + L[GT=TDAY] ... ... ... 1:10 - MYMAP I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] 1:73 1:33 ... ... - -show grid myvar - GRID GTR3 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY1 TIME 10 r 01-JAN-1980 00:00 10-JAN-1980 00:00 full - -! double file aggregation -define data/agg/t myagg2 = tmp/tagg_reg_1.nc, tmp/tagg_reg_2.nc -show grid myvar - GRID GTR5 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY2 TIME 20 r 01-JAN-1980 00:00 20-JAN-1980 00:00 full -stat myvar - - SIN(T[GT=TDAY]/10) + L[GT=TDAY]/10 - X: N/A - Y: N/A - Z: N/A - TIME: 31-DEC-1979 12:00 to 20-JAN-1980 12:00 - E: N/A - F: N/A - DATA SET: myagg2 - - Total # of data points: 20 (1*1*1*20*1*1) - # flagged as bad data: 0 - Minimum value: 0.11794 - Maximum value: 2.9403 - Mean value: 1.7434 (unweighted average) - Standard deviation: 0.90253 - -! show that aggregate name is case-sensitive -define data/agg/t myAgg2 = tmp/tagg_reg_1.nc, tmp/tagg_reg_2.nc -show data myAgg2 - currently SET data sets: - 3> myagg2 - name title I J K L - MYVAR SIN(T[GT=TDAY]/10) + L[GT=TDAY] ... ... ... 1:20 - MYMAP I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] 1:73 1:33 ... ... - - -! *sh* 1/28/2016 addition -! same aggregation inheriting its name from the parent script -define data/agg/t tmp/tagg_reg_1.nc, tmp/tagg_reg_2.nc -show data/brief - currently SET data sets: - 1> tmp/tagg_reg_1.nc - 2> myagg1 - 3> myagg2 - 4> myAgg2 - 5> ./v6jnls/bn_aggregate_t.jnl (default) - -! define a long aggregation -define data/agg/t myagg8 = tmp/tagg_reg_1.nc, tmp/tagg_reg_2.nc,tmp/tagg_reg_3.nc, tmp/tagg_reg_4.nc,tmp/tagg_reg_5.nc, tmp/tagg_reg_6.nc,tmp/tagg_reg_7.nc, tmp/tagg_reg_8.nc -show data/full ! all 4 datasets - currently SET data sets: - 1> tmp/tagg_reg_1.nc - - name title I J K L - MYVAR SIN(T[GT=TDAY]/10) + L[GT=TDAY] ... ... ... 1:10 - on grid GTR1 with -1.E+34 for missing data - - MYMAP I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] 1:73 1:33 ... ... - on grid GTR2 with -1.E+34 for missing data - X=2.5W(-2.5):2.5E(362.5) Y=82.5S:82.5N - - time range: 01-JAN-1980 00:00 to 10-JAN-1980 00:00 - - 2> myagg1 - - T-aggregation of 1 netCDF files - name title I J K L - MYVAR SIN(T[GT=TDAY]/10) + L[GT=TDAY] ... ... ... 1:10 - on grid GTR3 with -1.E+34 for missing data - - MYMAP I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] 1:73 1:33 ... ... - on grid GTR4 with -1.E+34 for missing data - X=2.5W(-2.5):2.5E(362.5) Y=82.5S:82.5N - - time range: 01-JAN-1980 00:00 to 10-JAN-1980 00:00 - - time-dependent data files: -01-JAN-1980 00:00 -> 10-JAN-1980 00:00 tmp/tagg_reg_1.nc - - 3> myagg2 - - T-aggregation of 2 netCDF files - name title I J K L - MYVAR SIN(T[GT=TDAY]/10) + L[GT=TDAY] ... ... ... 1:20 - on grid GTR5 with -1.E+34 for missing data - - MYMAP I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] 1:73 1:33 ... ... - on grid GTR6 with -1.E+34 for missing data - X=2.5W(-2.5):2.5E(362.5) Y=82.5S:82.5N - - time range: 01-JAN-1980 00:00 to 20-JAN-1980 00:00 - - time-dependent data files: -01-JAN-1980 00:00 -> 10-JAN-1980 00:00 tmp/tagg_reg_1.nc -11-JAN-1980 00:00 -> 20-JAN-1980 00:00 tmp/tagg_reg_2.nc - - 4> myAgg2 - - T-aggregation of 2 netCDF files - name title I J K L - MYVAR SIN(T[GT=TDAY]/10) + L[GT=TDAY] ... ... ... 1:20 - on grid GTR7 with -1.E+34 for missing data - - MYMAP I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] 1:73 1:33 ... ... - on grid GTR8 with -1.E+34 for missing data - X=2.5W(-2.5):2.5E(362.5) Y=82.5S:82.5N - - time range: 01-JAN-1980 00:00 to 20-JAN-1980 00:00 - - time-dependent data files: -01-JAN-1980 00:00 -> 10-JAN-1980 00:00 tmp/tagg_reg_1.nc -11-JAN-1980 00:00 -> 20-JAN-1980 00:00 tmp/tagg_reg_2.nc - - 5> ./v6jnls/bn_aggregate_t.jnl - - T-aggregation of 2 netCDF files - name title I J K L - MYVAR SIN(T[GT=TDAY]/10) + L[GT=TDAY] ... ... ... 1:20 - on grid GTR9 with -1.E+34 for missing data - - MYMAP I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] 1:73 1:33 ... ... - on grid GTR10 with -1.E+34 for missing data - X=2.5W(-2.5):2.5E(362.5) Y=82.5S:82.5N - - time range: 01-JAN-1980 00:00 to 20-JAN-1980 00:00 - - time-dependent data files: -01-JAN-1980 00:00 -> 10-JAN-1980 00:00 tmp/tagg_reg_1.nc -11-JAN-1980 00:00 -> 20-JAN-1980 00:00 tmp/tagg_reg_2.nc - - 6> myagg8 (default) - - T-aggregation of 8 netCDF files - name title I J K L - MYVAR SIN(T[GT=TDAY]/10) + L[GT=TDAY] ... ... ... 1:80 - on grid GTR11 with -1.E+34 for missing data - - MYMAP I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] 1:73 1:33 ... ... - on grid GTR12 with -1.E+34 for missing data - X=2.5W(-2.5):2.5E(362.5) Y=82.5S:82.5N - - time range: 01-JAN-1980 00:00 to 20-MAR-1980 00:00 - - time-dependent data files: -01-JAN-1980 00:00 -> 10-JAN-1980 00:00 tmp/tagg_reg_1.nc -11-JAN-1980 00:00 -> 20-JAN-1980 00:00 tmp/tagg_reg_2.nc -21-JAN-1980 00:00 -> 30-JAN-1980 00:00 tmp/tagg_reg_3.nc -31-JAN-1980 00:00 -> 09-FEB-1980 00:00 tmp/tagg_reg_4.nc -10-FEB-1980 00:00 -> 19-FEB-1980 00:00 tmp/tagg_reg_5.nc -20-FEB-1980 00:00 -> 29-FEB-1980 00:00 tmp/tagg_reg_6.nc -01-MAR-1980 00:00 -> 10-MAR-1980 00:00 tmp/tagg_reg_7.nc -11-MAR-1980 00:00 -> 20-MAR-1980 00:00 tmp/tagg_reg_8.nc - -show grid myvar - GRID GTR11 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY3 TIME 80 r 01-JAN-1980 00:00 20-MAR-1980 00:00 full -plot/line/sym myvar - -! read a time-independent field from the first file of the aggregation -stat mymap - - I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] - LONGITUDE: 2.5W(-2.5) to 2.5E(362.5) - LATITUDE: 82.5S to 82.5N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: myagg8 - - Total # of data points: 2409 (73*33*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 11 - Maximum value: 403 - Mean value: 207 (unweighted average) - Standard deviation: 97.543 - -! 2/2016 -- reorder deliberately out of order regular files -define data/agg/t myagg8_disordered1 = tmp/tagg_reg_2.nc, tmp/tagg_reg_1.nc,tmp/tagg_reg_3.nc, tmp/tagg_reg_4.nc,tmp/tagg_reg_5.nc, tmp/tagg_reg_6.nc,tmp/tagg_reg_7.nc, tmp/tagg_reg_8.nc -define data/agg/t myagg8_disordered2 = tmp/tagg_reg_1.nc, tmp/tagg_reg_2.nc,tmp/tagg_reg_3.nc, tmp/tagg_reg_4.nc,tmp/tagg_reg_5.nc, tmp/tagg_reg_6.nc,tmp/tagg_reg_8.nc, tmp/tagg_reg_7.nc -show data/files/brief myagg8_disordered1 - currently SET data sets: - 7> myagg8_disordered1 - time-dependent data files: -01-JAN-1980 00:00 -> 10-JAN-1980 00:00 tmp/tagg_reg_1.nc -11-JAN-1980 00:00 -> 20-JAN-1980 00:00 tmp/tagg_reg_2.nc -21-JAN-1980 00:00 -> 30-JAN-1980 00:00 tmp/tagg_reg_3.nc -31-JAN-1980 00:00 -> 09-FEB-1980 00:00 tmp/tagg_reg_4.nc -10-FEB-1980 00:00 -> 19-FEB-1980 00:00 tmp/tagg_reg_5.nc -20-FEB-1980 00:00 -> 29-FEB-1980 00:00 tmp/tagg_reg_6.nc -01-MAR-1980 00:00 -> 10-MAR-1980 00:00 tmp/tagg_reg_7.nc -11-MAR-1980 00:00 -> 20-MAR-1980 00:00 tmp/tagg_reg_8.nc - -show data/files/brief myagg8_disordered2 - currently SET data sets: - 8> myagg8_disordered2 (default) - time-dependent data files: -01-JAN-1980 00:00 -> 10-JAN-1980 00:00 tmp/tagg_reg_1.nc -11-JAN-1980 00:00 -> 20-JAN-1980 00:00 tmp/tagg_reg_2.nc -21-JAN-1980 00:00 -> 30-JAN-1980 00:00 tmp/tagg_reg_3.nc -31-JAN-1980 00:00 -> 09-FEB-1980 00:00 tmp/tagg_reg_4.nc -10-FEB-1980 00:00 -> 19-FEB-1980 00:00 tmp/tagg_reg_5.nc -20-FEB-1980 00:00 -> 29-FEB-1980 00:00 tmp/tagg_reg_6.nc -01-MAR-1980 00:00 -> 10-MAR-1980 00:00 tmp/tagg_reg_7.nc -11-MAR-1980 00:00 -> 20-MAR-1980 00:00 tmp/tagg_reg_8.nc - -stat/brief T[g=myvar[d=myagg8]] - T[g=myvar[d=myagg8_disordered1]] - - Total # of data points: 80 (1*1*1*80*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) -stat/brief TBOXLO[g=myvar[d=myagg8]] - TBOXLO[g=myvar[d=myagg8_disordered1]] - - Total # of data points: 80 (1*1*1*80*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) -stat/brief TBOXHI[g=myvar[d=myagg8]] - TBOXHI[g=myvar[d=myagg8_disordered1]] - - Total # of data points: 80 (1*1*1*80*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) -cancel data/all - -! deliberate errors -set mode ignore -! try to define the same aggregation again -define data/agg/t myagg2 = tmp/tagg_reg_1.nc, tmp/tagg_reg_2.nc - -! try to aggregate with the same file duplicated -define data/agg/t myagg2 = tmp/tagg_reg_1.nc, tmp/tagg_reg_2.nc, tmp/tagg_reg_2.nc - -! try to aggregate a missing file as first file -define data/agg/t myaggbad = tmp/tagg_no_exist.nc, tmp/tagg_reg_2.nc - -! try to aggregate a missing file as subsequent file -define data/agg/t myaggbad = tmp/tagg_reg_1.nc, tmp/tagg_no_exist.nc - -! try to define an aggregation where there is no time axis in the first file -tseries myTindepagg = tmp/tagg_reg_no_T.nc - -! erroneous file 2 with 15 time steps, goes beyond start of file 3 -define data/agg/t myagg3 = tmp/tagg_reg_1.nc, tmp/tagg_reg_2_overlarge.nc,tmp/tagg_reg_3.nc - -! Try to use dataset names not file names. This is not allowed for Tseries aggregations. -use tmp/tagg_reg_1.nc, tmp/tagg_reg_2.nc -define data/agg/t myagg2num = 1,2 - -set mode/last ignore -canc data/all - -! --- irregularly-spaced axes --- -! aggregation of 2 irregular datasets - define data/agg/t myagg2 = tmp/tagg_irreg_1.nc, tmp/tagg_irreg_2.nc - -! aggregate a longer collection where all are irregular -define data/agg/t myagg8 = tmp/tagg_irreg_1.nc, tmp/tagg_irreg_2.nc,tmp/tagg_irreg_3.nc, tmp/tagg_irreg_4.nc,tmp/tagg_irreg_5.nc, tmp/tagg_irreg_6.nc,tmp/tagg_irreg_7.nc, tmp/tagg_irreg_8.nc - show data/full - currently SET data sets: - 1> myagg2 - - T-aggregation of 2 netCDF files - name title I J K L - MYVAR SIN(T[GT=TDAY_IR]/10) + L[GT=TD ... ... ... 1:20 - on grid GAY1 with -1.E+34 for missing data - - - time range: 02-JAN-1980 00:00 to 21-JAN-1980 14:35 - - time-dependent data files: -02-JAN-1980 00:00 -> 11-JAN-1980 05:35 tmp/tagg_irreg_1.nc -12-JAN-1980 06:24 -> 21-JAN-1980 14:35 tmp/tagg_irreg_2.nc - - 2> myagg8 (default) - - T-aggregation of 8 netCDF files - name title I J K L - MYVAR SIN(T[GT=TDAY_IR]/10) + L[GT=TD ... ... ... 1:80 - on grid GAY2 with -1.E+34 for missing data - - - time range: 02-JAN-1980 00:00 to 24-MAR-1980 14:00 - - time-dependent data files: -02-JAN-1980 00:00 -> 11-JAN-1980 05:35 tmp/tagg_irreg_1.nc -12-JAN-1980 06:24 -> 21-JAN-1980 14:35 tmp/tagg_irreg_2.nc -22-JAN-1980 15:34 -> 01-FEB-1980 00:54 tmp/tagg_irreg_3.nc -02-FEB-1980 01:59 -> 11-FEB-1980 12:04 tmp/tagg_irreg_4.nc -12-FEB-1980 13:13 -> 21-FEB-1980 23:52 tmp/tagg_irreg_5.nc -23-FEB-1980 01:05 -> 03-MAR-1980 12:10 tmp/tagg_irreg_6.nc -04-MAR-1980 13:26 -> 14-MAR-1980 00:54 tmp/tagg_irreg_7.nc -15-MAR-1980 02:12 -> 24-MAR-1980 14:00 tmp/tagg_irreg_8.nc - - show data myagg2 - currently SET data sets: - 1> myagg2 - name title I J K L - MYVAR SIN(T[GT=TDAY_IR]/10) + L[GT=TD ... ... ... 1:20 - - show grid/t myvar[d=1] - GRID GAY1 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY_IR1 TIME 20 i 02-JAN-1980 00:00 21-JAN-1980 14:35 full - - L T TBOX TBOXLO TSTEP (days) - 1> 02-JAN-1980 00:00:00 1.013911 01-JAN-1980 11:49:59 1 - 2> 03-JAN-1980 00:20:01 1.01657 02-JAN-1980 12:10:00 2.013911 - 3> 04-JAN-1980 00:47:43 1.020963 03-JAN-1980 12:33:52 3.03314 - 4> 05-JAN-1980 01:20:24 1.023991 04-JAN-1980 13:04:03 4.055838 - 5> 06-JAN-1980 01:56:49 1.026318 05-JAN-1980 13:38:36 5.081123 - 6> 07-JAN-1980 02:36:12 1.028212 06-JAN-1980 14:16:30 6.108474 - 7> 08-JAN-1980 03:18:04 1.029811 07-JAN-1980 14:57:08 7.137548 - 8> 09-JAN-1980 04:02:03 1.031196 08-JAN-1980 15:40:03 8.168097 - 9> 10-JAN-1980 04:47:54 1.032416 09-JAN-1980 16:24:59 9.199939 - 10> 11-JAN-1980 05:35:25 1.033509 10-JAN-1980 17:11:39 10.23293 - 11> 12-JAN-1980 06:24:25 1.034497 11-JAN-1980 17:59:55 11.26696 - 12> 13-JAN-1980 07:14:46 1.0354 12-JAN-1980 18:49:35 12.30192 - 13> 14-JAN-1980 08:06:22 1.036231 13-JAN-1980 19:40:34 13.33776 - 14> 15-JAN-1980 08:59:06 1.037001 14-JAN-1980 20:32:44 14.37439 - 15> 16-JAN-1980 09:52:55 1.037717 15-JAN-1980 21:26:01 15.41176 - 16> 17-JAN-1980 10:47:44 1.038388 16-JAN-1980 22:20:20 16.44982 - 17> 18-JAN-1980 11:43:29 1.039019 17-JAN-1980 23:15:36 17.48853 - 18> 19-JAN-1980 12:40:06 1.039613 19-JAN-1980 00:11:48 18.52786 - 19> 20-JAN-1980 13:37:34 1.040176 20-JAN-1980 01:08:50 19.56776 - 20> 21-JAN-1980 14:35:49 1.04071 21-JAN-1980 02:06:42 20.60821 - show grid myvar[d=2] - GRID GAY2 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY_IR2 TIME 80 i 02-JAN-1980 00:00 24-MAR-1980 14:00 full - plot/line/sym myvar[d=2],myvar[d=1] - -! aggregate collection that mixes regular (file 2) with irregular -define data/agg/t myagg4 = tmp/tagg_irreg_1.nc, tmp/tagg_irreg_2_reg.nc,tmp/tagg_irreg_3.nc, tmp/tagg_irreg_4.nc - show grid/t myvar[d=myagg4] - GRID GAY3 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY_IR3 TIME 40 i 02-JAN-1980 00:00 11-FEB-1980 12:04 full - - L T TBOX TBOXLO TSTEP (days) - 1> 02-JAN-1980 00:00:00 1.013911 01-JAN-1980 11:49:59 1 - 2> 03-JAN-1980 00:20:01 1.01657 02-JAN-1980 12:10:00 2.013911 - 3> 04-JAN-1980 00:47:43 1.020963 03-JAN-1980 12:33:52 3.03314 - 4> 05-JAN-1980 01:20:24 1.023991 04-JAN-1980 13:04:03 4.055838 - 5> 06-JAN-1980 01:56:49 1.026318 05-JAN-1980 13:38:36 5.081123 - 6> 07-JAN-1980 02:36:12 1.028212 06-JAN-1980 14:16:30 6.108474 - 7> 08-JAN-1980 03:18:04 1.029811 07-JAN-1980 14:57:08 7.137548 - 8> 09-JAN-1980 04:02:03 1.031196 08-JAN-1980 15:40:03 8.168097 - 9> 10-JAN-1980 04:47:54 1.032416 09-JAN-1980 16:24:59 9.199939 - 10> 11-JAN-1980 05:35:25 0.9000306 10-JAN-1980 17:11:39 10.23293 - 11> 12-JAN-1980 00:00:00 0.883535 11-JAN-1980 14:47:42 11 - 12> 13-JAN-1980 00:00:00 1 12-JAN-1980 12:00:00 12 - 13> 14-JAN-1980 00:00:00 1 13-JAN-1980 12:00:00 13 - 14> 15-JAN-1980 00:00:00 1 14-JAN-1980 12:00:00 14 - 15> 16-JAN-1980 00:00:00 1 15-JAN-1980 12:00:00 15 - 16> 17-JAN-1980 00:00:00 1 16-JAN-1980 12:00:00 16 - 17> 18-JAN-1980 00:00:00 1 17-JAN-1980 12:00:00 17 - 18> 19-JAN-1980 00:00:00 1 18-JAN-1980 12:00:00 18 - 19> 20-JAN-1980 00:00:00 1 19-JAN-1980 12:00:00 19 - 20> 21-JAN-1980 00:00:00 1.324591 20-JAN-1980 12:00:00 20 - 21> 22-JAN-1980 15:34:49 1.345324 21-JAN-1980 19:47:24 21.64918 - 22> 23-JAN-1980 16:34:32 1.041703 23-JAN-1980 04:04:40 22.69065 - 23> 24-JAN-1980 17:34:55 1.042167 24-JAN-1980 05:04:43 23.73259 - 24> 25-JAN-1980 18:35:58 1.042611 25-JAN-1980 06:05:27 24.77498 - 25> 26-JAN-1980 19:37:38 1.043037 26-JAN-1980 07:06:48 25.81781 - 26> 27-JAN-1980 20:39:55 1.043446 27-JAN-1980 08:08:47 26.86106 - 27> 28-JAN-1980 21:42:46 1.04384 28-JAN-1980 09:11:20 27.9047 - 28> 29-JAN-1980 22:46:10 1.04422 29-JAN-1980 10:14:28 28.94874 - 29> 30-JAN-1980 23:50:07 1.044587 30-JAN-1980 11:18:09 29.99314 - 30> 01-FEB-1980 00:54:35 1.044941 31-JAN-1980 12:22:21 31.03791 - 31> 02-FEB-1980 01:59:33 1.045284 01-FEB-1980 13:27:04 32.08303 - 32> 03-FEB-1980 03:05:00 1.045616 02-FEB-1980 14:32:16 33.12848 - 33> 04-FEB-1980 04:10:55 1.045938 03-FEB-1980 15:37:58 34.17426 - 34> 05-FEB-1980 05:17:18 1.04625 04-FEB-1980 16:44:07 35.22035 - 35> 06-FEB-1980 06:24:07 1.046554 05-FEB-1980 17:50:43 36.26676 - 36> 07-FEB-1980 07:31:22 1.046849 06-FEB-1980 18:57:45 37.31346 - 37> 08-FEB-1980 08:39:03 1.047135 07-FEB-1980 20:05:13 38.36045 - 38> 09-FEB-1980 09:47:07 1.047415 08-FEB-1980 21:13:05 39.40773 - 39> 10-FEB-1980 10:55:36 1.047687 09-FEB-1980 22:21:22 40.45528 - 40> 11-FEB-1980 12:04:28 1.047821 10-FEB-1980 23:30:02 41.50311 - -! deliberate error -- aggregated file out of order -set mode ignore -define data/agg/t myagg3 = tmp/tagg_irreg_1.nc, tmp/tagg_irreg_3.nc,tmp/tagg_irreg_2.nc -set mode/last ignore -canc data/all - -! --- aggregation from T0-varying files --- -! aggregate two - define data/agg/t myagg2 = tmp/tagg_T0varying_1.nc, tmp/tagg_T0varying_2.nc - -! aggregate several -define data/agg/t myagg8 = tmp/tagg_T0varying_1.nc, tmp/tagg_T0varying_2.nc,tmp/tagg_T0varying_3.nc, tmp/tagg_T0varying_4.nc,tmp/tagg_T0varying_5.nc - show data/full - currently SET data sets: - 1> myagg2 - - T-aggregation of 2 netCDF files - name title I J K L - MYVAR MYVAR0[GT=TDAY_TVAR@ASN] ... ... ... 1:8 - on grid GES1 with -1.E+34 for missing data - - - time range: 02-JAN-1980 00:00 to 09-JAN-1980 00:00 - - time-dependent data files: -02-JAN-1980 00:00 -> 05-JAN-1980 00:00 tmp/tagg_T0varying_1.nc -06-JAN-1980 00:00 -> 09-JAN-1980 00:00 tmp/tagg_T0varying_2.nc - - 2> myagg8 (default) - - T-aggregation of 5 netCDF files - name title I J K L - MYVAR MYVAR0[GT=TDAY_TVAR@ASN] ... ... ... 1:20 - on grid GES2 with -1.E+34 for missing data - - - time range: 02-JAN-1980 00:00 to 21-JAN-1980 00:00 - - time-dependent data files: -02-JAN-1980 00:00 -> 05-JAN-1980 00:00 tmp/tagg_T0varying_1.nc -06-JAN-1980 00:00 -> 09-JAN-1980 00:00 tmp/tagg_T0varying_2.nc -10-JAN-1980 00:00 -> 13-JAN-1980 00:00 tmp/tagg_T0varying_3.nc -14-JAN-1980 00:00 -> 17-JAN-1980 00:00 tmp/tagg_T0varying_4.nc -18-JAN-1980 00:00 -> 21-JAN-1980 00:00 tmp/tagg_T0varying_5.nc - - show data myagg2 - currently SET data sets: - 1> myagg2 - name title I J K L - MYVAR MYVAR0[GT=TDAY_TVAR@ASN] ... ... ... 1:8 - - show grid/t myvar[d=1] - GRID GES1 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY_TVAR TIME 8 r 02-JAN-1980 00:00 09-JAN-1980 00:00 full - - L T TBOX TBOXLO TSTEP (days) - 1> 02-JAN-1980 00:00:00 1 01-JAN-1980 12:00:00 1 - 2> 03-JAN-1980 00:00:00 1 02-JAN-1980 12:00:00 2 - 3> 04-JAN-1980 00:00:00 1 03-JAN-1980 12:00:00 3 - 4> 05-JAN-1980 00:00:00 1 04-JAN-1980 12:00:00 4 - 5> 06-JAN-1980 00:00:00 1 05-JAN-1980 12:00:00 5 - 6> 07-JAN-1980 00:00:00 1 06-JAN-1980 12:00:00 6 - 7> 08-JAN-1980 00:00:00 1 07-JAN-1980 12:00:00 7 - 8> 09-JAN-1980 00:00:00 1 08-JAN-1980 12:00:00 8 - show grid myvar[d=2] - GRID GES2 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY_TVAR1 TIME 20 r 02-JAN-1980 00:00 21-JAN-1980 00:00 full - plot/line/sym myvar[d=2],myvar[d=1] - -canc data/all - -! --- aggregations of disjoint, irregularly-sized, T0-varying files --- -! aggregate two - define data/agg/t myagg2 = tmp/tagg_disjoint_T0varying_1.nc, tmp/tagg_disjoint_T0varying_2.nc - - -! aggregate several -define data/agg/t myagg8 = tmp/tagg_disjoint_T0varying_1.nc, tmp/tagg_disjoint_T0varying_2.nc,tmp/tagg_disjoint_T0varying_3.nc, tmp/tagg_disjoint_T0varying_4.nc,tmp/tagg_disjoint_T0varying_5.nc, tmp/tagg_disjoint_T0varying_6.nc,tmp/tagg_disjoint_T0varying_7.nc, tmp/tagg_disjoint_T0varying_8.nc - show data/full - currently SET data sets: - 1> myagg2 - - T-aggregation of 2 netCDF files - name title I J K L - MYVAR L[GT=TDAY_TVAR] ... ... ... 1:11 - on grid GMV1 with -1.E+34 for missing data - - - time range: 02-JAN-1981 00:00 to 11-JAN-1982 00:00 - - time-dependent data files: -02-JAN-1981 00:00 -> 02-JAN-1981 00:00 tmp/tagg_disjoint_T0varying_1.nc -02-JAN-1982 00:00 -> 11-JAN-1982 00:00 tmp/tagg_disjoint_T0varying_2.nc - - 2> myagg8 (default) - - T-aggregation of 8 netCDF files - name title I J K L - MYVAR L[GT=TDAY_TVAR] ... ... ... 1:62 - on grid GMV2 with -1.E+34 for missing data - - - time range: 02-JAN-1981 00:00 to 11-JAN-1988 00:00 - - time-dependent data files: -02-JAN-1981 00:00 -> 02-JAN-1981 00:00 tmp/tagg_disjoint_T0varying_1.nc -02-JAN-1982 00:00 -> 11-JAN-1982 00:00 tmp/tagg_disjoint_T0varying_2.nc -02-JAN-1983 00:00 -> 02-JAN-1983 00:00 tmp/tagg_disjoint_T0varying_3.nc -02-JAN-1984 00:00 -> 11-JAN-1984 00:00 tmp/tagg_disjoint_T0varying_4.nc -02-JAN-1985 00:00 -> 11-JAN-1985 00:00 tmp/tagg_disjoint_T0varying_5.nc -02-JAN-1986 00:00 -> 11-JAN-1986 00:00 tmp/tagg_disjoint_T0varying_6.nc -02-JAN-1987 00:00 -> 11-JAN-1987 00:00 tmp/tagg_disjoint_T0varying_7.nc -02-JAN-1988 00:00 -> 11-JAN-1988 00:00 tmp/tagg_disjoint_T0varying_8.nc - - show data myagg2 - currently SET data sets: - 1> myagg2 - name title I J K L - MYVAR L[GT=TDAY_TVAR] ... ... ... 1:11 - - show grid/t myvar[d=1] - GRID GMV1 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY_TVAR TIME 11 i 02-JAN-1981 00:00 11-JAN-1982 00:00 full - - L T TBOX TBOXLO TSTEP (days) - 1> 02-JAN-1981 00:00:00 365 03-JUL-1980 12:00:00 1 - 2> 02-JAN-1982 00:00:00 183 03-JUL-1981 12:00:00 366 - 3> 03-JAN-1982 00:00:00 1 02-JAN-1982 12:00:00 367 - 4> 04-JAN-1982 00:00:00 1 03-JAN-1982 12:00:00 368 - 5> 05-JAN-1982 00:00:00 1 04-JAN-1982 12:00:00 369 - 6> 06-JAN-1982 00:00:00 1 05-JAN-1982 12:00:00 370 - 7> 07-JAN-1982 00:00:00 1 06-JAN-1982 12:00:00 371 - 8> 08-JAN-1982 00:00:00 1 07-JAN-1982 12:00:00 372 - 9> 09-JAN-1982 00:00:00 1 08-JAN-1982 12:00:00 373 - 10> 10-JAN-1982 00:00:00 1 09-JAN-1982 12:00:00 374 - 11> 11-JAN-1982 00:00:00 1 10-JAN-1982 12:00:00 375 - show grid myvar[d=2] - GRID GMV2 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY_TVAR1 TIME 62 i 02-JAN-1981 00:00 11-JAN-1988 00:00 full - plot/line/sym/vlim=0:11 myvar[d=2],myvar[d=1] - -! a few tests of using Ferret string variables to get the names of files -define data/agg/t listAgg1 = {"tmp/tagg_reg_1.nc", "tmp/tagg_reg_2.nc"} -show data/files listAgg1 - currently SET data sets: - 3> listAgg1 (default) - name title I J K L - MYVAR SIN(T[GT=TDAY]/10) + L[GT=TDAY] ... ... ... 1:20 - MYMAP I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] 1:73 1:33 ... ... - - time-dependent data files: -01-JAN-1980 00:00 -> 10-JAN-1980 00:00 tmp/tagg_reg_1.nc -11-JAN-1980 00:00 -> 20-JAN-1980 00:00 tmp/tagg_reg_2.nc - - -! define a long aggregation -let file_list = SPAWN("ls -1 tmp/tagg_reg_?.nc") -define data/agg/t listAgg2 = file_list -show data/files listAgg2 - currently SET data sets: - 4> listAgg2 (default) - name title I J K L - MYVAR SIN(T[GT=TDAY]/10) + L[GT=TDAY] ... ... ... 1:90 - MYMAP I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] 1:73 1:33 ... ... - - time-dependent data files: -01-JAN-1980 00:00 -> 10-JAN-1980 00:00 tmp/tagg_reg_1.nc -11-JAN-1980 00:00 -> 20-JAN-1980 00:00 tmp/tagg_reg_2.nc -21-JAN-1980 00:00 -> 30-JAN-1980 00:00 tmp/tagg_reg_3.nc -31-JAN-1980 00:00 -> 09-FEB-1980 00:00 tmp/tagg_reg_4.nc -10-FEB-1980 00:00 -> 19-FEB-1980 00:00 tmp/tagg_reg_5.nc -20-FEB-1980 00:00 -> 29-FEB-1980 00:00 tmp/tagg_reg_6.nc -01-MAR-1980 00:00 -> 10-MAR-1980 00:00 tmp/tagg_reg_7.nc -11-MAR-1980 00:00 -> 20-MAR-1980 00:00 tmp/tagg_reg_8.nc -21-MAR-1980 00:00 -> 30-MAR-1980 00:00 tmp/tagg_reg_9.nc - - -! reorder deliberately out of order file of differing lengths -define data/agg/t myagg8_disordered3 = tmp/tagg_disjoint_T0varying_2.nc, tmp/tagg_disjoint_T0varying_1.nc,tmp/tagg_disjoint_T0varying_5.nc, tmp/tagg_disjoint_T0varying_4.nc,tmp/tagg_disjoint_T0varying_3.nc, tmp/tagg_disjoint_T0varying_8.nc,tmp/tagg_disjoint_T0varying_7.nc, tmp/tagg_disjoint_T0varying_6.nc -show data/files/brief myagg8_disordered3 - currently SET data sets: - 5> myagg8_disordered3 (default) - time-dependent data files: -02-JAN-1981 00:00 -> 02-JAN-1981 00:00 tmp/tagg_disjoint_T0varying_1.nc -02-JAN-1982 00:00 -> 11-JAN-1982 00:00 tmp/tagg_disjoint_T0varying_2.nc -02-JAN-1983 00:00 -> 02-JAN-1983 00:00 tmp/tagg_disjoint_T0varying_3.nc -02-JAN-1984 00:00 -> 11-JAN-1984 00:00 tmp/tagg_disjoint_T0varying_4.nc -02-JAN-1985 00:00 -> 11-JAN-1985 00:00 tmp/tagg_disjoint_T0varying_5.nc -02-JAN-1986 00:00 -> 11-JAN-1986 00:00 tmp/tagg_disjoint_T0varying_6.nc -02-JAN-1987 00:00 -> 11-JAN-1987 00:00 tmp/tagg_disjoint_T0varying_7.nc -02-JAN-1988 00:00 -> 11-JAN-1988 00:00 tmp/tagg_disjoint_T0varying_8.nc - -! ... the same calendar axis, but encoded with the T0 of the first file -show grid/l=1:8 myvar[d=myagg8] - GRID GMV2 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY_TVAR1 TIME 62 i 02-JAN-1981 00:00 11-JAN-1988 00:00 full - - L T TBOX TBOXLO TSTEP (days) - 1> 02-JAN-1981 00:00:00 365 03-JUL-1980 12:00:00 1 - 2> 02-JAN-1982 00:00:00 183 03-JUL-1981 12:00:00 366 - 3> 03-JAN-1982 00:00:00 1 02-JAN-1982 12:00:00 367 - 4> 04-JAN-1982 00:00:00 1 03-JAN-1982 12:00:00 368 - 5> 05-JAN-1982 00:00:00 1 04-JAN-1982 12:00:00 369 - 6> 06-JAN-1982 00:00:00 1 05-JAN-1982 12:00:00 370 - 7> 07-JAN-1982 00:00:00 1 06-JAN-1982 12:00:00 371 - 8> 08-JAN-1982 00:00:00 1 07-JAN-1982 12:00:00 372 -show grid/l=1:8 myvar[d=myagg8_disordered3] - GRID GOS1 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY_TVAR2 TIME 62 i 02-JAN-1981 00:00 11-JAN-1988 00:00 full - - L T TBOX TBOXLO TSTEP (days) - 1> 02-JAN-1981 00:00:00 365 03-JUL-1980 12:00:00 -364 - 2> 02-JAN-1982 00:00:00 183 03-JUL-1981 12:00:00 1 - 3> 03-JAN-1982 00:00:00 1 02-JAN-1982 12:00:00 2 - 4> 04-JAN-1982 00:00:00 1 03-JAN-1982 12:00:00 3 - 5> 05-JAN-1982 00:00:00 1 04-JAN-1982 12:00:00 4 - 6> 06-JAN-1982 00:00:00 1 05-JAN-1982 12:00:00 5 - 7> 07-JAN-1982 00:00:00 1 06-JAN-1982 12:00:00 6 - 8> 08-JAN-1982 00:00:00 1 07-JAN-1982 12:00:00 7 - -cancel data/all - -! deliberate errors -set mode ignore -! deliberate error - try to re-use a name already in use - define data/agg/t myagg2 = tmp/tagg_disjoint_T0varying_1.nc, tmp/tagg_disjoint_T0varying_2.nc - -! deliberate error - the fourth file (*_4_wrong.nc) changes time axis name -define data/agg/t myagg5_bad = tmp/tagg_disjoint_T0varying_1.nc, tmp/tagg_disjoint_T0varying_2.nc,tmp/tagg_disjoint_T0varying_3.nc, tmp/tagg_disjoint_T0varying_4_wrong.nc,tmp/tagg_disjoint_T0varying_5.nc -set mode/last ignore - -canc data/all - -! --- aggregations of single timestep files --- -! define a regular aggregation -define data/agg/t MYsing_reg_agg6 = tmp/tagg_single_1.nc, tmp/tagg_single_2.nc,tmp/tagg_single_3.nc, tmp/tagg_single_4.nc,tmp/tagg_single_5.nc, tmp/tagg_single_6.nc -show data/full MYsing_reg_agg6 - currently SET data sets: - 1> MYsing_reg_agg6 (default) - - T-aggregation of 6 netCDF files - name title I J K L - MYVAR SIN(T[GT=TDAY]/10) + L[GT=TDAY] ... ... ... 1:6 - on grid GNP1 with -1.E+34 for missing data - - MYMAP I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] 1:73 1:33 ... ... - on grid GNP2 with -1.E+34 for missing data - X=2.5W(-2.5):2.5E(362.5) Y=82.5S:82.5N - - time range: 01-JAN-1980 00:00 to 06-JAN-1980 00:00 - - time-dependent data files: -01-JAN-1980 00:00 -> 01-JAN-1980 00:00 tmp/tagg_single_1.nc -02-JAN-1980 00:00 -> 02-JAN-1980 00:00 tmp/tagg_single_2.nc -03-JAN-1980 00:00 -> 03-JAN-1980 00:00 tmp/tagg_single_3.nc -04-JAN-1980 00:00 -> 04-JAN-1980 00:00 tmp/tagg_single_4.nc -05-JAN-1980 00:00 -> 05-JAN-1980 00:00 tmp/tagg_single_5.nc -06-JAN-1980 00:00 -> 06-JAN-1980 00:00 tmp/tagg_single_6.nc - -show grid/t myvar - GRID GNP1 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY1 TIME 6 r 01-JAN-1980 00:00 06-JAN-1980 00:00 full - - L T TBOX TBOXLO TSTEP (days) - 1> 01-JAN-1980 00:00:00 1 31-DEC-1979 12:00:00 28840 - 2> 02-JAN-1980 00:00:00 1 01-JAN-1980 12:00:00 28841 - 3> 03-JAN-1980 00:00:00 1 02-JAN-1980 12:00:00 28842 - 4> 04-JAN-1980 00:00:00 1 03-JAN-1980 12:00:00 28843 - 5> 05-JAN-1980 00:00:00 1 04-JAN-1980 12:00:00 28844 - 6> 06-JAN-1980 00:00:00 1 05-JAN-1980 12:00:00 28845 - -! read a time-independent field from the first file of the aggregation -stat mymap - - I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] - LONGITUDE: 2.5W(-2.5) to 2.5E(362.5) - LATITUDE: 82.5S to 82.5N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: MYsing_reg_agg6 - - Total # of data points: 2409 (73*33*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 11 - Maximum value: 403 - Mean value: 207 (unweighted average) - Standard deviation: 97.543 - -! define an irregular aggregation -define data/agg/t MYsing_irreg_agg4 = tmp/tagg_single_1.nc, tmp/tagg_single_2.nc,tmp/tagg_single_4.nc, tmp/tagg_single_5.nc -show data/full MYsing_irreg_agg4 - currently SET data sets: - 2> MYsing_irreg_agg4 (default) - - T-aggregation of 4 netCDF files - name title I J K L - MYVAR SIN(T[GT=TDAY]/10) + L[GT=TDAY] ... ... ... 1:4 - on grid GNP3 with -1.E+34 for missing data - - MYMAP I[X=0E:0E:5]+ 10*J[Y=80S:80N:5] 1:73 1:33 ... ... - on grid GNP4 with -1.E+34 for missing data - X=2.5W(-2.5):2.5E(362.5) Y=82.5S:82.5N - - time range: 01-JAN-1980 00:00 to 05-JAN-1980 00:00 - - time-dependent data files: -01-JAN-1980 00:00 -> 01-JAN-1980 00:00 tmp/tagg_single_1.nc -02-JAN-1980 00:00 -> 02-JAN-1980 00:00 tmp/tagg_single_2.nc -04-JAN-1980 00:00 -> 04-JAN-1980 00:00 tmp/tagg_single_4.nc -05-JAN-1980 00:00 -> 05-JAN-1980 00:00 tmp/tagg_single_5.nc - -show grid/t myvar - GRID GNP3 - name axis # pts start end subset - normal X - normal Y - normal Z - TDAY2 TIME 4 i 01-JAN-1980 00:00 05-JAN-1980 00:00 full - - L T TBOX TBOXLO TSTEP (days) - 1> 01-JAN-1980 00:00:00 1 31-DEC-1979 12:00:00 28840 - 2> 02-JAN-1980 00:00:00 1.5 01-JAN-1980 12:00:00 28841 - 3> 04-JAN-1980 00:00:00 1.5 03-JAN-1980 00:00:00 28843 - 4> 05-JAN-1980 00:00:00 1 04-JAN-1980 12:00:00 28844 - -! 2/2016 - reorder deliberately out of order aggregation of irregular times -define data/agg/t MYsing_irreg_agg4_disordered1 = tmp/tagg_single_2.nc, tmp/tagg_single_1.nc,tmp/tagg_single_4.nc, tmp/tagg_single_5.nc -define data/agg/t MYsing_irreg_agg4_disordered2 = tmp/tagg_single_1.nc, tmp/tagg_single_2.nc,tmp/tagg_single_5.nc, tmp/tagg_single_4.nc -show data/files/brief - currently SET data sets: - 1> MYsing_reg_agg6 - time-dependent data files: -01-JAN-1980 00:00 -> 01-JAN-1980 00:00 tmp/tagg_single_1.nc -02-JAN-1980 00:00 -> 02-JAN-1980 00:00 tmp/tagg_single_2.nc -03-JAN-1980 00:00 -> 03-JAN-1980 00:00 tmp/tagg_single_3.nc -04-JAN-1980 00:00 -> 04-JAN-1980 00:00 tmp/tagg_single_4.nc -05-JAN-1980 00:00 -> 05-JAN-1980 00:00 tmp/tagg_single_5.nc -06-JAN-1980 00:00 -> 06-JAN-1980 00:00 tmp/tagg_single_6.nc - - 2> MYsing_irreg_agg4 - time-dependent data files: -01-JAN-1980 00:00 -> 01-JAN-1980 00:00 tmp/tagg_single_1.nc -02-JAN-1980 00:00 -> 02-JAN-1980 00:00 tmp/tagg_single_2.nc -04-JAN-1980 00:00 -> 04-JAN-1980 00:00 tmp/tagg_single_4.nc -05-JAN-1980 00:00 -> 05-JAN-1980 00:00 tmp/tagg_single_5.nc - - 3> MYsing_irreg_agg4_disordered1 - time-dependent data files: -01-JAN-1980 00:00 -> 01-JAN-1980 00:00 tmp/tagg_single_1.nc -02-JAN-1980 00:00 -> 02-JAN-1980 00:00 tmp/tagg_single_2.nc -04-JAN-1980 00:00 -> 04-JAN-1980 00:00 tmp/tagg_single_4.nc -05-JAN-1980 00:00 -> 05-JAN-1980 00:00 tmp/tagg_single_5.nc - - 4> MYsing_irreg_agg4_disordered2 (default) - time-dependent data files: -01-JAN-1980 00:00 -> 01-JAN-1980 00:00 tmp/tagg_single_1.nc -02-JAN-1980 00:00 -> 02-JAN-1980 00:00 tmp/tagg_single_2.nc -04-JAN-1980 00:00 -> 04-JAN-1980 00:00 tmp/tagg_single_4.nc -05-JAN-1980 00:00 -> 05-JAN-1980 00:00 tmp/tagg_single_5.nc - -stat/brief T[g=myvar[d=MYsing_irreg_agg4]] - T[g=myvar[d=MYsing_irreg_agg4_disordered1]] - - Total # of data points: 4 (1*1*1*4*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) -stat/brief TBOXLO[g=myvar[d=MYsing_irreg_agg4]] - TBOXLO[g=myvar[d=MYsing_irreg_agg4_disordered1]] - - Total # of data points: 4 (1*1*1*4*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) -stat/brief TBOXHI[g=myvar[d=MYsing_irreg_agg4]] - TBOXHI[g=myvar[d=MYsing_irreg_agg4_disordered1]] - - Total # of data points: 4 (1*1*1*4*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) -canc data/all - -! OPeNDAP test -! (Note: when running pre-true-month Ferret versions, the timestep output from -! show grid/T below was eliminated by the "clean_draconian" script) -! 1/17/2017 changes due to backing off auto-detection of truemonth axes, tkt 2497 - -IF `test_opendap("http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/ferret/test_coads_monthly_air_2012.nc") EQ 0` THEN - !-> IF 1 THEN - tseries COADS = http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/ferret/test_coads_monthly_air_2012.nc, http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/ferret/test_coads_monthly_air_2013.nc, http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/ferret/test_coads_monthly_air_2014.nc -show data COADS - currently SET data sets: - 1> COADS (default) - name title I J K L - AIR Air Temperature Monthly Mean_da 1:180 1:90 ... 1:36 - -show grid/T air - GRID GKP1 - name axis # pts start end subset - LON1 LONGITUDE 180mr 1E 1W full - LAT LATITUDE 90 r 89S 89N full - normal Z - TIME34 TIME 36 i 16-JAN-2012 12:00 16-DEC-2014 12:00 full - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN-2012 12:00:00 31 01-JAN-2012 00:00:00 77446.5 - 2> 15-FEB-2012 12:00:00 29 01-FEB-2012 00:00:00 77476.5 - 3> 16-MAR-2012 12:00:00 31 01-MAR-2012 00:00:00 77506.5 - 4> 16-APR-2012 00:00:00 30 01-APR-2012 00:00:00 77537 - 5> 16-MAY-2012 12:00:00 31 01-MAY-2012 00:00:00 77567.5 - 6> 16-JUN-2012 00:00:00 30 01-JUN-2012 00:00:00 77598 - 7> 16-JUL-2012 12:00:00 31 01-JUL-2012 00:00:00 77628.5 - 8> 16-AUG-2012 12:00:00 31 01-AUG-2012 00:00:00 77659.5 - 9> 16-SEP-2012 00:00:00 30 01-SEP-2012 00:00:00 77690 - 10> 16-OCT-2012 12:00:00 31 01-OCT-2012 00:00:00 77720.5 - 11> 16-NOV-2012 00:00:00 30 01-NOV-2012 00:00:00 77751 - 12> 16-DEC-2012 12:00:00 31 01-DEC-2012 00:00:00 77781.5 - 13> 16-JAN-2013 12:00:00 31 01-JAN-2013 00:00:00 77812.5 - 14> 15-FEB-2013 00:00:00 28 01-FEB-2013 00:00:00 77842 - 15> 16-MAR-2013 12:00:00 31 01-MAR-2013 00:00:00 77871.5 - 16> 16-APR-2013 00:00:00 30 01-APR-2013 00:00:00 77902 - 17> 16-MAY-2013 12:00:00 31 01-MAY-2013 00:00:00 77932.5 - 18> 16-JUN-2013 00:00:00 30 01-JUN-2013 00:00:00 77963 - 19> 16-JUL-2013 12:00:00 31 01-JUL-2013 00:00:00 77993.5 - 20> 16-AUG-2013 12:00:00 31 01-AUG-2013 00:00:00 78024.5 - 21> 16-SEP-2013 00:00:00 30 01-SEP-2013 00:00:00 78055 - 22> 16-OCT-2013 12:00:00 31 01-OCT-2013 00:00:00 78085.5 - 23> 16-NOV-2013 00:00:00 30 01-NOV-2013 00:00:00 78116 - 24> 16-DEC-2013 12:00:00 31 01-DEC-2013 00:00:00 78146.5 - 25> 16-JAN-2014 12:00:00 31 01-JAN-2014 00:00:00 78177.5 - 26> 15-FEB-2014 00:00:00 28 01-FEB-2014 00:00:00 78207 - 27> 16-MAR-2014 12:00:00 31 01-MAR-2014 00:00:00 78236.5 - 28> 16-APR-2014 00:00:00 30 01-APR-2014 00:00:00 78267 - 29> 16-MAY-2014 12:00:00 31 01-MAY-2014 00:00:00 78297.5 - 30> 16-JUN-2014 00:00:00 30 01-JUN-2014 00:00:00 78328 - 31> 16-JUL-2014 12:00:00 31 01-JUL-2014 00:00:00 78358.5 - 32> 16-AUG-2014 12:00:00 31 01-AUG-2014 00:00:00 78389.5 - 33> 16-SEP-2014 00:00:00 30 01-SEP-2014 00:00:00 78420 - 34> 16-OCT-2014 12:00:00 31 01-OCT-2014 00:00:00 78450.5 - 35> 16-NOV-2014 00:00:00 30 01-NOV-2014 00:00:00 78481 - 36> 16-DEC-2014 12:00:00 31 01-DEC-2014 00:00:00 78511.5 -canc data/all -ELSE -ENDIF - -! "USE file.agg" test -! test the hack to XEQ_SET which permits "SET DATA file.agg" to metamorphose -! into "GO file.agg" -spawn echo "define data/agg/t myagg3 = tmp/tagg_reg_1.nc, tmp/tagg_reg_2.nc,tmp/tagg_reg_3.nc" > tmp/good_agg.agg -spawn echo "garbage command syntax" > tmp/bad_agg.agg - -! deliberate errorrs -! bad .agg aggregation file -set mode ignore -USE "tmp/bad_agg.agg" -garbage command syntax - -! irregular aggregation with first file duplicated -define data/agg/t MYsing_irreg_agg4 = tmp/tagg_single_1.nc, tmp/tagg_single_1.nc, tmp/tagg_single_2.nc,tmp/tagg_single_4.nc, tmp/tagg_single_5.nc - -! irregular aggregation with last file duplicated -define data/agg/t MYsing_irreg_agg4 = tmp/tagg_single_1.nc, tmp/tagg_single_2.nc,tmp/tagg_single_4.nc, tmp/tagg_single_5.nc, tmp/tagg_single_5.nc - -set/last mode ignore - -! valid syntax to initialize an aggregation -USE "tmp/good_agg.agg" -define data/agg/t myagg3 = tmp/tagg_reg_1.nc, tmp/tagg_reg_2.nc,tmp/tagg_reg_3.nc -show data/br - currently SET data sets: - 1> myagg3 (default) -cancel data/all - -GO bn_reset bn_unquoted_args -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_unquoted_args -GO bn_unquoted_args -! bn_unquoted_args.jnl -! 12/2015 -- a hack change to PPARSE_COMMAND to allow users to omit -! the quotation marks in the argument(s) of SET DATA, GO and DEFINE SYMBOL - -! 2/2016 *sh* removed the GO/HELP tests - -spawn "mkdir -p tmp" - -! ****** SET DATA TESTS ***** -! make test files -save/clobber/file="tmp/test1.nc" i[i=1:3] + 1 -save/clobber/file="tmp/test2.nc" i[i=1:3] + 2 -save/clobber/file="tmp/test3.nc" i[i=1:3] + 3 -! generate absolute path -let dir = SPAWN("pwd") -define sym use_abs_path = `DIR+"/tmp/test1.nc"` - !-> define sym use_abs_path = /home/users/ansley/build/pyferret/bench/tmp/test1.nc -say ($use_abs_path) - !-> MESSAGE/CONTINUE /home/users/ansley/build/pyferret/bench/tmp/test1.nc -/home/users/ansley/build/pyferret/bench/tmp/test1.nc - -use tmp/test1.nc -show data/brief - currently SET data sets: - 1> tmp/test1.nc (default) -canc data/all - -use "tmp/test1.nc" -show data/brief - currently SET data sets: - 1> tmp/test1.nc (default) -canc data/all - -use "tmp/test1.nc" -show data/brief - currently SET data sets: - 1> tmp/test1.nc (default) -canc data/all - -use tmp/test1.nc -show data/brief - currently SET data sets: - 1> tmp/test1.nc (default) -canc data/all - -use "($use_abs_path)" - !-> SET DAT/FORM=CDF "/home/users/ansley/build/pyferret/bench/tmp/test1.nc" -show data/brief - currently SET data sets: - 1> /home/users/ansley/build/pyferret/bench/tmp/test1.nc (default) -canc data/all - -use ($use_abs_path) - !-> SET DAT/FORM=CDF /home/users/ansley/build/pyferret/bench/tmp/test1.nc -show data/brief - currently SET data sets: - 1> /home/users/ansley/build/pyferret/bench/tmp/test1.nc (default) -canc data/all - -use tmp/test1.nc,tmp/test2.nc,tmp/test3.nc -show data/brief - currently SET data sets: - 1> tmp/test1.nc - 2> tmp/test2.nc - 3> tmp/test3.nc (default) -canc data/all - -use tmp/test1.nc,"tmp/test2.nc", tmp/test3.nc -show data/brief - currently SET data sets: - 1> tmp/test1.nc - 2> tmp/test2.nc - 3> tmp/test3.nc (default) -canc data/all - -IF `test_opendap("http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_sst.cdf") EQ 0` THEN - !-> IF 1 THEN - use "http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_sst.cdf" - show data/brief - currently SET data sets: - 1> http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_sst.cdf (default) - canc data/all - use http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_sst.cdf - show data/brief - currently SET data sets: - 1> http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_sst.cdf (default) - canc data/all - use tmp/test1.nc, "tmp/test2.nc", http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_sst.cdf - show data/brief - currently SET data sets: - 1> tmp/test1.nc - 2> tmp/test2.nc - 3> http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_sst.cdf (default) - canc data/all -ELSE -ENDIF - -! deliberate errors -! erroneous qualifier with no white space detected -set mode ignore -set data/erroneous tmp/test1.nc - -! erroneous qualifier with white space detected -set data /erroneous tmp/test1.nc - -! erroneous qualifier with comma treated as an invalid filename -set data /erroneous, tmp/test1.nc - -can mode ignore - -canc data/all - - -! ****** GO script tests ***** -! make a dummy GO file for testing -spawn rm -f tmp/dummy.jnl -spawn echo "say hello" >tmp/dummy.jnl -spawn echo 'say $1"1-n/a" $2"2-n/a" $3"3-n/a" $4"4-n/a" $5"5-n/a" $6"6-n/a" $7"7-n/a" $8"8-n/a"' > tmp/testMe.jnl - -! generate absolute path -let dir = SPAWN("pwd") -define sym abs_path = `DIR+"/tmp/testMe.jnl"` - !-> define sym abs_path = /home/users/ansley/build/pyferret/bench/tmp/testMe.jnl -say ($abs_path) - !-> MESSAGE/CONTINUE /home/users/ansley/build/pyferret/bench/tmp/testMe.jnl -/home/users/ansley/build/pyferret/bench/tmp/testMe.jnl - -go tmp/testMe.jnl -say $1"1-n/a" $2"2-n/a" $3"3-n/a" $4"4-n/a" $5"5-n/a" $6"6-n/a" $7"7-n/a" $8"8-n/a" - !-> MESSAGE/CONTINUE 1-n/a 2-n/a 3-n/a 4-n/a 5-n/a 6-n/a 7-n/a 8-n/a -1-n/a 2-n/a 3-n/a 4-n/a 5-n/a 6-n/a 7-n/a 8-n/a - -go "tmp/testMe.jnl" -say $1"1-n/a" $2"2-n/a" $3"3-n/a" $4"4-n/a" $5"5-n/a" $6"6-n/a" $7"7-n/a" $8"8-n/a" - !-> MESSAGE/CONTINUE 1-n/a 2-n/a 3-n/a 4-n/a 5-n/a 6-n/a 7-n/a 8-n/a -1-n/a 2-n/a 3-n/a 4-n/a 5-n/a 6-n/a 7-n/a 8-n/a - -go ($abs_path) - !-> go /home/users/ansley/build/pyferret/bench/tmp/testMe.jnl -say $1"1-n/a" $2"2-n/a" $3"3-n/a" $4"4-n/a" $5"5-n/a" $6"6-n/a" $7"7-n/a" $8"8-n/a" - !-> MESSAGE/CONTINUE 1-n/a 2-n/a 3-n/a 4-n/a 5-n/a 6-n/a 7-n/a 8-n/a -1-n/a 2-n/a 3-n/a 4-n/a 5-n/a 6-n/a 7-n/a 8-n/a - -go "($abs_path)" - !-> go "/home/users/ansley/build/pyferret/bench/tmp/testMe.jnl" -say $1"1-n/a" $2"2-n/a" $3"3-n/a" $4"4-n/a" $5"5-n/a" $6"6-n/a" $7"7-n/a" $8"8-n/a" - !-> MESSAGE/CONTINUE 1-n/a 2-n/a 3-n/a 4-n/a 5-n/a 6-n/a 7-n/a 8-n/a -1-n/a 2-n/a 3-n/a 4-n/a 5-n/a 6-n/a 7-n/a 8-n/a - -go tmp/testMe 5 hello "bye" "/quoted_path" /unquoted_path -say $1"1-n/a" $2"2-n/a" $3"3-n/a" $4"4-n/a" $5"5-n/a" $6"6-n/a" $7"7-n/a" $8"8-n/a" - !-> MESSAGE/CONTINUE 5 hello bye /quoted_path /unquoted_path 6-n/a 7-n/a 8-n/a -5 hello bye /quoted_path /unquoted_path 6-n/a 7-n/a 8-n/a - -go "tmp/testMe" 5 hello "bye" "/quoted_path" /unquoted_path -say $1"1-n/a" $2"2-n/a" $3"3-n/a" $4"4-n/a" $5"5-n/a" $6"6-n/a" $7"7-n/a" $8"8-n/a" - !-> MESSAGE/CONTINUE 5 hello bye /quoted_path /unquoted_path 6-n/a 7-n/a 8-n/a -5 hello bye /quoted_path /unquoted_path 6-n/a 7-n/a 8-n/a - -go ($abs_path) 5 hello "bye" "/quoted_path" /unquoted_path - !-> go /home/users/ansley/build/pyferret/bench/tmp/testMe.jnl 5 hello "bye" "/quoted_path" /unquoted_path -say $1"1-n/a" $2"2-n/a" $3"3-n/a" $4"4-n/a" $5"5-n/a" $6"6-n/a" $7"7-n/a" $8"8-n/a" - !-> MESSAGE/CONTINUE 5 hello bye /quoted_path /unquoted_path 6-n/a 7-n/a 8-n/a -5 hello bye /quoted_path /unquoted_path 6-n/a 7-n/a 8-n/a - -go "($abs_path)" 5 hello "bye" "/quoted_path" /unquoted_path - !-> go "/home/users/ansley/build/pyferret/bench/tmp/testMe.jnl" 5 hello "bye" "/quoted_path" /unquoted_path -say $1"1-n/a" $2"2-n/a" $3"3-n/a" $4"4-n/a" $5"5-n/a" $6"6-n/a" $7"7-n/a" $8"8-n/a" - !-> MESSAGE/CONTINUE 5 hello bye /quoted_path /unquoted_path 6-n/a 7-n/a 8-n/a -5 hello bye /quoted_path /unquoted_path 6-n/a 7-n/a 8-n/a - -! test GO/HELP -! 2/2016 - commented these tests out, tho they work fine. GO/HELP -! apparently runs asynchronously with the bench logging (why?) -! This results in the placement of the GO/HELP output shifting in -! the benchmark output log -- a hassle when comparing benchmarks -!go/help tmp/testMe -!go /help tmp/testMe -!go/help "tmp/testMe" -!go/help ($abs_path) -!go/help "($abs_path)" - -! a few tests the slipped through the first time -GO tmp/testMe POLYGON/KEY/lev=20 xpts,ypts,sst,star -say $1"1-n/a" $2"2-n/a" $3"3-n/a" $4"4-n/a" $5"5-n/a" $6"6-n/a" $7"7-n/a" $8"8-n/a" - !-> MESSAGE/CONTINUE POLYGON/KEY/lev=20 xpts ypts sst star 6-n/a 7-n/a 8-n/a -POLYGON/KEY/lev=20 xpts ypts sst star 6-n/a 7-n/a 8-n/a -go "tmp/testMe.jnl" /home/users/tmap/ferret/linux/fer_dsets/data/coads_climatology.cdf -say $1"1-n/a" $2"2-n/a" $3"3-n/a" $4"4-n/a" $5"5-n/a" $6"6-n/a" $7"7-n/a" $8"8-n/a" - !-> MESSAGE/CONTINUE /home/users/tmap/ferret/linux/fer_dsets/data/coads_climatology.cdf 2-n/a 3-n/a 4-n/a 5-n/a 6-n/a 7-n/a 8-n/a -/home/users/tmap/ferret/linux/fer_dsets/data/coads_climatology.cdf 2-n/a 3-n/a 4-n/a 5-n/a 6-n/a 7-n/a 8-n/a -if 1 then let/quiet mytestvar = whatever -sh var mytestvar - MYTESTVAR = WHATEVER - - -set mode ignore -go/garbage tmp/testMe -go/garbage "tmp/testMe" -go/garbage ($abs_path) -go/garbage "($abs_path)" -set mode/last ignore - - - -GO bn_reset bn_long_lists -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_long_lists -GO bn_long_lists -! bn_long_lists.jnl -! See ticket 2337 -! -! Increase command-line buffer by a factor of 10, to accomodate long lists -! defined in the variable definition. -! Also allow for more items in the list. - -! 2/2016, backed off the extra-long buffer, but keep these tests, on shortened variables. - -! This one gets its Title truncated - -let file_list = {\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0001.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0002.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0003.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0004.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0005.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0005.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0006.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0007.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0008.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0009.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0010.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0011.t_surf.nc"} - -let longlist = {1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0} - -show var - Created by DEFINE VARIABLE: - >>> Definitions that replace any file variable of same name: - LONGLIST = {1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0} - FILE_LIST = {"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0001.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0002.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0003.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0004.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0005.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0005.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0006.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0007.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0008.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0009.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0010.t_surf.nc","/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0011.t_surf.nc"} - -! do them in repeat loop - -repeat/range=1:4:1/name=q (let file_list = {\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0001.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0002.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0003.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0004.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0005.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0005.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0006.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0007.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0008.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0009.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0010.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0011.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0012.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0013.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0014.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0015.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0016.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0017.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0018.t_surf.nc",\ -} ) -!-> REPEAT: Q:1 -!-> REPEAT: Q:2 -!-> REPEAT: Q:3 -!-> REPEAT: Q:4 - -! Intentional errors: -! Make them longer - -set mode ignore - -! Line length still under 2048, but more items than 1000, -! issues a NOTE that they're not all parsed. - -let a={1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,\ -1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0} -load a - -! command line too long - -let file_list = {\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0001.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0002.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0003.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0004.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0005.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0005.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0006.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0007.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0008.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0009.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0010.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0011.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0012.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0013.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0014.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0015.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0016.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0017.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0018.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0019.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0020.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0021.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0022.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0023.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0024.t_surf.nc",\ -"/archive/ccsp/ipcc_ar4/CM2.1U-D4_1860-2000-AllForc_H1/pp/atmos/ts/monthly/100yr/atmos.0025.t_surf.nc",\} - -set mode/last ignore - -GO bn_reset bn_show_uvar_grid -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_show_uvar_grid -GO bn_show_uvar_grid -! bn_show_uvar_grid.jnl -! Add notes to the output of SHOW GRID for variables and expressions -! indicate compressed axes, point subsets and subset ranges. -! For grid changing functions just mark axis as such -! -! 12/17/2015 *acm* -! 12/18 2015 *acm* Add constant and constant-array variables, -! and modulo axis request on more than full range - -use coads_climatology -show grid sst[x=240:320,y=0,t=@ave] - GRID GSQ1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) 40 pts - COADSY LATITUDE 90 r 89S 89N 1 pt - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 compressed - -! Modulo axes ask for superset -show grid sst[x=0:540,L=1:15] - GRID GSQ1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) 270 pts - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 15 pts - -! Constant: full abstract grid -show grid 1 - GRID ABSTRACT - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 full - ABSTRACT Y 99999999 r 1 1.E+08 full - ABSTRACT Z 99999999 r 1 1.E+08 full - ABSTRACT T 99999999 r 1 1.E+08 full - ABSTRACT E 99999999 r 1 1.E+08 full - ABSTRACT F 99999999 r 1 1.E+08 full - -! Constant-array -show grid {1} - GRID XABSTRACT - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 1 pt - normal Y - normal Z - normal T -let var = {1,2,4,8} ! Note that show grid {1,2,4,8} fails: bug -show grid var - GRID XABSTRACT - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 4 pts - normal Y - normal Z - normal T - -! but don't show any user-var grid info if they just ask for the grid by name -show grid `sst,return=grid` - !-> show grid GSQ1 - GRID GSQ1 - name axis # pts start end - COADSX LONGITUDE 180mr 21E 19E(379) - COADSY LATITUDE 90 r 89S 89N - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 - -! grid of last variable loaded -load sst[x=240,y=@iin,t=@ave] -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid GSQ1 - GRID GSQ1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) 1 pt - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 compressed - -! Result grid is full grid -let var = sst[L=@ave] - sst[x=@max] - sst[y=0] -show grid var - GRID GSQ1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 full - -! transform on single-point range is equiv. to single-point subset - -cancel mode interpolate ! otherwise single-pt range fails -let var = sst[X=30@max] -show grid var - GRID GSQ1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) 1 pt - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 full -set mode/last interpolate -let var = sst[X=30:30.1@max] -show grid var - GRID GSQ1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) 1 pt - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 full - -! dynamic grid -let var = sst[y=-10:10:.1,l=1,x=160e] -show grid var - GRID (G084) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) 1 pt - (AX125) LATITUDE 201 r 10S 10N 201 pts - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 1 pt - -! striding -show grid sst[i=1:180:3,j=1:90:2] - GRID (G083) - name axis # pts start end subset - (AX118) LONGITUDE 60 r 21E 15E(375) 60 pts - (AX105) LATITUDE 45 r 89S 87N 45 pts - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 full - -! regridding - -use coads_vwnd -define axis/t=1-jan-1980:31-dec-1982:1/units=days dax -let vwnd_days = vwnd[gt=dax,t=1-jun-1982:15-jul-1982] -sh grid vwnd_days - GRID (G083) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - normal Z - DAX TIME 1096 r 01-JAN-1980 00:00 31-DEC-1982 00:00 45 pts - -let vwnd_clim = vwnd[gt=month_irreg@mod] -sh grid vwnd_clim[L=4:9] - GRID (G082) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - normal Z - MONTH_IRREG TIME 12mi 16-JAN 12:00 15-DEC 17:49 6 pts - -can dat/all -use coads_climatology - -! non-compressing transforms - -let var = sst[y=@iin] -show grid var - GRID GSQ1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 full - -let var = sst[y=-30:30@iin] -show grid var - GRID GSQ1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N 30 pts - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 full - -use levitus_3d_subset -let var = temp[z=@weq:20] -show grid var - GRID GAO1 - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - ZAXLEVITR DEPTH (m) 20 i- 0 5000 full - normal T - -let var = temp[z=1:120@weq:20] -show grid var - GRID GAO1 - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - ZAXLEVITR DEPTH (m) 20 i- 0 5000 7 pts - normal T - - -! grid-changing functions -can dat/all -use levitus_3d_subset -let depth = Z[G=TEMP]+ 0*TEMP[K=1] -let depth_rev = zreverse(depth) -show grid depth_rev - GRID (G104) - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - ABSTRACT Z 99999999 r 1 1.E+08 (axis from grid-changing func) - normal T - -DEFINE AXIS/t=1-Jan-1990:31-Dec-1990:24/t0=1-jan-1980 dayt -let tpts = t[gt=dayt] -LET sample_function = sin(0.5*tpts - 6.)/2. - cos(0.3*tpts) - -show grid ffta(sample_function) - GRID (G083) - name axis # pts start end subset - normal X - normal Y - normal Z - (AX124) T (CYC/HOURS) 182 r 1.1447E-04 0.020833 (axis from grid-changing func) - -show grid ffta(sample_function[t=15-jan-1990:15-jun-1990]) - GRID (G083) - name axis # pts start end subset - normal X - normal Y - normal Z - (AX105) T (CYC/HOURS) 76 r 2.7412E-04 0.020833 (axis from grid-changing func) - -show grid ffta(sample_function + temp[d=levitus_3d_subset,z=0:40]) - GRID (G082) - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - ZAXLEVITR DEPTH (m) 20 i- 0 5000 4 pts - (AX124) T (CYC/HOURS) 182 r 1.1447E-04 0.020833 (axis from grid-changing func) - -can dat/all - -! auxiliary regridding - -use levitus_3d_subset.nc -LET Zpts = Z[Z=100:500:100] -DEFINE AXIS/z/units=meters zax = zpts -LET/D=levitus_3d_subset depth = z[g=temp]+ 0*temp[k=1] -let TEMPZ = TEMP[GZ(DEPTH)=ZPTS] - -sh grid tempz - GRID (G084) - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - (AX125) Z 5 r 100 500 full - normal T -sh grid tempz[z=100:400] - GRID (G084) - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - (AX125) Z 5 r 100 500 4 pts - normal T - -! and with a grid-changing function thrown in - -use levitus_3d_subset.nc -LET Zpts = Z[Z=100:500:100] -DEFINE AXIS/z/units=meters zax = zpts -LET/D=levitus_3d_subset rvdepth = rvdepth0[gz=temp@asn] -LET/D=levitus_3d_subset depth = z[g=temp]+ 0*temp[k=1] -LET rvtemp0 = ZREVERSE(temp) -LET rvtemp = rvtemp0[gz=temp@asn] -LET rvdepth0 = ZREVERSE(depth) -LET rvtempzax = rvtemp[gz(rvdepth)=zax,z=100:500] -show grid rvtempzax - GRID (G085) - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - ZAX Z (METERS) 5 r 100 500 (axis from grid-changing func) - normal T - -! gc func: limits are hidden so a subset not seen - -LET rvtempzax = rvtemp[gz(rvdepth)=zax] -show grid rvtempzax[z=100:300] - GRID (G085) - name axis # pts start end subset - XAXLEVITR101_102 LONGITUDE 2mr 120.5E 121.5E full - YAXLEVITR41_42 LATITUDE 2 r 49.5S 48.5S full - ZAX Z (METERS) 5 r 100 500 (axis from grid-changing func) - normal T - -GO bn_reset bn_aggregate_f -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_aggregate_f -GO bn_aggregate_f -! bn_aggregate_f.F -! 12/2015 *sh* -! 1/2016 *sh* added implicit naming of aggregation from script filename -! 6/2018 *acm*Note SHOW DATA output changes slightly -! Forecast series of... patterned on fcst_1 (not fcst_1.nc) -! also auto-generated grid names change - -! exercise FMRC aggregations - -spawn "mkdir -p tmp" ! tmp directory t store files - -! *** create an artificial forecast model run collection *** - -! a 20x20 lat-long region -DEFINE AXIS/X=140E:160E:1 xax -DEFINE AXIS/Y=20N:40N:1 yax - -! a 20 year regular monthly axis starting in Jan 1950 -DEFINE AXIS/UNITS=DAYS/T0=01-JAN-1900/EDGES/T=01-JAN-1950:31-DEC-1970:`365.2425/12` monthly - !-> DEFINE AXIS/UNITS=DAYS/T0=01-JAN-1900/EDGES/T=01-JAN-1950:31-DEC-1970:30.436875 monthly - -! define a moving field with errors increasing from a given forecast date -let vy = 1/500 ! speed that forecast structure deviates from truth -let vx = (1+(T[gt=monthly]-tstart)/2000)* 1/300 -let xt = x[gx=xax]-vx*T[gt=monthly] -let yt = y[gy=yax]-vy*T[gt=monthly] -let field = COS((xt-150)/5)*COS((yt-30)/5) -let fcst = field + fcst_error -let static_error = SIN((x[gx=xax]-140)/5)*SIN((y[gy=yax]-20)/5) + RANDU(x[gx=xax]+y[gy=yax]) -let structure_drift = (t[gt=monthly]-tstart)/5000 * static_error -let random_error = (t[gt=monthly]-tstart)/2000 * RANDU(t[gt=monthly]+x[gx=xax]+y[gy=yax]) -let fcst_error = structure_drift + random_error -let/title="another variable" fcst_2 = fcst + 2 - -! every 3 months another 2-year forecast -repeat/name=fdate/range=1:31:3 (let tstart = t[gt=monthly,l=`fdate`];save/clobber/file="tmp/fcst_`(fdate-1)/3+1`.nc"/l=`fdate`:`fdate+23` fcst, fcst_2) -!-> REPEAT: FDATE:1 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=1] - !-> LIST/FORMAT=CDF/clobber/file="tmp/fcst_1.nc"/l=1:24 fcst, fcst_2 -!-> REPEAT: FDATE:4 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=4] - !-> LIST/FORMAT=CDF/clobber/file="tmp/fcst_2.nc"/l=4:27 fcst, fcst_2 -!-> REPEAT: FDATE:7 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=7] - !-> LIST/FORMAT=CDF/clobber/file="tmp/fcst_3.nc"/l=7:30 fcst, fcst_2 -!-> REPEAT: FDATE:10 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=10] - !-> LIST/FORMAT=CDF/clobber/file="tmp/fcst_4.nc"/l=10:33 fcst, fcst_2 -!-> REPEAT: FDATE:13 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=13] - !-> LIST/FORMAT=CDF/clobber/file="tmp/fcst_5.nc"/l=13:36 fcst, fcst_2 -!-> REPEAT: FDATE:16 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=16] - !-> LIST/FORMAT=CDF/clobber/file="tmp/fcst_6.nc"/l=16:39 fcst, fcst_2 -!-> REPEAT: FDATE:19 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=19] - !-> LIST/FORMAT=CDF/clobber/file="tmp/fcst_7.nc"/l=19:42 fcst, fcst_2 -!-> REPEAT: FDATE:22 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=22] - !-> LIST/FORMAT=CDF/clobber/file="tmp/fcst_8.nc"/l=22:45 fcst, fcst_2 -!-> REPEAT: FDATE:25 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=25] - !-> LIST/FORMAT=CDF/clobber/file="tmp/fcst_9.nc"/l=25:48 fcst, fcst_2 -!-> REPEAT: FDATE:28 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=28] - !-> LIST/FORMAT=CDF/clobber/file="tmp/fcst_10.nc"/l=28:51 fcst, fcst_2 -!-> REPEAT: FDATE:31 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=31] - !-> LIST/FORMAT=CDF/clobber/file="tmp/fcst_11.nc"/l=31:54 fcst, fcst_2 - -! a couple of long (3-year) forecasts -let tstart = t[gt=monthly,l=1] -save/clobber/file="tmp/long_fcst_1.nc"/l=1:36 fcst,fcst_2 ! replaces file 1 -let tstart = t[gt=monthly,l=16] -save/clobber/file="tmp/long_fcst_6.nc"/l=16:52 fcst,fcst_2 ! replaces file 6 - -! files lacking the second variable -let tstart = t[gt=monthly,l=1] -save/clobber/file="tmp/one_var_fcst_1.nc"/l=1:24 fcst ! alternative of file 1 -let tstart = t[gt=monthly,l=16] -save/clobber/file="tmp/one_var_fcst_6.nc"/l=16:39 fcst ! alternative of file 6 - -! files that violate the sequence -save/clobber/file="tmp/consecutive_month_fcst.nc"/l=5:28 fcst, fcst_2 -! shift the time interpretation by 3 days through altered T0 -DEFINE AXIS/UNITS=DAYS/T0=04-JAN-1900/EDGES/T=01-JAN-1950:31-DEC-1970:`365.2425/12` monthly - !-> DEFINE AXIS/UNITS=DAYS/T0=04-JAN-1900/EDGES/T=01-JAN-1950:31-DEC-1970:30.436875 monthly -save/clobber/file="tmp/irregular_start_time_fcst.nc"/l=6:29 fcst, fcst_2 - -cancel variables/all - -! ***** end of FMRC file creation **************** - -! define a complete FMRC aggregation -let files = SPAWN("ls -1 tmp/fcst_*.nc") -list files ! notice that they are not properly ordered - VARIABLE : SPAWN("ls -1 tmp/fcst_*.nc") - SUBSET : 11 points (X) - 1 / 1:"tmp/fcst_10.nc" - 2 / 2:"tmp/fcst_11.nc" - 3 / 3:"tmp/fcst_1.nc" - 4 / 4:"tmp/fcst_2.nc" - 5 / 5:"tmp/fcst_3.nc" - 6 / 6:"tmp/fcst_4.nc" - 7 / 7:"tmp/fcst_5.nc" - 8 / 8:"tmp/fcst_6.nc" - 9 / 9:"tmp/fcst_7.nc" - 10 / 10:"tmp/fcst_8.nc" - 11 / 11:"tmp/fcst_9.nc" -fmrc my_fmrc = files -show data/brief ! note that member files are hidden - currently SET data sets: - 12> my_fmrc (default) Forecast aggregation -show data/members my_fmrc - currently SET data sets: - 12> my_fmrc (default) Forecast aggregation - name title I J K L M N - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:11 - (L=1:24) - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:33 - FCST_2 another variable 1:21 1:21 ... 1:24 ... 1:11 - (L=1:24) - - Member datasets: - 12.1 : tmp/fcst_1.nc - 12.2 : tmp/fcst_2.nc - 12.3 : tmp/fcst_3.nc - 12.4 : tmp/fcst_4.nc - 12.5 : tmp/fcst_5.nc - 12.6 : tmp/fcst_6.nc - 12.7 : tmp/fcst_7.nc - 12.8 : tmp/fcst_8.nc - 12.9 : tmp/fcst_9.nc - 12.10: tmp/fcst_10.nc - 12.11: tmp/fcst_11.nc -show data/attr my_fmrc - currently SET data sets: - 12> my_fmrc (default) Forecast aggregation - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . aggregate name CHAR 7 F my_fmrc - _cal_t_ax CHAR 8 T TF_CAL_T - _lag_f_ax CHAR 8 T TF_LAG_F - _cal_f_ax CHAR 9 T TF_CAL_F1 - _lag_t_ax CHAR 9 T TF_LAG_T1 - - FCST DOUBLE long_name CHAR 18 T FIELD + FCST_ERROR - missing_value DOUBLE 1 T -1.E+34 - coordinates CHAR 34 T RUN TIME33 TF_TIMES TIME33 YAX XAX - _ftime2d CHAR 8 T TF_TIMES - _cal_t_ax CHAR 8 T TF_CAL_T - _lag_f_ax CHAR 8 T TF_LAG_F - _cal_f_ax CHAR 9 T TF_CAL_F1 - _lag_t_ax CHAR 9 T TF_LAG_T1 - - TF_TIMES DOUBLE long_name CHAR 25 T Forecast time step matrix - units CHAR 22 T days since 01-JAN-1900 - missing_value DOUBLE 1 T -1.E+34 - _CoordinateAxisType - CHAR 4 T Time - calendar CHAR 9 T GREGORIAN - - FCST_2 DOUBLE long_name CHAR 16 T another variable - missing_value DOUBLE 1 T -1.E+34 - coordinates CHAR 34 T RUN TIME33 TF_TIMES TIME33 YAX XAX - _ftime2d CHAR 8 T TF_TIMES - _cal_t_ax CHAR 8 T TF_CAL_T - _lag_f_ax CHAR 8 T TF_LAG_F - _cal_f_ax CHAR 9 T TF_CAL_F1 - _lag_t_ax CHAR 9 T TF_LAG_T1 - - -! plot and list the aggregation -GO bn_aggregate_f.sub -! bn_aggregate_f.sub - -DEFINE SYMBOL TF_CAL_T = `fcst._cal_t_ax` - !-> DEFINE SYMBOL TF_CAL_T = TF_CAL_T -DEFINE SYMBOL TF_LAG_F = `fcst._lag_f_ax` - !-> DEFINE SYMBOL TF_LAG_F = TF_LAG_F -DEFINE SYMBOL TF_LAG_T = `fcst._lag_t_ax` - !-> DEFINE SYMBOL TF_LAG_T = TF_LAG_T1 -DEFINE SYMBOL TF_CAL_F = `fcst._cal_f_ax` - !-> DEFINE SYMBOL TF_CAL_F = TF_CAL_F1 - -! native compact form -SHADE/I=10/J=10 fcst -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 fcst - VARIABLE : FIELD + FCST_ERROR - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 11 by 20 points (FORECAST-MODEL ELAPSED TIME (days)) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 1950 1950 1950 1950 1951 1951 1951 1951 1952 1952 1952 - 1 2 3 4 5 6 7 8 9 10 11 - 15.2 / 1: 0.3308733 0.2995953 0.2662985 0.2314047 0.1953503 0.1585817 0.1215518 0.0847151 0.0485235 0.0134218 -0.0201563 - 45.7 / 2: 0.3436487 0.3049091 0.2625301 0.2252593 0.1889075 0.1553289 0.1127235 0.0789911 0.0438243 0.0136326 -0.0196690 - 76.1 / 3: 0.3280592 0.2846080 0.2479543 0.2287766 0.1759781 0.1382576 0.1141467 0.0766264 0.0527007 0.0276557 -0.0086318 - 106.5 / 4: 0.3256897 0.2698410 0.2458940 0.1888562 0.1533808 0.1250386 0.0826960 0.0563791 0.0278336 0.0357375 0.0264153 - 137 / 5: 0.2995540 0.2459734 0.2143293 0.1591650 0.1476759 0.1043400 0.0763400 0.1019103 0.0445603 0.0279556 0.0607851 - 167.4 / 6: 0.2560277 0.2401164 0.2049708 0.1810599 0.1055925 0.1339341 0.0884317 0.0704680 0.1009095 0.0839353 0.0911103 - 197.8 / 7: 0.2185069 0.1891298 0.1525731 0.0948482 0.0726123 0.0545415 0.0690208 0.0796242 0.0425444 0.0463554 0.0738779 - 228.3 / 8: 0.1563227 0.0959035 0.1318201 0.1019192 0.1382099 0.1210844 0.1313802 0.1344408 0.0733384 0.1466158 0.1246362 - 258.7 / 9: 0.1238284 0.1399968 0.1337569 0.1533552 0.0919298 0.0478143 0.1494790 0.0579802 0.1094510 0.1286823 0.1646209 - 289.2 / 10: 0.0835536 0.0226973 0.1131633 0.0250912 0.1019407 0.0638627 0.1040040 0.0939504 0.0997298 0.1336811 0.2076976 - 319.6 / 11: -0.0078745 0.0922297 0.0000791 0.0605515 0.0753098 0.0409203 0.1592567 0.2239767 0.2607897 0.2703449 0.2921373 - 350 / 12: 0.1290943 0.1152300 0.1502604 0.0868290 0.1445868 0.0863653 0.0977376 0.2176088 0.1978098 0.2000566 0.2961577 - 380.5 / 13: 0.0876806 -0.0121062 0.1293268 0.0950471 0.1878568 0.1480523 0.1782419 0.2343381 0.2744336 0.2738158 0.2523612 - 410.9 / 14: 0.0392726 0.1515426 0.0903681 0.0708396 0.0929949 0.1414489 0.3027601 0.2232685 0.3498280 0.2422724 0.3733627 - 441.3 / 15: -0.0615620 0.1507842 0.1924314 0.2259336 0.2521976 0.1705512 0.2936669 0.3274860 0.4060243 0.3478671 0.3849173 - 471.8 / 16: -0.0308208 -0.0037006 0.1598705 0.1240972 0.2576440 0.1767236 0.3412403 0.2719753 0.3188286 0.3108440 0.4522507 - 502.2 / 17: 0.1536531 -0.0048861 0.2213442 0.2622989 0.1475800 0.2229423 0.2880586 0.3083543 0.2656445 0.2461320 0.2655576 - 532.6 / 18: 0.1749564 0.2360686 0.1456230 0.1326909 0.3566989 0.2075593 0.3614125 0.3754218 0.4059037 0.4501629 0.3630192 - 563.1 / 19: 0.0652950 0.1093742 0.1476148 0.3287029 0.2936397 0.2123916 0.2815002 0.3578879 0.3471040 0.4267769 0.4085990 - 593.5 / 20: 0.0511787 0.1362586 0.2269107 0.3385307 0.2614769 0.4113524 0.3252963 0.2235688 0.3193894 0.1865842 0.2658981 - -! compact form with spaces -LET fcstfine = fcst[GT=($TF_LAG_T)@BIN,GF=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE fcstfine = fcst[GT=TF_LAG_T1@BIN,GF=TF_CAL_F1@BIN] -SHADE/I=10/J=10 fcstfine -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 fcstfine - VARIABLE : FCST[GT=TF_LAG_T1@BIN,GF=TF_CAL_F1@BIN] - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 33 by 20 points (FORECAST-MODEL ELAPSED TIME (days)) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - ... listing every 2th point - 1950 1950 1950 1950 1950 1950 1951 1951 1951 1951 1951 1951 1952 1952 1952 1952 1952 - 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 - 15.2 / 1: 0.3308733 .... .... 0.2662985 .... .... 0.1953503 .... .... 0.1215518 .... .... 0.0485235 .... .... -0.0201563 .... - 45.7 / 2: 0.3436487 .... .... 0.2625301 .... .... 0.1889075 .... .... 0.1127235 .... .... 0.0438243 .... .... -0.0196690 .... - 76.1 / 3: 0.3280592 .... .... 0.2479543 .... .... 0.1759781 .... .... 0.1141467 .... .... 0.0527007 .... .... -0.0086318 .... - 106.5 / 4: 0.3256897 .... .... 0.2458940 .... .... 0.1533808 .... .... 0.0826960 .... .... 0.0278336 .... .... 0.0264153 .... - 137 / 5: 0.2995540 .... .... 0.2143293 .... .... 0.1476759 .... .... 0.0763400 .... .... 0.0445603 .... .... 0.0607851 .... - 167.4 / 6: 0.2560277 .... .... 0.2049708 .... .... 0.1055925 .... .... 0.0884317 .... .... 0.1009095 .... .... 0.0911103 .... - 197.8 / 7: 0.2185069 .... .... 0.1525731 .... .... 0.0726123 .... .... 0.0690208 .... .... 0.0425444 .... .... 0.0738779 .... - 228.3 / 8: 0.1563227 .... .... 0.1318201 .... .... 0.1382099 .... .... 0.1313802 .... .... 0.0733384 .... .... 0.1246362 .... - 258.7 / 9: 0.1238284 .... .... 0.1337569 .... .... 0.0919298 .... .... 0.1494790 .... .... 0.1094510 .... .... 0.1646209 .... - 289.2 / 10: 0.0835536 .... .... 0.1131633 .... .... 0.1019407 .... .... 0.1040040 .... .... 0.0997298 .... .... 0.2076976 .... - 319.6 / 11: -0.0078745 .... .... 0.0000791 .... .... 0.0753098 .... .... 0.1592567 .... .... 0.2607897 .... .... 0.2921373 .... - 350 / 12: 0.1290943 .... .... 0.1502604 .... .... 0.1445868 .... .... 0.0977376 .... .... 0.1978098 .... .... 0.2961577 .... - 380.5 / 13: 0.0876806 .... .... 0.1293268 .... .... 0.1878568 .... .... 0.1782419 .... .... 0.2744336 .... .... 0.2523612 .... - 410.9 / 14: 0.0392726 .... .... 0.0903681 .... .... 0.0929949 .... .... 0.3027601 .... .... 0.3498280 .... .... 0.3733627 .... - 441.3 / 15: -0.0615620 .... .... 0.1924314 .... .... 0.2521976 .... .... 0.2936669 .... .... 0.4060243 .... .... 0.3849173 .... - 471.8 / 16: -0.0308208 .... .... 0.1598705 .... .... 0.2576440 .... .... 0.3412403 .... .... 0.3188286 .... .... 0.4522507 .... - 502.2 / 17: 0.1536531 .... .... 0.2213442 .... .... 0.1475800 .... .... 0.2880586 .... .... 0.2656445 .... .... 0.2655576 .... - 532.6 / 18: 0.1749564 .... .... 0.1456230 .... .... 0.3566989 .... .... 0.3614125 .... .... 0.4059037 .... .... 0.3630192 .... - 563.1 / 19: 0.0652950 .... .... 0.1476148 .... .... 0.2936397 .... .... 0.2815002 .... .... 0.3471040 .... .... 0.4085990 .... - 593.5 / 20: 0.0511787 .... .... 0.2269107 .... .... 0.2614769 .... .... 0.3252963 .... .... 0.3193894 .... .... 0.2658981 .... - -! diagonal form -LET diagform = fcstfine[GT(TF_TIMES)=($TF_CAL_T)] - !-> DEFINE VARIABLE diagform = fcstfine[GT(TF_TIMES)=TF_CAL_T] -SHADE/I=10/J=10 diagform -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 diagform - VARIABLE : FCSTFINE[GT(TF_TIMES)=TF_CAL_T] - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 33 by 20 points (FORECAST-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - ... listing every 2th point - 1950 1950 1950 1950 1950 1950 1951 1951 1951 1951 1951 1951 1952 1952 1952 1952 1952 - 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 - 16-JAN-1950 / 1: 0.3308733 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: 0.3436487 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: 0.3280592 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.3256897 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: 0.2995540 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: 0.2560277 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.2185069 .... .... 0.2662985 .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: 0.1563227 .... .... 0.2625301 .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: 0.1238284 .... .... 0.2479543 .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.0835536 .... .... 0.2458940 .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: -0.0078745 .... .... 0.2143293 .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: 0.1290943 .... .... 0.2049708 .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.0876806 .... .... 0.1525731 .... .... 0.1953503 .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: 0.0392726 .... .... 0.1318201 .... .... 0.1889075 .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: -0.0615620 .... .... 0.1337569 .... .... 0.1759781 .... .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: -0.0308208 .... .... 0.1131633 .... .... 0.1533808 .... .... .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: 0.1536531 .... .... 0.0000791 .... .... 0.1476759 .... .... .... .... .... .... .... .... .... .... - 17-JUN-1951 / 18: 0.1749564 .... .... 0.1502604 .... .... 0.1055925 .... .... .... .... .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.0652950 .... .... 0.1293268 .... .... 0.0726123 .... .... 0.1215518 .... .... .... .... .... .... .... - 17-AUG-1951 / 20: 0.0511787 .... .... 0.0903681 .... .... 0.1382099 .... .... 0.1127235 .... .... .... .... .... .... .... - -! forecast evaluation form -LET leadform = fcstfine[GT(TF_TIMES)=($TF_CAL_T),GF(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE leadform = fcstfine[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] -SHADE/I=10/J=10 leadform -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 leadform - VARIABLE : FCSTFINE[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST LEAD TIME (days)-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.2 319.6 350 380.5 410.9 441.3 471.8 502.2 532.6 563.1 593.5 624 654.4 684.8 715.3 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.3308733 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: .... 0.3436487 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: .... .... 0.3280592 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.2995953 .... .... 0.3256897 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: .... 0.3049091 .... .... 0.2995540 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: .... .... 0.2846080 .... .... 0.2560277 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.2662985 .... .... 0.2698410 .... .... 0.2185069 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: .... 0.2625301 .... .... 0.2459734 .... .... 0.1563227 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: .... .... 0.2479543 .... .... 0.2401164 .... .... 0.1238284 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.2314047 .... .... 0.2458940 .... .... 0.1891298 .... .... 0.0835536 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: .... 0.2252593 .... .... 0.2143293 .... .... 0.0959035 .... .... -0.0078745 .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: .... .... 0.2287766 .... .... 0.2049708 .... .... 0.1399968 .... .... 0.1290943 .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.1953503 .... .... 0.1888562 .... .... 0.1525731 .... .... 0.0226973 .... .... 0.0876806 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: .... 0.1889075 .... .... 0.1591650 .... .... 0.1318201 .... .... 0.0922297 .... .... 0.0392726 .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: .... .... 0.1759781 .... .... 0.1810599 .... .... 0.1337569 .... .... 0.1152300 .... .... -0.0615620 .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: 0.1585817 .... .... 0.1533808 .... .... 0.0948482 .... .... 0.1131633 .... .... -0.0121062 .... .... -0.0308208 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: .... 0.1553289 .... .... 0.1476759 .... .... 0.1019192 .... .... 0.0000791 .... .... 0.1515426 .... .... 0.1536531 .... .... .... .... .... .... .... - 17-JUN-1951 / 18: .... .... 0.1382576 .... .... 0.1055925 .... .... 0.1533552 .... .... 0.1502604 .... .... 0.1507842 .... .... 0.1749564 .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.1215518 .... .... 0.1250386 .... .... 0.0726123 .... .... 0.0250912 .... .... 0.1293268 .... .... -0.0037006 .... .... 0.0652950 .... .... .... .... .... - 17-AUG-1951 / 20: .... 0.1127235 .... .... 0.1043400 .... .... 0.1382099 .... .... 0.0605515 .... .... 0.0903681 .... .... -0.0048861 .... .... 0.0511787 .... .... .... .... - -! forecast error visualizatio -LET errform = leadform - leadform[N=1] -SHADE/I=10/J=10 errform -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 errform - VARIABLE : LEADFORM - LEADFORM[N=1] - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST LEAD TIME (days)-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.2 319.6 350 380.5 410.9 441.3 471.8 502.2 532.6 563.1 593.5 624 654.4 684.8 715.3 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.0000000 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.0000000 .... .... 0.0260944 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.0000000 .... .... 0.0035425 .... .... -0.0477916 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.0000000 .... .... 0.0144893 .... .... -0.0422749 .... .... -0.1478512 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.0000000 .... .... -0.0064941 .... .... -0.0427771 .... .... -0.1726529 .... .... -0.1076697 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: 0.0000000 .... .... -0.0052009 .... .... -0.0637335 .... .... -0.0454184 .... .... -0.1706879 .... .... -0.1894025 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1951 / 18: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.0000000 .... .... 0.0034868 .... .... -0.0489395 .... .... -0.0964606 .... .... 0.0077750 .... .... -0.1252524 .... .... -0.0562568 .... .... .... .... .... - 17-AUG-1951 / 20: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - -! confirm the second variable works, too -LET fcst2fine = fcst_2[GT=($TF_LAG_T)@BIN,GF=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE fcst2fine = fcst_2[GT=TF_LAG_T1@BIN,GF=TF_CAL_F1@BIN] -LET lead2form = fcst2fine[GT(TF_TIMES)=($TF_CAL_T),GF(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE lead2form = fcst2fine[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] -LET err2form = lead2form - lead2form[N=1] -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 err2form - VARIABLE : LEAD2FORM - LEAD2FORM[N=1] - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST LEAD TIME (days)-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.2 319.6 350 380.5 410.9 441.3 471.8 502.2 532.6 563.1 593.5 624 654.4 684.8 715.3 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.0000000 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.0000000 .... .... 0.0260944 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.0000000 .... .... 0.0035425 .... .... -0.0477916 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.0000000 .... .... 0.0144893 .... .... -0.0422749 .... .... -0.1478512 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.0000000 .... .... -0.0064941 .... .... -0.0427771 .... .... -0.1726529 .... .... -0.1076697 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: 0.0000000 .... .... -0.0052009 .... .... -0.0637335 .... .... -0.0454184 .... .... -0.1706879 .... .... -0.1894025 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1951 / 18: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.0000000 .... .... 0.0034868 .... .... -0.0489395 .... .... -0.0964606 .... .... 0.0077750 .... .... -0.1252524 .... .... -0.0562568 .... .... .... .... .... - 17-AUG-1951 / 20: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - -! since the N=1 values are subtracted off, the +2 offset is removed from fcst_2 -! so this should give identically zero ... except that all of the subtractions -! lead to errors Order(e-16). To avoid benchmark results that differ from -! one machine to another, this is commented out -! STAT/I=10/J=10/L=1:20/BRIEF err2form - errform - - -cancel data my_fmrc -show data/hidden ! note that all member files were canceled, too - currently SET data sets: - -! agg with 2nd, 3rd, 9th and 10th forecasts missing -use tmp/fcst_1.nc, tmp/fcst_2.nc, tmp/fcst_3.nc, tmp/fcst_9.nc, tmp/fcst_10.nc, tmp/fcst_11.nc -let files = SPAWN("ls -1 tmp/fcst_*.nc") -fmrc/hide my_fmrc = XCAT(files[I=6:10],{"6","1"}) ! double-wide gaps -!fmrc my_fmrc = XCAT(files[I=6:10],{"6","1","2","5"}) ! single-wide gaps -show data/members my_fmrc - currently SET data sets: - 12> my_fmrc (default) Forecast aggregation - name title I J K L M N - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:11 - (L=1:24) - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:33 - FCST_2 another variable 1:21 1:21 ... 1:24 ... 1:11 - (L=1:24) - - Member datasets: - 12.1 : tmp/fcst_1.nc - 12.2 : (dummy) - 12.3 : (dummy) - 12.4 : tmp/fcst_4.nc - 12.5 : tmp/fcst_5.nc - 12.6 : tmp/fcst_6.nc - 12.7 : tmp/fcst_7.nc - 12.8 : tmp/fcst_8.nc - 12.9 : (dummy) - 12.10: (dummy) - 12.11: tmp/fcst_11.nc -show data/brief - currently SET data sets: - 2> tmp/fcst_2.nc - 3> tmp/fcst_3.nc - 4> tmp/fcst_9.nc - 5> tmp/fcst_10.nc - 12> my_fmrc (default) Forecast aggregation -LIST TF_TIMES - VARIABLE : Forecast time step matrix (days since 01-JAN-1900) - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 33 points (MODEL ELAPSED TIME (days)-FORECAST) - Verification time increases across row. Initialization time increases down page. - ... listing every 3th point - 15.2 106.5 197.8 289.2 380.5 471.8 563.1 654.4 - 1 4 7 10 13 16 19 22 - 01-JAN-1950 / 1: 18277.22 18368.53 18459.84 18551.15 18642.46 18733.77 18825.08 18916.39 - 31-JAN-1950 / 2: 18307.66 18398.97 18490.28 18581.59 18672.90 18764.21 18855.52 18946.83 - 02-MAR-1950 / 3: 18338.09 18429.40 18520.71 18612.02 18703.33 18794.65 18885.96 18977.27 - 02-APR-1950 / 4: 18368.53 18459.84 18551.15 18642.46 18733.77 18825.08 18916.39 19007.70 - 02-MAY-1950 / 5: 18398.97 18490.28 18581.59 18672.90 18764.21 18855.52 18946.83 19038.14 - 02-JUN-1950 / 6: 18429.40 18520.71 18612.02 18703.33 18794.65 18885.96 18977.27 19068.58 - 02-JUL-1950 / 7: 18459.84 18551.15 18642.46 18733.77 18825.08 18916.39 19007.70 19099.01 - 02-AUG-1950 / 8: 18490.28 18581.59 18672.90 18764.21 18855.52 18946.83 19038.14 19129.45 - 01-SEP-1950 / 9: 18520.71 18612.02 18703.33 18794.65 18885.96 18977.27 19068.58 19159.89 - 01-OCT-1950 / 10: 18551.15 18642.46 18733.77 18825.08 18916.39 19007.70 19099.01 19190.32 - 01-NOV-1950 / 11: 18581.59 18672.90 18764.21 18855.52 18946.83 19038.14 19129.45 19220.76 - 01-DEC-1950 / 12: 18612.02 18703.33 18794.65 18885.96 18977.27 19068.58 19159.89 19251.20 - 01-JAN-1951 / 13: 18642.46 18733.77 18825.08 18916.39 19007.70 19099.01 19190.32 19281.64 - 31-JAN-1951 / 14: 18672.90 18764.21 18855.52 18946.83 19038.14 19129.45 19220.76 19312.07 - 03-MAR-1951 / 15: 18703.33 18794.65 18885.96 18977.27 19068.58 19159.89 19251.20 19342.51 - 02-APR-1951 / 16: 18733.77 18825.08 18916.39 19007.70 19099.01 19190.32 19281.64 19372.95 - 02-MAY-1951 / 17: 18764.21 18855.52 18946.83 19038.14 19129.45 19220.76 19312.07 19403.38 - 02-JUN-1951 / 18: 18794.65 18885.96 18977.27 19068.58 19159.89 19251.20 19342.51 19433.82 - 02-JUL-1951 / 19: 18825.08 18916.39 19007.70 19099.01 19190.32 19281.64 19372.95 19464.26 - 02-AUG-1951 / 20: 18855.52 18946.83 19038.14 19129.45 19220.76 19312.07 19403.38 19494.69 - 01-SEP-1951 / 21: 18885.96 18977.27 19068.58 19159.89 19251.20 19342.51 19433.82 19525.13 - 02-OCT-1951 / 22: 18916.39 19007.70 19099.01 19190.32 19281.64 19372.95 19464.26 19555.57 - 01-NOV-1951 / 23: 18946.83 19038.14 19129.45 19220.76 19312.07 19403.38 19494.69 19586.00 - 02-DEC-1951 / 24: 18977.27 19068.58 19159.89 19251.20 19342.51 19433.82 19525.13 19616.44 - 01-JAN-1952 / 25: 19007.70 19099.01 19190.32 19281.64 19372.95 19464.26 19555.57 19646.88 - 31-JAN-1952 / 26: 19038.14 19129.45 19220.76 19312.07 19403.38 19494.69 19586.00 19677.31 - 02-MAR-1952 / 27: 19068.58 19159.89 19251.20 19342.51 19433.82 19525.13 19616.44 19707.75 - 01-APR-1952 / 28: 19099.01 19190.32 19281.64 19372.95 19464.26 19555.57 19646.88 19738.19 - 02-MAY-1952 / 29: 19129.45 19220.76 19312.07 19403.38 19494.69 19586.00 19677.31 19768.63 - 01-JUN-1952 / 30: 19159.89 19251.20 19342.51 19433.82 19525.13 19616.44 19707.75 19799.06 - 02-JUL-1952 / 31: 19190.32 19281.64 19372.95 19464.26 19555.57 19646.88 19738.19 19829.50 - 01-AUG-1952 / 32: 19220.76 19312.07 19403.38 19494.69 19586.00 19677.31 19768.63 19859.94 - 31-AUG-1952 / 33: 19251.20 19342.51 19433.82 19525.13 19616.44 19707.75 19799.06 19890.37 - -GO bn_aggregate_f.sub -! bn_aggregate_f.sub - -DEFINE SYMBOL TF_CAL_T = `fcst._cal_t_ax` - !-> DEFINE SYMBOL TF_CAL_T = TF_CAL_T -DEFINE SYMBOL TF_LAG_F = `fcst._lag_f_ax` - !-> DEFINE SYMBOL TF_LAG_F = TF_LAG_F -DEFINE SYMBOL TF_LAG_T = `fcst._lag_t_ax` - !-> DEFINE SYMBOL TF_LAG_T = TF_LAG_T1 -DEFINE SYMBOL TF_CAL_F = `fcst._cal_f_ax` - !-> DEFINE SYMBOL TF_CAL_F = TF_CAL_F1 - -! native compact form -SHADE/I=10/J=10 fcst -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 fcst - VARIABLE : FIELD + FCST_ERROR - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 11 by 20 points (FORECAST-MODEL ELAPSED TIME (days)) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 1950 1950 1950 1950 1951 1951 1951 1951 1952 1952 1952 - 1 2 3 4 5 6 7 8 9 10 11 - 15.2 / 1: 0.3308733 .... .... 0.2314047 0.1953503 0.1585817 0.1215518 0.0847151 .... .... -0.0201563 - 45.7 / 2: 0.3436487 .... .... 0.2252593 0.1889075 0.1553289 0.1127235 0.0789911 .... .... -0.0196690 - 76.1 / 3: 0.3280592 .... .... 0.2287766 0.1759781 0.1382576 0.1141467 0.0766264 .... .... -0.0086318 - 106.5 / 4: 0.3256897 .... .... 0.1888562 0.1533808 0.1250386 0.0826960 0.0563791 .... .... 0.0264153 - 137 / 5: 0.2995540 .... .... 0.1591650 0.1476759 0.1043400 0.0763400 0.1019103 .... .... 0.0607851 - 167.4 / 6: 0.2560277 .... .... 0.1810599 0.1055925 0.1339341 0.0884317 0.0704680 .... .... 0.0911103 - 197.8 / 7: 0.2185069 .... .... 0.0948482 0.0726123 0.0545415 0.0690208 0.0796242 .... .... 0.0738779 - 228.3 / 8: 0.1563227 .... .... 0.1019192 0.1382099 0.1210844 0.1313802 0.1344408 .... .... 0.1246362 - 258.7 / 9: 0.1238284 .... .... 0.1533552 0.0919298 0.0478143 0.1494790 0.0579802 .... .... 0.1646209 - 289.2 / 10: 0.0835536 .... .... 0.0250912 0.1019407 0.0638627 0.1040040 0.0939504 .... .... 0.2076976 - 319.6 / 11: -0.0078745 .... .... 0.0605515 0.0753098 0.0409203 0.1592567 0.2239767 .... .... 0.2921373 - 350 / 12: 0.1290943 .... .... 0.0868290 0.1445868 0.0863653 0.0977376 0.2176088 .... .... 0.2961577 - 380.5 / 13: 0.0876806 .... .... 0.0950471 0.1878568 0.1480523 0.1782419 0.2343381 .... .... 0.2523612 - 410.9 / 14: 0.0392726 .... .... 0.0708396 0.0929949 0.1414489 0.3027601 0.2232685 .... .... 0.3733627 - 441.3 / 15: -0.0615620 .... .... 0.2259336 0.2521976 0.1705512 0.2936669 0.3274860 .... .... 0.3849173 - 471.8 / 16: -0.0308208 .... .... 0.1240972 0.2576440 0.1767236 0.3412403 0.2719753 .... .... 0.4522507 - 502.2 / 17: 0.1536531 .... .... 0.2622989 0.1475800 0.2229423 0.2880586 0.3083543 .... .... 0.2655576 - 532.6 / 18: 0.1749564 .... .... 0.1326909 0.3566989 0.2075593 0.3614125 0.3754218 .... .... 0.3630192 - 563.1 / 19: 0.0652950 .... .... 0.3287029 0.2936397 0.2123916 0.2815002 0.3578879 .... .... 0.4085990 - 593.5 / 20: 0.0511787 .... .... 0.3385307 0.2614769 0.4113524 0.3252963 0.2235688 .... .... 0.2658981 - -! compact form with spaces -LET fcstfine = fcst[GT=($TF_LAG_T)@BIN,GF=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE fcstfine = fcst[GT=TF_LAG_T1@BIN,GF=TF_CAL_F1@BIN] -SHADE/I=10/J=10 fcstfine -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 fcstfine - VARIABLE : FCST[GT=TF_LAG_T1@BIN,GF=TF_CAL_F1@BIN] - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 33 by 20 points (FORECAST-MODEL ELAPSED TIME (days)) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - ... listing every 2th point - 1950 1950 1950 1950 1950 1950 1951 1951 1951 1951 1951 1951 1952 1952 1952 1952 1952 - 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 - 15.2 / 1: 0.3308733 .... .... .... .... .... 0.1953503 .... .... 0.1215518 .... .... .... .... .... -0.0201563 .... - 45.7 / 2: 0.3436487 .... .... .... .... .... 0.1889075 .... .... 0.1127235 .... .... .... .... .... -0.0196690 .... - 76.1 / 3: 0.3280592 .... .... .... .... .... 0.1759781 .... .... 0.1141467 .... .... .... .... .... -0.0086318 .... - 106.5 / 4: 0.3256897 .... .... .... .... .... 0.1533808 .... .... 0.0826960 .... .... .... .... .... 0.0264153 .... - 137 / 5: 0.2995540 .... .... .... .... .... 0.1476759 .... .... 0.0763400 .... .... .... .... .... 0.0607851 .... - 167.4 / 6: 0.2560277 .... .... .... .... .... 0.1055925 .... .... 0.0884317 .... .... .... .... .... 0.0911103 .... - 197.8 / 7: 0.2185069 .... .... .... .... .... 0.0726123 .... .... 0.0690208 .... .... .... .... .... 0.0738779 .... - 228.3 / 8: 0.1563227 .... .... .... .... .... 0.1382099 .... .... 0.1313802 .... .... .... .... .... 0.1246362 .... - 258.7 / 9: 0.1238284 .... .... .... .... .... 0.0919298 .... .... 0.1494790 .... .... .... .... .... 0.1646209 .... - 289.2 / 10: 0.0835536 .... .... .... .... .... 0.1019407 .... .... 0.1040040 .... .... .... .... .... 0.2076976 .... - 319.6 / 11: -0.0078745 .... .... .... .... .... 0.0753098 .... .... 0.1592567 .... .... .... .... .... 0.2921373 .... - 350 / 12: 0.1290943 .... .... .... .... .... 0.1445868 .... .... 0.0977376 .... .... .... .... .... 0.2961577 .... - 380.5 / 13: 0.0876806 .... .... .... .... .... 0.1878568 .... .... 0.1782419 .... .... .... .... .... 0.2523612 .... - 410.9 / 14: 0.0392726 .... .... .... .... .... 0.0929949 .... .... 0.3027601 .... .... .... .... .... 0.3733627 .... - 441.3 / 15: -0.0615620 .... .... .... .... .... 0.2521976 .... .... 0.2936669 .... .... .... .... .... 0.3849173 .... - 471.8 / 16: -0.0308208 .... .... .... .... .... 0.2576440 .... .... 0.3412403 .... .... .... .... .... 0.4522507 .... - 502.2 / 17: 0.1536531 .... .... .... .... .... 0.1475800 .... .... 0.2880586 .... .... .... .... .... 0.2655576 .... - 532.6 / 18: 0.1749564 .... .... .... .... .... 0.3566989 .... .... 0.3614125 .... .... .... .... .... 0.3630192 .... - 563.1 / 19: 0.0652950 .... .... .... .... .... 0.2936397 .... .... 0.2815002 .... .... .... .... .... 0.4085990 .... - 593.5 / 20: 0.0511787 .... .... .... .... .... 0.2614769 .... .... 0.3252963 .... .... .... .... .... 0.2658981 .... - -! diagonal form -LET diagform = fcstfine[GT(TF_TIMES)=($TF_CAL_T)] - !-> DEFINE VARIABLE diagform = fcstfine[GT(TF_TIMES)=TF_CAL_T] -SHADE/I=10/J=10 diagform -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 diagform - VARIABLE : FCSTFINE[GT(TF_TIMES)=TF_CAL_T] - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 33 by 20 points (FORECAST-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - ... listing every 2th point - 1950 1950 1950 1950 1950 1950 1951 1951 1951 1951 1951 1951 1952 1952 1952 1952 1952 - 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 - 16-JAN-1950 / 1: 0.3308733 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: 0.3436487 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: 0.3280592 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.3256897 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: 0.2995540 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: 0.2560277 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.2185069 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: 0.1563227 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: 0.1238284 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.0835536 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: -0.0078745 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: 0.1290943 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.0876806 .... .... .... .... .... 0.1953503 .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: 0.0392726 .... .... .... .... .... 0.1889075 .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: -0.0615620 .... .... .... .... .... 0.1759781 .... .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: -0.0308208 .... .... .... .... .... 0.1533808 .... .... .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: 0.1536531 .... .... .... .... .... 0.1476759 .... .... .... .... .... .... .... .... .... .... - 17-JUN-1951 / 18: 0.1749564 .... .... .... .... .... 0.1055925 .... .... .... .... .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.0652950 .... .... .... .... .... 0.0726123 .... .... 0.1215518 .... .... .... .... .... .... .... - 17-AUG-1951 / 20: 0.0511787 .... .... .... .... .... 0.1382099 .... .... 0.1127235 .... .... .... .... .... .... .... - -! forecast evaluation form -LET leadform = fcstfine[GT(TF_TIMES)=($TF_CAL_T),GF(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE leadform = fcstfine[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] -SHADE/I=10/J=10 leadform -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 leadform - VARIABLE : FCSTFINE[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST LEAD TIME (days)-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.2 319.6 350 380.5 410.9 441.3 471.8 502.2 532.6 563.1 593.5 624 654.4 684.8 715.3 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.3308733 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: .... 0.3436487 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: .... .... 0.3280592 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: .... .... .... 0.3256897 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: .... .... .... .... 0.2995540 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: .... .... .... .... .... 0.2560277 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: .... .... .... .... .... .... 0.2185069 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: .... .... .... .... .... .... .... 0.1563227 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: .... .... .... .... .... .... .... .... 0.1238284 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.2314047 .... .... .... .... .... .... .... .... 0.0835536 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: .... 0.2252593 .... .... .... .... .... .... .... .... -0.0078745 .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: .... .... 0.2287766 .... .... .... .... .... .... .... .... 0.1290943 .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.1953503 .... .... 0.1888562 .... .... .... .... .... .... .... .... 0.0876806 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: .... 0.1889075 .... .... 0.1591650 .... .... .... .... .... .... .... .... 0.0392726 .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: .... .... 0.1759781 .... .... 0.1810599 .... .... .... .... .... .... .... .... -0.0615620 .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: 0.1585817 .... .... 0.1533808 .... .... 0.0948482 .... .... .... .... .... .... .... .... -0.0308208 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: .... 0.1553289 .... .... 0.1476759 .... .... 0.1019192 .... .... .... .... .... .... .... .... 0.1536531 .... .... .... .... .... .... .... - 17-JUN-1951 / 18: .... .... 0.1382576 .... .... 0.1055925 .... .... 0.1533552 .... .... .... .... .... .... .... .... 0.1749564 .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.1215518 .... .... 0.1250386 .... .... 0.0726123 .... .... 0.0250912 .... .... .... .... .... .... .... .... 0.0652950 .... .... .... .... .... - 17-AUG-1951 / 20: .... 0.1127235 .... .... 0.1043400 .... .... 0.1382099 .... .... 0.0605515 .... .... .... .... .... .... .... .... 0.0511787 .... .... .... .... - -! forecast error visualizatio -LET errform = leadform - leadform[N=1] -SHADE/I=10/J=10 errform -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 errform - VARIABLE : LEADFORM - LEADFORM[N=1] - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST LEAD TIME (days)-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.2 319.6 350 380.5 410.9 441.3 471.8 502.2 532.6 563.1 593.5 624 654.4 684.8 715.3 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.0000000 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.0000000 .... .... .... .... .... .... .... .... -0.1478512 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.0000000 .... .... -0.0064941 .... .... .... .... .... .... .... .... -0.1076697 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: 0.0000000 .... .... -0.0052009 .... .... -0.0637335 .... .... .... .... .... .... .... .... -0.1894025 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1951 / 18: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.0000000 .... .... 0.0034868 .... .... -0.0489395 .... .... -0.0964606 .... .... .... .... .... .... .... .... -0.0562568 .... .... .... .... .... - 17-AUG-1951 / 20: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - -! confirm the second variable works, too -LET fcst2fine = fcst_2[GT=($TF_LAG_T)@BIN,GF=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE fcst2fine = fcst_2[GT=TF_LAG_T1@BIN,GF=TF_CAL_F1@BIN] -LET lead2form = fcst2fine[GT(TF_TIMES)=($TF_CAL_T),GF(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE lead2form = fcst2fine[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] -LET err2form = lead2form - lead2form[N=1] -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 err2form - VARIABLE : LEAD2FORM - LEAD2FORM[N=1] - DATA SET : Forecast series of 11 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST LEAD TIME (days)-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.2 319.6 350 380.5 410.9 441.3 471.8 502.2 532.6 563.1 593.5 624 654.4 684.8 715.3 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.0000000 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.0000000 .... .... .... .... .... .... .... .... -0.1478512 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.0000000 .... .... -0.0064941 .... .... .... .... .... .... .... .... -0.1076697 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: 0.0000000 .... .... -0.0052009 .... .... -0.0637335 .... .... .... .... .... .... .... .... -0.1894025 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1951 / 18: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.0000000 .... .... 0.0034868 .... .... -0.0489395 .... .... -0.0964606 .... .... .... .... .... .... .... .... -0.0562568 .... .... .... .... .... - 17-AUG-1951 / 20: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - -! since the N=1 values are subtracted off, the +2 offset is removed from fcst_2 -! so this should give identically zero ... except that all of the subtractions -! lead to errors Order(e-16). To avoid benchmark results that differ from -! one machine to another, this is commented out -! STAT/I=10/J=10/L=1:20/BRIEF err2form - errform - - -cancel data my_fmrc -show data/brief/hidden - currently SET data sets: - 2> tmp/fcst_2.nc - 3> tmp/fcst_3.nc - 4> tmp/fcst_9.nc - 5> tmp/fcst_10.nc - 6> tmp/fcst_11.nc - 7> tmp/fcst_4.nc - 8> tmp/fcst_5.nc - 9> tmp/fcst_6.nc - 10> tmp/fcst_7.nc - 11> tmp/fcst_8.nc - 12> my_fmrc (default) Forecast aggregation -cancel data/all - -! agg with the first forecast of longer time range than the others -let files = SPAWN("ls -1 tmp/fcst_*.nc") -fmrc/hide my_fmrc = XCAT(files[I=4:11],{"tmp/long_fcst_1.nc"}) ! first member is long -show data/members my_fmrc - currently SET data sets: - 10> my_fmrc (default) Forecast aggregation - name title I J K L M N - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:9 - (L=1:36) - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:27 - FCST_2 another variable 1:21 1:21 ... 1:24 ... 1:9 - (L=1:36) - - Member datasets: - 10.1: tmp/long_fcst_1.nc - 10.2: tmp/fcst_2.nc - 10.3: tmp/fcst_3.nc - 10.4: tmp/fcst_4.nc - 10.5: tmp/fcst_5.nc - 10.6: tmp/fcst_6.nc - 10.7: tmp/fcst_7.nc - 10.8: tmp/fcst_8.nc - 10.9: tmp/fcst_9.nc -GO bn_aggregate_f.sub -! bn_aggregate_f.sub - -DEFINE SYMBOL TF_CAL_T = `fcst._cal_t_ax` - !-> DEFINE SYMBOL TF_CAL_T = TF_CAL_T -DEFINE SYMBOL TF_LAG_F = `fcst._lag_f_ax` - !-> DEFINE SYMBOL TF_LAG_F = TF_LAG_F -DEFINE SYMBOL TF_LAG_T = `fcst._lag_t_ax` - !-> DEFINE SYMBOL TF_LAG_T = TF_LAG_T1 -DEFINE SYMBOL TF_CAL_F = `fcst._cal_f_ax` - !-> DEFINE SYMBOL TF_CAL_F = TF_CAL_F2 - -! native compact form -SHADE/I=10/J=10 fcst -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 fcst - VARIABLE : FIELD + FCST_ERROR - DATA SET : Forecast series of 9 datasets patterned on long_fcst_1 - FILENAME : my_fmrc - SUBSET : 9 by 20 points (FORECAST-MODEL ELAPSED TIME (days)) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 1950 1950 1950 1950 1951 1951 1951 1951 1952 - 1 2 3 4 5 6 7 8 9 - 15.2 / 1: 0.3308733 0.2995953 0.2662985 0.2314047 0.1953503 0.1585817 0.1215518 0.0847151 0.0485235 - 45.7 / 2: 0.3436487 0.3049091 0.2625301 0.2252593 0.1889075 0.1553289 0.1127235 0.0789911 0.0438243 - 76.1 / 3: 0.3280592 0.2846080 0.2479543 0.2287766 0.1759781 0.1382576 0.1141467 0.0766264 0.0527007 - 106.5 / 4: 0.3256897 0.2698410 0.2458940 0.1888562 0.1533808 0.1250386 0.0826960 0.0563791 0.0278336 - 137 / 5: 0.2995540 0.2459734 0.2143293 0.1591650 0.1476759 0.1043400 0.0763400 0.1019103 0.0445603 - 167.4 / 6: 0.2560277 0.2401164 0.2049708 0.1810599 0.1055925 0.1339341 0.0884317 0.0704680 0.1009095 - 197.8 / 7: 0.2185069 0.1891298 0.1525731 0.0948482 0.0726123 0.0545415 0.0690208 0.0796242 0.0425444 - 228.3 / 8: 0.1563227 0.0959035 0.1318201 0.1019192 0.1382099 0.1210844 0.1313802 0.1344408 0.0733384 - 258.7 / 9: 0.1238284 0.1399968 0.1337569 0.1533552 0.0919298 0.0478143 0.1494790 0.0579802 0.1094510 - 289.2 / 10: 0.0835536 0.0226973 0.1131633 0.0250912 0.1019407 0.0638627 0.1040040 0.0939504 0.0997298 - 319.6 / 11: -0.0078745 0.0922297 0.0000791 0.0605515 0.0753098 0.0409203 0.1592567 0.2239767 0.2607897 - 350 / 12: 0.1290943 0.1152300 0.1502604 0.0868290 0.1445868 0.0863653 0.0977376 0.2176088 0.1978098 - 380.5 / 13: 0.0876806 -0.0121062 0.1293268 0.0950471 0.1878568 0.1480523 0.1782419 0.2343381 0.2744336 - 410.9 / 14: 0.0392726 0.1515426 0.0903681 0.0708396 0.0929949 0.1414489 0.3027601 0.2232685 0.3498280 - 441.3 / 15: -0.0615620 0.1507842 0.1924314 0.2259336 0.2521976 0.1705512 0.2936669 0.3274860 0.4060243 - 471.8 / 16: -0.0308208 -0.0037006 0.1598705 0.1240972 0.2576440 0.1767236 0.3412403 0.2719753 0.3188286 - 502.2 / 17: 0.1536531 -0.0048861 0.2213442 0.2622989 0.1475800 0.2229423 0.2880586 0.3083543 0.2656445 - 532.6 / 18: 0.1749564 0.2360686 0.1456230 0.1326909 0.3566989 0.2075593 0.3614125 0.3754218 0.4059037 - 563.1 / 19: 0.0652950 0.1093742 0.1476148 0.3287029 0.2936397 0.2123916 0.2815002 0.3578879 0.3471040 - 593.5 / 20: 0.0511787 0.1362586 0.2269107 0.3385307 0.2614769 0.4113524 0.3252963 0.2235688 0.3193894 - -! compact form with spaces -LET fcstfine = fcst[GT=($TF_LAG_T)@BIN,GF=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE fcstfine = fcst[GT=TF_LAG_T1@BIN,GF=TF_CAL_F2@BIN] -SHADE/I=10/J=10 fcstfine -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 fcstfine - VARIABLE : FCST[GT=TF_LAG_T1@BIN,GF=TF_CAL_F2@BIN] - DATA SET : Forecast series of 9 datasets patterned on long_fcst_1 - FILENAME : my_fmrc - SUBSET : 27 by 20 points (FORECAST-MODEL ELAPSED TIME (days)) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - ... listing every 2th point - 1950 1950 1950 1950 1950 1950 1951 1951 1951 1951 1951 1951 1952 1952 - 1 3 5 7 9 11 13 15 17 19 21 23 25 27 - 15.2 / 1: 0.3308733 .... .... 0.2662985 .... .... 0.1953503 .... .... 0.1215518 .... .... 0.0485235 .... - 45.7 / 2: 0.3436487 .... .... 0.2625301 .... .... 0.1889075 .... .... 0.1127235 .... .... 0.0438243 .... - 76.1 / 3: 0.3280592 .... .... 0.2479543 .... .... 0.1759781 .... .... 0.1141467 .... .... 0.0527007 .... - 106.5 / 4: 0.3256897 .... .... 0.2458940 .... .... 0.1533808 .... .... 0.0826960 .... .... 0.0278336 .... - 137 / 5: 0.2995540 .... .... 0.2143293 .... .... 0.1476759 .... .... 0.0763400 .... .... 0.0445603 .... - 167.4 / 6: 0.2560277 .... .... 0.2049708 .... .... 0.1055925 .... .... 0.0884317 .... .... 0.1009095 .... - 197.8 / 7: 0.2185069 .... .... 0.1525731 .... .... 0.0726123 .... .... 0.0690208 .... .... 0.0425444 .... - 228.3 / 8: 0.1563227 .... .... 0.1318201 .... .... 0.1382099 .... .... 0.1313802 .... .... 0.0733384 .... - 258.7 / 9: 0.1238284 .... .... 0.1337569 .... .... 0.0919298 .... .... 0.1494790 .... .... 0.1094510 .... - 289.2 / 10: 0.0835536 .... .... 0.1131633 .... .... 0.1019407 .... .... 0.1040040 .... .... 0.0997298 .... - 319.6 / 11: -0.0078745 .... .... 0.0000791 .... .... 0.0753098 .... .... 0.1592567 .... .... 0.2607897 .... - 350 / 12: 0.1290943 .... .... 0.1502604 .... .... 0.1445868 .... .... 0.0977376 .... .... 0.1978098 .... - 380.5 / 13: 0.0876806 .... .... 0.1293268 .... .... 0.1878568 .... .... 0.1782419 .... .... 0.2744336 .... - 410.9 / 14: 0.0392726 .... .... 0.0903681 .... .... 0.0929949 .... .... 0.3027601 .... .... 0.3498280 .... - 441.3 / 15: -0.0615620 .... .... 0.1924314 .... .... 0.2521976 .... .... 0.2936669 .... .... 0.4060243 .... - 471.8 / 16: -0.0308208 .... .... 0.1598705 .... .... 0.2576440 .... .... 0.3412403 .... .... 0.3188286 .... - 502.2 / 17: 0.1536531 .... .... 0.2213442 .... .... 0.1475800 .... .... 0.2880586 .... .... 0.2656445 .... - 532.6 / 18: 0.1749564 .... .... 0.1456230 .... .... 0.3566989 .... .... 0.3614125 .... .... 0.4059037 .... - 563.1 / 19: 0.0652950 .... .... 0.1476148 .... .... 0.2936397 .... .... 0.2815002 .... .... 0.3471040 .... - 593.5 / 20: 0.0511787 .... .... 0.2269107 .... .... 0.2614769 .... .... 0.3252963 .... .... 0.3193894 .... - -! diagonal form -LET diagform = fcstfine[GT(TF_TIMES)=($TF_CAL_T)] - !-> DEFINE VARIABLE diagform = fcstfine[GT(TF_TIMES)=TF_CAL_T] -SHADE/I=10/J=10 diagform -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 diagform - VARIABLE : FCSTFINE[GT(TF_TIMES)=TF_CAL_T] - DATA SET : Forecast series of 9 datasets patterned on long_fcst_1 - FILENAME : my_fmrc - SUBSET : 27 by 20 points (FORECAST-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - ... listing every 2th point - 1950 1950 1950 1950 1950 1950 1951 1951 1951 1951 1951 1951 1952 1952 - 1 3 5 7 9 11 13 15 17 19 21 23 25 27 - 16-JAN-1950 / 1: 0.3308733 .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: 0.3436487 .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: 0.3280592 .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.3256897 .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: 0.2995540 .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: 0.2560277 .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.2185069 .... .... 0.2662985 .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: 0.1563227 .... .... 0.2625301 .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: 0.1238284 .... .... 0.2479543 .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.0835536 .... .... 0.2458940 .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: -0.0078745 .... .... 0.2143293 .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: 0.1290943 .... .... 0.2049708 .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.0876806 .... .... 0.1525731 .... .... 0.1953503 .... .... .... .... .... .... .... - 15-FEB-1951 / 14: 0.0392726 .... .... 0.1318201 .... .... 0.1889075 .... .... .... .... .... .... .... - 18-MAR-1951 / 15: -0.0615620 .... .... 0.1337569 .... .... 0.1759781 .... .... .... .... .... .... .... - 17-APR-1951 / 16: -0.0308208 .... .... 0.1131633 .... .... 0.1533808 .... .... .... .... .... .... .... - 18-MAY-1951 / 17: 0.1536531 .... .... 0.0000791 .... .... 0.1476759 .... .... .... .... .... .... .... - 17-JUN-1951 / 18: 0.1749564 .... .... 0.1502604 .... .... 0.1055925 .... .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.0652950 .... .... 0.1293268 .... .... 0.0726123 .... .... 0.1215518 .... .... .... .... - 17-AUG-1951 / 20: 0.0511787 .... .... 0.0903681 .... .... 0.1382099 .... .... 0.1127235 .... .... .... .... - -! forecast evaluation form -LET leadform = fcstfine[GT(TF_TIMES)=($TF_CAL_T),GF(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE leadform = fcstfine[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] -SHADE/I=10/J=10 leadform -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 leadform - VARIABLE : FCSTFINE[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] - DATA SET : Forecast series of 9 datasets patterned on long_fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST LEAD TIME (days)-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.2 319.6 350 380.5 410.9 441.3 471.8 502.2 532.6 563.1 593.5 624 654.4 684.8 715.3 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.3308733 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: .... 0.3436487 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: .... .... 0.3280592 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.2995953 .... .... 0.3256897 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: .... 0.3049091 .... .... 0.2995540 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: .... .... 0.2846080 .... .... 0.2560277 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.2662985 .... .... 0.2698410 .... .... 0.2185069 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: .... 0.2625301 .... .... 0.2459734 .... .... 0.1563227 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: .... .... 0.2479543 .... .... 0.2401164 .... .... 0.1238284 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.2314047 .... .... 0.2458940 .... .... 0.1891298 .... .... 0.0835536 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: .... 0.2252593 .... .... 0.2143293 .... .... 0.0959035 .... .... -0.0078745 .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: .... .... 0.2287766 .... .... 0.2049708 .... .... 0.1399968 .... .... 0.1290943 .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.1953503 .... .... 0.1888562 .... .... 0.1525731 .... .... 0.0226973 .... .... 0.0876806 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: .... 0.1889075 .... .... 0.1591650 .... .... 0.1318201 .... .... 0.0922297 .... .... 0.0392726 .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: .... .... 0.1759781 .... .... 0.1810599 .... .... 0.1337569 .... .... 0.1152300 .... .... -0.0615620 .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: 0.1585817 .... .... 0.1533808 .... .... 0.0948482 .... .... 0.1131633 .... .... -0.0121062 .... .... -0.0308208 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: .... 0.1553289 .... .... 0.1476759 .... .... 0.1019192 .... .... 0.0000791 .... .... 0.1515426 .... .... 0.1536531 .... .... .... .... .... .... .... - 17-JUN-1951 / 18: .... .... 0.1382576 .... .... 0.1055925 .... .... 0.1533552 .... .... 0.1502604 .... .... 0.1507842 .... .... 0.1749564 .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.1215518 .... .... 0.1250386 .... .... 0.0726123 .... .... 0.0250912 .... .... 0.1293268 .... .... -0.0037006 .... .... 0.0652950 .... .... .... .... .... - 17-AUG-1951 / 20: .... 0.1127235 .... .... 0.1043400 .... .... 0.1382099 .... .... 0.0605515 .... .... 0.0903681 .... .... -0.0048861 .... .... 0.0511787 .... .... .... .... - -! forecast error visualizatio -LET errform = leadform - leadform[N=1] -SHADE/I=10/J=10 errform -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 errform - VARIABLE : LEADFORM - LEADFORM[N=1] - DATA SET : Forecast series of 9 datasets patterned on long_fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST LEAD TIME (days)-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.2 319.6 350 380.5 410.9 441.3 471.8 502.2 532.6 563.1 593.5 624 654.4 684.8 715.3 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.0000000 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.0000000 .... .... 0.0260944 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.0000000 .... .... 0.0035425 .... .... -0.0477916 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.0000000 .... .... 0.0144893 .... .... -0.0422749 .... .... -0.1478512 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.0000000 .... .... -0.0064941 .... .... -0.0427771 .... .... -0.1726529 .... .... -0.1076697 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: 0.0000000 .... .... -0.0052009 .... .... -0.0637335 .... .... -0.0454184 .... .... -0.1706879 .... .... -0.1894025 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1951 / 18: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.0000000 .... .... 0.0034868 .... .... -0.0489395 .... .... -0.0964606 .... .... 0.0077750 .... .... -0.1252524 .... .... -0.0562568 .... .... .... .... .... - 17-AUG-1951 / 20: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - -! confirm the second variable works, too -LET fcst2fine = fcst_2[GT=($TF_LAG_T)@BIN,GF=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE fcst2fine = fcst_2[GT=TF_LAG_T1@BIN,GF=TF_CAL_F2@BIN] -LET lead2form = fcst2fine[GT(TF_TIMES)=($TF_CAL_T),GF(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE lead2form = fcst2fine[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] -LET err2form = lead2form - lead2form[N=1] -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 err2form - VARIABLE : LEAD2FORM - LEAD2FORM[N=1] - DATA SET : Forecast series of 9 datasets patterned on long_fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST LEAD TIME (days)-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.2 319.6 350 380.5 410.9 441.3 471.8 502.2 532.6 563.1 593.5 624 654.4 684.8 715.3 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.0000000 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.0000000 .... .... 0.0260944 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.0000000 .... .... 0.0035425 .... .... -0.0477916 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.0000000 .... .... 0.0144893 .... .... -0.0422749 .... .... -0.1478512 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.0000000 .... .... -0.0064941 .... .... -0.0427771 .... .... -0.1726529 .... .... -0.1076697 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: 0.0000000 .... .... -0.0052009 .... .... -0.0637335 .... .... -0.0454184 .... .... -0.1706879 .... .... -0.1894025 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1951 / 18: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.0000000 .... .... 0.0034868 .... .... -0.0489395 .... .... -0.0964606 .... .... 0.0077750 .... .... -0.1252524 .... .... -0.0562568 .... .... .... .... .... - 17-AUG-1951 / 20: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - -! since the N=1 values are subtracted off, the +2 offset is removed from fcst_2 -! so this should give identically zero ... except that all of the subtractions -! lead to errors Order(e-16). To avoid benchmark results that differ from -! one machine to another, this is commented out -! STAT/I=10/J=10/L=1:20/BRIEF err2form - errform - -cancel data my_fmrc - -! agg with the sixth forecast of longer time range than the others -fmrc/hide my_fmrc = tmp/fcst_1.nc, tmp/fcst_2.nc, tmp/fcst_3.nc, tmp/fcst_4.nc, tmp/fcst_5.nc, tmp/long_fcst_6.nc, tmp/fcst_7.nc, tmp/fcst_8.nc -show data/members my_fmrc - currently SET data sets: - 9> my_fmrc (default) Forecast aggregation - name title I J K L M N - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:8 - (L=1:24) - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:24 - FCST_2 another variable 1:21 1:21 ... 1:24 ... 1:8 - (L=1:24) - - Member datasets: - 9.1: tmp/fcst_1.nc - 9.2: tmp/fcst_2.nc - 9.3: tmp/fcst_3.nc - 9.4: tmp/fcst_4.nc - 9.5: tmp/fcst_5.nc - 9.6: tmp/long_fcst_6.nc - 9.7: tmp/fcst_7.nc - 9.8: tmp/fcst_8.nc -GO bn_aggregate_f.sub -! bn_aggregate_f.sub - -DEFINE SYMBOL TF_CAL_T = `fcst._cal_t_ax` - !-> DEFINE SYMBOL TF_CAL_T = TF_CAL_T -DEFINE SYMBOL TF_LAG_F = `fcst._lag_f_ax` - !-> DEFINE SYMBOL TF_LAG_F = TF_LAG_F -DEFINE SYMBOL TF_LAG_T = `fcst._lag_t_ax` - !-> DEFINE SYMBOL TF_LAG_T = TF_LAG_T1 -DEFINE SYMBOL TF_CAL_F = `fcst._cal_f_ax` - !-> DEFINE SYMBOL TF_CAL_F = TF_CAL_F3 - -! native compact form -SHADE/I=10/J=10 fcst -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 fcst - VARIABLE : FIELD + FCST_ERROR - DATA SET : Forecast series of 8 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 8 by 20 points (FORECAST-MODEL ELAPSED TIME (days)) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 1950 1950 1950 1950 1951 1951 1951 1951 - 1 2 3 4 5 6 7 8 - 15.2 / 1: 0.3308733 0.2995953 0.2662985 0.2314047 0.1953503 0.1585817 0.1215518 0.0847151 - 45.7 / 2: 0.3436487 0.3049091 0.2625301 0.2252593 0.1889075 0.1553289 0.1127235 0.0789911 - 76.1 / 3: 0.3280592 0.2846080 0.2479543 0.2287766 0.1759781 0.1382576 0.1141467 0.0766264 - 106.5 / 4: 0.3256897 0.2698410 0.2458940 0.1888562 0.1533808 0.1250386 0.0826960 0.0563791 - 137 / 5: 0.2995540 0.2459734 0.2143293 0.1591650 0.1476759 0.1043400 0.0763400 0.1019103 - 167.4 / 6: 0.2560277 0.2401164 0.2049708 0.1810599 0.1055925 0.1339341 0.0884317 0.0704680 - 197.8 / 7: 0.2185069 0.1891298 0.1525731 0.0948482 0.0726123 0.0545415 0.0690208 0.0796242 - 228.3 / 8: 0.1563227 0.0959035 0.1318201 0.1019192 0.1382099 0.1210844 0.1313802 0.1344408 - 258.7 / 9: 0.1238284 0.1399968 0.1337569 0.1533552 0.0919298 0.0478143 0.1494790 0.0579802 - 289.2 / 10: 0.0835536 0.0226973 0.1131633 0.0250912 0.1019407 0.0638627 0.1040040 0.0939504 - 319.6 / 11: -0.0078745 0.0922297 0.0000791 0.0605515 0.0753098 0.0409203 0.1592567 0.2239767 - 350 / 12: 0.1290943 0.1152300 0.1502604 0.0868290 0.1445868 0.0863653 0.0977376 0.2176088 - 380.5 / 13: 0.0876806 -0.0121062 0.1293268 0.0950471 0.1878568 0.1480523 0.1782419 0.2343381 - 410.9 / 14: 0.0392726 0.1515426 0.0903681 0.0708396 0.0929949 0.1414489 0.3027601 0.2232685 - 441.3 / 15: -0.0615620 0.1507842 0.1924314 0.2259336 0.2521976 0.1705512 0.2936669 0.3274860 - 471.8 / 16: -0.0308208 -0.0037006 0.1598705 0.1240972 0.2576440 0.1767236 0.3412403 0.2719753 - 502.2 / 17: 0.1536531 -0.0048861 0.2213442 0.2622989 0.1475800 0.2229423 0.2880586 0.3083543 - 532.6 / 18: 0.1749564 0.2360686 0.1456230 0.1326909 0.3566989 0.2075593 0.3614125 0.3754218 - 563.1 / 19: 0.0652950 0.1093742 0.1476148 0.3287029 0.2936397 0.2123916 0.2815002 0.3578879 - 593.5 / 20: 0.0511787 0.1362586 0.2269107 0.3385307 0.2614769 0.4113524 0.3252963 0.2235688 - -! compact form with spaces -LET fcstfine = fcst[GT=($TF_LAG_T)@BIN,GF=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE fcstfine = fcst[GT=TF_LAG_T1@BIN,GF=TF_CAL_F3@BIN] -SHADE/I=10/J=10 fcstfine -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 fcstfine - VARIABLE : FCST[GT=TF_LAG_T1@BIN,GF=TF_CAL_F3@BIN] - DATA SET : Forecast series of 8 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST-MODEL ELAPSED TIME (days)) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 1950 1950 1950 1950 1950 1950 1950 1950 1950 1950 1950 1950 1951 1951 1951 1951 1951 1951 1951 1951 1951 1951 1951 1951 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 15.2 / 1: 0.3308733 .... .... 0.2995953 .... .... 0.2662985 .... .... 0.2314047 .... .... 0.1953503 .... .... 0.1585817 .... .... 0.1215518 .... .... 0.0847151 .... .... - 45.7 / 2: 0.3436487 .... .... 0.3049091 .... .... 0.2625301 .... .... 0.2252593 .... .... 0.1889075 .... .... 0.1553289 .... .... 0.1127235 .... .... 0.0789911 .... .... - 76.1 / 3: 0.3280592 .... .... 0.2846080 .... .... 0.2479543 .... .... 0.2287766 .... .... 0.1759781 .... .... 0.1382576 .... .... 0.1141467 .... .... 0.0766264 .... .... - 106.5 / 4: 0.3256897 .... .... 0.2698410 .... .... 0.2458940 .... .... 0.1888562 .... .... 0.1533808 .... .... 0.1250386 .... .... 0.0826960 .... .... 0.0563791 .... .... - 137 / 5: 0.2995540 .... .... 0.2459734 .... .... 0.2143293 .... .... 0.1591650 .... .... 0.1476759 .... .... 0.1043400 .... .... 0.0763400 .... .... 0.1019103 .... .... - 167.4 / 6: 0.2560277 .... .... 0.2401164 .... .... 0.2049708 .... .... 0.1810599 .... .... 0.1055925 .... .... 0.1339341 .... .... 0.0884317 .... .... 0.0704680 .... .... - 197.8 / 7: 0.2185069 .... .... 0.1891298 .... .... 0.1525731 .... .... 0.0948482 .... .... 0.0726123 .... .... 0.0545415 .... .... 0.0690208 .... .... 0.0796242 .... .... - 228.3 / 8: 0.1563227 .... .... 0.0959035 .... .... 0.1318201 .... .... 0.1019192 .... .... 0.1382099 .... .... 0.1210844 .... .... 0.1313802 .... .... 0.1344408 .... .... - 258.7 / 9: 0.1238284 .... .... 0.1399968 .... .... 0.1337569 .... .... 0.1533552 .... .... 0.0919298 .... .... 0.0478143 .... .... 0.1494790 .... .... 0.0579802 .... .... - 289.2 / 10: 0.0835536 .... .... 0.0226973 .... .... 0.1131633 .... .... 0.0250912 .... .... 0.1019407 .... .... 0.0638627 .... .... 0.1040040 .... .... 0.0939504 .... .... - 319.6 / 11: -0.0078745 .... .... 0.0922297 .... .... 0.0000791 .... .... 0.0605515 .... .... 0.0753098 .... .... 0.0409203 .... .... 0.1592567 .... .... 0.2239767 .... .... - 350 / 12: 0.1290943 .... .... 0.1152300 .... .... 0.1502604 .... .... 0.0868290 .... .... 0.1445868 .... .... 0.0863653 .... .... 0.0977376 .... .... 0.2176088 .... .... - 380.5 / 13: 0.0876806 .... .... -0.0121062 .... .... 0.1293268 .... .... 0.0950471 .... .... 0.1878568 .... .... 0.1480523 .... .... 0.1782419 .... .... 0.2343381 .... .... - 410.9 / 14: 0.0392726 .... .... 0.1515426 .... .... 0.0903681 .... .... 0.0708396 .... .... 0.0929949 .... .... 0.1414489 .... .... 0.3027601 .... .... 0.2232685 .... .... - 441.3 / 15: -0.0615620 .... .... 0.1507842 .... .... 0.1924314 .... .... 0.2259336 .... .... 0.2521976 .... .... 0.1705512 .... .... 0.2936669 .... .... 0.3274860 .... .... - 471.8 / 16: -0.0308208 .... .... -0.0037006 .... .... 0.1598705 .... .... 0.1240972 .... .... 0.2576440 .... .... 0.1767236 .... .... 0.3412403 .... .... 0.2719753 .... .... - 502.2 / 17: 0.1536531 .... .... -0.0048861 .... .... 0.2213442 .... .... 0.2622989 .... .... 0.1475800 .... .... 0.2229423 .... .... 0.2880586 .... .... 0.3083543 .... .... - 532.6 / 18: 0.1749564 .... .... 0.2360686 .... .... 0.1456230 .... .... 0.1326909 .... .... 0.3566989 .... .... 0.2075593 .... .... 0.3614125 .... .... 0.3754218 .... .... - 563.1 / 19: 0.0652950 .... .... 0.1093742 .... .... 0.1476148 .... .... 0.3287029 .... .... 0.2936397 .... .... 0.2123916 .... .... 0.2815002 .... .... 0.3578879 .... .... - 593.5 / 20: 0.0511787 .... .... 0.1362586 .... .... 0.2269107 .... .... 0.3385307 .... .... 0.2614769 .... .... 0.4113524 .... .... 0.3252963 .... .... 0.2235688 .... .... - -! diagonal form -LET diagform = fcstfine[GT(TF_TIMES)=($TF_CAL_T)] - !-> DEFINE VARIABLE diagform = fcstfine[GT(TF_TIMES)=TF_CAL_T] -SHADE/I=10/J=10 diagform -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 diagform - VARIABLE : FCSTFINE[GT(TF_TIMES)=TF_CAL_T] - DATA SET : Forecast series of 8 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 1950 1950 1950 1950 1950 1950 1950 1950 1950 1950 1950 1950 1951 1951 1951 1951 1951 1951 1951 1951 1951 1951 1951 1951 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.3308733 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: 0.3436487 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: 0.3280592 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.3256897 .... .... 0.2995953 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: 0.2995540 .... .... 0.3049091 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: 0.2560277 .... .... 0.2846080 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.2185069 .... .... 0.2698410 .... .... 0.2662985 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: 0.1563227 .... .... 0.2459734 .... .... 0.2625301 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: 0.1238284 .... .... 0.2401164 .... .... 0.2479543 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.0835536 .... .... 0.1891298 .... .... 0.2458940 .... .... 0.2314047 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: -0.0078745 .... .... 0.0959035 .... .... 0.2143293 .... .... 0.2252593 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: 0.1290943 .... .... 0.1399968 .... .... 0.2049708 .... .... 0.2287766 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.0876806 .... .... 0.0226973 .... .... 0.1525731 .... .... 0.1888562 .... .... 0.1953503 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: 0.0392726 .... .... 0.0922297 .... .... 0.1318201 .... .... 0.1591650 .... .... 0.1889075 .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: -0.0615620 .... .... 0.1152300 .... .... 0.1337569 .... .... 0.1810599 .... .... 0.1759781 .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: -0.0308208 .... .... -0.0121062 .... .... 0.1131633 .... .... 0.0948482 .... .... 0.1533808 .... .... 0.1585817 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: 0.1536531 .... .... 0.1515426 .... .... 0.0000791 .... .... 0.1019192 .... .... 0.1476759 .... .... 0.1553289 .... .... .... .... .... .... .... .... - 17-JUN-1951 / 18: 0.1749564 .... .... 0.1507842 .... .... 0.1502604 .... .... 0.1533552 .... .... 0.1055925 .... .... 0.1382576 .... .... .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.0652950 .... .... -0.0037006 .... .... 0.1293268 .... .... 0.0250912 .... .... 0.0726123 .... .... 0.1250386 .... .... 0.1215518 .... .... .... .... .... - 17-AUG-1951 / 20: 0.0511787 .... .... -0.0048861 .... .... 0.0903681 .... .... 0.0605515 .... .... 0.1382099 .... .... 0.1043400 .... .... 0.1127235 .... .... .... .... .... - -! forecast evaluation form -LET leadform = fcstfine[GT(TF_TIMES)=($TF_CAL_T),GF(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE leadform = fcstfine[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] -SHADE/I=10/J=10 leadform -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 leadform - VARIABLE : FCSTFINE[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] - DATA SET : Forecast series of 8 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST LEAD TIME (days)-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.2 319.6 350 380.5 410.9 441.3 471.8 502.2 532.6 563.1 593.5 624 654.4 684.8 715.3 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.3308733 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: .... 0.3436487 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: .... .... 0.3280592 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.2995953 .... .... 0.3256897 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: .... 0.3049091 .... .... 0.2995540 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: .... .... 0.2846080 .... .... 0.2560277 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.2662985 .... .... 0.2698410 .... .... 0.2185069 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: .... 0.2625301 .... .... 0.2459734 .... .... 0.1563227 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: .... .... 0.2479543 .... .... 0.2401164 .... .... 0.1238284 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.2314047 .... .... 0.2458940 .... .... 0.1891298 .... .... 0.0835536 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: .... 0.2252593 .... .... 0.2143293 .... .... 0.0959035 .... .... -0.0078745 .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: .... .... 0.2287766 .... .... 0.2049708 .... .... 0.1399968 .... .... 0.1290943 .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.1953503 .... .... 0.1888562 .... .... 0.1525731 .... .... 0.0226973 .... .... 0.0876806 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: .... 0.1889075 .... .... 0.1591650 .... .... 0.1318201 .... .... 0.0922297 .... .... 0.0392726 .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: .... .... 0.1759781 .... .... 0.1810599 .... .... 0.1337569 .... .... 0.1152300 .... .... -0.0615620 .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: 0.1585817 .... .... 0.1533808 .... .... 0.0948482 .... .... 0.1131633 .... .... -0.0121062 .... .... -0.0308208 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: .... 0.1553289 .... .... 0.1476759 .... .... 0.1019192 .... .... 0.0000791 .... .... 0.1515426 .... .... 0.1536531 .... .... .... .... .... .... .... - 17-JUN-1951 / 18: .... .... 0.1382576 .... .... 0.1055925 .... .... 0.1533552 .... .... 0.1502604 .... .... 0.1507842 .... .... 0.1749564 .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.1215518 .... .... 0.1250386 .... .... 0.0726123 .... .... 0.0250912 .... .... 0.1293268 .... .... -0.0037006 .... .... 0.0652950 .... .... .... .... .... - 17-AUG-1951 / 20: .... 0.1127235 .... .... 0.1043400 .... .... 0.1382099 .... .... 0.0605515 .... .... 0.0903681 .... .... -0.0048861 .... .... 0.0511787 .... .... .... .... - -! forecast error visualizatio -LET errform = leadform - leadform[N=1] -SHADE/I=10/J=10 errform -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 errform - VARIABLE : LEADFORM - LEADFORM[N=1] - DATA SET : Forecast series of 8 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST LEAD TIME (days)-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.2 319.6 350 380.5 410.9 441.3 471.8 502.2 532.6 563.1 593.5 624 654.4 684.8 715.3 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.0000000 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.0000000 .... .... 0.0260944 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.0000000 .... .... 0.0035425 .... .... -0.0477916 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.0000000 .... .... 0.0144893 .... .... -0.0422749 .... .... -0.1478512 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.0000000 .... .... -0.0064941 .... .... -0.0427771 .... .... -0.1726529 .... .... -0.1076697 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: 0.0000000 .... .... -0.0052009 .... .... -0.0637335 .... .... -0.0454184 .... .... -0.1706879 .... .... -0.1894025 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1951 / 18: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.0000000 .... .... 0.0034868 .... .... -0.0489395 .... .... -0.0964606 .... .... 0.0077750 .... .... -0.1252524 .... .... -0.0562568 .... .... .... .... .... - 17-AUG-1951 / 20: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - -! confirm the second variable works, too -LET fcst2fine = fcst_2[GT=($TF_LAG_T)@BIN,GF=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE fcst2fine = fcst_2[GT=TF_LAG_T1@BIN,GF=TF_CAL_F3@BIN] -LET lead2form = fcst2fine[GT(TF_TIMES)=($TF_CAL_T),GF(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE lead2form = fcst2fine[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] -LET err2form = lead2form - lead2form[N=1] -LIST/I=10/J=10/ORDER=FT/L=1:20/WIDTH=300 err2form - VARIABLE : LEAD2FORM - LEAD2FORM[N=1] - DATA SET : Forecast series of 8 datasets patterned on fcst_1 - FILENAME : my_fmrc - SUBSET : 24 by 20 points (FORECAST LEAD TIME (days)-TIME) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.2 319.6 350 380.5 410.9 441.3 471.8 502.2 532.6 563.1 593.5 624 654.4 684.8 715.3 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 - 16-JAN-1950 / 1: 0.0000000 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1950 / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1950 / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1950 / 4: 0.0000000 .... .... 0.0260944 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-MAY-1950 / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1950 / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUL-1950 / 7: 0.0000000 .... .... 0.0035425 .... .... -0.0477916 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-AUG-1950 / 8: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-SEP-1950 / 9: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-OCT-1950 / 10: 0.0000000 .... .... 0.0144893 .... .... -0.0422749 .... .... -0.1478512 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-NOV-1950 / 11: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-DEC-1950 / 12: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 16-JAN-1951 / 13: 0.0000000 .... .... -0.0064941 .... .... -0.0427771 .... .... -0.1726529 .... .... -0.1076697 .... .... .... .... .... .... .... .... .... .... .... - 15-FEB-1951 / 14: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-MAR-1951 / 15: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-APR-1951 / 16: 0.0000000 .... .... -0.0052009 .... .... -0.0637335 .... .... -0.0454184 .... .... -0.1706879 .... .... -0.1894025 .... .... .... .... .... .... .... .... - 18-MAY-1951 / 17: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 17-JUN-1951 / 18: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 18-JUL-1951 / 19: 0.0000000 .... .... 0.0034868 .... .... -0.0489395 .... .... -0.0964606 .... .... 0.0077750 .... .... -0.1252524 .... .... -0.0562568 .... .... .... .... .... - 17-AUG-1951 / 20: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - -! since the N=1 values are subtracted off, the +2 offset is removed from fcst_2 -! so this should give identically zero ... except that all of the subtractions -! lead to errors Order(e-16). To avoid benchmark results that differ from -! one machine to another, this is commented out -! STAT/I=10/J=10/L=1:20/BRIEF err2form - errform - -cancel data my_fmrc - -! agg where one dataset lacks one of the variables -fmrc/hide my_fmrc = tmp/fcst_7.nc, tmp/fcst_4.nc, tmp/fcst_5.nc, tmp/one_var_fcst_6.nc, tmp/fcst_3.nc -show data/members - currently SET data sets: - 6> my_fmrc (default) Forecast aggregation - name title I J K L M N - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:5 - (L=7:30) - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:15 - - Member datasets: - 6.1: tmp/fcst_3.nc - 6.2: tmp/fcst_4.nc - 6.3: tmp/fcst_5.nc - 6.4: tmp/one_var_fcst_6.nc - 6.5: tmp/fcst_7.nc -stat/l=1:20 fcst - - FIELD + FCST_ERROR - LONGITUDE: 139.5E to 160.5E - LATITUDE: 19.5N to 40.5N - Z: N/A - MODEL ELAPSED TIME (days): 0 to 608.74 - E: N/A - FORECAST: 17-MAY-1950 23:10 to 17-AUG-1951 12:27 - DATA SET: my_fmrc - - Total # of data points: 44100 (21*21*1*20*1*5) - # flagged as bad data: 0 - Minimum value: -0.99999 - Maximum value: 1.3581 - Mean value: 0.11141 (unweighted average) - Standard deviation: 0.54038 -cancel data my_fmrc - -! ... added 1/28/2016 -! the same agg, but the dataset name pulled implicitly from the script name -fmrc/hide tmp/fcst_7.nc, tmp/fcst_4.nc, tmp/fcst_5.nc, tmp/one_var_fcst_6.nc, tmp/fcst_3.nc -show data/brief - currently SET data sets: - 6> ./v6jnls/bn_aggregate_f.jnl (default) Forecast aggregation - -! the same agg using the very same files under a different name -fmrc/hide my_fmrc = tmp/fcst_7.nc, tmp/fcst_4.nc, tmp/fcst_5.nc, tmp/one_var_fcst_6.nc, tmp/fcst_3.nc -show data/full - currently SET data sets: - 6> ./v6jnls/bn_aggregate_f.jnl Forecast aggregation - Forecast series of 5 datasets patterned on fcst_3 - name title I J K L M N - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:5 - (L=7:30) - on grid GFN11 with -1.E+34 for missing data - X=139.5E:160.5E Y=19.5N:40.5N F=17-MAY-1950 23:10:17-AUG-1951 12:27 - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:15 - days since 01-JAN-1900 on grid FTI1 with -1.E+34 for missing data - F=17-JUN-1950 09:40:16-SEP-1951 22:56 - - time range: 15.218 to 715.27 - - Member datasets: - 6.1: tmp/fcst_3.nc - 6.2: tmp/fcst_4.nc - 6.3: tmp/fcst_5.nc - 6.4: tmp/one_var_fcst_6.nc - 6.5: tmp/fcst_7.nc - 7> my_fmrc (default) Forecast aggregation - Forecast series of 5 datasets patterned on fcst_3 - name title I J K L M N - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:5 - (L=7:30) - on grid GFN12 with -1.E+34 for missing data - X=139.5E:160.5E Y=19.5N:40.5N F=17-MAY-1950 23:10:17-AUG-1951 12:27 - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:15 - days since 01-JAN-1900 on grid FTI2 with -1.E+34 for missing data - F=17-JUN-1950 09:40:16-SEP-1951 22:56 - - time range: 15.218 to 715.27 - - Member datasets: - 7.1: tmp/fcst_3.nc - 7.2: tmp/fcst_4.nc - 7.3: tmp/fcst_5.nc - 7.4: tmp/one_var_fcst_6.nc - 7.5: tmp/fcst_7.nc - -! cancel a component dataset -- used in two aggregations -cancel data tmp/fcst_4.nc -show data - currently SET data sets: - -! re-define the same aggs again. -! then cancel one of them only and note that the hidden files remain -fmrc/hide tmp/fcst_7.nc, tmp/fcst_4.nc, tmp/fcst_5.nc, tmp/one_var_fcst_6.nc, tmp/fcst_3.nc -fmrc/hide my_fmrc = tmp/fcst_7.nc, tmp/fcst_4.nc, tmp/fcst_5.nc, tmp/one_var_fcst_6.nc, tmp/fcst_3.nc -cancel data my_fmrc -show data/br/hidden - currently SET data sets: - 1> tmp/fcst_7.nc - 2> tmp/fcst_4.nc - 3> tmp/fcst_5.nc - 4> tmp/one_var_fcst_6.nc - 5> tmp/fcst_3.nc - 6> ./v6jnls/bn_aggregate_f.jnl Forecast aggregation -cancel data bn_aggregate_f.jnl ! 3/16 bug fix (was "...sub") -show data - currently SET data sets: - -! agg where a LET/D variable is used to fill in a missing variable -use tmp/one_var_fcst_1.nc, tmp/one_var_fcst_6.nc -let/d=one_var_fcst_1.nc fcst_2 = fcst + 2 ! compute same value as file vars -let/d=one_var_fcst_6.nc fcst_2 = fcst + 2 ! compute same value as file vars -FMRC/hide my_fmrc_letd_6 = tmp/fcst_1.nc, tmp/fcst_2.nc, tmp/fcst_3.nc, tmp/fcst_4.nc, tmp/fcst_5.nc, tmp/one_var_fcst_6.nc, tmp/fcst_7.nc -FMRC/hide my_fmrc_letd_1 = tmp/one_var_fcst_1.nc, tmp/fcst_2.nc, tmp/fcst_3.nc, tmp/fcst_4.nc, tmp/fcst_5.nc, tmp/fcst_6.nc, tmp/fcst_7.nc -FMRC/hide my_fmrc = tmp/fcst_1.nc, tmp/fcst_2.nc, tmp/fcst_3.nc, tmp/fcst_4.nc, tmp/fcst_5.nc, tmp/fcst_6.nc, tmp/fcst_7.nc -show data/members - currently SET data sets: - 9> my_fmrc_letd_6 Forecast aggregation - name title I J K L M N - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:7 - (L=1:24) - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:21 - FCST_2 another variable 1:21 1:21 ... 1:24 ... 1:7 - (L=1:24) - - Member datasets: - 9.1: tmp/fcst_1.nc - 9.2: tmp/fcst_2.nc - 9.3: tmp/fcst_3.nc - 9.4: tmp/fcst_4.nc - 9.5: tmp/fcst_5.nc - 9.6: tmp/one_var_fcst_6.nc - 9.7: tmp/fcst_7.nc - 11> my_fmrc_letd_1 Forecast aggregation - name title I J K L M N - FCST_2 another variable 1:21 1:21 ... 1:24 ... 1:7 - (L=4:27) - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:21 - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:7 - (L=1:24) - - Member datasets: - 11.1: tmp/one_var_fcst_1.nc - 11.2: tmp/fcst_2.nc - 11.3: tmp/fcst_3.nc - 11.4: tmp/fcst_4.nc - 11.5: tmp/fcst_5.nc - 11.6: tmp/fcst_6.nc - 11.7: tmp/fcst_7.nc - 12> my_fmrc (default) Forecast aggregation - name title I J K L M N - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:7 - (L=1:24) - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:21 - FCST_2 another variable 1:21 1:21 ... 1:24 ... 1:7 - (L=1:24) - - Member datasets: - 12.1: tmp/fcst_1.nc - 12.2: tmp/fcst_2.nc - 12.3: tmp/fcst_3.nc - 12.4: tmp/fcst_4.nc - 12.5: tmp/fcst_5.nc - 12.6: tmp/fcst_6.nc - 12.7: tmp/fcst_7.nc -show data - currently SET data sets: - 9> my_fmrc_letd_6 Forecast aggregation - name title I J K L M N - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:7 - (L=1:24) - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:21 - FCST_2 another variable 1:21 1:21 ... 1:24 ... 1:7 - (L=1:24) - - 11> my_fmrc_letd_1 Forecast aggregation - name title I J K L M N - FCST_2 another variable 1:21 1:21 ... 1:24 ... 1:7 - (L=4:27) - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:21 - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:7 - (L=1:24) - - 12> my_fmrc (default) Forecast aggregation - name title I J K L M N - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:7 - (L=1:24) - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:21 - FCST_2 another variable 1:21 1:21 ... 1:24 ... 1:7 - (L=1:24) - -! should be all 0's: -list/i=10/j=10/order=ft/l=1:20/width=200 fcst_2[d=my_fmrc_letd_6] - fcst_2[d=my_fmrc] - VARIABLE : FCST_2[D=MY_FMRC_LETD_6] - FCST_2[D=MY_FMRC] - SUBSET : 7 by 20 points (FORECAST-MODEL ELAPSED TIME (days)) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 1950 1950 1950 1950 1951 1951 1951 - 1 2 3 4 5 6 7 - 15.2 / 1: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 45.7 / 2: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 76.1 / 3: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 106.5 / 4: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 137 / 5: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 167.4 / 6: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 197.8 / 7: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 228.3 / 8: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 258.7 / 9: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 289.2 / 10: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 319.6 / 11: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 350 / 12: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 380.5 / 13: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 410.9 / 14: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 441.3 / 15: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 471.8 / 16: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 502.2 / 17: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 532.6 / 18: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 563.1 / 19: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 593.5 / 20: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -! should be all 0's: -list/i=10/j=10/order=ft/l=1:20/width=200 fcst_2[d=my_fmrc_letd_6] - fcst_2[d=my_fmrc_letd_1] - VARIABLE : FCST_2[D=MY_FMRC_LETD_6] - FCST_2[D=MY_FMRC_LETD_1] - SUBSET : 7 by 20 points (FORECAST-MODEL ELAPSED TIME (days)) - LONGITUDE: 149E - LATITUDE : 29N - Initialization time increases across row. Verification time increases down page. - 1950 1950 1950 1950 1951 1951 1951 - 1 2 3 4 5 6 7 - 15.2 / 1: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 45.7 / 2: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 76.1 / 3: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 106.5 / 4: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 137 / 5: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 167.4 / 6: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 197.8 / 7: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 228.3 / 8: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 258.7 / 9: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 289.2 / 10: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 319.6 / 11: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 350 / 12: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 380.5 / 13: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 410.9 / 14: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 441.3 / 15: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 471.8 / 16: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 502.2 / 17: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 532.6 / 18: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 563.1 / 19: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 - 593.5 / 20: 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 -cancel data my_fmrc -cancel data my_fmrc_letd_1, my_fmrc_letd_6 - -! files already opened and not hidden remain open after aggregation -use tmp/fcst_1.nc, tmp/fcst_2.nc, tmp/fcst_3.nc, tmp/fcst_9.nc, tmp/fcst_10.nc, tmp/fcst_11.nc -fmrc my_fmrc = XCAT(files[I=6:10],{"6","1"}) ! without /HIDE -cancel data my_fmrc -show data/brief - currently SET data sets: - 1> tmp/fcst_1.nc - 2> tmp/fcst_2.nc - 3> tmp/fcst_3.nc - 4> tmp/fcst_9.nc - 5> tmp/fcst_10.nc - 6> tmp/fcst_11.nc -cancel data/all - -! ************************************* -! deliberate errors -set mode ignore - -! error - duplicate file -fmrc my_fmrc = tmp/fcst_1.nc, tmp/fcst_2.nc,tmp/fcst_2.nc,tmp/fcst_3.nc -SH DATA/BR/HIDDEN - currently SET data sets: - -! error - unknown dataset -fmrc my_fmrc = XCAT(files,"tmp/no_exist.nc") -SH DATA/BR/HIDDEN - currently SET data sets: - -! error - inserting forecasts at two consecutive steps implies too many gaps -fmrc my_fmrc = XCAT(files,"tmp/consecutive_month_fcst.nc") -SH DATA/BR/HIDDEN - currently SET data sets: - -! error - inserting out of sequence forecast -fmrc my_fmrc = XCAT(files,"tmp/irregular_start_time_fcst.nc") -SH DATA/BR/HIDDEN - currently SET data sets: - -set mode/last ignore - -GO bn_reset bn_aggregate_tef -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_aggregate_tef -GO bn_aggregate_tef -! bn_aggregate_tef.F -! 2/2016 *sh* -! 3/2016 - modified to test single point axis aggregations on Z axis -! 1/2017 *acm* changes in output due to backing off auto-detection of truemonth axes, tkt 2497 -! *acm*7/2017 0=success for SPAWN_STATUS -! 6/2018 *acm*Note SHOW DATA output changes: -! Auto-generated grid names change -! Ensembles include variables synthesized from dataset names and global atts of members - -! to avoid re-creating the test files include argument "0" as in -! yes? GO bn_aggregate_tef 0 - - -! exercise 6D aggregations: T, E, and F simultaneously - -! do not bother to echo the creation of files and the definitions of the -! many time aggregations -CANCEL MODE VERIFY - -show data/members/br - currently SET data sets: - 1> t_f01_e1 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e1_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e1_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e1_t3.nc - - 2> t_f01_e2 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e2_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e2_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e2_t3.nc - - 3> t_f01_e3 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e3_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e3_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e3_t3.nc - - 4> t_f01_e4 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e4_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e4_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e4_t3.nc - - 5> t_f01_e5 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e5_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e5_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e5_t3.nc - - 6> t_f02_e1 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e1_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e1_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e1_t3.nc - - 7> t_f02_e2 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e2_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e2_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e2_t3.nc - - 8> t_f02_e3 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e3_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e3_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e3_t3.nc - - 9> t_f02_e4 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e4_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e4_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e4_t3.nc - - 10> t_f02_e5 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e5_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e5_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e5_t3.nc - - 11> t_f03_e1 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e1_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e1_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e1_t3.nc - - 12> t_f03_e2 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e2_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e2_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e2_t3.nc - - 13> t_f03_e3 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e3_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e3_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e3_t3.nc - - 14> t_f03_e4 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e4_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e4_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e4_t3.nc - - 15> t_f03_e5 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e5_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e5_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e5_t3.nc - - 16> t_f04_e1 - time-dependent data files: -17-OCT-1950 03:36 -> 16-SEP-1951 22:56 tmp/f04_e1_t1.nc -17-OCT-1951 09:25 -> 16-SEP-1952 04:45 tmp/f04_e1_t2.nc -16-OCT-1952 15:14 -> 16-SEP-1953 10:34 tmp/f04_e1_t3.nc - - 17> t_f04_e2 - time-dependent data files: -17-OCT-1950 03:36 -> 16-SEP-1951 22:56 tmp/f04_e2_t1.nc -17-OCT-1951 09:25 -> 16-SEP-1952 04:45 tmp/f04_e2_t2.nc -16-OCT-1952 15:14 -> 16-SEP-1953 10:34 tmp/f04_e2_t3.nc - - 18> t_f04_e3 - time-dependent data files: -17-OCT-1950 03:36 -> 16-SEP-1951 22:56 tmp/f04_e3_t1.nc -17-OCT-1951 09:25 -> 16-SEP-1952 04:45 tmp/f04_e3_t2.nc -16-OCT-1952 15:14 -> 16-SEP-1953 10:34 tmp/f04_e3_t3.nc - - 19> t_f04_e4 - time-dependent data files: -17-OCT-1950 03:36 -> 16-SEP-1951 22:56 tmp/f04_e4_t1.nc -17-OCT-1951 09:25 -> 16-SEP-1952 04:45 tmp/f04_e4_t2.nc -16-OCT-1952 15:14 -> 16-SEP-1953 10:34 tmp/f04_e4_t3.nc - - 20> t_f04_e5 - time-dependent data files: -17-OCT-1950 03:36 -> 16-SEP-1951 22:56 tmp/f04_e5_t1.nc -17-OCT-1951 09:25 -> 16-SEP-1952 04:45 tmp/f04_e5_t2.nc -16-OCT-1952 15:14 -> 16-SEP-1953 10:34 tmp/f04_e5_t3.nc - - 21> t_f05_e1 - time-dependent data files: -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f05_e1_t1.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f05_e1_t2.nc -15-JAN-1953 22:42 -> 16-DEC-1953 18:02 tmp/f05_e1_t3.nc - - 22> t_f05_e2 - time-dependent data files: -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f05_e2_t1.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f05_e2_t2.nc -15-JAN-1953 22:42 -> 16-DEC-1953 18:02 tmp/f05_e2_t3.nc - - 23> t_f05_e3 - time-dependent data files: -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f05_e3_t1.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f05_e3_t2.nc -15-JAN-1953 22:42 -> 16-DEC-1953 18:02 tmp/f05_e3_t3.nc - - 24> t_f05_e4 - time-dependent data files: -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f05_e4_t1.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f05_e4_t2.nc -15-JAN-1953 22:42 -> 16-DEC-1953 18:02 tmp/f05_e4_t3.nc - - 25> t_f05_e5 - time-dependent data files: -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f05_e5_t1.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f05_e5_t2.nc -15-JAN-1953 22:42 -> 16-DEC-1953 18:02 tmp/f05_e5_t3.nc - - 26> t_f06_e1 - time-dependent data files: -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f06_e1_t1.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f06_e1_t2.nc -17-APR-1953 06:09 -> 18-MAR-1954 01:29 tmp/f06_e1_t3.nc - - 27> t_f06_e2 - time-dependent data files: -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f06_e2_t1.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f06_e2_t2.nc -17-APR-1953 06:09 -> 18-MAR-1954 01:29 tmp/f06_e2_t3.nc - - 28> t_f06_e3 - time-dependent data files: -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f06_e3_t1.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f06_e3_t2.nc -17-APR-1953 06:09 -> 18-MAR-1954 01:29 tmp/f06_e3_t3.nc - - 29> t_f06_e4 - time-dependent data files: -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f06_e4_t1.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f06_e4_t2.nc -17-APR-1953 06:09 -> 18-MAR-1954 01:29 tmp/f06_e4_t3.nc - - 30> t_f06_e5 - time-dependent data files: -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f06_e5_t1.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f06_e5_t2.nc -17-APR-1953 06:09 -> 18-MAR-1954 01:29 tmp/f06_e5_t3.nc - - 31> t_f07_e1 - time-dependent data files: -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f07_e1_t1.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f07_e1_t2.nc -17-JUL-1953 13:36 -> 17-JUN-1954 08:56 tmp/f07_e1_t3.nc - - 32> t_f07_e2 - time-dependent data files: -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f07_e2_t1.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f07_e2_t2.nc -17-JUL-1953 13:36 -> 17-JUN-1954 08:56 tmp/f07_e2_t3.nc - - 33> t_f07_e3 - time-dependent data files: -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f07_e3_t1.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f07_e3_t2.nc -17-JUL-1953 13:36 -> 17-JUN-1954 08:56 tmp/f07_e3_t3.nc - - 34> t_f07_e4 - time-dependent data files: -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f07_e4_t1.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f07_e4_t2.nc -17-JUL-1953 13:36 -> 17-JUN-1954 08:56 tmp/f07_e4_t3.nc - - 35> t_f07_e5 - time-dependent data files: -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f07_e5_t1.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f07_e5_t2.nc -17-JUL-1953 13:36 -> 17-JUN-1954 08:56 tmp/f07_e5_t3.nc - - 36> t_f08_e1 - time-dependent data files: -17-OCT-1951 09:25 -> 16-SEP-1952 04:45 tmp/f08_e1_t1.nc -16-OCT-1952 15:14 -> 16-SEP-1953 10:34 tmp/f08_e1_t2.nc -16-OCT-1953 21:04 -> 16-SEP-1954 16:24 tmp/f08_e1_t3.nc - - 37> t_f08_e2 - time-dependent data files: -17-OCT-1951 09:25 -> 16-SEP-1952 04:45 tmp/f08_e2_t1.nc -16-OCT-1952 15:14 -> 16-SEP-1953 10:34 tmp/f08_e2_t2.nc -16-OCT-1953 21:04 -> 16-SEP-1954 16:24 tmp/f08_e2_t3.nc - - 38> t_f08_e3 - time-dependent data files: -17-OCT-1951 09:25 -> 16-SEP-1952 04:45 tmp/f08_e3_t1.nc -16-OCT-1952 15:14 -> 16-SEP-1953 10:34 tmp/f08_e3_t2.nc -16-OCT-1953 21:04 -> 16-SEP-1954 16:24 tmp/f08_e3_t3.nc - - 39> t_f08_e4 - time-dependent data files: -17-OCT-1951 09:25 -> 16-SEP-1952 04:45 tmp/f08_e4_t1.nc -16-OCT-1952 15:14 -> 16-SEP-1953 10:34 tmp/f08_e4_t2.nc -16-OCT-1953 21:04 -> 16-SEP-1954 16:24 tmp/f08_e4_t3.nc - - 40> t_f08_e5 - time-dependent data files: -17-OCT-1951 09:25 -> 16-SEP-1952 04:45 tmp/f08_e5_t1.nc -16-OCT-1952 15:14 -> 16-SEP-1953 10:34 tmp/f08_e5_t2.nc -16-OCT-1953 21:04 -> 16-SEP-1954 16:24 tmp/f08_e5_t3.nc - - 41> t_f09_e1 - time-dependent data files: -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f09_e1_t1.nc -15-JAN-1953 22:42 -> 16-DEC-1953 18:02 tmp/f09_e1_t2.nc -16-JAN-1954 04:31 -> 16-DEC-1954 23:51 tmp/f09_e1_t3.nc - - 42> t_f09_e2 - time-dependent data files: -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f09_e2_t1.nc -15-JAN-1953 22:42 -> 16-DEC-1953 18:02 tmp/f09_e2_t2.nc -16-JAN-1954 04:31 -> 16-DEC-1954 23:51 tmp/f09_e2_t3.nc - - 43> t_f09_e3 - time-dependent data files: -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f09_e3_t1.nc -15-JAN-1953 22:42 -> 16-DEC-1953 18:02 tmp/f09_e3_t2.nc -16-JAN-1954 04:31 -> 16-DEC-1954 23:51 tmp/f09_e3_t3.nc - - 44> t_f09_e4 - time-dependent data files: -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f09_e4_t1.nc -15-JAN-1953 22:42 -> 16-DEC-1953 18:02 tmp/f09_e4_t2.nc -16-JAN-1954 04:31 -> 16-DEC-1954 23:51 tmp/f09_e4_t3.nc - - 45> t_f09_e5 - time-dependent data files: -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f09_e5_t1.nc -15-JAN-1953 22:42 -> 16-DEC-1953 18:02 tmp/f09_e5_t2.nc -16-JAN-1954 04:31 -> 16-DEC-1954 23:51 tmp/f09_e5_t3.nc - - 46> t_f10_e1 - time-dependent data files: -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f10_e1_t1.nc -17-APR-1953 06:09 -> 18-MAR-1954 01:29 tmp/f10_e1_t2.nc -17-APR-1954 11:58 -> 18-MAR-1955 07:18 tmp/f10_e1_t3.nc - - 47> t_f10_e2 - time-dependent data files: -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f10_e2_t1.nc -17-APR-1953 06:09 -> 18-MAR-1954 01:29 tmp/f10_e2_t2.nc -17-APR-1954 11:58 -> 18-MAR-1955 07:18 tmp/f10_e2_t3.nc - - 48> t_f10_e3 - time-dependent data files: -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f10_e3_t1.nc -17-APR-1953 06:09 -> 18-MAR-1954 01:29 tmp/f10_e3_t2.nc -17-APR-1954 11:58 -> 18-MAR-1955 07:18 tmp/f10_e3_t3.nc - - 49> t_f10_e4 - time-dependent data files: -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f10_e4_t1.nc -17-APR-1953 06:09 -> 18-MAR-1954 01:29 tmp/f10_e4_t2.nc -17-APR-1954 11:58 -> 18-MAR-1955 07:18 tmp/f10_e4_t3.nc - - 50> t_f10_e5 - time-dependent data files: -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f10_e5_t1.nc -17-APR-1953 06:09 -> 18-MAR-1954 01:29 tmp/f10_e5_t2.nc -17-APR-1954 11:58 -> 18-MAR-1955 07:18 tmp/f10_e5_t3.nc - - 51> t_f11_e1 - time-dependent data files: -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f11_e1_t1.nc -17-JUL-1953 13:36 -> 17-JUN-1954 08:56 tmp/f11_e1_t2.nc -17-JUL-1954 19:25 -> 17-JUN-1955 14:46 tmp/f11_e1_t3.nc - - 52> t_f11_e2 - time-dependent data files: -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f11_e2_t1.nc -17-JUL-1953 13:36 -> 17-JUN-1954 08:56 tmp/f11_e2_t2.nc -17-JUL-1954 19:25 -> 17-JUN-1955 14:46 tmp/f11_e2_t3.nc - - 53> t_f11_e3 - time-dependent data files: -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f11_e3_t1.nc -17-JUL-1953 13:36 -> 17-JUN-1954 08:56 tmp/f11_e3_t2.nc -17-JUL-1954 19:25 -> 17-JUN-1955 14:46 tmp/f11_e3_t3.nc - - 54> t_f11_e4 - time-dependent data files: -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f11_e4_t1.nc -17-JUL-1953 13:36 -> 17-JUN-1954 08:56 tmp/f11_e4_t2.nc -17-JUL-1954 19:25 -> 17-JUN-1955 14:46 tmp/f11_e4_t3.nc - - 55> t_f11_e5 - time-dependent data files: -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f11_e5_t1.nc -17-JUL-1953 13:36 -> 17-JUN-1954 08:56 tmp/f11_e5_t2.nc -17-JUL-1954 19:25 -> 17-JUN-1955 14:46 tmp/f11_e5_t3.nc - - 56> t_f04_e3_1v (default) - time-dependent data files: -17-OCT-1950 03:36 -> 16-SEP-1951 22:56 tmp/f04_e3_t1_1v.nc -17-OCT-1951 09:25 -> 16-SEP-1952 04:45 tmp/f04_e3_t2_1v.nc -16-OCT-1952 15:14 -> 16-SEP-1953 10:34 tmp/f04_e3_t3_1v.nc - - -! should share the same time axis -show grid fcst[d=t_f01_e1] - GRID GIP1 - name axis # pts start end subset - XAX LONGITUDE 21mr 140E 160E full - YAX LATITUDE 11 r 10N 20N full - ZAX1 Z (m) 1 r 250 250 full - MONTHLY3 TIME 36 r 16-JAN-1950 05:14 16-DEC-1952 12:13 full -show grid fcst[d=t_f01_e2] - GRID GIP1 - name axis # pts start end subset - XAX LONGITUDE 21mr 140E 160E full - YAX LATITUDE 11 r 10N 20N full - ZAX1 Z (m) 1 r 250 250 full - MONTHLY3 TIME 36 r 16-JAN-1950 05:14 16-DEC-1952 12:13 full - -! ======== TEST SET 1: aggregate E first, then F - -! define te aggregations -- only the first 5 remain unhidden -ENSEMBLE te_f01 = t_f01_e1, t_f01_e2, t_f01_e3, t_f01_e4, t_f01_e5 -ENSEMBLE/hide te_f02 = t_f02_e1, t_f02_e2, t_f02_e3, t_f02_e4, t_f02_e5 -ENSEMBLE/hide te_f03 = t_f03_e1, t_f03_e2, t_f03_e3, t_f03_e4, t_f03_e5 -ENSEMBLE/hide te_f04 = t_f04_e1, t_f04_e2, t_f04_e3, t_f04_e4, t_f04_e5 -ENSEMBLE/hide te_f05 = t_f05_e1, t_f05_e2, t_f05_e3, t_f05_e4, t_f05_e5 -ENSEMBLE/hide te_f06 = t_f06_e1, t_f06_e2, t_f06_e3, t_f06_e4, t_f06_e5 -ENSEMBLE/hide te_f07 = t_f07_e1, t_f07_e2, t_f07_e3, t_f07_e4, t_f07_e5 -ENSEMBLE/hide te_f08 = t_f08_e1, t_f08_e2, t_f08_e3, t_f08_e4, t_f08_e5 -ENSEMBLE/hide te_f09 = t_f09_e1, t_f09_e2, t_f09_e3, t_f09_e4, t_f09_e5 -ENSEMBLE/hide te_f10 = t_f10_e1, t_f10_e2, t_f10_e3, t_f10_e4, t_f10_e5 -ENSEMBLE/hide te_f11 = t_f11_e1, t_f11_e2, t_f11_e3, t_f11_e4, t_f11_e5 -SHOW DATA/brief - currently SET data sets: - 1> t_f01_e1 - 2> t_f01_e2 - 3> t_f01_e3 - 4> t_f01_e4 - 5> t_f01_e5 - 56> t_f04_e3_1v - 57> te_f01 Ensemble aggregation - 58> te_f02 Ensemble aggregation - 59> te_f03 Ensemble aggregation - 60> te_f04 Ensemble aggregation - 61> te_f05 Ensemble aggregation - 62> te_f06 Ensemble aggregation - 63> te_f07 Ensemble aggregation - 64> te_f08 Ensemble aggregation - 65> te_f09 Ensemble aggregation - 66> te_f10 Ensemble aggregation - 67> te_f11 (default) Ensemble aggregation -! Note the clean_draconian script removes the word HISTORY from the following outputs -SHOW DATA/FULL te_f11 - currently SET data sets: - 67> te_f11 (default) Ensemble aggregation - Ensemble series of 5 datasets patterned on t_f11_e1 - name title I J K L M N - FCST some variable 1:21 1:11 1:1 1:36 1:5 ... - (L=31:42) - on grid GEN111 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:5.5 - FCST_2 another variable 1:21 1:11 1:1 1:36 1:5 ... - (L=31:42) - on grid GEN111 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:5.5 - REALIZATION - 1 ... ... ... ... 1:5 ... - on grid GGE11 with -1.E+34 for missing data - E=0.5:5.5 - ------------------------------ - MEMBER_DSET - Member dataset names in Ensembl ... ... ... ... 1:5 ... - Data type = TEXT - on grid GGE11 with -1.E+34 for missing data - E=0.5:5.5 - HISTORY Global Att *history* in Ensembl ... ... ... ... 1:5 ... - Data type = TEXT - on grid GGE11 with -1.E+34 for missing data - E=0.5:5.5 - CONVENTIONS - Global Att *Conventions* in Ens ... ... ... ... 1:5 ... - Data type = TEXT - on grid GGE11 with -1.E+34 for missing data - E=0.5:5.5 - INVESTIGATOR - Global Att *INVESTIGATOR* in En ... ... ... ... 1:5 ... - Data type = TEXT - on grid GGE11 with -1.E+34 for missing data - E=0.5:5.5 - DESCRIPTION - Global Att *DESCRIPTION* in Ens ... ... ... ... 1:5 ... - Data type = TEXT - on grid GGE11 with -1.E+34 for missing data - E=0.5:5.5 - - time range: 17-JUL-1952 07:47 to 17-JUN-1955 14:46 - - Member datasets: - 67.1: t_f11_e1 - 67.2: t_f11_e2 - 67.3: t_f11_e3 - 67.4: t_f11_e4 - 67.5: t_f11_e5 -SHOW DATA/ATT te_f11 ! notice the promotion of fcst.im_everywhere - currently SET data sets: - 67> te_f11 (default) Ensemble aggregation - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . aggregate name CHAR 6 F te_f11 - - FCST DOUBLE long_name CHAR 13 T some variable - missing_value DOUBLE 1 T -1.E+34 - im_everywhere CHAR 13 F so promote me - long_name_mod CHAR 7 F L=31:42 - - FCST_2 DOUBLE long_name CHAR 16 T another variable - missing_value DOUBLE 1 T -1.E+34 - long_name_mod CHAR 7 F L=31:42 - - REALIZATION DOUBLE long_name CHAR 1 T 1 - missing_value DOUBLE 1 T -1.E+34 - - member_dset CHAR long_name CHAR 32 T Member dataset names in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - history CHAR long_name CHAR 32 T Global Att *history* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - Conventions CHAR long_name CHAR 36 T Global Att *Conventions* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - INVESTIGATOR CHAR long_name CHAR 37 T Global Att *INVESTIGATOR* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - DESCRIPTION CHAR long_name CHAR 36 T Global Att *DESCRIPTION* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - -list investigator, description - DATA SET: te_f11 - Ensemble series of 5 datasets patterned on t_f11_e1 - E (realization): 0.5 to 5.5 - Column 1: INVESTIGATOR is Global Att *INVESTIGATOR* in Ensemble - Column 2: DESCRIPTION is Global Att *DESCRIPTION* in Ensemble - INVESTIG DESCRIPTION -1 / 1: "Ferret developers" "Data in tseries aggregations T=1, Fdate=31, Ens=1" -2 / 2: "Ferret developers" "Data in tseries aggregations T=1, Fdate=31, Ens=2" -3 / 3: "Ferret developers" "Data in tseries aggregations T=1, Fdate=31, Ens=3" -4 / 4: "Ferret developers" "Data in tseries aggregations T=1, Fdate=31, Ens=4" -5 / 5: "Ferret developers" "Data in tseries aggregations T=1, Fdate=31, Ens=5" - -set data te_f04 -list investigator, description - DATA SET: te_f04 - Ensemble series of 5 datasets patterned on t_f04_e1 - E (realization): 0.5 to 5.5 - Column 1: INVESTIGATOR is Global Att *INVESTIGATOR* in Ensemble - Column 2: DESCRIPTION is Global Att *DESCRIPTION* in Ensemble - INVESTIG DESCRIPTION -1 / 1: "Ferret developers" "Data in tseries aggregations T=1, Fdate=10, Ens=1" -2 / 2: "Ferret developers" "Data in tseries aggregations T=1, Fdate=10, Ens=2" -3 / 3: "Ferret developers" "Data in tseries aggregations T=1, Fdate=10, Ens=3" -4 / 4: "Ferret developers" "Data in tseries aggregations T=1, Fdate=10, Ens=4" -5 / 5: "Ferret developers" "Data in tseries aggregations T=1, Fdate=10, Ens=5" - - -! define tef aggregation -FMRC/HIDE tef = te_f01, te_f02, te_f03, te_f04, te_f05, te_f06, te_f07, te_f08, te_f09, te_f10, te_f11 -SHOW DATA/brief/members - currently SET data sets: - 1> t_f01_e1 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e1_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e1_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e1_t3.nc - - 2> t_f01_e2 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e2_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e2_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e2_t3.nc - - 3> t_f01_e3 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e3_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e3_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e3_t3.nc - - 4> t_f01_e4 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e4_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e4_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e4_t3.nc - - 5> t_f01_e5 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e5_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e5_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e5_t3.nc - - 56> t_f04_e3_1v - time-dependent data files: -17-OCT-1950 03:36 -> 16-SEP-1951 22:56 tmp/f04_e3_t1_1v.nc -17-OCT-1951 09:25 -> 16-SEP-1952 04:45 tmp/f04_e3_t2_1v.nc -16-OCT-1952 15:14 -> 16-SEP-1953 10:34 tmp/f04_e3_t3_1v.nc - - 68> tef (default) Forecast aggregation - Member datasets: - 68.1 : te_f01 - 68.2 : te_f02 - 68.3 : te_f03 - 68.4 : te_f04 - 68.5 : te_f05 - 68.6 : te_f06 - 68.7 : te_f07 - 68.8 : te_f08 - 68.9 : te_f09 - 68.10: te_f10 - 68.11: te_f11 -show data/full tef - currently SET data sets: - 68> tef (default) Forecast aggregation - Forecast series of 11 datasets patterned on te_f01 - name title I J K L M N - FCST some variable 1:21 1:11 1:1 1:36 1:5 1:11 - (L=1:12) - on grid GFN1 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:5.5 F=16-NOV-1949 08:16:16-AUG-1952 18:16 - TF_TIMES Forecast time step matrix ... ... ... 1:36 ... 1:33 - days since 01-JAN-1900 on grid FTI11 with -1.E+34 for missing data - F=16-DEC-1949 18:45:16-SEP-1952 04:45 - FCST_2 another variable 1:21 1:11 1:1 1:36 1:5 1:11 - (L=1:12) - on grid GFN1 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:5.5 F=16-NOV-1949 08:16:16-AUG-1952 18:16 - - time range: 15.218 to 1080.5 - - Member datasets: - 68.1 : te_f01 - 68.2 : te_f02 - 68.3 : te_f03 - 68.4 : te_f04 - 68.5 : te_f05 - 68.6 : te_f06 - 68.7 : te_f07 - 68.8 : te_f08 - 68.9 : te_f09 - 68.10: te_f10 - 68.11: te_f11 - -! simplest acess -- compact form -- just demonstrate it doesn't fail -stat/brief fcst[i=11:12, j=5:6, l=31:32, m=1:2, n=5:6] - - Total # of data points: 32 (2*2*1*2*2*2) - # flagged as bad data: 0 - Minimum value: 224.9 - Maximum value: 237.88 - Mean value: 231.38 (unweighted average) - -DEFINE SYMBOL TF_CAL_T = `fcst._cal_t_ax` - !-> DEFINE SYMBOL TF_CAL_T = TF_CAL_T -DEFINE SYMBOL TF_LAG_F = `fcst._lag_f_ax` - !-> DEFINE SYMBOL TF_LAG_F = TF_LAG_F -DEFINE SYMBOL TF_LAG_T = `fcst._lag_t_ax` - !-> DEFINE SYMBOL TF_LAG_T = TF_LAG_T2 -DEFINE SYMBOL TF_CAL_F = `fcst._cal_f_ax` - !-> DEFINE SYMBOL TF_CAL_F = TF_CAL_F1 - -! regrid to TF_.... axes -let fcstfine = fcst[gt=($TF_LAG_T)@BIN,gf=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE fcstfine = fcst[gt=TF_LAG_T2@BIN,gf=TF_CAL_F1@BIN] - -! diagonal forecast view of ensemble mean -let diag_fcst = fcstfine[gt(TF_TIMES)=($TF_CAL_T),gf(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE diag_fcst = fcstfine[gt(TF_TIMES)=TF_CAL_T,gf(TF_TIMES)=TF_LAG_F] -shade/x=150E/y=15n diag_fcst[m=1:5@ave] - -! difference between the mean and the middle is zero within computational error -let epsilon = 1 / 2^50 ! 52 mantissa bits in a double -say using epsilon = `epsilon` - !-> MESSAGE/CONTINUE using epsilon = 8.881784197001252E-16 -using epsilon = 8.881784197001252E-16 -let rel_err = (diag_fcst[m=1:5@ave]-diag_fcst[m=3])/diag_fcst[m=3] -stat/brief/x=150E/y=15n IF ABS(rel_err) LT epsilon THEN 0.0 ELSE rel_err - - Total # of data points: 2376 (1*1*1*66*1*36) - # flagged as bad data: 1980 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - -! warning message indicates fcst_2 is missing from a file -ENSEMBLE te_f04_1v = t_f04_e1, t_f04_e2, t_f04_e3_1v, t_f04_e4, t_f04_e5 -SHOW DATA/ATT t_f04_e3_1v ! note atts im_everwhere vs im_not_everwhere - currently SET data sets: - 56> t_f04_e3_1v - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(XAX) DOUBLE point_spacing CHAR 4 T even - axis CHAR 1 T X - modulo DOUBLE 1 T 360 - units CHAR 12 T degrees_east - standard_name CHAR 9 F longitude - orig_file_axname - CHAR 3 F XAX - -(YAX) DOUBLE point_spacing CHAR 4 T even - axis CHAR 1 T Y - units CHAR 13 T degrees_north - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 3 F YAX - -(ZAX1) DOUBLE point_spacing CHAR 4 T even - axis CHAR 1 T Z - positive CHAR 2 T up - units CHAR 1 T m - standard_name CHAR 8 F altitude - orig_file_axname - CHAR 3 F ZAX - -(MONTHLY14) DOUBLE units CHAR 21 T days since 1900-01-01 - axis CHAR 1 T T - time_origin CHAR 11 T 01-JAN-1900 - standard_name CHAR 4 F time - orig_file_axname - CHAR 7 F MONTHLY - - FCST DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 13 T some variable - im_everywhere CHAR 13 F so promote me - im_not_everywhere - CHAR 19 F so don't promote me - long_name_mod CHAR 7 F L=10:21 - - REALIZATION DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 1 T 3 - -SHOW DATA/ATT te_f04_1v ! note atts im_everwhere vs im_not_everwhere - currently SET data sets: - 69> te_f04_1v (default) Ensemble aggregation - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . aggregate name CHAR 9 F te_f04_1v - - FCST DOUBLE long_name CHAR 13 T some variable - missing_value DOUBLE 1 T -1.E+34 - im_everywhere CHAR 13 F so promote me - long_name_mod CHAR 7 F L=10:21 - - REALIZATION DOUBLE long_name CHAR 1 T 1 - missing_value DOUBLE 1 T -1.E+34 - - member_dset CHAR long_name CHAR 32 T Member dataset names in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - history CHAR long_name CHAR 32 T Global Att *history* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - Conventions CHAR long_name CHAR 36 T Global Att *Conventions* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - INVESTIGATOR CHAR long_name CHAR 37 T Global Att *INVESTIGATOR* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - DESCRIPTION CHAR long_name CHAR 36 T Global Att *DESCRIPTION* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - -! define fcst_2 as a LET/D variable and then do same calc -let/d=t_f04_e3_1v fcst_2 = fcst + 2 -show data/br t_f04_e3_1v - currently SET data sets: - 56> t_f04_e3_1v -ENSEMBLE te_f04_letd = t_f04_e1, t_f04_e2, t_f04_e3_1v, t_f04_e4, t_f04_e5 -FMRC/hide tef_letd = te_f01, te_f02, te_f03, te_f04_letd, te_f05, te_f06, te_f07, te_f08, te_f09, te_f10, te_f11 -let fcst2fine = fcst_2[gt=($TF_LAG_T)@BIN,gf=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE fcst2fine = fcst_2[gt=TF_LAG_T2@BIN,gf=TF_CAL_F1@BIN] -let diag_fcst_2 = fcst2fine[gt(TF_TIMES)=($TF_CAL_T),gf(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE diag_fcst_2 = fcst2fine[gt(TF_TIMES)=TF_CAL_T,gf(TF_TIMES)=TF_LAG_F] -let rel_err_2 = (diag_fcst_2[m=1:5@ave]-diag_fcst_2[m=3])/diag_fcst_2[m=3] - -! can run in diagnostic mode and look for "eval FCST_2" to confirm LET/D eval -set data tef_letd -stat/brief/x=150E/y=15n diag_fcst_2 - - Total # of data points: 11880 (1*1*1*66*5*36) - # flagged as bad data: 9900 - Minimum value: 226.46 - Maximum value: 277.79 - Mean value: 252.12 (unweighted average) -stat/brief/x=150E/y=15n IF ABS(rel_err_2) LT epsilon THEN 0.0 ELSE rel_err_2 - - Total # of data points: 2376 (1*1*1*66*1*36) - # flagged as bad data: 1980 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - -! demonstrate redefining the LET/D variable without re-defining the agg -! Look at the column 3 ("e3"), row 4 ("f04") to see 2.110 => 4.110 -list/x=150E/y=15n/L=10 fcst_2 - VARIABLE : another variable - DATA SET : Forecast series of 11 datasets patterned on te_f01 - FILENAME : tef_letd - SUBSET : 5 by 11 points (E (realization)-FORECAST) - LONGITUDE: 150E - LATITUDE : 15N - Z (m) : 250 - MODEL ELAPSED TIME (days): 289.15 - Initialization time increases down page. - 1 2 3 4 5 - 1 2 3 4 5 - 01-JAN-1950 / 1: 227.0551 239.5582 252.0613 264.5643 277.0674 - 02-APR-1950 / 2: 227.0918 239.5969 252.1020 264.6071 277.1122 - 02-JUL-1950 / 3: 227.0848 239.5895 252.0942 264.5989 277.1037 - 01-OCT-1950 / 4: 227.0755 239.5797 252.0839 264.5881 277.0923 - 01-JAN-1951 / 5: 227.1443 239.6523 252.1603 264.6683 277.1763 - 02-APR-1951 / 6: 227.1108 239.6170 252.1232 264.6293 277.1355 - 02-JUL-1951 / 7: 227.1580 239.6668 252.1755 264.6843 277.1931 - 02-OCT-1951 / 8: 227.1996 239.7107 252.2218 264.7328 277.2439 - 01-JAN-1952 / 9: 227.1432 239.6512 252.1592 264.6671 277.1751 - 01-APR-1952 / 10: 227.1533 239.6618 252.1703 264.6788 277.1873 - 02-JUL-1952 / 11: 227.1644 239.6735 252.1827 264.6918 277.2009 -let/d=t_f04_e3_1v fcst_2 = fcst + 2 + 2 ! add 2 -list/x=150E/y=15n/L=10 fcst_2 - VARIABLE : another variable - DATA SET : Forecast series of 11 datasets patterned on te_f01 - FILENAME : tef_letd - SUBSET : 5 by 11 points (E (realization)-FORECAST) - LONGITUDE: 150E - LATITUDE : 15N - Z (m) : 250 - MODEL ELAPSED TIME (days): 289.15 - Initialization time increases down page. - 1 2 3 4 5 - 1 2 3 4 5 - 01-JAN-1950 / 1: 227.0551 239.5582 252.0613 264.5643 277.0674 - 02-APR-1950 / 2: 227.0918 239.5969 252.1020 264.6071 277.1122 - 02-JUL-1950 / 3: 227.0848 239.5895 252.0942 264.5989 277.1037 - 01-OCT-1950 / 4: 227.0755 239.5797 254.0839 264.5881 277.0923 - 01-JAN-1951 / 5: 227.1443 239.6523 252.1603 264.6683 277.1763 - 02-APR-1951 / 6: 227.1108 239.6170 252.1232 264.6293 277.1355 - 02-JUL-1951 / 7: 227.1580 239.6668 252.1755 264.6843 277.1931 - 02-OCT-1951 / 8: 227.1996 239.7107 252.2218 264.7328 277.2439 - 01-JAN-1952 / 9: 227.1432 239.6512 252.1592 264.6671 277.1751 - 01-APR-1952 / 10: 227.1533 239.6618 252.1703 264.6788 277.1873 - 02-JUL-1952 / 11: 227.1644 239.6735 252.1827 264.6918 277.2009 - -! agg members may have unique contexts on scalar axes of the aggregation -! ... here the LET/D var is normal to Z -let/d=t_f04_e3_1v fcst_2 = X[gx=fcst]+Y[gy=fcst]+T[gt=fcst] + 1000 -list/x=150E/y=15n/L=10 fcst_2 - VARIABLE : another variable - DATA SET : Forecast series of 11 datasets patterned on te_f01 - FILENAME : tef_letd - SUBSET : 5 by 11 points (E (realization)-FORECAST) - LONGITUDE: 150E - LATITUDE : 15N - Z (m) : 250 - MODEL ELAPSED TIME (days): 289.15 - Initialization time increases down page. - 1 2 3 4 5 - 1 2 3 4 5 - 01-JAN-1950 / 1: 227.06 239.56 252.06 264.56 277.07 - 02-APR-1950 / 2: 227.09 239.60 252.10 264.61 277.11 - 02-JUL-1950 / 3: 227.08 239.59 252.09 264.60 277.10 - 01-OCT-1950 / 4: 227.08 239.58 19990.08 264.59 277.09 - 01-JAN-1951 / 5: 227.14 239.65 252.16 264.67 277.18 - 02-APR-1951 / 6: 227.11 239.62 252.12 264.63 277.14 - 02-JUL-1951 / 7: 227.16 239.67 252.18 264.68 277.19 - 02-OCT-1951 / 8: 227.20 239.71 252.22 264.73 277.24 - 01-JAN-1952 / 9: 227.14 239.65 252.16 264.67 277.18 - 01-APR-1952 / 10: 227.15 239.66 252.17 264.68 277.19 - 02-JUL-1952 / 11: 227.16 239.67 252.18 264.69 277.20 - -! ... here the LET/D var is averaged to a point in a pre-existing agg -LET some_Z_function = Z[Z=0:100:10] + 1000 -let/d=t_f04_e3_1v fcst_2 = X[gx=fcst]+Y[gy=fcst]+T[gt=fcst]+some_Z_function[Z=10:60@ave] -list/x=150E/y=15n/L=10 fcst_2 - VARIABLE : another variable - DATA SET : Forecast series of 11 datasets patterned on te_f01 - FILENAME : tef_letd - SUBSET : 5 by 11 points (E (realization)-FORECAST) - LONGITUDE: 150E - LATITUDE : 15N - Z (m) : 250 - MODEL ELAPSED TIME (days): 289.15 - Initialization time increases down page. - 1 2 3 4 5 - 1 2 3 4 5 - 01-JAN-1950 / 1: 227.06 239.56 252.06 264.56 277.07 - 02-APR-1950 / 2: 227.09 239.60 252.10 264.61 277.11 - 02-JUL-1950 / 3: 227.08 239.59 252.09 264.60 277.10 - 01-OCT-1950 / 4: 227.08 239.58 20025.08 264.59 277.09 - 01-JAN-1951 / 5: 227.14 239.65 252.16 264.67 277.18 - 02-APR-1951 / 6: 227.11 239.62 252.12 264.63 277.14 - 02-JUL-1951 / 7: 227.16 239.67 252.18 264.68 277.19 - 02-OCT-1951 / 8: 227.20 239.71 252.22 264.73 277.24 - 01-JAN-1952 / 9: 227.14 239.65 252.16 264.67 277.18 - 01-APR-1952 / 10: 227.15 239.66 252.17 264.68 277.19 - 02-JUL-1952 / 11: 227.16 239.67 252.18 264.69 277.20 - -! same as preceding, but the LET/D is included in the agg as defined -ENSEMBLE te_f04_letd_new = t_f04_e1, t_f04_e2, t_f04_e3_1v, t_f04_e4, t_f04_e5 -FMRC/hide tef_letd_new = te_f01, te_f02, te_f03, te_f04_letd, te_f05, te_f06, te_f07, te_f08, te_f09, te_f10, te_f11 -list/x=150E/y=15n/L=10 fcst_2 - VARIABLE : another variable - DATA SET : Forecast series of 11 datasets patterned on te_f01 - FILENAME : tef_letd_new - SUBSET : 5 by 11 points (E (realization)-FORECAST) - LONGITUDE: 150E - LATITUDE : 15N - Z (m) : 250 - MODEL ELAPSED TIME (days): 289.15 - Initialization time increases down page. - 1 2 3 4 5 - 1 2 3 4 5 - 01-JAN-1950 / 1: 227.06 239.56 252.06 264.56 277.07 - 02-APR-1950 / 2: 227.09 239.60 252.10 264.61 277.11 - 02-JUL-1950 / 3: 227.08 239.59 252.09 264.60 277.10 - 01-OCT-1950 / 4: 227.08 239.58 20025.08 264.59 277.09 - 01-JAN-1951 / 5: 227.14 239.65 252.16 264.67 277.18 - 02-APR-1951 / 6: 227.11 239.62 252.12 264.63 277.14 - 02-JUL-1951 / 7: 227.16 239.67 252.18 264.68 277.19 - 02-OCT-1951 / 8: 227.20 239.71 252.22 264.73 277.24 - 01-JAN-1952 / 9: 227.14 239.65 252.16 264.67 277.18 - 01-APR-1952 / 10: 227.15 239.66 252.17 264.68 277.19 - 02-JUL-1952 / 11: 227.16 239.67 252.18 264.69 277.20 - -! deliberate errors: -SET MODE IGNORE -set data tef_letd -! a new LET/D definition that alters the grid of the result is not acceptable -let/d=t_f04_e3_1v fcst_2 = X[x=1:5]+Y[gy=fcst]+Z[gz=fcst]+T[gt=fcst] ! X ax chg -list/x=150E/y=15n/L=10 fcst_2 - -let/d=t_f04_e3_1v fcst_2 = X[gx=fcst]+Y[gy=fcst]+Z[gz=fcst]+T[T=1:36:1] ! T chg -list/x=150E/y=15n/L=10 fcst_2 - -! LET definition may not compress an axis of N>1 -let/d=t_f04_e3_1v fcst_2 = fcst[i=1:5@ave] -list/x=150E/y=15n/L=10 fcst_2 -SET MODE/LAST IGNORE - -! now restore the original definition and verify it again works -let/d=t_f04_e3_1v fcst_2 = fcst + 2 -list/x=150E/y=15n/L=10 fcst_2 - VARIABLE : another variable - DATA SET : Forecast series of 11 datasets patterned on te_f01 - FILENAME : tef_letd - SUBSET : 5 by 11 points (E (realization)-FORECAST) - LONGITUDE: 150E - LATITUDE : 15N - Z (m) : 250 - MODEL ELAPSED TIME (days): 289.15 - Initialization time increases down page. - 1 2 3 4 5 - 1 2 3 4 5 - 01-JAN-1950 / 1: 227.0551 239.5582 252.0613 264.5643 277.0674 - 02-APR-1950 / 2: 227.0918 239.5969 252.1020 264.6071 277.1122 - 02-JUL-1950 / 3: 227.0848 239.5895 252.0942 264.5989 277.1037 - 01-OCT-1950 / 4: 227.0755 239.5797 252.0839 264.5881 277.0923 - 01-JAN-1951 / 5: 227.1443 239.6523 252.1603 264.6683 277.1763 - 02-APR-1951 / 6: 227.1108 239.6170 252.1232 264.6293 277.1355 - 02-JUL-1951 / 7: 227.1580 239.6668 252.1755 264.6843 277.1931 - 02-OCT-1951 / 8: 227.1996 239.7107 252.2218 264.7328 277.2439 - 01-JAN-1952 / 9: 227.1432 239.6512 252.1592 264.6671 277.1751 - 01-APR-1952 / 10: 227.1533 239.6618 252.1703 264.6788 277.1873 - 02-JUL-1952 / 11: 227.1644 239.6735 252.1827 264.6918 277.2009 - -! ======== TEST SET 2: aggregate F first, then E -FMRC tf_e1 = t_f01_e1, t_f02_e1, t_f03_e1, t_f04_e1, t_f05_e1, t_f06_e1, t_f07_e1, t_f08_e1, t_f09_e1, t_f10_e1, t_f11_e1 -FMRC/hide tf_e2 = t_f01_e2, t_f02_e2, t_f03_e2, t_f04_e2, t_f05_e2, t_f06_e2, t_f07_e2, t_f08_e2, t_f09_e2, t_f10_e2, t_f11_e2 -FMRC/hide tf_e3 = t_f01_e3, t_f02_e3, t_f03_e3, t_f04_e3, t_f05_e3, t_f06_e3, t_f07_e3, t_f08_e3, t_f09_e3, t_f10_e3, t_f11_e3 -FMRC/hide tf_e4 = t_f01_e4, t_f02_e4, t_f03_e4, t_f04_e4, t_f05_e4, t_f06_e4, t_f07_e4, t_f08_e4, t_f09_e4, t_f10_e4, t_f11_e4 -FMRC/hide tf_e5 = t_f01_e5, t_f02_e5, t_f03_e5, t_f04_e5, t_f05_e5, t_f06_e5, t_f07_e5, t_f08_e5, t_f09_e5, t_f10_e5, t_f11_e5 - -! aggregate these F-aggs onto an E axis -ENSEMBLE/HIDE tfe = tf_e1, tf_e2, tf_e3, tf_e4, tf_e5 - -! F-aggregate inherits the TF-auxiliary variable pointers from the members -SHOW DATA/ATTRIB tfe ! also notice the promotion of fcst.im_everywhere - currently SET data sets: - 79> tfe (default) Ensemble aggregation - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . aggregate name CHAR 3 F tfe - - FCST DOUBLE long_name CHAR 13 T some variable - missing_value DOUBLE 1 T -1.E+34 - coordinates CHAR 33 T RUN1 TIME33 TF_TIMES ZAX1 YAX XAX - _ftime2d CHAR 8 T TF_TIMES - _cal_t_ax CHAR 8 T TF_CAL_T - _lag_f_ax CHAR 8 T TF_LAG_F - _cal_f_ax CHAR 9 T TF_CAL_F1 - _lag_t_ax CHAR 9 T TF_LAG_T2 - im_everywhere CHAR 13 F so promote me - - TF_TIMES DOUBLE long_name CHAR 25 T Forecast time step matrix - units CHAR 22 T days since 01-JAN-1900 - missing_value DOUBLE 1 T -1.E+34 - _CoordinateAxisType - CHAR 4 T Time - calendar CHAR 9 T GREGORIAN - - FCST_2 DOUBLE long_name CHAR 16 T another variable - missing_value DOUBLE 1 T -1.E+34 - coordinates CHAR 33 T RUN1 TIME33 TF_TIMES ZAX1 YAX XAX - _ftime2d CHAR 8 T TF_TIMES - _cal_t_ax CHAR 8 T TF_CAL_T - _lag_f_ax CHAR 8 T TF_LAG_F - _cal_f_ax CHAR 9 T TF_CAL_F1 - _lag_t_ax CHAR 9 T TF_LAG_T2 - - member_dset CHAR long_name CHAR 32 T Member dataset names in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - -! the 2-D coordinate variable (TF_TIMES) should be 2D, only, in T and F -SHOW DATA tfe - currently SET data sets: - 79> tfe (default) Ensemble aggregation - name title I J K L M N - FCST some variable 1:21 1:11 1:1 1:36 1:5 1:11 - (L=1:12) - TF_TIMES Forecast time step matrix ... ... ... 1:36 ... 1:33 - FCST_2 another variable 1:21 1:11 1:1 1:36 1:5 1:11 - (L=1:12) - ------------------------------ - MEMBER_DSET - Member dataset names in Ensembl ... ... ... ... 1:5 ... - - -! confirm that the TF_TIMES variable is accessible in a T-F-E aggregation -LIST/NOHEAD/L=18:19/N=5:6 TF_TIMES ! subset access - 02-MAY-1950 / 5: 18916.39 18946.83 - 02-JUN-1950 / 6: 18946.83 18977.27 -STAT/BRIEF TF_TIMES - - Total # of data points: 1188 (1*1*1*36*1*33) - # flagged as bad data: 0 - Minimum value: 18277 - Maximum value: 20316 - Mean value: 19297 (unweighted average) - -! confirm that the T-F-E agg and the T-E-F agg get the same results -! exactlyidentically zero STAT output means correct functioning -let tfe_tef_ave_diff = (diag_fcst[d=tfe,m=1:5@ave]-diag_fcst[d=tef,m=1:5@ave]) -stat/brief/x=150E/y=15n tfe_tef_ave_diff - - Total # of data points: 2376 (1*1*1*66*1*36) - # flagged as bad data: 1980 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) -let tfe_tef_diff = (diag_fcst[d=tfe]-diag_fcst[d=tef]) -stat/brief/x=150E/y=15n tfe_tef_diff[m=1:5@ave] - - Total # of data points: 2376 (1*1*1*66*1*36) - # flagged as bad data: 1980 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - -! missing forecast (t_f02_e2) in a T-F-E aggregation -FMRC tf_e2_gap = t_f01_e2, -, t_f03_e2, t_f04_e2, t_f05_e2, t_f06_e2, t_f07_e2, t_f08_e2, t_f09_e2, t_f10_e2, t_f11_e2 -ENSEMBLE tfe_gap = tf_e1, tf_e2_gap, tf_e3, tf_e4, tf_e5 -LIST/l=10/i=10/j=10/k=1 fcst[d=tfe_gap] - VARIABLE : some variable - DATA SET : Ensemble series of 5 datasets patterned on tf_e1 - FILENAME : tfe_gap - SUBSET : 5 by 11 points (E (realization)-FORECAST) - LONGITUDE: 149E - LATITUDE : 19N - Z (m) : 250 - MODEL ELAPSED TIME (days): 289.15 - Initialization time increases down page. - 1 2 3 4 5 - 1 2 3 4 5 - 01-JAN-1950 / 1: 225.1657 237.6750 250.1842 262.6934 275.2026 - 02-APR-1950 / 2: 225.2187 .... 250.2430 262.7552 275.2673 - 02-JUL-1950 / 3: 225.3351 237.8537 250.3723 262.8909 275.4096 - 01-OCT-1950 / 4: 225.3952 237.9171 250.4391 262.9610 275.4830 - 01-JAN-1951 / 5: 225.3700 237.8906 250.4111 262.9317 275.4522 - 02-APR-1951 / 6: 225.4645 237.9904 250.5162 263.0420 275.5678 - 02-JUL-1951 / 7: 225.5250 238.0541 250.5833 263.1125 275.6416 - 02-OCT-1951 / 8: 225.5544 238.0852 250.6160 263.1468 275.6776 - 01-JAN-1952 / 9: 225.5862 238.1188 250.6514 263.1839 275.7165 - 01-APR-1952 / 10: 225.5630 238.0943 250.6256 263.1569 275.6882 - 02-JUL-1952 / 11: 225.5956 238.1287 250.6618 263.1949 275.7280 - -! missing ensemble member (t_f02_e2)in a T-E-F agregation -ENSEMBLE te_f02_gap = t_f02_e1, -, t_f02_e3, t_f02_e4, t_f02_e5 -FMRC tef_gap = te_f01, te_f02_gap, te_f03, te_f04 -LIST/l=10/i=10/j=10/k=1 fcst[d=tef_gap] - VARIABLE : some variable - DATA SET : Forecast series of 4 datasets patterned on te_f01 - FILENAME : tef_gap - SUBSET : 5 by 4 points (E (realization)-FORECAST) - LONGITUDE: 149E - LATITUDE : 19N - Z (m) : 250 - MODEL ELAPSED TIME (days): 289.15 - Initialization time increases down page. - 1 2 3 4 5 - 1 2 3 4 5 - 01-JAN-1950 / 1: 225.1657 237.6750 250.1842 262.6934 275.2026 - 02-APR-1950 / 2: 225.2187 .... 250.2430 262.7552 275.2673 - 02-JUL-1950 / 3: 225.3351 237.8537 250.3723 262.8909 275.4096 - 01-OCT-1950 / 4: 225.3952 237.9171 250.4391 262.9610 275.4830 - -! deliberate errors -set mode ignore -! unequal ensemble axis lengths -ENSEMBLE te_f02_short = t_f02_e1, t_f02_e2, t_f02_e3, t_f02_e4 ! shorter than others -FMRC tef_short = te_f01, te_f02_short, te_f03, te_f04, te_f05, te_f06, te_f07, te_f08, te_f09, te_f10, te_f11 - -! unequal forecast axis lengths -FMRC tf_e2_short = t_f01_e2, t_f02_e2, t_f03_e2, t_f04_e2 ! shorter than others -ENSEMBLE tfe_short = tf_e1, tf_e2_short, tf_e3, tf_e4, tf_e5 - -! ensemble created with already-ensemble components -ENSEMBLE te_f01 = t_f01_e1, t_f01_e2, t_f01_e3, t_f01_e4, t_f01_e5 -ENSEMBLE te_f03 = t_f03_e1, t_f03_e2, t_f03_e3, t_f03_e4, t_f03_e5 -ENSEMBLE te_f04 = t_f04_e1, t_f04_e2, t_f04_e3, t_f04_e4, t_f04_e5 -ENSEMBLE bad_ens = te_f01, te_f03, te_f04 - -! fmrc created with already-fmrc components -FMRC tf_e1 = t_f01_e1, t_f02_e1, t_f03_e1, t_f04_e1 -FMRC tf_e3 = t_f01_e3, t_f02_e3, t_f03_e3, t_f04_e3 -FMRC tf_e4 = t_f01_e4, t_f02_e4, t_f03_e4, t_f04_e4 -FMRC bad_fmrc = tf_e1, tf_e3, tf_e4 - -set mode/last ignore - -CANCEL DATA/ALL - -!GO bn_reset -! Add this to the gif benchmark tests -! GO bn_hovmuller_overlays - -!GO bn_reset -! Add this to the gif benchmark tests -! GO bn_labels_on_taxis - -GO bn_reset bn_dataset_qualifier -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dataset_qualifier -GO bn_dataset_qualifier -! bn_dataset_qualifier -! see ticket 2632 -! Test change from /D= to /DATASET= qualifier for LIST, PLOT, LOAD, etc -! Various commands taken from other scripts. - -! LIST/DAT= -use gt4d011 -use coads_climatology - -let nv = ..nvars -let nd = ..ndims -let vnames = ..varnames -list/DAT=1 nv, nd - DATA SET: ./data/gt4d011.cdf - X: 1 - Column 1: NV is ..NVARS - Column 2: ND is ..NDIMS - NV ND -I / *: 12.00000 21.00000 -list/DAT=1 vnames - VARIABLE : ..VARNAMES - FILENAME : gt4d011.cdf - SUBSET : 12 points (X) - 1 / 1:"PS3DT2" - 2 / 2:"TEMP" - 3 / 3:"SALT" - 4 / 4:"PS3DU2" - 5 / 5:"U" - 6 / 6:"V" - 7 / 7:"PS3DW2" - 8 / 8:"W" - 9 / 9:"PS2DU2" - 10 / 10:"TAUX" - 11 / 11:"TAUY" - 12 / 12:"PSI" - -list/DAT=coads_climatology nv,nd - DATA SET: ./data/coads_climatology.cdf - X: 1 - Column 1: NV is ..NVARS - Column 2: ND is ..NDIMS - NV ND -I / *: 1.000000 3.000000 -list/DAT=gt4d011 nv,nd - DATA SET: ./data/gt4d011.cdf - X: 1 - Column 1: NV is ..NVARS - Column 2: ND is ..NDIMS - NV ND -I / *: 12.00000 21.00000 - -! SET ATT/OUTPUT/DAT= -! DEFINE ATT/OUTPUT/DAT= -! CANCEL ATT/OUTPUT/DAT= -can data/all -use err491_attval -use gt4d011 -set att/output/DATA=1 ..dt_internal -define attribute/output/DATA=1 elev.newatt = 7 -save/clobber/file=a.nc/outtype=float elev[d=1] -use a.nc -sh att . - attributes for dataset: ./a.nc - ..history = PyFerret V7.51 (debug) 20-Aug-19 - ..Conventions = CF-1.6 - ..dt_internal = 15 -sh att elev - attributes for dataset: ./a.nc - ELEV.missing_value = -32767 - ELEV.long_name = Surface elevation - ELEV.units = meter - ELEV.scale_factor = 2.74675E-04 - ELEV.add_offset = 0 - ELEV.newatt = 7 - ELEV.Ferret_Precision_Note = This variable written using Ferret was converted from SHORT to FLOAT - ELEV.history = From err491_attval -can data a -cancel attribute/output/DATASET=1 ..dt_internal -cancel attribute/output/DATASET=1 elev.newatt -save/clobber/file=a.nc/outtype=float elev[d=1] -use a.nc -sh att . - attributes for dataset: ./a.nc - ..history = PyFerret V7.51 (debug) 20-Aug-19 - ..Conventions = CF-1.6 -sh att elev - attributes for dataset: ./a.nc - ELEV.missing_value = -32767 - ELEV.long_name = Surface elevation - ELEV.units = meter - ELEV.scale_factor = 2.74675E-04 - ELEV.add_offset = 0 - ELEV.Ferret_Precision_Note = This variable written using Ferret was converted from SHORT to FLOAT - ELEV.history = From err491_attval - -! LOAD/DAT= -use coads_climatology -use levitus_climatology - -load/DAT=coads_climatology sst[y=-10:10:.1,l=1,x=160e] -show grid - Default grid for DEFINE VARIABLE is ABSTRACT - Last successful data access was on grid (G203) - GRID (G203) - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) 1 pt - (AX120) LATITUDE 201 r 10S 10N 201 pts - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 1 pt - -! LIST/DAT=, LET/DAT=, -can dat/all -use err491_attval -use coads_climatology -use levitus_climatology -use ocean_atlas_temp -use gt4d011 - -let a = temp.units -list/DAT=3 a - VARIABLE : TEMP.UNITS - FILENAME : levitus_climatology.cdf - X : 1 - "DEG C" -list/DAT=3 temp.history - VARIABLE : TEMP.HISTORY - FILENAME : levitus_climatology.cdf - "From levitus_climatology" - -! PLOT, SHADE, FILL, CONTOUR, VECTOR, STAT -! various plot and other action commands with /DATA - -let/DAT=2 temp = sst + 0*z[z=1:5:1] -sh dat 2 - currently SET data sets: - 2> ./data/coads_climatology.cdf - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - ------------------------------ - TEMP[D=coads_climatology] = SST + 0*Z[Z=1:5:1] - -plot/DATASET=2 sst[L=1,y=0,x=300:360] -fill/DAT=2 sst[L=1,x=30:150,y=-60:0] -contour/over/DATA=3 temp[Z=0] -shade/DATA=2 sst[x=180,y=-10:10] -vec/DAT=gt4d011/l=3 taux,tauy - -! STAT, LIST -stat/DATASET=1 elev - - Surface elevation - LONGITUDE: 135.5W(-135.5) to 135W(-135) - LATITUDE: 58.5912N to 59.4701N - Z: N/A - T (day): 1.7837 - E: N/A - F: N/A - DATA SET: ./data/err491_attval.cdf - - Total # of data points: 4445 (35*127*1*1*1*1) - # flagged as bad data: 3065 - Minimum value: 2.9225 - Maximum value: 3.0058 - Mean value: 2.9799 (unweighted average) - Standard deviation: 0.017437 -shade/DAT=1 elev -list/DAT=1/x=-135.3/y=58.8 elev - VARIABLE : Surface elevation (meter) - DATA SET : K-Bay OAR3d model (200m) - FILENAME : err491_attval.cdf - LONGITUDE: 135.3W(-135.3) (interpolated) - LATITUDE : 58.8N (interpolated) - T (day) : 1.7837 - 2.979394 - -! POLYGON/DAT -define axis/x=330:350:1/units=degrees_east xax10 -define axis/y=-10:10:1/units=degrees_north yax10 - -let fsst = sst[l=3,gx=xax10,gy=yax10] -let lon = xsequence(x[gx=xax10] + 0*y[gy=yax10]) -let lat = xsequence(0*x[gx=xax10] + y[gy=yax10]) -shade/pal=white/nokey/nolab/DATA=2 sst[l=1,x=300:310,y=-10:10] ! Set up plot params for polymark.jnl -go polymark poly/DATA=2/key/title="Polygon test", lon, lat, xsequence(fsst), square, 1.2 - - -! Commands that have another qualifier also starting with /D -! LIST/DATASET= with /DEFLATE -cancel data/all -use levitus_climatology -use gt4d011 -use coads_climatology -list/form=cdf/ncformat=4/DEFLATE/file=a.nc/clobber/DATA=1 temp - -! PLOT/DASH with /DATA= -plot/dash/x=180/z=0/DATASET=1 temp - -! VECTOR/FLOW/DATA=/DENSITY -flow/DAT=2/den=3/L=3 taux,tauy - -GO bn_reset bn_speedtest -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_speedtest -GO bn_speedtest -! bn_speedtest.jnl -! issue large numbers of commands, timing with clock time -can mode verify -10K LET commands LET a = 0 takes 2.200000000000045 seconds -Second 10K LET commands LET a = 0 takes 3.600000000000023 seconds -5K LOAD with transform takes 4.100000000000023 seconds - -GO bn_reset bn_show_noupcase -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_show_noupcase -GO bn_show_noupcase -! bn_show_noupcase.jnl -! 1/2016 ticket 1796 - -cancel mode upcase - - -! Previously this mode acted only when saving to netCDf. -! Now applies to SHOW commands of all sorts, as well as `return=*axis` - - - -! User variable with lowercase letters in the name - -DEFINE AXIS/t=1-jan-1999:31-jan-1999:1/units=days/t0=31-dec-1998 tday -LET MyUpperLowerCaseVar = x[x=1:10] + t[gt=tday] -show var - Created by DEFINE VARIABLE: - >>> Definitions that replace any file variable of same name: - MyUpperLowerCaseVar = X[X=1:10] + T[GT=TDAY] -show grid MyUpperLowerCaseVar - GRID (G207) - name axis # pts start end subset - ABSTRACT X 99999999 r 1 1.E+08 10 pts - normal Y - normal Z - tday TIME 31 r 01-JAN-1999 00:00 31-JAN-1999 00:00 full - - -! Files have variable and axis names in mixed case. - -USE a1478.nc -USE a_cartesian_bug1179.nc -show data - currently SET data sets: - 1> ./data/a1478.nc - name title I J K L - lat1_5_bnds - 1:2 1:5 ... ... - olr outgoing longwave radiation 1:5 1:5 ... 1:3 - - 2> ./data/a_cartesian_bug1179.nc (default) - name title I J K L - temp THETA_FO(SALT_EXTRAP,TEMP_EXTRA 1:1 1:1 1:10 1:1 - - -! Previously the RETURN= gave the capitalized axis names -say `temp,return=zaxis` - !-> MESSAGE/CONTINUE zt -zt -say `temp,return=xaxis` - !-> MESSAGE/CONTINUE grid_x_T -grid_x_T - -sh axis `temp,return=xaxis` - !-> sh axis grid_x_T - name axis # pts start end - grid_x_T LONGITUDE 1 r 79E 79E - Axis span (to cell edges) = 1 -sh axis/x `temp,return=xaxis` - !-> sh axis/x grid_x_T - name axis # pts start end - grid_x_T LONGITUDE 1 r 79E 79E - Axis span (to cell edges) = 1 - - I X XBOX XBOXLO - 1> 79E 1 78.5E - -! Define an output variable with some axes from each dataset. -! (the variable definitions have been upcased. Beyond the scope of this fix...) - -LET/D=1 zvar = 2*temp[d=2] -LET/D=2 newvar = 0*zvar[d=2] + olr[d=1] - -show data - currently SET data sets: - 1> ./data/a1478.nc - name title I J K L - lat1_5_bnds - 1:2 1:5 ... ... - olr outgoing longwave radiation 1:5 1:5 ... 1:3 - ------------------------------ - zvar[D=a1478] = 2*TEMP[D=2] - - 2> ./data/a_cartesian_bug1179.nc (default) - name title I J K L - temp THETA_FO(SALT_EXTRAP,TEMP_EXTRA 1:1 1:1 1:10 1:1 - ------------------------------ - newvar[D=a_cartesian_bug1179] = 0*ZVAR[D=2] + OLR[D=1] - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - - -! xml output - -USE a_cartesian_bug1179.nc - -say/quiet - -say/quiet - - -show var/xml -show data/var/xml - - - - - - - - - - - - -1.E+34 - - - - - - - - - -grid_x_T -grid_y_T -zt -TIME - - - - - - - - - - - - - - - 1 - - - -0.25 - - - -0.25 - - - - - - no - - - - - - - - - - - - - - - - - - - - - - - 10 - - - 22.5 - - - 157.9952 - - - - - - uneven - - - no - - - - - - - - - - - - - - - zt_bnds - - - - - - - - - - - 1 - - - 79 - - - 79 - - - - - - no - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 1900-02-15 03:00:00 - - - 1900-02-15 03:00:00 - - - - - - - - - - - - - - - -say/quiet - - -USE a_cartesian_bug1179.nc - -SHO DATA/XML - - - - - - - -SHO DATA/VAR/XML - - - - - - - - - - - - -1.E+34 - - - - - - - - - -grid_x_T -grid_y_T -zt -TIME - - - - - - - - - - - - - - - 1 - - - -0.25 - - - -0.25 - - - - - - no - - - - - - - - - - - - - - - - - - - - - - - 10 - - - 22.5 - - - 157.9952 - - - - - - uneven - - - no - - - - - - - - - - - - - - - zt_bnds - - - - - - - - - - - 1 - - - 79 - - - 79 - - - - - - no - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 1900-02-15 03:00:00 - - - 1900-02-15 03:00:00 - - - - - - - - - - - - - - - - -SHO GRID/XML temp - - -grid_x_T -grid_y_T -zt -TIME - - - -SHO AXIS/XML `temp,return=xaxis` - !-> SHO AXIS/XML grid_x_T - - - - - - - - - - 1 - - - 79 - - - 79 - - - - - - no - - - - - - - - - - - - - - - -SHO AXIS/XML `temp,return=yaxis` - !-> SHO AXIS/XML grid_y_T - - - - - - - - - - 1 - - - -0.25 - - - -0.25 - - - - - - no - - - - - - - - - - - - - - - -SHO AXIS/XML `temp,return=zaxis` - !-> SHO AXIS/XML zt - - - - - - - - - - 10 - - - 22.5 - - - 157.9952 - - - - - - uneven - - - no - - - - - - - - - - - - - - - zt_bnds - - - -SHO AXIS/XML `temp,return=taxis` - !-> SHO AXIS/XML TIME34 - - - - - - - - - - 1 - - - 1900-02-15 03:00:00 - - - 1900-02-15 03:00:00 - - - - - - - - - - - - - - - - -! Define a dataset variable -! SHOW/XML commands list it w/ its dataset (even if dataset is not default) -LET/D=a_cartesian_bug1179 temp_180 = temp[X=79E:79E@AVE] - -SHOW DATA/XML - - - - - - - - -USE a1478.nc -SHOW DATA/XML - - - - - - - - - - - - -SHO DATA/VAR/XML - - - - - - - - - - - - -1.E+34 - - - - - - - - - -grid_x_T -grid_y_T -zt -TIME - - - - - - - - - -1.E+34 - - - -1.E+34 - - - - - - - - - -grid_y_T -zt -TIME - - - - - - - - - - - - - - - 1 - - - -0.25 - - - -0.25 - - - - - - no - - - - - - - - - - - - - - - - - - - - - - - 10 - - - 22.5 - - - 157.9952 - - - - - - uneven - - - no - - - - - - - - - - - - - - - zt_bnds - - - - - - - - - - - 1 - - - 79 - - - 79 - - - - - - no - - - - - - - - - - - - - - - - - - - - - - - 1 - - - 1900-02-15 03:00:00 - - - 1900-02-15 03:00:00 - - - - - - - - - - - - - - - - - - - - - - - - - - -bnds -lat1_5 - - - - - - - - - - - - -999 - - - -999 - - - - - - - - - -lon1_5 -lat1_5 -time1478 - - - - - - - - - - - - 5 - - - -89.49438 - - - -81.91011 - - - uneven - - - no - - - - - - - - - lat1_5_bnds - - - - - - - - 5 - - - 1.25 - - - 11.25 - - - - - - no - - - - - - - - - - - - - - 3 - - - 14782.5 - - - 15512.5 - - - - - - no - - - - - - - - - - - - - - - - - 2 - - - 1 - - - 2 - - - - - - no - - - - -! tests of SHOW VAR/XML for global variables. -CAN DATA/ALL -CAN VAR/ALL - -USE a1478 -USE a_cartesian_bug1179 - -! Define a dataset variable -LET/D=a1478 temp_20 temp[Z=0:20@SUM] - -! Define a global variable -LET t30 = temp[Z=0:30@SUM] - -! Another variable, setting title, units, bad flag. -LET/UNITS="Deg C"/BAD=100/TITLE="Indefinite integral of SALT" salty = salt[Z=@IIN] - - -! list tha variables -SHO VAR/XML - - - - - - - -1.E+34 - - - - - - -grid_x_T -grid_y_T -TIME - - - - - -set mode/last upcase - - -GO bn_reset bn_letd_attributes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_letd_attributes -GO bn_letd_attributes -! bn_letd_attributes.jnl -! Allow for the same variable name defined with LET/D in multiple datasets. -! See ticket 2352. Previously for all user variables the -! attribute information stored was in fake uvar-dataset = -1. -! Now if the variable is a LET/D variable, it is stored with -! the attribute information of the dataset. - - -! See the variable defined with LET/D in SHOW DAT, SHOW DAT/ATT -! and with SHOW ATT - -use coads_climatology -let/d=1/title="coads myvar" myvar = 1 - -! Now SHOW DATA/ATT lists the LET/D variables, as SHOW DATA does -show dat 1 - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - ------------------------------ - MYVAR[D=coads_climatology] = 1 - - -show dat/att 1 - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 28 T FERRET V4.91 (GUI) 1-Mar-99 - -(COADSX) DOUBLE units CHAR 12 T degrees_east - modulo CHAR 1 T - point_spacing CHAR 4 T even - orig_file_axname - CHAR 6 F COADSX - -(COADSY) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - orig_file_axname - CHAR 6 F COADSY - -(TIME25) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 19 T 1-JAN-0000 00:00:00 - modulo CHAR 1 T - orig_file_axname - CHAR 4 F TIME - - SST FLOAT missing_value FLOAT 1 T -1.E+34 - _FillValue FLOAT 1 T -1.E+34 - long_name CHAR 23 T SEA SURFACE TEMPERATURE - history CHAR 22 T From coads_climatology - units CHAR 5 T Deg C - - ------------------------------ - myvar[D=coads_climatology] long_name CHAR 11 T coads myvar - missing_value DOUBLE 1 T -1.E+34 - - -show att myvar - attributes for dataset: ./data/coads_climatology.cdf - myvar.long_name = coads myvar - myvar.missing_value = -1.E+34 - -! If there is also a global variable of the same name, SHOW VAR -! and SHOW ATT list results for both variables - -let/title="Global myvar" myvar = 0 ! global -show att myvar - attributes for user-defined variables - myvar.long_name = Global myvar - myvar.missing_value = -1.E+34 - -! Now a LET/D variable with the same name on a second datset. -! SHOW ATT lists results for the current datset and any global variables - -use levitus_climatology -let/d=2/title="Levitus myvar" myvar = 2 -show dat 2 - currently SET data sets: - 2> ./data/levitus_climatology.cdf (default) - name title I J K L - TEMP TEMPERATURE 1:160 1:90 1:1 ... - ------------------------------ - MYVAR[D=levitus_climatology] = 2 - -show dat/att 2 - currently SET data sets: - 2> ./data/levitus_climatology.cdf (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 24 T FERRET V5.22 5-Apr-01 - -(XAXLEVITR1_160) DOUBLE units CHAR 12 T degrees_east - modulo CHAR 1 T - point_spacing CHAR 4 T even - orig_file_axname - CHAR 14 F XAXLEVITR1_160 - -(YAXLEVITR1_90) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - orig_file_axname - CHAR 13 F YAXLEVITR1_90 - -(ZAXLEVITR1_1) DOUBLE units CHAR 6 T METERS - positive CHAR 4 T down - orig_file_axname - CHAR 12 F ZAXLEVITR1_1 - - TEMP FLOAT missing_value FLOAT 1 T -1.E+10 - _FillValue FLOAT 1 T -1.E+10 - long_name CHAR 11 T TEMPERATURE - history CHAR 24 T From levitus_climatology - units CHAR 5 T DEG C - - ------------------------------ - myvar[D=levitus_climatology] long_name CHAR 13 T Levitus myvar - missing_value DOUBLE 1 T -1.E+34 - -show att myvar - attributes for user-defined variables - myvar.long_name = Global myvar - myvar.missing_value = -1.E+34 - -show att/d=1 myvar - attributes for dataset: ./data/coads_climatology.cdf - myvar.long_name = coads myvar - myvar.missing_value = -1.E+34 - -! ..varnames is the list of file variables. Now to include LET/D variables - -let vnames = ..varnames -list vnames - VARIABLE : ..VARNAMES - FILENAME : levitus_climatology.cdf - SUBSET : 2 points (X) - 1 / 1:"TEMP" - 2 / 2:"myvar" - - -set data 1 -list vnames - VARIABLE : ..VARNAMES - FILENAME : coads_climatology.cdf - SUBSET : 2 points (X) - 1 / 1:"SST" - 2 / 2:"myvar" - - -! CANCEL VAR deletes the variables from the linked-list attribute structure. -cancel var/all -show dat - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - - 2> ./data/levitus_climatology.cdf - name title I J K L - TEMP TEMPERATURE 1:160 1:90 1:1 ... - - -show dat/att 2 - currently SET data sets: - 2> ./data/levitus_climatology.cdf - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 24 T FERRET V5.22 5-Apr-01 - -(XAXLEVITR1_160) DOUBLE units CHAR 12 T degrees_east - modulo CHAR 1 T - point_spacing CHAR 4 T even - orig_file_axname - CHAR 14 F XAXLEVITR1_160 - -(YAXLEVITR1_90) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - orig_file_axname - CHAR 13 F YAXLEVITR1_90 - -(ZAXLEVITR1_1) DOUBLE units CHAR 6 T METERS - positive CHAR 4 T down - orig_file_axname - CHAR 12 F ZAXLEVITR1_1 - - TEMP FLOAT missing_value FLOAT 1 T -1.E+10 - _FillValue FLOAT 1 T -1.E+10 - long_name CHAR 11 T TEMPERATURE - history CHAR 24 T From levitus_climatology - units CHAR 5 T DEG C - - -! Redefine our LET/D variables - -use coads_climatology -let/d=1/title="coads myvar" myvar = 1 - -use levitus_climatology -let/d=2/title="Levitus myvar" myvar = 2 - -! Define new attributes on the file variable and LET/D variable -! in the default dataset - -define att/output temp.my_new_att="temperature attrib" -define att/output myvar.units="meters" -show att temp - attributes for dataset: ./data/levitus_climatology.cdf - TEMP.missing_value = -1.E+10 - TEMP._FillValue = -1.E+10 - TEMP.long_name = TEMPERATURE - TEMP.history = From levitus_climatology - TEMP.units = DEG C - TEMP.my_new_att = temperature attrib -show att myvar - attributes for dataset: ./data/levitus_climatology.cdf - myvar.long_name = Levitus myvar - myvar.missing_value = -1.E+34 - myvar.units = meters - -! use /D= to define an attribute for a file-specific var -define att/output/d=2 myvar.standard_name = "None" - -define att/output/d=1 myvar.units="feet" -show att/d=1 myvar - attributes for dataset: ./data/coads_climatology.cdf - myvar.long_name = coads myvar - myvar.missing_value = -1.E+34 - myvar.units = feet -save/clobber/file=a.nc myvar[d=1] -sp ncdump -h a.nc >> all_ncdump.out - -show att/d=2 myvar - attributes for dataset: ./data/levitus_climatology.cdf - myvar.long_name = Levitus myvar - myvar.missing_value = -1.E+34 - myvar.units = meters - myvar.standard_name = None -save/clobber/file=a.nc myvar[d=2] -sp ncdump -h a.nc >> all_ncdump.out - - -GO bn_reset bn_list_clim_axes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_list_clim_axes -GO bn_list_clim_axes -! bn_list_clim_axes.jnl -! *acm* 3/16 -! *acm* 7/18 specific list of clim axes to show, and include month_julian - -! Show and list coordinates for climatological axes -! that are pre-defined in Ferret -! - -show axis seasonal_reg - name axis # pts start end - SEASONAL_REG TIME 4mr 15-FEB 15:43 15-NOV 14:05 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 8765.82 (modulo length = axis span) -show axis month_irreg, month_reg, month_gregorian, month_noleap, month_360_day, \ - month_all_leap, month_julian - name axis # pts start end - MONTH_IRREG TIME 12mi 16-JAN 12:00 15-DEC 17:49 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - MONTH_REG TIME 12mr 16-JAN 06:00 16-DEC 01:20 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 8765.82 (modulo length = axis span) - MONTH_GREGORIAN TIME 12mi 16-JAN 12:00 15-DEC 17:49 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - MONTH_NOLEAP TIME 12mi 16-JAN 12:00 16-DEC 12:00 -T0 = 01-JAN-0000 00:00:00 -CALENDAR = NOLEAP - Axis span (to cell edges) = 365 (modulo length = axis span) - MONTH_360_DAY TIME 12mr 16-JAN 00:00 16-DEC 00:00 -T0 = 01-JAN-0000 00:00:00 -CALENDAR = 360_DAY - Axis span (to cell edges) = 360 (modulo length = axis span) - MONTH_ALL_LEAP TIME 12mi 16-JAN 12:00 16-DEC 12:00 -T0 = 01-JAN-0000 00:00:00 -CALENDAR = ALL_LEAP - Axis span (to cell edges) = 366 (modulo length = axis span) - MONTH_JULIAN TIME 12mi 16-JAN 12:00 15-DEC 18:00 -T0 = 01-JAN-0000 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 365.25 (modulo length = axis span) - -show axis/t month_irreg - name axis # pts start end - MONTH_IRREG TIME 12mi 16-JAN 12:00 15-DEC 17:49 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 16-JAN 12:00:00 31 01-JAN 00:00:00 15.5 - 2> 15-FEB 02:54:36 28.2425 01-FEB 00:00:00 45.12125 - 3> 15-MAR 17:49:12 31 29-FEB 05:49:12 74.7425 - 4> 15-APR 05:49:12 30 31-MAR 05:49:12 105.2425 - 5> 15-MAY 17:49:12 31 30-APR 05:49:12 135.7425 - 6> 15-JUN 05:49:12 30 31-MAY 05:49:12 166.2425 - 7> 15-JUL 17:49:12 31 30-JUN 05:49:12 196.7425 - 8> 15-AUG 17:49:12 31 31-JUL 05:49:12 227.7425 - 9> 15-SEP 05:49:12 30 31-AUG 05:49:12 258.2425 - 10> 15-OCT 17:49:12 31 30-SEP 05:49:12 288.7425 - 11> 15-NOV 05:49:12 30 31-OCT 05:49:12 319.2425 - 12> 15-DEC 17:49:12 31 30-NOV 05:49:12 349.7425 -show axis/t month_gregorian - name axis # pts start end - MONTH_GREGORIAN TIME 12mi 16-JAN 12:00 15-DEC 17:49 -T0 = 01-JAN-0000 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 12:00:00 31 01-JAN 00:00:00 15.5 - 2> 15-FEB 02:54:36 28.2425 01-FEB 00:00:00 45.12125 - 3> 15-MAR 17:49:12 31 29-FEB 05:49:12 74.7425 - 4> 15-APR 05:49:12 30 31-MAR 05:49:12 105.2425 - 5> 15-MAY 17:49:12 31 30-APR 05:49:12 135.7425 - 6> 15-JUN 05:49:12 30 31-MAY 05:49:12 166.2425 - 7> 15-JUL 17:49:12 31 30-JUN 05:49:12 196.7425 - 8> 15-AUG 17:49:12 31 31-JUL 05:49:12 227.7425 - 9> 15-SEP 05:49:12 30 31-AUG 05:49:12 258.2425 - 10> 15-OCT 17:49:12 31 30-SEP 05:49:12 288.7425 - 11> 15-NOV 05:49:12 30 31-OCT 05:49:12 319.2425 - 12> 15-DEC 17:49:12 31 30-NOV 05:49:12 349.7425 -show axis/t month_noleap - name axis # pts start end - MONTH_NOLEAP TIME 12mi 16-JAN 12:00 16-DEC 12:00 -T0 = 01-JAN-0000 00:00:00 -CALENDAR = NOLEAP - Axis span (to cell edges) = 365 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 12:00:00 31 01-JAN 00:00:00 15.5 - 2> 15-FEB 00:00:00 28 01-FEB 00:00:00 45 - 3> 16-MAR 12:00:00 31 01-MAR 00:00:00 74.5 - 4> 16-APR 00:00:00 30 01-APR 00:00:00 105 - 5> 16-MAY 12:00:00 31 01-MAY 00:00:00 135.5 - 6> 16-JUN 00:00:00 30 01-JUN 00:00:00 166 - 7> 16-JUL 12:00:00 31 01-JUL 00:00:00 196.5 - 8> 16-AUG 12:00:00 31 01-AUG 00:00:00 227.5 - 9> 16-SEP 00:00:00 30 01-SEP 00:00:00 258 - 10> 16-OCT 12:00:00 31 01-OCT 00:00:00 288.5 - 11> 16-NOV 00:00:00 30 01-NOV 00:00:00 319 - 12> 16-DEC 12:00:00 31 01-DEC 00:00:00 349.5 -show axis/t month_360_day - name axis # pts start end - MONTH_360_DAY TIME 12mr 16-JAN 00:00 16-DEC 00:00 -T0 = 01-JAN-0000 00:00:00 -CALENDAR = 360_DAY - Axis span (to cell edges) = 360 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 00:00:00 30 01-JAN 00:00:00 15 - 2> 16-FEB 00:00:00 30 01-FEB 00:00:00 45 - 3> 16-MAR 00:00:00 30 01-MAR 00:00:00 75 - 4> 16-APR 00:00:00 30 01-APR 00:00:00 105 - 5> 16-MAY 00:00:00 30 01-MAY 00:00:00 135 - 6> 16-JUN 00:00:00 30 01-JUN 00:00:00 165 - 7> 16-JUL 00:00:00 30 01-JUL 00:00:00 195 - 8> 16-AUG 00:00:00 30 01-AUG 00:00:00 225 - 9> 16-SEP 00:00:00 30 01-SEP 00:00:00 255 - 10> 16-OCT 00:00:00 30 01-OCT 00:00:00 285 - 11> 16-NOV 00:00:00 30 01-NOV 00:00:00 315 - 12> 16-DEC 00:00:00 30 01-DEC 00:00:00 345 -show axis/t month_all_leap - name axis # pts start end - MONTH_ALL_LEAP TIME 12mi 16-JAN 12:00 16-DEC 12:00 -T0 = 01-JAN-0000 00:00:00 -CALENDAR = ALL_LEAP - Axis span (to cell edges) = 366 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 12:00:00 31 01-JAN 00:00:00 15.5 - 2> 15-FEB 12:00:00 29 01-FEB 00:00:00 45.5 - 3> 16-MAR 12:00:00 31 01-MAR 00:00:00 75.5 - 4> 16-APR 00:00:00 30 01-APR 00:00:00 106 - 5> 16-MAY 12:00:00 31 01-MAY 00:00:00 136.5 - 6> 16-JUN 00:00:00 30 01-JUN 00:00:00 167 - 7> 16-JUL 12:00:00 31 01-JUL 00:00:00 197.5 - 8> 16-AUG 12:00:00 31 01-AUG 00:00:00 228.5 - 9> 16-SEP 00:00:00 30 01-SEP 00:00:00 259 - 10> 16-OCT 12:00:00 31 01-OCT 00:00:00 289.5 - 11> 16-NOV 00:00:00 30 01-NOV 00:00:00 320 - 12> 16-DEC 12:00:00 31 01-DEC 00:00:00 350.5 -show axis/t month_julian - name axis # pts start end - MONTH_JULIAN TIME 12mi 16-JAN 12:00 15-DEC 18:00 -T0 = 01-JAN-0000 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 365.25 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 12:00:00 31 01-JAN 00:00:00 15.5 - 2> 15-FEB 06:00:00 28.25 01-FEB 00:00:00 45.25 - 3> 15-MAR 18:00:00 31 29-FEB 06:00:00 74.75 - 4> 15-APR 06:00:00 30 31-MAR 06:00:00 105.25 - 5> 15-MAY 18:00:00 31 30-APR 06:00:00 135.75 - 6> 15-JUN 06:00:00 30 31-MAY 06:00:00 166.25 - 7> 15-JUL 18:00:00 31 30-JUN 06:00:00 196.75 - 8> 15-AUG 18:00:00 31 31-JUL 06:00:00 227.75 - 9> 15-SEP 06:00:00 30 31-AUG 06:00:00 258.25 - 10> 15-OCT 18:00:00 31 30-SEP 06:00:00 288.75 - 11> 15-NOV 06:00:00 30 31-OCT 06:00:00 319.25 - 12> 15-DEC 18:00:00 31 30-NOV 06:00:00 349.75 - -GO bn_reset bn_climatology_attr -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_climatology_attr -GO bn_climatology_attr -! bn_climatology_attr.jnl -! *acm* 3/16 See ticket 2278 -! -! Add an attribute climatology_time_range when writing a computed -! climatology, listing the month/year of the start and end of the -! data used in computing it. - -! Define a monthly axis -def ax/t=1-feb-1980:1-feb-2003/np=276/unit="day"/t0=1-jan-1900 tax -let tvar = t[gt=tax] - -! entire input time range used -let clim1 = tvar[gt=month_irreg@mod] -save/file=a.nc/clobber clim1 - -! a subset of the time range used -let t_subset = tvar[t=1-feb-1990:31-dec-1999] -let clim2 = t_subset[gt=month_reg@mod] -save/append/file=a.nc clim2 - -! show the attributes -can dat/all; use a.nc -list/nohead/norow clim1.climatology_time_range, clim2.climatology_time_range - "FEB-1980:FEB-2003" "FEB-1990:DEC-1999" - - -! noleap axis -def ax/edge/t=1-feb-1980:1-feb-2003/np=276/cal=noleap/unit="hour"/t0=1-jan-1900 tax -let tvar = t[gt=tax] -let clim1 = tvar[gt=month_noleap@mod] -save/file=a.nc/clobber clim1 - -let t_subset = tvar[t=1-feb-1990:31-dec-1999] -let clim2 = t_subset[gt=month_noleap@mod] -save/append/file=a.nc clim2 - -! show the attributes -can dat/all; use a.nc -list/nohead/norow clim1.climatology_time_range, clim2.climatology_time_range - "FEB-1980:JAN-2003" "FEB-1990:DEC-1999" - - - -! If the expression compbines data from multiple ranges, indicate that - -def ax/t=1-feb-1980:1-feb-2003/np=276/unit="day"/t0=1-jan-1900 tax -let tvar = t[gt=tax] -let a = tvar[gt=month_reg@mod] - -let t_subset = tvar[t=1-feb-1990:31-dec-1999] -let b = t_subset[gt=month_reg@mod] -let c = a+b - -save/append/file=a.nc c - -can dat/all; use a.nc -! show the attributes -can dat/all; use a.nc -list/nohead/norow c.climatology_time_range - "Multiple time ranges used" - - -! The attribute created only for user-defined variables not for an expression -! -! Define a monthly axis -define axis/t=1-feb-1980:1-feb-2003/npoints=276/unit="day"/t0=1-jan-1900 tax - -let tvar = t[gt=tax] -let clim1 = tvar[gt=month_irreg@mod] -save/nobounds/file=a.nc/clobber 3*clim1 - -can dat/all; use a.nc - -! The variable did not get a climatology_time_range attribute -let vname = ..varnames -show att `vname[i=1]` - !-> show att E494 - attributes for dataset: ./a.nc - E494.missing_value = -1.E+34 - E494._FillValue = -1.E+34 - E494.long_name = 3*CLIM1 - - -GO bn_reset bn_plot_along -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot_along -GO bn_plot_along -! BN_PLOT_ALONG - -! *sh* 3/2016 - -! yes? GO bn_plot_along [debug] - -! exercise breaking up of plot command argument into lones along the -! indicated direction - -DEFINE SYMBOL debugme = ($1"SAY continuing|debug>PAUSE") - !-> DEFINE SYMBOL debugme = SAY continuing - -! basic -LET blocky10 = x[i=1:10]+y[j=1:10] -PLOT/ALONG=x blocky10 -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - -! degenerate case -- only a single line -LET blocky1 = x[i=1:10]+y[j=1:1] -PLOT/ALONG=x blocky1 -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - -! number of lines exceeds key limit (40 at time of this writing) -! automatic decimation to keep within key limit -LET blocky200 = x[i=1:10]+y[j=1:200] -PLOT/ALONG=x blocky200 -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - -! /nokey - no longer limited to the number of keys that can be drawn -LET blocky50 = x[i=1:10]+y[j=1:50] -PLOT/ALONG=x/nokey blocky50 -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - -! /nokey -- number of lines exceeds line limit (200 at time of this writing) -! automatic decimation to keep within line limit -LET blocky201 = x[i=1:10]+y[j=1:201] -PLOT/ALONG=x/nokey blocky201 -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - -! multi-dimensional -LET blockxyz = 0.1*T[l=1:10]+x[i=1:2]+10*y[j=1:5]+100*z[k=1:30] -LET blockxyz_little = 0.1*T[l=1:10]+x[i=1:2]+10*y[j=1:3] +100*z[k=1:4] -PLOT/ALONG=t blockxyz_little -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing -PLOT/ALONG=t blockxyz ! decimate to key limit -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing -PLOT/ALONG=t/nokey blockxyz ! decimate to line limit -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - - -! ensemble application -LET block = x[i=1:2]+10*y[j=1:3]+100*z[k=1:4] -LET sin_block = SIN(T[l=1:100]/10)*block -LET ens_sin_block = sin_block*( (20+_E[m=1:20])/20 ) -PLOT/ALONG=t ens_sin_block[i=1,j=2,k=3] - -GO bn_reset bn_show_commands -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_show_commands -GO bn_show_commands -! bn_show_commands.jnl -! Testing results for ticket 2078: SHOW COMMAND cmnd subcmnd -! Also new SHOW COMMAND/BRIEF -! 3/2016 *acm* -! -! When commands are highly abbreviated, which command/subcommand is -! executed depends on the order in which they are listed in Ferret -! internal data structures. Keep this output consistent if new commands -! added or command list are reordered. - -! Commands with subcommands - -sho command set - SET - SET WINDOW/SIZE/NEW/LOCATION/ASPECT/CLEAR/TITLE/QUALITY/ANTIALIA/NOANTIAL - /ENGINE/COLOR/OPACITY/THICKEN/XPIXELS/YPIXELS/XINCHES/YINCHES/TEXTPROM - /OUTLINE/SCALE - SET REGION/I/J/K/L/M/N/X/Y/Z/T/E/F/DX/DY/DZ/DT/DE/DF/DI/DJ/DK/DL/DM/DN - SET VIEWPORT - SET EXPRSION - SET LIST/PRECISIO/FILE/FORMAT/APPEND/HEADING/NCFORMAT/ENDIAN/DEFLATE/SHUFFLE - /XCHUNK/YCHUNK/ZCHUNK/TCHUNK/ECHUNK/FCHUNK/OUTTYPE - SET DATA/EZ/VARIABLE/TITLE/FORMAT/GRID/SKIP/COLUMNS/SAVE/RESTORE/ORDER - /TYPE/SWAP/REGULART/DELIMITE/STRICT/FEATURE/FMASK - SET MODE/LAST - SET MOVI/FILE/COMPRESS/LASER/START - SET VARIABLE/TITLE/UNITS/GRID/BAD/DATASET/NAME/SCALEFAC/OFFSET/OUTTYPE - /LAYERZ/CURVILIN - SET GRID/SAVE/RESTORE - SET AXIS/MODULO/DEPTH/CALENDAR/T0/UNITS/STRIDE/OFFSET/REGULAR/OUTTYPE/NAME - SET MEMORY/SIZE - SET ATTRIBUT/TYPE/DATASET/OUTPUT/LIKE/QUIET - SET NCCACHE/SIZE/NELEMS/PREEMPT - SET REDIRECT/TEE/JOURNAL/FILE/APPEND/CLOBBER - SET GIFFILE - SET TEXT/FONT/COLOR/ITALIC/BOLD/ISIZ -sho command set w ! SET WINDOW - SET WINDOW/SIZE/NEW/LOCATION/ASPECT/CLEAR/TITLE/QUALITY/ANTIALIA/NOANTIAL - /ENGINE/COLOR/OPACITY/THICKEN/XPIXELS/YPIXELS/XINCHES/YINCHES/TEXTPROM - /OUTLINE/SCALE -sho command set r ! SET REGION - SET REGION/I/J/K/L/M/N/X/Y/Z/T/E/F/DX/DY/DZ/DT/DE/DF/DI/DJ/DK/DL/DM/DN -sho command set v ! SET VIEWPORT - SET VIEWPORT -sho command set e ! SET EXPRSION - SET EXPRSION -sho command set l ! SET LIST - SET LIST/PRECISIO/FILE/FORMAT/APPEND/HEADING/NCFORMAT/ENDIAN/DEFLATE/SHUFFLE - /XCHUNK/YCHUNK/ZCHUNK/TCHUNK/ECHUNK/FCHUNK/OUTTYPE -sho command set d ! SET DATA - SET DATA/EZ/VARIABLE/TITLE/FORMAT/GRID/SKIP/COLUMNS/SAVE/RESTORE/ORDER - /TYPE/SWAP/REGULART/DELIMITE/STRICT/FEATURE/FMASK -sho command set m ! SET MODE - SET MODE/LAST -sho command set mov! SET MOVIE - SET MOVI/FILE/COMPRESS/LASER/START -sho command set va ! SET VARIABLE - SET VARIABLE/TITLE/UNITS/GRID/BAD/DATASET/NAME/SCALEFAC/OFFSET/OUTTYPE - /LAYERZ/CURVILIN -sho command set g ! SET GRID - SET GRID/SAVE/RESTORE -sho command set a ! SET AXIS - SET AXIS/MODULO/DEPTH/CALENDAR/T0/UNITS/STRIDE/OFFSET/REGULAR/OUTTYPE/NAME -sho command set me ! SET MEMORY - SET MEMORY/SIZE -sho command set at ! SET ATTRIBUTE - SET ATTRIBUT/TYPE/DATASET/OUTPUT/LIKE/QUIET -sho command set n ! SET NCCACHE - SET NCCACHE/SIZE/NELEMS/PREEMPT -sho command set red! SET REDIRECT - SET REDIRECT/TEE/JOURNAL/FILE/APPEND/CLOBBER -sho command set gi ! SET GIFFILE - SET GIFFILE - -sho command sho - SHOW/ALL - SHOW WINDOW/ALL - SHOW REGION/ALL - SHOW AXIS/ALL/I/J/K/L/M/N/X/Y/Z/T/E/F/XML/OUTFILE/APPEND/CLOBBER - SHOW EXPRSION/ALL - SHOW LIST/ALL - SHOW DATA/ALL/BRIEF/FULL/VARIABLE/FILES/XML/ATTR/OUTFILE/APPEND/CLOBBER - /HIDDEN/MEMBERS - SHOW MODE/ALL - SHOW MOVIE/ALL - SHOW VARIABLE/ALL/DATASET/USER/XML/OUTFILE/APPEND/CLOBBER/TREE/LAYERZ/CURVILIN - SHOW COMMANDS/ALL/BRIEF - SHOW MEMORY/ALL/DIAGNOST/TEMPORY/PERMANT/FREE - SHOW GRID/ALL/I/J/K/L/M/N/X/Y/Z/T/E/F/DYNAMIC/XML/OUTFILE/APPEND/CLOBBER - SHOW VIEWPORT/ALL - SHOW TRANFORM/ALL - SHOW ALIAS/ALL - SHOW SYMBOL/ALL - SHOW ATTRIBUT/ALL/DATASET/OUTPUT - SHOW NCCACHE - SHOW GIFFILE - SHOW FUNCTION/ALL/BRIEF/EXTERNAL/INTERNAL/DETAILS - SHOW TEXT - SHOW QUERIES/ALL -sho command sho w ! SHOW WINDOW - SHOW WINDOW/ALL -sho command sho r ! SHOW REGION - SHOW REGION/ALL -sho command sho a ! SHOW AXIS - SHOW AXIS/ALL/I/J/K/L/M/N/X/Y/Z/T/E/F/XML/OUTFILE/APPEND/CLOBBER -sho command sho e ! SHOW EXPRSTION - SHOW EXPRSION/ALL -sho command sho l ! SHOW LIST - SHOW LIST/ALL -sho command sho d ! SHOW DATA - SHOW DATA/ALL/BRIEF/FULL/VARIABLE/FILES/XML/ATTR/OUTFILE/APPEND/CLOBBER - /HIDDEN/MEMBERS -sho command sho m ! SHOW MODE - SHOW MODE/ALL -sho command sho mov! SHOW MOVIE - SHOW MOVIE/ALL -sho command sho v ! SHOW VARIABLE - SHOW VARIABLE/ALL/DATASET/USER/XML/OUTFILE/APPEND/CLOBBER/TREE/LAYERZ/CURVILIN -sho command sho c ! SHOW COMMANDS - SHOW COMMANDS/ALL/BRIEF -sho command sho me ! SHOW MEMORY - SHOW MEMORY/ALL/DIAGNOST/TEMPORY/PERMANT/FREE -sho command sho g ! SHOW GRID - SHOW GRID/ALL/I/J/K/L/M/N/X/Y/Z/T/E/F/DYNAMIC/XML/OUTFILE/APPEND/CLOBBER -sho command sho vi ! SHOW VIEWPORT - SHOW VIEWPORT/ALL -sho command sho t ! SHOW TRANSFORM - SHOW TRANFORM/ALL -sho command sho al ! SHOW ALIAS - SHOW ALIAS/ALL -sho command sho s ! SHOW SYMBOL - SHOW SYMBOL/ALL -sho command sho at ! SHOW ATTRIBUTE - SHOW ATTRIBUT/ALL/DATASET/OUTPUT -sho command sho n ! SHOW NCCACHE - SHOW NCCACHE -sho command sho gi ! SHOW GIFFILE - SHOW GIFFILE -sho command sho f ! SHOW FUNCTION - SHOW FUNCTION/ALL/BRIEF/EXTERNAL/INTERNAL/DETAILS -sho command sho q ! SHOW QUERIES - SHOW QUERIES/ALL - -sho command can - CANCEL - CANCEL WIND/ALL - CANCEL REGION/ALL/I/J/K/L/M/N/X/Y/Z/T/E/F - CANCEL MEMORY/ALL/TEMPORY/PERMANT - CANCEL EXPRSION/ALL - CANCEL LIST/ALL/PRECISIO/FILE/FORMAT/HEADING/APPEND/OUTTYPE - CANCEL DATA/ALL/NOERROR/FMASK - CANCEL MODE - CANCEL MOVIE/ALL - CANCEL VIEWPORT - CANCEL VARIABLE/ALL/DATASET/LAYERZ/CURVILIN/NOERROR - CANCEL AXIS/MODULO/ALL/DEPTH/STRIDE - CANCEL GRID - CANCEL ATTRIBUT/OUTPUT/DATASET - CANCEL REDIRECT - CANCEL ALIAS/ALL - CANCEL SYMBOL/ALL - CANCEL NCCACHE - CANCEL PYVAR/ALL/DATASET - CANCEL TEXT/FONT/COLOR/ITALIC/BOLD/ISIZ/ALL -sho command can w ! CANCEL WINDOW - CANCEL WIND/ALL -sho command can r ! CANCEL REGION - CANCEL REGION/ALL/I/J/K/L/M/N/X/Y/Z/T/E/F -sho command can m ! CANCEL MEMORY - CANCEL MEMORY/ALL/TEMPORY/PERMANT -sho command can e ! CANCEL EXPRSION - CANCEL EXPRSION/ALL -sho command can l ! CANCEL LIST - CANCEL LIST/ALL/PRECISIO/FILE/FORMAT/HEADING/APPEND/OUTTYPE -sho command can d ! CANCEL DATA - CANCEL DATA/ALL/NOERROR/FMASK -sho command can mo ! CANCEL MODE - CANCEL MODE -sho command can mov! CANCEL MOVIE - CANCEL MOVIE/ALL -sho command can v ! CANCEL VIEWPORT - CANCEL VIEWPORT -sho command can va ! CANCEL VARIABLE - CANCEL VARIABLE/ALL/DATASET/LAYERZ/CURVILIN/NOERROR -sho command can a ! CANCEL AXIS - CANCEL AXIS/MODULO/ALL/DEPTH/STRIDE -sho command can g ! CANCEL GRID - CANCEL GRID -sho command can at ! CANCEL ATTRIBUTE - CANCEL ATTRIBUT/OUTPUT/DATASET -sho command can red! CANCEL REDIRECT - CANCEL REDIRECT -sho command can al ! CANCEL ALIAS - CANCEL ALIAS/ALL -sho command can s ! CANCEL SYMBOL - CANCEL SYMBOL/ALL -sho command can n ! CANCEL NCCACHE - CANCEL NCCACHE - -sho command def - DEFINE - DEFINE REGION/I/J/K/L/M/N/X/Y/Z/T/E/F/DEFAULT/DX/DY/DZ/DT/DE/DF/DI/DJ/DK - /DL/DM/DN - DEFINE GRID/X/Y/Z/T/E/F/FILE/LIKE - DEFINE VARIABLE/TITLE/UNITS/QUIET/DATASET/BAD/REMOTE/LIKE - DEFINE AXIS/X/Y/Z/T/E/F/FILE/UNITS/T0/NAME/FROMDATA/DEPTH/MODULO/NPOINTS - /EDGES/CALENDAR/BOUNDS/QUIET/MONTHLY/LIKE - DEFINE VIEWPORT/TEXT/XLIMITS/YLIMITS/SIZE/ORIGIN/CLIP/AXES - DEFINE ALIAS - DEFINE SYMBOL - DEFINE ATTRIBUT/DATASET/TYPE/OUTPUT/QUIET - DEFINE PYFUNC/NAME - DEFINE DATA/AGGREGAT/T/E/F/TITLE/QUIET/HIDE/U/TAXIS/FAXIS/TOVERLAP - DEFINE ANNOTATI/USER/NORM/NOUSER/XPOS/YPOS/HALIGN/VALIGN/ANGLE/SIZE/NLAB -sho command def r ! DEFINE REGION - DEFINE REGION/I/J/K/L/M/N/X/Y/Z/T/E/F/DEFAULT/DX/DY/DZ/DT/DE/DF/DI/DJ/DK - /DL/DM/DN -sho command def g ! DEFINE GRID - DEFINE GRID/X/Y/Z/T/E/F/FILE/LIKE -sho command def v ! DEFINE VARIABLE - DEFINE VARIABLE/TITLE/UNITS/QUIET/DATASET/BAD/REMOTE/LIKE -sho command def a ! DEFINE AXIS - DEFINE AXIS/X/Y/Z/T/E/F/FILE/UNITS/T0/NAME/FROMDATA/DEPTH/MODULO/NPOINTS - /EDGES/CALENDAR/BOUNDS/QUIET/MONTHLY/LIKE -sho command def vi ! DEFINE VIEWPORT - DEFINE VIEWPORT/TEXT/XLIMITS/YLIMITS/SIZE/ORIGIN/CLIP/AXES -sho command def al ! DEFINE ALIAS - DEFINE ALIAS -sho command def s ! DEFINE SYMBOL - DEFINE SYMBOL -sho command def at ! DEFINE ATTRIBUTE - DEFINE ATTRIBUT/DATASET/TYPE/OUTPUT/QUIET -sho command def P ! DEFINE PYFUNC - DEFINE PYFUNC/NAME -sho command def d ! DEFINE DATA - DEFINE DATA/AGGREGAT/T/E/F/TITLE/QUIET/HIDE/U/TAXIS/FAXIS/TOVERLAP -sho command def an ! DEFINE ANNOTATE - DEFINE ANNOTATI/USER/NORM/NOUSER/XPOS/YPOS/HALIGN/VALIGN/ANGLE/SIZE/NLAB - - -! Also new SHOW COMMAND/BRIEF -! Single commands, abbreviated. - -sho command/brief a - ANNOTATE -sho command/brief c - CANCEL - CANCEL WIND - CANCEL REGION - CANCEL MEMORY - CANCEL EXPRSION - CANCEL LIST - CANCEL DATA - CANCEL MODE - CANCEL MOVIE - CANCEL VIEWPORT - CANCEL VARIABLE - CANCEL AXIS - CANCEL GRID - CANCEL ATTRIBUT - CANCEL REDIRECT - CANCEL ALIAS - CANCEL SYMBOL - CANCEL NCCACHE - CANCEL PYVAR - CANCEL TEXT -sho command/brief ca - CANCEL - CANCEL WIND - CANCEL REGION - CANCEL MEMORY - CANCEL EXPRSION - CANCEL LIST - CANCEL DATA - CANCEL MODE - CANCEL MOVIE - CANCEL VIEWPORT - CANCEL VARIABLE - CANCEL AXIS - CANCEL GRID - CANCEL ATTRIBUT - CANCEL REDIRECT - CANCEL ALIAS - CANCEL SYMBOL - CANCEL NCCACHE - CANCEL PYVAR - CANCEL TEXT -sho command/brief co - CONTOUR -sho command/brief d - DEFINE - DEFINE REGION - DEFINE GRID - DEFINE VARIABLE - DEFINE AXIS - DEFINE VIEWPORT - DEFINE ALIAS - DEFINE SYMBOL - DEFINE ATTRIBUT - DEFINE PYFUNC - DEFINE DATA - DEFINE ANNOTATI -sho command/brief e - EXIT -sho command/brief el - ELSE -sho command/brief en - ENDIF -sho command/brief ex - EXIT -sho command/brief f - FRAME -sho command/brief h - HELP -sho command/brief h - HELP -sho command/brief i - IF -sho command/brief l - LIST -sho command/brief li - LIST -sho command/brief lo - LOAD -sho command/brief m - MESSAGE -sho command/brief p - PLOT -sho command/brief pl - PLOT -sho command/brief po - POLYGON -sho command/brief pp - PPLUS -sho command/brief q - QUERY -sho command/brief r - REPEAT -sho command/brief s - SET - SET WINDOW - SET REGION - SET VIEWPORT - SET EXPRSION - SET LIST - SET DATA - SET MODE - SET MOVI - SET VARIABLE - SET GRID - SET AXIS - SET MEMORY - SET ATTRIBUT - SET NCCACHE - SET REDIRECT - SET GIFFILE - SET TEXT -sho command/brief se - SET - SET WINDOW - SET REGION - SET VIEWPORT - SET EXPRSION - SET LIST - SET DATA - SET MODE - SET MOVI - SET VARIABLE - SET GRID - SET AXIS - SET MEMORY - SET ATTRIBUT - SET NCCACHE - SET REDIRECT - SET GIFFILE - SET TEXT -sho command/brief sh - SHOW - SHOW WINDOW - SHOW REGION - SHOW AXIS - SHOW EXPRSION - SHOW LIST - SHOW DATA - SHOW MODE - SHOW MOVIE - SHOW VARIABLE - SHOW COMMANDS - SHOW MEMORY - SHOW GRID - SHOW VIEWPORT - SHOW TRANFORM - SHOW ALIAS - SHOW SYMBOL - SHOW ATTRIBUT - SHOW NCCACHE - SHOW GIFFILE - SHOW FUNCTION - SHOW TEXT - SHOW QUERIES -sho command/brief sp - SPAWN -sho command/brief st - STAT -sho command/brief u - Not a recognized command: u - - Use SHOW ALIAS to see alternative command names -sho command/brief v - VECTOR - - -! All the commands, no subcommands, no qualifiers -SHOW COMMAND/BRIEF - Commands in Program PyFerret (debug) version7.51: - SET - SHOW - CANCEL - CONTOUR - LIST - PLOT - GO - HELP - LOAD - DEFINE - EXIT - MESSAGE - VECTOR - PPLUS - FRAME - REPEAT - STAT - SHADE - SPAWN - WIRE - QUERY - IF - ELSE - ELIF - ENDIF - POLYGON - ANNOTATE - - Use SHOW ALIAS to see alternative command names - -! With a command, just show subcommands, no qualifiers -SHOW COMMAND/BRIEF sho - SHOW - SHOW WINDOW - SHOW REGION - SHOW AXIS - SHOW EXPRSION - SHOW LIST - SHOW DATA - SHOW MODE - SHOW MOVIE - SHOW VARIABLE - SHOW COMMANDS - SHOW MEMORY - SHOW GRID - SHOW VIEWPORT - SHOW TRANFORM - SHOW ALIAS - SHOW SYMBOL - SHOW ATTRIBUT - SHOW NCCACHE - SHOW GIFFILE - SHOW FUNCTION - SHOW TEXT - SHOW QUERIES - -! With a command and subcommand, no qualifiers -SHOW COMMAND/BRIEF sho da - SHOW DATA - - -GO bn_reset bn_plot_decimate -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot_decimate -GO bn_plot_decimate -! BN_PLOT_SKIP - -! *acm* 3/2016 - -! yes? GO bn_plot_skip [debug] - -! based on PLOT/ALONG tests. -! PLOT/SKIP=n for /SYMBOL plots makes only every SKIP symbol. - -DEFINE SYMBOL debugme = ($1"SAY continuing|debug>PAUSE") - !-> DEFINE SYMBOL debugme = SAY continuing - -DEFINE SYMBOL deci = 2 - -! basic -LET blocky10 = x[i=1:10]+y[j=1:10] -PLOT/SYM/LINE/SKIP=($deci)/ALONG=x blocky10 - !-> PLOT/SYM/LINE/SKIP=2/ALONG=x blocky10 -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - -! degenerate case -- only a single line -LET blocky1 = x[i=1:10]+y[j=1:1] -PLOT/SYM/LINE/SKIP=($deci)/ALONG=x blocky1 - !-> PLOT/SYM/LINE/SKIP=2/ALONG=x blocky1 -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - -! number of lines exceeds key limit (40 at time of this writing) -! automatic decimation to keep within key limit -LET blocky200 = x[i=1:10]+y[j=1:200] -PLOT/SYM/LINE/SKIP=($deci)/ALONG=x blocky200 - !-> PLOT/SYM/LINE/SKIP=2/ALONG=x blocky200 -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - -! /nokey - no longer limited to the number of keys that can be drawn -LET blocky50 = x[i=1:10]+y[j=1:50] -PLOT/SYM/LINE/SKIP=($deci)/ALONG=x/nokey blocky50 - !-> PLOT/SYM/LINE/SKIP=2/ALONG=x/nokey blocky50 -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - -! /nokey -- number of lines exceeds line limit (200 at time of this writing) -! automatic decimation to keep within line limit -LET blocky201 = x[i=1:10]+y[j=1:201] -PLOT/SYM/LINE/SKIP=($deci)/ALONG=x/nokey blocky201 - !-> PLOT/SYM/LINE/SKIP=2/ALONG=x/nokey blocky201 -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - -! multi-dimensional -LET blockxyz = 0.1*T[l=1:10]+x[i=1:2]+10*y[j=1:5]+100*z[k=1:30] -LET blockxyz_little = 0.1*T[l=1:10]+x[i=1:2]+10*y[j=1:3] +100*z[k=1:4] -PLOT/SYM/LINE/SKIP=($deci)/ALONG=t blockxyz_little - !-> PLOT/SYM/LINE/SKIP=2/ALONG=t blockxyz_little -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing -PLOT/SYM/LINE/SKIP=($deci)/ALONG=t blockxyz ! decimate to key limit - !-> PLOT/SYM/LINE/SKIP=2/ALONG=t blockxyz -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - -define symbol deci = 5 -PLOT/SYM/LINE/SKIP=($deci)/ALONG=t/nokey blockxyz ! decimate to line limit - !-> PLOT/SYM/LINE/SKIP=5/ALONG=t/nokey blockxyz -($debugme) - !-> MESSAGE/CONTINUE continuing -continuing - - -! ensemble application -! Here the symbols appear on lines automatically for distinguishing -! large number of lines. /SKIP works without explicitly saying /SYM -LET block = x[i=1:2]+10*y[j=1:3]+100*z[k=1:4] -LET sin_block = SIN(T[l=1:100]/10)*block -LET ens_sin_block = sin_block*( (20+_E[m=1:20])/20 ) -PLOT/SKIP=($deci)/ALONG=t ens_sin_block[i=1,j=2,k=3] - !-> PLOT/SKIP=5/ALONG=t ens_sin_block[i=1,j=2,k=3] - -GO bn_reset bn_auto_tprec -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_auto_tprec -GO bn_auto_tprec -! bn_auto_tprec.jnl -! See ticket 2405 -! Time labels on plots always just get the precision from MODE CALENDAR -! Instead, use the same logic as is used for text labels, automatically adjust. -! (later make this the default setting??) -! acm* 3/17 check the URL with TEST_OPENDAP befor trying to open it. - -set mode calendar:auto -show mode calendar - MODE STATE ARGUMENT - CALENDAR SET auto - -use levitus_climatology -let ttim = temp + t[gt=tax] - -! Varies in seconds -define axis/t/units="seconds"/t0="1-jan-2001" tax = {1,12,13,14,16,17,18,19,24} - -list/k=1/x=60/y=-40 ttim - VARIABLE : TEMP + T[GT=TAX] - FILENAME : levitus_climatology.cdf - SUBSET : 9 points (TIME) - LONGITUDE: 60E (interpolated) - LATITUDE : 40S (interpolated) - DEPTH (m): 0 - 01-JAN-2001 00:00:01 / 1: 15.53125 - 01-JAN-2001 00:00:12 / 2: 26.53125 - 01-JAN-2001 00:00:13 / 3: 27.53125 - 01-JAN-2001 00:00:14 / 4: 28.53125 - 01-JAN-2001 00:00:16 / 5: 30.53125 - 01-JAN-2001 00:00:17 / 6: 31.53125 - 01-JAN-2001 00:00:18 / 7: 32.53125 - 01-JAN-2001 00:00:19 / 8: 33.53125 - 01-JAN-2001 00:00:24 / 9: 38.53125 -shade/title="seconds"/l=9/k=1/x=60:70/y=-40:-30 ttim; sh sym lab($labnum_t) - !-> sh sym lab2 -LAB2 = "TIME : 01-JAN-2001 00:00:24" - -! Varies in minutes, fractions of minutes -define axis/t/units="minutes"/t0="1-jan-2001" tax = {1,1.1,12,13,14,16,17,18.5,19,24} -list/k=1/x=60/y=-40 ttim - VARIABLE : TEMP + T[GT=TAX] - FILENAME : levitus_climatology.cdf - SUBSET : 10 points (TIME) - LONGITUDE: 60E (interpolated) - LATITUDE : 40S (interpolated) - DEPTH (m): 0 - 01-JAN-2001 00:01:00 / 1: 15.53125 - 01-JAN-2001 00:01:06 / 2: 15.63125 - 01-JAN-2001 00:12:00 / 3: 26.53125 - 01-JAN-2001 00:13:00 / 4: 27.53125 - 01-JAN-2001 00:14:00 / 5: 28.53125 - 01-JAN-2001 00:16:00 / 6: 30.53125 - 01-JAN-2001 00:17:00 / 7: 31.53125 - 01-JAN-2001 00:18:30 / 8: 33.03125 - 01-JAN-2001 00:19:00 / 9: 33.53125 - 01-JAN-2001 00:24:00 / 10: 38.53125 -shade/title="minutes/fractions of minutes"/l=9/k=1/x=60:70/y=-40:-30 ttim; sh sym lab($labnum_t) - !-> sh sym lab2 -LAB2 = "TIME : 01-JAN-2001 00:19:00" - -! varies in hours, fractions of hours -define axis/t/units="hour"/t0="1-jan-2001" tax = {1,1.1,12.1,12.2,14,16,17,18.5,19,24} -list/k=1/x=60/y=-40 ttim - VARIABLE : TEMP + T[GT=TAX] - FILENAME : levitus_climatology.cdf - SUBSET : 10 points (TIME) - LONGITUDE: 60E (interpolated) - LATITUDE : 40S (interpolated) - DEPTH (m): 0 - 01-JAN-2001 01:00:00 / 1: 15.53125 - 01-JAN-2001 01:06:00 / 2: 15.63125 - 01-JAN-2001 12:06:00 / 3: 26.63125 - 01-JAN-2001 12:12:00 / 4: 26.73125 - 01-JAN-2001 14:00:00 / 5: 28.53125 - 01-JAN-2001 16:00:00 / 6: 30.53125 - 01-JAN-2001 17:00:00 / 7: 31.53125 - 01-JAN-2001 18:30:00 / 8: 33.03125 - 01-JAN-2001 19:00:00 / 9: 33.53125 - 02-JAN-2001 00:00:00 / 10: 38.53125 -shade/title="hours/fractions of hours"/l=3/k=1/x=60:70/y=-40:-30 ttim; sh sym lab($labnum_t) - !-> sh sym lab2 -LAB2 = "TIME : 01-JAN-2001 12:06" - -! 6-hour even spacing -define axis/t=1-jan-2001:8-jan-2001:6/units="hour"/t0="1-jan-2001" tax -list/k=1/x=60/y=-40/L=1:6 ttim - VARIABLE : TEMP + T[GT=TAX] - FILENAME : levitus_climatology.cdf - SUBSET : 6 points (TIME) - LONGITUDE: 60E (interpolated) - LATITUDE : 40S (interpolated) - DEPTH (m): 0 - 01-JAN-2001 00:00 / 1: 14.53125 - 01-JAN-2001 06:00 / 2: 20.53125 - 01-JAN-2001 12:00 / 3: 26.53125 - 01-JAN-2001 18:00 / 4: 32.53125 - 02-JAN-2001 00:00 / 5: 38.53125 - 02-JAN-2001 06:00 / 6: 44.53125 -shade/title="hours "/l=3/k=1/x=60:70/y=-40:-30 ttim; sh sym lab($labnum_t) - !-> sh sym lab2 -LAB2 = "TIME : 01-JAN-2001 12:00" - -! Reynolds SST weekly, even 7-day spacing - -IF `test_opendap("http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/reynolds_sst_wk.nc") EQ 0` THEN - !-> IF 1 THEN - use http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/reynolds_sst_wk.nc - list/x=180/y=0/l=20:25 fsst - VARIABLE : Filtered Weekly SST Means (deg C) - DATA SET : Reynolds Optimum Interpolation Weekly SST Analysis - FILENAME : reynolds_sst_wk.nc - FILEPATH : http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/ - SUBSET : 6 points (TIME) - LONGITUDE: 180E (interpolated) - LATITUDE : 0 (interpolated) - 18-MAY-1982 00 / 20: 29.77536 - 25-MAY-1982 00 / 21: 29.79982 - 01-JUN-1982 00 / 22: 29.82545 - 08-JUN-1982 00 / 23: 29.95250 - 15-JUN-1982 00 / 24: 30.14473 - 22-JUN-1982 00 / 25: 30.27330 - shade/title="7-day axis"/l=30/x=60:70/y=-40:-30 fsst; sh sym lab($labnum_t) - !-> sh sym lab1 -LAB1 = "TIME : 27-JUL-1982 00" -ELSE -ENDIF - -! monthly climatology -use TAO_SST_clim -list/x=180/y=0 sst_clim - VARIABLE : Climatological TAO SST, 1992-1997 (Degrees C) - FILENAME : TAO_SST_clim.cdf - SUBSET : 12 points (TIME) - LONGITUDE: 180E - LATITUDE : 0 - 180E - 5 - 16-JAN / 1: 28.47123 - 15-FEB / 2: 28.02188 - 17-MAR / 3: 28.06427 - 16-APR / 4: 28.62687 - 16-MAY / 5: 28.78929 - 16-JUN / 6: 28.88602 - 16-JUL / 7: 29.11417 - 16-AUG / 8: 29.23706 - 15-SEP / 9: 29.15225 - 16-OCT / 10: 29.05856 - 15-NOV / 11: 28.97187 - 16-DEC / 12: 28.88326 -shade/title="monthly climatology"/k=1/l=5 sst_clim; sh sym lab($labnum_t) - !-> sh sym lab1 -LAB1 = "TIME : 16-MAY" - -! truemonth -use truemonth -list/x=180/y=0/l=20:25 var - VARIABLE : COS(T[GT=TRUEMONTH]/100) - FILENAME : truemonth.nc - SUBSET : 6 points (TIME) - 16-AUG-1951 / 20: 0.9987782 - 16-SEP-1951 / 21: 0.9378386 - 16-OCT-1951 / 22: 0.7903357 - 16-NOV-1951 / 23: 0.5698709 - 16-DEC-1951 / 24: 0.2968155 - 16-JAN-1952 / 25: -0.0086413 - -let ttim = temp[d=levitus_climatology] + var -shade/title="true-month axis"/L=32/x=60:70/y=-40:-30 ttim; sh sym lab($labnum_t) - !-> sh sym lab2 -LAB2 = "TIME : 16-AUG-1952" - -set mode/last calendar - -! Is the default precision of minutes restored? -use truemonth -let ttim = temp[d=levitus_climatology] + var -shade/title="true-month axis"/L=32/x=60:70/y=-40:-30 ttim; sh sym lab($labnum_t) - !-> sh sym lab2 -LAB2 = "TIME : 16-AUG-1952 12:00" - -!GO bn_reset -!GO bn_warn_subspan - -GO bn_reset bn_coordvars_atts -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_coordvars_atts -GO bn_coordvars_atts -! bn_coordvars_atts.jnl -! 5/2016 *acm* see ticket 2413 -! Additional attribute keywords for returning coordinate variable -! names and number of coordinate vars, to distinguish coordinate -! info from dimension info. - -! File has dimensions which are not coordinate variables, for -! the dimensions of the 2D coordinate variables. -use dims_not_coord.nc -list/nohead ..ndims - 3.000000 -list/nohead ..dimnames - 1 / 1:"ETA" - 2 / 2:"TAU1" - 3 / 3:"ZT_OCEAN" -list/nohead ..ncoordvars - 1.000000 -list/nohead ..coordnames - "ZT_OCEAN" -let cname = ..coordnames -sh axis `cname[i=1]` - !-> sh axis ZT_OCEAN - name axis # pts start end - ZT_OCEAN DEPTH (m) 1 r- 15 15 - Axis span (to cell edges) = 1 - -! The depth axis has coordinate bounds; the length-2 bnds -! dimension is not a coordinate variable -use levitus_3d_subset.nc -list/nohead ..ndims - 4.000000 -list/nohead ..dimnames - 1 / 1:"XAXLEVITR101_102" - 2 / 2:"YAXLEVITR41_42" - 3 / 3:"ZAXLEVITR" - 4 / 4:"bnds" -list/nohead ..ncoordvars - 3.000000 -list/nohead ..coordnames - 1 / 1:"XAXLEVITR101_102" - 2 / 2:"YAXLEVITR41_42" - 3 / 3:"ZAXLEVITR" - -! String variables in netcdf files have string-length -! dimensions which are not coordinate variables. -use numstring.nc -list/nohead ..ndims - 4.000000 -list/nohead ..dimnames - 1 / 1:"XAX1" - 2 / 2:"ZAX3" - 3 / 3:"XAX1_10" - 4 / 4:"STRING1_7" -list/nohead ..ncoordvars - 3.000000 -list/nohead ..coordnames - 1 / 1:"XAX1" - 2 / 2:"ZAX3" - 3 / 3:"XAX1_10" - -! *********** v7.1 Additions *********** - -GO bn_reset bn710_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn710_bug_fixes -GO bn710_bug_fixes -! bn710_bug_fixes.jnl -! test various fixes that went into version 7.1 -! 6/16 *acm* -! - -! Bug 2445 missing or repeated coords when axis marked as regular -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_reg_axis_check -! err700_reg_axis_check.jnl -! Ticket 2445: regular axis, test for valid line_delta -! ACM 7/6/2016 - -use bug2445.nc -show data - currently SET data sets: - 1> ./data/bug2445.nc (default) - name title I J K L - XAX 1:5 ... ... ... - (invalid coordinate axis) - YAX ... 1:3 ... ... - (invalid coordinate axis) - XX X[GX=xax] 1:5 ... ... ... - YY Y var ... 1:3 ... ... - - -! Repeated coordinates in first 2 coordinates of x axis. -list xx - VARIABLE : X[GX=xax] - FILENAME : bug2445.nc - SUBSET : 5 points (X) - 1 / 1: 1.000000 - 2 / 2: 2.000000 - 3 / 3: 3.000000 - 4 / 4: 4.000000 - 5 / 5: 5.000000 -list xax - VARIABLE : Maize harvest - invalid coordinate axis - FILENAME : bug2445.nc - SUBSET : 5 points (X) - 1 / 1: 1.000000 - 2 / 2: 1.000000 - 3 / 3: 1.000000 - 4 / 4: 1.000000 - 5 / 5: 1.000000 - -! Missing coordinate in first 2 coordinates of y axis. -! Coordinate data cannot be missing. -list yy - VARIABLE : Y var - FILENAME : bug2445.nc - SUBSET : 3 points (Y) - 1 / 1: 10.00000 - 2 / 2: 20.00000 - 3 / 3: 30.00000 -list yax - VARIABLE : Maize harvest - invalid coordinate axis - FILENAME : bug2445.nc - SUBSET : 3 points (Y) - 1 / 1: 1.000000E+00 - 2 / 2: 9.969210E+36 - 3 / 3: 1.000000E+00 - -! Bug 2446 include script name on warning about unclosed IF block -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_unclosed_if -! err71_unclosed_if.jnl -! Ticket 2446 -! Add the script name when reporting an unclosed IF block -! ACM 7/2016 - -go unclosed_if.sub - -let a = 1 -if `a eq 1` THEN - !-> if 1 THEN -SAY YES -YES -let b = 1 - - -! Bug 2446 inheriting attributes -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_inherit_all -! err700_inherit_all.jnl -! Ticket 2447: If all attributes are inherited, missing-value flags -! are wrong. - -! This non-standardfile has no missing-value attributes. -use no_miss_att.nc -sh att a - attributes for dataset: ./data/no_miss_att.nc - A.min_value = 1 - A.max_value = 3 - A.long_name = {1,2,3} - -! Define a variable, using some missing-value flag -let/bad=9999 b = if a ne 2 then a else 9999 -list b - VARIABLE : IF A NE 2 THEN A ELSE 9999 - FILENAME : no_miss_att.nc - SUBSET : 3 points (X) - 1 / 1: 1.000000 - 2 / 2: .... - 3 / 3: 3.000000 - -! Now inherit the attributes from variable a. -set att/like=a b -show att b - attributes for user-defined variables - b.missing_value = 9999 - b.min_value = 1 - b.max_value = 3 - b.long_name = {1,2,3} - -! The missing-value flag is not written, but the value 9999 is -save/file=a.nc/clobber b - -can var/all -use a - -! Element 2 should be missing. Previously lists out the 9999. -list b - VARIABLE : {1,2,3} - FILENAME : a.nc - SUBSET : 3 points (X) - 1 / 1: 1.000000 - 2 / 2: .... - 3 / 3: 3.000000 - - -! Bug 2458 Subspan modulo grids and SAMPLEXY -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_samplexy_subspan_modulo -! err700_samplexy_subspan_modulo.jnl -! 7/29/2016 ACM -! Ticket 2458. The result of SAMPLEXY wrong when it needs -! to do a modulo operation on a subspan modulo axis - -! Define a grid with a subspan longitude axis - -define axis/x=-100:-60:5/units=degrees_east xaxis -define axis/y=18:30:2/units=degrees_north yaxis -let var = x[gx=xaxis]+100 + 0.3*y[gy=yaxis] - -save/clobber/file=a.nc var -can var/all; use a - -list/y=22 var - VARIABLE : X[GX=XAXIS]+100 + 0.3*Y[GY=YAXIS] - FILENAME : a.nc - SUBSET : 9 points (LONGITUDE) - LATITUDE : 22N - 22N - 3 - 100W / 1: 6.60000 - 95W / 2: 11.60000 - 90W / 3: 16.60000 - 85W / 4: 21.60000 - 80W / 5: 26.60000 - 75W / 6: 31.60000 - 70W / 7: 36.60000 - 65W / 8: 41.60000 - 60W / 9: 46.60000 -list samplexy(var, {-80,80}, {22,22}) - VARIABLE : SAMPLEXY(VAR, {-80,80}, {22,22}) - FILENAME : a.nc - SUBSET : 2 points (X) - 1 / 1: 26.60000 - 2 / 2: .... - -list samplexy(var, -80, 22) ! this is ok, in the native range of the axis - VARIABLE : SAMPLEXY(VAR, -80, 22) - FILENAME : a.nc - X : 1 - 26.60000 -list samplexy(var, `360-80`, 22) ! this was wrong - !-> list samplexy(var, 280, 22) - VARIABLE : SAMPLEXY(VAR, 280, 22) - FILENAME : a.nc - X : 1 - 26.60000 -list samplexy_closest(var, `360-80`, 22) ! is ok - !-> list samplexy_closest(var, 280, 22) - VARIABLE : SAMPLEXY_CLOSEST(VAR, 280, 22) - FILENAME : a.nc - X : 1 - 26.60000 - -! Looking for a point that is not, even in a modulo sense, in the subpsan axis - -list samplexy(var, {-80,80}, {22,22}) - VARIABLE : SAMPLEXY(VAR, {-80,80}, {22,22}) - FILENAME : a.nc - SUBSET : 2 points (X) - 1 / 1: 26.60000 - 2 / 2: .... -list samplexy(var, {`360-80`,80}, {22,22}) - !-> list samplexy(var, {280,80}, {22,22}) - VARIABLE : SAMPLEXY(VAR, {280,80}, {22,22}) - FILENAME : a.nc - SUBSET : 2 points (X) - 1 / 1: 26.60000 - 2 / 2: .... -list samplexy_closest(var, {`360-80`,80}, {22,22}) - !-> list samplexy_closest(var, {280,80}, {22,22}) - VARIABLE : SAMPLEXY_CLOSEST(VAR, {280,80}, {22,22}) - FILENAME : a.nc - SUBSET : 2 points (X) - 1 / 1: 26.60000 - 2 / 2: .... - -! interpolation between grid points - -cancel mode interpolate -list/y=21.2/x=277.7 var - VARIABLE : X[GX=XAXIS]+100 + 0.3*Y[GY=YAXIS] - FILENAME : a.nc - LONGITUDE: 80W - LATITUDE : 22N - 26.60000 -set mode interpolate; list/y=21.2/x=277.7 var; cancel mode interpolate - VARIABLE : X[GX=XAXIS]+100 + 0.3*Y[GY=YAXIS] - FILENAME : a.nc - LONGITUDE: 82.3W (interpolated) - LATITUDE : 21.2N (interpolated) - 24.06000 - -! These should match the MODE INTERPOLATE result (the second was wrong). - -list samplexy(var, {-82.3,82.3}, {21.2,21.2}) - VARIABLE : SAMPLEXY(VAR, {-82.3,82.3}, {21.2,21.2}) - FILENAME : a.nc - SUBSET : 2 points (X) - 1 / 1: 24.06000 - 2 / 2: .... -list samplexy(var, {`360-82.3`,82.3}, {21.2,21.2}) - !-> list samplexy(var, {277.7,82.3}, {21.2,21.2}) - VARIABLE : SAMPLEXY(VAR, {277.7,82.3}, {21.2,21.2}) - FILENAME : a.nc - SUBSET : 2 points (X) - 1 / 1: 24.06000 - 2 / 2: .... - -! this should match the non-MODE INTERPOLATE result -list samplexy_closest(var, {`360-82.3`,82.3}, {21.2,21.2}) - !-> list samplexy_closest(var, {277.7,82.3}, {21.2,21.2}) - VARIABLE : SAMPLEXY_CLOSEST(VAR, {277.7,82.3}, {21.2,21.2}) - FILENAME : a.nc - SUBSET : 2 points (X) - 1 / 1: 26.60000 - 2 / 2: .... - -can dat/all - -! Test samplexyt functions - -define axis/t=1:5:1 tax -let vart = x[gx=xaxis]+100 + 0.3*y[gy=yaxis] + 0*t[gt=tax] -save/clobber/file=a.nc vart -can var/all; use a - -list vart[x=-80,y=21,t=2] - VARIABLE : X[GX=XAXIS]+100 + 0.3*Y[GY=YAXIS] + 0*T[GT=TAX] - FILENAME : a.nc - LONGITUDE: 80W(-80) - LATITUDE : 20N - T : 2 - 26.00000 -list samplexyt(vart, {-82.3,82.3}, {21.2,21.2}, {2,2}) - VARIABLE : SAMPLEXYT(VART, {-82.3,82.3}, {21.2,21.2}, {2,2}) - FILENAME : a.nc - SUBSET : 2 points (X) - 1 / 1: 24.06000 - 2 / 2: .... -list samplexyt(vart, {`360-82.3`,82.3}, {21.2,21.2}, {2,2}) - !-> list samplexyt(vart, {277.7,82.3}, {21.2,21.2}, {2,2}) - VARIABLE : SAMPLEXYT(VART, {277.7,82.3}, {21.2,21.2}, {2,2}) - FILENAME : a.nc - SUBSET : 2 points (X) - 1 / 1: 24.06000 - 2 / 2: .... -list samplexyt_nrst(vart, {`360-82.3`,82.3}, {21.2,21.2}, {2,2}) - !-> list samplexyt_nrst(vart, {277.7,82.3}, {21.2,21.2}, {2,2}) - VARIABLE : SAMPLEXYT_NRST(VART, {277.7,82.3}, {21.2,21.2}, {2,2}) - FILENAME : a.nc - SUBSET : 2 points (X) - 1 / 1: 26.60000 - 2 / 2: .... - -! Full-span modulo grid is ok - -use coads_climatology -list/l=1/x=-80/y=22 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - LONGITUDE: 81W(-81) - LATITUDE : 21N - TIME : 16-JAN 06:00 - 26.59093 -list samplexy(sst[l=1], -80, 22) - VARIABLE : SAMPLEXY(SST[L=1], -80, 22) - FILENAME : coads_climatology.cdf - X : 1 - TIME : 16-JAN 06:00 - 26.04466 -list samplexy(sst[l=1], `360-80`, 22) - !-> list samplexy(sst[l=1], 280, 22) - VARIABLE : SAMPLEXY(SST[L=1], 280, 22) - FILENAME : coads_climatology.cdf - X : 1 - TIME : 16-JAN 06:00 - 26.04466 -list samplexy_closest(sst[l=1], `360-80`, 22) - !-> list samplexy_closest(sst[l=1], 280, 22) - VARIABLE : SAMPLEXY_CLOSEST(SST[L=1], 280, 22) - FILENAME : coads_climatology.cdf - X : 1 - TIME : 16-JAN 06:00 - 26.59093 - -list samplexyt(sst, -80, 22, `t[gt=sst,l=1]`) - !-> list samplexyt(sst, -80, 22, 366) - VARIABLE : SAMPLEXYT(SST, -80, 22, 366) - FILENAME : coads_climatology.cdf - X : 1 - 26.04466 - - -! Bug 2463 SHADE/LEVELS and single-color data -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_levels_one_level -! err700_levels_one_level.jnl -! Ticket 2436. If the data has just one value, then shade it with -! the correct color taken from the /LEVELS and /PALETTE settings - -use coads_climatology -set view ul -shade/l=1/lev=(0,30,5) sst - -! These single-valued expressions should get the correct color from the color bar - -set view ur -shade/l=1/lev=(0,30,5) if sst gt 25 and sst le 30 then 28 -set view ll -shade/l=1/lev=(0,30,5) if sst gt 15 and sst le 20 then 18 -set view lr -shade/l=1/lev=(0,30,5) if sst gt 0 and sst le 5 then 3 -frame /file=levels_one_level.gif -can view - -! Bug xxxx Only examine key labels that are actually going to be printed -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_key -use coads_climatology -set window/aspect=0.7 1 -shade/levels="(-inf)(0,1.3,0.025)(inf)"/key=continuous/set_up sst[t=@ave]*5e-2 -ppl shakey 1, 1, 0.12, 4, -1, 4 -ppl shade -frame /file=err700_key.gif - -! Bug 2468 Symbol AX_HORIZ corrupted by an overlay -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_ax_horiz -! err700_ax_horiz.jnl -! 8/30/2016 *acm* Ticket 2468 -! Symbol axis_horiz was corrupted by overlaying a -! set of points using a list in other than the same -! direction as the axis. - -use coads_climatology -shade/l=1/pal=grayscale/x=100:140/y=-10:30 sst - -let xpts={111,115,120,129} -let ypts = {-5,10,20,23} - - -! this is ok; ax_horiz = X, ax_vert = y -plot/vs/oversym/color=red/thick/siz=0.2 xpts,ypts -sh sym ax* -AX_VERT = "Y" -AX_HORIZ = "X" - -! Now overlay points whose grid is in the E direction - -let expts = esequence(xpts) -let eypts = esequence(ypts) -shade/l=1/pal=grayscale/x=100:140/y=-10:30 sst -plot/vs/oversym/color=red/thick/siz=0.2 expts,eypts - -! this was incorrect, ax_horiz had changed to E -sh sym ax* -AX_VERT = "Y" -AX_HORIZ = "X" - -! Bug 2470 Symbol LEV_DEL incorrect on a LEV=(lo,hi,delta) -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_lev_del_symb -! err700_lev_del_symb.jnl -! 9/9/2016 -! Ticket 2470: Symbol LEV_DEL was erroneously marked as Irregular -! Also, the symbols LEV_MIN and LEV_MAX are changed to say open-ended -! when (-inf), (inf) or /lev=v is used. - -use coads_climatology - - -! LEV_DEL should be regular -shade/lev=(16.4,24.4,0.4) sst[L=1,x=290:330,y=10:40] -show sym lev* -LEV_TEXT = "(16.4,24.4,0.4)" -LEV_MIN = "16.4" -LEV_NUM = "20" -LEV_DEL = "0.4" -LEV_CENTERED_LABELS = "off" -LEV_MAX = "24.4" -LEV_ALL = "16.4,16.8,17.2,17.6,18,18.4,18.8,19.2,19.6,20,20.4,20.8,21.2,21.6,22,22.4,22.8,23.2,23.6,24,24.4" - -shade/lev=(16)(16.4)(16.8)(17.2)(17.6) sst[L=1,x=290:330,y=10:40] -show sym lev* -LEV_TEXT = "(16)(16.4)(16.8)(17.2)(17.6)" -LEV_MIN = "16" -LEV_NUM = "4" -LEV_DEL = "0.4" -LEV_CENTERED_LABELS = "off" -LEV_MAX = "17.6" -LEV_ALL = "16,16.4,16.8,17.2,17.6" - -shade/lev=(22) sst[L=1,x=290:330,y=10:40] -show sym lev* -LEV_TEXT = "(22)" -LEV_MIN = "22" -LEV_NUM = "1" -LEV_DEL = "none" -LEV_CENTERED_LABELS = "off" -LEV_MAX = "22" -LEV_ALL = "22" - -! LEV_DEL should be irregular - -shade/lev=(16.4,24.4,0.4)(inf) sst[L=1,x=290:330,y=10:40] -show sym lev* -LEV_TEXT = "(16.4,24.4,0.4)(INF)" -LEV_MIN = "16.4" -LEV_NUM = "21" -LEV_DEL = "irregular" -LEV_CENTERED_LABELS = "off" -LEV_MAX = "open-ended" -LEV_ALL = "16.4,16.8,17.2,17.6,18,18.4,18.8,19.2,19.6,20,20.4,20.8,21.2,21.6,22,22.4,22.8,23.2,23.6,24,24.4,27.89" - -shade/lev=20v sst[L=1,x=290:330,y=10:40] -show sym lev* -LEV_TEXT = "20V" -LEV_MIN = "open-ended" -LEV_NUM = "19" -LEV_DEL = "irregular" -LEV_CENTERED_LABELS = "off" -LEV_MAX = "open-ended" -LEV_ALL = "13.32,16,17.05,18.1,19.15,19.5,20,20.5,21,21.5,22,22.5,23,23.5,24,24.5,25,25.5,25.7,27.89" -LEV_OPNLEVS = "(-inf)(16,19.1,1.05)(19.5,26,0.5)(25.7,25.7,1.05)(inf)" - -shade/lev=(16.4,24.4,0.4)(24.4,28.1,0.1) sst[L=1,x=290:330,y=10:40] -show sym lev* -LEV_ALL = "16.4,16.8,17.2,17.6,18,18.4,18.8,19.2,19.6,20,20.4,20.8,21.2,21.6,22,22.4,22.8,23.2,23.6,24,24.4,24.5,24.6,24.7,24.8,24.9,25,25.1,25.2,25.3,25.4,25.5,25.6,25.7,25.8,25.9,26,26.1,26.2,26.3,26.4,26.5,26.6,26.7,26.8,26.9,27,27.1,27.2,27.3,27.4,27.5,27.6,27.7,27.8,27.9,28,28.1" -LEV_TEXT = "(16.4,24.4,0.4)(24.4,28.1,0.1)" -LEV_MIN = "16.4" -LEV_NUM = "57" -LEV_DEL = "irregular" -LEV_CENTERED_LABELS = "off" -LEV_MAX = "28.1" - -shade/lev=(5)(16.4,24.4,0.4) sst[L=1,x=290:330,y=10:40] -show sym lev* -LEV_TEXT = "(5)(16.4,24.4,0.4)" -LEV_MIN = "5" -LEV_NUM = "21" -LEV_DEL = "irregular" -LEV_CENTERED_LABELS = "off" -LEV_MAX = "24.4" -LEV_ALL = "5,16.4,16.8,17.2,17.6,18,18.4,18.8,19.2,19.6,20,20.4,20.8,21.2,21.6,22,22.4,22.8,23.2,23.6,24,24.4" - -! Bug 2466 Graticule lines too dense on time plots -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_timegrat -!err700_timegrat.jnl -! 22-sep-2016 *acm* -! See ticket 2466, too many graticule lines on axis with short time axis. - -define axis/t="22-aug-2016:12":"23-aug-2016:18":6/units=hours tax -define axis/z=0:50:2/depth/units=m zax -let ztvar = sin(L[Gt=tax]/20) + z[gz=zax] - -set view upper; shade/grat ztvar -set view lower; plot/grat=(color=light_blue)/z=20 ztvar - -can view -set view left; shade/trans/grat ztvar -set view right; plot/trans/grat=(color=light_blue)/z=20 ztvar - -! Axis of few days, likewise - -define axis/t=16-SEP-2016:21-SEP-2016:15/units=minutes/t0=16-SEP-2016 tax - -can view -set view upper; shade/grat ztvar -set view lower; plot/grat=(color=light_blue)/z=20 ztvar - -can view -set view left; shade/trans/grat/t=16-SEP-2016:19-sep-2016 ztvar -set view right; plot/trans/grat=(color=light_blue)/z=20/t=16-SEP-2016:19-sep-2016 ztvar - - - -! Bug 2465 parsing errors on commands with expressions involving attrbutes -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_attribute_parsing -! err700_attribute_parsing.jnl -! See ticket 2465. Parsing errors for commands with attribute references -! acm 9/2016 - -! Write a simple file and then try to get at its attributes. - -let/title="my variable" a = 1 -save/clob/file="a.nc"/title="my file" a -can var a -use a.nc - -! These were ok -list/nohead ..title - "my file" -list/nohead a.long_name - "my variable" - -! errors -list/nohead ..title EQ " " - 0.0000000 -list/nohead (..title) - "my file" -list/nohead ..title + "text" - "my filetext" -list/nohead a.long_name EQ " " - 0.0000000 - -list/nohead strlen(a.long_name) - 11.00000 -list/nohead strindex(..title, "file") - 4.000000 - - -! Note the fix for # 2437 needs documentation: 4D output for grids in X,Y,Z,T only -! Note the fix for # 2451 needs documentation: -gif mode plots with /HLIM or /VLIM reversing an axis. - - -! Bug 2477 plot axes are not fully drawn, some /VS plots -! move this to bn_gif.jnl -! go bn_reset -! go err700_vs_plot_axes - -! Bug 2483. Fixing axis-ends symbols XAXIS_MIN,XAXIS_MAX, YAXIS_MIN,YAXIS_MAX -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_axis_dates -! err700_axis_dates.jnl -! See ticket 2483. 11/10/2016 ACM -! -! The axis-ends symbols XAXIS_MIN,XAXIS_MAX, YAXIS_MIN,YAXIS_MAX -! were not accurate for time axes, which get padded out to the nearest -! time unit, e.g. whole months etc. - -! This axis gets plotted from 1-oct-2015 to the end of 30-apr-2016 - -def axis/t=23-oct-2015:17-apr-2016:10/units=hours taxis - -! Define some variables -let tt = t[gt=taxis] -let var = cos(L[gt=taxis]/30) -define axis/x=1:52:4 xaxis -define axis/y=1:52:4 yaxis -let xtvar = x[gx=xaxis] + var -let ytvar = y[gy=yaxis] + var - -! 1-D time plot -plot var - -! Previously these were set to the axis-coordinate -! ends not the drawn axis ends. -list tax_datestring(($xaxis_min), tt, "minutes"), tax_datestring(($xaxis_max), tt, "minutes") - !-> list tax_datestring(1005528.00, tt, "minutes"), tax_datestring(1010640.00, tt, "minutes") - Column 1: TAX_DATESTRING(1005528.00, TT, "minutes") - Column 2: TAX_DATESTRING(1010640.00, TT, "minutes") - (C001,V00 (C001,V008) -I / *: "01-OCT-2015 00:00" "01-MAY-2016 00:00" - -! 2D plots - -shade ytvar -list tax_datestring(($xaxis_min), tt, "minutes"), tax_datestring(($xaxis_max), tt, "minutes") - !-> list tax_datestring(1005528.00, tt, "minutes"), tax_datestring(1010640.00, tt, "minutes") - Column 1: TAX_DATESTRING(1005528.00, TT, "minutes") - Column 2: TAX_DATESTRING(1010640.00, TT, "minutes") - (C001,V00 (C001,V008) -I / *: "01-OCT-2015 00:00" "01-MAY-2016 00:00" - -shade xtvar ! T axis on the vertical axis -list tax_datestring(($yaxis_min), tt, "minutes"), tax_datestring(($yaxis_max), tt, "minutes") - !-> list tax_datestring(1005528.00, tt, "minutes"), tax_datestring(1010640.00, tt, "minutes") - Column 1: TAX_DATESTRING(1005528.00, TT, "minutes") - Column 2: TAX_DATESTRING(1010640.00, TT, "minutes") - (C001,V00 (C001,V008) -I / *: "01-OCT-2015 00:00" "01-MAY-2016 00:00" - - -! Short time axis, plot ends extended out to the nearest hour -def axis/t="23-oct-2015:01:15":"23-oct-2015:12:30":15/units=minutes taxis - -plot var -list tax_datestring(($xaxis_min), tt, "minutes"), tax_datestring(($xaxis_max), tt, "minutes") - !-> list tax_datestring(60363420.0, tt, "minutes"), tax_datestring(60364140.0, tt, "minutes") - Column 1: TAX_DATESTRING(60363420.0, TT, "minutes") - Column 2: TAX_DATESTRING(60364140.0, TT, "minutes") - (C001,V00 (C001,V008) -I / *: "23-OCT-2015 01:00" "23-OCT-2015 13:00" - -shade ytvar -list tax_datestring(($xaxis_min), tt, "minutes"), tax_datestring(($xaxis_max), tt, "minutes") - !-> list tax_datestring(60363420.0, tt, "minutes"), tax_datestring(60364140.0, tt, "minutes") - Column 1: TAX_DATESTRING(60363420.0, TT, "minutes") - Column 2: TAX_DATESTRING(60364140.0, TT, "minutes") - (C001,V00 (C001,V008) -I / *: "23-OCT-2015 01:00" "23-OCT-2015 13:00" - -shade xtvar -list tax_datestring(($yaxis_min), tt, "minutes"), tax_datestring(($yaxis_max), tt, "minutes") - !-> list tax_datestring(60363420.0, tt, "minutes"), tax_datestring(60364140.0, tt, "minutes") - Column 1: TAX_DATESTRING(60363420.0, TT, "minutes") - Column 2: TAX_DATESTRING(60364140.0, TT, "minutes") - (C001,V00 (C001,V008) -I / *: "23-OCT-2015 01:00" "23-OCT-2015 13:00" - - - -! Bug 2489. Attribute climatology_time_range not defined on an expression -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_clim_attr_expression -! err700_clim_attr_expression.jnl -! Ticket 2489 -! 11/22/2016 -! -! The attribute climatology_time_range is created whena variable comes -! from a climatological regridding. It can be created only for user-defined -! variables not for an expression. Previously the SAVE command resulted in a crash. -! (See bn_climatology_attr.jnl for more examples). - -! Define a monthly axis -define axis/t=1-feb-1980:1-feb-2003/npoints=276/unit="day"/t0=1-jan-1900 tax - -let tvar = t[gt=tax] -let clim1 = tvar[gt=month_irreg@mod] -save/nobounds/file=a.nc/clobber 3*clim1 - -can dat/all; use a.nc - -! The variable did not get a climatology_time_range attribute -let vname = ..varnames -show att `vname[i=1]` - !-> show att E494 - attributes for dataset: ./a.nc - E494.missing_value = -1.E+34 - E494._FillValue = -1.E+34 - E494.long_name = 3*CLIM1 - - -! Bug 2491: Location of colorbar labels wrong -! on /HLOG or /VLOG plots -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_ribbon_vlog -! err700_ribbon_vlog.jnl -! 1/3/2017 *acm* -! See ticket 2491: Location of colorbar labels wrong -! on /HLOG or /VLOG plots - - -let a = 0.1* {1,2,3,4,5,6,7,8,9} -set v ul -plot/vs/rib/sym=25 a, a, a - -! Draw with /VLOG, previously put the colorbar labels in the wrong place -set view lr -plot/vs/rib/sym=25/vlog a, a, a - -! likewise /HLOG on a horizontal color key -set view ll -plot/vs/rib/sym=25/hlog/key=horiz a,a,a - -frame/file=bn_ribbon_vlog.gif - -! Bug 2492: single-variable listings with /form=comma or /form=tab -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_list_comma -! err700_list_comma.jnl -! 1/4/2017 Fixes for ticket 2492: for single-variable listings, /FORM=comma and /FORM=tab - -use gt4d011 - -! Previously for comma and tab listings there was an extra line right after the header -! that showed a longitude, even on [i=@ave,j=@ave] - -list/L=1:3/K=1/form=comma taux[i=@ave,j=@ave] - VARIABLE : ZONAL WIND STRESS (dynes/cm**2) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 3 points (TIME) - LONGITUDE: 139.5W to 121.5W (XY ave) - LATITUDE : 3.5S to 3.5N (XY ave) -17-AUG-1982 12:00,-0.2742025 -23-AUG-1982 14:00,-0.2363181 -29-AUG-1982 16:00,-0.1984337 - -list/nohead/L=1:3/K=1/form=comma taux[i=95,j=@ave] -17-AUG-1982 12:00,-0.2737914 -23-AUG-1982 14:00,-0.2441127 -29-AUG-1982 16:00,-0.2144341 - -list/nohead/L=1:3/K=1/form=comma taux[i=@ave,j=@ave] -17-AUG-1982 12:00,-0.2742025 -23-AUG-1982 14:00,-0.2363181 -29-AUG-1982 16:00,-0.1984337 - -! Previously /NOROW had no effect for /form=comma or /tab -! (for single-variable listings) - -list/norow/L=1:3/K=1/form=comma taux[i=@ave,j=@ave] - VARIABLE : ZONAL WIND STRESS (dynes/cm**2) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 3 points (TIME) - LONGITUDE: 139.5W to 121.5W (XY ave) - LATITUDE : 3.5S to 3.5N (XY ave) --0.2742025 --0.2363181 --0.1984337 - -list/norow/nohead/L=1:3/K=1/form=comma taux[i=95,j=@ave] --0.2737914 --0.2441127 --0.2144341 - -list/norow/nohead/L=1:3/K=1/i=95/j=40/form=comma taux --0.3336249 --0.297951 --0.2622772 - -list/norow/nohead/L=1:3/K=1/i=95/j=40/form=comma taux --0.3336249 --0.297951 --0.2622772 - -! Now all the same commands with /form=tab - -! Previously for comma and tab listings there was an extra line right after the header -! that showed a longitude, even on [i=@ave,j=@ave] - -list/L=1:3/K=1/form=tab taux[i=@ave,j=@ave] - VARIABLE : ZONAL WIND STRESS (dynes/cm**2) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 3 points (TIME) - LONGITUDE: 139.5W to 121.5W (XY ave) - LATITUDE : 3.5S to 3.5N (XY ave) -17-AUG-1982 12:00 -0.2742025 -23-AUG-1982 14:00 -0.2363181 -29-AUG-1982 16:00 -0.1984337 - -list/nohead/L=1:3/K=1/form=tab taux[i=95,j=@ave] -17-AUG-1982 12:00 -0.2737914 -23-AUG-1982 14:00 -0.2441127 -29-AUG-1982 16:00 -0.2144341 - -list/nohead/L=1:3/K=1/form=tab taux[i=@ave,j=@ave] -17-AUG-1982 12:00 -0.2742025 -23-AUG-1982 14:00 -0.2363181 -29-AUG-1982 16:00 -0.1984337 - -! Previously /NOROW had no effect for /form=comma or /tab -! (for single-variable listings) - -list/norow/L=1:3/K=1/form=tab taux[i=@ave,j=@ave] - VARIABLE : ZONAL WIND STRESS (dynes/cm**2) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 3 points (TIME) - LONGITUDE: 139.5W to 121.5W (XY ave) - LATITUDE : 3.5S to 3.5N (XY ave) --0.2742025 --0.2363181 --0.1984337 - -list/norow/nohead/L=1:3/K=1/form=tab taux[i=95,j=@ave] --0.2737914 --0.2441127 --0.2144341 - -list/norow/nohead/L=1:3/K=1/i=95/j=40/form=tab taux --0.3336249 --0.297951 --0.2622772 - -list/norow/nohead/L=1:3/K=1/i=95/j=40/form=tab taux --0.3336249 --0.297951 --0.2622772 - - -! Bug 2493: T aggregation when there are E or F axes -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_aggT_5d -! err700_aggT_5d.jnl -! 1/6/2017 ACM Ticket 2493 -! When there are E or F axes in the grid, the multi-file reading -! for time aggregations or mc files corrupted the data. - -! The two files have data in different ranges - -! data range in 260-270 -use aggT_5d1.nc -list/i=3/j=2 thetao[d=1] - VARIABLE : Sea Water Potential Temperature (K) - FILENAME : aggT_5d1.nc - SUBSET : 6 by 10 points (TIME-E) - CALENDAR : NOLEAP - LONGITUDE: 22.5E - LATITUDE : 58.5S - DEPTH (m): 5 - 1999 2000 2001 2002 2003 2004 - 1 2 3 4 5 6 - 1 / 1: 265.2445 265.5543 265.9943 266.2097 265.4781 265.3888 - 2 / 2: 265.5926 265.7931 265.5775 265.6801 265.4617 265.4838 - 3 / 3: 265.1946 265.4962 265.3313 265.2579 264.9185 265.5124 - 4 / 4: 263.8972 263.2888 263.1042 263.3890 263.4528 263.3426 - 5 / 5: 261.8333 261.8194 261.8748 261.8681 262.0607 261.8264 - 6 / 6: 263.4419 263.4238 263.8016 263.5585 263.6320 263.3513 - 7 / 7: 264.0194 264.5496 264.1791 263.9616 264.3322 264.0056 - 8 / 8: 264.2371 264.0885 264.0417 263.3675 263.4375 263.9382 - 9 / 9: 263.6959 262.6860 262.6703 262.9485 263.2782 263.0330 - 10 / 10: 263.7841 263.7235 263.9889 263.8297 263.6952 264.1534 - -! data range in 270-280 -use aggT_5d2.nc -list/i=3/j=2 thetao[d=2] - VARIABLE : Sea Water Potential Temperature (K) - FILENAME : aggT_5d2.nc - SUBSET : 4 by 10 points (TIME-E) - CALENDAR : NOLEAP - LONGITUDE: 22.5E - LATITUDE : 58.5S - DEPTH (m): 5 - 2006 2007 2008 2009 - 1 2 3 4 - 1 / 1: 275.3968 275.1473 275.0237 275.1009 - 2 / 2: 275.6317 275.8312 275.7987 275.3124 - 3 / 3: 275.0737 275.2763 274.9668 275.3709 - 4 / 4: 273.4485 273.3429 273.4418 273.8933 - 5 / 5: 271.7737 271.7389 271.7704 271.8629 - 6 / 6: 273.8493 273.5693 273.9382 273.7554 - 7 / 7: 273.8918 273.9178 274.1768 274.1574 - 8 / 8: 273.8866 274.0090 274.4641 274.2231 - 9 / 9: 272.7180 272.8645 273.0202 273.9808 - 10 / 10: 274.7770 274.9195 274.3940 274.4967 -can data/all - -! Now make an aggregation. Previously the data was wrapped onto -! the grid incorrectly, with zero in M=7 and higher - -define data/agg/t myagg = aggT_5d1.nc, aggT_5d2.nc -list/i=3/j=2 thetao - VARIABLE : Sea Water Potential Temperature (K) - FILENAME : myagg - SUBSET : 10 by 10 points (TIME-E) - CALENDAR : NOLEAP - LONGITUDE: 22.5E - LATITUDE : 58.5S - DEPTH (m): 5 - 1999 2000 2001 2002 2003 2004 2006 2007 2008 2009 - 1 2 3 4 5 6 7 8 9 10 - 1 / 1: 265.2445 265.5543 265.9943 266.2097 265.4781 265.3888 275.3968 275.1473 275.0237 275.1009 - 2 / 2: 265.5926 265.7931 265.5775 265.6801 265.4617 265.4838 275.6317 275.8312 275.7987 275.3124 - 3 / 3: 265.1946 265.4962 265.3313 265.2579 264.9185 265.5124 275.0737 275.2763 274.9668 275.3709 - 4 / 4: 263.8972 263.2888 263.1042 263.3890 263.4528 263.3426 273.4485 273.3429 273.4418 273.8933 - 5 / 5: 261.8333 261.8194 261.8748 261.8681 262.0607 261.8264 271.7737 271.7389 271.7704 271.8629 - 6 / 6: 263.4419 263.4238 263.8016 263.5585 263.6320 263.3513 273.8493 273.5693 273.9382 273.7554 - 7 / 7: 264.0194 264.5496 264.1791 263.9616 264.3322 264.0056 273.8918 273.9178 274.1768 274.1574 - 8 / 8: 264.2371 264.0885 264.0417 263.3675 263.4375 263.9382 273.8866 274.0090 274.4641 274.2231 - 9 / 9: 263.6959 262.6860 262.6703 262.9485 263.2782 263.0330 272.7180 272.8645 273.0202 273.9808 - 10 / 10: 263.7841 263.7235 263.9889 263.8297 263.6952 264.1534 274.7770 274.9195 274.3940 274.4967 - -! Bug 2495: shift on overlay of time series plot on 2d time plot -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_time_overlay -! err700_time_overlay.jnl -! bug 2495 -! Shifting on overlay of time series on 2D plot - -define axis/t=15-jun-1970:16-jun-1970:60/t0=1-jan-1970/units=seconds tax -def axis/y=-2:2:0.2 yaxis -let tt = t[gt=tax] - -shade/pal=white/nokey/title="example plot" y[gy=yaxis] + t[gt=tax] - -! Previously the second plot was shifted in time -plot/over/color=red cos(tt/3000) -plot/over/color=blue cos(tt/3000)+0.5 - -! now vertical time axis -shade/trans/pal=white/nokey/title="example plot" y[gy=yaxis] + t[gt=tax] - -plot/trans/over/color=red cos(tt/3000) -plot/trans/over/color=blue cos(tt/3000) + 0.5 - - - -! Bug 2494: drawing a single-cell shade plot -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_shade_singlecell -! err700_shade_singlecell.jnl -! Ticket 2494, drawing a single-cell shade plot - -def axis/x=233.59375:293.90625:0.3125/units=degrees_east xlon -def axis/y=24.125:50.625:0.25/units=degrees_north ylat -let iijj = i[gx=xlon] + j[gy=ylat] -set reg/x=77w:72.5w/y=38.9n:41.5n - - -shade/pal=grayscale iijj -shade/pal=blue/ov iijj[i=167:168,j=64:65] - -! previously this was drawn, but located one cell to the left of where it should be -shade/pal=black/ov iijj[i=167,j=64] - -! Specify a cell by X,Y. Previously this gave a dimensions error -shade/over/pal=green iijj[x=76w,y=40n] - -! These same sorts of degenerate regions, bug not as an overlay - -! Previously both of these drew a blank plot -shade/pal=rnb2 iijj[i=167,j=64] -shade/pal=rnb2 iijj[i=167,j=64:66] - -! Specify a cell by X,Y -! Previously this gave a dimensions error -shade/pal=green iijj[x=76w,y=40n] - -! Partial cell, given by xy limits. -! Previously drew a blank plot -shade/pal=green iijj[x=74.5w:74.4w,y=39.9:40.0] - -! Several cells in one direction - partial cells in y at edges -shade/pal=rnb2 iijj[x=74.5w,y=39.9:40.8] - - -! Bug 2496: errors using axis with nearly-repeating coordinates -! where coordinates are very near grid-cell edges. -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_coords -! err700_coords.jnl -! 1/17/2017 -! From bug 2496. Data with almost-repeating values used to define an axis - -use err700_coords.nc -list/i=10:20/prec=16 du_coords, du_coords[i=@ddf] - DATA SET: ./data/err700_coords.nc - X: 9.5 to 20.5 - Column 1: DU_COORDS is DU_VU[I=1:20] - Column 2: DU_COORDS[X=@DDF] is DU_VU[I=1:20] (forward derivative on X) - DU_COORDS DU_COORDS -10 / 10: 23.75000000000000 2.500000000000000 -11 / 11: 26.25000000000000 0.000000000000011 -12 / 12: 26.25000000000001 2.499999999999989 -13 / 13: 28.75000000000000 2.500000000000000 -14 / 14: 31.25000000000000 0.000000000000011 -15 / 15: 31.25000000000001 2.499999999999989 -16 / 16: 33.75000000000000 2.500000000000000 -17 / 17: 36.25000000000000 2.500000000000000 -18 / 18: 38.75000000000000 2.500000000000000 -19 / 19: 41.25000000000000 2.500000000000000 -20 / 20: 43.75000000000000 .... - -! The data has repeated coords, to 1.e15. Should be reported as micro-adjusted - -def ax/bounds/x/unit="degrees_east"/modulo=360 c2d_ax_x = du_coords[i=1:160], du_edges[i=1:161] - - -sh axis c2d_ax_x - name axis # pts start end - C2D_AX_X LONGITUDE 20mi 1.25E 43.75E - Axis span (to cell edges) = 45 (modulo length = 360) -let c = x[gx=c2d_ax_x] - -! for this region, the setup steps got data in index 11:31, then -! at the point of writing the index ragne was found to be 12:31 - -set region/x=25:385 -set mode diag -save/clob/file=a.nc c - dealloc dynamic grid GAY2 XAX1_21 NORMAL NORMAL NORMAL - dealloc dynamic grid GG XAX1_20 NORMAL NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid C C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G211) C2D_AX_X NORMAL NORMAL NORMAL - dealloc dynamic grid (G211) C2D_AX_X NORMAL NORMAL NORMAL - allocate dynamic grid (G211) C2D_AX_X NORMAL NORMAL NORMAL - allocate dynamic grid (G211) C2D_AX_X NORMAL NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: 11 31 J: -999 -999 K: -999 -999 L: -999 -999 - eval C C: 6 dset: 0 I: 11 31 J: -999 -999 K: -999 -999 L: -999 -999 - allocate dynamic grid (G211) C2D_AX_X NORMAL NORMAL NORMAL - pseudo X M:228 dset: 0 I: 11 31 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid (G211) C2D_AX_X NORMAL NORMAL NORMAL - -DELETE C M:224 dset: 0 I: 11 30 J: -999 -999 K: -999 -999 L: -999 -999 - -set mode /last diag - - -! Bug 2499: Define a single-point axis with bounds -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_define_1pt_axis -! err700_define_1pt_axis.jnl -! Ticket 2499: regular axis, test for valid line_delta -! ACM 7/6/2016 - - -def ax/t/bounds tax = 1, 0, 2 -show axis/t tax - name axis # pts start end - TAX T 1 i 1 1 - Axis span (to cell edges) = 2 - - L T TBOX TBOXLO - 1> 1 2 0 - -! check that reading such an axis from a file is ok -let twelve = 12*t[gt=tax] - -save/file=a.nc/clobber twelve -cancel var/all; cancel axis tax -use a.nc -sh dat - currently SET data sets: - 1> ./a.nc (default) - name title I J K L - TWELVE 12*T[GT=TAX] ... ... ... 1:1 - -sh axis/t tax - name axis # pts start end - TAX T 1 i 1 1 - Axis span (to cell edges) = 2 - - L T TBOX TBOXLO - 1> 1 2 0 - - - -! Bug 2498: time unit error in F-aggregation of some OPENDAP datasets -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_aggregate_from_fmrc -! err700_aggregate_from_fmrc.jnl -! 1/2017 *acm* -! 1/31/2019 update datasets to ones available now -! (See ticket 2498) -! Previously an incorrect definition of the F axis when datasets from -! thredds fmrc.xml are used in a Ferret F aggregation -! This was a bug in the true-month time axes in an un-released Ferret executable. - -IF `TEST_OPENDAP(\ -"http://oos.soest.hawaii.edu/thredds/dodsC/hioos/roms_forec/hiig/runs/ROMS_Hawaii_Regional_Ocean_Model_RUN_2019-01-01T00:00:00Z") NE 0` \ - THEN EXIT/SCRIPT - !-> IF 0 THEN EXIT/SCRIPT - -use http://oos.soest.hawaii.edu/thredds/dodsC/hioos/roms_forec/hiig/runs/ROMS_Hawaii_Regional_Ocean_Model_RUN_2019-01-01T00:00:00Z -use http://oos.soest.hawaii.edu/thredds/dodsC/hioos/roms_forec/hiig/runs/ROMS_Hawaii_Regional_Ocean_Model_RUN_2019-01-02T00:00:00Z -use http://oos.soest.hawaii.edu/thredds/dodsC/hioos/roms_forec/hiig/runs/ROMS_Hawaii_Regional_Ocean_Model_RUN_2019-01-03T00:00:00Z - -DEFINE DATA/AGGREGATE/F testdata = 1,2,3 -! F axis should be 31-DEC-2018 to 02-JAN-2019 -SHOW GRID zeta - GRID (G189) - name axis # pts start end subset - LON1 LONGITUDE 295mr 163.83W(-163.83) 152.52W(-152.52) full - LAT LATITUDE 195 r 17.018N 23.982N full - normal Z - TF_LAG_T3 MODEL ELAPSED TIME 57 r ) 1.5 169.5 full - normal E - RUN FORECAST 3 r 31-DEC-2018 22:30 02-JAN-2019 22:30 full - - -! Bug 2504: modulo axes and coordinates -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_modulo -! err700_modulo.jnl -! See ticket 2504. Axis defintions where bounds are not given, and Ferret -! is defining the cell edges. If axis coordinates lie within the modulo range -! but the cell bounds defined automatically using coordinate midpoints range -! larger than 360 degrees, or 1 year, need to adjust bounds. This is done only -! for irregular axes. - -use modax - -! The axis 'irreg_no_bounds' is irregular and is stored in the file without -! bounds. The coordinate range is < 360 but previously the computed bounds -! made the axis length 369.45, so it was not treated as modulo. -! Now it is marked modulo. - -sh axis irreg_no_bounds - name axis # pts start end - IRREG_NO_BOUNDS LONGITUDE 8mi 0E 0.7W - Axis span (to cell edges) = 360 (modulo length = axis span) -list/order=x/nohead x[gx=irreg_no_bounds] - 0.0000 1.0000 20.0000 30.0000 320.0000 330.0000 340.0000 359.3000 -show axis/x irreg_no_bounds - name axis # pts start end - IRREG_NO_BOUNDS LONGITUDE 8mi 0E 0.7W - Axis span (to cell edges) = 360 (modulo length = axis span) - - I X XBOX XBOXLO - 1> 0E 0.85 0.35W(-0.35) - 2> 1E 10 0.5E - 3> 20E 14.5 10.5E - 4> 30E 150 25E - 5> 40W 150 175E - 6> 30W 10 35W - 7> 20W 14.65 25W - 8> 0.7W 10 10.35W - - -! The axis 'regular_no_bounds' is regular. Its coordinate range is < 360, but -! to adjust the grid cells would make it irregular, so this axis is still -! marked as not modulo. - -sh axis regular_no_bounds - name axis # pts start end - REGULAR_NO_BOUNDS LONGITUDE 8 r 10E 0E(360) - Axis span (to cell edges) = 400 -list/order=x/nohead x[gx=regular_no_bounds] - 10.0000 60.0000 110.0000 160.0000 210.0000 260.0000 310.0000 360.0000 -show axis/x regular_no_bounds - name axis # pts start end - REGULAR_NO_BOUNDS LONGITUDE 8 r 10E 0E(360) - Axis span (to cell edges) = 400 - - I X XBOX XBOXLO - 1> 10E 50 15W(-15) - 2> 60E 50 35E - 3> 110E 50 85E - 4> 160E 50 135E - 5> 150W 50 175W - 6> 100W 50 125W - 7> 50W 50 75W - 8> 0E(360) 50 25W - -! The axis 'irreg_with_bounds' is irregular, stored with bounds in the file. -! Its coordinate range is < 360, but the range of the bounds is larger than -! 360. Because the bounds are in the file, nothing is changed; it is marked -! as not modulo. - -sh axis irreg_with_bounds - name axis # pts start end - IRREG_WITH_BOUNDS LONGITUDE 8 i 0E 1W - Axis span (to cell edges) = 362 -list/order=x/nohead x[gx=irreg_with_bounds] - 0.0000 1.0000 20.0000 30.0000 320.0000 330.0000 340.0000 359.0000 -show axis/x irreg_with_bounds - name axis # pts start end - IRREG_WITH_BOUNDS LONGITUDE 8 i 0E 1W - Axis span (to cell edges) = 362 - - I X XBOX XBOXLO - 1> 0E 1.5 1W(-1) - 2> 1E 9.5 0.5E - 3> 20E 15 10E - 4> 30E 150 25E - 5> 40W 150 175E - 6> 30W 10 35W - 7> 20W 14 25W - 8> 1W 12 11W - -cancel data/all - -! DEFINE AXIS examples - -! Likewise define an irregular axis whose coordinate range is < 360 but -! the default midpoint grid cell bounds would make it larger than 360. -! Previously this axis was not modulo, now bounds are set so it is. - -define axis/x/units=degrees_east xax = {0, 10, 20, 340, 358} -show axis xax - name axis # pts start end - XAX LONGITUDE 5mi 0E 2W - Axis span (to cell edges) = 360 (modulo length = axis span) - -! Now define a regular axis whose coordinate range is < 360 but the -! default midpoint grid cell bounds would make it larger than 360. -! To keep it regular, mark as not modulo. - -define axis/x=5:355:50/units=degrees_east xax -show axis xax - name axis # pts start end - XAX LONGITUDE 8 r 5E 5W - Axis span (to cell edges) = 400 - -! tests for time axes -! Regular time axis with bounds that make it longer than a year. -! leave this one so it stays regular and is not modulo. - -define axis/t=3:363:10/units=days/t0=1-jan-0000 treg -show axis treg - name axis # pts start end - TREG TIME 37 r 04-JAN-0000 00:00 29-DEC-0000 00:00 -T0 = 1-JAN-0000 - Axis span (to cell edges) = 370 - -! An irregular axis where moving the bounds can make it a modulo calendar axis. -define axis/t0=1-jan-0000/units=days/t tax2 = { 3, 55, 103, 153, 203, 253, 303, 353} -sh axis tax2 - name axis # pts start end - TAX2 TIME 8mi 04-JAN 00:00 19-DEC 00:00 -T0 = 1-JAN-0000 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - -! Bug 1480: saving modulo axis with too big a region -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_save_mod_att -! err700_save_mod_att.jnl -! ticket 1480: do not write a modulo axis when saving a modulo -! axis with region longer than the modulo length. -! If it's just one grid-cell too long, write one cell less so -! the axis can still be a valid modulo axis - -! write a dataset to use, modulo attribute -define axis/x=20:377.5:2.5/units=degrees_east/modulo xlon -sh axis xlon - name axis # pts start end - XLON LONGITUDE 144mr 20E 17.5E(377.5) - Axis span (to cell edges) = 360 (modulo length = axis span) -let var = x[gx=xlon] - -save/clobber/file=a1.nc var -sp ncdump -h a1.nc -netcdf a1 { -dimensions: - XLON = 144 ; -variables: - double XLON(XLON) ; - XLON:units = "degrees_east" ; - XLON:modulo = 360. ; - XLON:point_spacing = "even" ; - XLON:axis = "X" ; - XLON:standard_name = "longitude" ; - double VAR(XLON) ; - VAR:missing_value = -1.e+34 ; - VAR:_FillValue = -1.e+34 ; - VAR:long_name = "X[GX=XLON]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -! Now set a region and write data. The axis length would be 362.5 -use a1 -sh axis xlon - name axis # pts start end - XLON LONGITUDE 144mr 20E 17.5E(377.5) - Axis span (to cell edges) = 360 (modulo length = axis span) -set region/x=0:360 -stat x[gx=xlon] ! 145 points - - X - axis XLON - LONGITUDE: 0E to 0E(360) - Y: N/A - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 145 (145*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 360 - Mean value: 180 (unweighted average) - Standard deviation: 105 - -! but we see that the region is just one cell too big, and -! save it with length 360. -save/clobber/file=a.nc var - -! previously the x axis had a modulo attribute and length 362.5 -! The modulo=360 didnt match the length of the axis so on using the -! file there was a note, modulo attribute ignored. Now the axis is -! the intended length. -sp ncdump -h a.nc -netcdf a { -dimensions: - XLONN7_136 = 144 ; -variables: - double XLONN7_136(XLONN7_136) ; - XLONN7_136:units = "degrees_east" ; - XLONN7_136:modulo = 360. ; - XLONN7_136:point_spacing = "even" ; - XLONN7_136:axis = "X" ; - XLONN7_136:standard_name = "longitude" ; - double VAR(XLONN7_136) ; - VAR:missing_value = -1.e+34 ; - VAR:_FillValue = -1.e+34 ; - VAR:long_name = "X[GX=XLON]" ; - VAR:history = "From a1" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -use a -sh axis `var,return=xaxis` - !-> sh axis XLONN7_136 - name axis # pts start end - XLONN7_136 LONGITUDE 144mr 0E 2.5W - Axis span (to cell edges) = 360 (modulo length = axis span) - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -! Now set a bigger region and write data. The axis length is 372.5 -use a1 -sh axis xlon - name axis # pts start end - XLON LONGITUDE 144mr 20E 17.5E(377.5) - Axis span (to cell edges) = 360 (modulo length = axis span) -set region/x=0:370 - -! Now issues a note, not writing modulo attribute. -save/clobber/file=a.nc var - -! previously the x axis still had the modulo attribute -sp ncdump -h a.nc -netcdf a { -dimensions: - XLONN7_141 = 149 ; -variables: - double XLONN7_141(XLONN7_141) ; - XLONN7_141:units = "degrees_east" ; - XLONN7_141:point_spacing = "even" ; - XLONN7_141:axis = "X" ; - XLONN7_141:standard_name = "longitude" ; - double VAR(XLONN7_141) ; - VAR:missing_value = -1.e+34 ; - VAR:_FillValue = -1.e+34 ; - VAR:long_name = "X[GX=XLON]" ; - VAR:history = "From a1" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -use a -sh axis `var,return=xaxis` - !-> sh axis XLONN7_141 - name axis # pts start end - XLONN7_141 LONGITUDE 149 r 0E 10E(370) - Axis span (to cell edges) = 372.5 - -! test the machinery for a file with attribute modulo=" " - -use coads_climatology -sh att (`sst,return=xaxis`) - !-> sh att (COADSX) - attributes for dataset: ./data/coads_climatology.cdf - (COADSX).units = degrees_east - (COADSX).modulo = - (COADSX).point_spacing = even - (COADSX).orig_file_axname = COADSX -set region/x=1:361 - -save/clobber/file=a.nc/y=0/l=1 sst - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -use a -sh att (`sst,return=xaxis`) - !-> sh att (COADSXN9_170) - attributes for dataset: ./a.nc - (COADSXN9_170).units = degrees_east - (COADSXN9_170).modulo = - (COADSXN9_170).point_spacing = even - (COADSXN9_170).axis = X - (COADSXN9_170).standard_name = longitude - (COADSXN9_170).orig_file_axname = COADSXN9_170 - -! previously the axis, of length 362, was marked modulo. -show axis `sst,return=xaxis` - !-> show axis COADSXN9_170 - name axis # pts start end - COADSXN9_170 LONGITUDE 180mr 1E 1W - Axis span (to cell edges) = 360 (modulo length = axis span) - - - -! Bug 2502: FMRC regridding sensitive to insignificant floating-point differences in time -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err700_fmrcdiag -! err700_fmrcdiag.jnl -! these particular datasets (quarterly forecasts of two years of monthly data) -! have times at regular intervals but at values (for 25 and 26) that are difficult -! to represent in binary -! -USE forecast24.nc -USE forecast25.nc -USE forecast26.nc -USE forecast27.nc -DEFINE DATA/AGGREGATE/F testdata = 1,2,3,4 -! -! using the values of actual gives perfect forecasts; -! using the values of quirks has a sinusoidal error that get worse with greater lead time -! - -DEFINE SYMBOL TF_CAL_T = `actual._cal_t_ax` - !-> DEFINE SYMBOL TF_CAL_T = TF_CAL_T -DEFINE SYMBOL TF_LAG_F = `actual._lag_f_ax` - !-> DEFINE SYMBOL TF_LAG_F = TF_LAG_F -DEFINE SYMBOL TF_LAG_T = `actual._lag_t_ax` - !-> DEFINE SYMBOL TF_LAG_T = TF_LAG_T4 -DEFINE SYMBOL TF_CAL_F = `actual._cal_f_ax` - !-> DEFINE SYMBOL TF_CAL_F = TF_CAL_F8 - -SHOW GRID actual - GRID (G186) - name axis # pts start end subset - XAX1 LONGITUDE 7mr 140W 110W full - YAX1 LATITUDE 4 r 45N 60N full - ZAX3 Z (meter) 3 i 50 1000 full - TF_LAG_T4 MODEL ELAPSED TIME (25 r 15.217 745.62 full - normal E - RUN FORECAST 4 r 01-OCT-2010 21:36 02-JUL-2011 19:12 full -LIST /WIDTH=600 /X=120W/Y=50N/Z=50 actual - VARIABLE : actual - DATA SET : Forecast series of 4 datasets patterned on forecast24 - FILENAME : testdata - SUBSET : 25 by 4 points (MODEL ELAPSED TIME (day)-FORECAST) - LONGITUDE: 120W - LATITUDE : 50N - Z (meter): 50 - Verification time increases across row. Initialization time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.1 319.6 350 380.4 410.9 441.3 471.7 502.2 532.6 563 593.5 623.9 654.3 684.8 715.2 745.6 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 - 01-OCT-2010 / 1: 3.112250 3.063082 3.547819 4.433232 5.475539 6.387525 6.917689 6.919604 6.392356 5.480903 4.436224 3.546203 3.056299 3.101849 3.670677 4.606352 5.651203 6.517281 6.965714 6.872593 6.263211 5.305189 4.262375 3.422174 3.016333 - 01-JAN-2011 / 2: 4.433232 5.475539 6.387525 6.917689 6.919604 6.392356 5.480903 4.436224 3.546203 3.056299 3.101849 3.670677 4.606352 5.651203 6.517281 6.965714 6.872593 6.263211 5.305189 4.262375 3.422174 3.016333 3.157027 3.805846 4.784283 - 02-APR-2011 / 3: 6.917689 6.919604 6.392356 5.480903 4.436224 3.546203 3.056299 3.101849 3.670677 4.606352 5.651203 6.517281 6.965714 6.872593 6.263211 5.305189 4.262375 3.422174 3.016333 3.157027 3.805846 4.784283 5.822848 6.635293 6.997507 - 02-JUL-2011 / 4: 5.480903 4.436224 3.546203 3.056299 3.101849 3.670677 4.606352 5.651203 6.517281 6.965714 6.872593 6.263211 5.305189 4.262375 3.422174 3.016333 3.157027 3.805846 4.784283 5.822848 6.635293 6.997507 6.809341 6.122295 5.125425 -SHADE /X=120W/Y=50N/Z=50 actual -FRAME /FILE=forecast_actual.gif - -LET actualfine = actual[GT=($TF_LAG_T)@BIN,GF=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE actualfine = actual[GT=TF_LAG_T4@BIN,GF=TF_CAL_F8@BIN] -SHOW GRID actualfine - GRID (G186) - name axis # pts start end subset - XAX1 LONGITUDE 7mr 140W 110W full - YAX1 LATITUDE 4 r 45N 60N full - ZAX3 Z (meter) 3 i 50 1000 full - TF_LAG_T4 MODEL ELAPSED TIME (25 r 15.217 745.62 full - normal E - TF_CAL_F8 FORECAST 12 r 01-OCT-2010 21:36 01-SEP-2011 16:00 full -LIST /WIDTH=600 /X=120W/Y=50N/Z=50 actualfine - VARIABLE : ACTUAL[GT=TF_LAG_T4@BIN,GF=TF_CAL_F8@BIN] - DATA SET : Forecast series of 4 datasets patterned on forecast24 - FILENAME : testdata - SUBSET : 25 by 12 points (MODEL ELAPSED TIME (day)-FORECAST) - LONGITUDE: 120W - LATITUDE : 50N - Z (meter): 50 - Verification time increases across row. Initialization time increases down page. - 15.2 45.7 76.1 106.5 137 167.4 197.8 228.3 258.7 289.1 319.6 350 380.4 410.9 441.3 471.7 502.2 532.6 563 593.5 623.9 654.3 684.8 715.2 745.6 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 - 01-OCT-2010 / 1: 3.112250 3.063082 3.547819 4.433232 5.475539 6.387525 6.917689 6.919604 6.392356 5.480903 4.436224 3.546203 3.056299 3.101849 3.670677 4.606352 5.651203 6.517281 6.965714 6.872593 6.263211 5.305189 4.262375 3.422174 3.016333 - 01-NOV-2010 / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 01-DEC-2010 / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 01-JAN-2011 / 4: 4.433232 5.475539 6.387525 6.917689 6.919604 6.392356 5.480903 4.436224 3.546203 3.056299 3.101849 3.670677 4.606352 5.651203 6.517281 6.965714 6.872593 6.263211 5.305189 4.262375 3.422174 3.016333 3.157027 3.805846 4.784283 - 31-JAN-2011 / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 03-MAR-2011 / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 02-APR-2011 / 7: 6.917689 6.919604 6.392356 5.480903 4.436224 3.546203 3.056299 3.101849 3.670677 4.606352 5.651203 6.517281 6.965714 6.872593 6.263211 5.305189 4.262375 3.422174 3.016333 3.157027 3.805846 4.784283 5.822848 6.635293 6.997507 - 02-MAY-2011 / 8: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 02-JUN-2011 / 9: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 02-JUL-2011 / 10: 5.480903 4.436224 3.546203 3.056299 3.101849 3.670677 4.606352 5.651203 6.517281 6.965714 6.872593 6.263211 5.305189 4.262375 3.422174 3.016333 3.157027 3.805846 4.784283 5.822848 6.635293 6.997507 6.809341 6.122295 5.125425 - 02-AUG-2011 / 11: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 01-SEP-2011 / 12: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... -SHADE /X=120W/Y=50N/Z=50 actualfine -FRAME /FILE=forecast_actualfine.gif - -LET diagview = actualfine[gt(TF_TIMES)=($TF_CAL_T)] - !-> DEFINE VARIABLE diagview = actualfine[gt(TF_TIMES)=TF_CAL_T] -SHOW GRID diagview - GRID (G202) - name axis # pts start end subset - XAX1 LONGITUDE 7mr 140W 110W full - YAX1 LATITUDE 4 r 45N 60N full - ZAX3 Z (meter) 3 i 50 1000 full - TF_CAL_T TIME 34 r 17-OCT-2010 02:48 17-JUL-2013 10:00 full - normal E - TF_CAL_F8 FORECAST 12 r 01-OCT-2010 21:36 01-SEP-2011 16:00 full -LIST /WIDTH=600 /X=120W/Y=50N/Z=50 diagview - VARIABLE : ACTUALFINE[GT(TF_TIMES)=TF_CAL_T] - DATA SET : Forecast series of 4 datasets patterned on forecast24 - FILENAME : testdata - SUBSET : 34 by 12 points (TIME-FORECAST) - LONGITUDE: 120W - LATITUDE : 50N - Z (meter): 50 - Verification time increases across row. Initialization time increases down page. - 2010 2010 2010 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2013 2013 2013 2013 2013 2013 2013 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 - 01-OCT-2010 / 1: 3.112250 3.063082 3.547819 4.433232 5.475539 6.387525 6.917689 6.919604 6.392356 5.480903 4.436224 3.546203 3.056299 3.101849 3.670677 4.606352 5.651203 6.517281 6.965714 6.872593 6.263211 5.305189 4.262375 3.422174 3.016333 .... .... .... .... .... .... .... .... .... - 01-NOV-2010 / 2: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 01-DEC-2010 / 3: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 01-JAN-2011 / 4: .... .... .... 4.433232 5.475539 6.387525 6.917689 6.919604 6.392356 5.480903 4.436224 3.546203 3.056299 3.101849 3.670677 4.606352 5.651203 6.517281 6.965714 6.872593 6.263211 5.305189 4.262375 3.422174 3.016333 3.157027 3.805846 4.784283 .... .... .... .... .... .... - 31-JAN-2011 / 5: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 03-MAR-2011 / 6: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 02-APR-2011 / 7: .... .... .... .... .... .... 6.917689 6.919604 6.392356 5.480903 4.436224 3.546203 3.056299 3.101849 3.670677 4.606352 5.651203 6.517281 6.965714 6.872593 6.263211 5.305189 4.262375 3.422174 3.016333 3.157027 3.805846 4.784283 5.822848 6.635293 6.997507 .... .... .... - 02-MAY-2011 / 8: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 02-JUN-2011 / 9: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 02-JUL-2011 / 10: .... .... .... .... .... .... .... .... .... 5.480903 4.436224 3.546203 3.056299 3.101849 3.670677 4.606352 5.651203 6.517281 6.965714 6.872593 6.263211 5.305189 4.262375 3.422174 3.016333 3.157027 3.805846 4.784283 5.822848 6.635293 6.997507 6.809341 6.122295 5.125425 - 02-AUG-2011 / 11: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 01-SEP-2011 / 12: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... -SHADE /X=120W/Y=50N/Z=50 diagview -FRAME /FILE=forecast_diagview.gif - -LET leadview = actualfine[gt(TF_TIMES)=($TF_CAL_T),gf(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE leadview = actualfine[gt(TF_TIMES)=TF_CAL_T,gf(TF_TIMES)=TF_LAG_F] -SHOW GRID leadview - GRID (G204) - name axis # pts start end subset - XAX1 LONGITUDE 7mr 140W 110W full - YAX1 LATITUDE 4 r 45N 60N full - ZAX3 Z (meter) 3 i 50 1000 full - TF_CAL_T TIME 34 r 17-OCT-2010 02:48 17-JUL-2013 10:00 full - normal E - TF_LAG_F FORECAST LEAD TIME (25 r 15.217 745.62 full -LIST /WIDTH=600 /X=120W/Y=50N/Z=50 leadview - VARIABLE : ACTUALFINE[GT(TF_TIMES)=TF_CAL_T,GF(TF_TIMES)=TF_LAG_F] - DATA SET : Forecast series of 4 datasets patterned on forecast24 - FILENAME : testdata - SUBSET : 34 by 25 points (TIME-FORECAST LEAD TIME (day)) - LONGITUDE: 120W - LATITUDE : 50N - Z (meter): 50 - Verification time increases across row. Initialization time increases down page. - 2010 2010 2010 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2012 2013 2013 2013 2013 2013 2013 2013 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 - 15.2 / 1: 3.112250 .... .... 4.433232 .... .... 6.917689 .... .... 5.480903 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 45.7 / 2: .... 3.063082 .... .... 5.475539 .... .... 6.919604 .... .... 4.436224 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 76.1 / 3: .... .... 3.547819 .... .... 6.387525 .... .... 6.392356 .... .... 3.546203 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 106.5 / 4: .... .... .... 4.433232 .... .... 6.917689 .... .... 5.480903 .... .... 3.056299 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 137 / 5: .... .... .... .... 5.475539 .... .... 6.919604 .... .... 4.436224 .... .... 3.101849 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 167.4 / 6: .... .... .... .... .... 6.387525 .... .... 6.392356 .... .... 3.546203 .... .... 3.670677 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 197.8 / 7: .... .... .... .... .... .... 6.917689 .... .... 5.480903 .... .... 3.056299 .... .... 4.606352 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 228.3 / 8: .... .... .... .... .... .... .... 6.919604 .... .... 4.436224 .... .... 3.101849 .... .... 5.651203 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 258.7 / 9: .... .... .... .... .... .... .... .... 6.392356 .... .... 3.546203 .... .... 3.670677 .... .... 6.517281 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 289.1 / 10: .... .... .... .... .... .... .... .... .... 5.480903 .... .... 3.056299 .... .... 4.606352 .... .... 6.965714 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 319.6 / 11: .... .... .... .... .... .... .... .... .... .... 4.436224 .... .... 3.101849 .... .... 5.651203 .... .... 6.872593 .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 350 / 12: .... .... .... .... .... .... .... .... .... .... .... 3.546203 .... .... 3.670677 .... .... 6.517281 .... .... 6.263211 .... .... .... .... .... .... .... .... .... .... .... .... .... - 380.4 / 13: .... .... .... .... .... .... .... .... .... .... .... .... 3.056299 .... .... 4.606352 .... .... 6.965714 .... .... 5.305189 .... .... .... .... .... .... .... .... .... .... .... .... - 410.9 / 14: .... .... .... .... .... .... .... .... .... .... .... .... .... 3.101849 .... .... 5.651203 .... .... 6.872593 .... .... 4.262375 .... .... .... .... .... .... .... .... .... .... .... - 441.3 / 15: .... .... .... .... .... .... .... .... .... .... .... .... .... .... 3.670677 .... .... 6.517281 .... .... 6.263211 .... .... 3.422174 .... .... .... .... .... .... .... .... .... .... - 471.7 / 16: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 4.606352 .... .... 6.965714 .... .... 5.305189 .... .... 3.016333 .... .... .... .... .... .... .... .... .... - 502.2 / 17: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 5.651203 .... .... 6.872593 .... .... 4.262375 .... .... 3.157027 .... .... .... .... .... .... .... .... - 532.6 / 18: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 6.517281 .... .... 6.263211 .... .... 3.422174 .... .... 3.805846 .... .... .... .... .... .... .... - 563 / 19: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 6.965714 .... .... 5.305189 .... .... 3.016333 .... .... 4.784283 .... .... .... .... .... .... - 593.5 / 20: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 6.872593 .... .... 4.262375 .... .... 3.157027 .... .... 5.822848 .... .... .... .... .... - 623.9 / 21: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 6.263211 .... .... 3.422174 .... .... 3.805846 .... .... 6.635293 .... .... .... .... - 654.3 / 22: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 5.305189 .... .... 3.016333 .... .... 4.784283 .... .... 6.997507 .... .... .... - 684.8 / 23: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 4.262375 .... .... 3.157027 .... .... 5.822848 .... .... 6.809341 .... .... - 715.2 / 24: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 3.422174 .... .... 3.805846 .... .... 6.635293 .... .... 6.122295 .... - 745.6 / 25: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 3.016333 .... .... 4.784283 .... .... 6.997507 .... .... 5.125425 -SHADE /X=120W/Y=50N/Z=50 leadview -FRAME /FILE=forecast_leadview.gif - - -! Bug 2331: Labeling the labels in line-plot legends. -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Go err700_legend_labels -! err700_legend_labels.jnl -! See ticket 2231: -! - consistent labeling of units -! - PLOT/KEY=title applies to PLOT/VS - -cancel mode logo -cancel symbol lab* -use gt4d011.cdf - -! Previously vertical label had Deg C, legend labels had units. -! Now label only the legend labels show the different units. -set v ul; plot/l=1/k=1/y=0/key=title temp, taux, tauy -annotate/norm/xpos=1/ypos=.5/halign=0/valign=-4/angle=-90/size=0.14 "Each label with units" - -sh sym lab* ! laby is not used -LABX = "LONGITUDE" -LAB1 = "DEPTH (m) : 5" -LABNUM_Z = "1" -LAB2 = "TIME : 17-AUG-1982 12:00" -LABNUM_T = "2" -LAB3 = "DATA SET: gt4d011" -LABNUM_DSET = "3" -LAB4 = "TEMPERATURE (deg. C)" -LABKEY = "MERIDIONAL WIND STRESS (dynes/cm**2)" -LAB5 = "ZONAL WIND STRESS (dynes/cm**2)" -LAB6 = "MERIDIONAL WIND STRESS (dynes/cm**2)" -can sym lab* - -! Previously vertical label and legend labels had units. -! Now label only the vertical axis with the common units. -set v ur; plot/l=1/k=1/y=0/key=title taux, tauy -annotate/norm/xpos=1/ypos=.5/halign=0/valign=-4/angle=-90/size=0.14 "Common Units, labeled on left" - -! legend labels now do not include units -sh sym lab* -LABX = "LONGITUDE" -LAB1 = "LATITUDE : 0N" -LABNUM_Y = "1" -LAB2 = "TIME : 17-AUG-1982 12:00" -LABNUM_T = "2" -LAB3 = "DATA SET: gt4d011" -LABNUM_DSET = "3" -LABY = "dynes/cm**2" -LAB4 = "ZONAL WIND STRESS" -LABKEY = "MERIDIONAL WIND STRESS" -LAB5 = "MERIDIONAL WIND STRESS" -can sym lab* - -! Define some variables with titles -let/title="Temperature Avg"/units="`temp,return=units`" tmpave = temp[L=@ave,z=@ave] - !-> DEFINE VARIABLE/title="Temperature Avg"/units="deg. C" tmpave = temp[L=@ave,z=@ave] -let/title="September Taux"/units="`taux,return=units`" taux_s = taux[t=23-SEP-1982, k=1] - !-> DEFINE VARIABLE/title="September Taux"/units="dynes/cm**2" taux_s = taux[t=23-SEP-1982, k=1] -let/title="January Taux"/units="`taux,return=units`" taux_j = taux[t=4-jan-1983, k=1] - !-> DEFINE VARIABLE/title="January Taux"/units="dynes/cm**2" taux_j = taux[t=4-jan-1983, k=1] - -! Set up a common set of axes for all variables -set v lower -plot/vs/sym=dot/y=0/nokey tmpave,taux_s,taux_j -annotate/norm/xpos=1/ypos=.5/halign=0/valign=-4/angle=-90/size=0.14 "PLOT/VS with KEY=title" - -! Overlay; the legend titles are variable titles. -plot/over/vs/color=red/thick/siz=0.14/y=0/key=title tmpave,taux_s -plot/over/vs/color=green/thick/siz=0.14/y=0/key=title tmpave,taux_j - -frame/file=legend_1d_plots.gif - -! legend labels are titles -sh sym lab* -LABX = "Temperature Avg (deg. C)" -LAB1 = "January Taux" -LABNUM_Z = "1" -LAB2 = "DATA SET: gt4d011" -LABNUM_DSET = "2" -LABY = "dynes/cm**2" -LABKEY = "January Taux" - -! Overlaying on a 2D field - -DEFINE AXIS/T="1-JAN-1980":"1-JAN-1990":5/UNITS=DAYS tdays -DEFINE AXIS/Y=0:40N:2/UNITS=DEGREES yax - -LET/TITLE=XY my_var = 10*cos(T[gt=tdays]/2000)*EXP((-1)*y[gy=yax]/20) -LET my_var2 = 10*cos(T[gt=tdays]/2000)*EXP((-1)*y[gy=yax]/20) - -! make a Hovmoller plot -SHADE/nolab my_var - -! PLOT/OVER without key=title shows the def in the line key -PLOT/OVER my_var[Y=@loc:-4] -PLOT/OVER my_var2[Y=@loc:-3] - -! with /KEY=TITLE, the variable with a title uses that, -! variable without a title uses the variable name, -! an expression just puts the expression (same as w/o /key=title) - -PLOT/OVER/KEY=TITLE my_var[Y=@loc:-2] -PLOT/OVER/KEY=TITLE my_var2[Y=@loc:-1] - -PLOT/OVER/KEY=TITLE 10+cos(T[gt=tdays]/200) - -set mode/last logo - -! Bug 2507: time aggregations with same time axis in different grids per file -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Go err700_aggt_dup_grids -! err700_aggt_dup_grids -! 2/15/2017 ACM -! Bug 2507: new time axis is identical in two tseries aggregation. -! It exists in more than one grid. Previously the new time axis -! was swapped into only one of the grids for the second aggregation. - -! Define some datsets, with two variables with different grids each -! using a common time axis. - -use tmp/tagg_irreg_1.nc -define axis/x=1:1:1 xax1 -let newvar = x[gx=xax1] + myvar -save/clobber/file=a1.nc myvar, newvar -can dat/all -use tmp/tagg_irreg_2.nc -save/clobber/file=a2.nc myvar, newvar - -can dat/all; can var/all - -! Define two aggregations; the second should share the time axis -! that was set up in the first. -sp ln -sf a1.nc b1.nc -sp ln -sf a2.nc b2.nc - -tseries a2var = a1.nc, a2.nc -tseries b2var = b1.nc, b2.nc - -! previously the time axis of the second variable in b2var was -! listed as length 10 -sh dat - currently SET data sets: - 1> a2var - name title I J K L - MYVAR SIN(T[GT=TDAY_IR]/10) + L[GT=TD ... ... ... 1:20 - NEWVAR X[GX=XAX1] + MYVAR 1:1 ... ... 1:20 - - 2> b2var (default) - name title I J K L - MYVAR SIN(T[GT=TDAY_IR]/10) + L[GT=TD ... ... ... 1:20 - NEWVAR X[GX=XAX1] + MYVAR 1:1 ... ... 1:20 - - - -GO bn_reset bn_delim_datetime -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_delim_datetime -GO bn_delim_datetime -! bn_delim_datetime.jnl -! ACM 7/2016 -! -! Tickets 2448, 2449, 2450: Improvements to date reading in delimited files. -! New: date/time fields for US and European style dates. -! Also report incorrect date/time spec (causes months out of range) -! and put 2-digit years prior to 50 in the 21st century. (prev. cutoff was year 20) -! - -! File contains index,euro-date-time, us-date-time, us-date, eurodate -! The years in variables 3 and 4 are 2-digit years after year 2020. - -! Ticket 2472: Allow yyyy/dd/mm in any of the date specs. - -columns/skip=3/var="index,edtim,udtim,udate,edate"/type="num,edatime,datime,date,eurodate" delim_datetime.csv -sh dat - currently SET data sets: - 1> ./data/delim_datetime.csv (default) - name title I J K L - INDEX index 1:5 ... ... ... - EDTIM edtim 1:5 ... ... ... - (Julian days since 1-Jan-1900) - UDTIM udtim 1:5 ... ... ... - (Julian days since 1-Jan-1900) - UDATE udate 1:5 ... ... ... - (Julian days since 1-Jan-1900) - EDATE edate 1:5 ... ... ... - (Julian days since 1-Jan-1900) - -list index,edtim,udtim,udate,edate - DATA SET: ./data/delim_datetime.csv - X: 0.5 to 5.5 - Column 1: INDEX is index - Column 2: EDTIM is edtim (days)(Julian days since 1-Jan-1900) - Column 3: UDTIM is udtim (days)(Julian days since 1-Jan-1900) - Column 4: UDATE is udate (days)(Julian days since 1-Jan-1900) - Column 5: EDATE is edate (days)(Julian days since 1-Jan-1900) - INDEX EDTIM UDTIM UDATE EDATE -1 / 1: 1.000000 41659.04 43850.28 34837.00 33376.00 -2 / 2: 2.000000 41659.10 44216.32 38490.00 33407.00 -3 / 3: 3.000000 41659.15 44581.36 42142.00 33437.00 -4 / 4: 4.000000 41659.17 44946.40 45795.00 33468.00 -5 / 5: 5.000000 41659.22 45311.44 49447.00 33529.00 - -! axis January 2014 -define axis/t/t0=1-jan-1900/units=days timax = edtim -sh axis/t timax - name axis # pts start end - TIMAX TIME 5 i 22-JAN-2014 01:00 22-JAN-2014 05:20 -T0 = 1-JAN-1900 - Axis span (to cell edges) = 0.2361111 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 22-JAN-2014 01:00:00 0.05556 22-JAN-2014 00:20:00 41659.04 - 2> 22-JAN-2014 02:20:00 0.05556 22-JAN-2014 01:40:00 41659.1 - 3> 22-JAN-2014 03:40:00 0.03472 22-JAN-2014 03:00:00 41659.15 - 4> 22-JAN-2014 04:00:00 0.03472 22-JAN-2014 03:50:00 41659.17 - 5> 22-JAN-2014 05:20:00 0.05556 22-JAN-2014 04:40:00 41659.22 - -! time axis in 1991 -define axis/t/t0=1-jan-1900/units=days timax = edate -sh axis/t timax - name axis # pts start end - TIMAX TIME 5 i 20-MAY-1991 00:00 20-OCT-1991 00:00 -T0 = 1-JAN-1900 - Axis span (to cell edges) = 199 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 20-MAY-1991 00:00:00 31 04-MAY-1991 12:00:00 33376 - 2> 20-JUN-1991 00:00:00 30.5 04-JUN-1991 12:00:00 33407 - 3> 20-JUL-1991 00:00:00 30.5 05-JUL-1991 00:00:00 33437 - 4> 20-AUG-1991 00:00:00 46 04-AUG-1991 12:00:00 33468 - 5> 20-OCT-1991 00:00:00 61 19-SEP-1991 12:00:00 33529 - -! time axis in 2020 - 2024 -define axis/t/t0=1-jan-1900/units=days timax = udtim -sh axis/t timax - name axis # pts start end - TIMAX TIME 5 i 22-JAN-2020 06:40 22-JAN-2024 10:40 -T0 = 1-JAN-1900 - Axis span (to cell edges) = 1826.708 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 22-JAN-2020 06:40:00 366.0417 23-JUL-2019 06:10:00 43850.28 - 2> 22-JAN-2021 07:40:00 365.5417 23-JUL-2020 07:10:00 44216.32 - 3> 22-JAN-2022 08:40:00 365.0417 23-JUL-2021 20:10:00 44581.36 - 4> 22-JAN-2023 09:40:00 365.0417 23-JUL-2022 21:10:00 44946.4 - 5> 22-JAN-2024 10:40:00 365.0417 23-JUL-2023 22:10:00 45311.44 - -! time axis in 1995 - 2035 -define axis/t/t0=1-jan-1900/units=days timax = udate -sh axis/t timax - name axis # pts start end - TIMAX TIME 5 i 20-MAY-1995 00:00 20-MAY-2035 00:00 -T0 = 1-JAN-1900 - Axis span (to cell edges) = 18262.5 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 20-MAY-1995 00:00:00 3653 19-MAY-1990 12:00:00 34837 - 2> 20-MAY-2005 00:00:00 3652.5 19-MAY-2000 12:00:00 38490 - 3> 20-MAY-2015 00:00:00 3652.5 20-MAY-2010 00:00:00 42142 - 4> 20-MAY-2025 00:00:00 3652.5 19-MAY-2020 12:00:00 45795 - 5> 20-MAY-2035 00:00:00 3652 20-MAY-2030 00:00:00 49447 - -! Dates of yyyy/dd/mm -! Dates with 00/00/00 return missing-data - -columns/skip=2/var="index,udate,udtim"/type="num,date,datime" delim_yyyy.csv -sh dat - currently SET data sets: - 1> ./data/delim_datetime.csv - name title I J K L - INDEX index 1:5 ... ... ... - EDTIM edtim 1:5 ... ... ... - (Julian days since 1-Jan-1900) - UDTIM udtim 1:5 ... ... ... - (Julian days since 1-Jan-1900) - UDATE udate 1:5 ... ... ... - (Julian days since 1-Jan-1900) - EDATE edate 1:5 ... ... ... - (Julian days since 1-Jan-1900) - - 2> ./data/delim_yyyy.csv (default) - name title I J K L - INDEX index 1:6 ... ... ... - UDATE udate 1:6 ... ... ... - (Julian days since 1-Jan-1900) - UDTIM udtim 1:6 ... ... ... - (Julian days since 1-Jan-1900) - -list/prec=10 index,udate,udtim - DATA SET: ./data/delim_yyyy.csv - X: 0.5 to 6.5 - Column 1: INDEX is index - Column 2: UDATE is udate (days)(Julian days since 1-Jan-1900) - Column 3: UDTIM is udtim (days)(Julian days since 1-Jan-1900) - INDEX UDATE UDTIM -1 / 1: 1.000000000 40920.00000 37243.27778 -2 / 2: 2.000000000 40921.00000 37243.31944 -3 / 3: 3.000000000 40923.00000 37243.36111 -4 / 4: 4.000000000 40924.00000 37243.40278 -5 / 5: 5.000000000 .... 37243.48611 -6 / 6: 6.000000000 40925.00000 37243.61111 - -! axis January 2014 -define axis/t/t0=1-jan-1900/units=days timax = udate[i=1:4] -sh axis/t timax - name axis # pts start end - TIMAX TIME 4 i 14-JAN-2012 00:00 18-JAN-2012 00:00 -T0 = 1-JAN-1900 - Axis span (to cell edges) = 5 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 14-JAN-2012 00:00:00 1 13-JAN-2012 12:00:00 40920 - 2> 15-JAN-2012 00:00:00 1.5 14-JAN-2012 12:00:00 40921 - 3> 17-JAN-2012 00:00:00 1.5 16-JAN-2012 00:00:00 40923 - 4> 18-JAN-2012 00:00:00 1 17-JAN-2012 12:00:00 40924 -! axis December 2001 -define axis/t/t0=1-jan-1900/units=days timax = udtim -sh axis/t timax - name axis # pts start end - TIMAX TIME 6 i 20-DEC-2001 06:40 20-DEC-2001 14:40 -T0 = 1-JAN-1900 - Axis span (to cell edges) = 0.4166667 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 20-DEC-2001 06:40:00 0.04167 20-DEC-2001 06:10:00 37243.28 - 2> 20-DEC-2001 07:40:00 0.04167 20-DEC-2001 07:10:00 37243.32 - 3> 20-DEC-2001 08:40:00 0.04167 20-DEC-2001 08:10:00 37243.36 - 4> 20-DEC-2001 09:40:00 0.0625 20-DEC-2001 09:10:00 37243.4 - 5> 20-DEC-2001 11:40:00 0.1041667 20-DEC-2001 10:40:00 37243.49 - 6> 20-DEC-2001 14:40:00 0.125 20-DEC-2001 13:10:00 37243.61 - - -! Intentional errors, specifying the wrong date field type (catches the first error) -! The error is found upon reading the file. - -set mode ignore -can dat/all -columns/skip=3/var="index,edtim,udtim,udate,edate"/type="num,datime,datime,date,date" delim_datetime.csv -list index,edtim,udtim,udate,edate - -can dat/all -columns/skip=3/var="index,edtim,udtim,udate,edate"/type="num,edatime,edatime,date,eurodate" delim_datetime.csv -list index,edtim,udtim,udate,edate - -can dat/all -columns/skip=3/var="index,edtim,udtim,udate,edate"/type="num,edatime,datime,eurodate,date" delim_datetime.csv -list index,edtim,udtim,udate,edate - -can dat/all -columns/skip=3/var="index,edtim,udtim,udate,edate"/type="num,edatime,datime,date,date" delim_datetime.csv -list index,edtim,udtim,udate,edate - -set mode/last ignore - - - -GO bn_reset bn_aggregate_u -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_aggregate_u -GO bn_aggregate_u -! bn_aggregate_u.jnl -! Union aggregations including tests of UNION in combination -! with TSERIES, ENSEMBLE, and FMRC aggregations -! acm 7/15/2016 - -! create some variables in separate datasets. - -SPAWN "mkdir -p tmp" - -define axis/t=1-jan-2010:10-jan-2010:1/units=days/t0=1-jan-2010 tax -let/title=sst sst = x[x=1:5] + 1.3*y[y=1:4] + t[gt=tax] -let/title=temp temp = 0.8*x[x=1:5] - y[y=1:4] + t[gt=tax] -let/title=U u = x[x=1:5] + 0.4*y[y=1:4] - 1.1* t[gt=tax] -let/title=V v = x[x=1:5] - 0.2*y[y=1:4] + 1.1* t[gt=tax] - -save/clobber/file="tmp/uagg_1.nc" sst -save/clobber/file="tmp/uagg_2.nc" temp -save/clobber/file="tmp/uagg_3.nc" u -save/clobber/file="tmp/uagg_4.nc" v - -save/l=1:3/clobber/file="tmp/uagg_1_t1.nc" sst -save/l=4:6/clobber/file="tmp/uagg_1_t2.nc" sst -save/l=7:10/clobber/file="tmp/uagg_1_t3.nc" sst - -can dat/all -union tmp/uagg_1.nc,tmp/uagg_2.nc,tmp/uagg_3.nc,tmp/uagg_4.nc -sh dat - currently SET data sets: - 5> ./v7jnls/bn_aggregate_u.jnl (default) Union aggregation - name title I J K L - SST sst 1:5 1:4 ... 1:10 - TEMP temp 1:5 1:4 ... 1:10 - U U 1:5 1:4 ... 1:10 - V V 1:5 1:4 ... 1:10 - -vec/l=5 u,v - -cancel dat/all - -! issue a note if a variable is already in the Union -! a new file with different defiontions of sst and temp -! -let/title="sst in uagg_5" sst = 1.1*x[x=1:5] + 1.3*y[y=1:4] + t[gt=tax] -let/title="temp in uagg_5" temp = 0.9*x[x=1:5] - y[y=1:4] + t[gt=tax] -save/clobber/file="tmp/uagg_5.nc" sst,temp - -! In the union set, sst comes from uagg_1, temp comes from uagg_5 -union uu = tmp/uagg_1.nc,tmp/uagg_5.nc -sh dat/att - currently SET data sets: - 3> uu (default) Union aggregation - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . aggregate name CHAR 2 F uu - - SST FLOAT long_name CHAR 3 T sst - missing_value DOUBLE 1 T -1.E+34 - - TEMP FLOAT long_name CHAR 14 T temp in uagg_5 - missing_value DOUBLE 1 T -1.E+34 - -can dat/all - -! Or use /quiet to supress the note -union/quiet uu = tmp/uagg_1.nc,tmp/uagg_5.nc - -let tnames = SPAWN("ls -1 tmp/uagg_1_*.nc") -tseries temp_time_agg = tnames -sh dat - currently SET data sets: - 3> uu Union aggregation - name title I J K L - SST sst 1:5 1:4 ... 1:10 - TEMP temp in uagg_5 1:5 1:4 ... 1:10 - - 4> temp_time_agg (default) - name title I J K L - SST sst 1:5 1:4 ... 1:10 - -union temp_time_agg, tmp/uagg_2.nc,tmp/uagg_3.nc,tmp/uagg_4.nc - -shade/l=2 sst - temp - - -can dat/all; can var/all; can sym/all - -! exercise 6D aggregations: UNION with T, E, and F simultaneously - -! do not bother to echo the creation of files and the definitions of the -! many time aggregations -CANCEL MODE VERIFY -! define T aggregations - -! timeseries of files with variable fcst_1 -repeat/name=fdate/range=1:7:3 (\ - let tstart = t[gt=monthly,l=`fdate`];\ - repeat/name=ens/range=1:2:1 (\ - let realization = `ens`;\ - TSERIES t_f`(fdate-1)/3+1,zw=2`_e`ens` = SPAWN("ls -1 tmp/f`(fdate-1)/3+1,zw=2`_e`ens`_t?.nc") )) -!-> REPEAT: FDATE:1 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=1] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/T t_f01_e1 = SPAWN("ls -1 tmp/f01_e1_t?.nc") -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/T t_f01_e2 = SPAWN("ls -1 tmp/f01_e2_t?.nc") -!-> REPEAT: FDATE:4 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=4] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/T t_f02_e1 = SPAWN("ls -1 tmp/f02_e1_t?.nc") -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/T t_f02_e2 = SPAWN("ls -1 tmp/f02_e2_t?.nc") -!-> REPEAT: FDATE:7 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=7] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/T t_f03_e1 = SPAWN("ls -1 tmp/f03_e1_t?.nc") -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/T t_f03_e2 = SPAWN("ls -1 tmp/f03_e2_t?.nc") - -! timeseries of files with variable fcst_3 -repeat/name=fdate/range=1:7:3 (\ - let tstart = t[gt=monthly,l=`fdate`];\ - repeat/name=ens/range=1:2:1 (\ - let realization = `ens`;\ - TSERIES t_f`(fdate-1)/3+1,zw=2`_e`ens`_3 = SPAWN("ls -1 tmp/f`(fdate-1)/3+1,zw=2`_e`ens`_tu?.nc") )) -!-> REPEAT: FDATE:1 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=1] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/T t_f01_e1_3 = SPAWN("ls -1 tmp/f01_e1_tu?.nc") -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/T t_f01_e2_3 = SPAWN("ls -1 tmp/f01_e2_tu?.nc") -!-> REPEAT: FDATE:4 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=4] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/T t_f02_e1_3 = SPAWN("ls -1 tmp/f02_e1_tu?.nc") -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/T t_f02_e2_3 = SPAWN("ls -1 tmp/f02_e2_tu?.nc") -!-> REPEAT: FDATE:7 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=7] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/T t_f03_e1_3 = SPAWN("ls -1 tmp/f03_e1_tu?.nc") -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/T t_f03_e2_3 = SPAWN("ls -1 tmp/f03_e2_tu?.nc") - -cancel variable realization - -SET MODE VERIFY -! now union these to make datsets with fcnst_1 and fcst_3. - -show data/files/br; - currently SET data sets: - 1> t_f01_e1 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e1_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e1_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e1_t3.nc - - 2> t_f01_e2 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e2_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e2_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e2_t3.nc - - 3> t_f02_e1 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e1_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e1_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e1_t3.nc - - 4> t_f02_e2 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e2_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e2_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e2_t3.nc - - 5> t_f03_e1 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e1_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e1_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e1_t3.nc - - 6> t_f03_e2 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e2_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e2_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e2_t3.nc - - 7> t_f01_e1_3 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e1_tu1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e1_tu2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e1_tu3.nc - - 8> t_f01_e2_3 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e2_tu1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e2_tu2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e2_tu3.nc - - 9> t_f02_e1_3 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e1_tu1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e1_tu2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e1_tu3.nc - - 10> t_f02_e2_3 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e2_tu1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e2_tu2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e2_tu3.nc - - 11> t_f03_e1_3 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e1_tu1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e1_tu2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e1_tu3.nc - - 12> t_f03_e2_3 (default) - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e2_tu1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e2_tu2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e2_tu3.nc - - -DEFINE DATA/AGGREGAT/U u1 = t_f01_e1_3, t_f01_e1 -DEFINE DATA/AGGREGAT/U u2 = t_f01_e2, t_f01_e2_3 -show data u1 u2 - currently SET data sets: - 13> u1 Union aggregation - name title I J K L - FCST_3 another variable 1:21 1:11 1:1 1:36 - (L=1:12) - REALIZATION - 1 ... ... ... ... - FCST some variable 1:21 1:11 1:1 1:36 - (L=1:12) - FCST_2 another variable 1:21 1:11 1:1 1:36 - (L=1:12) - -can data u1 u2 - -! Make a batch of files, timeseries aggregations union-ed. -! the /QUIET supresses the note about skipping duplicate variables. -repeat/name=fdate/range=1:7:3 (\ - let tstart = t[gt=monthly,l=`fdate`];\ - repeat/name=ens/range=1:2:1 (\ - let realization = `ens`;\ - UNION/quiet t_f_u`(fdate-1)/3+1,zw=2`_e`ens` = t_f`(fdate-1)/3+1,zw=2`_e`ens`, t_f`(fdate-1)/3+1,zw=2`_e`ens`_3;\ - show data/br t_f_u`(fdate-1)/3+1,zw=2`_e`ens`)) -!-> REPEAT: FDATE:1 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=1] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/U/quiet t_f_u01_e1 = t_f01_e1, t_f01_e1_3 - !-> show data/br t_f_u01_e1 - currently SET data sets: - 13> t_f_u01_e1 (default) Union aggregation -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/U/quiet t_f_u01_e2 = t_f01_e2, t_f01_e2_3 - !-> show data/br t_f_u01_e2 - currently SET data sets: - 14> t_f_u01_e2 (default) Union aggregation -!-> REPEAT: FDATE:4 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=4] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/U/quiet t_f_u02_e1 = t_f02_e1, t_f02_e1_3 - !-> show data/br t_f_u02_e1 - currently SET data sets: - 15> t_f_u02_e1 (default) Union aggregation -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/U/quiet t_f_u02_e2 = t_f02_e2, t_f02_e2_3 - !-> show data/br t_f_u02_e2 - currently SET data sets: - 16> t_f_u02_e2 (default) Union aggregation -!-> REPEAT: FDATE:7 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=7] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/U/quiet t_f_u03_e1 = t_f03_e1, t_f03_e1_3 - !-> show data/br t_f_u03_e1 - currently SET data sets: - 17> t_f_u03_e1 (default) Union aggregation -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/U/quiet t_f_u03_e2 = t_f03_e2, t_f03_e2_3 - !-> show data/br t_f_u03_e2 - currently SET data sets: - 18> t_f_u03_e2 (default) Union aggregation - -cancel variable realization - -! should share the same time axis -show grid fcst[d=t_f01_e1] - GRID GBT1 - name axis # pts start end subset - XAX LONGITUDE 21mr 140E 160E full - YAX LATITUDE 11 r 10N 20N full - ZAX1 Z (m) 1 r 250 250 full - MONTHLY3 TIME 36 r 16-JAN-1950 05:14 16-DEC-1952 12:13 full -show grid fcst_3[d=t_f_u01_e2] - GRID GBT1 - name axis # pts start end subset - XAX LONGITUDE 21mr 140E 160E full - YAX LATITUDE 11 r 10N 20N full - ZAX1 Z (m) 1 r 250 250 full - MONTHLY3 TIME 36 r 16-JAN-1950 05:14 16-DEC-1952 12:13 full - -! Now go on and aggregate these time & union aggregations, in E and F - -! ======== TEST SET 1: aggregate E first, then F - -! define tue aggregations -- only the first remains unhidden -ENSEMBLE tue_f01 = t_f_u01_e1, t_f_u01_e2 -ENSEMBLE/hide tue_f02 = t_f_u02_e1, t_f_u02_e1 -ENSEMBLE/hide tue_f03 = t_f_u03_e1, t_f_u03_e2 -SHOW DATA/brief - currently SET data sets: - 1> t_f01_e1 - 2> t_f01_e2 - 3> t_f02_e1 - 4> t_f02_e2 - 5> t_f03_e1 - 6> t_f03_e2 - 7> t_f01_e1_3 - 8> t_f01_e2_3 - 9> t_f02_e1_3 - 10> t_f02_e2_3 - 11> t_f03_e1_3 - 12> t_f03_e2_3 - 13> t_f_u01_e1 Union aggregation - 14> t_f_u01_e2 Union aggregation - 16> t_f_u02_e2 Union aggregation - 19> tue_f01 Ensemble aggregation - 20> tue_f02 Ensemble aggregation - 21> tue_f03 (default) Ensemble aggregation -SHOW DATA/FULL tue_f03 - currently SET data sets: - 21> tue_f03 (default) Ensemble aggregation - Ensemble series of 2 datasets patterned on t_f_u03_e1 - name title I J K L M N - FCST some variable 1:21 1:11 1:1 1:36 1:2 ... - (L=7:18) - on grid GEN14 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:2.5 - FCST_2 another variable 1:21 1:11 1:1 1:36 1:2 ... - (L=7:18) - on grid GEN14 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:2.5 - REALIZATION - 1 ... ... ... ... 1:2 ... - on grid GGE4 with -1.E+34 for missing data - E=0.5:2.5 - FCST_3 another variable 1:21 1:11 1:1 1:36 1:2 ... - (L=7:18) - on grid GEN14 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:2.5 - ------------------------------ - MEMBER_DSET - Member dataset names in Ensembl ... ... ... ... 1:2 ... - Data type = TEXT - on grid GGE4 with -1.E+34 for missing data - E=0.5:2.5 - - time range: 17-JUL-1950 20:09 to 17-JUN-1953 03:07 - - Member datasets: - 21.1: t_f_u03_e1 - 21.2: t_f_u03_e2 -SHOW DATA/ATT tue_f03 ! notice the promotion of fcst.im_everywhere - currently SET data sets: - 21> tue_f03 (default) Ensemble aggregation - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . aggregate name CHAR 7 F tue_f03 - - FCST FLOAT long_name CHAR 13 T some variable - missing_value DOUBLE 1 T -1.E+34 - - FCST_2 FLOAT long_name CHAR 16 T another variable - missing_value DOUBLE 1 T -1.E+34 - - REALIZATION FLOAT long_name CHAR 1 T 1 - missing_value DOUBLE 1 T -1.E+34 - - FCST_3 FLOAT long_name CHAR 16 T another variable - missing_value DOUBLE 1 T -1.E+34 - - member_dset CHAR long_name CHAR 32 T Member dataset names in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - -! define tuef aggregation -FMRC/HIDE tuef = tue_f01, tue_f02, tue_f03 -SHOW DATA/brief/files - currently SET data sets: - 1> t_f01_e1 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e1_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e1_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e1_t3.nc - - 2> t_f01_e2 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e2_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e2_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e2_t3.nc - - 3> t_f02_e1 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e1_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e1_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e1_t3.nc - - 4> t_f02_e2 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e2_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e2_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e2_t3.nc - - 5> t_f03_e1 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e1_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e1_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e1_t3.nc - - 6> t_f03_e2 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e2_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e2_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e2_t3.nc - - 7> t_f01_e1_3 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e1_tu1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e1_tu2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e1_tu3.nc - - 8> t_f01_e2_3 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e2_tu1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e2_tu2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e2_tu3.nc - - 9> t_f02_e1_3 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e1_tu1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e1_tu2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e1_tu3.nc - - 10> t_f02_e2_3 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e2_tu1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e2_tu2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e2_tu3.nc - - 11> t_f03_e1_3 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e1_tu1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e1_tu2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e1_tu3.nc - - 12> t_f03_e2_3 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e2_tu1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e2_tu2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e2_tu3.nc - - 13> t_f_u01_e1 Union aggregation - Member datasets: - 13.1: t_f01_e1 - 13.2: t_f01_e1_3 - 14> t_f_u01_e2 Union aggregation - Member datasets: - 14.1: t_f01_e2 - 14.2: t_f01_e2_3 - 16> t_f_u02_e2 Union aggregation - Member datasets: - 16.1: t_f02_e2 - 16.2: t_f02_e2_3 - 22> tuef (default) Forecast aggregation - Member datasets: - 22.1: tue_f01 - 22.2: tue_f02 - 22.3: tue_f03 -show data/full tuef - currently SET data sets: - 22> tuef (default) Forecast aggregation - Forecast series of 3 datasets patterned on tue_f01 - name title I J K L M N - FCST some variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - on grid GFN1 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:2.5 F=16-NOV-1949 08:16:17-AUG-1950 06:38 - TF_TIMES Forecast time step matrix ... ... ... 1:36 ... 1:9 - days since 01-JAN-1900 on grid FTI11 with -1.E+34 for missing data - F=16-DEC-1949 18:45:16-SEP-1950 17:07 - FCST_2 another variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - on grid GFN1 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:2.5 F=16-NOV-1949 08:16:17-AUG-1950 06:38 - FCST_3 another variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - on grid GFN1 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:2.5 F=16-NOV-1949 08:16:17-AUG-1950 06:38 - - time range: 15.218 to 1080.5 - - Member datasets: - 22.1: tue_f01 - 22.2: tue_f02 - 22.3: tue_f03 - -! The time-union-ensemble-forecast aggregation - -set data tuef -show data tuef - currently SET data sets: - 22> tuef (default) Forecast aggregation - name title I J K L M N - FCST some variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - TF_TIMES Forecast time step matrix ... ... ... 1:36 ... 1:9 - FCST_2 another variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - FCST_3 another variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - -sh grid fcst - GRID (G178) Forecast Aggregation Grid - name axis # pts start end subset - XAX LONGITUDE 21mr 140E 160E full - YAX LATITUDE 11 r 10N 20N full - ZAX1 Z (m) 1 r 250 250 full - TF_LAG_T2 MODEL ELAPSED TIME 36 r 15.218 1080.5 full - ENSEMBLE1 E (realization) 2 r 1 2 full - RUN FORECAST 3 r 01-JAN-1950 00:00 02-JUL-1950 14:54 full -sh grid fcst_3 - GRID (G178) Forecast Aggregation Grid - name axis # pts start end subset - XAX LONGITUDE 21mr 140E 160E full - YAX LATITUDE 11 r 10N 20N full - ZAX1 Z (m) 1 r 250 250 full - TF_LAG_T2 MODEL ELAPSED TIME 36 r 15.218 1080.5 full - ENSEMBLE1 E (realization) 2 r 1 2 full - RUN FORECAST 3 r 01-JAN-1950 00:00 02-JUL-1950 14:54 full - -! simplest acess -- compact form -- just demonstrate it doesn't fail -stat/brief fcst[i=11:12, j=5:6, l=31:32, m=1:2, n=2:3] - - Total # of data points: 32 (2*2*1*2*2*2) - # flagged as bad data: 0 - Minimum value: 224.77 - Maximum value: 237.75 - Mean value: 228.15 (unweighted average) -stat/brief fcst_3[i=11:12, j=5:6, l=31:32, m=1:2, n=2:3] - - Total # of data points: 32 (2*2*1*2*2*2) - # flagged as bad data: 0 - Minimum value: 227.77 - Maximum value: 240.8 - Mean value: 231.16 (unweighted average) - -DEFINE SYMBOL TF_CAL_T = `fcst._cal_t_ax` - !-> DEFINE SYMBOL TF_CAL_T = TF_CAL_T -DEFINE SYMBOL TF_LAG_F = `fcst._lag_f_ax` - !-> DEFINE SYMBOL TF_LAG_F = TF_LAG_F -DEFINE SYMBOL TF_LAG_T = `fcst._lag_t_ax` - !-> DEFINE SYMBOL TF_LAG_T = TF_LAG_T2 -DEFINE SYMBOL TF_CAL_F = `fcst._cal_f_ax` - !-> DEFINE SYMBOL TF_CAL_F = TF_CAL_F9 - -! lead view of ensemble mean -let fcstfine = fcst[gt=($TF_LAG_T)@BIN,gf=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE fcstfine = fcst[gt=TF_LAG_T2@BIN,gf=TF_CAL_F9@BIN] -let lead_fcst = fcstfine[gt(TF_TIMES)=($TF_CAL_T),gf(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE lead_fcst = fcstfine[gt(TF_TIMES)=TF_CAL_T,gf(TF_TIMES)=TF_LAG_F] -shade/x=150E/y=15n lead_fcst[m=1:2@ave] - -let fcst3fine = fcst_3[gt=($TF_LAG_T)@BIN,gf=($TF_CAL_F)@BIN] - !-> DEFINE VARIABLE fcst3fine = fcst_3[gt=TF_LAG_T2@BIN,gf=TF_CAL_F9@BIN] -let lead_fcst_3 = fcst3fine[gt(TF_TIMES)=($TF_CAL_T),gf(TF_TIMES)=($TF_LAG_F)] - !-> DEFINE VARIABLE lead_fcst_3 = fcst3fine[gt(TF_TIMES)=TF_CAL_T,gf(TF_TIMES)=TF_LAG_F] -shade/x=150E/y=15n lead_fcst[m=1:2@ave] - -! the difference will be just a small variation from the value 3 -let diff_of_union = lead_fcst - lead_fcst_3 - -shade/x=150E/y=15n diff_of_union[m=1:2@ave] -CANCEL DATA/ALL - - - -GO bn_reset bn_ez_noupcase -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ez_noupcase -GO bn_ez_noupcase -! bn_ez_noupcase.jnl -! 7/2016 *acm* see ticket 2454 -! -! Handle variable-name upcasing for Ascii data -! in the same way as for netcdf variables. -! Previously they were resolutely up-cased and the -! lowercase version was unavailable. - -can mode upcase - -let abc = {2,4,6,8,6} -list/clobber/nohead/norow/file=abc.dat abc -can var/all -file/var=abc abc.dat -sh dat - currently SET data sets: - 1> ./abc.dat (default) - name title I J K L - abc abc 1:5 ... ... ... - -sh dat/att - currently SET data sets: - 1> ./abc.dat (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 7 F abc.dat - - abc DOUBLE long_name CHAR 3 T abc - missing_value DOUBLE 1 T -1.E+34 - -save/clobber/file=a.nc abc -sp ncdump -h a.nc -netcdf a { -dimensions: - AX042 = 5 ; -variables: - double AX042(AX042) ; - AX042:point_spacing = "even" ; - AX042:axis = "X" ; - double abc(AX042) ; - abc:missing_value = -1.e+34 ; - abc:_FillValue = -1.e+34 ; - abc:long_name = "abc" ; - abc:history = "From abc.dat" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! Delimited read -columns/skip=1/var="lab,nothing,var,latitude,longitude"/type="text,text,num,latitude,longitude" bn_delimited_read_1.dat -sh dat - currently SET data sets: - 1> ./abc.dat - name title I J K L - abc abc 1:5 ... ... ... - - 2> ./data/bn_delimited_read_1.dat (default) - name title I J K L - lab lab 1:6 ... ... ... - nothing nothing 1:6 ... ... ... - var var 1:6 ... ... ... - latitude latitude 1:6 ... ... ... - (Latitude) - longitude - longitude 1:6 ... ... ... - (Longitude) - -sh dat/att - currently SET data sets: - 1> ./abc.dat - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 7 F abc.dat - - abc DOUBLE long_name CHAR 3 T abc - missing_value DOUBLE 1 T -1.E+34 - - 2> ./data/bn_delimited_read_1.dat (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 23 F bn_delimited_read_1.dat - - lab CHAR long_name CHAR 3 T lab - missing_value DOUBLE 1 T -1.E+34 - - nothing CHAR long_name CHAR 7 T nothing - missing_value DOUBLE 1 T -1.E+34 - - var DOUBLE long_name CHAR 3 T var - missing_value DOUBLE 1 T -1.E+34 - - latitude DOUBLE long_name CHAR 8 T latitude - units CHAR 13 T degrees_north - missing_value DOUBLE 1 T -1.E+34 - - longitude DOUBLE long_name CHAR 9 T longitude - units CHAR 12 T degrees_east - missing_value DOUBLE 1 T -1.E+34 - -sav/file=a.nc/clobber var,longitude,latitude -sp ncdump -h a.nc -netcdf a { -dimensions: - AX048 = 6 ; -variables: - double AX048(AX048) ; - AX048:point_spacing = "even" ; - AX048:axis = "X" ; - double var(AX048) ; - var:missing_value = -1.e+34 ; - var:_FillValue = -1.e+34 ; - var:long_name = "var" ; - var:history = "From bn_delimited_read_1.dat" ; - double longitude(AX048) ; - longitude:missing_value = -1.e+34 ; - longitude:_FillValue = -1.e+34 ; - longitude:long_name = "longitude" ; - longitude:units = "degrees_east" ; - longitude:long_name_mod = "Longitude" ; - longitude:history = "From bn_delimited_read_1.dat" ; - double latitude(AX048) ; - latitude:missing_value = -1.e+34 ; - latitude:_FillValue = -1.e+34 ; - latitude:long_name = "latitude" ; - latitude:units = "degrees_north" ; - latitude:long_name_mod = "Latitude" ; - latitude:history = "From bn_delimited_read_1.dat" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -set mode/last upcase - -GO bn_reset bn_spawn_fail -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_spawn_fail -GO bn_spawn_fail -! bn_spawn_fail.jnl -! See ticket 2453 -! If a no-success flag is returned from a SPAWN, -! report that as a warning. -! 8/2016 *acm* - -sp ls notafile.nowhere -sp grep "this text is not in the file" genjnls/bn_all.jnl -sp rm nothing.dat -sp grep modulus data/non_COARDS.cdl -sp cp nofile.dat not_either.dat - -GO bn_reset bn_ave_of_ave -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ave_of_ave -GO bn_ave_of_ave -! bn_ave_of_ave.jnl -! see ticket 2469 - -let a = x[gx=1:3:1] + t[gt=1:7:1] -let a_xav = a[x=@ave] -let a_dev = a - a_xav - -list a_dev[x=@ave] - VARIABLE : A - A_XAV - SUBSET : 7 points (T) - X : 0.5 to 3.5 (averaged) - 1 / 1: 0.0000000 - 2 / 2: 0.0000000 - 3 / 3: 0.0000000 - 4 / 4: 0.0000000 - 5 / 5: 0.0000000 - 6 / 6: 0.0000000 - 7 / 7: 0.0000000 - -! Previously this was an error -list a[x=@ave] - a_xav[x=@ave] - VARIABLE : A[X=@AVE] - A_XAV[X=@AVE] - SUBSET : 7 points (T) - X : 0.5 to 3.5 - 1 / 1: 0.0000000 - 2 / 2: 0.0000000 - 3 / 3: 0.0000000 - 4 / 4: 0.0000000 - 5 / 5: 0.0000000 - 6 / 6: 0.0000000 - 7 / 7: 0.0000000 - -! Combine with functions, regridding -let a = x[gx=1:3:1] + t[gt=1:7:1] -let a_xav = a[x=@ave] -let a_xav_xav = a_xav[x=@ave] -let b = samplel(a_xav_xav, l[gl=1:3:1]) -let c = b[gt=1:3:1] - -! Previously an error -list c - VARIABLE : B[GT=1:3:1] - SUBSET : 3 points (T) - 1 / 1: 3.000000 - 2 / 2: 4.000000 - 3 / 3: 5.000000 - -! Likewise for @SUM, @MIN, @MAX. - -let a = TSEQUENCE({1,2,3}) -let a_xtrns = a[t=@SUM] -list a[t=@SUM] - a_xtrns[t=@SUM] - VARIABLE : A[T=@SUM] - A_XTRNS[T=@SUM] - T : 0.5 to 3.5 - 0.0000000 - -let a_xtrns = a[t=@MIN] -list a[t=@MIN] - a_xtrns[t=@MIN] - VARIABLE : A[T=@MIN] - A_XTRNS[T=@MIN] - T : 0.5 to 3.5 - 0.0000000 - -let a_xtrns = a[t=@MAX] -list a[t=@MAX] - a_xtrns[t=@MAX] - VARIABLE : A[T=@MAX] - A_XTRNS[T=@MAX] - T : 0.5 to 3.5 - 0.0000000 - - -GO bn_reset bn_agg_member_syntax -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_agg_member_syntax -GO bn_agg_member_syntax -! bn_agg_member_syntax - -! *sh* 11/16 - -! running of this benchmark assumes that a tmp directory has been created -! and that it contains the aggregation member files created by bn_aggregate_f - - -! define an 11-member FMRC aggregation -let files = SPAWN("ls -1 tmp/fcst_*.nc") -fmrc my_fmrc = files -show data/members my_fmrc ! /FILES is deprecated - currently SET data sets: - 12> my_fmrc (default) Forecast aggregation - name title I J K L M N - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 ... 1:11 - (L=1:24) - TF_TIMES Forecast time step matrix ... ... ... 1:24 ... 1:33 - FCST_2 another variable 1:21 1:21 ... 1:24 ... 1:11 - (L=1:24) - - Member datasets: - 12.1 : tmp/fcst_1.nc - 12.2 : tmp/fcst_2.nc - 12.3 : tmp/fcst_3.nc - 12.4 : tmp/fcst_4.nc - 12.5 : tmp/fcst_5.nc - 12.6 : tmp/fcst_6.nc - 12.7 : tmp/fcst_7.nc - 12.8 : tmp/fcst_8.nc - 12.9 : tmp/fcst_9.nc - 12.10: tmp/fcst_10.nc - 12.11: tmp/fcst_11.nc - -show data 12.3 ! turns out to be dset=5 - currently SET data sets: - 5> tmp/fcst_3.nc - name title I J K L - FCST FIELD + FCST_ERROR 1:21 1:21 ... 1:24 - (L=7:30) - FCST_2 another variable 1:21 1:21 ... 1:24 - (L=7:30) - - -! these are now all allowable references to the parent aggregation -stat fcst[d=12] - - FIELD + FCST_ERROR - LONGITUDE: 139.5E to 160.5E - LATITUDE: 19.5N to 40.5N - Z: N/A - MODEL ELAPSED TIME (days): 0 to 730.49 - E: N/A - FORECAST: 16-NOV-1949 08:16 to 16-AUG-1952 18:16 - DATA SET: my_fmrc - - Total # of data points: 116424 (21*21*1*24*1*11) - # flagged as bad data: 0 - Minimum value: -1.0066 - Maximum value: 1.4336 - Mean value: 0.1331 (unweighted average) - Standard deviation: 0.55293 -stat/br fcst[d=12.] - - Total # of data points: 116424 (21*21*1*24*1*11) - # flagged as bad data: 0 - Minimum value: -1.0066 - Maximum value: 1.4336 - Mean value: 0.1331 (unweighted average) -stat/br fcst[d=12.0] - - Total # of data points: 116424 (21*21*1*24*1*11) - # flagged as bad data: 0 - Minimum value: -1.0066 - Maximum value: 1.4336 - Mean value: 0.1331 (unweighted average) - -! reference a member -stat fcst[d=12.3] - - FIELD + FCST_ERROR - L=7:30 - LONGITUDE: 139.5E to 160.5E - LATITUDE: 19.5N to 40.5N - Z: N/A - TIME: 02-JUL-1950 14:54 to 02-JUL-1952 02:33 - E: N/A - F: N/A - DATA SET: tmp/fcst_3.nc - - Total # of data points: 10584 (21*21*1*24*1*1) - # flagged as bad data: 0 - Minimum value: -0.99738 - Maximum value: 1.3856 - Mean value: 0.13343 (unweighted average) - Standard deviation: 0.54485 -stat fcst[d=12.3] - fcst[d=5] ! v-v=0 - - FCST[D=fcst_3] - FCST[D=fcst_3] - LONGITUDE: 139.5E to 160.5E - LATITUDE: 19.5N to 40.5N - Z: N/A - TIME: 02-JUL-1950 14:54 to 02-JUL-1952 02:33 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 10584 (21*21*1*24*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 - -! note that FMRC members have distinct time axes. Specify "L=1" -stat fcst[d=12.3,l=1] - fcst[d=12.1,l=1] - - FCST[D=fcst_3,L=1] - FCST[D=fcst_1,L=1] - LONGITUDE: 139.5E to 160.5E - LATITUDE: 19.5N to 40.5N - Z: N/A - TIME: 17-JUL-1950 20:09 - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 441 (21*21*1*1*1*1) - # flagged as bad data: 0 - Minimum value: -0.12136 - Maximum value: 0.12112 - Mean value: -0.0071027 (unweighted average) - Standard deviation: 0.075099 - -! deliberate errors -set mode ignore - -stat/br fcst[d=5.3] ! d=5 is not an aggregation -stat/br fcst[d=12.30] ! not this many members -stat/br fcst[d=12.300000] - -set mode/last ignore - -cancel data/all -cancel var/all - -! Union datasets and SHOW DATA/MEMBERS -union tmp/uagg_1.nc,tmp/uagg_2.nc,tmp/uagg_3.nc,tmp/uagg_4.nc -show data/members - currently SET data sets: - 5> ./v7jnls/bn_agg_member_syntax.jnl (default) Union aggregation - name title I J K L - SST sst 1:5 1:4 ... 1:10 - TEMP temp 1:5 1:4 ... 1:10 - U U 1:5 1:4 ... 1:10 - V V 1:5 1:4 ... 1:10 - - Member datasets: - 5.1: tmp/uagg_1.nc - 5.2: tmp/uagg_2.nc - 5.3: tmp/uagg_3.nc - 5.4: tmp/uagg_4.nc -show data 5.2 - currently SET data sets: - 2> tmp/uagg_2.nc - name title I J K L - TEMP temp 1:5 1:4 ... 1:10 - -show data 5.3 - currently SET data sets: - 3> tmp/uagg_3.nc - name title I J K L - U U 1:5 1:4 ... 1:10 - - -cancel data/all - -! Tests for Ensembles -let files = SPAWN("ls -1 data/ens*.nc") -ensemble my_ens = files -sh data/members my_ens - currently SET data sets: - 5> my_ens (default) Ensemble aggregation - name title I J K L M N - SST SST_IN 1:10 1:9 ... 1:12 1:4 ... - ------------------------------ - MEMBER_DSET - Member dataset names in Ensembl ... ... ... ... 1:4 ... - TITLE Global Att *title* in Ensemble ... ... ... ... 1:4 ... - HISTORY Global Att *history* in Ensembl ... ... ... ... 1:4 ... - CONVENTIONS - Global Att *Conventions* in Ens ... ... ... ... 1:4 ... - MODEL Global Att *MODEL* in Ensemble ... ... ... ... 1:4 ... - NUMBER Global Att *NUMBER* in Ensemble ... ... ... ... 1:4 ... - - Member datasets: - 5.1: data/ens1.nc - 5.2: data/ens2.nc - 5.3: data/ens3.nc - 5.4: data/ens4.nc - -show data 5.3 - currently SET data sets: - 3> data/ens3.nc - name title I J K L - SST SST_IN 1:10 1:9 ... 1:12 - -stat sst[d=5] - - SST_IN - LONGITUDE: 110W to 90W - LATITUDE: 12N to 30N - Z: N/A - TIME: 01-JAN 00:45 to 31-DEC 06:34 - E (realization): 0.5 to 4.5 - F: N/A - DATA SET: my_ens - - Total # of data points: 4320 (10*9*1*12*4*1) - # flagged as bad data: 1156 - Minimum value: 16.844 - Maximum value: 123.32 - Mean value: 67.406 (unweighted average) - Standard deviation: 30.975 -stat sst[d=5.2] - - SST_IN - LONGITUDE: 110W to 90W - LATITUDE: 12N to 30N - Z: N/A - TIME: 01-JAN 00:45 to 31-DEC 06:34 - E: N/A - F: N/A - DATA SET: data/ens2.nc - - Total # of data points: 1080 (10*9*1*12*1*1) - # flagged as bad data: 289 - Minimum value: 33.688 - Maximum value: 61.66 - Mean value: 53.925 (unweighted average) - Standard deviation: 5.1904 - -can data my_ens - -! do them in another order -ENSEMBLE fourfiles = ens1, ens3, ens2, ens4 - -! not this is dataset 2 -show data 5.3 - currently SET data sets: - 3> ./data/ens2.nc - name title I J K L - SST SST_IN 1:10 1:9 ... 1:12 - - -stat sst[d=5] - sst[d=5.3] ! ensemble minus member #3 - - SST[D=fourfiles] - SST[D=ens2] - LONGITUDE: 110W to 90W - LATITUDE: 12N to 30N - Z: N/A - TIME: 01-JAN 00:45 to 31-DEC 06:34 - E (realization): 0.5 to 4.5 - F: N/A - DATA SET: N/A - - Total # of data points: 4320 (10*9*1*12*4*1) - # flagged as bad data: 1156 - Minimum value: -30.83 - Maximum value: 61.66 - Mean value: 13.481 (unweighted average) - Standard deviation: 30.317 - - -! deliberate errors -set mode ignore - -stat/br sst[d=4.1] ! not an ensemble -stat/br sst[d=5.30] ! not this many members - -set mode/last ignore - - -GO bn_reset bn_true_monthly -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_true_monthly -GO bn_true_monthly -! bn_true_monthly.jnl -! examples defining axes with /DEFINE AXIS/MONTHLY -! -! When a true monthly axis is found in a dataset, store it as a TRUEMONTH axis -! When writing a TRUEMONTH axis, write the correct coordinates using the original -! units if it came from a dataset, or using units of days if it's user-defined. - -! See known error conditions below - - -! For comparison, define regularly-spaced monthly axis of the sort we've always defined - -define axis/t=1-jan-2010:31-jul-2011:1/t0=1-jan-2000/units=month/edges t_reg_month -sh axis/t t_reg_month - name axis # pts start end - T_REG_MONTH TIME 19 r 16-JAN-2010 05:14 18-JUL-2011 01:58 -T0 = 1-JAN-2000 - Axis span (to cell edges) = 19 - - L T TBOX TBOXLO TSTEP (MONTH) - 1> 16-JAN-2010 05:14:33 1 01-JAN-2010 00:00:00 120.5189 - 2> 15-FEB-2010 15:43:39 1 31-JAN-2010 10:29:06 121.5189 - 3> 18-MAR-2010 02:12:45 1 02-MAR-2010 20:58:12 122.5189 - 4> 17-APR-2010 12:41:51 1 02-APR-2010 07:27:18 123.5189 - 5> 17-MAY-2010 23:10:57 1 02-MAY-2010 17:56:24 124.5189 - 6> 17-JUN-2010 09:40:03 1 02-JUN-2010 04:25:30 125.5189 - 7> 17-JUL-2010 20:09:09 1 02-JUL-2010 14:54:36 126.5189 - 8> 17-AUG-2010 06:38:15 1 02-AUG-2010 01:23:42 127.5189 - 9> 16-SEP-2010 17:07:21 1 01-SEP-2010 11:52:48 128.5189 - 10> 17-OCT-2010 03:36:27 1 01-OCT-2010 22:21:54 129.5189 - 11> 16-NOV-2010 14:05:33 1 01-NOV-2010 08:51:00 130.5189 - 12> 17-DEC-2010 00:34:39 1 01-DEC-2010 19:20:06 131.5189 - 13> 16-JAN-2011 11:03:45 1 01-JAN-2011 05:49:12 132.5189 - 14> 15-FEB-2011 21:32:51 1 31-JAN-2011 16:18:18 133.5189 - 15> 18-MAR-2011 08:01:57 1 03-MAR-2011 02:47:24 134.5189 - 16> 17-APR-2011 18:31:03 1 02-APR-2011 13:16:30 135.5189 - 17> 18-MAY-2011 05:00:09 1 02-MAY-2011 23:45:36 136.5189 - 18> 17-JUN-2011 15:29:15 1 02-JUN-2011 10:14:42 137.5189 - 19> 18-JUL-2011 01:58:21 1 02-JUL-2011 20:43:48 138.5189 - -! true-monthly axes, t0 at start of axis -define axis/t=1-jan-2010:31-jul-2011:1/t0=1-jan-2010/monthly taxis -sh axis/t taxis - name axis # pts start end - TAXIS TIME 19 i JAN-2010 JUL-2011 (True Monthly) -T0 = 1-JAN-2010 - Axis span (to cell edges) = 19 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> JAN-2010 31 01-JAN-2010 0 - 2> FEB-2010 28 01-FEB-2010 1 - 3> MAR-2010 31 01-MAR-2010 2 - 4> APR-2010 30 01-APR-2010 3 - 5> MAY-2010 31 01-MAY-2010 4 - 6> JUN-2010 30 01-JUN-2010 5 - 7> JUL-2010 31 01-JUL-2010 6 - 8> AUG-2010 31 01-AUG-2010 7 - 9> SEP-2010 30 01-SEP-2010 8 - 10> OCT-2010 31 01-OCT-2010 9 - 11> NOV-2010 30 01-NOV-2010 10 - 12> DEC-2010 31 01-DEC-2010 11 - 13> JAN-2011 31 01-JAN-2011 12 - 14> FEB-2011 28 01-FEB-2011 13 - 15> MAR-2011 31 01-MAR-2011 14 - 16> APR-2011 30 01-APR-2011 15 - 17> MAY-2011 31 01-MAY-2011 16 - 18> JUN-2011 30 01-JUN-2011 17 - 19> JUL-2011 31 01-JUL-2011 18 - -! t0 before start of axis -define axis/t=1-jan-2010:31-jul-2011:1/t0=1-jan-2000/monthly taxis -sh axis/t taxis - name axis # pts start end - TAXIS TIME 19 i JAN-2010 JUL-2011 (True Monthly) -T0 = 1-JAN-2000 - Axis span (to cell edges) = 19 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> JAN-2010 31 01-JAN-2010 120 - 2> FEB-2010 28 01-FEB-2010 121 - 3> MAR-2010 31 01-MAR-2010 122 - 4> APR-2010 30 01-APR-2010 123 - 5> MAY-2010 31 01-MAY-2010 124 - 6> JUN-2010 30 01-JUN-2010 125 - 7> JUL-2010 31 01-JUL-2010 126 - 8> AUG-2010 31 01-AUG-2010 127 - 9> SEP-2010 30 01-SEP-2010 128 - 10> OCT-2010 31 01-OCT-2010 129 - 11> NOV-2010 30 01-NOV-2010 130 - 12> DEC-2010 31 01-DEC-2010 131 - 13> JAN-2011 31 01-JAN-2011 132 - 14> FEB-2011 28 01-FEB-2011 133 - 15> MAR-2011 31 01-MAR-2011 134 - 16> APR-2011 30 01-APR-2011 135 - 17> MAY-2011 31 01-MAY-2011 136 - 18> JUN-2011 30 01-JUN-2011 137 - 19> JUL-2011 31 01-JUL-2011 138 - -! default time origin is start of month of first month -define axis/t=1-jul-2010:1-jan-2012:1/monthly taxis -sh axis/t taxis - name axis # pts start end - TAXIS TIME 19 i JUL-2010 JAN-2012 (True Monthly) -T0 = 01-JAN-2010 - Axis span (to cell edges) = 19 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> JUL-2010 31 01-JUL-2010 6 - 2> AUG-2010 31 01-AUG-2010 7 - 3> SEP-2010 30 01-SEP-2010 8 - 4> OCT-2010 31 01-OCT-2010 9 - 5> NOV-2010 30 01-NOV-2010 10 - 6> DEC-2010 31 01-DEC-2010 11 - 7> JAN-2011 31 01-JAN-2011 12 - 8> FEB-2011 28 01-FEB-2011 13 - 9> MAR-2011 31 01-MAR-2011 14 - 10> APR-2011 30 01-APR-2011 15 - 11> MAY-2011 31 01-MAY-2011 16 - 12> JUN-2011 30 01-JUN-2011 17 - 13> JUL-2011 31 01-JUL-2011 18 - 14> AUG-2011 31 01-AUG-2011 19 - 15> SEP-2011 30 01-SEP-2011 20 - 16> OCT-2011 31 01-OCT-2011 21 - 17> NOV-2011 30 01-NOV-2011 22 - 18> DEC-2011 31 01-DEC-2011 23 - 19> JAN-2012 31 01-JAN-2012 24 - -! Cell edges at mid-month -define axis/t=15-mar-2010:15-dec-2011:1/t0=1-jan-2000/monthly taxis -sh axis/t taxis - name axis # pts start end - TAXIS TIME 22 i MAR-2010 DEC-2011 (True Monthly) -T0 = 1-JAN-2000 - Axis span (to cell edges) = 22 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> MAR-2010 31 01-MAR-2010 122 - 2> APR-2010 30 01-APR-2010 123 - 3> MAY-2010 31 01-MAY-2010 124 - 4> JUN-2010 30 01-JUN-2010 125 - 5> JUL-2010 31 01-JUL-2010 126 - 6> AUG-2010 31 01-AUG-2010 127 - 7> SEP-2010 30 01-SEP-2010 128 - 8> OCT-2010 31 01-OCT-2010 129 - 9> NOV-2010 30 01-NOV-2010 130 - 10> DEC-2010 31 01-DEC-2010 131 - 11> JAN-2011 31 01-JAN-2011 132 - 12> FEB-2011 28 01-FEB-2011 133 - 13> MAR-2011 31 01-MAR-2011 134 - 14> APR-2011 30 01-APR-2011 135 - 15> MAY-2011 31 01-MAY-2011 136 - 16> JUN-2011 30 01-JUN-2011 137 - 17> JUL-2011 31 01-JUL-2011 138 - 18> AUG-2011 31 01-AUG-2011 139 - 19> SEP-2011 30 01-SEP-2011 140 - 20> OCT-2011 31 01-OCT-2011 141 - 21> NOV-2011 30 01-NOV-2011 142 - 22> DEC-2011 31 01-DEC-2011 143 - -! other calendars JULIAN -define axis/cal=julian/t=1-jan-2011:31-jul-2012:1/t0=1-jan-2000/monthly taxis -sh axis/t taxis - name axis # pts start end - TAXIS TIME 19 i JAN-2011 JUL-2012 (True Monthly) -T0 = 1-JAN-2000 -CALENDAR = JULIAN - Axis span (to cell edges) = 19 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> JAN-2011 31 01-JAN-2011 132 - 2> FEB-2011 28 01-FEB-2011 133 - 3> MAR-2011 31 01-MAR-2011 134 - 4> APR-2011 30 01-APR-2011 135 - 5> MAY-2011 31 01-MAY-2011 136 - 6> JUN-2011 30 01-JUN-2011 137 - 7> JUL-2011 31 01-JUL-2011 138 - 8> AUG-2011 31 01-AUG-2011 139 - 9> SEP-2011 30 01-SEP-2011 140 - 10> OCT-2011 31 01-OCT-2011 141 - 11> NOV-2011 30 01-NOV-2011 142 - 12> DEC-2011 31 01-DEC-2011 143 - 13> JAN-2012 31 01-JAN-2012 144 - 14> FEB-2012 29 01-FEB-2012 145 - 15> MAR-2012 31 01-MAR-2012 146 - 16> APR-2012 30 01-APR-2012 147 - 17> MAY-2012 31 01-MAY-2012 148 - 18> JUN-2012 30 01-JUN-2012 149 - 19> JUL-2012 31 01-JUL-2012 150 - -! default time origin -define axis/cal=julian/t=15-mar-2010:15-dec-2011:1/monthly taxis -sh axis/t taxis - name axis # pts start end - TAXIS TIME 22 i MAR-2010 DEC-2011 (True Monthly) -T0 = 01-JAN-2010 -CALENDAR = JULIAN - Axis span (to cell edges) = 22 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> MAR-2010 31 01-MAR-2010 2 - 2> APR-2010 30 01-APR-2010 3 - 3> MAY-2010 31 01-MAY-2010 4 - 4> JUN-2010 30 01-JUN-2010 5 - 5> JUL-2010 31 01-JUL-2010 6 - 6> AUG-2010 31 01-AUG-2010 7 - 7> SEP-2010 30 01-SEP-2010 8 - 8> OCT-2010 31 01-OCT-2010 9 - 9> NOV-2010 30 01-NOV-2010 10 - 10> DEC-2010 31 01-DEC-2010 11 - 11> JAN-2011 31 01-JAN-2011 12 - 12> FEB-2011 28 01-FEB-2011 13 - 13> MAR-2011 31 01-MAR-2011 14 - 14> APR-2011 30 01-APR-2011 15 - 15> MAY-2011 31 01-MAY-2011 16 - 16> JUN-2011 30 01-JUN-2011 17 - 17> JUL-2011 31 01-JUL-2011 18 - 18> AUG-2011 31 01-AUG-2011 19 - 19> SEP-2011 30 01-SEP-2011 20 - 20> OCT-2011 31 01-OCT-2011 21 - 21> NOV-2011 30 01-NOV-2011 22 - 22> DEC-2011 31 01-DEC-2011 23 - -! other calendars NOLEAP -define axis/cal=noleap/t=1-jan-2011:31-jul-2012:1/t0=1-jan-2000/monthly taxis -sh axis/t taxis - name axis # pts start end - TAXIS TIME 19 i JAN-2011 JUL-2012 (True Monthly) -T0 = 1-JAN-2000 -CALENDAR = NOLEAP - Axis span (to cell edges) = 19 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> JAN-2011 31 01-JAN-2011 132 - 2> FEB-2011 28 01-FEB-2011 133 - 3> MAR-2011 31 01-MAR-2011 134 - 4> APR-2011 30 01-APR-2011 135 - 5> MAY-2011 31 01-MAY-2011 136 - 6> JUN-2011 30 01-JUN-2011 137 - 7> JUL-2011 31 01-JUL-2011 138 - 8> AUG-2011 31 01-AUG-2011 139 - 9> SEP-2011 30 01-SEP-2011 140 - 10> OCT-2011 31 01-OCT-2011 141 - 11> NOV-2011 30 01-NOV-2011 142 - 12> DEC-2011 31 01-DEC-2011 143 - 13> JAN-2012 31 01-JAN-2012 144 - 14> FEB-2012 28 01-FEB-2012 145 - 15> MAR-2012 31 01-MAR-2012 146 - 16> APR-2012 30 01-APR-2012 147 - 17> MAY-2012 31 01-MAY-2012 148 - 18> JUN-2012 30 01-JUN-2012 149 - 19> JUL-2012 31 01-JUL-2012 150 - -! not at first of month -define axis/cal=julian/t=15-mar-2010:15-dec-2011:1/t0=1-jan-2000/monthly taxis -sh axis/t taxis - name axis # pts start end - TAXIS TIME 22 i MAR-2010 DEC-2011 (True Monthly) -T0 = 1-JAN-2000 -CALENDAR = JULIAN - Axis span (to cell edges) = 22 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> MAR-2010 31 01-MAR-2010 122 - 2> APR-2010 30 01-APR-2010 123 - 3> MAY-2010 31 01-MAY-2010 124 - 4> JUN-2010 30 01-JUN-2010 125 - 5> JUL-2010 31 01-JUL-2010 126 - 6> AUG-2010 31 01-AUG-2010 127 - 7> SEP-2010 30 01-SEP-2010 128 - 8> OCT-2010 31 01-OCT-2010 129 - 9> NOV-2010 30 01-NOV-2010 130 - 10> DEC-2010 31 01-DEC-2010 131 - 11> JAN-2011 31 01-JAN-2011 132 - 12> FEB-2011 28 01-FEB-2011 133 - 13> MAR-2011 31 01-MAR-2011 134 - 14> APR-2011 30 01-APR-2011 135 - 15> MAY-2011 31 01-MAY-2011 136 - 16> JUN-2011 30 01-JUN-2011 137 - 17> JUL-2011 31 01-JUL-2011 138 - 18> AUG-2011 31 01-AUG-2011 139 - 19> SEP-2011 30 01-SEP-2011 140 - 20> OCT-2011 31 01-OCT-2011 141 - 21> NOV-2011 30 01-NOV-2011 142 - 22> DEC-2011 31 01-DEC-2011 143 - -! other calendars 360_day -define axis/cal=360_day/t=1-jan-2010:30-jul-2011:1/t0=1-jan-2000/monthly taxis -sh axis/t taxis - name axis # pts start end - TAXIS TIME 19 r JAN-2010 JUL-2011 (True Monthly) -T0 = 1-JAN-2000 -CALENDAR = 360_DAY - Axis span (to cell edges) = 19 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> JAN-2010 30 01-JAN-2010 120 - 2> FEB-2010 30 01-FEB-2010 121 - 3> MAR-2010 30 01-MAR-2010 122 - 4> APR-2010 30 01-APR-2010 123 - 5> MAY-2010 30 01-MAY-2010 124 - 6> JUN-2010 30 01-JUN-2010 125 - 7> JUL-2010 30 01-JUL-2010 126 - 8> AUG-2010 30 01-AUG-2010 127 - 9> SEP-2010 30 01-SEP-2010 128 - 10> OCT-2010 30 01-OCT-2010 129 - 11> NOV-2010 30 01-NOV-2010 130 - 12> DEC-2010 30 01-DEC-2010 131 - 13> JAN-2011 30 01-JAN-2011 132 - 14> FEB-2011 30 01-FEB-2011 133 - 15> MAR-2011 30 01-MAR-2011 134 - 16> APR-2011 30 01-APR-2011 135 - 17> MAY-2011 30 01-MAY-2011 136 - 18> JUN-2011 30 01-JUN-2011 137 - 19> JUL-2011 30 01-JUL-2011 138 - -! Writing data, including a leap year - -define axis/t=3-mar-2011:3-jan-2013:1/monthly/t0=1-jan-2010 taxis -def var tt = t[gt=taxis] -save/clobber/file=a.nc tt - -can var/all -use a -sh dat/att - currently SET data sets: - 1> ./a.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(TAXIS1) DOUBLE axis CHAR 1 T T - time_origin CHAR 11 T 01-JAN-2010 - units CHAR 21 T days since 2010-01-01 - standard_name CHAR 4 F time - bounds CHAR 10 T TAXIS_bnds - orig_file_axname - CHAR 5 F TAXIS - - TAXIS_bnds DOUBLE - - TT DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 11 T T[GT=TAXIS] - -sh grid tt - GRID GSI1 - name axis # pts start end subset - normal X - normal Y - normal Z - TAXIS1 TIME 23 i 16-MAR-2011 12:00 16-JAN-2013 12:00 full -sh axis/t taxis - name axis # pts start end - TAXIS TIME 23 i MAR-2011 JAN-2013 (True Monthly) -T0 = 1-JAN-2010 - Axis span (to cell edges) = 23 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> MAR-2011 31 01-MAR-2011 14 - 2> APR-2011 30 01-APR-2011 15 - 3> MAY-2011 31 01-MAY-2011 16 - 4> JUN-2011 30 01-JUN-2011 17 - 5> JUL-2011 31 01-JUL-2011 18 - 6> AUG-2011 31 01-AUG-2011 19 - 7> SEP-2011 30 01-SEP-2011 20 - 8> OCT-2011 31 01-OCT-2011 21 - 9> NOV-2011 30 01-NOV-2011 22 - 10> DEC-2011 31 01-DEC-2011 23 - 11> JAN-2012 31 01-JAN-2012 24 - 12> FEB-2012 29 01-FEB-2012 25 - 13> MAR-2012 31 01-MAR-2012 26 - 14> APR-2012 30 01-APR-2012 27 - 15> MAY-2012 31 01-MAY-2012 28 - 16> JUN-2012 30 01-JUN-2012 29 - 17> JUL-2012 31 01-JUL-2012 30 - 18> AUG-2012 31 01-AUG-2012 31 - 19> SEP-2012 30 01-SEP-2012 32 - 20> OCT-2012 31 01-OCT-2012 33 - 21> NOV-2012 30 01-NOV-2012 34 - 22> DEC-2012 31 01-DEC-2012 35 - 23> JAN-2013 31 01-JAN-2013 36 - -can dat/all - -define axis/t=3-mar-2011:3-jan-2013:1/monthly/t0=1-jan-2010/calendar=julian taxis -def var tt = t[gt=taxis] -save/clobber/file=a.nc tt - -can var/all -use a -sh dat/att - currently SET data sets: - 1> ./a.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(TAXIS1) DOUBLE axis CHAR 1 T T - time_origin CHAR 10 T 1-JAN-2010 - calendar CHAR 6 T JULIAN - units CHAR 21 T days since 2010-01-01 - standard_name CHAR 4 F time - bounds CHAR 10 T TAXIS_bnds - orig_file_axname - CHAR 5 F TAXIS - - TAXIS_bnds DOUBLE - - TT DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 11 T T[GT=TAXIS] - -sh grid tt - GRID GSI1 - name axis # pts start end subset - normal X - normal Y - normal Z - TAXIS1 TIME 23 i 16-MAR-2011 12:00 16-JAN-2013 12:00 full -sh axis/t taxis - name axis # pts start end - TAXIS TIME 23 i MAR-2011 JAN-2013 (True Monthly) -T0 = 1-JAN-2010 -CALENDAR = JULIAN - Axis span (to cell edges) = 23 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> MAR-2011 31 01-MAR-2011 14 - 2> APR-2011 30 01-APR-2011 15 - 3> MAY-2011 31 01-MAY-2011 16 - 4> JUN-2011 30 01-JUN-2011 17 - 5> JUL-2011 31 01-JUL-2011 18 - 6> AUG-2011 31 01-AUG-2011 19 - 7> SEP-2011 30 01-SEP-2011 20 - 8> OCT-2011 31 01-OCT-2011 21 - 9> NOV-2011 30 01-NOV-2011 22 - 10> DEC-2011 31 01-DEC-2011 23 - 11> JAN-2012 31 01-JAN-2012 24 - 12> FEB-2012 29 01-FEB-2012 25 - 13> MAR-2012 31 01-MAR-2012 26 - 14> APR-2012 30 01-APR-2012 27 - 15> MAY-2012 31 01-MAY-2012 28 - 16> JUN-2012 30 01-JUN-2012 29 - 17> JUL-2012 31 01-JUL-2012 30 - 18> AUG-2012 31 01-AUG-2012 31 - 19> SEP-2012 30 01-SEP-2012 32 - 20> OCT-2012 31 01-OCT-2012 33 - 21> NOV-2012 30 01-NOV-2012 34 - 22> DEC-2012 31 01-DEC-2012 35 - 23> JAN-2013 31 01-JAN-2013 36 - -can dat/all - -define axis/t=3-mar-2011:3-jan-2013:1/monthly/t0=1-jan-2010/calendar=360_day taxis -def var tt = t[gt=taxis] -save/clobber/file=a.nc tt - -can var/all -use a -sh dat/att - currently SET data sets: - 1> ./a.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(TAXIS1) DOUBLE axis CHAR 1 T T - time_origin CHAR 10 T 1-JAN-2010 - calendar CHAR 7 T 360_DAY - units CHAR 21 T days since 2010-01-01 - standard_name CHAR 4 F time - bounds CHAR 10 T TAXIS_bnds - orig_file_axname - CHAR 5 F TAXIS - - TAXIS_bnds DOUBLE - - TT DOUBLE missing_value DOUBLE 1 T -1.E+34 - _FillValue DOUBLE 1 T -1.E+34 - long_name CHAR 11 T T[GT=TAXIS] - -sh grid tt - GRID GSI1 - name axis # pts start end subset - normal X - normal Y - normal Z - TAXIS1 TIME 22 r 16-MAR-2011 00:00 16-DEC-2012 00:00 full -sh axis/t taxis - name axis # pts start end - TAXIS TIME 22 r MAR-2011 DEC-2012 (True Monthly) -T0 = 1-JAN-2010 -CALENDAR = 360_DAY - Axis span (to cell edges) = 22 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> MAR-2011 30 01-MAR-2011 14 - 2> APR-2011 30 01-APR-2011 15 - 3> MAY-2011 30 01-MAY-2011 16 - 4> JUN-2011 30 01-JUN-2011 17 - 5> JUL-2011 30 01-JUL-2011 18 - 6> AUG-2011 30 01-AUG-2011 19 - 7> SEP-2011 30 01-SEP-2011 20 - 8> OCT-2011 30 01-OCT-2011 21 - 9> NOV-2011 30 01-NOV-2011 22 - 10> DEC-2011 30 01-DEC-2011 23 - 11> JAN-2012 30 01-JAN-2012 24 - 12> FEB-2012 30 01-FEB-2012 25 - 13> MAR-2012 30 01-MAR-2012 26 - 14> APR-2012 30 01-APR-2012 27 - 15> MAY-2012 30 01-MAY-2012 28 - 16> JUN-2012 30 01-JUN-2012 29 - 17> JUL-2012 30 01-JUL-2012 30 - 18> AUG-2012 30 01-AUG-2012 31 - 19> SEP-2012 30 01-SEP-2012 32 - 20> OCT-2012 30 01-OCT-2012 33 - 21> NOV-2012 30 01-NOV-2012 34 - 22> DEC-2012 30 01-DEC-2012 35 - -! Without date range spec, -def axis/monthly/t0=1-jan-0000/t=1:24:1 taxis -sh axis/t taxis - name axis # pts start end - TAXIS TIME 24 i JAN-0000 DEC-0001 (True Monthly) -T0 = 1-JAN-0000 - Axis span (to cell edges) = 24 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> JAN-0000 31 01-JAN-0000 0 - 2> FEB-0000 29 01-FEB-0000 1 - 3> MAR-0000 31 01-MAR-0000 2 - 4> APR-0000 30 01-APR-0000 3 - 5> MAY-0000 31 01-MAY-0000 4 - 6> JUN-0000 30 01-JUN-0000 5 - 7> JUL-0000 31 01-JUL-0000 6 - 8> AUG-0000 31 01-AUG-0000 7 - 9> SEP-0000 30 01-SEP-0000 8 - 10> OCT-0000 31 01-OCT-0000 9 - 11> NOV-0000 30 01-NOV-0000 10 - 12> DEC-0000 31 01-DEC-0000 11 - 13> JAN-0001 31 01-JAN-0001 12 - 14> FEB-0001 28 01-FEB-0001 13 - 15> MAR-0001 31 01-MAR-0001 14 - 16> APR-0001 30 01-APR-0001 15 - 17> MAY-0001 31 01-MAY-0001 16 - 18> JUN-0001 30 01-JUN-0001 17 - 19> JUL-0001 31 01-JUL-0001 18 - 20> AUG-0001 31 01-AUG-0001 19 - 21> SEP-0001 30 01-SEP-0001 20 - 22> OCT-0001 31 01-OCT-0001 21 - 23> NOV-0001 30 01-NOV-0001 22 - 24> DEC-0001 31 01-DEC-0001 23 - -! With T0 later than year 0 -def axis/monthly/t0=1-jan-2000/t=1:24:1 taxis -sh axis/t taxis - name axis # pts start end - TAXIS TIME 24 i JAN-2000 DEC-2001 (True Monthly) -T0 = 1-JAN-2000 - Axis span (to cell edges) = 24 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> JAN-2000 31 01-JAN-2000 0 - 2> FEB-2000 29 01-FEB-2000 1 - 3> MAR-2000 31 01-MAR-2000 2 - 4> APR-2000 30 01-APR-2000 3 - 5> MAY-2000 31 01-MAY-2000 4 - 6> JUN-2000 30 01-JUN-2000 5 - 7> JUL-2000 31 01-JUL-2000 6 - 8> AUG-2000 31 01-AUG-2000 7 - 9> SEP-2000 30 01-SEP-2000 8 - 10> OCT-2000 31 01-OCT-2000 9 - 11> NOV-2000 30 01-NOV-2000 10 - 12> DEC-2000 31 01-DEC-2000 11 - 13> JAN-2001 31 01-JAN-2001 12 - 14> FEB-2001 28 01-FEB-2001 13 - 15> MAR-2001 31 01-MAR-2001 14 - 16> APR-2001 30 01-APR-2001 15 - 17> MAY-2001 31 01-MAY-2001 16 - 18> JUN-2001 30 01-JUN-2001 17 - 19> JUL-2001 31 01-JUL-2001 18 - 20> AUG-2001 31 01-AUG-2001 19 - 21> SEP-2001 30 01-SEP-2001 20 - 22> OCT-2001 31 01-OCT-2001 21 - 23> NOV-2001 30 01-NOV-2001 22 - 24> DEC-2001 31 01-DEC-2001 23 - -! Default T0, non-calendar t def -define axis/monthly/t=1:36:1 taxis -sh axis/t taxis - name axis # pts start end - TAXIS TIME 36 i JAN-0000 DEC-0002 (True Monthly) -T0 = 01-JAN-0000 - Axis span (to cell edges) = 36 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> JAN-0000 31 01-JAN-0000 0 - 2> FEB-0000 29 01-FEB-0000 1 - 3> MAR-0000 31 01-MAR-0000 2 - 4> APR-0000 30 01-APR-0000 3 - 5> MAY-0000 31 01-MAY-0000 4 - 6> JUN-0000 30 01-JUN-0000 5 - 7> JUL-0000 31 01-JUL-0000 6 - 8> AUG-0000 31 01-AUG-0000 7 - 9> SEP-0000 30 01-SEP-0000 8 - 10> OCT-0000 31 01-OCT-0000 9 - 11> NOV-0000 30 01-NOV-0000 10 - 12> DEC-0000 31 01-DEC-0000 11 - 13> JAN-0001 31 01-JAN-0001 12 - 14> FEB-0001 28 01-FEB-0001 13 - 15> MAR-0001 31 01-MAR-0001 14 - 16> APR-0001 30 01-APR-0001 15 - 17> MAY-0001 31 01-MAY-0001 16 - 18> JUN-0001 30 01-JUN-0001 17 - 19> JUL-0001 31 01-JUL-0001 18 - 20> AUG-0001 31 01-AUG-0001 19 - 21> SEP-0001 30 01-SEP-0001 20 - 22> OCT-0001 31 01-OCT-0001 21 - 23> NOV-0001 30 01-NOV-0001 22 - 24> DEC-0001 31 01-DEC-0001 23 - 25> JAN-0002 31 01-JAN-0002 24 - 26> FEB-0002 28 01-FEB-0002 25 - 27> MAR-0002 31 01-MAR-0002 26 - 28> APR-0002 30 01-APR-0002 27 - 29> MAY-0002 31 01-MAY-0002 28 - 30> JUN-0002 30 01-JUN-0002 29 - 31> JUL-0002 31 01-JUL-0002 30 - 32> AUG-0002 31 01-AUG-0002 31 - 33> SEP-0002 30 31-AUG-0002 32 - 34> OCT-0002 31 01-OCT-0002 33 - 35> NOV-0002 30 01-NOV-0002 34 - 36> DEC-0002 31 01-DEC-0002 35 - -! modulo -define axis/t=1-jan-2010:31-dec-2010:1/t0=1-jan-2000/monthly/modulo taxis - -let var = {1,2,3,4,5,6,7,8,9,10,11,12} -let tvar = reshape(var,t[gt=taxis]) -list/L=1:23 tvar - VARIABLE : RESHAPE(VAR,T[GT=TAXIS]) - SUBSET : 23 points (TIME) - 16-JAN-2010 12 / 1: 1.00000 - 15-FEB-2010 00 / 2: 2.00000 - 16-MAR-2010 12 / 3: 3.00000 - 16-APR-2010 00 / 4: 4.00000 - 16-MAY-2010 12 / 5: 5.00000 - 16-JUN-2010 00 / 6: 6.00000 - 16-JUL-2010 12 / 7: 7.00000 - 16-AUG-2010 12 / 8: 8.00000 - 16-SEP-2010 00 / 9: 9.00000 - 16-OCT-2010 12 / 10: 10.00000 - 16-NOV-2010 00 / 11: 11.00000 - 16-DEC-2010 12 / 12: 12.00000 - 16-JAN-2011 17 / 13: 1.00000 - 15-FEB-2011 05 / 14: 2.00000 - 16-MAR-2011 17 / 15: 3.00000 - 16-APR-2011 05 / 16: 4.00000 - 16-MAY-2011 17 / 17: 5.00000 - 16-JUN-2011 05 / 18: 6.00000 - 16-JUL-2011 17 / 19: 7.00000 - 16-AUG-2011 17 / 20: 8.00000 - 16-SEP-2011 05 / 21: 9.00000 - 16-OCT-2011 17 / 22: 10.00000 - 16-NOV-2011 05 / 23: 11.00000 -! *sh* 3/17: a possible alternative syntax: -! let var = TSEQUENCE({1,2,3,4,5,6,7,8,9,10,11,12}) -! let tvar = var[gt=taxis@asn] -! Since this is a fairly common need -- creating a line along some axis -! should we offer a new function AXSEQUENCE(array, axis) ? - -! Striding on a monthly axis - -def axis/monthly/t0=1-jan-2000/t=1-jan-2000:31-dec-2004:1/unit=monthly taxis -!sh axis/t/l=1:14 taxis -let tt = t[gt=taxis] -list tt[l=1:6:2] - VARIABLE : T[GT=TAXIS] - regrid: 2 tmon_gregori on T - SUBSET : 3 points (TIME) - 16-JAN-2000 / 1: 15.5000 - 16-MAR-2000 / 2: 75.5000 - 16-MAY-2000 / 3: 136.5000 - -list/prec=6 tt[l=1:60:12] - VARIABLE : T[GT=TAXIS] - regrid: 12 tmon_gregori on T - SUBSET : 5 points (TIME) - 16-JAN-2000 / 1: 15.50 - 16-JAN-2001 / 2: 381.50 - 16-JAN-2002 / 3: 746.50 - 16-JAN-2003 / 4: 1111.50 - 16-JAN-2004 / 5: 1476.50 - -! From a file -save/file=a.nc/clobber tt -can dat/all; can var/all -use a -list/prec=6 tt[l=1:60:12] - VARIABLE : T[GT=TAXIS] - regrid: on T - FILENAME : a.nc - SUBSET : 5 points (TIME) - APR-2001 / 1: 15.50 - OCT-2031 / 2: 381.50 - MAR-2062 / 3: 746.50 - AUG-2092 / 4: 1111.50 - JAN-2123 / 5: 1476.50 - -! DEFINE AXIS/MONTHLY warnings and error conditions: - -! Not an error - /EDGES is ignored, as it's the default -define axis/t=1-jan-2010:31-jul-2011:1/t0=1-jan-2000/monthly/edges taxis -sh axis taxis - name axis # pts start end - TAXIS TIME 19 i JAN-2010 JUL-2011 (True Monthly) -T0 = 1-JAN-2000 - Axis span (to cell edges) = 19 - -! Not an error - /UNITS=month is the default -define axis/t=1-jan-2010:31-jul-2011:1/t0=1-jan-2000/monthly/units=months taxis -sh axis taxis - name axis # pts start end - TAXIS TIME 19 i JAN-2010 JUL-2011 (True Monthly) -T0 = 1-JAN-2000 - Axis span (to cell edges) = 19 - -set mode ignore -! not all months have day 30, cannot start at day 30 -define axis/t=30-mar-2010:30-dec-2011:1/monthly taxis - -! Units of other than months is an error -define axis/t=1-jan-2010:31-jul-2011:30/t0=1-jan-2000/monthly/units=days taxis - -! /NPOINTS, /BOUNDS, /FROMDATA are not allowed. Errors in start:end:del -define axis/t=1-jan-2010:31-dec-2012:1/t0=1-jan-2000/monthly/npoints=13 taxis - -! missing delta-t -define axis/t=1-jan-2010:31-dec-2012/t0=1-jan-2000/monthly taxis - -! delta-t must be 1 -define axis/t=1-jan-2010:31-dec-2012:2/t0=1-jan-2000/monthly taxis - -! irregular or from-data -define axis/t/t0=1-jan-2000/monthly taxis = {123,124,126} - -define axis/from/t/t0=1-jan-2001/monthly/edges taxis = {5,6,6,6,7} - -! bounds -def axis/t/t0=1-jan-2000/monthly/bounds tax={1.2, 2, 3.2, 5, 7, 8.4, 9}, {0.5,1.5, 1.5,2.5, 2.5,3.5, 3.5,6.5, 6.5,7.5, 7.5,8.5, 8.5,9.5} - -! Must be T direction (do we need /F=?) -define axis/x=1:5:1/monthly aaxis - -cancel mode ignore - -! *********** v7.2 Additions *********** - -GO bn_reset bn720_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn720_bug_fixes -GO bn720_bug_fixes -! bn720_bug_fixes.jnl -! test various fixes that went into version 7.2 -! 2/17 *acm* -! - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_uvar_strides -! err710_uvar_strides -! see ticket 2511: crash when doing strides on the user-variable - - -use coads_climatology - -! this is ok using a file variable -let y_vec = x[gx=sst,x=0:360:30] -list y_vec - VARIABLE : X[GX=SST,X=0:360:30] - FILENAME : coads_climatology.cdf - SUBSET : 13 points (LONGITUDE) - 0E / 1: 0.0000 - 30E / 2: 30.0000 - 60E / 3: 60.0000 - 90E / 4: 90.0000 - 120E / 5: 120.0000 - 150E / 6: 150.0000 - 180E / 7: 180.0000 - 150W / 8: 210.0000 - 120W / 9: 240.0000 - 90W / 10: 270.0000 - 60W / 11: 300.0000 - 30W / 12: 330.0000 - 0E / 13: 360.0000 - -! but this gave a crash on loading the variable. -let s = sst -let y_vec = x[gx=s,x=0:360:30] -list y_vec - VARIABLE : X[GX=S,X=0:360:30] - FILENAME : coads_climatology.cdf - SUBSET : 13 points (X) - 0 / 1: 0.0000 - 30 / 2: 30.0000 - 60 / 3: 60.0000 - 90 / 4: 90.0000 - 120 / 5: 120.0000 - 150 / 6: 150.0000 - 180 / 7: 180.0000 - 210 / 8: 210.0000 - 240 / 9: 240.0000 - 270 / 10: 270.0000 - 300 / 11: 300.0000 - 330 / 12: 330.0000 - 360 / 13: 360.0000 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_prec_return -! err71_prec_return.jnl -! Ticket 2510, `prec=hh` doesn't work when the data is very -! near an integer. - - -let a=1+1e-12 - -! This should show the 001 at the end -list/nohead/norow/prec=13 `a,prec=13` - !-> list/nohead/norow/prec=13 1.000000000001 - 1.000000000001 - -! This does not have the 001 at the end -list/nohead/norow/prec=13 `a,prec=12` - !-> list/nohead/norow/prec=13 1 - 1.000000000000 - -! The example from the ticket, with one more. -list/nohead/norow/prec=12 {`1 + 0.1`, `1 + 1e-7`, `1 + 1e-8`, `1 + 1e-10`} - 1 - !-> list/nohead/norow/prec=12 {1.1, 1.0000001, 1.00000001, 1.0000000001} - 1 - 0.100000000000 - 0.000000100000 - 0.000000010000 - 0.000000000100 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_save_rigid -! err71_save_rigid.jnl -! Ticket 2513: SAVE/RIGID with irregular axis wrote a bad file. - -! Define a variable on an irregular axis. - -let var = {123, 234, 345, 456, 567, 678, 789} -define axis/t/t0=1-jan-2015/units=day tax = \ -{ 312.1, 312.7, 313.4, 314.2, 314.7, 315.4, 316.1} - -let vart = reshape(var, t[gt=tax]) - -! Save with /RIGID. Previously this wrote a file with -! both bounds and edges attributes on the time axis. -! It wrote the edges variable, not the bounds. - -! Starting with this version, write bounds if needed when -! writing with /RIGID. Only write edges if they said /EDGES. - -save/clobber/rigid/file=a.nc vart -sp ncdump a.nc -netcdf a { -dimensions: - TAX = 7 ; - bnds = 2 ; -variables: - double TAX(TAX) ; - TAX:point_spacing = "uneven" ; - TAX:axis = "T" ; - TAX:units = "day since 2015-01-01" ; - TAX:time_origin = "01-JAN-2015" ; - TAX:standard_name = "time" ; - TAX:bounds = "TAX_bnds" ; - double TAX_bnds(TAX, bnds) ; - double VART(TAX) ; - VART:missing_value = -1.e+34 ; - VART:_FillValue = -1.e+34 ; - VART:long_name = "RESHAPE(VAR, T[GT=TAX])" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - TAX = 312.1, 312.7, 313.4, 314.2, 314.7, 315.4, 316.1 ; - - TAX_bnds = - 311.8, 312.4, - 312.4, 313.05, - 313.05, 313.8, - 313.8, 314.45, - 314.45, 315.05, - 315.05, 315.75, - 315.75, 316.45 ; - - VART = 123, 234, 345, 456, 567, 678, 789 ; -} - -cancel var/all - -! The grid was messed up - this gave an error -use a -show grid vart - GRID GSI1 - name axis # pts start end subset - normal X - normal Y - normal Z - TAX3 TIME 7 i 09-NOV-2015 02:24 13-NOV-2015 02:24 full - - -! move this to bn_gif.jnl -! GO bn_reset -! GO err71_plotvs_mode_label - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_set_redirect -! err71_set_redirect.jnl -! 3/2017 ACM -! redirect results to a file with a path. -! See ticket 2521, the path was previously rejected if it contains dashes - -spawn "mkdir -p sub-dir" -! -! Previously this resulted in an error. -set redirect /tee /file="./sub-dir/redirect_stdout.txt" /clobber stderr stdout - -! write to the file and look at the results - -show symbol ferret_precision, ferret_memory -FERRET_PRECISION = "double" -FERRET_MEMORY = "31.25" -cancel redirect -let contents = { spawn:"cat ./sub-dir/redirect_stdout.txt" } -list contents - VARIABLE : { SPAWN:"cat ./sub-dir/redirect_stdout.txt" } - SUBSET : 7 points (X) - 1 / 1:" " - 2 / 2:"! write to the file and look at the results" - 3 / 3:" " - 4 / 4:"show symbol ferret_precision, ferret_memory" - 5 / 5:"FERRET_PRECISION = "double"" - 6 / 6:"FERRET_MEMORY = "31.25"" - 7 / 7:"cancel redirect" -cancel var contents - -sp rm -rf sub-dir - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_set_redirect -! err71_set_redirect.jnl -! 3/2017 ACM -! redirect results to a file with a path. -! See ticket 2521, the path was previously rejected if it contains dashes - -spawn "mkdir -p sub-dir" -! -! Previously this resulted in an error. -set redirect /tee /file="./sub-dir/redirect_stdout.txt" /clobber stderr stdout - -! write to the file and look at the results - -show symbol ferret_precision, ferret_memory -FERRET_PRECISION = "double" -FERRET_MEMORY = "31.25" -cancel redirect -let contents = { spawn:"cat ./sub-dir/redirect_stdout.txt" } -list contents - VARIABLE : { SPAWN:"cat ./sub-dir/redirect_stdout.txt" } - SUBSET : 7 points (X) - 1 / 1:" " - 2 / 2:"! write to the file and look at the results" - 3 / 3:" " - 4 / 4:"show symbol ferret_precision, ferret_memory" - 5 / 5:"FERRET_PRECISION = "double"" - 6 / 6:"FERRET_MEMORY = "31.25"" - 7 / 7:"cancel redirect" -cancel var contents - -sp rm -rf sub-dir - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_err_attrib_overrun -! err71_err_attrib_overrun.jnl -! See ticket 2523 - -! this ends with a segment fault sensitive to any changes -! presumably a buffer over-run - -! the crash is occuring because of a buffer over-run -! in IS_ATTRIB_VAL we call CREATE_TEMP_MEM_VAR to create an mr of size=1 -! later we call INIT_C_STRING_ARRAY and tell it to initialize this mr array -! using a length nvdims=3 ==> OVERRUN - -! This bug never reared its head in the pre-dynamic memory Ferret, because -! the buffers couldn't really be over-run, since they were part of a huge -! static memory block - -! other INIT_* calls in IS_ATTRIB_VAL may have a similar issue - - -set mode diag - -use ocean_atlas_temp -use gt4d011 -use levitus_climatology - -use coads_climatology - -let lnames = ..dimnames[d=2] - -CANCEL DATA/ALL - canceling dset ./data/ocean_atlas_temp.cdf - canceling dset ./data/gt4d011.cdf - canceling dset ./data/levitus_climatology.cdf - canceling dset ./data/coads_climatology.cdf - -! this line seems to be essential making the crash happen -PPL TICS .125,.25,.125,.25 !reset tics to default - -use coads_climatology - -let a = sst[d=1].dimnames -show mem/diag ! looks like no dynamic memory actions have occured - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 500 - Un-cached variables: 0 - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 0 Kb - Current cache: 0 Kb - -! resulted in a seg fault (on 32-bit stout) -list a[i=2] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid A C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval A C: 6 dset: 1 I: 2 2 J: -999 -999 K: -999 -999 L: -999 -999 - attrib_val attr M:224 dset: 1 I: 2 2 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : SST[D=coads_climatology].DIMNAMES - FILENAME : coads_climatology.cdf - X : 2 - "COADSY" - - -GO bn_reset -cancel mode verify - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE A M:225 dset: 1 I: 2 2 J: -999 -999 K: -999 -999 L: -999 -999 - dealloc dynamic grid XABSTRACT ABSTRACT NORMAL NORMAL NORMAL - -DELETE attr M:224 dset: 1 I: 2 2 J: -999 -999 K: -999 -999 L: -999 -999 - canceling dset ./data/coads_climatology.cdf -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_user_var_attrib -! err71_user_var_attrib.jnl -! See ticket 2132 - -! command was trying to list dataset information for a user variable -! - -let a = 1 -define att a.myAttr = "whatever" -show att a.myAttr - a.myAttr = whatever - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_save_bounds -! err71_save_bounds -! Ticket 2524. The SAVE command previously gave an error - -define axis/t time = {1,2,4} -use write_int_att.nc - -! Tell Ferret to use the axis names from the file, and write data -cancel mode upcase -save/file=a.nc/clobber mhchla - -! move this to bn_gif.jnl -! GO bn_reset -! GO err71_vs_constant - -! run this from bn_gif.jnl -! GO bn_reset -! GO err71_vs_lon_over - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_point_average -! err71_point_average.jnl -! Ticket 2538 6/2017 -! Average over a point removes dependence on that dimension. -! previously returned missing-data - -let a = x[x=1:5] + y[y=1:3] -list a - VARIABLE : X[X=1:5] + Y[Y=1:3] - SUBSET : 5 by 3 points (X-Y) - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 2.000000 3.000000 4.000000 5.000000 6.000000 - 2 / 2: 3.000000 4.000000 5.000000 6.000000 7.000000 - 3 / 3: 4.000000 5.000000 6.000000 7.000000 8.000000 - -list a[y=2@ave] - VARIABLE : X[X=1:5] + Y[Y=1:3] - SUBSET : 5 points (X) - Y : 2 (averaged) - 1 / 1: 3.000000 - 2 / 2: 4.000000 - 3 / 3: 5.000000 - 4 / 4: 6.000000 - 5 / 5: 7.000000 -list a[x=2@ave] - VARIABLE : X[X=1:5] + Y[Y=1:3] - SUBSET : 3 points (Y) - X : 2 (averaged) - 1 / 1: 3.000000 - 2 / 2: 4.000000 - 3 / 3: 5.000000 -list a[y=2@ave,x=4@ave] ! all prev. versions listed these as missing - VARIABLE : X[X=1:5] + Y[Y=1:3] - X : 4 (XY ave) - Y : 2 (XY ave) - 6.000000 - -let a = z[z=1:5] + t[t=1:3] -list a[z=2@ave] - VARIABLE : Z[Z=1:5] + T[T=1:3] - SUBSET : 3 points (T) - Z : 2 (averaged) - 1 / 1: 3.000000 - 2 / 2: 4.000000 - 3 / 3: 5.000000 -list a[t=2@ave] - VARIABLE : Z[Z=1:5] + T[T=1:3] - SUBSET : 5 points (Z) - T : 2 (averaged) - 1 / 1: 3.000000 - 2 / 2: 4.000000 - 3 / 3: 5.000000 - 4 / 4: 6.000000 - 5 / 5: 7.000000 - -list a[t=2@ave,z=4@ave] - VARIABLE : Z[Z=1:5] + T[T=1:3] - Z : 4 (ZT ave) - T : 2 (ZT ave) - 6.000000 - -let a = _e[e=1:5] + _f[f=1:3] -list a[f=2@ave] - VARIABLE : _E[E=1:5] + _F[F=1:3] - SUBSET : 5 points (E) - F : 2 (averaged) - 1 / 1: 3.000000 - 2 / 2: 4.000000 - 3 / 3: 5.000000 - 4 / 4: 6.000000 - 5 / 5: 7.000000 -list a[e=2@ave] - VARIABLE : _E[E=1:5] + _F[F=1:3] - SUBSET : 3 points (F) - E : 2 (averaged) - 1 / 1: 3.000000 - 2 / 2: 4.000000 - 3 / 3: 5.000000 -list a[f=2@ave,e=4@ave] - VARIABLE : _E[E=1:5] + _F[F=1:3] - E : 4 ( ave) - F : 2 ( ave) - 6.000000 - -! Check result if the missing-flag is zero - -let/bad=0 a = x[x=1:5] + y[y=1:3] -list a - VARIABLE : X[X=1:5] + Y[Y=1:3] - SUBSET : 5 by 3 points (X-Y) - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: 2.000000 3.000000 4.000000 5.000000 6.000000 - 2 / 2: 3.000000 4.000000 5.000000 6.000000 7.000000 - 3 / 3: 4.000000 5.000000 6.000000 7.000000 8.000000 - -list a[y=2@ave] - VARIABLE : X[X=1:5] + Y[Y=1:3] - SUBSET : 5 points (X) - Y : 2 (averaged) - 1 / 1: 3.000000 - 2 / 2: 4.000000 - 3 / 3: 5.000000 - 4 / 4: 6.000000 - 5 / 5: 7.000000 -list a[x=2@ave] - VARIABLE : X[X=1:5] + Y[Y=1:3] - SUBSET : 3 points (Y) - X : 2 (averaged) - 1 / 1: 3.000000 - 2 / 2: 4.000000 - 3 / 3: 5.000000 -list a[y=2@ave,x=4@ave] ! all prev. versions listed these as missing - VARIABLE : X[X=1:5] + Y[Y=1:3] - X : 4 (XY ave) - Y : 2 (XY ave) - 6.000000 - - -! multiple directions including e,f - -use 6dfile.nc - -! average, result is on xz -let uave = u[i=1:3,j=50@ave,l=1@ave,m=3@ave,n=2@ave] -list uave - VARIABLE : U[I=1:3,J=50@AVE,L=1@AVE,M=3@AVE,N=2@AVE] - FILENAME : 6dfile.nc - SUBSET : 3 by 27 points (LONGITUDE-DEPTH (m)) - LATITUDE : 6.1667N to 6.5N - TIME : 15-MAR-1983 09:30 to 15-MAR-1983 10:30 - E : 2.5 to 3.5 - F : 2 to 4 - 161W 160W 159W - 1 2 3 - 5 / 1: 24.15486 24.09508 24.51689 - 15 / 2: 41.57817 41.84150 42.38058 - 25 / 3: 36.75881 36.95299 37.38991 - 35 / 4: 34.77849 34.85667 35.17619 - 45 / 5: 34.36352 34.45921 34.69579 - 55 / 6: 30.07708 30.09764 30.46488 - 65 / 7: 27.88727 27.80886 27.93594 - 75 / 8: 25.72183 25.65516 25.78408 - 85 / 9: 23.76570 23.68603 23.76244 - 95 / 10: 21.95625 21.86659 21.91703 - 106.3 / 11: 20.21578 20.11764 20.13833 - 120 / 12: 18.45474 18.34873 18.34122 - 136.3 / 13: 16.95586 16.84863 16.81954 - 155 / 14: 15.77561 15.66338 15.61111 - 177.5 / 15: 14.84618 14.72107 14.64049 - 205 / 16: 14.11461 13.96774 13.85358 - 240 / 17: 13.42961 13.25451 13.10313 - 288.5 / 18: 12.55841 12.34769 12.15240 - 362.5 / 19: 11.29979 11.03768 10.78375 - 483.5 / 20: 9.31719 8.98873 8.66654 - 680 / 21: 6.68034 6.33032 5.98914 - 979.5 / 22: 4.30961 4.04182 3.78413 - 1395.5 / 23: 3.08924 2.96375 2.84510 - 1916 / 24: 3.05169 3.06862 3.08250 - 2524 / 25: 3.23960 3.36031 3.46738 - 3174 / 26: 3.18619 3.35835 3.51064 - 3824 / 27: 3.19324 3.38708 3.55849 -save/clobber/nobounds/file=a.nc uave -sp ncdump -h a.nc -netcdf a { -dimensions: - PSXU69_72 = 3 ; - PSZT = 27 ; -variables: - double PSXU69_72(PSXU69_72) ; - PSXU69_72:units = "degrees_east" ; - PSXU69_72:point_spacing = "even" ; - PSXU69_72:modulo = 360. ; - PSXU69_72:axis = "X" ; - PSXU69_72:standard_name = "longitude" ; - double PSZT(PSZT) ; - PSZT:units = "METERS" ; - PSZT:positive = "down" ; - PSZT:point_spacing = "uneven" ; - PSZT:axis = "Z" ; - PSZT:standard_name = "depth" ; - double uave(PSZT, PSXU69_72) ; - uave:missing_value = -1.e+34 ; - uave:_FillValue = -1.e+34 ; - uave:long_name = "U[I=1:3,J=50@AVE,L=1@AVE,M=3@AVE,N=2@AVE]" ; - uave:history = "From 6dfile" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! average, result is on yt -let uave = u[i=3@ave,j=50:60,l=3:6,z=40@ave,m=3@ave,n=2@ave] -list uave - VARIABLE : U[I=3@AVE,J=50:60,L=3:6,Z=40@AVE,M=3@AVE,N=2@AVE] - FILENAME : 6dfile.nc - SUBSET : 11 points (LATITUDE) - LONGITUDE: 159.5W to 158.5W - DEPTH (m): 35 - TIME : 15-MAR-1983 12:00 - E : 2.5 to 3.5 - F : 2 to 4 - 9.67N / 60: -21.61473 - 9.33N / 59: -15.77042 - 9N / 58: -10.95188 - 8.67N / 57: -4.78444 - 8.33N / 56: 0.43465 - 8N / 55: 5.48566 - 7.67N / 54: 10.50152 - 7.33N / 53: 15.95639 - 7N / 52: 21.88764 - 6.67N / 51: 28.23372 - 6.33N / 50: 35.19776 -save/clobber/nobounds/file=a.nc uave -sp ncdump -h a.nc -netcdf a { -dimensions: - PSYU15_75 = 11 ; - TIME = UNLIMITED ; // (1 currently) -variables: - double PSYU15_75(PSYU15_75) ; - PSYU15_75:units = "degrees_north" ; - PSYU15_75:point_spacing = "uneven" ; - PSYU15_75:axis = "Y" ; - PSYU15_75:standard_name = "latitude" ; - double TIME(TIME) ; - TIME:units = "hour since 1980-01-14 14:00:00" ; - TIME:time_origin = "14-JAN-1980 14:00:00" ; - TIME:axis = "T" ; - TIME:standard_name = "time" ; - double uave(TIME, PSYU15_75) ; - uave:missing_value = -1.e+34 ; - uave:_FillValue = -1.e+34 ; - uave:long_name = "U[I=3@AVE,J=50:60,L=3:6,Z=40@AVE,M=3@AVE,N=2@AVE]" ; - uave:history = "From 6dfile" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! average, result is on e-f, single time -let uave = u[i=3@ave,y=8@ave,z=15@ave,t="15-MAR-1983 11:00"] -list uave - VARIABLE : U[I=3@AVE,Y=8@AVE,Z=15@AVE,T="15-MAR-1983 11:00"] - FILENAME : 6dfile.nc - SUBSET : 5 by 4 points (E-F) - LONGITUDE: 159.5W to 158.5W - LATITUDE : 8N - DEPTH (m): 15 - TIME : 15-MAR-1983 11:00 - 1 2 3 4 5 - 1 2 3 4 5 - 1 / 1: -2.239468 -1.239468 -0.239468 0.760532 1.760532 - 3 / 2: -2.039468 -1.039468 -0.039468 0.960532 1.960532 - 5 / 3: -1.839468 -0.839468 0.160532 1.160532 2.160532 - 7 / 4: -1.639468 -0.639468 0.360532 1.360532 2.360532 -save/clobber/nobounds/file=a.nc uave -sp ncdump -h a.nc -netcdf a { -dimensions: - TIME = 1 ; - EAXIS = 5 ; - FAXIS = 4 ; -variables: - double TIME(TIME) ; - TIME:units = "hour since 1980-01-14 14:00:00" ; - TIME:time_origin = "14-JAN-1980 14:00:00" ; - TIME:point_spacing = "even" ; - TIME:axis = "T" ; - TIME:standard_name = "time" ; - double EAXIS(EAXIS) ; - EAXIS:point_spacing = "even" ; - EAXIS:axis = "E" ; - double FAXIS(FAXIS) ; - FAXIS:point_spacing = "uneven" ; - FAXIS:axis = "F" ; - double uave(FAXIS, EAXIS, TIME) ; - uave:missing_value = -1.e+34 ; - uave:_FillValue = -1.e+34 ; - uave:long_name = "U[I=3@AVE,Y=8@AVE,Z=15@AVE,T=\"15-MAR-1983 11:00\"]" ; - uave:history = "From 6dfile" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_2d_ave_miss0 -! err71_2d_ave_miss0.jnl -! Ticket 2539: data with 0 as missing flag, -! 2D average or definite integral all-missing -! 6/5/2017 *acm* - -use gt4d011.cdf -let temp0 = temp -set var/bad=0. temp0 -save/clobber/file=a.nc temp0 -can dat/all -can var/all -use a.nc - -! Both of these should have all valid numbers, -! previously (in v7.1+) they were all-missing. -list/k=1/L=1:10 temp0[x=@ave,y=@ave], temp0[x=@din,y=@din] - DATA SET: ./a.nc - TIME: 14-AUG-1982 11:00 to 14-OCT-1982 07:00 - LONGITUDE: 140W to 122W - LATITUDE: 3.6667S to 3.6667N - DEPTH (m): 5 - Column 1: TEMP0[X=@AV4,Y=@AV4] is TEMP - Column 2: TEMP0[X=@IN4,Y=@IN4] is TEMP - TEMP0 TEMP0 -17-AUG-1982 12 / 1: 26.50036 4.322143E+13 -23-AUG-1982 14 / 2: 26.63478 4.344066E+13 -29-AUG-1982 16 / 3: 26.80730 4.372203E+13 -04-SEP-1982 18 / 4: 27.02365 4.407490E+13 -10-SEP-1982 20 / 5: 27.29811 4.452254E+13 -16-SEP-1982 22 / 6: 27.64980 4.509613E+13 -23-SEP-1982 00 / 7: 28.06512 4.577352E+13 -29-SEP-1982 02 / 8: 28.56054 4.658153E+13 -05-OCT-1982 04 / 9: 29.16769 4.757178E+13 -11-OCT-1982 06 / 10: 29.83611 4.866194E+13 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_read_delim -! err71_read_delim.jnl -! 6/9/2017 ACM -! Ticket 2540, Write errors when data is read using - to skip fields -! in a delimited read - -define axis/x=1:10:1 row_ax -define grid/x=row_ax in_grid - - -FILE/FORM=delim/skip=1/grid=in_grid\ -/var="YEAR,MONTH,LON,LAT,-,HAULJOIN,LENGTH,FREQ,-,BTTM_TEMP,SST,BTTM_DEPTH,CPUE,BIN"\ -/typ="num,num,num,num,-,num,num,num,-,num,num,num,num,num,"/delim="\,"\ - shorttest.dat - -set var/title="year" YEAR -set var/title="month" MONTH -set var/title="lon"/units="degrees_E" LON -set var/title="lat"/units="degrees_N" LAT -set var/title="hauljoin" HAULJOIN -set var/title="length"/units="mm" LENGTH -set var/title="freq"/units="Number" FREQ -set var/title="bttm_temp"/units="degrees_C" BTTM_TEMP -set var/title="SST"/units="degrees_C" SST -set var/title="bttm_depth"/units="m" BTTM_DEPTH -set var/title="CPUE"/units="fish/km**2" CPUE -set var/title="bin_size"/units="mm" BIN - -! Previously this caused netcdf library errors and exited out of Ferret -save/file=a.nc/clobber year, month, lon, lat, hauljoin, length, freq, bttm_temp, SST, bttm_depth, CPUE, bin - -sp ncdump -h a.nc -netcdf a { -dimensions: - row_ax = 10 ; -variables: - double row_ax(row_ax) ; - row_ax:point_spacing = "even" ; - row_ax:axis = "X" ; - double YEAR(row_ax) ; - YEAR:missing_value = -1.e+34 ; - YEAR:_FillValue = -1.e+34 ; - YEAR:long_name = "year" ; - YEAR:history = "From shorttest.dat" ; - double MONTH(row_ax) ; - MONTH:missing_value = -1.e+34 ; - MONTH:_FillValue = -1.e+34 ; - MONTH:long_name = "month" ; - MONTH:history = "From shorttest.dat" ; - double LON(row_ax) ; - LON:missing_value = -1.e+34 ; - LON:_FillValue = -1.e+34 ; - LON:long_name = "lon" ; - LON:units = "degrees_E" ; - LON:history = "From shorttest.dat" ; - double LAT(row_ax) ; - LAT:missing_value = -1.e+34 ; - LAT:_FillValue = -1.e+34 ; - LAT:long_name = "lat" ; - LAT:units = "degrees_N" ; - LAT:history = "From shorttest.dat" ; - double HAULJOIN(row_ax) ; - HAULJOIN:missing_value = -1.e+34 ; - HAULJOIN:_FillValue = -1.e+34 ; - HAULJOIN:long_name = "hauljoin" ; - HAULJOIN:history = "From shorttest.dat" ; - double LENGTH(row_ax) ; - LENGTH:missing_value = -1.e+34 ; - LENGTH:_FillValue = -1.e+34 ; - LENGTH:long_name = "length" ; - LENGTH:units = "mm" ; - LENGTH:history = "From shorttest.dat" ; - double FREQ(row_ax) ; - FREQ:missing_value = -1.e+34 ; - FREQ:_FillValue = -1.e+34 ; - FREQ:long_name = "freq" ; - FREQ:units = "Number" ; - FREQ:history = "From shorttest.dat" ; - double BTTM_TEMP(row_ax) ; - BTTM_TEMP:missing_value = -1.e+34 ; - BTTM_TEMP:_FillValue = -1.e+34 ; - BTTM_TEMP:long_name = "bttm_temp" ; - BTTM_TEMP:units = "degrees_C" ; - BTTM_TEMP:history = "From shorttest.dat" ; - double SST(row_ax) ; - SST:missing_value = -1.e+34 ; - SST:_FillValue = -1.e+34 ; - SST:long_name = "SST" ; - SST:units = "degrees_C" ; - SST:history = "From shorttest.dat" ; - double BTTM_DEPTH(row_ax) ; - BTTM_DEPTH:missing_value = -1.e+34 ; - BTTM_DEPTH:_FillValue = -1.e+34 ; - BTTM_DEPTH:long_name = "bttm_depth" ; - BTTM_DEPTH:units = "m" ; - BTTM_DEPTH:history = "From shorttest.dat" ; - double CPUE(row_ax) ; - CPUE:missing_value = -1.e+34 ; - CPUE:_FillValue = -1.e+34 ; - CPUE:long_name = "CPUE" ; - CPUE:units = "fish/km**2" ; - CPUE:history = "From shorttest.dat" ; - double BIN(row_ax) ; - BIN:missing_value = -1.e+34 ; - BIN:_FillValue = -1.e+34 ; - BIN:long_name = "bin_size" ; - BIN:units = "mm" ; - BIN:history = "From shorttest.dat" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_isready_unknown -! err71_isready_unknown.jnl -! ticket 2533, variable b depending on undefined variable c is -! reported not ready, but variable a with a regridding operation is -! mistakenly reported ready. - -use coads_climatology -let a = b[gxy=sst[d=1]] -let b = c - -! both should return 0 -say `b,r=isready` - !-> MESSAGE/CONTINUE 0 -0 -say `a,r=isready` - !-> MESSAGE/CONTINUE 0 -0 - -! And VTREE reported no unknown variables in its tree -! The line for C should say UNKNOWN VARIABLE -sho var/tree a - in default dataset coads_climatology - A = B[GXY=SST[D=1]] - B = C - C ?? <== UNKNOWN VARIABLE ****** - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_ppl_sho_empty -! err71_ppl_sho_empty.jnl -! ticket 2543, PPL SHOW pplsym is a command, but it -! gave a Fortran runtime error if given with no argument -! Now send these errors through the Ferret errmsg routine. - -! This is a valid sequence, pplus symbol definition - -pplus set xpos 3.2 -pplus show xpos - XPOS = 3.2 - -! intentional error - -set mode ignore - -! This is a correct error message, undefined symbol -pplus show nosymbol - -! This previously hit a runtime error, symbol name missing. -ppl show - -! Another PPL error we might hit is an invalid command. -! Write this error message -PPL nonsense - -set mode/last ignore - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_string_and_if -! err71_string_and_if.jnl -! 6/28/2018, ticket 2547 - -! problem with masked strings -> unexpected values instead of strings: -can var/all -let test = {1,1,0} -let strings = {"a", "b", "c"} -list if (test) then strings - VARIABLE : IF (TEST) THEN STRINGS - SUBSET : 3 points (X) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"" - -! works: define a masked variable instead, then list -let masked = if (test) then strings -list masked - VARIABLE : IF (TEST) THEN STRINGS - SUBSET : 3 points (X) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"" - -! alternatively, do the same listing for a float first -let floats = {2,3,4} -list if (test) then floats - VARIABLE : IF (TEST) THEN FLOATS - SUBSET : 3 points (X) - 1 / 1: 2.000000 - 2 / 2: 3.000000 - 3 / 3: .... - -! now, also for strings listing while masking works -list if (test) then strings - VARIABLE : IF (TEST) THEN STRINGS - SUBSET : 3 points (X) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"" - - - -! the next problem comes with xsequence -! again unexpected numerical values instead of strings -can var/all -let test = {1,1,0} -let strings = {"a", "b", "c"} -let masked = if (test) then strings -list xsequence(masked) - VARIABLE : XSEQUENCE(MASKED) - SUBSET : 3 points (X) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"" - -! but doing a listing first fixes it: -can var/all -let test = {1,1,0} -let strings = {"a", "b", "c"} -list if (test) then strings - VARIABLE : IF (TEST) THEN STRINGS - SUBSET : 3 points (X) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"" -let masked = if (test) then strings -list xsequence(masked) - VARIABLE : XSEQUENCE(MASKED) - SUBSET : 3 points (X) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"" - - -! NOT fixed by defining a second masked variable before: -can var/all -let test = {1,1,0} -let strings = {"a", "b", "c"} -let masked = if (test) then strings -let masked2 = xsequence(masked) -list masked2 - VARIABLE : XSEQUENCE(MASKED) - SUBSET : 3 points (X) - 1 / 1:"a" - 2 / 2:"b" - 3 / 3:"" - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_expr_w_const -! err71_expr_w_const.jnl -! ticket 2313: return= is loading the whole -! grid unnecessarily in the last example - -DEFINE SYMBOL saved_memory_size = ($FERRET_BYTES_MEM) - !-> DEFINE SYMBOL saved_memory_size = 250Mb - -set mem/size=8M -def ax/t=1-jan-0001:1-jan-1000:1/unit=year tax -let a = t[gt=tax] + x[gx=1:1000:1] + y[gy=1:1000:1] - -! These work fine -say `a,return=cal` - !-> MESSAGE/CONTINUE GREGORIAN -GREGORIAN - -use coads_climatology -let s1= sst[x=@ave,y=1,L=@max] -say `s1*a,return=cal` - !-> MESSAGE/CONTINUE GREGORIAN -GREGORIAN - -! but the constant variable "let one = 1" introduced abstract -! axes to the grid which caused Ferret to try to load the -! data in A which is large - -let one = 1 -let a1 = a*one -show grid a1 - GRID (G179) - name axis # pts start end subset - (AX091) X 1000 r 1 1000 1000 pts - (AX091) Y 1000 r 1 1000 1000 pts - normal Z - tax TIME 1000 r 01-JAN-0001 00:00 01-JAN-1000 06:10 full -say `a*one,return=cal` - !-> MESSAGE/CONTINUE GREGORIAN -GREGORIAN - -! clean up -SET MEMORY/SIZE=($saved_memory_size) - !-> SET MEMORY/SIZE=250Mb - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_colorlevs -! err71_colorlevs -! See ticket 2550. Top data value is not among color levels used in the plot. -! And symbols LEV* do not list the levels used. - -use co_emac.nc -stat co_emac - - CO EMAC - LONGITUDE: 0E to 120E - LATITUDE: 0 to 40N - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: ./data/co_emac.nc - - Total # of data points: 48 (12*4*1*1*1*1) - # flagged as bad data: 4 - Minimum value: 6.1527E-08 - Maximum value: 1.8643E-07 - Mean value: 8.7383E-08 (unweighted average) - Standard deviation: 2.2308E-08 - -! previously there were 25 levels chosen by the automatic -! method, missing the top one because of roundoff error. -! Thus one cell went unfilled. The LEV_MIN etc symbols were -! set to 0 because of inadequate formatting of the tiny numbers. - -set mode nlevels 30 -shade co_emac -sh sym lev* -LEV_ALL = "6.E-08,6.5E-08,7.E-08,7.5E-08,8.E-08,8.5E-08,9.E-08,9.5E-08,1.E-07,1.05E-07,1.1E-07,1.15E-07,1.2E-07,1.25E-07,1.3E-07,1.35E-07,1.4E-07,1.45E-07,1.5E-07,1.55E-07,1.6E-07,1.65E-07,1.7E-07,1.75E-07,1.8E-07,1.85E-07,1.9E-07" -LEV_MIN = "6.E-08" -LEV_MAX = "1.9E-07" -LEV_NUM = "26" -LEV_DEL = "5.E-09" -LEV_CENTERED_LABELS = "off" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_repeat_paren -! err71_repeat_paren.jnl -! Ticket 2551. The second command with an extra parenthese is not reported -! to be a syntax error but just reports wrong info. - -repeat/range=1:3:1/name=count (def sym count = `count`; say ($count); message/continue) - !-> repeat/range=1:3:1/name=count (def sym count = `count`; say ($count); message/continue) -!-> REPEAT: COUNT:1 - !-> def sym count = 1 - !-> MESSAGE/CONTINUE 1 -1 - -!-> REPEAT: COUNT:2 - !-> def sym count = 2 - !-> MESSAGE/CONTINUE 2 -2 - -!-> REPEAT: COUNT:3 - !-> def sym count = 3 - !-> MESSAGE/CONTINUE 3 -3 - - -! Previously the extra paren at the end did not trigger an error -! but caused a parsing error so the command -! say ($count) -! was parsed and fixed at "say 3" before the loop started. - -set mode ignore -repeat/range=1:3:1/name=count (def sym count = `count`; say ($count); message/continue)) -set mode/last ignore - - -GO bn_reset bn_compressed_gather -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_compressed_gather -GO bn_compressed_gather -! bn_compressed_gather.jnl -! 11/2016 (for trac #2428 enhancement) -! updated 3/17 for dynamic memory and using SHOW MEM/DIAG -! 6/19, code changes for SET MEM in terms of Mbytes. But -! here, the SET MEMORY commands are done in terms of megawords, -! as we're thinking of grid sizes - -! initialize -DEFINE SYMBOL saved_memory_size = ($FERRET_BYTES_MEM) - !-> DEFINE SYMBOL saved_memory_size = 250Mb - - -! force a split/gather operation due to a T=@ave - -! in previous versions of Ferret the split could not occur on the transformed -! axis, so the X axis would have been used. Here the T=@ave axis will be used - -! Give us something to look at while we run these tests which dont make plots -plot/noax/nolab/vlim=0:1/i=4:5 i -annotate/norm/x=0/y=0.5 "@AC... running bn_compressed_gather" - -! ******* tests of T=@DIN and T=@ave ****** -define axis/x=1:1001:1 xax -define axis/y=1:10:1 yax -define axis/T=1:1000:1 tax - -let xt = (x[gx=xax]-501) + 0*y[gy=yax] + T[gt=tax] - -* note: SUM of integers 1 to 1000 = N(N+1)/2 ==> 500500 -* stat average of (x[gx=xax]-501) is zero -* so the full 2D stat mean should be 500500 - -! there are 10*1000*1001 points in the full grid => ~10M -! given the necessary cautions (see IS_STRIP and MODE FRUGAL), -! a size of 12 for sure requires a gather operation -! confirm gathering is occuring by looking at the diagnostic output - -!set mode desperate: 400000 -SET MEMORY/SIZE=12 - -stat xt[l=@din] - - (X[GX=XAX]-501) + 0*Y[GY=YAX] + T[GT=TAX] - X: 0.5 to 1002 - Y: 0.5 to 10.5 - Z: N/A - T: 0.5 to 1000.5 (integrated) - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 500 - Maximum value: 1.0005E+06 - Mean value: 5.005E+05 (unweighted average) - Standard deviation: 2.8898E+05 -SHOW MEMORY/DIAGNOSTIC ! look at peak memory usage - Last gather - Variable Axis Xform Chunk Repeated - XT T DIN 209 1 - Total table slots: 500 - Free table slots: 494 - Un-cached variables: 0 - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 16.98 Mb - Current cache: 80.24 Mb - -! many variations on this test -! note that in the first case peak memory will show as ZERO. -! The first SET MEMORY command resets the peak memory to zero, and -! then the expression "xt[l=@din]" gets found without re-computation -! having been computed just above -GO bn_compressed_gather.sub xt[l=@din] 40 12 - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 500 - Maximum value: 1.0005E+06 - Mean value: 5.005E+05 (unweighted average) - SET MEMORY/SIZE: 320 Mb (40 megawords) - Peak demand: 160.16 Kb - Current cache: 80.24 Mb - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 500 - Maximum value: 1.0005E+06 - Mean value: 5.005E+05 (unweighted average) - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 16.98 Mb - Current cache: 80.24 Mb -COMPRESSED GATHER success on expression xt[l=@din] - -! altered limits syntax -GO bn_compressed_gather.sub xt[l=1:1000@din] 40 12 - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 500 - Maximum value: 1.0005E+06 - Mean value: 5.005E+05 (unweighted average) - SET MEMORY/SIZE: 320 Mb (40 megawords) - Peak demand: 160.16 Kb - Current cache: 80.24 Mb - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 500 - Maximum value: 1.0005E+06 - Mean value: 5.005E+05 (unweighted average) - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 16.98 Mb - Current cache: 80.24 Mb -COMPRESSED GATHER success on expression xt[l=1:1000@din] - -! test T=@AVE -GO bn_compressed_gather.sub xt[l=@ave] 40 12 - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.5 - Maximum value: 1000.5 - Mean value: 500.5 (unweighted average) - SET MEMORY/SIZE: 320 Mb (40 megawords) - Peak demand: 56.06 Mb - Current cache: 80.24 Mb - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.5 - Maximum value: 1000.5 - Mean value: 500.5 (unweighted average) - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 16.98 Mb - Current cache: 80.24 Mb -COMPRESSED GATHER success on expression xt[l=@ave] - -! various partial grid points at end -GO bn_compressed_gather.sub xt[T=@ave] 40 12 - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.5 - Maximum value: 1000.5 - Mean value: 500.5 (unweighted average) - SET MEMORY/SIZE: 320 Mb (40 megawords) - Peak demand: 56.06 Mb - Current cache: 80.24 Mb - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.5 - Maximum value: 1000.5 - Mean value: 500.5 (unweighted average) - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 16.98 Mb - Current cache: 80.24 Mb -COMPRESSED GATHER success on expression xt[T=@ave] -GO bn_compressed_gather.sub xt[T=0.5:1000.5@ave] 40 12 - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.5 - Maximum value: 1000.5 - Mean value: 500.5 (unweighted average) - SET MEMORY/SIZE: 320 Mb (40 megawords) - Peak demand: 56.06 Mb - Current cache: 80.24 Mb - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.5 - Maximum value: 1000.5 - Mean value: 500.5 (unweighted average) - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 16.98 Mb - Current cache: 80.24 Mb -COMPRESSED GATHER success on expression xt[T=0.5:1000.5@ave] -GO bn_compressed_gather.sub xt[T=0.6:1000.4@ave] 40 12 - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.5 - Maximum value: 1000.5 - Mean value: 500.5 (unweighted average) - SET MEMORY/SIZE: 320 Mb (40 megawords) - Peak demand: 56.06 Mb - Current cache: 80.24 Mb - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.5 - Maximum value: 1000.5 - Mean value: 500.5 (unweighted average) - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 16.98 Mb - Current cache: 80.24 Mb -COMPRESSED GATHER success on expression xt[T=0.6:1000.4@ave] -GO bn_compressed_gather.sub xt[T=1:1000@ave] 40 12 - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.5 - Maximum value: 1000.5 - Mean value: 500.5 (unweighted average) - SET MEMORY/SIZE: 320 Mb (40 megawords) - Peak demand: 56.06 Mb - Current cache: 80.24 Mb - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.5 - Maximum value: 1000.5 - Mean value: 500.5 (unweighted average) - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 16.98 Mb - Current cache: 80.24 Mb -COMPRESSED GATHER success on expression xt[T=1:1000@ave] -GO bn_compressed_gather.sub xt[T=1.2:999.8@ave] 40 12 - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.5 - Maximum value: 1000.5 - Mean value: 500.5 (unweighted average) - SET MEMORY/SIZE: 320 Mb (40 megawords) - Peak demand: 56.06 Mb - Current cache: 80.24 Mb - - Total # of data points: 10010 (1001*10*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.5 - Maximum value: 1000.5 - Mean value: 500.5 (unweighted average) - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 16.98 Mb - Current cache: 80.24 Mb -COMPRESSED GATHER success on expression xt[T=1.2:999.8@ave] - -! ********************************************************* -! ******* tests of "4D" @DIN and @ave ****** -define axis/x=1:200:1 xax -define axis/y=1:200:1 yax -define axis/z=1:200:1 zax -define axis/T=1:2:1 tax -let xyz = 0*X[gx=xax] + 0*Y[gy=yax] + Z[gz=zax] -let xyzt = 0*X[gx=xax] + 0*Y[gy=yax] + Z[gz=zax] + 0*T[gt=tax] - -* note: SUM of Z is N*(N+1)/2 = 20100 -* area integral in XY is 200*200=40,000 -* total integral is 804,000,000 (8.04*E8) - -* 3D XYZ test -* 2d slice size = 200*200 = 40,000 -* 3d full size is 8,000,000 - so 10,000,000 is bigger - -! confirm gathering is occuring by looking at the diagnostic output -cancel memory/all -!set mode desp: 2000000 -set memory/size = 2 ! 2M v 8M: requires split/gather -! will split into 4 pieces (1/4 of 8,000,000 fits into 2,000,000) -! so z=1:50; then =51:100, Z=101:150, Z=151:200 -stat xyz[x=@din,y=@din,z=@din] - - 0*X[GX=XAX] + 0*Y[GY=YAX] + Z[GZ=ZAX] - X: 0.5 to 200.5 (XYZ integ.) - Y: 0.5 to 200.5 (XYZ integ.) - Z: 0.5 to 200.5 (XYZ integ.) - T: N/A - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 8.04E+08 - Maximum value: 8.04E+08 - Mean value: 8.04E+08 (unweighted average) -SHOW MEMORY/DIAGNOSTIC ! look at peak memory usage - Last gather - Variable Axis Xform Chunk Repeated - XYZ Z IN4 8 1 - Total table slots: 500 - Free table slots: 493 - Un-cached variables: 0 - SET MEMORY/SIZE: 16 Mb (2 megawords) - Peak demand: 2.88 Mb - Current cache: 15.36 Mb - -! the clean version of same test -GO bn_compressed_gather.sub xyz[x=@din,y=@din,z=@din] 20 2 - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 8.04E+08 - Maximum value: 8.04E+08 - Mean value: 8.04E+08 (unweighted average) - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 0.02 Kb - Current cache: 15.36 Mb - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 8.04E+08 - Maximum value: 8.04E+08 - Mean value: 8.04E+08 (unweighted average) - SET MEMORY/SIZE: 16 Mb (2 megawords) - Peak demand: 2.88 Mb - Current cache: 15.36 Mb -COMPRESSED GATHER success on expression xyz[x=@din,y=@din,z=@din] - -! also do the average, which will provide a comparison result for the test -! that follows -! average along Z is 100.5 -GO bn_compressed_gather.sub xyz[x=@ave,y=@ave,z=@ave] 20 2 - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 100.5 - Maximum value: 100.5 - Mean value: 100.5 (unweighted average) - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 28.16 Mb - Current cache: 64 Mb - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 100.5 - Maximum value: 100.5 - Mean value: 100.5 (unweighted average) - SET MEMORY/SIZE: 16 Mb (2 megawords) - Peak demand: 2.88 Mb - Current cache: 15.36 Mb -COMPRESSED GATHER success on expression xyz[x=@ave,y=@ave,z=@ave] - -! Since the T axis has only 2 points, the arithmetic above shows that the -! chunks to be gathered will still be too large after splitting on T, which -! in theory would trigger further splitting along Z. However, there is only -! one opportunity to process compressed axis splitting -- in IS_STRIP -! at the time that it is stripping off the compressed transformation. But -! a "4D" transform is stripped in a single operation. We choose an axis that -! is long enough to break into sufficiently small fragments -set memory/size = 6 ! 16M points in grid, 8M in each T-chunk -stat xyzt[x=@ave,y=@ave,z=@ave,t=@ave] - - 0*X[GX=XAX] + 0*Y[GY=YAX] + Z[GZ=ZAX] + 0*T[GT=TAX] - X: 0.5 to 200.5 (XYZT ave) - Y: 0.5 to 200.5 (XYZT ave) - Z: 0.5 to 200.5 (XYZT ave) - T: 0.5 to 2.5 (XYZT ave) - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 100.5 - Maximum value: 100.5 - Mean value: 100.5 (unweighted average) -show mem/diagnostic - Last gather - Variable Axis Xform Chunk Repeated - XYZT Z AV4 13 1 - Total table slots: 500 - Free table slots: 493 - Un-cached variables: 0 - SET MEMORY/SIZE: 48 Mb (6 megawords) - Peak demand: 12.48 Mb - Current cache: 44.8 Mb - -! test splitting along 2 axes in succession by making T=@AVE into a separate -! averaging operation -CANCEL MEMORY/ALL -LET xyzave = xyzt[x=@ave,y=@ave,z=@ave] -!set mode desp: 2000000 -set memory/size = 6 ! 2M v 8M: requires split/gather -stat xyzave[t=@ave] - - XYZT[X=@AVE,Y=@AVE,Z=@AVE] - X: 0.5 to 200.5 - Y: 0.5 to 200.5 - Z: 0.5 to 200.5 - T: 0.5 to 2.5 (averaged) - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 100.5 - Maximum value: 100.5 - Mean value: 100.5 (unweighted average) -SHOW MEMORY/DIAGNOSTIC ! look at peak memory usage - Last gather - Variable Axis Xform Chunk Repeated - XYZAVE T AVE 1 1 - XYZT Z AV4 26 2 - Total table slots: 500 - Free table slots: 492 - Un-cached variables: 0 - SET MEMORY/SIZE: 48 Mb (6 megawords) - Peak demand: 16.64 Mb - Current cache: 39.04 Mb - -! ********************************************************* -! ******* tests of T= @var and @std ****** -! the @var and @std transformation had to be switched to -! a single pass algorithm in order to implement split/gather -define axis/x=1:10000:1 xax -define axis/T=1:1001:1 tax - -let xt = 0*x[gx=xax] + T[gt=tax] -let constant = 0*X[gx=xax] + 0*T[gt=tax] + 1234 -let xt_zero_mean = 0*X[gx=xax] + (T[gt=tax]-501) + 1234 - -* note: sum of a sequence 1 to N of square integers is [N*(N+1)*(2N+1)]/6 -* T-501 is 2 sequences: -500 to 1 and 1 to 500, therefore sum is -* 2 * [500*501*1001]/6 = 83583500 -* mean of this sequence is 83583500/1001 = 83500 -* ==> look for this as the correct answer to variance - -! confirm gathering is occuring by looking at the diagnostic output -!set mode desperate: 400000 -set memory/size= 12 -stat constant[l=@var] - - Variance of 0*X[GX=XAX] + 0*T[GT=TAX] + 1234 - X: 0.5 to 1.E+04 - Y: N/A - Z: N/A - T: 0.5 to 1001.5 (variance) - E: N/A - F: N/A - DATA SET: N/A - - Total # of data points: 10000 (10000*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - Standard deviation: 0 -SHOW MEMORY/DIAGNOSTIC ! look at peak memory usage - Last gather - Variable Axis Xform Chunk Repeated - CONSTANT T VAR 209 1 - Total table slots: 500 - Free table slots: 494 - Un-cached variables: 0 - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 33.68 Mb - Current cache: 80.32 Mb - -! clean test -cancel memory/all -GO bn_compressed_gather.sub constant[l=@var] 40 12 - - Total # of data points: 10000 (10000*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - SET MEMORY/SIZE: 320 Mb (40 megawords) - Peak demand: 111.84 Mb - Current cache: 80.32 Mb - - Total # of data points: 10000 (10000*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 33.68 Mb - Current cache: 80.32 Mb -COMPRESSED GATHER success on expression constant[l=@var] - -! known result -GO bn_compressed_gather.sub xt_zero_mean[l=@var] 40 12 - - Total # of data points: 10000 (10000*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 83500 - Maximum value: 83500 - Mean value: 83500 (unweighted average) - SET MEMORY/SIZE: 320 Mb (40 megawords) - Peak demand: 111.84 Mb - Current cache: 80.32 Mb - - Total # of data points: 10000 (10000*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 83500 - Maximum value: 83500 - Mean value: 83500 (unweighted average) - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 33.68 Mb - Current cache: 80.32 Mb -COMPRESSED GATHER success on expression xt_zero_mean[l=@var] - -! adding a constant doesn't effect the variance -GO bn_compressed_gather.sub xt[l=@var] 40 12 - - Total # of data points: 10000 (10000*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 83500 - Maximum value: 83500 - Mean value: 83500 (unweighted average) - SET MEMORY/SIZE: 320 Mb (40 megawords) - Peak demand: 56.16 Mb - Current cache: 80.32 Mb - - Total # of data points: 10000 (10000*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 83500 - Maximum value: 83500 - Mean value: 83500 (unweighted average) - SET MEMORY/SIZE: 96 Mb (12 megawords) - Peak demand: 17.04 Mb - Current cache: 80.32 Mb -COMPRESSED GATHER success on expression xt[l=@var] - -! same test, but on @std (only one line of code difference so limited test) -* square root of 83500 is 288.96366553599779. -* Note: previous Ferret versions gave a consistent value -* Minimum value: 288.9636655359978 -* Maximum value: 288.9636655359978 -* Mean value: 288.9636655359978 -* Now (11/16) we are getting slight variations in the 16th decimal (see"6") -* Minimum value: 288.9636655359978 -* Maximum value: 288.9636655359978 -* Mean value: 288.9636655359976 -* *sh* @std differs from @var only by taking a SQRT() in the finalization step. -* I suspect this is an artifact of the compiler optimization level -GO bn_compressed_gather.sub xt[l=@std] 4000000 400000 - - Total # of data points: 10000 (10000*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 288.9636655359978 - Maximum value: 288.9636655359978 - Mean value: 288.9636655360099 (unweighted average) - SET MEMORY/SIZE: 32000 Gb (4000000 megawords) - Peak demand: 80.32 Mb - Current cache: 80.32 Mb - - Total # of data points: 10000 (10000*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 288.9636655359978 - Maximum value: 288.9636655359978 - Mean value: 288.9636655360099 (unweighted average) - SET MEMORY/SIZE: 3200 Gb (400000 megawords) - Peak demand: 80.32 Mb - Current cache: 80.32 Mb -COMPRESSED GATHER success on expression xt[l=@std] - - -! ********************************************************* -! ******* tests of "4D" @var and @std ****** -! the @var and @srd transformation had to be switched to -! a single pass algorithm in order to implement split/gather -define axis/x=1:200:1 xax -define axis/y=1:200:1 yax -define axis/z=1:201:1 zax -define axis/T=1:200:1 tax -! adding a constant doesn't effect variance -let constant = 0*X[gx=xax] + 0*Y[gy=yax] + 0*Z[gz=zax] + 1234 -let xyz = 0*X[gx=xax] + 0*Y[gy=yax] + Z[gz=zax] + 1 -let xyz_zero_mean = 0*X[gx=xax] + 0*Y[gy=yax] + (Z[gz=zax]-101) - -* note: sum of a sequence 1 to N of square integers is [N*(N+1)*(2N+1)]/6 -* Z-101 is 2 sequences: -100 to -1 and 1 to 100, therefore sum is -* 2 * [100*101*201]/6 = 676700 -* so the average is 676700/201 = 3366.666666 ... -* At every XY point we have the identical sequence in Z, so the variance is -* the same as the single Z sequence - -* 3D XYZ test -* 2d slice size = 200*200 = 40,000 -* 3d full size is 8,000,000 - so 10,000,000 is bigger -cancel memory/all -!set mode desp: 2000000 -set memory/size = 2 ! 2M v 8M: requires split/gather -! will split into 4 pieces (1/4 of 8,000,000 fits into 2,000,000) -! so z=1:50; then =51:100, Z=101:150, Z=151:200 -LIST/PREC=12 constant[x=@var,y=@var,z=@var] - VARIABLE : 0*X[GX=XAX] + 0*Y[GY=YAX] + 0*Z[GZ=ZAX] + 1234 - X : 0.5 to 200.5 (XYZ variance) - Y : 0.5 to 200.5 (XYZ variance) - Z : 0.5 to 201.5 (XYZ variance) - 0.000000000000 - -! variance of a constant is zero -GO bn_compressed_gather.sub constant[x=@var,y=@var,z=@var] 20 2 - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 0.02 Kb - Current cache: 13.12 Mb - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 0 - Mean value: 0 (unweighted average) - SET MEMORY/SIZE: 16 Mb (2 megawords) - Peak demand: 5.12 Mb - Current cache: 13.12 Mb -COMPRESSED GATHER success on expression constant[x=@var,y=@var,z=@var] - -! confirm that we get the result computed above -GO bn_compressed_gather.sub xyz_zero_mean[x=@var,y=@var,z=@var] 20 2 - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 3366.7 - Maximum value: 3366.7 - Mean value: 3366.7 (unweighted average) - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 28.16 Mb - Current cache: 64.32 Mb - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 3366.7 - Maximum value: 3366.7 - Mean value: 3366.7 (unweighted average) - SET MEMORY/SIZE: 16 Mb (2 megawords) - Peak demand: 2.88 Mb - Current cache: 13.12 Mb -COMPRESSED GATHER success on expression xyz_zero_mean[x=@var,y=@var,z=@var] -LIST/PREC=12 xyz_zero_mean[x=@var,y=@var,z=@var] - VARIABLE : 0*X[GX=XAX] + 0*Y[GY=YAX] + (Z[GZ=ZAX]-101) - X : 0.5 to 200.5 (XYZ variance) - Y : 0.5 to 200.5 (XYZ variance) - Z : 0.5 to 201.5 (XYZ variance) - 3366.66666667 - -! confirm that adding a constant does not change the result -GO bn_compressed_gather.sub xyz[x=@var,y=@var,z=@var] 20 2 - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 3366.7 - Maximum value: 3366.7 - Mean value: 3366.7 (unweighted average) - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 55.68 Mb - Current cache: 77.44 Mb - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 3366.7 - Maximum value: 3366.7 - Mean value: 3366.7 (unweighted average) - SET MEMORY/SIZE: 16 Mb (2 megawords) - Peak demand: 5.12 Mb - Current cache: 13.12 Mb -COMPRESSED GATHER success on expression xyz[x=@var,y=@var,z=@var] -LIST/PREC=12 xyz[x=@var,y=@var,z=@var] - VARIABLE : 0*X[GX=XAX] + 0*Y[GY=YAX] + Z[GZ=ZAX] + 1 - X : 0.5 to 200.5 (XYZ variance) - Y : 0.5 to 200.5 (XYZ variance) - Z : 0.5 to 201.5 (XYZ variance) - 3366.66666667 - -CANCEL MEMORY/ALL ! IF PRESENT THIS PREVENTS THE MEMORY CORRUPTION -! confirm the @std gives the square root of the variance -! SQRT(676700/201) = 58.022983951764034269074805569046 -GO bn_compressed_gather.sub xyz[x=@std,y=@std,z=@std] 20 2 - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 58.023 - Maximum value: 58.023 - Mean value: 58.023 (unweighted average) - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 55.68 Mb - Current cache: 64.32 Mb - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 58.023 - Maximum value: 58.023 - Mean value: 58.023 (unweighted average) - SET MEMORY/SIZE: 16 Mb (2 megawords) - Peak demand: 5.12 Mb - Current cache: 13.12 Mb -COMPRESSED GATHER success on expression xyz[x=@std,y=@std,z=@std] -LIST/PREC=12 xyz[x=@std,y=@std,z=@std] - VARIABLE : 0*X[GX=XAX] + 0*Y[GY=YAX] + Z[GZ=ZAX] + 1 - X : 0.5 to 200.5 (XYZ stddev) - Y : 0.5 to 200.5 (XYZ stddev) - Z : 0.5 to 201.5 (XYZ stddev) - 58.0229839518 - - -! add more tests here -! the highest liklihood of problem is in the formulation of "the next chunk" -! when IS_TRANS requests the next piece to be gathered -! ... variations on inner and outer limits -! (i.e. averaging an expression with limits embedded inside of it -! where the averaging limits may or may not match the inner limits) -! ... file variable, vs user variables -! ... embedded functions, especially grid-changing functions -! -! ... test irregular axes (unequal weighting) and see how significant are -! the changes in results from old Ferret (particularly on @var) - - -! clean up -set mem/siz=1 -SET MEMORY/SIZE=($saved_memory_size) - !-> SET MEMORY/SIZE=250Mb - -GO bn_reset bn_dynamic_gather -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dynamic_gather -GO bn_dynamic_gather -! bn_dynamic_gather.jnl -! *sh* 3/2017 -! *acm*7/2017 0=success for SPAWN_STATUS -! 6/19, code changes for SET MEM in terms of Mbytes. But -! here, the SET MEMORY commands are done in terms of megawords, -! as we're thinking of grid sizes - - -! initialize -DEFINE SYMBOL saved_memory_size = ($FERRET_BYTES_MEM) - !-> DEFINE SYMBOL saved_memory_size = 250Mb - - -! There's not really anything "dynamic" about this benchmark, except that it -! excercises the split/gather improvements that were implemented together with -! dynamic memory management - - - - -! Give us something to look at while we run these tests which dont make plots -plot/noax/nolab/vlim=0:1/i=4:5 i -annotate/norm/x=0/y=0.5 "@AC... running bn_dynamic_gather" - - -! ************************************** -! create the test data -spawn "mkdir -p tmp" ! tmp directory to store files - -! see if the test file already exists -SPAWN "ls tmp/test_dyn_mem.nc" -IF ($SPAWN_OK) THEN - !-> IF 0 THEN -ELSE - define symbol saved_memory_size = ($FERRET_MEMORY) - !-> define symbol saved_memory_size = 31.25 - set mem/size=50 - define axis/x=1:1000:1 x1000 - define axis/y=1:1000:1 y1000 - define axis/z=1:2:1 z2 - define axis/t=1:10:1 t10 - define grid/x=x1000/y=y1000/z=z2/t=t10 gg - let v = x[g=gg]+y[g=gg]+z[g=gg]+t[g=gg] - save/clobber/file="tmp/test_dyn_mem.nc" v - define axis/t=1:1000:1 t1000 - define axis/x=1:10:1 x10 - define axis/y=1:100:1 y100 - define axis/z=1:4:1 z4 - let v1000 = x[gx=x10]+y[gy=y100]+z[gz=z4]+t[gt=t1000] - save/append/file="tmp/test_dyn_mem.nc" v1000 - cancel variable/all - cancel mem/all - set memory/size=($saved_memory_size) - !-> set memory/size=31.25 -ENDIF - -! ************************************ - -use tmp/test_dyn_mem.nc -show data - currently SET data sets: - 1> tmp/test_dyn_mem.nc (default) - name title I J K L - v X[G=GG]+Y[G=GG]+Z[G=GG]+T[G=GG] 1:1000 1:1000 1:2 1:10 - v1000 X[GX=X10]+Y[GY=Y100]+Z[GZ=Z4]+T 1:10 1:100 1:4 1:1000 - - -! excercise under the least strict memory management -CANCEL MODE FRUGAL -GO bn_dynamic_gather.sub -! bn_dynamic_gather.sub - -! this subroutine to get called repeatedly for different values of MODE FRUGAL - -!************** -! remember to test: -! - MODE FRUGAL -! done - case of no single axis long enough -! done - case of transformed axis not long enough, but another is -! 2-axis split including compressed -! 2-axis split not including -! 3-axis splits -! -- with slowest axis GT 5 in length -! -- with slowest axis LT 5 and second slowest GT 50 -! - modulo regrid examples -! 2d and 3d @AVE -! mixed @AVE and @DIN -!************* - -! ************************************************** -! test memory that is too small to accommodate the result -! this request will fail trying to get the third argument -set mode ignore -set memory/siz=1.99 -stat/brief v[i=101:200,j=101:200,k=1,l=1:10@ave], v[i=101:200,j=101:200,k=2,l=1:10@ave], v[l=1:10@ave] - At the moment that the memory limit was reached - argument 3 was being evaluated: V[L=1:10@AVE] - memory was committed as follows: - - to arguments 1-2: 40000 (2%) - - to objects used in computation: 0 (0%) - The size of the requested object was: 16 Mb (101%) -cancel mode ignore - -! ************************************************** -! if memory size is large enough to accommodate the result data plus -! its accumulation buffer(s) when split along the compressed axis (4M) -! then it can choose to use the compressed axis. -! The smallest chunk along that axis is 1000x1000x2x1 ==> 2M -set memory/siz=6 -stat/brief v[l=1:10@ave] - - Total # of data points: 2000000 (1000*1000*2*1*1*1) - # flagged as bad data: 0 - Minimum value: 8.5 - Maximum value: 2007.5 - Mean value: 1008 (unweighted average) -show memory/diagnostic ! T axis split, chunk size = 1, peak mem=6 - Last gather - Variable Axis Xform Chunk Repeated - V T AVE 1 1 - Total table slots: 500 - Free table slots: 498 - Un-cached variables: 0 - SET MEMORY/SIZE: 48 Mb (6 megawords) - Peak demand: 48 Mb - Current cache: 48 Mb -show memory/all ! in memory following the last chunk - SET MEMORY/SIZE: 48 Mb (6 megawords) - Peak demand: 48 Mb - Current cache: 48 Mb -all data in memory: - V[D=test_dyn_mem] XYZ mr:209 size:32 Mb - 1/0.5 1/0.5 1/0.5 ... /0.5 - 1000/1001 1000/1000.5 2/2.5 ... /10.5 - AVE - V[D=test_dyn_mem] XYZ mr:230 size:16 Mb - 1/0.5 1/0.5 1/0.5 10/9.5 - 1000/1001 1000/1000.5 2/2.5 10/10.5 - -cancel memory/all - -! ************************************************** -! Since @VAR requires two buffers - the total size of the result is 2M+2*2M=6M -! if we were to split along T the size of a chunk would be 1000x1000x2x1 = 2M -! So the total memory needed would be 6M+2M=8M to split along T -set memory/size=8 -stat/brief v[l=1:10@var] - - Total # of data points: 2000000 (1000*1000*2*1*1*1) - # flagged as bad data: 0 - Minimum value: 8.25 - Maximum value: 8.25 - Mean value: 8.25 (unweighted average) -show memory/diagnostic ! T axis split, chunk size = 1, peak mem=8 - Last gather - Variable Axis Xform Chunk Repeated - V T VAR 1 1 - Total table slots: 500 - Free table slots: 498 - Un-cached variables: 0 - SET MEMORY/SIZE: 64 Mb (8 megawords) - Peak demand: 64 Mb - Current cache: 64 Mb -cancel memory/all - -! ************************************************** -! if memory size is NOT large enough to accommodate the result data plus -! its accumulation buffer(s) then it cannot split along T -set memory/siz=5.9 -stat/brief v[l=1:10@ave] - - Total # of data points: 2000000 (1000*1000*2*1*1*1) - # flagged as bad data: 0 - Minimum value: 8.5 - Maximum value: 2007.5 - Mean value: 1008 (unweighted average) -show memory/diagnostic ! Y axis split, big chunk size = 1 - Last gather - Variable Axis Xform Chunk Repeated - V Y AVE 162 1 - Total table slots: 500 - Free table slots: 496 - Un-cached variables: 0 - SET MEMORY/SIZE: 47.2 Mb (5.9 megawords) - Peak demand: 47.1 Mb - Current cache: 26.56 Mb -cancel memory/all - -! ************************************************** -! memory barely large enough to accommodate the result (2M), and the -! smallest achievable chunk -! splitting along the Y axis, the smallest chunk size is 1000x1x2x10 ==> 20000 -! and the average of a single chunk (incl buffer) is 1000x1x2x1*2 ==> 4000 -set memory/siz=2.024 -stat/brief v[l=1:10@ave] - - Total # of data points: 2000000 (1000*1000*2*1*1*1) - # flagged as bad data: 0 - Minimum value: 8.5 - Maximum value: 2007.5 - Mean value: 1008 (unweighted average) -show memory/diagnostic ! Y axis split, chunk size=1, peak mem=2.024 - Last gather - Variable Axis Xform Chunk Repeated - V Y AVE 1 1 - Total table slots: 500 - Free table slots: 497 - Un-cached variables: 0 - SET MEMORY/SIZE: 16.19 Mb (2.024 megawords) - Peak demand: 16.19 Mb - Current cache: 16.19 Mb -show memory/all ! in memory following the last chunk - SET MEMORY/SIZE: 16.19 Mb (2.024 megawords) - Peak demand: 16.19 Mb - Current cache: 16.19 Mb -all data in memory: - V[D=test_dyn_mem] XYZ mr:222 size:16 Mb - 1/0.5 1/0.5 1/0.5 ... /0.5 - 1000/1001 1000/1000.5 2/2.5 ... /10.5 - AVE - V[D=test_dyn_mem] XZ mr:224 size:32 Kb - 1/0.5 1000/999.5 1/0.5 ... /0.5 - 1000/1001 1000/1000.5 2/2.5 ... /10.5 - AVE - V[D=test_dyn_mem] XZT mr:230 size:160 Kb - 1/0.5 1000/999.5 1/0.5 1/0.5 - 1000/1001 1000/1000.5 2/2.5 10/10.5 - -cancel memory/all - -! ************************************************** -! Since @VAR requires two buffers - the total size of the result is 2M+2*2M=6M -! if we were to split along T the size of a chunk would be 1000x1000x2x1 = 2M -! So the total memory needed would be 6M+2M=8M. So the current SET MEMORY=6 -! is not enuf mem to split along the T axis -set memory/siz=6 -stat/brief v[l=1:10@var] - - Total # of data points: 2000000 (1000*1000*2*1*1*1) - # flagged as bad data: 0 - Minimum value: 8.25 - Maximum value: 8.25 - Mean value: 8.25 (unweighted average) -show memory/diagnostic ! Y axis split - Last gather - Variable Axis Xform Chunk Repeated - V Y VAR 153 1 - Total table slots: 500 - Free table slots: 496 - Un-cached variables: 0 - SET MEMORY/SIZE: 48 Mb (6 megawords) - Peak demand: 47.82 Mb - Current cache: 40.4 Mb -cancel memory/all - -! ************************************************** -! 3D averaging v[x=@ave,y=@ave,z=@ave,L=1] -! result size will be 1x1x1x1*2 = 2 -! chunk size if split along Z will be 1000x1000x1x1 = 1M -! chunk size if split along Y will be 1000x1x2x1 = 2K - -! this request can succeed by splitting along Z -set memory/siz=1.001 -stat/brief v[x=@ave,y=@ave,z=@ave,L=1] - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 1003.5 - Maximum value: 1003.5 - Mean value: 1003.5 (unweighted average) -show memory/diagnostic ! Z axis split - Last gather - Variable Axis Xform Chunk Repeated - V Z AV4 1 1 - Total table slots: 500 - Free table slots: 498 - Un-cached variables: 0 - SET MEMORY/SIZE: 8.01 Mb (1.001 megawords) - Peak demand: 8 Mb - Current cache: 8 Mb -cancel memory/all - -! ************************************************** -! but if memory is so small that the Z axis of 2 points does not provide -! enough size reduction, then we choose to split along Y -set memory/siz=.99 -stat/brief v[x=@ave,y=@ave,z=@ave,L=1] - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 1003.5 - Maximum value: 1003.5 - Mean value: 1003.5 (unweighted average) -show memory/diagnostic ! Y axis split - Last gather - Variable Axis Xform Chunk Repeated - V Y AV4 494 1 - Total table slots: 500 - Free table slots: 498 - Un-cached variables: 0 - SET MEMORY/SIZE: 7.92 Mb (990000 words) - Peak demand: 7.9 Mb - Current cache: 192.02 Kb -cancel memory/all - -! ************************************************** -! multiple transformations on a single expression -! Use of these expressions **is a bad idea in Ferret** -! he "potential size" of the source data is 1000x1000x20x10=20M -! we just get aggressive about memory saving: choose the longest axis -! preferring an uncompressed axis if available -! Here we see a triple level strip: Z-T-Y -! (SHOW MEM/DIAG repeats on each of the 2 K values) -set memory/siz=.99 -stat/brief v[x=@ave,y=@ave,L=@SUM] - - Total # of data points: 2 (1*1*2*1*1*1) - # flagged as bad data: 0 - Minimum value: 10075 - Maximum value: 10085 - Mean value: 10080 (unweighted average) -show memory/diagnostic ! split on Z-(T-Y,T-Y) - Last gather - Variable Axis Xform Chunk Repeated - V Z SUM 1 1 - V Y AV4 98 2 - Total table slots: 500 - Free table slots: 496 - Un-cached variables: 0 - SET MEMORY/SIZE: 7.92 Mb (990000 words) - Peak demand: 7.84 Mb - Current cache: 1.6 Mb -cancel memory/all - -! ************************************************** -! now the same situation, but where Z is compressed as well -! Z is not stripped off because other axes are longer -set memory/siz=.99 -stat/brief v[x=@ave,y=@ave,z=@ave,L=@SUM] - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 10080 - Maximum value: 10080 - Mean value: 10080 (unweighted average) -show memory/diagnostic ! split on T-Y - Last gather - Variable Axis Xform Chunk Repeated - V Y AV4 49 1 - Total table slots: 500 - Free table slots: 497 - Un-cached variables: 0 - SET MEMORY/SIZE: 7.92 Mb (990000 words) - Peak demand: 7.84 Mb - Current cache: 3.2 Mb -cancel memory/all - -! ************************************************** -! multiple transformation again -! first strip YZT@AVE. Split the long Y axis, no further split needed -set memory/siz=.99 -stat/brief v[x=@SUM,y=@ave,z=@ave,L=@ave] - - Total # of data points: 1 (1*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 1.008E+06 - Maximum value: 1.008E+06 - Mean value: 1.008E+06 (unweighted average) -show memory/diagnostic ! split on Y - Last gather - Variable Axis Xform Chunk Repeated - V Y AV4 24 1 - Total table slots: 500 - Free table slots: 494 - Un-cached variables: 0 - SET MEMORY/SIZE: 7.92 Mb (990000 words) - Peak demand: 3.85 Mb - Current cache: 6.42 Mb -cancel memory/all - -! ************************************************** -! MODULO REGRID - -! v1000 is 10x100x4x1000 -! for gt=@mod the full result size is 10x100x4x12 ==> 48,000 - -define axis/mod/t=1:12:1 t12mod - -!************************************************** -set mem/size=10 ! bigger than needed -stat/brief v1000[gt=t12mod@mod] - - Total # of data points: 48000 (10*100*4*12*1*1) - # flagged as bad data: 0 - Minimum value: 500 - Maximum value: 618 - Mean value: 559 (unweighted average) -show mem/diag ! note peak size demand a bit over 4 - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 498 - Un-cached variables: 0 - SET MEMORY/SIZE: 80 Mb (10 megawords) - Peak demand: 33.15 Mb - Current cache: 32.38 Mb -canc mem/all - -!************************************************** -set mem/size=4 -stat/brief v1000[gt=t12mod@mod] - - Total # of data points: 48000 (10*100*4*12*1*1) - # flagged as bad data: 0 - Minimum value: 500 - Maximum value: 618 - Mean value: 559 (unweighted average) -show mem/diag ! big z chunks (3 on ax of len 4) - Last gather - Variable Axis Xform Chunk Repeated - V1000 Z 3 1 - Total table slots: 500 - Free table slots: 496 - Un-cached variables: 0 - SET MEMORY/SIZE: 32 Mb (4 megawords) - Peak demand: 24.86 Mb - Current cache: 8.77 Mb -canc mem/all - -!************************************************** -set mem/size=1 -stat/brief v1000[gt=t12mod@mod] - - Total # of data points: 48000 (10*100*4*12*1*1) - # flagged as bad data: 0 - Minimum value: 500 - Maximum value: 618 - Mean value: 559 (unweighted average) -show mem/diag ! big y chunks (22 on ax of len 100) - Last gather - Variable Axis Xform Chunk Repeated - V1000 Y 22 1 - Total table slots: 500 - Free table slots: 496 - Un-cached variables: 0 - SET MEMORY/SIZE: 8 Mb (1000000 words) - Peak demand: 7.68 Mb - Current cache: 4.35 Mb -canc mem/all - -!************************************************** -! if the chunk size is 1, then each chunk src is 10x1x4x1000 ==> 40000 -! and requires a result plus 2 buffers: 10x1x4x12*3 ==> 1440 -! plus the full result size in IS_GATHER ==> 48000 -! total ==> 89440 -set mem/size=.09 -stat/brief v1000[gt=t12mod@mod] - - Total # of data points: 48000 (10*100*4*12*1*1) - # flagged as bad data: 0 - Minimum value: 500 - Maximum value: 618 - Mean value: 559 (unweighted average) -show mem/diag ! y chunk size = 1 - Last gather - Variable Axis Xform Chunk Repeated - V1000 Y 1 1 - Total table slots: 500 - Free table slots: 496 - Un-cached variables: 0 - SET MEMORY/SIZE: 720 Kb (90000 words) - Peak demand: 715.52 Kb - Current cache: 711.68 Kb -canc mem/all - - -! ************** USER VARIABLES ******************** -let a = v[k=1] -let b = v[k=2] -let c = a + b -let d = a + c - -! for comparison: memory management to average a simple file variable -set memory/siz=3 -stat/brief v[l=1:10@ave,k=1] - - Total # of data points: 1000000 (1000*1000*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 8.5 - Maximum value: 2006.5 - Mean value: 1007.5 (unweighted average) -show memory/diagnostic ! T axis split, chunk size = 1, peak mem=6 - Last gather - Variable Axis Xform Chunk Repeated - V T AVE 1 1 - Total table slots: 500 - Free table slots: 498 - Un-cached variables: 0 - SET MEMORY/SIZE: 24 Mb (3 megawords) - Peak demand: 24 Mb - Current cache: 24 Mb -cancel memory/all - -! compare to memory management averaging user variables -! not split on T because more memory is needed for components of calculation -set memory/siz=3 - -stat/brief a[l=1:10@ave] - - Total # of data points: 1000000 (1000*1000*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 8.5 - Maximum value: 2006.5 - Mean value: 1007.5 (unweighted average) -show memory/diagnostic ! X axis split, chunk size = 1, peak mem=1.82 - Last gather - Variable Axis Xform Chunk Repeated - A Y AVE 47 1 - Total table slots: 500 - Free table slots: 491 - Un-cached variables: 0 - SET MEMORY/SIZE: 24 Mb (3 megawords) - Peak demand: 15.52 Mb - Current cache: 23.07 Mb -cancel memory/all - -stat/brief d[l=1:10@ave] - - Total # of data points: 1000000 (1000*1000*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 26.5 - Maximum value: 6020.5 - Mean value: 3023.5 (unweighted average) -show memory/diagnostic ! X axis split, chunk size = 1, peak mem=2.23 - Last gather - Variable Axis Xform Chunk Repeated - D Y AVE 47 1 - Total table slots: 500 - Free table slots: 489 - Un-cached variables: 0 - SET MEMORY/SIZE: 24 Mb (3 megawords) - Peak demand: 19.28 Mb - Current cache: 22.72 Mb -cancel memory/all - -! progressively more frugal mem mgmt is needed as multiple results accumulate -stat/brief a[i=1:500,l=1:10@ave], b[i=1:500,l=1:10@ave], c[i=1:500,l=1:10@ave], d[i=1:500,l=1:10@ave] - - Total # of data points: 500000 (500*1000*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 8.5 - Maximum value: 1506.5 - Mean value: 757.5 (unweighted average) - - Total # of data points: 500000 (500*1000*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 9.5 - Maximum value: 1507.5 - Mean value: 758.5 (unweighted average) - - Total # of data points: 500000 (500*1000*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 18 - Maximum value: 3014 - Mean value: 1516 (unweighted average) - - Total # of data points: 500000 (500*1000*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 26.5 - Maximum value: 4520.5 - Mean value: 2273.5 (unweighted average) -show memory/diagnostic ! X axis split, chunk size = 1, peak mem=2.23 - Last gather - Variable Axis Xform Chunk Repeated - A T AVE 1 1 - B Y AVE 71 1 - C Y AVE 47 1 - D Y AVE 23 1 - Total table slots: 500 - Free table slots: 487 - Un-cached variables: 0 - SET MEMORY/SIZE: 24 Mb (3 megawords) - Peak demand: 22.76 Mb - Current cache: 23.83 Mb -cancel memory/all - -! if the initial arguments take up too much memory we cannot succeed -set mode ignore -stat/brief a[l=1:10@ave], b[l=1:10@ave], c[l=1:10@ave], d[l=1:10@ave] - At the moment that the memory limit was reached - argument 3 was being evaluated: C[L=1:10@AVE] - memory was committed as follows: - - to arguments 1-2: 2000000 (67%) - - to objects used in computation: 0 (0%) - The size of the requested object was: 8 Mb (33%) -show memory/diagnostic ! X axis split, chunk size = 1, peak mem=2.23 - Last gather - Variable Axis Xform Chunk Repeated - A Y AVE 47 1 - B Y AVE 23 1 - Total table slots: 500 - Free table slots: 491 - Un-cached variables: 0 - SET MEMORY/SIZE: 24 Mb (3 megawords) - Peak demand: 19.68 Mb - Current cache: 22.35 Mb -cancel mode ignore -cancel memory/all - - -! now run the same tests under 3 different FRUGAL levels -! save the outputs so they can be compared - -! excercise under the least strict memory management -CANCEL REDIRECT -SET REDIRECT/CLOBBER/FILE=bn_dynamic_gather_0.out -SET REDIRECT/CLOBBER/FILE=bn_dynamic_gather_30.out -SET REDIRECT/CLOBBER/FILE=bn_dynamic_gather_60.out - -! now compare the three output logs: -! differences in *how* the results are computed are fine -! differences in what the results are would be problems -SAY ************************************************** -************************************************** -SAY ************* DIFF FRUGAL 0 TO 30 **************** -************* DIFF FRUGAL 0 TO 30 **************** -SPAWN diff bn_dynamic_gather_0.out bn_dynamic_gather_30.out -1c1 -< CANCEL MODE FRUGAL ---- -> SET MODE FRUGAL ! 30% -4c4 -< FRUGAL CANCELED 30 ---- -> FRUGAL SET 30 -56c56 -< V T AVE 1 1 ---- -> V Y AVE 91 1 -58c58 -< Free table slots: 498 ---- -> Free table slots: 496 -61,62c61,62 -< Peak demand: 48 Mb -< Current cache: 48 Mb ---- -> Peak demand: 33.47 Mb -> Current cache: 36.19 Mb -65,66c65,66 -< Peak demand: 48 Mb -< Current cache: 48 Mb ---- -> Peak demand: 33.47 Mb -> Current cache: 36.19 Mb -68c68 -< V[D=test_dyn_mem] XYZ mr:222 size:32 Mb ---- -> V[D=test_dyn_mem] XYZ mr:205 size:16 Mb -72,73c72,77 -< V[D=test_dyn_mem] XYZ mr:241 size:16 Mb -< 1/0.5 1/0.5 1/0.5 10/9.5 ---- -> V[D=test_dyn_mem] XYZ mr:219 size:2.88 Mb -> 1/0.5 911/910.5 1/0.5 ... /0.5 -> 1000/1001 1000/1000.5 2/2.5 ... /10.5 -> AVE -> V[D=test_dyn_mem] XYZT mr:238 size:14.4 Mb -> 1/0.5 911/910.5 1/0.5 1/0.5 -75a80,83 -> V[D=test_dyn_mem] XYZ mr:228 size:2.91 Mb -> 1/0.5 820/819.5 1/0.5 ... /0.5 -> 1000/1001 910/910.5 2/2.5 ... /10.5 -> AVE -93c101 -< V T VAR 1 1 ---- -> V Y VAR 138 1 -95c103 -< Free table slots: 498 ---- -> Free table slots: 494 -98,99c106,107 -< Peak demand: 64 Mb -< Current cache: 64 Mb ---- -> Peak demand: 44.7 Mb -> Current cache: 58.4 Mb -116c124 -< V Y AVE 162 1 ---- -> V Y AVE 88 1 -118c126 -< Free table slots: 496 ---- -> Free table slots: 494 -121,122c129,130 -< Peak demand: 47.1 Mb -< Current cache: 26.56 Mb ---- -> Peak demand: 32.9 Mb -> Current cache: 41.86 Mb -141a150 -> V T AVE 6 999 -143c152 -< Free table slots: 497 ---- -> Free table slots: 496 -146c155 -< Peak demand: 16.19 Mb ---- -> Peak demand: 16.13 Mb -150c159 -< Peak demand: 16.19 Mb ---- -> Peak demand: 16.13 Mb -157c166 -< V[D=test_dyn_mem] XZ mr:224 size:32 Kb ---- -> V[D=test_dyn_mem] XZ mr:228 size:32 Kb -161,162c170,171 -< V[D=test_dyn_mem] XZT mr:241 size:160 Kb -< 1/0.5 1000/999.5 1/0.5 1/0.5 ---- -> V[D=test_dyn_mem] XZT mr:205 size:64 Kb -> 1/0.5 1000/999.5 1/0.5 7/6.5 -164a174,177 -> V[D=test_dyn_mem] XZT mr:238 size:96 Kb -> 1/0.5 1000/999.5 1/0.5 1/0.5 -> 1000/1001 1000/1000.5 2/2.5 6/6.5 -> -183c196 -< V Y VAR 153 1 ---- -> V Y VAR 84 1 -188,189c201,202 -< Peak demand: 47.82 Mb -< Current cache: 40.4 Mb ---- -> Peak demand: 33.47 Mb -> Current cache: 35.84 Mb -210c223 -< V Z AV4 1 1 ---- -> V Y AV4 350 1 -215,216c228,229 -< Peak demand: 8 Mb -< Current cache: 8 Mb ---- -> Peak demand: 5.6 Mb -> Current cache: 4.8 Mb -233c246 -< V Y AV4 494 1 ---- -> V Y AV4 346 1 -238,239c251,252 -< Peak demand: 7.9 Mb -< Current cache: 192.02 Kb ---- -> Peak demand: 5.54 Mb -> Current cache: 4.93 Mb -262c275 -< V Y AV4 98 2 ---- -> V Y AV4 69 2 -267,268c280,281 -< Peak demand: 7.84 Mb -< Current cache: 1.6 Mb ---- -> Peak demand: 5.52 Mb -> Current cache: 2.72 Mb -285c298 -< V Y AV4 49 1 ---- -> V Y AV4 34 1 -287c300 -< Free table slots: 497 ---- -> Free table slots: 496 -290,291c303,304 -< Peak demand: 7.84 Mb -< Current cache: 3.2 Mb ---- -> Peak demand: 5.44 Mb -> Current cache: 7.68 Mb -308c321 -< V Y AV4 24 1 ---- -> V Y AV4 17 1 -310c323 -< Free table slots: 494 ---- -> Free table slots: 492 -313,314c326,327 -< Peak demand: 3.85 Mb -< Current cache: 6.42 Mb ---- -> Peak demand: 2.73 Mb -> Current cache: 7.7 Mb -356c369 -< V1000 Z 3 1 ---- -> V1000 Z 2 1 -361,362c374,375 -< Peak demand: 24.86 Mb -< Current cache: 8.77 Mb ---- -> Peak demand: 16.96 Mb -> Current cache: 16.77 Mb -377c390 -< V1000 Y 22 1 ---- -> V1000 Y 15 1 -382,383c395,396 -< Peak demand: 7.68 Mb -< Current cache: 4.35 Mb ---- -> Peak demand: 5.36 Mb -> Current cache: 3.68 Mb -402a416 -> V1000 Z 2 99 -404c418 -< Free table slots: 496 ---- -> Free table slots: 493 -407,408c421,422 -< Peak demand: 715.52 Kb -< Current cache: 711.68 Kb ---- -> Peak demand: 553.6 Kb -> Current cache: 715.52 Kb -430c444 -< V T AVE 1 1 ---- -> V Y AVE 91 1 -432c446 -< Free table slots: 498 ---- -> Free table slots: 496 -435,436c449,450 -< Peak demand: 24 Mb -< Current cache: 24 Mb ---- -> Peak demand: 16.74 Mb -> Current cache: 18.1 Mb -453c467 -< A Y AVE 47 1 ---- -> A Y AVE 26 1 -455c469 -< Free table slots: 491 ---- -> Free table slots: 487 -458,459c472,473 -< Peak demand: 15.52 Mb -< Current cache: 23.07 Mb ---- -> Peak demand: 12.16 Mb -> Current cache: 23.84 Mb -472c486 -< D Y AVE 47 1 ---- -> D Y AVE 26 1 -474c488 -< Free table slots: 489 ---- -> Free table slots: 487 -477,478c491,492 -< Peak demand: 19.28 Mb -< Current cache: 22.72 Mb ---- -> Peak demand: 14.24 Mb -> Current cache: 22.69 Mb -510,513c524,527 -< A T AVE 1 1 -< B Y AVE 71 1 -< C Y AVE 47 1 -< D Y AVE 23 1 ---- -> A Y AVE 76 1 -> B Y AVE 59 1 -> C Y AVE 42 1 -> D Y AVE 26 1 -515c529 -< Free table slots: 487 ---- -> Free table slots: 484 -518,519c532,533 -< Peak demand: 22.76 Mb -< Current cache: 23.83 Mb ---- -> Peak demand: 19.12 Mb -> Current cache: 23.34 Mb -534,535c548,549 -< A Y AVE 47 1 -< B Y AVE 23 1 ---- -> A Y AVE 26 1 -> B Y AVE 9 1 -537c551 -< Free table slots: 491 ---- -> Free table slots: 481 -540,541c554,555 -< Peak demand: 19.68 Mb -< Current cache: 22.35 Mb ---- -> Peak demand: 17.44 Mb -> Current cache: 23.38 Mb -547c561 -< ! excercise under the default memory management ---- -> ! excercise under pretty strict memory management - -SAY ************************************************** -************************************************** -SAY ************* DIFF FRUGAL 0 TO 60 **************** -************* DIFF FRUGAL 0 TO 60 **************** -SPAWN diff bn_dynamic_gather_0.out bn_dynamic_gather_60.out -1c1 -< CANCEL MODE FRUGAL ---- -> SET MODE FRUGAL:60 -4c4 -< FRUGAL CANCELED 30 ---- -> FRUGAL SET 60 -56c56 -< V T AVE 1 1 ---- -> V Y AVE 16 1 -58c58 -< Free table slots: 498 ---- -> Free table slots: 478 -61,62c61,62 -< Peak demand: 48 Mb -< Current cache: 48 Mb ---- -> Peak demand: 19.07 Mb -> Current cache: 45.7 Mb -65,66c65,66 -< Peak demand: 48 Mb -< Current cache: 48 Mb ---- -> Peak demand: 19.07 Mb -> Current cache: 45.7 Mb -68c68 -< V[D=test_dyn_mem] XYZ mr:222 size:32 Mb ---- -> V[D=test_dyn_mem] XYZ mr:241 size:16 Mb -72,73c72,77 -< V[D=test_dyn_mem] XYZ mr:241 size:16 Mb -< 1/0.5 1/0.5 1/0.5 10/9.5 ---- -> V[D=test_dyn_mem] XYZ mr:227 size:256 Kb -> 1/0.5 993/992.5 1/0.5 ... /0.5 -> 1000/1001 1000/1000.5 2/2.5 ... /10.5 -> AVE -> V[D=test_dyn_mem] XYZT mr:184 size:1.28 Mb -> 1/0.5 993/992.5 1/0.5 1/0.5 -75a80,155 -> V[D=test_dyn_mem] XYZ mr:183 size:512 Kb -> 1/0.5 977/976.5 1/0.5 ... /0.5 -> 1000/1001 992/992.5 2/2.5 ... /10.5 -> AVE -> V[D=test_dyn_mem] XYZT mr:203 size:2.56 Mb -> 1/0.5 977/976.5 1/0.5 1/0.5 -> 1000/1001 992/992.5 2/2.5 10/10.5 -> -> V[D=test_dyn_mem] XYZ mr:190 size:512 Kb -> 1/0.5 961/960.5 1/0.5 ... /0.5 -> 1000/1001 976/976.5 2/2.5 ... /10.5 -> AVE -> V[D=test_dyn_mem] XYZT mr:205 size:2.56 Mb -> 1/0.5 961/960.5 1/0.5 1/0.5 -> 1000/1001 976/976.5 2/2.5 10/10.5 -> -> V[D=test_dyn_mem] XYZ mr:204 size:512 Kb -> 1/0.5 945/944.5 1/0.5 ... /0.5 -> 1000/1001 960/960.5 2/2.5 ... /10.5 -> AVE -> V[D=test_dyn_mem] XYZT mr:215 size:2.56 Mb -> 1/0.5 945/944.5 1/0.5 1/0.5 -> 1000/1001 960/960.5 2/2.5 10/10.5 -> -> V[D=test_dyn_mem] XYZ mr:209 size:512 Kb -> 1/0.5 929/928.5 1/0.5 ... /0.5 -> 1000/1001 944/944.5 2/2.5 ... /10.5 -> AVE -> V[D=test_dyn_mem] XYZT mr:224 size:2.56 Mb -> 1/0.5 929/928.5 1/0.5 1/0.5 -> 1000/1001 944/944.5 2/2.5 10/10.5 -> -> V[D=test_dyn_mem] XYZ mr:218 size:512 Kb -> 1/0.5 913/912.5 1/0.5 ... /0.5 -> 1000/1001 928/928.5 2/2.5 ... /10.5 -> AVE -> V[D=test_dyn_mem] XYZT mr:228 size:2.56 Mb -> 1/0.5 913/912.5 1/0.5 1/0.5 -> 1000/1001 928/928.5 2/2.5 10/10.5 -> -> V[D=test_dyn_mem] XYZ mr:225 size:512 Kb -> 1/0.5 897/896.5 1/0.5 ... /0.5 -> 1000/1001 912/912.5 2/2.5 ... /10.5 -> AVE -> V[D=test_dyn_mem] XYZT mr:191 size:2.56 Mb -> 1/0.5 897/896.5 1/0.5 1/0.5 -> 1000/1001 912/912.5 2/2.5 10/10.5 -> -> V[D=test_dyn_mem] XYZ mr:238 size:512 Kb -> 1/0.5 881/880.5 1/0.5 ... /0.5 -> 1000/1001 896/896.5 2/2.5 ... /10.5 -> AVE -> V[D=test_dyn_mem] XYZT mr:226 size:2.56 Mb -> 1/0.5 881/880.5 1/0.5 1/0.5 -> 1000/1001 896/896.5 2/2.5 10/10.5 -> -> V[D=test_dyn_mem] XYZ mr:219 size:512 Kb -> 1/0.5 865/864.5 1/0.5 ... /0.5 -> 1000/1001 880/880.5 2/2.5 ... /10.5 -> AVE -> V[D=test_dyn_mem] XYZT mr:239 size:2.56 Mb -> 1/0.5 865/864.5 1/0.5 1/0.5 -> 1000/1001 880/880.5 2/2.5 10/10.5 -> -> V[D=test_dyn_mem] XYZ mr:230 size:512 Kb -> 1/0.5 849/848.5 1/0.5 ... /0.5 -> 1000/1001 864/864.5 2/2.5 ... /10.5 -> AVE -> V[D=test_dyn_mem] XYZT mr:220 size:2.56 Mb -> 1/0.5 849/848.5 1/0.5 1/0.5 -> 1000/1001 864/864.5 2/2.5 10/10.5 -> -> V[D=test_dyn_mem] XYZ mr:207 size:512 Kb -> 1/0.5 833/832.5 1/0.5 ... /0.5 -> 1000/1001 848/848.5 2/2.5 ... /10.5 -> AVE -93c173 -< V T VAR 1 1 ---- -> V Y VAR 46 1 -95c175 -< Free table slots: 498 ---- -> Free table slots: 488 -98,99c178,179 -< Peak demand: 64 Mb -< Current cache: 64 Mb ---- -> Peak demand: 25.57 Mb -> Current cache: 63.55 Mb -116c196 -< V Y AVE 162 1 ---- -> V Y AVE 14 1 -118c198 -< Free table slots: 496 ---- -> Free table slots: 474 -121,122c201,202 -< Peak demand: 47.1 Mb -< Current cache: 26.56 Mb ---- -> Peak demand: 18.69 Mb -> Current cache: 47.17 Mb -141a222 -> V T AVE 2 999 -143c224 -< Free table slots: 497 ---- -> Free table slots: 493 -146c227 -< Peak demand: 16.19 Mb ---- -> Peak demand: 16.06 Mb -150c231 -< Peak demand: 16.19 Mb ---- -> Peak demand: 16.06 Mb -153c234 -< V[D=test_dyn_mem] XYZ mr:222 size:16 Mb ---- -> V[D=test_dyn_mem] XYZ mr:238 size:16 Mb -157c238 -< V[D=test_dyn_mem] XZ mr:224 size:32 Kb ---- -> V[D=test_dyn_mem] XZ mr:239 size:32 Kb -161,162c242,243 -< V[D=test_dyn_mem] XZT mr:241 size:160 Kb -< 1/0.5 1000/999.5 1/0.5 1/0.5 ---- -> V[D=test_dyn_mem] XZT mr:225 size:32 Kb -> 1/0.5 1000/999.5 1/0.5 9/8.5 -164a246,261 -> V[D=test_dyn_mem] XZT mr:226 size:32 Kb -> 1/0.5 1000/999.5 1/0.5 7/6.5 -> 1000/1001 1000/1000.5 2/2.5 8/8.5 -> -> V[D=test_dyn_mem] XZT mr:227 size:32 Kb -> 1/0.5 1000/999.5 1/0.5 5/4.5 -> 1000/1001 1000/1000.5 2/2.5 6/6.5 -> -> V[D=test_dyn_mem] XZT mr:228 size:32 Kb -> 1/0.5 1000/999.5 1/0.5 3/2.5 -> 1000/1001 1000/1000.5 2/2.5 4/4.5 -> -> V[D=test_dyn_mem] XZT mr:241 size:32 Kb -> 1/0.5 1000/999.5 1/0.5 1/0.5 -> 1000/1001 1000/1000.5 2/2.5 2/2.5 -> -183c280 -< V Y VAR 153 1 ---- -> V Y VAR 15 1 -185c282 -< Free table slots: 496 ---- -> Free table slots: 478 -188,189c285,286 -< Peak demand: 47.82 Mb -< Current cache: 40.4 Mb ---- -> Peak demand: 19.12 Mb -> Current cache: 46.88 Mb -210c307 -< V Z AV4 1 1 ---- -> V Y AV4 200 1 -212c309 -< Free table slots: 498 ---- -> Free table slots: 497 -215,216c312,313 -< Peak demand: 8 Mb -< Current cache: 8 Mb ---- -> Peak demand: 3.2 Mb -> Current cache: 6.4 Mb -233c330 -< V Y AV4 494 1 ---- -> V Y AV4 197 1 -235c332 -< Free table slots: 498 ---- -> Free table slots: 496 -238,239c335,336 -< Peak demand: 7.9 Mb -< Current cache: 192.02 Kb ---- -> Peak demand: 3.15 Mb -> Current cache: 6.54 Mb -262c359 -< V Y AV4 98 2 ---- -> V Y AV4 39 2 -264c361 -< Free table slots: 496 ---- -> Free table slots: 495 -267,268c364,365 -< Peak demand: 7.84 Mb -< Current cache: 1.6 Mb ---- -> Peak demand: 3.12 Mb -> Current cache: 5.12 Mb -285c382 -< V Y AV4 49 1 ---- -> V Y AV4 19 1 -287c384 -< Free table slots: 497 ---- -> Free table slots: 496 -290,291c387,388 -< Peak demand: 7.84 Mb -< Current cache: 3.2 Mb ---- -> Peak demand: 3.04 Mb -> Current cache: 4.96 Mb -308c405 -< V Y AV4 24 1 ---- -> V Y AV4 9 1 -310c407 -< Free table slots: 494 ---- -> Free table slots: 486 -313,314c410,411 -< Peak demand: 3.85 Mb -< Current cache: 6.42 Mb ---- -> Peak demand: 1.44 Mb -> Current cache: 7.38 Mb -335c432,434 -< No split/gather occurred in the last evaluation ---- -> Last gather -> Variable Axis Xform Chunk Repeated -> V1000 Z 3 1 -337c436 -< Free table slots: 498 ---- -> Free table slots: 495 -340,341c439,440 -< Peak demand: 33.15 Mb -< Current cache: 32.38 Mb ---- -> Peak demand: 24.86 Mb -> Current cache: 32.77 Mb -356c455 -< V1000 Z 3 1 ---- -> V1000 Z 1 1 -358c457 -< Free table slots: 496 ---- -> Free table slots: 492 -361,362c460,461 -< Peak demand: 24.86 Mb -< Current cache: 8.77 Mb ---- -> Peak demand: 8.67 Mb -> Current cache: 24.77 Mb -377c476 -< V1000 Y 22 1 ---- -> V1000 Y 8 1 -379c478 -< Free table slots: 496 ---- -> Free table slots: 492 -382,383c481,482 -< Peak demand: 7.68 Mb -< Current cache: 4.35 Mb ---- -> Peak demand: 3.04 Mb -> Current cache: 6.89 Mb -402a502 -> V1000 Z 3 100 -404c504 -< Free table slots: 496 ---- -> Free table slots: 488 -407,408c507,508 -< Peak demand: 715.52 Kb -< Current cache: 711.68 Kb ---- -> Peak demand: 470.72 Kb -> Current cache: 716.48 Kb -430c530 -< V T AVE 1 1 ---- -> V Y AVE 16 1 -432c532 -< Free table slots: 498 ---- -> Free table slots: 478 -435,436c535,536 -< Peak demand: 24 Mb -< Current cache: 24 Mb ---- -> Peak demand: 9.54 Mb -> Current cache: 22.85 Mb -453c553 -< A Y AVE 47 1 ---- -> A Y AVE 4 1 -455c555 -< Free table slots: 491 ---- -> Free table slots: 431 -458,459c558,559 -< Peak demand: 15.52 Mb -< Current cache: 23.07 Mb ---- -> Peak demand: 8.64 Mb -> Current cache: 23.87 Mb -472c572 -< D Y AVE 47 1 ---- -> D Y AVE 4 1 -474c574 -< Free table slots: 489 ---- -> Free table slots: 442 -477,478c577,578 -< Peak demand: 19.28 Mb -< Current cache: 22.72 Mb ---- -> Peak demand: 8.96 Mb -> Current cache: 23.94 Mb -510,513c610,613 -< A T AVE 1 1 -< B Y AVE 71 1 -< C Y AVE 47 1 -< D Y AVE 23 1 ---- -> A Y AVE 33 1 -> B Y AVE 23 1 -> C Y AVE 14 1 -> D Y AVE 4 1 -515c615 -< Free table slots: 487 ---- -> Free table slots: 439 -518,519c618,619 -< Peak demand: 22.76 Mb -< Current cache: 23.83 Mb ---- -> Peak demand: 16.48 Mb -> Current cache: 23.97 Mb -534,535c634,635 -< A Y AVE 47 1 -< B Y AVE 23 1 ---- -> A Y AVE 4 1 -> B Y AVE 9 1 -537c637 -< Free table slots: 491 ---- -> Free table slots: 481 -540,541c640,641 -< Peak demand: 19.68 Mb -< Current cache: 22.35 Mb ---- -> Peak demand: 17.44 Mb -> Current cache: 23.38 Mb -547d646 -< ! excercise under the default memory management - - -! deliberate error -SET MODE IGNORE -SET MODE FRUGAL:95 -SET MODE/LAST IGNORE - -SET MEMORY/SIZE=($saved_memory_size) - !-> SET MEMORY/SIZE=31.25 - -GO bn_reset bn_stat_precision -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_stat_precision -GO bn_stat_precision -! bn_stat_precision.jnl -! 3/2017 *acm* Ticket 2512 - -! The stat command self-adjusts precision to make the -! min and max listed distinct - -let var = {1907.1,1907.05,1907.11} -stat/br var - - Total # of data points: 3 (3*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 1907.05 - Maximum value: 1907.11 - Mean value: 1907.08667 (unweighted average) - -let var = {1907.001,1907.0005,1907.0011} -stat/br var - - Total # of data points: 3 (3*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 1907.0005 - Maximum value: 1907.0011 - Mean value: 1907.00087 (unweighted average) - -let var = {221907.001,221907.0005,221907.0011} -stat/br var - - Total # of data points: 3 (3*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 221907.0005 - Maximum value: 221907.0011 - Mean value: 221907.0008666667 (unweighted average) - - -! STAT/PREC controls the precision, writing more or less digits - -stat/br/prec=5 var - - Total # of data points: 3 (3*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 2.2191E+05 - Maximum value: 2.2191E+05 - Mean value: 2.2191E+05 (unweighted average) -stat/br/prec=12 var - - Total # of data points: 3 (3*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 221907.0005 - Maximum value: 221907.0011 - Mean value: 221907.000867 (unweighted average) - -! some more examples -let var = 30*randu(1+i[i=1:10]) -stat/br var - - Total # of data points: 10 (10*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 2.7871 - Maximum value: 27.002 - Mean value: 15.77 (unweighted average) -stat/br/prec=3 var - - Total # of data points: 10 (10*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 2.79 - Maximum value: 27 - Mean value: 15.8 (unweighted average) -stat/br/prec=7 var - - Total # of data points: 10 (10*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 2.787087 - Maximum value: 27.00225 - Mean value: 15.76991 (unweighted average) -stat/br/prec=12 var - - Total # of data points: 10 (10*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 2.78708674143 - Maximum value: 27.002246751 - Mean value: 15.76991222 (unweighted average) - -GO bn_reset bn_plot_vs_with_time -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_plot_vs_with_time -GO bn_plot_vs_with_time -! bn_plot_vs_with_time.jnl -! See ticket 2246 -! 3/27/2017 *ACM* - -! PLOT/VS plots automatically draw a formatted time axis -! when one of the variables has calendar units and time origin - -! (Currently allow just one axis to be time formatted) - -can mode logo - -! Date units syntax days since 1982-01-01 is valid - -define axis/t=1:500:10/units=days/t0="01-jan-1982" tax -let/units="days since 1982-01-01" mytime2 = t[gt=tax] - -let myvar2 = RANDU(mytime2) -plot/vs/line mytime2, myvar2 -plot/vs/over/sym/color=red mytime2[L=1:50:2], myvar2[L=1:50:2] - -! time axis on the vertical - -! Date syntax days since 01-jan-1982 is also valid. -define axis/t=1:500:10/units=days/t0="01-jan-1982" tax -let/units="days since 01-jan-1982" mytime2 = t[gt=tax] - -plot/vs/line myvar2, mytime2 -plot/vs/over/sym/color=red/line myvar2[L=1:50:2], mytime2[L=1:50:2] - -! LAS style plots: -! Dataset with pressure,temperature on ZT grid. Define a time variable -! send it to PLOT/VS to draw plots with time-formatted axis, plain -! 2-variable plots and plot/vs plots. -! Define variables as if gridded T-Z data in spurs dataset - -define axis/t="25-JAN-2017:23:00":"02-FEB-2017 10:00":12/units=hours/t0=1-jan-2017 time -define axis/z=1:50:4/units=m/depth zaxis -let/title=pressure/units=m pres=z[gz=zaxis] + 0.3*randu(t[gt=time]) -let/title=temperature/units="Deg C" temp = 20 - z[gz=zaxis] + 10*randu(t[gt=time]) - -! Define a time variable -let/units="`pres,return=tunits` since `pres,return=t0`" ttvar = t[gt=temp] + 0*temp - !-> DEFINE VARIABLE/units="HOURS since 1-JAN-2017" ttvar = t[gt=temp] + 0*temp - -! time on horizontal axis -set v ul; plot/vs/ribbon/sym=17/thick/vlim=50:0 ttvar, pres, temp - -! time on vertical axis -set v ur; plot/vs/ribbon/sym=17/thick/hlim=50:0 pres, ttvar, temp - -! More time axis styles - -define axis/t=1-jan-2016:1-jan-2017:45/units=days/t0=1-jan-1970 time -let/title=pressure/units=m pres=z[gz=zaxis] + 0.3*randu(t[gt=time]) -let/title=temperature/units="Deg C" temp = 20 - z[gz=zaxis] + 10*randu(t[gt=time]) -let/units="`pres,return=tunits` since `pres,return=t0`" ttvar = t[gt=temp] + 0*temp - !-> DEFINE VARIABLE/units="DAYS since 1-JAN-1970" ttvar = t[gt=temp] + 0*temp - -set v ll; plot/vs/ribbon/sym=17/thick/vlim=50:0 ttvar, pres, temp - -define axis/t=1-jan-2001:1-jan-2012:181/units=days/t0=1-jan-1970 time -let/title=pressure/units=m pres=z[gz=zaxis] + 0.3*randu(t[gt=time]) -let/title=temperature/units="Deg C" temp = 20 - z[gz=zaxis] + 10*randu(t[gt=time]) -let/units="`pres,return=tunits` since `pres,return=t0`" ttvar = t[gt=temp] + 0*temp - !-> DEFINE VARIABLE/units="DAYS since 1-JAN-1970" ttvar = t[gt=temp] + 0*temp - -set v lr; plot/vs/ribbon/sym=17/thick/vlim=50:0 ttvar, pres, temp - - -set mode/last logo - -GO bn_reset bn_dot_product -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dot_product -GO bn_dot_product -! bn_dot_product.jnl -! 3/2017 *acm* dot product function for matrix multiply operation - - -sh func dot* -DOT(VAR1,VAR2,IDIM) - Compute the inner product of two variables along given dimension - VAR1: Variable 1 - VAR2: Variable 2 - IDIM: Dimension (e.g.1,2,...) -DOT_E(VAR1,VAR2) - Compute the inner product of two variables along E-axis - VAR1: Variable 1 - VAR2: Variable 2 -DOT_F(VAR1,VAR2) - Compute the inner product of two variables along F-axis - VAR1: Variable 1 - VAR2: Variable 2 -DOT_T(VAR1,VAR2) - Compute the inner product of two variables along T-axis - VAR1: Variable 1 - VAR2: Variable 2 -DOT_X(VAR1,VAR2) - Compute the inner product of two variables along X-axis - VAR1: Variable 1 - VAR2: Variable 2 -DOT_Y(VAR1,VAR2) - Compute the inner product of two variables along Y-axis - VAR1: Variable 1 - VAR2: Variable 2 -DOT_Z(VAR1,VAR2) - Compute the inner product of two variables along Z-axis - VAR1: Variable 1 - VAR2: Variable 2 - -! A call to dot(var1, var2, dir) translates into call to -! function dot_q(var1,var2) where q is the pax direction -! corresponding to dir=1,2,...,6 - -set list/pre=7 - -define axis/x=1:5:1 xpax -define axis/y=0.1:0.3:0.1 ypax -define axis/z=0.01:0.04:0.01 zpax -define axis/e=-3:-1:1 epax -define axis/f=-0.4:-0.1:0.1 fpax - -let var1 = x[gx=xpax] -let var2 = 1+0*x[gx=xpax] -list var1, var2 - X: 0.5 to 5.5 - Column 1: VAR1 is X[GX=XPAX] - Column 2: VAR2 is 1+0*X[GX=XPAX] - VAR1 VAR2 -1 / 1: 1.000000 1.000000 -2 / 2: 2.000000 1.000000 -3 / 3: 3.000000 1.000000 -4 / 4: 4.000000 1.000000 -5 / 5: 5.000000 1.000000 -list dot(var1, var2, 1) - VARIABLE : DOT(VAR1, VAR2, 1) - 15.00000 -!can var/all - -let var1 = x[gx=xpax] -let var2 = 1+0*x[gx=xpax] -list dot_x(var1, var2) - VARIABLE : DOT_X(VAR1, VAR2) - 15.00000 - -let var1 = y[gy=ypax] -let var2 = 1+0*y[gy=ypax] -list var1, var2 - Y: 0.05 to 0.35 - Column 1: VAR1 is Y[GY=YPAX] - Column 2: VAR2 is 1+0*Y[GY=YPAX] - VAR1 VAR2 -0.1 / 1: 0.1000000 1.000000 -0.2 / 2: 0.2000000 1.000000 -0.3 / 3: 0.3000000 1.000000 -list dot(var1, var2, 2) - VARIABLE : DOT(VAR1, VAR2, 2) - 0.6000000 - -let var1 = z[gz=zpax] -let var2 = 1+0*z[gz=zpax] -list var1, var2 - Z: 0.005 to 0.045 - Column 1: VAR1 is Z[GZ=ZPAX] - Column 2: VAR2 is 1+0*Z[GZ=ZPAX] - VAR1 VAR2 -0.01 / 1: 0.01000000 1.000000 -0.02 / 2: 0.02000000 1.000000 -0.03 / 3: 0.03000000 1.000000 -0.04 / 4: 0.04000000 1.000000 -list dot(var1, var2, 3) - VARIABLE : DOT(VAR1, VAR2, 3) - 0.10000000 - -let var1 = L[gt=month_reg] -let var2 = 1+0*L[gt=month_reg] -list var1, var2 - TIME: 01-JAN 00:45 to 31-DEC 06:34 - Column 1: VAR1 is L[GT=MONTH_REG] - Column 2: VAR2 is 1+0*L[GT=MONTH_REG] - VAR1 VAR2 -16-JAN / 1: 1.00000 1.000000 -15-FEB / 2: 2.00000 1.000000 -17-MAR / 3: 3.00000 1.000000 -16-APR / 4: 4.00000 1.000000 -16-MAY / 5: 5.00000 1.000000 -16-JUN / 6: 6.00000 1.000000 -16-JUL / 7: 7.00000 1.000000 -16-AUG / 8: 8.00000 1.000000 -15-SEP / 9: 9.00000 1.000000 -16-OCT / 10: 10.00000 1.000000 -15-NOV / 11: 11.00000 1.000000 -16-DEC / 12: 12.00000 1.000000 -list dot(var1, var2, 4) - VARIABLE : DOT(VAR1, VAR2, 4) - 78.00000 - -let var1 = _e[ge=epax] -let var2 = 1+0*_e[ge=epax] -list var1, var2 - E: -3.5 to -0.5 - Column 1: VAR1 is _E[GE=EPAX] - Column 2: VAR2 is 1+0*_E[GE=EPAX] - VAR1 VAR2 --3 / 1: -3.000000 1.000000 --2 / 2: -2.000000 1.000000 --1 / 3: -1.000000 1.000000 -list dot(var1, var2, 5) - VARIABLE : DOT(VAR1, VAR2, 5) - -6.000000 - -let var1 = _f[gf=fpax] -let var2 = 1+0*_f[gf=fpax] -list var1, var2 - F: -0.45 to -0.05 - Column 1: VAR1 is _F[GF=FPAX] - Column 2: VAR2 is 1+0*_F[GF=FPAX] - VAR1 VAR2 --0.4 / 1: -0.4000000 1.000000 --0.3 / 2: -0.3000000 1.000000 --0.2 / 3: -0.2000000 1.000000 --0.1 / 4: -0.1000000 1.000000 -list dot(var1, var2, 6) - VARIABLE : DOT(VAR1, VAR2, 6) - -1.000000 - -let axy = x[gx=xpax] + y[gy=ypax] -let bxz = 0*x[gx=xpax]+ 10*Z[GZ=Zpax] -list axy, bxz - X: 0.5 to 5.5 - Y: 0.05 to 0.35 - Z: 0.005 to 0.045 - Column 1: AXY is X[GX=XPAX] + Y[GY=YPAX] - Column 2: BXZ is 0*X[GX=XPAX]+ 10*Z[GZ=ZPAX] - AXY BXZ - ---- K:1 Z: 0.01 - ---- J:1 Y: 0.1 -1 / 1: 1.100000 0.1000000 -2 / 2: 2.100000 0.1000000 -3 / 3: 3.100000 0.1000000 -4 / 4: 4.100000 0.1000000 -5 / 5: 5.100000 0.1000000 - ---- J:2 Y: 0.2 -1 / 1: 1.200000 0.1000000 -2 / 2: 2.200000 0.1000000 -3 / 3: 3.200000 0.1000000 -4 / 4: 4.200000 0.1000000 -5 / 5: 5.200000 0.1000000 - ---- J:3 Y: 0.3 -1 / 1: 1.300000 0.1000000 -2 / 2: 2.300000 0.1000000 -3 / 3: 3.300000 0.1000000 -4 / 4: 4.300000 0.1000000 -5 / 5: 5.300000 0.1000000 - ---- K:2 Z: 0.02 - ---- J:1 Y: 0.1 -1 / 1: 1.100000 0.2000000 -2 / 2: 2.100000 0.2000000 -3 / 3: 3.100000 0.2000000 -4 / 4: 4.100000 0.2000000 -5 / 5: 5.100000 0.2000000 - ---- J:2 Y: 0.2 -1 / 1: 1.200000 0.2000000 -2 / 2: 2.200000 0.2000000 -3 / 3: 3.200000 0.2000000 -4 / 4: 4.200000 0.2000000 -5 / 5: 5.200000 0.2000000 - ---- J:3 Y: 0.3 -1 / 1: 1.300000 0.2000000 -2 / 2: 2.300000 0.2000000 -3 / 3: 3.300000 0.2000000 -4 / 4: 4.300000 0.2000000 -5 / 5: 5.300000 0.2000000 - ---- K:3 Z: 0.03 - ---- J:1 Y: 0.1 -1 / 1: 1.100000 0.3000000 -2 / 2: 2.100000 0.3000000 -3 / 3: 3.100000 0.3000000 -4 / 4: 4.100000 0.3000000 -5 / 5: 5.100000 0.3000000 - ---- J:2 Y: 0.2 -1 / 1: 1.200000 0.3000000 -2 / 2: 2.200000 0.3000000 -3 / 3: 3.200000 0.3000000 -4 / 4: 4.200000 0.3000000 -5 / 5: 5.200000 0.3000000 - ---- J:3 Y: 0.3 -1 / 1: 1.300000 0.3000000 -2 / 2: 2.300000 0.3000000 -3 / 3: 3.300000 0.3000000 -4 / 4: 4.300000 0.3000000 -5 / 5: 5.300000 0.3000000 - ---- K:4 Z: 0.04 - ---- J:1 Y: 0.1 -1 / 1: 1.100000 0.4000000 -2 / 2: 2.100000 0.4000000 -3 / 3: 3.100000 0.4000000 -4 / 4: 4.100000 0.4000000 -5 / 5: 5.100000 0.4000000 - ---- J:2 Y: 0.2 -1 / 1: 1.200000 0.4000000 -2 / 2: 2.200000 0.4000000 -3 / 3: 3.200000 0.4000000 -4 / 4: 4.200000 0.4000000 -5 / 5: 5.200000 0.4000000 - ---- J:3 Y: 0.3 -1 / 1: 1.300000 0.4000000 -2 / 2: 2.300000 0.4000000 -3 / 3: 3.300000 0.4000000 -4 / 4: 4.300000 0.4000000 -5 / 5: 5.300000 0.4000000 -list dot(axy, bxz, 1) - VARIABLE : DOT(AXY, BXZ, 1) - SUBSET : 3 by 4 points (Y-Z) - 0.1 0.2 0.3 - 1 2 3 - 0.01 / 1: 1.550000 1.600000 1.650000 - 0.02 / 2: 3.100000 3.200000 3.300000 - 0.03 / 3: 4.650000 4.800000 4.950000 - 0.04 / 4: 6.200000 6.400000 6.600000 - -let byz = y[gy=ypax]+ 10*Z[GZ=Zpax] -list dot(axy, byz, 2) - VARIABLE : DOT(AXY, BYZ, 2) - SUBSET : 5 by 4 points (X-Z) - 1 2 3 4 5 - 1 2 3 4 5 - 0.01 / 1: 1.100000 2.000000 2.900000 3.800000 4.700000 - 0.02 / 2: 1.460000 2.660000 3.860000 5.060000 6.260000 - 0.03 / 3: 1.820000 3.320000 4.820000 6.320000 7.820000 - 0.04 / 4: 2.180000 3.980000 5.780000 7.580000 9.380000 - -let lvar = L[gt=month_reg] - 1 -let axyt = axy + lvar -let multi_dot = dot(axyt, byz, 2) -save/file=a.nc/clobber multi_dot - -can var multi_dot -use a.nc -! This should be the same as dot(axy, byz, 2) -list/l=1 multi_dot - VARIABLE : DOT(AXYT, BYZ, 2) - FILENAME : a.nc - SUBSET : 5 by 4 points (X-Z) - TIME : 16-JAN 06:00 - 1 2 3 4 5 - 1 2 3 4 5 - 0.01 / 1: 1.100000 2.000000 2.900000 3.800000 4.700000 - 0.02 / 2: 1.460000 2.660000 3.860000 5.060000 6.260000 - 0.03 / 3: 1.820000 3.320000 4.820000 6.320000 7.820000 - 0.04 / 4: 2.180000 3.980000 5.780000 7.580000 9.380000 - -! z and t - - -let axz = x[gx=xpax] + z[gz=zpax] -let bzt = 0*z[gz=zpax]+ 10*L[gt=month_reg] -list dot(axz, bzt, 3) - VARIABLE : DOT(AXZ, BZT, 3) - SUBSET : 5 by 12 points (X-TIME) - 1 2 3 4 5 - 1 2 3 4 5 - 16-JAN / 1: 41.000 81.000 121.000 161.000 201.000 - 15-FEB / 2: 82.000 162.000 242.000 322.000 402.000 - 17-MAR / 3: 123.000 243.000 363.000 483.000 603.000 - 16-APR / 4: 164.000 324.000 484.000 644.000 804.000 - 16-MAY / 5: 205.000 405.000 605.000 805.000 1005.000 - 16-JUN / 6: 246.000 486.000 726.000 966.000 1206.000 - 16-JUL / 7: 287.000 567.000 847.000 1127.000 1407.000 - 16-AUG / 8: 328.000 648.000 968.000 1288.000 1608.000 - 15-SEP / 9: 369.000 729.000 1089.000 1449.000 1809.000 - 16-OCT / 10: 410.000 810.000 1210.000 1610.000 2010.000 - 15-NOV / 11: 451.000 891.000 1331.000 1771.000 2211.000 - 16-DEC / 12: 492.000 972.000 1452.000 1932.000 2412.000 - -let ayt = y[gy=ypax]+ 10*L[gt=month_reg] -list dot(ayt, bzt, 4) - VARIABLE : DOT(AYT, BZT, 4) - SUBSET : 3 by 4 points (Y-Z) - 0.1 0.2 0.3 - 1 2 3 - 0.01 / 1: 65078.00 65156.00 65234.00 - 0.02 / 2: 65078.00 65156.00 65234.00 - 0.03 / 3: 65078.00 65156.00 65234.00 - 0.04 / 4: 65078.00 65156.00 65234.00 - - -let xvar = x[gx=xpax] - 1 -let axyt = ayt + xvar -let multi_dot = dot(axyt, bzt, 4) -save/file=a.nc/clobber multi_dot - -can var multi_dot -use a.nc -! This should be the same as dot(ayt, bzt, 4) -list/i=1 multi_dot - VARIABLE : DOT(AXYT, BYZ, 2) - FILENAME : a.nc - SUBSET : 4 by 12 points (Z-TIME) - X : 1 - 0.01 0.02 0.03 0.04 - 1 2 3 4 - 16-JAN / 1: 1.10000 1.46000 1.82000 2.18000 - 15-FEB / 2: 2.00000 2.66000 3.32000 3.98000 - 17-MAR / 3: 2.90000 3.86000 4.82000 5.78000 - 16-APR / 4: 3.80000 5.06000 6.32000 7.58000 - 16-MAY / 5: 4.70000 6.26000 7.82000 9.38000 - 16-JUN / 6: 5.60000 7.46000 9.32000 11.18000 - 16-JUL / 7: 6.50000 8.66000 10.82000 12.98000 - 16-AUG / 8: 7.40000 9.86000 12.32000 14.78000 - 15-SEP / 9: 8.30000 11.06000 13.82000 16.58000 - 16-OCT / 10: 9.20000 12.26000 15.32000 18.38000 - 15-NOV / 11: 10.10000 13.46000 16.82000 20.18000 - 16-DEC / 12: 11.00000 14.66000 18.32000 21.98000 - -can dat/all - -! e and f - -let ayf = _f[gf=fpax] + y[gy=ypax] -let bfe = 0*_f[gf=fpax]+ 10*_e[ge=epax] -list dot(ayf, bfe, 6) - VARIABLE : DOT(AYF, BFE, 6) - SUBSET : 3 by 3 points (Y-E) - 0.1 0.2 0.3 - 1 2 3 - -3 / 1: 18.00000 6.00000 -6.00000 - -2 / 2: 12.00000 4.00000 -4.00000 - -1 / 3: 6.00000 2.00000 -2.00000 - -let aze = z[gz=zpax]+ 10*_e[ge=epax] -list dot(aze, bfe, 5) - VARIABLE : DOT(AZE, BFE, 5) - SUBSET : 4 by 4 points (Z-F) - 0.01 0.02 0.03 0.04 - 1 2 3 4 - -0.4 / 1: 1399.400 1398.800 1398.200 1397.600 - -0.3 / 2: 1399.400 1398.800 1398.200 1397.600 - -0.2 / 3: 1399.400 1398.800 1398.200 1397.600 - -0.1 / 4: 1399.400 1398.800 1398.200 1397.600 - -let xvar = x[gx=xpax] - 1 -let azex = aze + xvar -let multi_dot = dot(azex, bfe, 5) -save/file=a.nc/clobber multi_dot - -can var multi_dot -use a.nc -! This should be the same as dot(azex, bfe, 5) -list/i=1 multi_dot - VARIABLE : DOT(AZEX, BFE, 5) - FILENAME : a.nc - SUBSET : 4 by 4 points (Z-F) - X : 1 - 0.01 0.02 0.03 0.04 - 1 2 3 4 - -0.4 / 1: 1399.400 1398.800 1398.200 1397.600 - -0.3 / 2: 1399.400 1398.800 1398.200 1397.600 - -0.2 / 3: 1399.400 1398.800 1398.200 1397.600 - -0.1 / 4: 1399.400 1398.800 1398.200 1397.600 - -cancel list/precision - -GO bn_reset bn_cache_management -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cache_management -GO bn_cache_management -! bn_cache_management.jnl - - ! 1/2017 - try to force Ferret into a complex juggling of dependencies -! and cache maintenance in order to reproduce the problem seen in trac -! ticket #2485 (from Ned Cokelet) -! *acm*7/2017 0=success for SPAWN_STATUS -! *acm* 6/2019 Change to SET MEM in Mb - -! Ferret's cache of memory-resident results is full when it holds 500 of them. -! At that point it must delete cached results to make room for new variables. -! It is supposed to chose the cached result that has not been used for the -! longest time, AND that is not being "protected" because it is needed in a -! pending calculation. This script is intended to exercise that behavior. - -! Memory footprint needed: -! Each dataset contains 7 variables of 1 Mword each -! VTREE reveals that the "result" variable requires 78 intermediate variables -! of size 1Mword (plus 7 small ones) -! Of these only 12 variables needed in the top level "result" sum calculation -! Each of the top level variables in turn requires ?25? component variables -! But the top level variables need these components only in sequence. -! So if no split-gather is performed, Ferret requires ~12+25=37 Mwords - -DEFINE SYMBOL saved_memory_size = ($FERRET_BYTES_MEM) - !-> DEFINE SYMBOL saved_memory_size = 250Mb - -SET MEMORY/SIZE=160M -CANCEL MEMORY/ALL - -DEFINE SYMBOL nsets = 20 - -define axis/x=1:1000000:1 xmillion - -! aside: to demonstrate lmitations of ferret memory management prior to -! dynamic memory, use -! yes? set memory/size=37 -! yes? GO test_auto_cache_delete 0 20 - -! see if the test files already exist -SPAWN "mkdir -p tmp" ! tmp directory to store files -SPAWN ls tmp/test_auto_cache_($nsets).nc - !-> SPAWN ls tmp/test_auto_cache_20.nc -IF ($SPAWN_OK) THEN - !-> IF 0 THEN -ELSE - say creating test files -creating test files - cancel mode verify -ENDIF - -! open the many input datasets -REPEAT/k=1:($nsets) USE tmp/test_auto_cache_`k`.nc - !-> REPEAT/k=1:20 USE tmp/test_auto_cache_`k`.nc -!-> REPEAT: K=1 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_1.nc -!-> REPEAT: K=2 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_2.nc -!-> REPEAT: K=3 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_3.nc -!-> REPEAT: K=4 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_4.nc -!-> REPEAT: K=5 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_5.nc -!-> REPEAT: K=6 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_6.nc -!-> REPEAT: K=7 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_7.nc -!-> REPEAT: K=8 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_8.nc -!-> REPEAT: K=9 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_9.nc -!-> REPEAT: K=10 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_10.nc -!-> REPEAT: K=11 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_11.nc -!-> REPEAT: K=12 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_12.nc -!-> REPEAT: K=13 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_13.nc -!-> REPEAT: K=14 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_14.nc -!-> REPEAT: K=15 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_15.nc -!-> REPEAT: K=16 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_16.nc -!-> REPEAT: K=17 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_17.nc -!-> REPEAT: K=18 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_18.nc -!-> REPEAT: K=19 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_19.nc -!-> REPEAT: K=20 - !-> SET DAT/FORM=CDF tmp/test_auto_cache_20.nc - -! define a huge tree of variables -let r_one = RESHAPE(one,X[gx=xmillion]) -let r_ten = RESHAPE(ten,X[gx=xmillion]) -let r_hundred = RESHAPE(hundred,X[gx=xmillion]) -let r_thousand = RESHAPE(thousand,X[gx=xmillion]) -let r_tenthou = RESHAPE(tenthou,X[gx=xmillion]) -let r_hundthou = RESHAPE(hundthou,X[gx=xmillion]) -let r_million = RESHAPE(million,X[gx=xmillion]) - -let a_one = r_one[X=@ave] -let a_ten = r_ten[X=@ave] -let a_hundred = r_hundred[X=@ave] -let a_thousand= r_thousand[X=@ave] -let a_tenthou = r_tenthou[X=@ave] -let a_hundthou= r_hundthou[X=@ave] -let a_million = r_million[X=@ave] - -let one_2 = a_one -let ten_2 = a_ten -let hundred_2 = a_hundred -let thousand_2 = a_thousand -let tenthou_2 = a_tenthou -let hundthou_2 = a_hundthou -let million_2 = a_million - -let one_3 = a_one -let ten_3 = a_ten -let hundred_3 = a_hundred -let thousand_3 = a_thousand -let tenthou_3 = a_tenthou -let hundthou_3 = a_hundthou -let million_3 = a_million - -let result_31 = \ -one_3 + ten_3 + hundred_3 + thousand_3 + tenthou_3 + hundthou_3 + million_3 - -let result_21 = \ -one_2 + ten_2 + hundred_2 + thousand_2 + tenthou_2 + hundthou_2 + million_2 - -let result_32 = \ -one_3 + ten_3 + hundred_3 + thousand_3 + tenthou_3 + hundthou_3 + million_3 - -let result_22 = \ -one_2 + ten_2 + hundred_2 + thousand_2 + tenthou_2 + hundthou_2 + million_2 - -let result = result_31 + result_21 + result_32 + result_22 + \ -a_one + a_ten + a_hundred + a_thousand + a_tenthou + a_hundthou + a_million - -! process all of the datasets in turn -! ==> WATCH HOW THE NUMBER OF FREE SLOTS IS PROGRESSIVELY EXHAUSTED -! This proves that we are exercising the limits of table space -sp rm -f test_auto_cache.out -REPEAT/k=1:($nsets) \ -(list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_`k`.nc];\ -SHOW MEMORY/DIAG) - !-> REPEAT/k=1:20 (list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_`k`.nc];SHOW MEMORY/DIAG) -!-> REPEAT: K=1 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_1.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 376 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 115.92 Mb -!-> REPEAT: K=2 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_2.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 273 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 63.84 Mb -!-> REPEAT: K=3 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_3.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 163 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 67.76 Mb -!-> REPEAT: K=4 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_4.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 53 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 71.68 Mb -!-> REPEAT: K=5 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_5.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=6 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_6.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=7 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_7.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=8 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_8.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=9 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_9.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=10 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_10.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=11 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_11.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=12 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_12.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=13 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_13.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=14 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_14.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=15 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_15.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=16 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_16.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=17 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_17.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=18 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_18.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=19 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_19.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb -!-> REPEAT: K=20 - !-> list/nohead/file=test_auto_cache.out/append result[d=test_auto_cache_20.nc] - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 1 - Un-cached variables: 0 - SET MEMORY/SIZE: 160 Mb (20 megawords) - Peak demand: 64.16 Mb - Current cache: 73.36 Mb - -! success -vtree result - in default dataset test_auto_cache_20 - RESULT = RESULT_31 + RESULT_21 + RESULT_32 + RESULT_22 + A_ONE + A_TEN + A_HUNDRED + A_THOUSAND + A_TENTHOU + A_HUNDTHOU + A_MILLION - RESULT_31 = ONE_3 + TEN_3 + HUNDRED_3 + THOUSAND_3 + TENTHOU_3 + HUNDTHOU_3 + MILLION_3 - ONE_3 = A_ONE - A_ONE = R_ONE[X=@AVE] - R_ONE = RESHAPE(ONE,X[GX=XMILLION]) - (C001,V002) = RESHAPE(ONE,X[GX=XMILLION]) - (C013,V002) = X[GX=XMILLION] - TEN_3 = A_TEN - A_TEN = R_TEN[X=@AVE] - R_TEN = RESHAPE(TEN,X[GX=XMILLION]) - (C001,V005) = RESHAPE(TEN,X[GX=XMILLION]) - (C013,V005) = X[GX=XMILLION] - HUNDRED_3 = A_HUNDRED - A_HUNDRED = R_HUNDRED[X=@AVE] - R_HUNDRED = RESHAPE(HUNDRED,X[GX=XMILLION]) - (C001,V008) = RESHAPE(HUNDRED,X[GX=XMILLION]) - (C017,V008) = X[GX=XMILLION] - THOUSAND_3 = A_THOUSAND - A_THOUSAND = R_THOUSAND[X=@AVE] - R_THOUSAND = RESHAPE(THOUSAND,X[GX=XMILLION]) - (C001,V011) = RESHAPE(THOUSAND,X[GX=XMILLION]) - (C018,V011) = X[GX=XMILLION] - TENTHOU_3 = A_TENTHOU - A_TENTHOU = R_TENTHOU[X=@AVE] - R_TENTHOU = RESHAPE(TENTHOU,X[GX=XMILLION]) - (C001,V014) = RESHAPE(TENTHOU,X[GX=XMILLION]) - (C017,V014) = X[GX=XMILLION] - HUNDTHOU_3 = A_HUNDTHOU - A_HUNDTHOU = R_HUNDTHOU[X=@AVE] - R_HUNDTHOU = RESHAPE(HUNDTHOU,X[GX=XMILLION]) - (C001,V017) = RESHAPE(HUNDTHOU,X[GX=XMILLION]) - (C018,V017) = X[GX=XMILLION] - MILLION_3 = A_MILLION - A_MILLION = R_MILLION[X=@AVE] - R_MILLION = RESHAPE(MILLION,X[GX=XMILLION]) - (C001,V020) = RESHAPE(MILLION,X[GX=XMILLION]) - (C017,V020) = X[GX=XMILLION] - RESULT_21 = ONE_2 + TEN_2 + HUNDRED_2 + THOUSAND_2 + TENTHOU_2 + HUNDTHOU_2 + MILLION_2 - ONE_2 = A_ONE - A_ONE = (defined above) - TEN_2 = A_TEN - A_TEN = (defined above) - HUNDRED_2 = A_HUNDRED - A_HUNDRED = (defined above) - THOUSAND_2 = A_THOUSAND - A_THOUSAND = (defined above) - TENTHOU_2 = A_TENTHOU - A_TENTHOU = (defined above) - HUNDTHOU_2 = A_HUNDTHOU - A_HUNDTHOU = (defined above) - MILLION_2 = A_MILLION - A_MILLION = (defined above) - RESULT_32 = ONE_3 + TEN_3 + HUNDRED_3 + THOUSAND_3 + TENTHOU_3 + HUNDTHOU_3 + MILLION_3 - ONE_3 = (defined above) - TEN_3 = (defined above) - HUNDRED_3 = (defined above) - THOUSAND_3 = (defined above) - TENTHOU_3 = (defined above) - HUNDTHOU_3 = (defined above) - MILLION_3 = (defined above) - RESULT_22 = ONE_2 + TEN_2 + HUNDRED_2 + THOUSAND_2 + TENTHOU_2 + HUNDTHOU_2 + MILLION_2 - ONE_2 = (defined above) - TEN_2 = (defined above) - HUNDRED_2 = (defined above) - THOUSAND_2 = (defined above) - TENTHOU_2 = (defined above) - HUNDTHOU_2 = (defined above) - MILLION_2 = (defined above) - A_ONE = (defined above) - A_TEN = (defined above) - A_HUNDRED = (defined above) - A_THOUSAND = (defined above) - A_TENTHOU = (defined above) - A_HUNDTHOU = (defined above) - A_MILLION = (defined above) -! show that the calculation result never varied -spawn cat test_auto_cache.out - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - 5555555. - -! clean up -SET MEMORY/SIZE=($saved_memory_size) - !-> SET MEMORY/SIZE=250Mb - -GO bn_reset bn_transp_choose -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_transp_choose -GO bn_transp_choose -! bn_transp_choose.jnl -! Test the TRANSPOSE function which chooses which of the -! transpose_ functions to run based on arguments - -can mem -sh func transpose -TRANSPOSE(VAR,DIM1,DIM2) - Compute the transpose along two given dimensions - VAR: Variable to transpose - DIM1: Dimension 1 for transpose (1,2,...) - DIM2: Dimension 2 for transpose (1,2,...) - -use gt4d011 - -list/K=1/l=1 u[i=91:100,j=35:45] - VARIABLE : ZONAL VELOCITY (cm/sec) - FILENAME : gt4d011.cdf - SUBSET : 10 by 11 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 17-AUG-1982 12:00 - 139W 138W 137W 136W 135W 134W 133W 132W 131W 130W - 91 92 93 94 95 96 97 98 99 100 - 0 / 45: -8.20 -19.89 -28.29 -25.75 -16.70 -11.70 -11.69 -13.85 -17.12 -21.07 - 0.33S / 44: 1.59 -6.13 -13.69 -15.25 -11.03 -7.87 -7.10 -7.63 -9.21 -12.26 - 0.67S / 43: 5.32 1.48 -3.07 -5.89 -5.82 -5.23 -4.74 -4.33 -4.43 -6.13 - 1S / 42: 4.21 2.98 1.52 -0.92 -2.98 -3.76 -3.56 -2.80 -2.14 -2.69 - 1.33S / 41: 0.84 0.81 1.58 0.30 -2.14 -2.93 -2.57 -1.80 -1.01 -0.84 - 1.67S / 40: -2.97 -2.36 -0.43 -0.56 -2.17 -2.25 -1.77 -1.32 -0.77 -0.35 - 2S / 39: -5.92 -4.46 -2.65 -1.48 -1.97 -1.38 -1.01 -1.15 -1.17 -1.00 - 2.33S / 38: -7.43 -5.01 -2.65 -0.75 -0.32 0.16 0.24 -0.26 -0.54 -0.55 - 2.67S / 37: -7.90 -5.72 -2.76 -0.71 0.17 0.87 0.49 -0.46 -1.02 -1.12 - 3S / 36: -7.76 -5.38 -2.21 -0.01 0.83 1.06 0.35 -1.04 -2.12 -2.57 - 3.33S / 35: -6.68 -4.47 -2.20 -0.62 -0.06 -0.21 -1.41 -2.79 -3.67 -4.03 -let var = transpose (u[i=91:100,j=35:41], 1, 2) -list/K=1/l=1 var - VARIABLE : TRANSPOSE (U[I=91:100,J=35:41], 1, 2) - FILENAME : gt4d011.cdf - SUBSET : 7 by 10 points (X-Y) - DEPTH (m): 5 - TIME : 17-AUG-1982 12:00 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: -6.680 -7.762 -7.904 -7.426 -5.923 -2.970 0.842 - 2 / 2: -4.470 -5.381 -5.718 -5.006 -4.457 -2.359 0.813 - 3 / 3: -2.198 -2.209 -2.764 -2.647 -2.652 -0.425 1.580 - 4 / 4: -0.620 -0.005 -0.710 -0.755 -1.478 -0.555 0.299 - 5 / 5: -0.058 0.828 0.170 -0.324 -1.974 -2.169 -2.136 - 6 / 6: -0.214 1.056 0.875 0.164 -1.383 -2.248 -2.932 - 7 / 7: -1.413 0.347 0.486 0.235 -1.009 -1.767 -2.566 - 8 / 8: -2.788 -1.040 -0.455 -0.259 -1.149 -1.316 -1.802 - 9 / 9: -3.674 -2.118 -1.018 -0.536 -1.167 -0.772 -1.006 - 10 / 10: -4.028 -2.566 -1.120 -0.550 -1.001 -0.346 -0.835 - -! same as transpose_xy function -list/k=1/l=1 transpose_xy(u[i=91:100,j=35:41]) - VARIABLE : TRANSPOSE_XY(U[I=91:100,J=35:41]) - FILENAME : gt4d011.cdf - SUBSET : 7 by 10 points (X-Y) - DEPTH (m): 5 - TIME : 17-AUG-1982 12:00 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: -6.680 -7.762 -7.904 -7.426 -5.923 -2.970 0.842 - 2 / 2: -4.470 -5.381 -5.718 -5.006 -4.457 -2.359 0.813 - 3 / 3: -2.198 -2.209 -2.764 -2.647 -2.652 -0.425 1.580 - 4 / 4: -0.620 -0.005 -0.710 -0.755 -1.478 -0.555 0.299 - 5 / 5: -0.058 0.828 0.170 -0.324 -1.974 -2.169 -2.136 - 6 / 6: -0.214 1.056 0.875 0.164 -1.383 -2.248 -2.932 - 7 / 7: -1.413 0.347 0.486 0.235 -1.009 -1.767 -2.566 - 8 / 8: -2.788 -1.040 -0.455 -0.259 -1.149 -1.316 -1.802 - 9 / 9: -3.674 -2.118 -1.018 -0.536 -1.167 -0.772 -1.006 - 10 / 10: -4.028 -2.566 -1.120 -0.550 -1.001 -0.346 -0.835 - -! Combine transpose with other operations -let vari = u - v -list/l=1 vari[i=91:100,j=35:41,k=1:5@ave] - VARIABLE : U - V - FILENAME : gt4d011.cdf - SUBSET : 10 by 7 points (LONGITUDE-LATITUDE) - DEPTH (m): 0 to 50 (averaged) - TIME : 17-AUG-1982 12:00 - 139W 138W 137W 136W 135W 134W 133W 132W 131W 130W - 91 92 93 94 95 96 97 98 99 100 - 1.33S / 41: 31.96 33.88 35.22 32.52 26.48 23.46 23.71 26.69 30.92 34.16 - 1.67S / 40: 25.82 27.64 29.79 29.00 24.90 23.10 23.50 25.89 29.37 32.46 - 2S / 39: 20.82 22.59 24.84 25.83 23.44 22.68 23.09 24.69 27.27 29.79 - 2.33S / 38: 17.62 19.51 22.20 24.22 22.98 22.48 22.74 23.81 25.76 27.66 - 2.67S / 37: 15.96 17.53 20.70 22.98 22.23 22.31 22.43 23.10 24.59 25.95 - 3S / 36: 14.43 16.40 19.31 21.57 20.87 20.95 20.89 21.14 22.19 23.48 - 3.33S / 35: 13.00 14.83 17.21 19.11 18.28 18.32 18.33 18.69 19.60 20.46 -let var = transpose (vari[i=91:100,j=35:41,k=1:5@ave], 1, 2) -list/l=1 var - VARIABLE : TRANSPOSE (VARI[I=91:100,J=35:41,K=1:5@AVE], 1, 2) - FILENAME : gt4d011.cdf - SUBSET : 7 by 10 points (X-Y) - TIME : 17-AUG-1982 12:00 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 13.00 14.43 15.96 17.62 20.82 25.82 31.96 - 2 / 2: 14.83 16.40 17.53 19.51 22.59 27.64 33.88 - 3 / 3: 17.21 19.31 20.70 22.20 24.84 29.79 35.22 - 4 / 4: 19.11 21.57 22.98 24.22 25.83 29.00 32.52 - 5 / 5: 18.28 20.87 22.23 22.98 23.44 24.90 26.48 - 6 / 6: 18.32 20.95 22.31 22.48 22.68 23.10 23.46 - 7 / 7: 18.33 20.89 22.43 22.74 23.09 23.50 23.71 - 8 / 8: 18.69 21.14 23.10 23.81 24.69 25.89 26.69 - 9 / 9: 19.60 22.19 24.59 25.76 27.27 29.37 30.92 - 10 / 10: 20.46 23.48 25.95 27.66 29.79 32.46 34.16 - - -GO bn_reset bn_iin_regrid -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_iin_regrid -GO bn_iin_regrid -! bn_iin_regrid.jnl -! @IIN as a regridding transform See Ticket 2346 -! 5/10/18 changes to tests, regridding to axis w/ different -! box size - -define axis/edge/x=0:10:1 aline -let a = mod(.5+x[gx=aline],2) - -! DEFINE AXIS/LIKE= qualifier -! box_edges function -define axis/x/like=`a,return=xaxis` aline_edges = box_edges(a) - !-> define axis/x/like=aline aline_edges = box_edges(a) - -! @IIN regridding -show axis/x aline_edges - name axis # pts start end - aline_edges X 11 r 0 10 - Axis span (to cell edges) = 11 - - I X XBOX XBOXLO - 1> 0 1 -0.5 - 2> 1 1 0.5 - 3> 2 1 1.5 - 4> 3 1 2.5 - 5> 4 1 3.5 - 6> 5 1 4.5 - 7> 6 1 5.5 - 8> 7 1 6.5 - 9> 8 1 7.5 - 10> 9 1 8.5 - 11> 10 1 9.5 - -let c = a[gx=aline_edges@iin] -list a - VARIABLE : MOD(.5+X[GX=ALINE],2) - SUBSET : 10 points (X) - 0.5 / 1: 1.000 - 1.5 / 2: 0.000 - 2.5 / 3: 1.000 - 3.5 / 4: 0.000 - 4.5 / 5: 1.000 - 5.5 / 6: 0.000 - 6.5 / 7: 1.000 - 7.5 / 8: 0.000 - 8.5 / 9: 1.000 - 9.5 / 10: 0.000 -list c - VARIABLE : A[GX=ALINE_EDGES@IIN] - SUBSET : 11 points (X) - 0 / 1: 0.000 - 1 / 2: 1.000 - 2 / 3: 1.000 - 3 / 4: 2.000 - 4 / 5: 2.000 - 5 / 6: 3.000 - 6 / 7: 3.000 - 7 / 8: 4.000 - 8 / 9: 4.000 - 9 / 10: 5.000 - 10 / 11: 5.000 - -define axis/edge/x=0:10:1 aline -let a = mod(.5+x[gx=aline],2) - -! Different delta - -define axis/x=0.5:10.5:0.5 alinenew -list a[gx=alinenew@iin] - VARIABLE : MOD(.5+X[GX=ALINE],2) - regrid: 0.5 delta on X@IIN - SUBSET : 21 points (X) - 0.5 / 1: 0.250 - 1 / 2: 0.750 - 1.5 / 3: 0.750 - 2 / 4: 0.750 - 2.5 / 5: 1.250 - 3 / 6: 1.750 - 3.5 / 7: 1.750 - 4 / 8: 1.750 - 4.5 / 9: 2.250 - 5 / 10: 2.750 - 5.5 / 11: 2.750 - 6 / 12: 2.750 - 6.5 / 13: 3.250 - 7 / 14: 3.750 - 7.5 / 15: 3.750 - 8 / 16: 3.750 - 8.5 / 17: 4.250 - 9 / 18: 4.750 - 9.5 / 19: 4.750 - 10 / 20: 4.750 - 10.5 / 21: .... - - -! result out of range, returns missing -define axis/x=100:111:1 alinenew -list a[gx=alinenew@iin] - VARIABLE : MOD(.5+X[GX=ALINE],2) - regrid: 1 delta on X@IIN - SUBSET : 12 points (X) - 100 / 1:.... - 101 / 2:.... - 102 / 3:.... - 103 / 4:.... - 104 / 5:.... - 105 / 6:.... - 106 / 7:.... - 107 / 8:.... - 108 / 9:.... - 109 / 10:.... - 110 / 11:.... - 111 / 12:.... - -! partially out of range -define axis/x=2:12:1 alinenew -list a[gx=alinenew@iin] - VARIABLE : MOD(.5+X[GX=ALINE],2) - regrid: 1 delta on X@IIN - SUBSET : 11 points (X) - 2 / 1: 0.000 - 3 / 2: 1.000 - 4 / 3: 1.000 - 5 / 4: 2.000 - 6 / 5: 2.000 - 7 / 6: 3.000 - 8 / 7: 3.000 - 9 / 8: 4.000 - 10 / 9: 4.000 - 11 / 10: .... - 12 / 11: .... - - - -! The axes must have convertible units -! Calendar time axes -define axis/edge/t=0:10:1/units=days/t0=1-jan-1990 taxis -let a = mod(.5+L[gt=taxis],2) - -define axis/t/like=taxis taxis_edges = box_edges(a) - -let c = a[gt=taxis_edges@iin] -list c - VARIABLE : A[GT=TAXIS_EDGES@IIN] - SUBSET : 11 points (TIME) - 01-JAN-1990 00 / 1: 0. - 02-JAN-1990 00 / 2: 129600. - 03-JAN-1990 00 / 3: 172800. - 04-JAN-1990 00 / 4: 302400. - 05-JAN-1990 00 / 5: 345600. - 06-JAN-1990 00 / 6: 475200. - 07-JAN-1990 00 / 7: 518400. - 08-JAN-1990 00 / 8: 648000. - 09-JAN-1990 00 / 9: 691200. - 10-JAN-1990 00 / 10: 820800. - 11-JAN-1990 00 / 11: 864000. - -! -define axis/edge/t=0:240:12/units=hours/t0=1-jan-1990 thour -let c = a[gt=thour@iin] -list c - VARIABLE : A[GT=THOUR@IIN] - SUBSET : 20 points (TIME) - 01-JAN-1990 06:00 / 1: 32400. - 01-JAN-1990 18:00 / 2: 97200. - 02-JAN-1990 06:00 / 3: 140400. - 02-JAN-1990 18:00 / 4: 162000. - 03-JAN-1990 06:00 / 5: 205200. - 03-JAN-1990 18:00 / 6: 270000. - 04-JAN-1990 06:00 / 7: 313200. - 04-JAN-1990 18:00 / 8: 334800. - 05-JAN-1990 06:00 / 9: 378000. - 05-JAN-1990 18:00 / 10: 442800. - 06-JAN-1990 06:00 / 11: 486000. - 06-JAN-1990 18:00 / 12: 507600. - 07-JAN-1990 06:00 / 13: 550800. - 07-JAN-1990 18:00 / 14: 615600. - 08-JAN-1990 06:00 / 15: 658800. - 08-JAN-1990 18:00 / 16: 680400. - 09-JAN-1990 06:00 / 17: 723600. - 09-JAN-1990 18:00 / 18: 788400. - 10-JAN-1990 06:00 / 19: 831600. - 10-JAN-1990 18:00 / 20: 853200. - - -! Intentional errors -set mode ignore -define axis/edge/z=0:10:1/units=km aline -let a = mod(.5+z[gz=aline],2) - -define axis/z/units=mile aline_edges = box_edges(a) - -let c = a[gz=aline_edges@iin] -list c - -! Ferret general regridding handling detects this incompatibility -! between calendar and non-caleandar axis -define axis/t=1:20:1/units=days/t0=1-jan-1990 calendar_t -let a = t[gt=calendar_t] - -define axis/t=1:17:2 new_t - -let c = a[gt=new_t@iin] -list c - -! longitude and undefined units - -set mode ignore -define axis/edge/x=0:10:1/units=degrees_east aline -let a = mod(.5+x[gx=aline],2) - -define axis/x aline_edges = box_edges(a) - -let c = a[gx=aline_edges@iin] -list c - - -define axis/edge/z=0:10:1/units=km aline -let a = mod(.5+z[gz=aline],2) - -define axis/z/units=nothing aline_edges = box_edges(a) - -let c = a[gz=aline_edges@iin] -list c -can mode ignore - -can mem -can var/all -! plots in different directions - -! In X - -set win/asp=0.5 -set v left -define axis/edge/x=0:10:1 aline -let a = mod(.5+x[gx=aline],2) -plot/step=con/vl=-1:6:1/hl=-1:11:1/grat=dash/col=green/thic=3 a -let a_iin = a[x=@iin] -plot/ov/line/sym=2/si=.1/col=2/thic=2 a_iin - -define axis/x/like=`a,return=xaxis` aline_edges = box_edges(a) - !-> define axis/x/like=aline aline_edges = box_edges(a) - -let a_iin_edges = a_iin[gx=aline_edges@asn] -let a_int = IF i[gx=aline_edges] EQ 1 THEN 0 ELSE a_iin_edges[x=@shf:-1] -plot/ov/line/sym=28/si=.1/col=purple/thic=2 a_int - - -! @IIN regridding - -show axis/x aline_edges - name axis # pts start end - aline_edges X 11 r 0 10 - Axis span (to cell edges) = 11 - - I X XBOX XBOXLO - 1> 0 1 -0.5 - 2> 1 1 0.5 - 3> 2 1 1.5 - 4> 3 1 2.5 - 5> 4 1 3.5 - 6> 5 1 4.5 - 7> 6 1 5.5 - 8> 7 1 6.5 - 9> 8 1 7.5 - 10> 9 1 8.5 - 11> 10 1 9.5 -let c = a[gx=aline_edges@iin] -plot/ov/line/sym=19/si=.1/col=light/thic=1 c - -set v right -let b = 1+0*a -plot/step=con/vl=-1:12:1/hl=-1:11:1/grat=dash/col=green/thic=3 b -let b_iin = b[x=@iin] -plot/ov/line/sym=2/si=.1/col=2/thic=2 b_iin -let b_iin_edges = b_iin[gx=aline_edges@asn] -let b_int = IF i[gx=aline_edges] EQ 1 THEN 0 ELSE b_iin_edges[x=@shf:-1] -plot/ov/line/sym=28/si=.1/col=purple/thic=2 b_int - -! @IIN regridding -let d = b[gx=aline_edges@iin] -plot/ov/line/sym=19/si=.1/col=light/thic=1 d - -list d - VARIABLE : B[GX=ALINE_EDGES@IIN] - SUBSET : 11 points (X) - 0 / 1: 0.00 - 1 / 2: 1.00 - 2 / 3: 2.00 - 3 / 4: 3.00 - 4 / 5: 4.00 - 5 / 6: 5.00 - 6 / 7: 6.00 - 7 / 8: 7.00 - 8 / 9: 8.00 - 9 / 10: 9.00 - 10 / 11: 10.00 -define axis/z=1:2:1 otheraxis -let b2d = b + z[gz=otheraxis] -list b2d[gx=aline_edges@iin] - VARIABLE : B + Z[GZ=OTHERAXIS] - regrid: 1 delta on X@IIN - SUBSET : 11 by 2 points (X-Z) - 0 1 2 3 4 5 6 7 8 9 10 - 1 2 3 4 5 6 7 8 9 10 11 - 1 / 1: 0.00 2.00 4.00 6.00 8.00 10.00 12.00 14.00 16.00 18.00 20.00 - 2 / 2: 0.00 3.00 6.00 9.00 12.00 15.00 18.00 21.00 24.00 27.00 30.00 - -can view; can var/all -! In Y - -set win/asp=0.5 -set v left -define axis/edge/y=0:10:1 aline - - -let a = mod(.5+y[gy=aline],2) -plot/step=con/vl=-1:6:1/hl=-1:11:1/grat=dash/col=green/thic=3 a -let a_iin = a[y=@iin] -plot/ov/line/sym=2/si=.1/col=2/thic=2 a_iin - -define axis/y/like=`a,return=yaxis` aline_edges = box_edges(a) - !-> define axis/y/like=aline aline_edges = box_edges(a) - -let a_iin_edges = a_iin[gy=aline_edges@asn] -let a_int = IF j[gy=aline_edges] EQ 1 THEN 0 ELSE a_iin_edges[y=@shf:-1] -plot/ov/line/sym=28/si=.1/col=purple/thic=2 a_int - - -! @IIN regridding -let c = a[gy=aline_edges@iin] -plot/ov/line/sym=19/si=.1/col=light/thic=1 c - - -set v right -let b = 1+0*a -plot/step=con/vl=-1:12:1/hl=-1:11:1/grat=dash/col=green/thic=3 b -let b_iin = b[y=@iin] -plot/ov/line/sym=2/si=.1/col=2/thic=2 b_iin -let b_iin_edges = b_iin[gy=aline_edges@asn] -let b_int = IF j[gy=aline_edges] EQ 1 THEN 0 ELSE b_iin_edges[y=@shf:-1] -plot/ov/line/sym=28/si=.1/col=purple/thic=2 b_int - -! @IIN regridding -let d = b[gy=aline_edges@iin] -plot/ov/line/sym=19/si=.1/col=light/thic=1 d - -list d - VARIABLE : B[GY=ALINE_EDGES@IIN] - SUBSET : 11 points (Y) - 0 / 1: 0.00 - 1 / 2: 1.00 - 2 / 3: 2.00 - 3 / 4: 3.00 - 4 / 5: 4.00 - 5 / 6: 5.00 - 6 / 7: 6.00 - 7 / 8: 7.00 - 8 / 9: 8.00 - 9 / 10: 9.00 - 10 / 11: 10.00 -define axis/z=1:2:1 otheraxis -let b2d = b + z[gz=otheraxis] -list b2d[gy=aline_edges@iin] - VARIABLE : B + Z[GZ=OTHERAXIS] - regrid: 1 delta on Y@IIN - SUBSET : 11 by 2 points (Y-Z) - 0 1 2 3 4 5 6 7 8 9 10 - 1 2 3 4 5 6 7 8 9 10 11 - 1 / 1: 0.00 2.00 4.00 6.00 8.00 10.00 12.00 14.00 16.00 18.00 20.00 - 2 / 2: 0.00 3.00 6.00 9.00 12.00 15.00 18.00 21.00 24.00 27.00 30.00 - - -can view; can var/all -! in Z - -set win/asp=0.5 -set v left -define axis/edge/z=0:10:1 aline -let a = mod(.5+z[gz=aline],2) -plot/step=con/hl=-1:6:1/vl=-1:11:1/grat=dash/col=green/thic=3 a -let a_iin = a[z=@iin] -plot/ov/line/sym=2/si=.1/col=2/thic=2 a_iin -let zlo = zboxlo[gz=a] -define axis/z aline_edges = zcat(zlo[k=1], zboxhi[gz=a]) - -let a_iin_edges = a_iin[gz=aline_edges@asn] -let a_int = IF k[gz=aline_edges] EQ 1 THEN 0 ELSE a_iin_edges[z=@shf:-1] -plot/ov/line/sym=28/si=.1/col=purple/thic=2 a_int - - -! @IIN regridding -let c = a[gz=aline_edges@iin] -plot/ov/line/sym=19/si=.1/col=light/thic=1 c - -set v right -let b = 1+0*a -plot/step=con/hl=-1:12:1/vl=-1:11:1/grat=dash/col=green/thic=3 b -let b_iin = b[z=@iin] -plot/ov/line/sym=2/si=.1/col=2/thic=2 b_iin -let b_iin_edges = b_iin[gz=aline_edges@asn] -let b_int = IF k[gz=aline_edges] EQ 1 THEN 0 ELSE b_iin_edges[z=@shf:-1] -plot/ov/line/sym=28/si=.1/col=purple/thic=2 b_int - -! @IIN regridding -let d = b[gz=aline_edges@iin] -plot/ov/line/sym=19/si=.1/col=light/thic=1 d - -list d - VARIABLE : B[GZ=ALINE_EDGES@IIN] - SUBSET : 11 points (Z) - 0 / 1: 0.00 - 1 / 2: 1.00 - 2 / 3: 2.00 - 3 / 4: 3.00 - 4 / 5: 4.00 - 5 / 6: 5.00 - 6 / 7: 6.00 - 7 / 8: 7.00 - 8 / 9: 8.00 - 9 / 10: 9.00 - 10 / 11: 10.00 -define axis/e=1:2:1 otheraxis -let b2d = b + _e[ge=otheraxis] -list b2d[gz=aline_edges@iin] - VARIABLE : B + _E[GE=OTHERAXIS] - regrid: 1 delta on Z@IIN - SUBSET : 11 by 2 points (Z-E) - 0 1 2 3 4 5 6 7 8 9 10 - 1 2 3 4 5 6 7 8 9 10 11 - 1 / 1: 0.00 2.00 4.00 6.00 8.00 10.00 12.00 14.00 16.00 18.00 20.00 - 2 / 2: 0.00 3.00 6.00 9.00 12.00 15.00 18.00 21.00 24.00 27.00 30.00 - - -can view; can var/all -! In T - -set win/asp=0.5 -set v left -define axis/edge/t=0:10:1 aline -let a = mod(.5+t[gt=aline],2) -plot/step=con/vl=-1:6:1/hl=-1:11:1/grat=dash/col=green/thic=3 a -let a_iin = a[t=@iin] -plot/ov/line/sym=2/si=.1/col=2/thic=2 a_iin -let tlo = tboxlo[gt=a] -define axis/t aline_edges = tcat(tlo[l=1], tboxhi[gt=a]) - -let a_iin_edges = a_iin[gt=aline_edges@asn] -let a_int = IF l[gt=aline_edges] EQ 1 THEN 0 ELSE a_iin_edges[t=@shf:-1] -plot/ov/line/sym=28/si=.1/col=purple/thic=2 a_int - - -! @IIN regridding -let c = a[gt=aline_edges@iin] -plot/ov/line/sym=19/si=.1/col=light/thic=1 c - -set v right -let b = 1+0*a -plot/step=con/vl=-1:12:1/hl=-1:11:1/grat=dash/col=green/thic=3 b -let b_iin = b[t=@iin] -plot/ov/line/sym=2/si=.1/col=2/thic=2 b_iin -let b_iin_edges = b_iin[gt=aline_edges@asn] -let b_int = IF l[gt=aline_edges] EQ 1 THEN 0 ELSE b_iin_edges[t=@shf:-1] -plot/ov/line/sym=28/si=.1/col=purple/thic=2 b_int - -! @IIN regridding -let d = b[gt=aline_edges@iin] -plot/ov/line/sym=19/si=.1/col=light/thic=1 d - -list d - VARIABLE : B[GT=ALINE_EDGES@IIN] - SUBSET : 11 points (T) - 0 / 1: 0.00 - 1 / 2: 1.00 - 2 / 3: 2.00 - 3 / 4: 3.00 - 4 / 5: 4.00 - 5 / 6: 5.00 - 6 / 7: 6.00 - 7 / 8: 7.00 - 8 / 9: 8.00 - 9 / 10: 9.00 - 10 / 11: 10.00 -define axis/z=1:2:1 otheraxis -let b2d = b + z[gz=otheraxis] -list b2d[gt=aline_edges@iin] - VARIABLE : B + Z[GZ=OTHERAXIS] - regrid: 1 delta on T@IIN - SUBSET : 2 by 11 points (Z-T) - 1 2 - 1 2 - 0 / 1: 0.00 0.00 - 1 / 2: 2.00 3.00 - 2 / 3: 4.00 6.00 - 3 / 4: 6.00 9.00 - 4 / 5: 8.00 12.00 - 5 / 6: 10.00 15.00 - 6 / 7: 12.00 18.00 - 7 / 8: 14.00 21.00 - 8 / 9: 16.00 24.00 - 9 / 10: 18.00 27.00 - 10 / 11: 20.00 30.00 - - -can view; can var/all -! in E - -set win/asp=0.5 -set v left -define axis/edge/e=0:10:1 aline -let a = mod(.5+_e[ge=aline],2) -plot/step=con/vl=-1:6:1/hl=-1:11:1/grat=dash/col=green/thic=3 a -let a_iin = a[e=@iin] -plot/ov/line/sym=2/si=.1/col=2/thic=2 a_iin -let elo = eboxlo[ge=a] -define axis/e aline_edges = ecat(elo[m=1], eboxhi[ge=a]) - -let a_iin_edges = a_iin[ge=aline_edges@asn] -let a_int = IF _m[ge=aline_edges] EQ 1 THEN 0 ELSE a_iin_edges[e=@shf:-1] -plot/ov/line/sym=28/si=.1/col=purple/thic=2 a_int - - -! @IIN regridding -let c = a[ge=aline_edges@iin] -plot/ov/line/sym=19/si=.1/col=light/thic=1 c - -set v right -let b = 1+0*a -plot/step=con/hl=-1:12:1/vl=-1:11:1/grat=dash/col=green/thic=3 b -let b_iin = b[e=@iin] -plot/ov/line/sym=2/si=.1/col=2/thic=2 b_iin -let b_iin_edges = b_iin[ge=aline_edges@asn] -let b_int = IF _m[ge=aline_edges] EQ 1 THEN 0 ELSE b_iin_edges[e=@shf:-1] -plot/ov/line/sym=28/si=.1/col=purple/thic=2 b_int - -! @IIN regridding -let d = b[ge=aline_edges@iin] -plot/ov/line/sym=19/si=.1/col=light/thic=1 d - -list d - VARIABLE : B[GE=ALINE_EDGES@IIN] - SUBSET : 11 points (E) - 0 / 1: 0.00 - 1 / 2: 1.00 - 2 / 3: 2.00 - 3 / 4: 3.00 - 4 / 5: 4.00 - 5 / 6: 5.00 - 6 / 7: 6.00 - 7 / 8: 7.00 - 8 / 9: 8.00 - 9 / 10: 9.00 - 10 / 11: 10.00 -define axis/z=1:2:1 otheraxis -let b2d = b + z[gz=otheraxis] -list b2d[ge=aline_edges@iin] - VARIABLE : B + Z[GZ=OTHERAXIS] - regrid: 1 delta on E@IIN - SUBSET : 2 by 11 points (Z-E) - 1 2 - 1 2 - 0 / 1: 0.00 0.00 - 1 / 2: 2.00 3.00 - 2 / 3: 4.00 6.00 - 3 / 4: 6.00 9.00 - 4 / 5: 8.00 12.00 - 5 / 6: 10.00 15.00 - 6 / 7: 12.00 18.00 - 7 / 8: 14.00 21.00 - 8 / 9: 16.00 24.00 - 9 / 10: 18.00 27.00 - 10 / 11: 20.00 30.00 - - -can view; can var/all -! In F - -set win/asp=0.5 -set v left -define axis/edge/f=0:10:1 aline -let a = mod(.5+_f[gf=aline],2) -plot/step=con/vl=-1:6:1/hl=-1:11:1/grat=dash/col=green/thic=3 a -let a_iin = a[f=@iin] -plot/ov/line/sym=2/si=.1/col=2/thic=2 a_iin -let flo = fboxlo[gf=a] -define axis/f aline_edges = fcat(flo[n=1], fboxhi[gf=a]) - -let a_iin_edges = a_iin[gf=aline_edges@asn] -let a_int = IF _n[gf=aline_edges] EQ 1 THEN 0 ELSE a_iin_edges[f=@shf:-1] -plot/ov/line/sym=28/si=.1/col=purple/thic=2 a_int - - -! @IIN regridding -let c = a[gf=aline_edges@iin] -plot/ov/line/sym=19/si=.1/col=light/thic=1 c - -set v right -let b = 1+0*a -plot/step=con/vl=-1:12:1/hl=-1:11:1/grat=dash/col=green/thic=3 b -let b_iin = b[f=@iin] -plot/ov/line/sym=2/si=.1/col=2/thic=2 b_iin -let b_iin_edges = b_iin[gf=aline_edges@asn] -let b_int = IF _n[gf=aline_edges] EQ 1 THEN 0 ELSE b_iin_edges[f=@shf:-1] -plot/ov/line/sym=28/si=.1/col=purple/thic=2 b_int - -! @IIN regridding -let d = b[gf=aline_edges@iin] -plot/ov/line/sym=19/si=.1/col=light/thic=1 d - -list d - VARIABLE : B[GF=ALINE_EDGES@IIN] - SUBSET : 11 points (F) - 0 / 1: 0.00 - 1 / 2: 1.00 - 2 / 3: 2.00 - 3 / 4: 3.00 - 4 / 5: 4.00 - 5 / 6: 5.00 - 6 / 7: 6.00 - 7 / 8: 7.00 - 8 / 9: 8.00 - 9 / 10: 9.00 - 10 / 11: 10.00 -define axis/z=1:2:1 otheraxis -let b2d = b + z[gz=otheraxis] -list b2d[gf=aline_edges@iin] - VARIABLE : B + Z[GZ=OTHERAXIS] - regrid: 1 delta on F@IIN - SUBSET : 2 by 11 points (Z-F) - 1 2 - 1 2 - 0 / 1: 0.00 0.00 - 1 / 2: 2.00 3.00 - 2 / 3: 4.00 6.00 - 3 / 4: 6.00 9.00 - 4 / 5: 8.00 12.00 - 5 / 6: 10.00 15.00 - 6 / 7: 12.00 18.00 - 7 / 8: 14.00 21.00 - 8 / 9: 16.00 24.00 - 9 / 10: 18.00 27.00 - 10 / 11: 20.00 30.00 - -! More examples: scale for world coordinates - -! longitudes - - -define axis/edge/x=0:10:1/units=degrees_east aline -let a = mod(.5+x[gx=aline],2) -define axis/x/like=`a,return=xaxis` aline_edges = box_edges(a) - !-> define axis/x/like=aline aline_edges = box_edges(a) -let a_iin_regrid = a[gx=aline_edges@iin] -let a_iin = a[x=@iin] - -list a_iin - VARIABLE : A[X=@IIN] - SUBSET : 10 points (LONGITUDE) - 0.5E / 1: 111195. - 1.5E / 2: 111195. - 2.5E / 3: 222390. - 3.5E / 4: 222390. - 4.5E / 5: 333585. - 5.5E / 6: 333585. - 6.5E / 7: 444780. - 7.5E / 8: 444780. - 8.5E / 9: 555975. - 9.5E / 10: 555975. -list a_iin_regrid - VARIABLE : A[GX=ALINE_EDGES@IIN] - SUBSET : 11 points (LONGITUDE) - 0E / 1: 0. - 1E / 2: 111195. - 2E / 3: 111195. - 3E / 4: 222390. - 4E / 5: 222390. - 5E / 6: 333585. - 6E / 7: 333585. - 7E / 8: 444780. - 8E / 9: 444780. - 9E / 10: 555975. - 10E / 11: 555975. - -use coads_climatology - -define axis/x/like=`sst,return=xaxis` aline_edges = box_edges(sst[y=0,l=1,x=151:181]) - !-> define axis/x/like=COADSX aline_edges = box_edges(sst[y=0,l=1,x=151:181]) - - -let sst_iin_regrid = sst[gx=aline_edges@iin] - -! With cosine(lat) correction -list/l=1 sst[x=151:181@iin,y=0], sst[x=151:181@iin,y=50] - DATA SET: ./data/coads_climatology.cdf - LONGITUDE: 151E to 179W (indef. integ.) - TIME: 16-JAN 06:00 - Column 1: SST[Y=1S] is SEA SURFACE TEMPERATURE (Deg C)(indef. integ. on X) - Column 2: SST[Y=49N] is SEA SURFACE TEMPERATURE (Deg C)(indef. integ. on X) - SST SST -151E / 66: 3.270E+06 134587. -153E / 67: 9.814E+06 416978. -155E / 68: 1.634E+07 649622. -157E / 69: 2.283E+07 904310. -159E / 70: 2.932E+07 1187673. -161E / 71: 3.580E+07 1558414. -163E / 72: 4.233E+07 1939608. -165E / 73: 4.882E+07 2363222. -167E / 74: 5.528E+07 2835953. -169E / 75: 6.171E+07 3348395. -171E / 76: 6.816E+07 3886457. -173E / 77: 7.452E+07 4436197. -175E / 78: 8.081E+07 5000771. -177E / 79: 8.719E+07 5566464. -179E / 80: 9.346E+07 6161540. -179W / 81: 9.667E+07 6465711. -list/l=1 sst_iin_regrid[y=0], sst_iin_regrid[y=50] - DATA SET: ./data/coads_climatology.cdf - LONGITUDE: 149E to 177W - TIME: 16-JAN 06:00 - Column 1: SST_IIN_REGRID[Y=1S] is SST[GX=ALINE_EDGES@IIN] - Column 2: SST_IIN_REGRID[Y=49N] is SST[GX=ALINE_EDGES@IIN] - SST_IIN_REGR SST_IIN_REGRID -150E / 1: 0.000E+00 0. -152E / 2: 6.540E+06 269173. -154E / 3: 1.308E+07 551565. -156E / 4: 1.961E+07 784209. -158E / 5: 2.610E+07 1038897. -160E / 6: 3.259E+07 1322260. -162E / 7: 3.907E+07 1693001. -164E / 8: 4.560E+07 2074194. -166E / 9: 5.209E+07 2497809. -168E / 10: 5.855E+07 2970539. -170E / 11: 6.498E+07 3482981. -172E / 12: 7.143E+07 4021043. -174E / 13: 7.779E+07 4570784. -176E / 14: 8.408E+07 5135358. -178E / 15: 9.046E+07 5701051. -180E / 16: 9.673E+07 6296127. -178W / 17: 1.031E+08 6904468. - -! latitudes - -define axis/edge/y=10:80:10/units=degrees_north aline -let a = y[gy=aline]/10 -define axis/y/like=`a,return=yaxis` aline_edges = box_edges(a) - !-> define axis/y/like=aline aline_edges = box_edges(a) -let a_iin_regrid = a[gy=aline_edges@iin] -let a_iin = a[y=@iin] - -list a_iin - VARIABLE : A[Y=@IIN] - SUBSET : 7 points (LATITUDE) - 75N / 7: 3.503E+07 - 65N / 6: 2.669E+07 - 55N / 5: 1.946E+07 - 45N / 4: 1.334E+07 - 35N / 3: 8.340E+06 - 25N / 2: 4.448E+06 - 15N / 1: 1.668E+06 -list a_iin_regrid - VARIABLE : A[GY=ALINE_EDGES@IIN] - SUBSET : 8 points (LATITUDE) - 80N / 8: 3.503E+07 - 70N / 7: 2.669E+07 - 60N / 6: 1.946E+07 - 50N / 5: 1.334E+07 - 40N / 4: 8.340E+06 - 30N / 3: 4.448E+06 - 20N / 2: 1.668E+06 - 10N / 1: 0.000E+00 - -! Tests of regrid-to-self regridding -! @iin regridding to the source axis - -define axis/edge/x=0:10:1 aline -let a = i[gx=aline] - -! edges axis -define axis/x/like=`a,return=xaxis` aline_edges = box_edges(a) - !-> define axis/x/like=aline aline_edges = box_edges(a) - -let c = a[gx=aline_edges@iin] -let d = a[gx=aline@iin] - -! to edges axis -list c - VARIABLE : A[GX=ALINE_EDGES@IIN] - SUBSET : 11 points (X) - 0 / 1: 0.00 - 1 / 2: 1.00 - 2 / 3: 3.00 - 3 / 4: 6.00 - 4 / 5: 10.00 - 5 / 6: 15.00 - 6 / 7: 21.00 - 7 / 8: 28.00 - 8 / 9: 36.00 - 9 / 10: 45.00 - 10 / 11: 55.00 - -! to source axis. Pushes result of a @IIN transform up half a cell -list a, d, a[x=@iin] - X: 0 to 10 - Column 1: A is I[GX=ALINE] - Column 2: D is A[GX=ALINE@IIN] - Column 3: A[X=@IIN] is I[GX=ALINE] (indef. integ. on X) - A D A -0.5 / 1: 1.00 0.50 1.00 -1.5 / 2: 2.00 2.00 3.00 -2.5 / 3: 3.00 4.50 6.00 -3.5 / 4: 4.00 8.00 10.00 -4.5 / 5: 5.00 12.50 15.00 -5.5 / 6: 6.00 18.00 21.00 -6.5 / 7: 7.00 24.50 28.00 -7.5 / 8: 8.00 32.00 36.00 -8.5 / 9: 9.00 40.50 45.00 -9.5 / 10: 10.00 50.00 55.00 - - -def ax/edge/t=1-jan-0001:1-jan-0004:365/unit=day/cal=noleap tax -let one = 1 + 0*t[gt=tax] -list one, one[t=@iin], one[gt=tax@iin] - TIME: 01-JAN-0001 00:00 to 01-JAN-0004 00:00 NOLEAP - Column 1: ONE is 1 + 0*T[GT=TAX] - Column 2: ONE[T=@IIN] is 1 + 0*T[GT=TAX] (indef. integ. on T) - Column 3: ONE[G=TGRID on T@IIN] is 1 + 0*T[GT=TAX] (regrid: TGRID on T@IIN) - ONE ONE ONE -JUL-0001 / 1: 1.000 3.154E+07 1.577E+07 -JUL-0002 / 2: 1.000 6.307E+07 4.730E+07 -JUL-0003 / 3: 1.000 9.461E+07 7.884E+07 - -! Gridding to an identical second axis, columns 3 and 4 match: -def ax/edge/t=1-jan-0001:1-jan-0004:365/unit=day/cal=noleap tax2 -list one, one[t=@iin], one[gt=tax@iin], one[gt=tax2@iin] - WARNING: Listed variables have ambiguous coordinates on axes: T - Column 1: ONE is 1 + 0*T[GT=TAX] - Column 2: ONE[T=@IIN] is 1 + 0*T[GT=TAX] (indef. integ. on T) - Column 3: ONE[G=TGRID on T@IIN] is 1 + 0*T[GT=TAX] (regrid: TGRID on T@IIN) - Column 4: ONE[G=365 day on T@IIN] is 1 + 0*T[GT=TAX] (regrid: 365 day on T@IIN) - ONE ONE ONE ONE -L / 1: 1.000 3.154E+07 1.577E+07 1.577E+07 -L / 2: 1.000 6.307E+07 4.730E+07 4.730E+07 -L / 3: 1.000 9.461E+07 7.884E+07 7.884E+07 - -! Restore default aspect ratio -set window/aspect=0.75 - -! *********** v7.21 Additions *********** - -GO bn_reset bn721_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn721_bug_fixes -GO bn721_bug_fixes -! bn721_bug_fixes.jnl -! test various fixes that went into version 7.21 -! 7/17 *acm* -! - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err72_atts_as_vars -! err72_atts_as_vars.jnl -! See ticket 2555. Allocation of pointers for these strings - -use coads_climatology -list sst.attnames[i=1] - VARIABLE : SST.ATTNAMES[I=1] - FILENAME : coads_climatology.cdf - X : 1 - "missing_value" - -use coads_climatology -let allatts = sst.attnames -let natts = sst.nattrs - repeat/range=1:`natts`/name=m (let attname = allatts[i=`m`]; list attname) - !-> repeat/range=1:5/name=m (let attname = allatts[i=`m`]; list attname) -!-> REPEAT: M:1 - !-> DEFINE VARIABLE attname = allatts[i=1] - VARIABLE : ALLATTS[I=1] - FILENAME : coads_climatology.cdf - X : 1 - "missing_value" -!-> REPEAT: M:2 - !-> DEFINE VARIABLE attname = allatts[i=2] - VARIABLE : ALLATTS[I=2] - FILENAME : coads_climatology.cdf - X : 2 - "_FillValue" -!-> REPEAT: M:3 - !-> DEFINE VARIABLE attname = allatts[i=3] - VARIABLE : ALLATTS[I=3] - FILENAME : coads_climatology.cdf - X : 3 - "long_name" -!-> REPEAT: M:4 - !-> DEFINE VARIABLE attname = allatts[i=4] - VARIABLE : ALLATTS[I=4] - FILENAME : coads_climatology.cdf - X : 4 - "history" -!-> REPEAT: M:5 - !-> DEFINE VARIABLE attname = allatts[i=5] - VARIABLE : ALLATTS[I=5] - FILENAME : coads_climatology.cdf - X : 5 - "units" - -! Bug also applied to getting dimnames -list sst.dimnames[i=2:3] - VARIABLE : SST.DIMNAMES[I=2:3] - FILENAME : coads_climatology.cdf - SUBSET : 2 points (X) - 2 / 2:"COADSY" - 3 / 3:"TIME25" - -let dnames = sst.dimnames -list dnames[i=2] - VARIABLE : SST.DIMNAMES - FILENAME : coads_climatology.cdf - X : 2 - "COADSY" - -! lots of global attributes -use err491_attval -list ..attnames[i=20:23] - VARIABLE : ..ATTNAMES[I=20:23] - DATA SET : K-Bay OAR3d model (200m) - FILENAME : err491_attval.cdf - SUBSET : 4 points (X) - 20 / 20:"ny" - 21 / 21:"x_min" - 22 / 22:"x_max" - 23 / 23:"y_min" - - -let gattnames = ..attnames -list gattnames[i=1:10] - VARIABLE : ..ATTNAMES - DATA SET : K-Bay OAR3d model (200m) - FILENAME : err491_attval.cdf - SUBSET : 10 points (X) - 1 / 1:"simulation" - 2 / 2:"start_date" - 3 / 3:"history" - 4 / 4:"option" - 5 / 5:"run_mode" - 6 / 6:"srfc_bndry" - 7 / 7:"rad_penet" - 8 / 8:"dt_external" - 9 / 9:"dt_internal" - 10 / 10:"horiz_diff" - -list gattnames[i=1:24:2] - VARIABLE : ..ATTNAMES - regrid: 2 delta on X - DATA SET : K-Bay OAR3d model (200m) - FILENAME : err491_attval.cdf - SUBSET : 12 points (X) - 1 / 1:"simulation" - 3 / 2:"history" - 5 / 3:"run_mode" - 7 / 4:"rad_penet" - 9 / 5:"dt_internal" - 11 / 6:"inv_prandtl" - 13 / 7:"title" - 15 / 8:"remark" - 17 / 9:"y_units" - 19 / 10:"nx" - 21 / 11:"x_min" - 23 / 12:"y_min" - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err72_sum_in_x -! err72_sum_in_x.jnl -! ticket 2560, sum in X direcgtion when result is 0 -! returne a missing-value - -! Previously this result was missing -let var = {-1,1,0} -list var[x=@sum] - VARIABLE : {-1,1,0} - X : 0.5 to 3.5 (summed) - 0.0000 - -! This was correct, 0 -let yvar = ysequence(var) -list yvar[j=@sum] - VARIABLE : YSEQUENCE(VAR) - Y : 0.5 to 3.5 (summed) - 0.0000 - - -! *********** v7.22 Additions *********** - -GO bn_reset bn722_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn722_bug_fixes -GO bn722_bug_fixes -! bn721_bug_fixes.jnl -! test various fixes that went into version 7.22 -! 9/17 *acm* -! - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err721_dynamic_gather -! err72_dynamic_gather.jnl -! 9/25/2017 Ticket 2561 -! 6/19, code changes for SET MEM in terms of Mbytes. But -! here, the SET MEMORY commands are done in terms of megawords, -! as we're thinking of grid sizes - -! Combination of two transforms, and split/gather ops - -cancel data/all -cancel memory -DEFINE SYMBOL saved_memory_size = ($FERRET_BYTES_MEM) - !-> DEFINE SYMBOL saved_memory_size = 250Mb - -! dataset from bn_dynamic_gather.jnl -use tmp/test_dyn_mem.nc - -! w/ default amount of memory this doesn't need a split-gather -! This result is correct -list/nohead v1000[x=@ave,y=@ave,k=@sum,L=@sum] - 2236000. -show memory/diag - No split/gather occurred in the last evaluation - Total table slots: 500 - Free table slots: 497 - Un-cached variables: 0 - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 32.06 Mb - Current cache: 32.06 Mb - -! Now use smaller memory, so it'll split/gather in the T -! direction. The answer in v7.2 was wrong. -cancel memory -set mem/siz=10 -list/nohead v1000[x=@ave,y=@ave,k=@sum,L=@sum] - 2236000. -show memory/diag - Last gather - Variable Axis Xform Chunk Repeated - V1000 T AV4 997 1 - Total table slots: 500 - Free table slots: 494 - Un-cached variables: 0 - SET MEMORY/SIZE: 80 Mb (10 megawords) - Peak demand: 31.97 Mb - Current cache: 32.1 Mb - -! With an even smaller amount of memory, a different -! incorrect result was listed with v7.2. -cancel memory -set mem/siz=1 -list/nohead v1000[x=@ave,y=@ave,k=@sum,L=@SUM] - 2236000. -sh mem/diag - Last gather - Variable Axis Xform Chunk Repeated - V1000 T AV4 98 1 - Total table slots: 500 - Free table slots: 491 - Un-cached variables: 0 - SET MEMORY/SIZE: 8 Mb (1000000 words) - Peak demand: 3.17 Mb - Current cache: 6.96 Mb - -! clean up -SET MEMORY/SIZE=($saved_memory_size) - !-> SET MEMORY/SIZE=250Mb - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err721_polymark_log - -! err721_polymark_log.jnl -! Ticket 2562, polymark and other polygons over log axis. -! 9/26/17 ACM - -let frqs = {0.01,0.011,0.012,0.013,0.014,0.015,0.025,0.026,0.027,0.028,\ -0.029,0.03,0.031,0.032,0.033,0.08,0.108,0.135,0.193,0.194,0.195,0.196,\ -0.197,0.227,0.228,0.229,0.255,0.256,0.31,0.311,0.312,0.362,0.363,0.364} - -let phas = {61.099,68.796,79.686,80.292, 104.212, 121.192,93.757,\ -102.549,115.240,112.831,103.433,102.032,105.109,104.216,93.173,-7.041,\ --133.985,-162.018,161.157,154.128,146.717,140.252,132.944,-29.014,\ --34.848,-38.376,-109.836,-119.620,12.858,17.047,22.327,-167.776,-169.991,-165.467} - -! Plots with /HLOG -set v ul -plot/hlog/vs/vlim=-180:180:45/nolabs/hlim=0.001:0.1 frqs,phas -go polymark poly/hlog/over/nolabs/nokey/line/pal=red frqs, phas 1 square 0.6 - - -! more dynamic range -set v ur -let frq2 = XCAT(frqs, 10*frqs) -let phas2 = XCAT(phas,phas) -plot/hlog/vs/vlim=-180:180:45/nolabs frq2, phas2 -go polymark poly/hlog/over/nolabs/nokey/line/pal=green frq2, phas2 1 delta 0.8 - - -! more decades still -set v ll -let var3 = XCAT(0.1*frqs, frq2) -let phas3 = XCAT(phas,phas2) -plot/hlog/vs/vlim=-180:180:45/nolabs var3, phas3 -go polymark poly/hlog/over/nolabs/nokey/line/pal=purple_light var3, phas3 1 star 1.1 - - -! /VLOG -set v lr -plot/vlog/vs/hlim=-180:180:45/nolabs phas3, var3 -go polymark poly/vlog/over/nolabs/nokey/line/pal=blue_light phas3, var3 1 circle 0.7 - - -! Note /VLOG/HLOG together make a blank plot. Not worrying about that now. - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err721_letd_with_grave -! err721_letd_with_grave -! 10/6/17 ACM -! See ticket 2563. Error parsing the grave-accent expr -! because of the quotes around datset path and name. - -use "data/proleptic_gregorian.nc" - -! This is fine -let/d="data/proleptic_gregorian.nc" var1 = my_data + 1 - -! This resulted in an error -let/d="data/proleptic_gregorian.nc" var2 = my_data - `my_data[L=@ave]` - !-> DEFINE VARIABLE/d="data/proleptic_gregorian.nc" var2 = my_data - 0.01335748549900018 -show data - currently SET data sets: - 1> data/proleptic_gregorian.nc (default) - name title I J K L - MY_DATA SIN(L[GT=TDAYS]) ... ... ... 1:32 - ------------------------------ - var2[D=proleptic_gregorian] = MY_DATA - 0.01335748549900018 - var1[D=proleptic_gregorian] = MY_DATA + 1 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err721_color_levels -! err721_color_levels -! 10/11/2017 ACM -! Ticket 2564, setting up color palette and levels for the second -! plot caused a STOP in PyFerret or in Ferret the gks error message -! gsetcolourrep() 96 Colour is outside range [0,1] - - -let fcn = 0.5*COS(J[j=1:100]/30)+SIN(K[k=1:100]/20) -fill/pal=land_sea_values/lev=vc 7000*fcn - -fill/pal=ocean_temp_bounds/lev=(-2,35,2) 18.5*fcn - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err721_dup_labels -! err721_dup_labels.jnl -! ticket 2565 -! 10/13/17 ACM -! 2/18 *acm* keep mode logo turned off - -set mode logo -use err721_dup_labels.nc - -! Draw time plot -plot new_val -ppl list labels - @ACRESHAPE(V,XTMS) - - - - XPOS YPOS HGT ROT UNITS - LAB 1 8.740E+00 6.620E+00 0.060 0 SYSTEM @ASPyFerret (debug) Ver.7.51 - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB 2 8.740E+00 6.510E+00 0.060 0 SYSTEM @ASNOAA/PMEL TMAP - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB 3 8.740E+00 6.410E+00 0.060 0 SYSTEM @AS20-AUG-2019 12:24:42 - LINE PT: 0.000E+00 0.000E+00 NO LINE CENTER JUSTIFY LABEL - LAB 4 8.740E+00 6.040E+00 0.120 0 SYSTEM @ASDATA SET: err721_dup_labels - LINE PT: 0.000E+00 0.000E+00 NO LINE RIGHT JUSTIFY LABEL - -! Overlay plots should add only the new labels needed. Ferret has -! always redrawn them all, which was harmless. Now, only draw the -! ones needed for each new /overlay - -plot/over/vs/line/color=green/title="deployment mean" {284.375, 285.5}, {3472.8, 3472.8} -ppl list labels - - @AS{284.375, 285.5} - - - XPOS YPOS HGT ROT UNITS - LAB 1 -4.200E-01 -5.500E-01 0.080 0 SYSTEM @ASdeployment mean - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL -plot/over/vs/line/color=red/title="HC mean" {284.375, 285.5}, {3472.9, 3472.9} -ppl list labels - - @AS{284.375, 285.5} - - - XPOS YPOS HGT ROT UNITS - LAB 1 -4.200E-01 -7.300E-01 0.080 0 SYSTEM @ASHC mean - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL -plot/over/vs/line/color=purple/nolab {284.42, 284.42}, {3472.6, 3473.1} - -! This caused labels below the plot way over to the right by the line -plot/over/vs/line/color=purple/title="purple" {285.4, 285.4}, {3472.6, 3473.1} -ppl list labels - - @AS{285.4, 285.4} - - - XPOS YPOS HGT ROT UNITS - LAB 1 -4.200E-01 -9.100E-01 0.080 0 SYSTEM @ASpurple - LINE PT: 0.000E+00 0.000E+00 NO LINE LEFT JUSTIFY LABEL - -set mode/last logo - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err721_plotuv -! err721_plotuv.jnl -! Ticket 2566: text size of zero causes graphics library errors -! - -if ($program_name"0|PyFerret>1|*>0") then set text/font=arial - !-> if 1 then set text/font=arial - -! In PyFerret with -nodisplay a Cairo error on the zero-length -! text size caused an ERROR and exit. Without -nodisplay it -! issued errors and used some nominal size - -use coads_climatology -let uwnd = sst -let vwnd = -1*sst - -plot/set/x=180/y=0 uwnd,vwnd -ppl axlsze,0,0 -ppl plotuv 0,1 - -if ($program_name"0|PyFerret>1|*>0") then cancel text - !-> if 1 then cancel text - -! Restore the default -ppl axlsze,0.1,0.1 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err721_ascii_size -! err721_ascii_size.jnl -! ACM 10/25/2017 Ticket 2567 -! Initializing an EZ dataset mis-counts the size until data is loaded - -file/var="t1,t2"/skip=1 err721_ascii_size.dat -show data - currently SET data sets: - 1> ./data/err721_ascii_size.dat (default) - name title I J K L - t1 t1 1:3 ... ... ... - t2 t2 1:3 ... ... ... - -say `t1,return=iend` - !-> MESSAGE/CONTINUE 3 -3 -load t1 -say `t1,return=iend` - !-> MESSAGE/CONTINUE 3 -3 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err721_dot_grid -! err721_dot_grid - -!!!! using dot_t(v1,v2) works fine - -def axis /X=1.0:3.0:1.0 xaxis -def axis /T=0.0:59.75:0.25 taxis_dc -def grid /X=xaxis /T=taxis_dc xtgrid -set grid xtgrid -let v1 = X * sin(T) -let v2 = X * cos(T) -let dp = dot_t(v1,v2) - -show grid dp - GRID (G211) - name axis # pts start end subset - xaxis X 3 r 1 3 full - normal Y - normal Z - normal T - -list dp - VARIABLE : DOT_T(V1,V2) - SUBSET : 3 points (X) - 1 / 1: 0.0368 - 2 / 2: 0.1471 - 3 / 3: 0.3310 - -can var /all -set grid abstract -can grid xtgrid -can axis xaxis -can axis taxis_dc - -!!!! using dot(v1,v2,4) gives the correct results - -def axis /X=1.0:3.0:1.0 xaxis -def axis /T=0.0:59.75:0.25 taxis_dc -def grid /X=xaxis /T=taxis_dc xtgrid -set grid xtgrid -let v1 = X * sin(T) -let v2 = X * cos(T) -let dp = dot(v1,v2,4) - -! It would be nice if this showed the right grid with NO t axis. -show grid dp - GRID XTGRID - name axis # pts start end subset - xaxis X 3 r 1 3 full - normal Y - normal Z - taxis_dc T 240 r 0 59.75 full -list dp - VARIABLE : DOT(V1,V2,4) - SUBSET : 3 points (X) - 1 / 1: 0.0368 - 2 / 2: 0.1471 - 3 / 3: 0.3310 - -! but, at least cancel axis taxis_dc is ok -! Previously the "can axis taxis_dc" failed. -can var /all -set grid abstract -can grid xtgrid -can axis xaxis -can axis taxis_dc - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err721_stride_size -! err721_stride_size.jnl -! SHOW DATA and RETURN=isize were -! not updated with new size on a SET AXIS/STRIDE -! *ACM* 11/29/2017 github issue 1843 - -use coads_climatology -set axis/stride=5 `sst,return=xaxis` - !-> set axis/stride=5 COADSX - -! Should show new size for x axis -show grid sst - GRID GSQ1 - name axis # pts start end subset - (AX100) LONGITUDE 36mr 21E 11E(371) full - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 full -say `sst,return=isize` - !-> MESSAGE/CONTINUE 36 -36 - -! Restore axis, back to size 180 -cancel axis/stride `sst,return=xaxis` - !-> cancel axis/stride (AX100) -show grid sst - GRID GSQ1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME25 TIME 3mr 16-JAN 06:00 17-MAR 02:58 full -say `sst,return=isize` - !-> MESSAGE/CONTINUE 180 -180 - -! Irregular axis - -USE truemonth.nc -say `var,return=lsize` - !-> MESSAGE/CONTINUE 239 -239 -SET AXIS/STRIDE=12/OFFSET=0 `var,return=taxis` ! every January - !-> SET AXIS/STRIDE=12/OFFSET=0 TRUEMONTH -LIST var - VARIABLE : COS(T[GT=TRUEMONTH]/100) - FILENAME : truemonth.nc - SUBSET : 20 points (TIME) - 16-JAN-1950 / 1: 0.8459 - 16-JAN-1951 / 2: -0.4792 - 16-JAN-1952 / 3: -0.0086 - 16-JAN-1953 / 4: 0.5030 - 16-JAN-1954 / 5: -0.8601 - 16-JAN-1955 / 6: 0.9996 - 16-JAN-1956 / 7: -0.8863 - 16-JAN-1957 / 8: 0.5404 - 16-JAN-1958 / 9: -0.0625 - 16-JAN-1959 / 10: -0.4313 - 16-JAN-1960 / 11: 0.8159 - 16-JAN-1961 / 12: -0.9952 - 16-JAN-1962 / 13: 0.9170 - 16-JAN-1963 / 14: -0.6068 - 16-JAN-1964 / 15: 0.1432 - 16-JAN-1965 / 16: 0.3660 - 16-JAN-1966 / 17: -0.7727 - 16-JAN-1967 / 18: 0.9840 - 16-JAN-1968 / 19: -0.9463 - 16-JAN-1969 / 20: 0.6618 -say `var,return=lsize` - !-> MESSAGE/CONTINUE 20 -20 - -can axis/stride `var,return=taxis` - !-> can axis/stride (AX096) -sh grid var - GRID GRZ1 - name axis # pts start end subset - normal X - normal Y - normal Z - TRUEMONTH TIME 239 i 16-JAN-1950 12:00 16-NOV-1969 00:00 full -SET AXIS/STRIDE=12/OFFSET=2 `var,return=taxis` ! every March - !-> SET AXIS/STRIDE=12/OFFSET=2 TRUEMONTH -say `var,return=lsize` - !-> MESSAGE/CONTINUE 22 -22 -list var - VARIABLE : COS(T[GT=TRUEMONTH]/100) - FILENAME : truemonth.nc - SUBSET : 20 points (TIME) - 16-MAR-1950 / 1: 0.4061 - 16-MAR-1951 / 2: 0.0901 - 16-MAR-1952 / 3: -0.5718 - 16-MAR-1953 / 4: 0.8988 - 16-MAR-1954 / 5: -0.9985 - 16-MAR-1955 / 6: 0.8456 - 16-MAR-1956 / 7: -0.4700 - 16-MAR-1957 / 8: -0.0191 - 16-MAR-1958 / 9: 0.5034 - 16-MAR-1959 / 10: -0.8603 - 16-MAR-1960 / 11: 0.9999 - 16-MAR-1961 / 12: -0.8814 - 16-MAR-1962 / 13: 0.5400 - 16-MAR-1963 / 14: -0.0620 - 16-MAR-1964 / 15: -0.4407 - 16-MAR-1965 / 16: 0.8219 - 16-MAR-1966 / 17: -0.9952 - 16-MAR-1967 / 18: 0.9168 - 16-MAR-1968 / 19: -0.5985 - 16-MAR-1969 / 20: 0.1328 -say `var,return=lsize` - !-> MESSAGE/CONTINUE 22 -22 - - -GO bn_reset bn_tseries_modulo -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_tseries_modulo -GO bn_tseries_modulo -! bn_tseries_modulo.jnl -! 9/2017 TSERIES aggregations -! -! If a time axis lies within year 0 or year 1 they are seen by ferret -! as modulo. For a tseries aggregation, if the entire aggregated axis -! is still modulo, then mark it as such, but otherwise it is not modulo. -! -! The time axes for these files both lie within year 0. -! The aggregation has a modulo time axis. - -tseries heat_0a.nc, heat_0b.nc -show grid total_ocean_sens_heat - GRID GNP1 - name axis # pts start end subset - scalar_axis LONGITUDE 1 r 0E 0E full - normal Y - normal Z - TIME34 TIME 7mi 16-JAN 12:00 16-NOV 00:00 full - -! The file heat_01 lies in year 1 so the total TSERIES length is longer than a year. - -can dat/all -tseries heat_0a.nc, heat_0b.nc, heat_01.nc -show grid total_ocean_sens_heat - GRID GNP1 - name axis # pts start end subset - scalar_axis LONGITUDE 1 r 0E 0E full - normal Y - normal Z - TIME34 TIME 19 i 16-JAN-0000 12:00 16-DEC-0002 12:00 full - -! Here is the example reported by Russ Fiedler, 9/5/17, on the Ferret list. -! A file in year 1 and a file in year 2 were previously made into a 24-month -! axis which was marked as modulo. - -can dat/all -tseries heat_00.nc, heat_01.nc -show grid total_ocean_sens_heat - GRID GDA1 - name axis # pts start end subset - scalar_axis LONGITUDE 1 r 0E 0E full - normal Y - normal Z - TIME34 TIME 24 i 16-JAN-0001 12:00 16-DEC-0002 12:00 full - - -! What happens with files that are members of our descriptor examples? -! (coads_clim.003 needed changing to have the same time-axis name) - -tseries coads_clim_irreg = coads_clim.001, coads_clim.003 -show grid sst - GRID GMU1 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME35 TIME 4mi 16-JAN 06:00 16-JUN 10:25 full -list/x=180/y=0 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_clim_irreg - SUBSET : 4 points (TIME) - LONGITUDE: 179E - LATITUDE : 1S - 179E - 80 - 16-JAN / 1: 28.20 - 15-FEB / 2: 28.36 - 16-MAY / 3: 28.49 - 16-JUN / 4: 28.32 - -! This descriptor file lists the same datasets, which each contain two -! timesteps, but it lists S_START = S_END on the second set so it reads -! just one timestep from coads_clim.003 - -! The descriptor-file code does not mark the axis as modulo. -! (Not changing this at this time.) - -can data/all -use coads_clim_irreg.des -show grid sst - GRID GJR5 - name axis # pts start end subset - COADSX LONGITUDE 180mr 21E 19E(379) full - COADSY LATITUDE 90 r 89S 89N full - normal Z - TIME34 TIME 3 i 16-JAN-1900 06:00 17-MAY-1900 23:56 full -list/x=180/y=0 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - DATA SET : COAD - FILENAME : coads_clim_irreg.des - SUBSET : 3 points (TIME) - LONGITUDE: 179E - LATITUDE : 1S - 179E - 80 - 16-JAN-1900 / 1: 28.20 - 15-FEB-1900 / 2: 28.36 - 17-MAY-1900 / 3: 28.49 - -GO bn_reset bn_huge_axis -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_huge_axis -GO bn_huge_axis -! bn_huge_axis -! 9/14/17 Dynamic coordinate storage -! Defining extra-long coordinate axes, and save to a file -! Use a dataset with extra-long coordinate axis. - -! Previously this would have given a program-limit-reached error -let yy = if y[j=1:900000] eq 10 then 10.1 else y[j=1:900000] -define axis/y longyax = yy - -let/bad=0 var = y[gy=longyax] - -list/j=5:15 var - VARIABLE : Y[GY=LONGYAX] - SUBSET : 11 points (Y) - 5 / 5: 5.00 - 6 / 6: 6.00 - 7 / 7: 7.00 - 8 / 8: 8.00 - 9 / 9: 9.00 - 10.1 / 10: 10.10 - 11 / 11: 11.00 - 12 / 12: 12.00 - 13 / 13: 13.00 - 14 / 14: 14.00 - 15 / 15: 15.00 -save/clobber/file=a.nc/outtype=int var - -! Previously issued a limit-on-storage-for-coordinates error -can var/all -can axis longyax - -use a -show dat - currently SET data sets: - 1> ./a.nc (default) - name title I J K L - var Y[GY=LONGYAX] ... 1:900000 ... ... - -list/j=5:15 var - VARIABLE : Y[GY=LONGYAX] - FILENAME : a.nc - SUBSET : 11 points (Y) - 5 / 5: 5.00 - 6 / 6: 6.00 - 7 / 7: 7.00 - 8 / 8: 8.00 - 9 / 9: 9.00 - 10.1 / 10: 10.00 - 11 / 11: 11.00 - 12 / 12: 12.00 - 13 / 13: 13.00 - 14 / 14: 14.00 - 15 / 15: 15.00 -list/j=899995:9000000 var - VARIABLE : Y[GY=LONGYAX] - FILENAME : a.nc - SUBSET : 6 points (Y) - 899995 / 899995: 899995. - 899996 / 899996: 899996. - 899997 / 899997: 899997. - 899998 / 899998: 899998. - 899999 / 899999: 899999. - 900000 / 900000: 900000. - -! clean up. Remove our huge file -cancel data/all -sp rm a.nc - -GO bn_reset bn_save_as_global -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_save_as_global -GO bn_save_as_global -! bn_save_asglobal -! 11/2017 -! 6/18 add tests for writing scalar numeric variables -! Simple command to save a variable as a global attribute. -! Works on an existing or a new file. - -! Write to a new file. Gets the default global attributes. - -can mode upcase -let my_extra_attribute = "Extra attribute: This file is just attributes to start with" -save/asglobal/clobber/file=a.nc my_extra_attribute -sp ncdump -h a.nc -netcdf a { - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; - :my_extra_attribute = "Extra attribute: This file is just attributes to start with" ; -} - -! Or write new attributes to a file that has data - -use coads_climatology -save/clobber/file=a.nc sst[x=150:170,y=0:10] -let my_extra_attribute = "Extra attribute: Adding to a file with existing data and attributes" -save/asglobal/append/file=a.nc my_extra_attribute - -let my_num_att = 12.56 -save/asglobal/append/file=a.nc my_num_att -sp ncdump -h a.nc -netcdf a { -dimensions: - COADSX = 10 ; - COADSY = 5 ; - TIME = UNLIMITED ; // (3 currently) -variables: - double COADSX(COADSX) ; - COADSX:units = "degrees_east" ; - COADSX:modulo = " " ; - COADSX:point_spacing = "even" ; - COADSX:axis = "X" ; - COADSX:standard_name = "longitude" ; - double COADSY(COADSY) ; - COADSY:units = "degrees_north" ; - COADSY:point_spacing = "even" ; - COADSY:axis = "Y" ; - COADSY:standard_name = "latitude" ; - double TIME(TIME) ; - TIME:units = "hour since 0000-01-01 00:00:00" ; - TIME:time_origin = "01-JAN-0000 00:00:00" ; - TIME:modulo = 8765.81982421875 ; - TIME:axis = "T" ; - TIME:standard_name = "time" ; - float SST(TIME, COADSY, COADSX) ; - SST:missing_value = -1.e+34f ; - SST:_FillValue = -1.e+34f ; - SST:long_name = "SEA SURFACE TEMPERATURE" ; - SST:history = "From coads_climatology" ; - SST:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; - :my_extra_attribute = "Extra attribute: Adding to a file with existing data and attributes" ; - :my_num_att = 12.56 ; -} - -! Create an attribute from a file variable - -use maize_1 -save/append/file=a.nc/j=4/outtype=float/asglobal maize_yield -sp ncdump -h a.nc -netcdf a { -dimensions: - COADSX = 10 ; - COADSY = 5 ; - TIME = UNLIMITED ; // (3 currently) -variables: - double COADSX(COADSX) ; - COADSX:units = "degrees_east" ; - COADSX:modulo = " " ; - COADSX:point_spacing = "even" ; - COADSX:axis = "X" ; - COADSX:standard_name = "longitude" ; - double COADSY(COADSY) ; - COADSY:units = "degrees_north" ; - COADSY:point_spacing = "even" ; - COADSY:axis = "Y" ; - COADSY:standard_name = "latitude" ; - double TIME(TIME) ; - TIME:units = "hour since 0000-01-01 00:00:00" ; - TIME:time_origin = "01-JAN-0000 00:00:00" ; - TIME:modulo = 8765.81982421875 ; - TIME:axis = "T" ; - TIME:standard_name = "time" ; - float SST(TIME, COADSY, COADSX) ; - SST:missing_value = -1.e+34f ; - SST:_FillValue = -1.e+34f ; - SST:long_name = "SEA SURFACE TEMPERATURE" ; - SST:history = "From coads_climatology" ; - SST:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; - :my_extra_attribute = "Extra attribute: Adding to a file with existing data and attributes" ; - :my_num_att = 12.56 ; - :MAIZE_YIELD = 0.05408529f, 0.1875f, -0.04314715f, 9.96921e+36f ; -} - -! A second write of the same attribute overwrites the attribute values -! (append here is saying dont start a new file) - -save/append/file=a.nc/j=5/outtype=float/asglobal maize_yield -sp ncdump -h a.nc -netcdf a { -dimensions: - COADSX = 10 ; - COADSY = 5 ; - TIME = UNLIMITED ; // (3 currently) -variables: - double COADSX(COADSX) ; - COADSX:units = "degrees_east" ; - COADSX:modulo = " " ; - COADSX:point_spacing = "even" ; - COADSX:axis = "X" ; - COADSX:standard_name = "longitude" ; - double COADSY(COADSY) ; - COADSY:units = "degrees_north" ; - COADSY:point_spacing = "even" ; - COADSY:axis = "Y" ; - COADSY:standard_name = "latitude" ; - double TIME(TIME) ; - TIME:units = "hour since 0000-01-01 00:00:00" ; - TIME:time_origin = "01-JAN-0000 00:00:00" ; - TIME:modulo = 8765.81982421875 ; - TIME:axis = "T" ; - TIME:standard_name = "time" ; - float SST(TIME, COADSY, COADSX) ; - SST:missing_value = -1.e+34f ; - SST:_FillValue = -1.e+34f ; - SST:long_name = "SEA SURFACE TEMPERATURE" ; - SST:history = "From coads_climatology" ; - SST:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; - :my_extra_attribute = "Extra attribute: Adding to a file with existing data and attributes" ; - :my_num_att = 12.56 ; - :MAIZE_YIELD = 0.02854787f, 0.02296161f, 0.02589183f, 0.01891576f ; -} - -! Allow for various /OUTTYPE as in any SAVE command -let another = {1, 2, 3.1} -save/append/file=a.nc/outtype=INT/asglobal another - -let negnum = -123.4 -save/append/file=a.nc/outtype=INT/asglobal negnum -sp ncdump -h a.nc -netcdf a { -dimensions: - COADSX = 10 ; - COADSY = 5 ; - TIME = UNLIMITED ; // (3 currently) -variables: - double COADSX(COADSX) ; - COADSX:units = "degrees_east" ; - COADSX:modulo = " " ; - COADSX:point_spacing = "even" ; - COADSX:axis = "X" ; - COADSX:standard_name = "longitude" ; - double COADSY(COADSY) ; - COADSY:units = "degrees_north" ; - COADSY:point_spacing = "even" ; - COADSY:axis = "Y" ; - COADSY:standard_name = "latitude" ; - double TIME(TIME) ; - TIME:units = "hour since 0000-01-01 00:00:00" ; - TIME:time_origin = "01-JAN-0000 00:00:00" ; - TIME:modulo = 8765.81982421875 ; - TIME:axis = "T" ; - TIME:standard_name = "time" ; - float SST(TIME, COADSY, COADSX) ; - SST:missing_value = -1.e+34f ; - SST:_FillValue = -1.e+34f ; - SST:long_name = "SEA SURFACE TEMPERATURE" ; - SST:history = "From coads_climatology" ; - SST:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; - :my_extra_attribute = "Extra attribute: Adding to a file with existing data and attributes" ; - :my_num_att = 12.56 ; - :MAIZE_YIELD = 0.02854787f, 0.02296161f, 0.02589183f, 0.01891576f ; - :another = 1, 2, 3 ; - :negnum = -123 ; -} - - -! Intentional errors -set mode ignore -set data 1 - -! String attributes may only be single-valued -let multistring = {"a", "b", "c", "", "e"} -save/asglobal/append/file=a.nc multistring - -! Refuse to write multi-dimensioned attributes y-t -save/append/asglobal/x=150/outtype=float/file=a.nc sst - -! Also arbitrarily refuse to write more than a list of 100 values. -set mode ignore -save/append/asglobal/y=10/L=2/outtype=float/file=a.nc sst - -set mode /last upcase - -! *********** v7.4 Additions *********** - -GO bn_reset bn74_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn74_bug_fixes -GO bn74_bug_fixes -! bn74_bug_fixes.jnl -! test various fixes that went into version 7.4 -! 11/17 *acm* -! - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_packed_user_var -! err73_packed_user_var.jnl -! 12/4/2017 acm -! Issue # 1846 -! Writing packed user-variable data correctly to netCDF - - -use coads_climatology - -! Define a user variable -let myvar = sst*1.12 -list/l=1/y=0/x=37:51 myvar - VARIABLE : SST*1.12 - FILENAME : coads_climatology.cdf - SUBSET : 8 points (LONGITUDE) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 37E / 9: .... - 39E / 10: .... - 41E / 11: 30.13 - 43E / 12: 29.68 - 45E / 13: 29.80 - 47E / 14: 30.29 - 49E / 15: 30.25 - 51E / 16: 30.50 - -! Want to pack it and write as short -set var/outtype=short/bad=-30000 myvar -define attribute/output myvar.scale_factor = 0.001 -define attribute/output myvar.offset = -50 - -! previously caused an error, Numeric conversion not representable -save/clobber/file=a.nc/l=1/y=0/x=37:51 myvar - -! Check the values in the file -sp ncdump a.nc -netcdf a { -dimensions: - COADSX = 8 ; - COADSY = 1 ; - TIME = UNLIMITED ; // (1 currently) -variables: - double COADSX(COADSX) ; - COADSX:units = "degrees_east" ; - COADSX:modulo = " " ; - COADSX:point_spacing = "even" ; - COADSX:axis = "X" ; - COADSX:standard_name = "longitude" ; - double COADSY(COADSY) ; - COADSY:units = "degrees_north" ; - COADSY:point_spacing = "even" ; - COADSY:axis = "Y" ; - COADSY:standard_name = "latitude" ; - double TIME(TIME) ; - TIME:units = "hour since 0000-01-01 00:00:00" ; - TIME:time_origin = "01-JAN-0000 00:00:00" ; - TIME:modulo = 8765.81982421875 ; - TIME:axis = "T" ; - TIME:standard_name = "time" ; - short myvar(TIME, COADSY, COADSX) ; - myvar:missing_value = -30000s ; - myvar:_FillValue = -30000s ; - myvar:long_name = "SST*1.12" ; - myvar:scale_factor = 0.001f ; - myvar:offset = -50.f ; - myvar:history = "From coads_climatology" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - COADSX = 37, 39, 41, 43, 45, 47, 49, 51 ; - - COADSY = -1 ; - - TIME = 366 ; - - myvar = - _, _, 30132, 29678, 29803, 30285, 30247, 30502 ; -} - -! Does Ferret reread the data correctly? -can dat/all; can var/all; use a.nc -list myvar - VARIABLE : SST*1.12 - FILENAME : a.nc - SUBSET : 8 points (LONGITUDE) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 1 - 37E / 1: .... - 39E / 2: .... - 41E / 3: 30.13 - 43E / 4: 29.68 - 45E / 5: 29.80 - 47E / 6: 30.29 - 49E / 7: 30.25 - 51E / 8: 30.50 - - -! Disallow adding scale_factor and add_offset to file variables, -! or editing existing ones. Else it's ambiguous. Should scaling -! be applied on reading? Only on writing? both? - -set mode ignore - -use coads_climatology -! Intentional error -define attribute/output sst.scale_factor = 0.001 - -set mode/last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_rsize_negative -! err73_rsize_negative.jnl -! Issue #1847 , large grid size overwhelms internal integer! - - -define axis/t=1-jan-2017:1-apr-2017:.03/unit=days tbig -define axis/y=20s:20n:.01 ybig -define axis/x=0:359:.01/unit=degrees/modulo xbig -define axis/z=0:2:.05/unit=meters zbig -define grid/x=xbig/y=ybig/z=zbig/t=tbig gbig -let/title=Temperature big_temp = y[g=gbig] + 0*(x[g=gbig]+z[g=gbig]+t[g=gbig]) - -! This was returning a negative value -! !-> MESSAGE/CONTINUE -193364099 - -say `big_temp,r=size` - !-> MESSAGE/CONTINUE 17673597058941 -17673597058941 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_calendar_des -! err73_calendar_des.jnl -! See issue # -! Calendar definitions in a descriptor file -! -! 12/20/2017 - -! This descriptor file defines a time axis with 360-day calendar -! for a dataset that has no time axis. The time listed for the -! variable's grid was wrong, should be 01-JAN-1901 - -use add_timeax.des -show grid var - GRID GJR6 - name axis # pts start end subset - XLON1 LONGITUDE 5mr 1E 5E full - YLAT1 LATITUDE 5 r 2S 2N full - normal Z - TIME35 TIME 1 r 01-JAN-1901 00:00 01-JAN-1901 00:00 full -list var - VARIABLE : X[GX=XLON] + Y[GY=YLAT] - DATA SET : test mc file add 360-day time axis to xy set - FILENAME : add_timeax.des - SUBSET : 5 by 5 points (LONGITUDE-LATITUDE) - TIME : 01-JAN-1901 00:00 360_DAY - 1E 2E 3E 4E 5E - 1 2 3 4 5 - 2N / 5: 3.000 4.000 5.000 6.000 7.000 - 1N / 4: 2.000 3.000 4.000 5.000 6.000 - 0 / 3: 1.000 2.000 3.000 4.000 5.000 - 1S / 2: 0.000 1.000 2.000 3.000 4.000 - 2S / 1: -1.000 0.000 1.000 2.000 3.000 - - -! This defines a dataset with the dataset containing -! a Julian time axis -! Should list JULIAN for the calendar - -use t_julian.des -show grid sst - GRID GTJ1 - name axis # pts start end subset - LON1_15 LONGITUDE 15mi 148.95E(148.95) 149.54E(149.54) full - LAT1_1 LATITUDE 1 r 45.144S 45.144S full - normal Z - TIME37 TIME 1 r 01-JAN-2004 00:00 01-JAN-2004 00:00 full -show axis/t `sst,return=taxis` - !-> show axis/t TIME37 - name axis # pts start end - TIME37 TIME 1 r 01-JAN-2004 00:00 01-JAN-2004 00:00 -T0 = 01-jan-1970 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 2 - - L T TBOX TBOXLO TSTEP (day) - 1> 01-JAN-2004 00:00:00 2 31-DEC-2003 00:00:00 12418 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_wtd_var -! err73_wtd_var -! see github issue #1849. -! When weights - partial box size - is zero, the computation -! returned missing. - - -def ax/t/edge/unit=day/mod=365.2425/t0=1-jan-0001 tax_c = {0,31,59.2425,90.2425,120.2425,151.2425,181.2425,212.2425,243.2425,273.2425,304.2425,334.2425,365.2425} -def ax/t/edge/unit=day/t0=1-jan-0001 tax = {146097,146128,146156,146187,146217,146248,146278,146309,146340,146370,146401,146431,146462,146493,146521,146552,146582,146613,146643,146674,146705,146735,146766,146796,146827} -let a = sin(t[gt=tax]) -let a_c = a[gt=tax_c@mod] - - -list a_c[t=1-jan-0301:1-jan-0302@std] - VARIABLE : A[GT=TAX_C@MOD] - TIME : 01-JAN-0301 00:00 to 01-JAN-0302 00:00 (standard deviation) - 0.6974 -list a_c[t=1-jan-0401:1-jan-0402@std] - VARIABLE : A[GT=TAX_C@MOD] - TIME : 01-JAN-0401 00:00 to 01-JAN-0402 00:00 (standard deviation) - 0.6974 - -def ax/t/edge/unit=day/mod=360/t0=1-jan-0001/calendar=d360 tax360_c = {0,30, 60, 90,120,150,180,210,240,270,300,330,360} -def ax/t/edge/unit=day/t0=1-jan-0001/calendar=d360 tax360 = \ -144000 + {0,30,60,90,120,150,180,210,240,270,300,330,360,390,420,450,480,510,540,570,600,630,660,690,720} - -let b = a[gt=tax360@asn] -let b_c = b[gt=tax360_c@mod] - -list b_c[t=1-jan-0301:1-jan-0302@std] - VARIABLE : B[GT=TAX360_C@MOD] - TIME : 01-JAN-0301 00:00 to 01-JAN-0302 00:00 (standard deviation) 360_DAY - 0.7003 -list b_c[t=1-jan-0401:1-jan-0402@std] - VARIABLE : B[GT=TAX360_C@MOD] - TIME : 01-JAN-0401 00:00 to 01-JAN-0402 00:00 (standard deviation) 360_DAY - 0.7003 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_time_plot_precision -! err73_time_plot_precision -! ACM 1/4/2018 -! issue 1009, from ticket 1737 -! high resolution, short-duration time intervals with time -! axis in seconds with lots of precision plotted wrongly - -! Define an axis with timesteps of 1 minute, units of seconds, with origin in 1970. -! Define a 2D variable using this axis. - -define axis/z=1:100:5/depth zaxis -define axis/t=1-feb-2010:3-feb-2010:3600/units=seconds/t0=1-jan-1970 tsec1970 - -let ztvar1970 = L[gt=tsec1970] *z[gz=zaxis] -set view ul - -! This plot previously puts the shade color boxes at the wrong place -shade ztvar1970 - -! Test SHADE/TRANS -set view ur -shade/trans ztvar1970 - -! test xt and xt plots -define axis/y=1:30:1/units=degrees_north yaxis -let ytvar1970 = L[gt=tsec1970] *y[gy=yaxis] - -set view ll -shade ytvar1970 - -define axis/x=1:30:1/units=degrees_east xaxis -let xtvar1970 = L[gt=tsec1970] *x[gx=xaxis] - -set view lr -shade xtvar1970 - -frame /file=time_plot_precision_shade.gif - -! Now fill plots - -cancel view -set view ul -fill ztvar1970 - -set view ur -fill/trans ztvar1970 - -set view ll -fill ytvar1970 - -set view lr -fill xtvar1970 - -frame /file=time_plot_precision_fill.gif - -! Now vector plots - -cancel view -set v ul -let zvec2 = L[gt=tsec1970] *RANDU(z[gz=zaxis]) -vector cos(ztvar1970), sin(zvec2) -set v ur -let xvec2 = L[gt=tsec1970] *RANDU(x[gx=xaxis]) -vector cos(xtvar1970), sin(xvec2) - -set v ll -let yvec2 = L[gt=tsec1970] *RANDU(y[gy=yaxis]) -vector cos(ytvar1970), sin(yvec2) - -frame /file=time_plot_precision_vector.gif - -! Hovmuller plot with overlays -! Previously line plots were correct, shade and fill plots were not -! or line plot not drawn - -cancel view -fill ztvar1970 -plot/over/thick/color=red ztvar1970[z=@loc:1200] - -! PLOT/VS overlays - give the first arg some time units. -let/units="seconds since `ztvar1970,return=t0`" tt = t[gt=ztvar1970] - !-> DEFINE VARIABLE/units="seconds since 1-JAN-1970" tt = t[gt=ztvar1970] -let ll = L[gt=ztvar1970] -plot/vs/over/color=green/sym=19 tt,LL - -! some other variable on a different but overlapping time axis - -define axis/t="21-jan-2010:00:10:00":"5-feb-2010:00:10:00":3/units=hours/t0=1-jan-1980 tax2 -let tt = t[gt=tax2] -let var_1d = 60+5*randu(tt) -plot/over/thick/color=black var_1d - -frame /file=time_plot_precision_hovmuller.gif - -! 2D overlay - -fill ztvar1970 -let var2 = L[gt=tax2] + z[gz=zaxis] -shade/over/t="1-feb-2010:12:00":"2-feb-2010:06:00"/lev=40/pal=grayscale var2 - -frame /file=time_plot_precision_2doverlay.gif - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_agg_1_time -! err73_agg_1_time -! see github issue #1853 -! Grid cell edges when aggregation is just one point in time - - -def ax/edge/t=1-jan-0001:1-jan-0011/np=1/unit=day/t0=1-jan-0001/cal=julian tax -let a = t[gt=tax] -save/clob/file="a.nc"/bounds a - -can var/all -can ax tax - -! simple use command, lists correct edges -use a.nc -list/nohead tboxlo[gt=a], tboxhi[gt=a] -I / *: 0.0000 3652. - -can data/all -can dat/all - -! tseries aggregation, previously assigned a box size of 1 -tseries agg = {"a.nc"} -list/nohead tboxlo[gt=a], tboxhi[gt=a] -I / *: 0.0000 3652. - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_shade_curvi -! err73_shade_curvi -! 1/17/2018 See issue 1854 corruption of coordinate data on curvi -! graphics commands using /set - -use tripolar_subset.nc -let/d=1 plot_var = u -let xcoord = geolon_c -let ycoord = geolat_c - -! The plot is fine when the commands after /SET are not LET commands - -set v ul -shade/set plot_var , xcoord, ycoord -ppl ylab "my y label" -ppl shade - -! The coordinate data loaded by SHADE/SET becomes corrupted when LET -! commands are issued after the /SET. Previously there were corrupted -! plots in the next 3 frames - -LET add_urls = 0 -set v ur -shade/set plot_var, xcoord, ycoord -LET add_urls = 1 -ppl shade - -set v ll -fill/set plot_var, xcoord, ycoord -LET add_urls = 3 -ppl fill - -set v lr -let v2 = 10*plot_var -vector/set plot_var, v2, xcoord, ycoord - -LET add_urls = 4 -ppl vector - -! /OVER/SET -contour/over/set/color=red plot_var, xcoord, ycoord -ppl conset,0.07,4,,,,,,1 - -ppl contour/over - - -frame/file=curvi_set.gif - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_go_box -! err73_go_box.jnl -! 2/12/2018 -! The box.jnl script had bugs - -cancel mode logo -use coads_climatology - -!set mode ignore - -! This command works ok - -set view ul; shade/l=1 sst -go box 300 320 45 20 9 - -! Negative longitudes were not translated so this box was not drawn - -set view ur; shade/l=1 sst -go box (-220) (-205) 30 42 7 - -! Negative arguments were not consistently handled -! Needed to be put into parentheses - now the script does this. - -set view ll; shade/l=1 sst -go box -200 -180 -45 20 11 - -! Script now modernized to take arguments other than -! simple color name or pen number - -set view lr; shade/l=1 sst -go box -90 -10 -10 10 black/thick/dash - -frame/file=go_box.gif - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_vector_aspect_yz -! err73_vector_aspect_yz.jnl -! issue #1860 -! This question: -! https://www.pmel.noaa.gov/maillists/tmap/ferret_users/fu_2017/msg00755.html - -set window/aspect=0.5 - -define view/axes/x=0.1:0.4/y=0.1:0.7 myleft -define view/axes/x=0.6:0.9/y=0.1:0.7 myright -set view myleft - -let depdata = {0, 10, 20, 40, 80, 120, 180, 300, 450, 650, 900, 1200} -let totaldepth = 1200 -let halfdepth = 600 -define axis/x=-1:50:1/units=degrees_east xax -define axis/y=-40:40:2/units=degrees_north yax -define axis/depth/z/units=meters/from_data zax = depdata -let/title=u u = 1 + 0*(x[gx=xax] + y[gy=yax] + z[gz=zax]) -let/title=w w = 1 + 0*(x[gx=xax] + y[gy=yax] + z[gz=zax]) - -! if lat1 = 0, the vectors are 45 degrees -let lat1 = 0 - -let rad_earth = 6371.e3 ! [m] -let pi = 4*atan(1) -let x_of_deg = rad_earth * cos(pi * lat1 / 180) * pi / 180 -let deg_of_x = 1 / x_of_deg -let dellon = deg_of_x * halfdepth ! m -> degE -vector/aspect/xskip=1/vlimits=0:`totaldepth`\ -/hlimits=`(-1)*dellon`:`dellon`\ -/length=0.1/y=`lat1` u,w - !-> vector/aspect/xskip=1/vlimits=0:1200/hlimits=-0.005395929635512383:0.005395929635512383/length=0.1/y=0 u,w - - -! but if not, they were a bit off -set view myright - -let lat1 = 24 -let rad_earth = 6371.e3 ! [m] -let pi = 4*atan(1) -let x_of_deg = rad_earth * cos(pi * lat1 / 180) * pi / 180 -let deg_of_x = 1 / x_of_deg -let dellon = deg_of_x * halfdepth ! m -> degE -vector/aspect/xskip=1/vlimits=0:`totaldepth`\ -/hlimits=`(-1)*dellon`:`dellon`\ -/length=0.1/y=`lat1` u,w - !-> vector/aspect/xskip=1/vlimits=0:1200/hlimits=-0.005906580335297765:0.005906580335297765/length=0.1/y=24 u,w - -frame/file=vector_lats.gif - -! Restore default aspect ratio -set window/aspect=0.75 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_extra_digit_contourlab -! err73_extra_digit_contourlab.jnl -! 2/15/2918 -! Issue 1858: The plot on the right, with a smaller number of -! color levels specified, had the contour line labels drawn with -! an unneeded digit after the decimal point 20.0, 22.0, etc - -set window/aspect=0.5 - -use coads_climatology -set view left; contour/l=1/lev=2d sst -set view right; contour/l=1/x=120e:80w/y=20s:20n/lev=2d sst - -frame/file=extra_digit_contourlab.gif - -! Restore default aspect ratio -set window/aspect=0.75 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_append_cdf -! err73_append_cdf -! Issue 1863: invisible error on appending to netCDF -! when forgetting to use SAVE or LIST/FORMAT=CDF - -define axis/x=1:5:1 xax -define axis/t=1:4:1 tax - -let xyvar = 1./0 + 0*x[gx=xax]*t[gt=tax] - -! create a file with all-missing data, then -! use append to add timesteps. The same behavior -! happens with just simple appending in time - -save/clobber/file=a.nc xyvar - - -! Use SAVE/APPEND/L= to write one timestep at a time - -let lstep = l[gt=tax] -repeat/name=ll/range=1:2 ( \ - let xyvar = if ( lstep eq `ll` ) then x[gx=xax] + `ll` + 0*lstep ;\ - save/append/file=a.nc/l=`ll` xyvar ;\ - ) -!-> REPEAT: LL:1 - !-> DEFINE VARIABLE xyvar = if ( lstep eq 1 ) then x[gx=xax] + 1 + 0*lstep - !-> LIST/FORMAT=CDF/append/file=a.nc/l=1 xyvar -!-> REPEAT: LL:2 - !-> DEFINE VARIABLE xyvar = if ( lstep eq 2 ) then x[gx=xax] + 2 + 0*lstep - !-> LIST/FORMAT=CDF/append/file=a.nc/l=2 xyvar -sp ncdump a.nc -netcdf a { -dimensions: - xax = 5 ; - tax = UNLIMITED ; // (4 currently) -variables: - double xax(xax) ; - xax:point_spacing = "even" ; - xax:axis = "X" ; - double tax(tax) ; - tax:axis = "T" ; - double xyvar(tax, xax) ; - xyvar:missing_value = -1.e+34 ; - xyvar:_FillValue = -1.e+34 ; - xyvar:long_name = "1./0 + 0*X[GX=XAX]*T[GT=TAX]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - xax = 1, 2, 3, 4, 5 ; - - tax = 1, 2, 3, 4 ; - - xyvar = - 2, 3, 4, 5, 6, - 3, 4, 5, 6, 7, - _, _, _, _, _, - _, _, _, _, _ ; -} - -! This had LIST not SAVE or LIST/FORMAT=CDF -! It just seemed to run but did nothing, and issued no error -! Now return an error - -set mode ignore - -repeat/name=ll/range=3:4 ( \ - let xyvar = if ( lstep eq `ll` ) then x[gx=xax] + `ll` + 0*lstep ;\ - list/append/file=a.nc/l=`ll` xyvar ;\ - ) -!-> REPEAT: LL:3 - !-> DEFINE VARIABLE xyvar = if ( lstep eq 3 ) then x[gx=xax] + 3 + 0*lstep - !-> list/append/file=a.nc/l=3 xyvar -!-> REPEAT: LL:4 - !-> DEFINE VARIABLE xyvar = if ( lstep eq 4 ) then x[gx=xax] + 4 + 0*lstep - !-> list/append/file=a.nc/l=4 xyvar - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_poly_vec_script -! err73_poly_vec_script.jnl -! Issue 1864: combination of expressions and contexts -! have scatter/gather operations going into infinite loop - -! Simplified exapmle from poly_vectors_demo.jnl - -use coads_climatology - -! fake vector components -let uwnd = sst -let vwnd = sst - -SET REGION/X=131:181/Y=21:61/L=1 -LET mp_central_meridian = (131+181)/2 -LET mp_standard_parallel = (60+20)/2 -GO mp_stereographic_north `mp_central_meridian` `mp_standard_parallel` - !-> GO mp_stereographic_north 156 40 - -set grid uwnd - -GO mp_aspect -FILL/NOAXIS/NOKEY/PAL=inverse_grayscale/TITLE="Poly Vectors" sst, x_page,y_page -LET x_vec = X[GX=uwnd,X=131:181] + 0*Y[GY=uwnd,Y=21:61] -LET y_vec = 0*X[GX=uwnd,X=131:181] + Y[GY=uwnd,Y=21:61] -LET u_vec = uwnd[X=131:181,Y=21:61,L=1] -LET v_vec = vwnd[X=131:181,Y=21:61,L=1] - -! In v7.1-v7.3, Ferret just hangs, doing endless repetitions of "doing gather/compress" - -GO mp_poly_vectors x_vec y_vec u_vec v_vec 3 "arrow" - -*** MP_POLY_VECTORS: Issue commands such as follow to plot the vectors *** -*** POLYGON/OVER/NOLABEL/KEY/NOAXES MP_X_ARROW, MP_Y_ARROW, MY_VALUES[J=1:546] *** -*** SET REGION SAVE *** - - -POLYGON/OVER/NOLABEL/KEY/NOAXES MP_X_ARROW, MP_Y_ARROW, ysequence(vwnd[X=131:181,Y=21:61,L=5]) - -frame/file=mp_poly_vec.gif - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_reshape -! err73_reshape.jnl -! Issue 1867, context and RESHAPE function -! See also err491_reshape_ctx and bn_true_monthly -! whose outputs had changed 3/17 -! 4/10/18 ACM -! -! Create a dataset with data along just one axis - -use levitus_3d_subset -save/x=121/y=-49/file=a.nc/clobber temp -cancel data/all -use a.nc - -define axis/x=4:4:1/units=count xax -let dummy = x[gx=xax] + z[gz=temp] -show grid dummy - GRID (G188) - name axis # pts start end subset - xax X (COUNT) 1 r 4 4 full - normal Y - ZAXLEVITR DEPTH (m) 20 i- 0 5000 full - normal T - -! Now try to use RESHAPE to stick the data onto this new grid. It should list 20 points in Z -! The bug was it listed just 1 point. -list reshape(temp, dummy) - VARIABLE : RESHAPE(TEMP, DUMMY) - FILENAME : a.nc - SUBSET : 20 points (DEPTH (m)) - X (COUNT): 4 - 4 - 1 - 0 / 1: 6.827 - 10 / 2: 6.843 - 20 / 3: 6.840 - 30 / 4: 6.741 - 50 / 5: 6.624 - 75 / 6: 6.751 - 100 / 7: 6.462 - 150 / 8: 6.466 - 200 / 9: 6.026 - 300 / 10: 5.445 - 400 / 11: 5.187 - 600 / 12: 4.571 - 800 / 13: 3.823 - 1000 / 14: 3.262 - 1200 / 15: 2.757 - 1500 / 16: 2.468 - 2000 / 17: 2.090 - 3000 / 18: 1.184 - 4000 / 19: .... - 5000 / 20: .... - -! If the regrid is to a different Z axis, w/ same or different coordinates, it works correctly. -use a.nc -define axis/z/depth/units="`temp,return=zunits`" znew = z[gz=temp] - !-> define axis/z/depth/units="meters" znew = z[gz=temp] -let dummy = x[gx=xax] + z[gz=znew] -list reshape(temp, dummy) - VARIABLE : RESHAPE(TEMP, DUMMY) - FILENAME : a.nc - SUBSET : 20 points (DEPTH (m)) - X (COUNT): 4 - 4 - 1 - 0 / 1: 6.827 - 10 / 2: 6.843 - 20 / 3: 6.840 - 30 / 4: 6.741 - 50 / 5: 6.624 - 75 / 6: 6.751 - 100 / 7: 6.462 - 150 / 8: 6.466 - 200 / 9: 6.026 - 300 / 10: 5.445 - 400 / 11: 5.187 - 600 / 12: 4.571 - 800 / 13: 3.823 - 1000 / 14: 3.262 - 1200 / 15: 2.757 - 1500 / 16: 2.468 - 2000 / 17: 2.090 - 3000 / 18: 1.184 - 4000 / 19: .... - 5000 / 20: .... - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err73_scale_miss_fill -! err73_scale_miss_fill.jnl -! Tests for the fix to issue 1861 -! scaled data with different missing_value and _FillValue -! attributes. -! -! index numbers 9 and 10 have the _FillValue, -! 1 and 4 are marked with missing_value. - -use fill_and_miss.nc -list sea_level - VARIABLE : sea level (meters) - DATA SET : TOPEX/POSEIDON SEA LEVEL - FILENAME : fill_and_miss.nc - SUBSET : 15 points (LONGITUDE) - LATITUDE : 45.5N - 45.5N - 1 - 10.5W / 1: .... - 9.5W / 2: -0.01500 - 8.5W / 3: -0.00400 - 7.5W / 4: .... - 6.5W / 5: 0.05000 - 5.5W / 6: 0.05900 - 4.5W / 7: 0.06500 - 3.5W / 8: 0.06900 - 2.5W / 9: .... - 1.5W / 10: .... - 0.5W / 11: 0.00400 - 0.5E / 12: 0.04800 - 1.5E / 13: 0.04600 - 2.5E / 14: 0.07300 - 3.5E / 15: 0.07700 - -GO bn_reset bn_clim_special -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_clim_special -GO bn_clim_special -! bn_clim_special.jnl -! Test the climatological axes from Andrew's monthly -! and seasonal axis definition files. -! 12/20/2017 (see issue #1848) - -! Open the datsets containing the axis definitions and -! use SHOW AXIS/T to list the axis properties and coordinates - -use clim_axes_gregorian -sh axis/t *_GRG - name axis # pts start end - MON_IRREG_GRG TIME 12mi 16-JAN 12:00 16-DEC 17:49 -T0 = 01-JAN-0001 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 12:00:00 31 01-JAN 00:00:00 15.5 - 2> 15-FEB 02:54:36 28.2425 01-FEB 00:00:00 45.12125 - 3> 16-MAR 17:49:12 31 01-MAR 05:49:12 74.7425 - 4> 16-APR 05:49:12 30 01-APR 05:49:12 105.2425 - 5> 16-MAY 17:49:12 31 01-MAY 05:49:12 135.7425 - 6> 16-JUN 05:49:12 30 01-JUN 05:49:12 166.2425 - 7> 16-JUL 17:49:12 31 01-JUL 05:49:12 196.7425 - 8> 16-AUG 17:49:12 31 01-AUG 05:49:12 227.7425 - 9> 16-SEP 05:49:12 30 01-SEP 05:49:12 258.2425 - 10> 16-OCT 17:49:12 31 01-OCT 05:49:12 288.7425 - 11> 16-NOV 05:49:12 30 01-NOV 05:49:12 319.2425 - 12> 16-DEC 17:49:12 31 01-DEC 05:49:12 349.7425 - JFM_IRREG_GRG TIME 4mi 15-FEB 02:54 16-NOV 05:49 -T0 = 01-JAN-0001 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 15-FEB 02:54:36 90.2425 01-JAN 00:00:00 45.12125 - 2> 16-MAY 17:49:12 91 01-APR 05:49:12 135.7425 - 3> 16-AUG 05:49:12 92 01-JUL 05:49:12 227.2425 - 4> 16-NOV 05:49:12 92 01-OCT 05:49:12 319.2425 - DJF_IRREG_GRG TIME 4mi 15-JAN 08:43 16-OCT 23:38 -T0 = 01-JAN-0001 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 15-JAN 08:43:48 90.2425 01-DEC 05:49:12 379.3637 - 2> 16-APR 11:38:24 92 01-MAR 11:38:24 470.485 - 3> 17-JUL 11:38:24 92 01-JUN 11:38:24 562.485 - 4> 16-OCT 23:38:24 91 01-SEP 11:38:24 653.985 - NDJ_IRREG_GRG TIME 4mi 17-DEC 05:49 16-SEP 11:38 -T0 = 01-JAN-0001 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 17-DEC 05:49:12 92 01-NOV 05:49:12 350.2425 - 2> 17-MAR 20:43:48 89.2425 01-FEB 05:49:12 440.8637 - 3> 16-JUN 11:38:24 92 01-MAY 11:38:24 531.485 - 4> 16-SEP 11:38:24 92 01-AUG 11:38:24 623.485 - MON_REG_GRG TIME 12mr 16-JAN 05:14 17-DEC 00:34 -T0 = 01-JAN-0001 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 05:14:33 30.43688 01-JAN 00:00:00 15.21844 - 2> 15-FEB 15:43:39 30.43688 31-JAN 10:29:06 45.65531 - 3> 18-MAR 02:12:45 30.43688 02-MAR 20:58:12 76.09219 - 4> 17-APR 12:41:51 30.43688 02-APR 07:27:18 106.5291 - 5> 17-MAY 23:10:57 30.43688 02-MAY 17:56:24 136.9659 - 6> 17-JUN 09:40:03 30.43688 02-JUN 04:25:30 167.4028 - 7> 17-JUL 20:09:09 30.43688 02-JUL 14:54:36 197.8397 - 8> 17-AUG 06:38:15 30.43688 02-AUG 01:23:42 228.2766 - 9> 16-SEP 17:07:21 30.43688 01-SEP 11:52:48 258.7134 - 10> 17-OCT 03:36:27 30.43688 01-OCT 22:21:54 289.1503 - 11> 16-NOV 14:05:33 30.43688 01-NOV 08:51:00 319.5872 - 12> 17-DEC 00:34:39 30.43688 01-DEC 19:20:06 350.0241 - JFM_REG_GRG TIME 4mr 15-FEB 15:43 16-NOV 14:05 -T0 = 01-JAN-0001 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 15-FEB 15:43:39 91.31063 01-JAN 00:00:00 45.65531 - 2> 17-MAY 23:10:57 91.31063 02-APR 07:27:18 136.9659 - 3> 17-AUG 06:38:15 91.31063 02-JUL 14:54:36 228.2766 - 4> 16-NOV 14:05:33 91.31063 01-OCT 22:21:54 319.5872 - DJF_REG_GRG TIME 4mr 16-JAN 11:03 17-OCT 09:25 -T0 = 01-JAN-0001 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 11:03:45 91.31062 01-DEC 19:20:06 380.4609 - 2> 17-APR 18:31:03 91.31062 03-MAR 02:47:24 471.7716 - 3> 18-JUL 01:58:21 91.31062 02-JUN 10:14:42 563.0822 - 4> 17-OCT 09:25:39 91.31062 01-SEP 17:42:00 654.3928 - NDJ_REG_GRG TIME 4mr 17-DEC 00:34 16-SEP 22:56 -T0 = 01-JAN-0001 00:00:00 - Axis span (to cell edges) = 365.2425 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 17-DEC 00:34:39 91.31062 01-NOV 08:51:00 350.0241 - 2> 18-MAR 08:01:57 91.31062 31-JAN 16:18:18 441.3347 - 3> 17-JUN 15:29:15 91.31062 02-MAY 23:45:36 532.6453 - 4> 16-SEP 22:56:33 91.31062 02-AUG 07:12:53 623.9559 - -cancel data/all - -cancel axis MON_IRREG_GRG -cancel axis JFM_IRREG_GRG -cancel axis DJF_IRREG_GRG -cancel axis NDJ_IRREG_GRG -cancel axis MON_REG_GRG -cancel axis JFM_REG_GRG -cancel axis DJF_REG_GRG -cancel axis NDJ_REG_GRG - - -use clim_axes_julian -sh axis/t *_JUL - name axis # pts start end - tax_jul TIME 9 r 01-JAN-0001 00:00 01-JAN-0009 00:00 -T0 = 1-JAN-0001 -CALENDAR = JULIAN - Axis span (to cell edges) = 9 - - L T TBOX TBOXLO TSTEP (YEAR) - 1> 01-JAN-0001 00:00:00 1 02-JUL-0000 09:00:00 0 - 2> 01-JAN-0002 06:00:00 1 02-JUL-0001 15:00:00 1 - 3> 01-JAN-0003 12:00:00 1 02-JUL-0002 21:00:00 2 - 4> 01-JAN-0004 18:00:00 1 03-JUL-0003 03:00:00 3 - 5> 01-JAN-0005 00:00:00 1 02-JUL-0004 09:00:00 4 - 6> 01-JAN-0006 06:00:00 1 02-JUL-0005 15:00:00 5 - 7> 01-JAN-0007 12:00:00 1 02-JUL-0006 21:00:00 6 - 8> 01-JAN-0008 18:00:00 1 03-JUL-0007 03:00:00 7 - 9> 01-JAN-0009 00:00:00 1 02-JUL-0008 09:00:00 8 - MON_IRREG_JUL TIME 12mi 16-JAN 12:00 16-DEC 18:00 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 365.25 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 12:00:00 31 01-JAN 00:00:00 15.5 - 2> 15-FEB 03:00:00 28.25 01-FEB 00:00:00 45.125 - 3> 16-MAR 18:00:00 31 01-MAR 06:00:00 74.75 - 4> 16-APR 06:00:00 30 01-APR 06:00:00 105.25 - 5> 16-MAY 18:00:00 31 01-MAY 06:00:00 135.75 - 6> 16-JUN 06:00:00 30 01-JUN 06:00:00 166.25 - 7> 16-JUL 18:00:00 31 01-JUL 06:00:00 196.75 - 8> 16-AUG 18:00:00 31 01-AUG 06:00:00 227.75 - 9> 16-SEP 06:00:00 30 01-SEP 06:00:00 258.25 - 10> 16-OCT 18:00:00 31 01-OCT 06:00:00 288.75 - 11> 16-NOV 06:00:00 30 01-NOV 06:00:00 319.25 - 12> 16-DEC 18:00:00 31 01-DEC 06:00:00 349.75 - JFM_IRREG_JUL TIME 4mi 15-FEB 03:00 16-NOV 06:00 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 365.25 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 15-FEB 03:00:00 90.25 01-JAN 00:00:00 45.125 - 2> 16-MAY 18:00:00 91 01-APR 06:00:00 135.75 - 3> 16-AUG 06:00:00 92 01-JUL 06:00:00 227.25 - 4> 16-NOV 06:00:00 92 01-OCT 06:00:00 319.25 - DJF_IRREG_JUL TIME 4mi 15-JAN 09:00 17-OCT 00:00 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 365.25 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 15-JAN 09:00:00 90.25 01-DEC 06:00:00 379.375 - 2> 16-APR 12:00:00 92 01-MAR 12:00:00 470.5 - 3> 17-JUL 12:00:00 92 01-JUN 12:00:00 562.5 - 4> 17-OCT 00:00:00 91 01-SEP 12:00:00 654 - NDJ_IRREG_JUL TIME 4mi 17-DEC 06:00 16-SEP 12:00 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 365.25 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 17-DEC 06:00:00 92 01-NOV 06:00:00 350.25 - 2> 17-MAR 21:00:00 89.25 01-FEB 06:00:00 440.875 - 3> 16-JUN 12:00:00 92 01-MAY 12:00:00 531.5 - 4> 16-SEP 12:00:00 92 01-AUG 12:00:00 623.5 - MON_REG_JUL TIME 12mr 16-JAN 05:15 17-DEC 00:45 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 365.25 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 05:15:00 30.4375 01-JAN 00:00:00 15.21875 - 2> 15-FEB 15:45:00 30.4375 31-JAN 10:30:00 45.65625 - 3> 18-MAR 02:15:00 30.4375 02-MAR 21:00:00 76.09375 - 4> 17-APR 12:45:00 30.4375 02-APR 07:30:00 106.5313 - 5> 17-MAY 23:15:00 30.4375 02-MAY 18:00:00 136.9688 - 6> 17-JUN 09:45:00 30.4375 02-JUN 04:30:00 167.4063 - 7> 17-JUL 20:15:00 30.4375 02-JUL 15:00:00 197.8438 - 8> 17-AUG 06:45:00 30.4375 02-AUG 01:30:00 228.2813 - 9> 16-SEP 17:15:00 30.4375 01-SEP 12:00:00 258.7188 - 10> 17-OCT 03:45:00 30.4375 01-OCT 22:30:00 289.1563 - 11> 16-NOV 14:15:00 30.4375 01-NOV 09:00:00 319.5938 - 12> 17-DEC 00:45:00 30.4375 01-DEC 19:30:00 350.0313 - JFM_REG_JUL TIME 4mr 15-FEB 15:45 16-NOV 14:15 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 365.25 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 15-FEB 15:45:00 91.3125 01-JAN 00:00:00 45.65625 - 2> 17-MAY 23:15:00 91.3125 02-APR 07:30:00 136.9688 - 3> 17-AUG 06:45:00 91.3125 02-JUL 15:00:00 228.2813 - 4> 16-NOV 14:15:00 91.3125 01-OCT 22:30:00 319.5938 - DJF_REG_JUL TIME 4mr 16-JAN 11:15 17-OCT 09:45 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 365.25 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 11:15:00 91.3125 01-DEC 19:30:00 380.4688 - 2> 17-APR 18:45:00 91.3125 03-MAR 03:00:00 471.7813 - 3> 18-JUL 02:15:00 91.3125 02-JUN 10:30:00 563.0938 - 4> 17-OCT 09:45:00 91.3125 01-SEP 18:00:00 654.4063 - NDJ_REG_JUL TIME 4mr 17-DEC 00:45 16-SEP 23:15 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 365.25 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 17-DEC 00:45:00 91.3125 01-NOV 09:00:00 350.0313 - 2> 18-MAR 08:15:00 91.3125 31-JAN 16:30:00 441.3438 - 3> 17-JUN 15:45:00 91.3125 03-MAY 00:00:00 532.6563 - 4> 16-SEP 23:15:00 91.3125 02-AUG 07:30:00 623.9688 - -cancel data/all -cancel axis MON_IRREG_JUL -cancel axis JFM_IRREG_JUL -cancel axis DJF_IRREG_JUL -cancel axis NDJ_IRREG_JUL -cancel axis MON_REG_JUL -cancel axis JFM_REG_JUL -cancel axis DJF_REG_JUL -cancel axis NDJ_REG_JUL - - -use clim_axes_noleap -sh axis/t *_NLP - name axis # pts start end - mon_irreg_nlp TIME 12mi 16-JAN 12:00 16-DEC 12:00 -T0 = 1-JAN-0001 -CALENDAR = NOLEAP - Axis span (to cell edges) = 365 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 16-JAN 12:00:00 31 01-JAN 00:00:00 15.5 - 2> 15-FEB 00:00:00 28 01-FEB 00:00:00 45 - 3> 16-MAR 12:00:00 31 01-MAR 00:00:00 74.5 - 4> 16-APR 00:00:00 30 01-APR 00:00:00 105 - 5> 16-MAY 12:00:00 31 01-MAY 00:00:00 135.5 - 6> 16-JUN 00:00:00 30 01-JUN 00:00:00 166 - 7> 16-JUL 12:00:00 31 01-JUL 00:00:00 196.5 - 8> 16-AUG 12:00:00 31 01-AUG 00:00:00 227.5 - 9> 16-SEP 00:00:00 30 01-SEP 00:00:00 258 - 10> 16-OCT 12:00:00 31 01-OCT 00:00:00 288.5 - 11> 16-NOV 00:00:00 30 01-NOV 00:00:00 319 - 12> 16-DEC 12:00:00 31 01-DEC 00:00:00 349.5 - tax_nlp TIME 9 r 01-JAN-0001 00:00 01-JAN-0009 00:00 -T0 = 1-JAN-0001 -CALENDAR = NOLEAP - Axis span (to cell edges) = 9 - - L T TBOX TBOXLO TSTEP (YEAR) - 1> 01-JAN-0001 00:00:00 1 02-JUL-0000 12:00:00 0 - 2> 01-JAN-0002 00:00:00 1 02-JUL-0001 12:00:00 1 - 3> 01-JAN-0003 00:00:00 1 02-JUL-0002 12:00:00 2 - 4> 01-JAN-0004 00:00:00 1 02-JUL-0003 12:00:00 3 - 5> 01-JAN-0005 00:00:00 1 02-JUL-0004 12:00:00 4 - 6> 01-JAN-0006 00:00:00 1 02-JUL-0005 12:00:00 5 - 7> 01-JAN-0007 00:00:00 1 02-JUL-0006 12:00:00 6 - 8> 01-JAN-0008 00:00:00 1 02-JUL-0007 12:00:00 7 - 9> 01-JAN-0009 00:00:00 1 02-JUL-0008 12:00:00 8 - JFM_IRREG_NLP TIME 4mi 15-FEB 00:00 16-NOV 00:00 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = NOLEAP - Axis span (to cell edges) = 365 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 15-FEB 00:00:00 90 01-JAN 00:00:00 45 - 2> 16-MAY 12:00:00 91 01-APR 00:00:00 135.5 - 3> 16-AUG 00:00:00 92 01-JUL 00:00:00 227 - 4> 16-NOV 00:00:00 92 01-OCT 00:00:00 319 - DJF_IRREG_NLP TIME 4mi 15-JAN 00:00 16-OCT 12:00 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = NOLEAP - Axis span (to cell edges) = 365 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 15-JAN 00:00:00 90 01-DEC 00:00:00 379 - 2> 16-APR 00:00:00 92 01-MAR 00:00:00 470 - 3> 17-JUL 00:00:00 92 01-JUN 00:00:00 562 - 4> 16-OCT 12:00:00 91 01-SEP 00:00:00 653.5 - NDJ_IRREG_NLP TIME 4mi 17-DEC 00:00 16-SEP 00:00 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = NOLEAP - Axis span (to cell edges) = 365 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 17-DEC 00:00:00 92 01-NOV 00:00:00 350 - 2> 17-MAR 12:00:00 89 01-FEB 00:00:00 440.5 - 3> 16-JUN 00:00:00 92 01-MAY 00:00:00 531 - 4> 16-SEP 00:00:00 92 01-AUG 00:00:00 623 - MON_REG_NLP TIME 12mr 16-JAN 05:00 16-DEC 19:00 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = NOLEAP - Axis span (to cell edges) = 365 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 05:00:00 30.41667 01-JAN 00:00:00 15.20833 - 2> 15-FEB 15:00:00 30.41667 31-JAN 10:00:00 45.625 - 3> 18-MAR 01:00:00 30.41667 02-MAR 20:00:00 76.04167 - 4> 17-APR 11:00:00 30.41667 02-APR 06:00:00 106.4583 - 5> 17-MAY 21:00:00 30.41667 02-MAY 16:00:00 136.875 - 6> 17-JUN 07:00:00 30.41667 02-JUN 02:00:00 167.2917 - 7> 17-JUL 17:00:00 30.41667 02-JUL 12:00:00 197.7083 - 8> 17-AUG 03:00:00 30.41667 01-AUG 22:00:00 228.125 - 9> 16-SEP 13:00:00 30.41667 01-SEP 08:00:00 258.5417 - 10> 16-OCT 23:00:00 30.41667 01-OCT 18:00:00 288.9583 - 11> 16-NOV 09:00:00 30.41667 01-NOV 04:00:00 319.375 - 12> 16-DEC 19:00:00 30.41667 01-DEC 14:00:00 349.7917 - JFM_REG_NLP TIME 4mr 15-FEB 15:00 16-NOV 09:00 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = NOLEAP - Axis span (to cell edges) = 365 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 15-FEB 15:00:00 91.25 01-JAN 00:00:00 45.625 - 2> 17-MAY 21:00:00 91.25 02-APR 06:00:00 136.875 - 3> 17-AUG 03:00:00 91.25 02-JUL 12:00:00 228.125 - 4> 16-NOV 09:00:00 91.25 01-OCT 18:00:00 319.375 - DJF_REG_NLP TIME 4mr 16-JAN 05:00 16-OCT 23:00 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = NOLEAP - Axis span (to cell edges) = 365 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-JAN 05:00:00 91.25 01-DEC 14:00:00 380.2083 - 2> 17-APR 11:00:00 91.25 02-MAR 20:00:00 471.4583 - 3> 17-JUL 17:00:00 91.25 02-JUN 02:00:00 562.7083 - 4> 16-OCT 23:00:00 91.25 01-SEP 08:00:00 653.9583 - NDJ_REG_NLP TIME 4mr 16-DEC 19:00 16-SEP 13:00 -T0 = 01-JAN-0001 00:00:00 -CALENDAR = NOLEAP - Axis span (to cell edges) = 365 (modulo length = axis span) - - L T TBOX TBOXLO TSTEP (days) - 1> 16-DEC 19:00:00 91.25 01-NOV 04:00:00 349.7917 - 2> 18-MAR 01:00:00 91.25 31-JAN 10:00:00 441.0417 - 3> 17-JUN 07:00:00 91.25 02-MAY 16:00:00 532.2917 - 4> 16-SEP 13:00:00 91.25 01-AUG 22:00:00 623.5417 - -cancel data/all -cancel axis MON_IRREG_NLP -cancel axis JFM_IRREG_NLP -cancel axis DJF_IRREG_NLP -cancel axis NDJ_IRREG_NLP -cancel axis MON_REG_NLP -cancel axis JFM_REG_NLP -cancel axis DJF_REG_NLP -cancel axis NDJ_REG_NLP - - - -GO bn_reset bn_let_like -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_let_like -GO bn_let_like -! bn_let_like.jnl -! DEFINE VARIABLE/LIKE=oldvar my_new_var -! -! Gets the attributes from the specified variable -! and assigns them to the new variable. Skips -! missing_flag and _FillVlue as does the existing -! command "set att/like=oldvar newvar". -! also skip add_offset and scale_factor attribs. -! -! 2/22/2018 ACM - - -use coads_climatology -let/like=sst sst2 = 2*sst -show att sst2 - attributes for user-defined variables - sst2.missing_value = -1.E+34 - sst2.long_name = SEA SURFACE TEMPERATURE - sst2.history = From coads_climatology - sst2.units = Deg C - -! Can still set /TITLE, /UNITS on the command line - -let/like=sst/Title="Sea Surface Temperature" sst2 = 2*sst -show att sst2 - attributes for user-defined variables - sst2.long_name = Sea Surface Temperature - sst2.missing_value = -1.E+34 - sst2.history = From coads_climatology - sst2.units = Deg C - -! bad-flags are not inherited. Set a new flag -let/like=sst/bad=999 int_sst = if sst then int(sst) else 999 -list/y=0 int_sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 180 by 3 points (LONGITUDE-TIME) - LATITUDE : 1S - ... listing every 12th point - 21E 45E 69E 93E 117E 141E 165E 171W 147W 123W 99W 75W 51W 27W 3W - 1 13 25 37 49 61 73 85 97 109 121 133 145 157 169 - 16-JAN / 1: .... 26.00 28.00 28.00 28.00 29.00 29.00 27.00 26.00 23.00 24.00 .... 27.00 27.00 27.00 - 15-FEB / 2: .... 26.00 28.00 28.00 28.00 28.00 29.00 27.00 26.00 25.00 25.00 .... 27.00 27.00 27.00 - 17-MAR / 3: .... 27.00 29.00 29.00 28.00 28.00 28.00 27.00 27.00 26.00 26.00 .... 28.00 27.00 28.00 - -save/clobber/file=a.nc/outtype=int/x=105:125/y=0/L=1 int_sst -sp ncdump a.nc -netcdf a { -dimensions: - COADSX = 11 ; - COADSY = 1 ; - TIME = UNLIMITED ; // (1 currently) -variables: - double COADSX(COADSX) ; - COADSX:units = "degrees_east" ; - COADSX:modulo = " " ; - COADSX:point_spacing = "even" ; - COADSX:axis = "X" ; - COADSX:standard_name = "longitude" ; - double COADSY(COADSY) ; - COADSY:units = "degrees_north" ; - COADSY:point_spacing = "even" ; - COADSY:axis = "Y" ; - COADSY:standard_name = "latitude" ; - double TIME(TIME) ; - TIME:units = "hour since 0000-01-01 00:00:00" ; - TIME:time_origin = "01-JAN-0000 00:00:00" ; - TIME:modulo = 8765.81982421875 ; - TIME:axis = "T" ; - TIME:standard_name = "time" ; - int int_sst(TIME, COADSY, COADSX) ; - int_sst:missing_value = 999 ; - int_sst:_FillValue = 999 ; - int_sst:long_name = "SEA SURFACE TEMPERATURE" ; - int_sst:history = "From coads_climatology" ; - int_sst:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - COADSX = 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 125 ; - - COADSY = -1 ; - - TIME = 366 ; - - int_sst = - 27, 27, 27, _, _, _, 28, 28, 28, 29, 29 ; -} -list/x=105:125/y=0/L=1 int_sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 11 points (LONGITUDE) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 105E / 43: 27.00 - 107E / 44: 27.00 - 109E / 45: 27.00 - 111E / 46: .... - 113E / 47: .... - 115E / 48: .... - 117E / 49: 28.00 - 119E / 50: 28.00 - 121E / 51: 28.00 - 123E / 52: 29.00 - 125E / 53: 29.00 - -! Now use the file with bad=999 -cancel data/all -cancel var/all -use a.nc -sh dat/att - currently SET data sets: - 1> ./a.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - -(COADSX1) DOUBLE units CHAR 12 T degrees_east - modulo CHAR 1 T - point_spacing CHAR 4 T even - axis CHAR 1 T X - standard_name CHAR 9 F longitude - orig_file_axname - CHAR 6 F COADSX - -(COADSY1) DOUBLE units CHAR 13 T degrees_north - point_spacing CHAR 4 T even - axis CHAR 1 T Y - standard_name CHAR 8 F latitude - orig_file_axname - CHAR 6 F COADSY - -(TIME38) DOUBLE units CHAR 30 T hour since 0000-01-01 00:00:00 - time_origin CHAR 20 T 01-JAN-0000 00:00:00 - modulo DOUBLE 1 T 8765.82 - axis CHAR 1 T T - standard_name CHAR 4 F time - orig_file_axname - CHAR 4 F TIME - - int_sst INT missing_value INT 1 T 999 - _FillValue INT 1 T 999 - long_name CHAR 23 T SEA SURFACE TEMPERATURE - history CHAR 22 T From coads_climatology - units CHAR 5 T Deg C - - -! Define a variable with /LIKE=. Its bad-flag is the Ferret default. -let/like=int_sst newvar = 0.325*int_sst -show att newvar - attributes for user-defined variables - newvar.missing_value = -1.E+34 - newvar.long_name = SEA SURFACE TEMPERATURE - newvar.history = From coads_climatology - newvar.units = Deg C -list newvar - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : a.nc - SUBSET : 11 points (LONGITUDE) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 1 - 105E / 1: 8.775 - 107E / 2: 8.775 - 109E / 3: 8.775 - 111E / 4: .... - 113E / 5: .... - 115E / 6: .... - 117E / 7: 9.100 - 119E / 8: 9.100 - 121E / 9: 9.100 - 123E / 10: 9.425 - 125E / 11: 9.425 - -! The operation of renaming a variable and then redefining the var -! in a LET command is streamlined - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc -set var/name=pco2_in pco2 - -! Some expression changing the definition - -let/like=PCO2_IN pco2 = tsequence(pco2_in) -sh att pco2 - attributes for user-defined variables - pco2.missing_value = -1.E+34 - pco2.actual_range = 258.89, 1341.87 - pco2.coordinates = time latitude longitude PRESS_DB - pco2.history = From allDataFrom2007-2011-2012WestCoastCarbonCruises-revised3-6-13-1.txt - pco2.long_name = PCO2 -say `pco2,return=shape` - !-> MESSAGE/CONTINUE T -T - - -cancel data/all -cancel var/all - -! Another one replacing SET ATT/LIKE with LET/LIKE, from the -! script bn_cancel_upcase_uservar. Note the use of dset number -! LET/LIKE=olr[d=1] - -CANCEL MODE upcase - -! User variable with lowercase letters in the name - -DEFINE AXIS/t=1-jan-1999:31-jan-1999:1/units=days/t0=31-dec-1998 tday -LET MyUpperLowerCaseVar = x[x=1:10] + t[gt=tday] -SAVE/file=a.nc/clobber MyUpperLowerCaseVar - -! Open two datafiles. These have variable and axis -! names in lowercase. - -USE a1478.nc -show att olr - attributes for dataset: ./data/a1478.nc - olr.missing_value = -999 - olr._FillValue = -999 - olr.long_name = outgoing longwave radiation - olr.units = watts/m2 - olr.history = From a - -USE a_cartesian_bug1179.nc - -! Define an output variable with some axes from each dataset. -LET/D=2 zvar = z[gz=temp[d=2]] -LET/LIKE=olr[d=1] newvar = 0*zvar[d=2] + olr[d=1] -SHOW ATT newvar - attributes for user-defined variables - newvar.missing_value = -1.E+34 - newvar.long_name = outgoing longwave radiation - newvar.units = watts/m2 - newvar.history = From a - -SET MODE/LAST upcase_output - -! intentional errors -set mode ignore - -! Unknown variable -IF `var_undefined, return=defined` THEN CANCEL VAR var_undefined - !-> IF 0 THEN CANCEL VAR var_undefined -let/like=var_undefined myvar = 7 - -set mode/last ignore - -GO bn_reset bn_def_axis_like -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_def_axis_like -GO bn_def_axis_like -! bn_def_axis_like -! testing DEFINE AXIS/LIKE=existing_axis new_axis -! -! Gets the attributes from the specified variable -! and assigns them to the new variable. Skips -! missing_flag and _FillVar as does the existing -! command "set att/like=oldvar newvar" -! 2/22/2018 ACM - -use ocean_atlas_temp.cdf - -! get the attributes, define a new depth axis - -define axis/like=`temp,return=zaxis`/z=1:15:1 myz - !-> define axis/like=ZAXLEVIT191_1/z=1:15:1 myz -sh axis `temp,return=zaxis` - !-> sh axis ZAXLEVIT191_1 - name axis # pts start end - ZAXLEVIT191_1 DEPTH (m) 1 r- 0 0 - Axis span (to cell edges) = 1 -sh axis myz - name axis # pts start end - myz DEPTH (m) 15 r- 1 15 - Axis span (to cell edges) = 15 - -! ! Get the attributes, but change one of them with /UNITS= -define axis/like=`temp,return=xaxis`/x=20:90:.25/units="Deg E" myx - !-> define axis/like=XAX_LEV9421_380/x=20:90:.25/units="Deg E" myx -sh axis `temp,return=xaxis` - !-> sh axis XAX_LEV9421_380 - name axis # pts start end - XAX_LEV9421_380 LONGITUDE 360mr 20.5E 19.5E(379.5) - Axis span (to cell edges) = 360 (modulo length = axis span) -sh axis myx - name axis # pts start end - myx X (DEG E) 281mr 20 90 - Axis span (to cell edges) = 70.25 (modulo length = 360) - -! On the second axis inherit time origin, units, but change the calendar - -define axis/t=1-jan-2001:9-dec-2001:`24*60`/t0=1-jan-1970/units=seconds timesec - !-> define axis/t=1-jan-2001:9-dec-2001:1440/t0=1-jan-1970/units=seconds timesec -define axis/like=timesec/t=1-jan-2015:31-dec-2015:`24*3600`/calendar=Julian timeday - !-> define axis/like=timesec/t=1-jan-2015:31-dec-2015:86400/calendar=Julian timeday - -sh axis timesec - name axis # pts start end - timesec TIME 20521 r 01-JAN-2001 00:00 09-DEC-2001 00:00 -T0 = 1-JAN-1970 - Axis span (to cell edges) = 2.955024E+07 -sh axis timeday - name axis # pts start end - timeday TIME 365 r 01-JAN-2015 00:00 31-DEC-2015 00:00 -T0 = 1-JAN-1970 -CALENDAR = JULIAN - Axis span (to cell edges) = 3.1536E+07 - -! intentional errors -set mode ignore - -! Unknown axis - -show axis axis_undefined - name axis # pts start end -define axis/like=axis_undefined/x=1:8:1 myx - -! axis must be in the same direction as the one we're inheriting from - -define axis/like=`temp,return=xaxis`/y=-10:10:10 myy - !-> define axis/like=XAX_LEV9421_380/y=-10:10:10 myy - -! Still need to specify the direction and coordinates -define axis/like=timesec/units=minutes timemin -define axis/like=timesec/units=minutes/t timemin - -set mode/last ignore - -! Tests for details on time axes - -cancel data/all - -use coads_climatology -define axis/t/like=`sst,r=taxis` tax = t[gt=sst] - !-> define axis/t/like=TIME25 tax = t[gt=sst] -say `sst,r=t0`, `sst,r=tmod` - !-> MESSAGE/CONTINUE 01-JAN-0000 00:00:00, 8765.81982421875 -01-JAN-0000 00:00:00, 8765.81982421875 -say `t[gt=tax],r=t0`, `t[gt=tax],r=tmod` - !-> MESSAGE/CONTINUE 01-JAN-0000 00:00:00, 8765.81982421875 -01-JAN-0000 00:00:00, 8765.81982421875 - -use clim_airt_lev.cdf -define axis/t/like=`airt,r=taxis` tax = t[gt=airt] - !-> define axis/t/like=TIME111 tax = t[gt=airt] - -! These should be the same - -say `airt,return=t0`, `airt,return=tmod`, `airt,return=tunits` - !-> MESSAGE/CONTINUE 10-JAN-1980 12:00:00, 8760, hour -10-JAN-1980 12:00:00, 8760, hour -say `t[gt=tax],r=t0`, `t[gt=tax],r=tmod`, `t[gt=tax],r=tunits` - !-> MESSAGE/CONTINUE 10-JAN-1980 12:00:00, 8760, hour -10-JAN-1980 12:00:00, 8760, hour - -! calendar is inherited -show axis month_julian - name axis # pts start end - MONTH_JULIAN TIME 12mi 16-JAN 12:00 15-DEC 18:00 -T0 = 01-JAN-0000 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 365.25 (modulo length = axis span) - -define axis/t/like=month_julian tax = t[gt=month_julian] -sh axis tax - name axis # pts start end - tax TIME 12mi 16-JAN 12:00 15-DEC 18:00 -T0 = 01-JAN-0000 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 364.375 (modulo length = axis span) - -! Note how the modulo length is shorter than month_julian's. -! But it's ok if we use the edges. - -define axis/t/like=month_julian/edges tax = box_edges(t[gt=month_julian]) -sh axis tax - name axis # pts start end - tax TIME 12mi 16-JAN 12:00 15-DEC 18:00 -T0 = 01-JAN-0000 00:00:00 -CALENDAR = JULIAN - Axis span (to cell edges) = 365.25 (modulo length = axis span) - -! Define and redefine an axis with /LIKE. Make sure the last definition -! is what's stored - -define axis/edge/t=1-jan-0001:1-jan-0004:1/unit=year/cal=noleap tax -define axis/t/like=tax tax2 = t[gt=tax] -show axis tax2 - name axis # pts start end - tax2 TIME 3 r 02-JUL-0001 12:00 02-JUL-0003 12:00 -T0 = 01-JAN-0000 -CALENDAR = NOLEAP - Axis span (to cell edges) = 3 - -! Keep the calendar from axis tax, change the time origin -define axis/t/like=tax/t0=01-JAN-1970 tax2 = {1,4,5,6,7} -show axis tax2 - name axis # pts start end - tax2 TIME 5 i 01-JAN-1971 00:00 01-JAN-1977 00:00 -T0 = 01-JAN-1970 -CALENDAR = NOLEAP - Axis span (to cell edges) = 8 - -! Intentional errors. -! The second command here is an error - tax is an axis not a var. -! Make sure we can recover from that error. - -set mode ignore -define axis/edge/t=1-jan-0001:1-jan-0004:1/unit=year/cal=noleap tax -define axis/t/like=tax tax3 = tax - -! the axis should be undisturbed -sh axis tax - name axis # pts start end - tax TIME 3 r 02-JUL-0001 12:00 02-JUL-0003 12:00 -T0 = 01-JAN-0000 -CALENDAR = NOLEAP - Axis span (to cell edges) = 3 - -set mode/last ignore - -GO bn_reset bn_box_edges_fcn -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_box_edges_fcn -GO bn_box_edges_fcn -! bn_box_edges_fcn.jnl -! Returns the cell edges of a 1-D variable -! 2/23/2018 *acm* for part of issue 1618 - -sh func/details box_edges -BOX_EDGES(A) - Returns the cell edge locations for the axis of a 1-D variable. - Axes of result: - X: ABSTRACT (result will occupy indices 1...N) - Y: NORMAL (no axis) - Z: NORMAL (no axis) - T: NORMAL (no axis) - E: NORMAL (no axis) - F: NORMAL (no axis) - A: Variable (FLOAT) - Influence on output axes: - X: no influence (indicate argument limits with "[]") - Y: no influence (indicate argument limits with "[]") - Z: no influence (indicate argument limits with "[]") - T: no influence (indicate argument limits with "[]") - E: no influence (indicate argument limits with "[]") - F: no influence (indicate argument limits with "[]") -use levitus_3d_subset - -! coordinate edges from z axis -list box_edges(temp[x=120,y=-48]) - VARIABLE : BOX_EDGES(TEMP[X=120,Y=-48]) - FILENAME : levitus_3d_subset.nc - SUBSET : 21 points (X) - 1 / 1: 0. - 2 / 2: 5. - 3 / 3: 15. - 4 / 4: 25. - 5 / 5: 40. - 6 / 6: 63. - 7 / 7: 88. - 8 / 8: 125. - 9 / 9: 175. - 10 / 10: 250. - 11 / 11: 350. - 12 / 12: 500. - 13 / 13: 700. - 14 / 14: 900. - 15 / 15: 1100. - 16 / 16: 1350. - 17 / 17: 1750. - 18 / 18: 2500. - 19 / 19: 3500. - 20 / 20: 4500. - 21 / 21: 5000. -list box_edges(temp[x=120,y=-48,z=600:2000]) - VARIABLE : BOX_EDGES(TEMP[X=120,Y=-48,Z=600:2000]) - FILENAME : levitus_3d_subset.nc - SUBSET : 7 points (X) - 1 / 1: 500. - 2 / 2: 700. - 3 / 3: 900. - 4 / 4: 1100. - 5 / 5: 1350. - 6 / 6: 1750. - 7 / 7: 2500. - -! from y axis -list box_edges(temp[x=120,z=10]) - VARIABLE : BOX_EDGES(TEMP[X=120,Z=10]) - FILENAME : levitus_3d_subset.nc - SUBSET : 3 points (X) - 1 / 1: -50.00 - 2 / 2: -49.00 - 3 / 3: -48.00 - -! 1-point grid in all directions, returns result for first encountered -list box_edges(temp[x=120,y=-48,z=2000]) - VARIABLE : BOX_EDGES(TEMP[X=120,Y=-48,Z=2000]) - FILENAME : levitus_3d_subset.nc - SUBSET : 2 points (X) - 1 / 1: 120.0 - 2 / 2: 121.0 - -! Get cell edges for one point on another axis -list box_edges(z[gz=temp,z=2000]) - VARIABLE : BOX_EDGES(Z[GZ=TEMP,Z=2000]) - FILENAME : levitus_3d_subset.nc - SUBSET : 2 points (X) - 1 / 1: 1750. - 2 / 2: 2500. - -! intentional errors - multi-dimensioned argument - -set mode ignore_errors - -! multi-dimensioned argument -list box_edges(temp[z=100]) - -! degenerate grid arguments - -list box_edges (12) -let a = 9 -list box_edges (a) - -! constant array has a nominal grid -let a = {1,3,5} -list box_edges (a) - VARIABLE : BOX_EDGES (A) - SUBSET : 4 points (X) - 1 / 1: 0.500 - 2 / 2: 1.500 - 3 / 3: 2.500 - 4 / 4: 3.500 - - -set mode/last ignore_errors - -GO bn_reset bn_hi_res_time -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_hi_res_time -GO bn_hi_res_time -! bn_hi_res_time.jnl -! see issue 1856: delta-time less than a second -! listings and plots - -show mode calendar - MODE STATE ARGUMENT - CALENDAR SET minutes -set mode calendar:seconds - -! use /home/data/saildrone/examples/sub_hz_a.nc -! define axis/t/t0=1-jan-1970/units=seconds tax = time -! let temp_on_time = reshape(temp_ctd_mean, t[gt=tax]) -! set view upper -! plot temp_on_time - - -define axis/t=1"02-SEP-2017:00:00:01":"02-SEP-2017:05:57":0.63/t0=1-jan-1970/units=seconds taxreg -let temp_on_time = cos(l[gt=taxreg]/1000) - -! This plot is fine, showing 6 hours data -set v lower -plot/axes=0,1,1,1 temp_on_time - - -let temp_on_time = cos(l[gt=taxreg]/30) - -! This plot is fine, showing 5 minutes' data -set view upper -plot/axes=0,1,1,1/t="2-sep-2017:01:00":"2-sep-2017:01:05" temp_on_time - -! Time ranges under a minute needed improved labels including seconds -set view lower -plot/axes=0,1,1,1/t="2-sep-2017:01:00":"2-sep-2017:01:01" temp_on_time - -! /T= translates fractional seconds -plot/t="02-SEP-2017 00:00:06.04":"02-SEP-2017 00:00:37.54" temp_on_time - -! Labels on plots where T is orthogonal -! -define axis/x=10:330:10/units=degrees_east lonax -define axis/y=-80:80:10/units=degrees_north latax -let var = temp_on_time + x[gx=lonax]/10 - y[gy=latax]/10. - -can view - -! The time label should have fractional seconds, -shade/l=6 var -sh sym lab($labnum_t) - !-> sh sym lab1 -LAB1 = "TIME : 02-SEP-2017 00:00:04.15" - -shade/l=1296 var -sh sym lab($labnum_t) - !-> sh sym lab1 -LAB1 = "TIME : 02-SEP-2017 00:13:36.85" - -! Listings with fractional seconds -list/t="2-sep-2017:01:00:00":"2-sep-2017:01:00:03"/prec=5 temp_on_time - VARIABLE : COS(L[GT=TAXREG]/30) - SUBSET : 5 points (TIME) - 02-SEP-2017 01:00:00.19 / 5714: -0.38970 - 02-SEP-2017 01:00:00.82 / 5715: -0.42018 - 02-SEP-2017 01:00:01.45 / 5716: -0.45019 - 02-SEP-2017 01:00:02.08 / 5717: -0.47970 - 02-SEP-2017 01:00:02.71 / 5718: -0.50867 - -! /T= translates fractional seconds -list/t=" 02-SEP-2017 01:00:01.45":"02-SEP-2017 01:00:02.08" /prec=5 temp_on_time - VARIABLE : COS(L[GT=TAXREG]/30) - SUBSET : 2 points (TIME) - 02-SEP-2017 01:00:01.45 / 5716: -0.45019 - 02-SEP-2017 01:00:02.08 / 5717: -0.47970 - -list tax_datestring(t[gt=taxreg,L=1:5], t[gt=taxreg], "seconds") - VARIABLE : TAX_DATESTRING(T[GT=TAXREG,L=1:5], T[GT=TAXREG], "seconds") - SUBSET : 5 points (TIME) - 02-SEP-2017 00:00:01.0 / 1:"02-SEP-2017 00:00:01.0" - 02-SEP-2017 00:00:01.63 / 2:"02-SEP-2017 00:00:01.63" - 02-SEP-2017 00:00:02.26 / 3:"02-SEP-2017 00:00:02.26" - 02-SEP-2017 00:00:02.89 / 4:"02-SEP-2017 00:00:02.89" - 02-SEP-2017 00:00:03.52 / 5:"02-SEP-2017 00:00:03.52" - -! comma and tab delimited, one var. - - -list/t="2-sep-2017:01:00:00":"2-sep-2017:01:00:03"/form=comma temp_on_time - VARIABLE : COS(L[GT=TAXREG]/30) - BAD FLAG : -1.E+34 - SUBSET : 5 points (TIME) -02-SEP-2017 01:00:00.19,-0.3897 -02-SEP-2017 01:00:00.82,-0.4202 -02-SEP-2017 01:00:01.45,-0.4502 -02-SEP-2017 01:00:02.08,-0.4797 -02-SEP-2017 01:00:02.71,-0.5087 -list/t="2-sep-2017:01:00:00":"2-sep-2017:01:00:03"/form=tab temp_on_time - VARIABLE : COS(L[GT=TAXREG]/30) - BAD FLAG : -1.E+34 - SUBSET : 5 points (TIME) -02-SEP-2017 01:00:00.19 -0.3897 -02-SEP-2017 01:00:00.82 -0.4202 -02-SEP-2017 01:00:01.45 -0.4502 -02-SEP-2017 01:00:02.08 -0.4797 -02-SEP-2017 01:00:02.71 -0.5087 - -! Multiple vars and time coords list the row header with time and index value. -! so that would be done with /NOROW - -let var2_on_time = sin(l[gt=taxreg]/1400) -list/norow/t="2-sep-2017:01:00:00":"2-sep-2017:01:00:03"/form=comma tax_datestring(t[gt=taxreg], t[gt=taxreg], "seconds"), temp_on_time,var2_on_time - TIME: 02-SEP-2017 01:00:00 to 02-SEP-2017 01:0 - Column 1: TAX_DATESTRING(T[GT=TAXREG], T[GT=TAXREG], "seconds") - Column 2: TEMP_ON_TIME is COS(L[GT=TAXREG]/30) BAD FLAG : -1.E+34 - Column 3: VAR2_ON_TIME is SIN(L[GT=TAXREG]/1400) BAD FLAG : -1.E+34 -(C001,V002),TEMP_ON_TIME,VAR2_ON_TIME -"02-SEP-2017 01:00:00.19",-0.3897,-0.8075 -"02-SEP-2017 01:00:00.82",-0.4202,-0.8079 -"02-SEP-2017 01:00:01.45",-0.4502,-0.8083 -"02-SEP-2017 01:00:02.08",-0.4797,-0.8087 -"02-SEP-2017 01:00:02.71",-0.5087,-0.8091 - -! -! Note with these changes, and time resolution of minutes (mode calendar:minutes) -! the output for list/form=tab or list/form=comma is now correct. It changes -! from 17-AUG-1982 12,... to 17-AUG-1982 12:00,... - -set mode/last calendar -use gt4d011 -list/L=1:3/K=1/form=comma taux[i=100,j=40] - VARIABLE : ZONAL WIND STRESS (dynes/cm**2) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 3 points (TIME) - LONGITUDE: 130W - LATITUDE : 1.6667S - 130W -17-AUG-1982 12:00,-0.3303 -23-AUG-1982 14:00,-0.2849 -29-AUG-1982 16:00,-0.2395 - -! This is what these listings previously looked like -set mode calendar:hours -list/L=1:3/K=1/form=comma taux[i=100,j=40] - VARIABLE : ZONAL WIND STRESS (dynes/cm**2) - FILENAME : gt4d011.cdf - BAD FLAG : -1.E+34 - SUBSET : 3 points (TIME) - LONGITUDE: 130W - LATITUDE : 1.6667S - 130W -17-AUG-1982 12,-0.3303 -23-AUG-1982 14,-0.2849 -29-AUG-1982 16,-0.2395 - - -set mode/last calendar - -GO bn_reset bn_A_I_format -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_A_I_format -GO bn_A_I_format -!bn_A_I_format.jnl -! 3/2018 ACM Issue 950 -! -! Tests of LIST/FORMAT with Fortran formats that include the A specifier. - -use clim_airt_lev - -! Redefine time so the tax_datestring function returns year... -define axis/t=15-dec-2010:15-jan-2011/npoints=12 `airt,return=taxis` - !-> define axis/t=15-dec-2010:15-jan-2011/npoints=12 TIME111 - - -list/nohead/l=1:10/format=(a,f6.2) \ -TAX_DATESTRING(t[g=airt],t[g=airt],"month"), airt[x=-135,y=0] -DEC-2010 25.38 -DEC-2010 25.37 -DEC-2010 26.83 -DEC-2010 26.51 -DEC-2010 26.52 -DEC-2010 26.62 -DEC-2010 25.69 -JAN-2011 25.92 -JAN-2011 25.41 -JAN-2011 26.17 - -list/nohead/l=1:10/format=(a,e12.4,a5, F7.0) \ -TAX_DATESTRING(t[g=airt],t[g=airt],"month"), airt[x=-135,y=0], TAX_DATESTRING(t[g=airt],t[g=airt],"year"), INT(airt[x=-135,y=0]*100) -DEC-2010 0.2538E+02 2010 2538. -DEC-2010 0.2537E+02 2010 2537. -DEC-2010 0.2683E+02 2010 2683. -DEC-2010 0.2651E+02 2010 2650. -DEC-2010 0.2652E+02 2010 2651. -DEC-2010 0.2662E+02 2010 2661. -DEC-2010 0.2569E+02 2010 2568. -JAN-2011 0.2592E+02 2011 2591. -JAN-2011 0.2541E+02 2011 2540. -JAN-2011 0.2617E+02 2011 2616. - -! make sure we haven't broken existing numeric-only formatting -list/nohead/l=1:10/format=(F7.1, f8.3) airt[x=-135,y=0], airt[x=-135,y=-20] - 25.4 26.533 - 25.4 26.861 - 26.8 26.871 - 26.5 26.425 - 26.5 25.587 - 26.6 24.309 - 25.7 23.823 - 25.9 23.615 - 25.4 23.771 - 26.2 24.199 - -list/nohead/l=1:10/format=(a,e12.4,a5, F7.0) \ -TAX_DATESTRING(t[g=airt],t[g=airt],"month"), airt[x=-135,y=0], TAX_DATESTRING(t[g=airt],t[g=airt],"year"), INT(airt[x=-135,y=0]*100) -DEC-2010 0.2538E+02 2010 2538. -DEC-2010 0.2537E+02 2010 2537. -DEC-2010 0.2683E+02 2010 2683. -DEC-2010 0.2651E+02 2010 2650. -DEC-2010 0.2652E+02 2010 2651. -DEC-2010 0.2662E+02 2010 2661. -DEC-2010 0.2569E+02 2010 2568. -JAN-2011 0.2592E+02 2011 2591. -JAN-2011 0.2541E+02 2011 2540. -JAN-2011 0.2617E+02 2011 2616. - -! using format to list parts of strings -let var = {"Abcdefghijk"} -list/nohead/format=(a5, a7, a1, a4) var,var,var,var -AbcdeAbcdefgAAbcd - - -list/nohead/format=(a5, a7, a1, a4) {"Abcde"}, {"Abcdefg"}, {"A"}, {"Abcd"} -AbcdeAbcdefgAAbcd - -! or to list a string with A formats longer than its length to make a gap -list/nohead/l=1:10/format=(a,e12.4,a9, F7.0) \ -TAX_DATESTRING(t[g=airt],t[g=airt],"month"), airt[x=-135,y=0], TAX_DATESTRING(t[g=airt],t[g=airt],"year"), INT(airt[x=-135,y=0]*100) -DEC-2010 0.2538E+02 2010 2538. -DEC-2010 0.2537E+02 2010 2537. -DEC-2010 0.2683E+02 2010 2683. -DEC-2010 0.2651E+02 2010 2650. -DEC-2010 0.2652E+02 2010 2651. -DEC-2010 0.2662E+02 2010 2661. -DEC-2010 0.2569E+02 2010 2568. -JAN-2011 0.2592E+02 2011 2591. -JAN-2011 0.2541E+02 2011 2540. -JAN-2011 0.2617E+02 2011 2616. - -! Integer formats - -list/nohead/l=1:10/format=(i4, i6) airt[x=-135,y=-20], airt[x=-135,y=30] - 26 17 - 26 16 - 26 16 - 26 16 - 25 17 - 24 19 - 23 20 - 23 21 - 23 21 - 24 20 - -list/nohead/l=1:10/format=(a,i6) \ -TAX_DATESTRING(t[g=airt],t[g=airt],"month"), airt[x=-135,y=-20] -DEC-2010 26 -DEC-2010 26 -DEC-2010 26 -DEC-2010 26 -DEC-2010 25 -DEC-2010 24 -DEC-2010 23 -JAN-2011 23 -JAN-2011 23 -JAN-2011 24 - - -list/nohead/l=1:4/j=20:23/format=(i6) 10*airt[x=180] - 283 - 283 - 283 - 283 - 280 - 281 - 281 - 281 - 281 - 281 - 281 - 281 - 286 - 286 - 286 - 286 - - -list/nohead/l=1:10/format=(i4, f8.2, a14) airt[x=-135,y=-20], airt[x=-135,y=30], TAX_DATESTRING(t[g=airt],t[g=airt],"day") - 26 17.34 15-DEC-2010 - 26 16.86 17-DEC-2010 - 26 16.73 20-DEC-2010 - 26 16.72 23-DEC-2010 - 25 17.55 26-DEC-2010 - 24 19.15 29-DEC-2010 - 23 20.07 31-DEC-2010 - 23 21.19 03-JAN-2011 - 23 21.42 06-JAN-2011 - 24 20.73 09-JAN-2011 - - -! Intentional errors -set mode ignore - -! Format too complex: one specifier per variable -list/nohead/l=1:0/format=(a,2x,f6.2,a5) \ -TAX_DATESTRING(t[g=airt],t[g=airt],"month"), airt[x=-135,y=0], TAX_DATESTRING(t[g=airt],t[g=airt],"year") - -! Old issue 554: On invalid format, report the allowed formats in msg -LIST/nohead/l=1:0/format=xxx airt[x=-135,y=0] - -! need parentheses -list/nohead/format=a7 {"Abcde"} - -! disallow multiples in I format -list/nohead/l=1:10/j=20:23/format=(4i6) 10*airt[x=180] - -set mode/last ignore - -GO bn_reset bn_center_keylab -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_center_keylab -GO bn_center_keylab -! bn_center_keylab.jnl -! See issue 1607. - -def ax/edge/x=0:10:1 xax -let a = x[gx=xax] + 0.01*randu(y[gy=1:9:1]) + y[gy=1:9:1] - -cancel view -set view ul -shade/lev=(0,16,2)/key/title="/LEV=(0,16,2)/KEY" a -sh sym lev* -LEV_TEXT = "(0,16,2)" -LEV_ALL = "0,2,4,6,8,10,12,14,16" -LEV_MIN = "0" -LEV_MAX = "16" -LEV_NUM = "8" -LEV_DEL = "2" -LEV_CENTERED_LABELS = "off" -set view ur -shade/lev=(1,15,2)/key=centerlab/title="/LEV=(1,15,2)/KEY=CENTERLAB" a -sh sym lev* -LEV_TEXT = "(1,15,2)" -LEV_ALL = "0,2,4,6,8,10,12,14,16" -LEV_MIN = "0" -LEV_MAX = "16" -LEV_NUM = "8" -LEV_DEL = "2" -LEV_CENTERED_LABELS = "on" - -! centered-levels setting is restored to 'off' with the next plot that doesnt use it. - -set v ll -shade/lev=(-inf)(4,14,2)(inf)/key/title="/LEV=(-inf)(4,14,2)(inf)/KEY" a -sh sym lev* -LEV_TEXT = "(-INF)(4,14,2)(INF)" -LEV_ALL = "0.5034,4,6,8,10,12,14,19.5" -LEV_MIN = "open-ended" -LEV_MAX = "open-ended" -LEV_NUM = "7" -LEV_DEL = "irregular" -LEV_CENTERED_LABELS = "off" -set v lr -shade/lev=(-inf)(5,13,2)(inf)/key=centerlab/title="/LEV=(-inf)(5,13,2)(inf)/KEY=CENTERLAB" a - -frame/file=center_key_lab.gif - -cancel view - -! Ribbon plots -LET xpts = 180 + 50*COS(2*3.14*I[I=1:50]/60) -LET ypts = 15 + 20*SIN(2*3.14*I[I=1:50]/60) -LET varpts = 25 - ypts + RANDN(ypts) - -plot/vs/ribbon/thick/sym=18/siz=0.15/lev=10/key=centerlab/hlim=120:250/vlim=-25:65 xpts, ypts, varpts - -! Set of discrete values in the levels - -LET/title=xpts xpts = {1,2,3,4,5,6,7,8,9,10} -LET/title=ypts ypts = {1,1.5,1,1.5,1,1.5,1,1.5,1,1.5} -let/title=var varpts = {1,2,5,2,8,5,6,8,2,1} - -set v ul - -plot/vs/ribbon/thick/sym=18/siz=0.15/key=centerlab/lev=(1)(2)(5)(6)(8)/hlim=0:11/vlim=0:2 xpts, ypts, varpts -show sym lev* -LEV_TEXT = "(1)(2)(5)(6)(8)" -LEV_ALL = "0.5,1.5,3.5,5.5,7,9" -LEV_MIN = "0.5" -LEV_MAX = "9" -LEV_NUM = "5" -LEV_DEL = "irregular" -LEV_CENTERED_LABELS = "on" -set v ur -plot/vs/ribbon/thick/sym=18/siz=0.15/key=centerlab/lev=(1)(2)(5)(6)(8)/hlim=0:11/vlim=0:2/palette=ten_by_levels xpts, ypts, varpts - -! Internally, by-value palettes are handled differently: don't interpolate the levels -set v ul -plot/vs/ribbon/thick=3/sym=18/siz=0.15/key=centerlab/lev=(1)(2)(5)(6)(8)/hlim=0:11/vlim=0:2/palette=koppen xpts, ypts, varpts -set v ur -plot/vs/ribbon/thick=3/sym=18/siz=0.15/key=centerlab/lev=(1,14,1)/hlim=0:11/vlim=0:2/palette=koppen xpts, ypts, xpts+2 -show sym lev* -LEV_TEXT = "(1,14,1)" -LEV_ALL = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15" -LEV_MIN = "1" -LEV_MAX = "15" -LEV_NUM = "14" -LEV_DEL = "1" -LEV_CENTERED_LABELS = "on" - -! *********** v7.42 Additions *********** - -GO bn_reset bn741_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn741_bug_fixes -GO bn741_bug_fixes -! bn741_bug_fixes.jnl -! test various fixes that went into version 7.41 ( released as 7.42) -! 4/18 *acm* - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err74_I_format -! err74_I_format.jnl -! Issue 1870 -! 4/25/18 *acm* - -let var = 55.12 -list/nohead/format=("This header ", I5) var -This header 55 - -! This failed in v7.4 -- the code detected a case of Integer format, so -! converted internally to an integer before writing using the fmt statment. - -list/nohead/format=("This header ", F5.2) var -This header 55.12 - - -! Do some more testing. -! Intentional errors: Cannot specify text within the format -! if using I or A format and multiple vars - -set mode ignore -let size = 12345 -list/nohead/format=("This header ", I5, F8.2) size, var - -let avar = "My Text" -list/nohead/format=("This header ", F8.2, A) avar, var - -set mode/last ignore - -! But can use multiple vars with I or A, one item in the format -! specifier per variable. - -let mytext = "This header" -list/nohead/format=(A, F8.2) mytext, var -This header 55.12 - -list/nohead/format=(A, I5, F8.2) mytext, size, var -This header12345 55.12 - -! We do have flexibility if using floating-point formats -list/nohead/format=("This header ", 2F8.2) size, var -This header 12345.00 55.12 -list/nohead/format=("This header ", F8.0, e12.2) size, var -This header 12345. 0.55E+02 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err74_append -! err74_append.jnl -! Issue 1871: append slabs along a non-time axis -! when the grid has an abstract axis in its append direction - -! The same behavior occurs with X, Y, Z, E, F appending - -use levitus_3d_subset -save/clobber/file=tmp0.nc temp[x=@MAX,y=@MAX] -save/clobber/file=tmp1.nc temp[x=@MIN,y=@MIN] -cancel data/all - -! Define data on abstract E axis -let evals = esequence({1,2,3}) - -!!! This fixes it... So the issue is with Abstract E axis -! define axis/e=1:3:1 e3ax -! let evals = _e[ge=e5ax] - -set data tmp0.nc -let etemp = temp + 0*evals -save/clobber/file=a.nc/mlimits=1:3/m=1 etemp -cancel data tmp0.nc - -set data tmp1.nc -let etemp = temp + 0*evals -save/append/file=a.nc/m=2 etemp - -let etemp = temp + 2*evals -save/append/file=a.nc/m=3 etemp - -! Check the contents of the file. The previous behavior had data only at E=1 -cancel var etemp -use a -list etemp - VARIABLE : TEMP + 0*EVALS - FILENAME : a.nc - SUBSET : 20 by 3 points (DEPTH (m)-E) - ... listing every 2th point - 0 20 50 100 200 400 800 1200 2000 4000 - 1 3 5 7 9 11 13 15 17 19 - 1 / 1: 7.92 7.91 7.58 7.44 7.07 6.38 4.66 3.08 2.27 .... - 2 / 2: 6.83 6.84 6.62 6.46 6.03 5.19 3.82 2.76 2.09 .... - 3 / 3: 12.83 12.84 12.62 12.46 12.03 11.19 9.82 8.76 8.09 .... -cancel data a.nc - -! intentional error, writing from abstract axis indices -! that are outside initial range -set mode ignore - -! Define data on abstract E axis -let evals = esequence({1,2,3,4,5}) - -set data tmp0.nc -let etemp = temp + 0*evals -save/clobber/file=a.nc/mlimits=1:3/m=1 etemp -cancel data tmp0.nc - -set data tmp1.nc -let etemp = temp + 0*evals -save/append/file=a.nc/m=4 etemp - -! Appending two e-steps. The previous behavior wrote the new -! data to steps 1:2 instead of 2:3. -cancel data/all - -set data tmp0.nc -let etemp = temp + 0*evals -save/clobber/file=a.nc/mlimits=1:3/m=1 etemp -cancel data tmp0.nc - -cancel var etemp -use a -list etemp - VARIABLE : TEMP + 0*EVALS - FILENAME : a.nc - SUBSET : 20 by 3 points (DEPTH (m)-E) - ... listing every 2th point - 0 20 50 100 200 400 800 1200 2000 4000 - 1 3 5 7 9 11 13 15 17 19 - 1 / 1: 7.918 7.907 7.584 7.436 7.073 6.377 4.665 3.076 2.274 .... - 2 / 2: .... .... .... .... .... .... .... .... .... .... - 3 / 3: .... .... .... .... .... .... .... .... .... .... -cancel data a.nc - -set data tmp1.nc -let etemp = temp + 2*evals -save/append/file=a.nc/m=2:3 etemp - -cancel var etemp -use a -list etemp - VARIABLE : TEMP + 0*EVALS - FILENAME : a.nc - SUBSET : 20 by 3 points (DEPTH (m)-E) - ... listing every 2th point - 0 20 50 100 200 400 800 1200 2000 4000 - 1 3 5 7 9 11 13 15 17 19 - 1 / 1: 7.92 7.91 7.58 7.44 7.07 6.38 4.66 3.08 2.27 .... - 2 / 2: 10.83 10.84 10.62 10.46 10.03 9.19 7.82 6.76 6.09 .... - 3 / 3: 12.83 12.84 12.62 12.46 12.03 11.19 9.82 8.76 8.09 .... -cancel data a.nc - -! Other tests of writing and appending data on abstract axes -cancel mode ignore - -! Overwrite with /APPEND and previously would overwrite the new data at -! the start of what was written before. Only paid attention to the size of -! the region written. Now this is an error, coordinates outside file range. - -set mode ignore -let avar = x -save/file=a.nc/clobber/i=21:29 avar -save/append/file=a.nc/i=41:46 avar - -set mode ignore - -! Overwrite with too many values is an error - -let avar = x -save/append/file=a.nc/i=41:51 avar - -! Inconsistent limits is a warning - -cancel mode ignore -save/file=a.nc/clobber/i=21:35 avar[i=1:7] - -cancel var avar -use a -list avar - VARIABLE : X - FILENAME : a.nc - SUBSET : 7 points (X) - 1 / 1: 1.000 - 2 / 2: 2.000 - 3 / 3: 3.000 - 4 / 4: 4.000 - 5 / 5: 5.000 - 6 / 6: 6.000 - 7 / 7: 7.000 - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err74_labnum_datitl -! err74_labnum_datitl.jnl -! See issue 1873 -! 5/3/18 ACM - -! coads_climatology does not have a title attribute, but the -! dataset-title label and symbol was set, with blank value, -! and labnum_datitl was defined. - -use coads_climatology -shade/l=1/x=180:200/y=-5:5 sst -sh sym lab* -LABX = "LONGITUDE" -LABY = "LATITUDE" -LABTIT = "SEA SURFACE TEMPERATURE (Deg C)" -LAB1 = "TIME : 16-JAN 06:00" -LABNUM_T = "1" -LAB2 = "DATA SET: coads_climatology" -LABNUM_DSET = "2" - -! If there is a dataset title, then those symbols are -! set up correctly. -can data/all; use/title="Classic dataset" coads_climatology -shade/l=1/x=180:200/y=-5:5 sst -sh sym lab* -LABX = "LONGITUDE" -LABY = "LATITUDE" -LABTIT = "SEA SURFACE TEMPERATURE (Deg C)" -LAB1 = "TIME : 16-JAN 06:00" -LABNUM_T = "1" -LAB2 = "DATA SET: coads_climatology" -LABNUM_DSET = "2" -LAB3 = "Classic dataset" -LABNUM_DATITL = "3" - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err74_regrid_to_sameax -! err74__regrid_to_sameax.jnl -! 5/10/18 -! Issue 1868: some regridding transformations -! should return something, not always a no-op. - -def axis/x=1:4:1 xax -let two = 2+0*x[gx=xax] -save/clobber/file=two.nc two -cancel var two - - -use two.nc -!NGD - -! should be all 1's where valid -list two, two[gx=xax@ngd] - DATA SET: ./two.nc - X: 0.5 to 4.5 - Column 1: TWO is 2+0*X[GX=XAX] - Column 2: TWO[G=XGRID on X@NGD] is 2+0*X[GX=XAX] (# of points)(regrid: XGRID on X@NGD) - TWO TWO -1 / 1: 2.000 1.000 -2 / 2: 2.000 1.000 -3 / 3: 2.000 1.000 -4 / 4: 2.000 1.000 - -!NBIN -! should be all 1's where valid -list two, two[gx=xax@nbin] - DATA SET: ./two.nc - X: 0.5 to 4.5 - Column 1: TWO is 2+0*X[GX=XAX] - Column 2: TWO[G=XGRID on X@NBIN] is 2+0*X[GX=XAX] (regrid: XGRID on X@NBIN) - TWO TWO -1 / 1: 2.000 1.000 -2 / 2: 2.000 1.000 -3 / 3: 2.000 1.000 -4 / 4: 2.000 1.000 - - -! MODNGD, MODNBD -! MODNGD Should be 1 where good, 0 for bad -! vice versa for MODNBD - -use coads_climatology - -let sstg = sst[gx=COADSX@modngd] -let sstb = sst[gx=COADSX@modnbd] -stat/l=1/y=50 sstg - - SST[GX=COADSX@MODNGD] - LONGITUDE: 20E to 20E(380) - LATITUDE: 49N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 180 (180*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 1 - Mean value: 0.49444 (unweighted average) - Standard deviation: 0.50136 -stat/l=1/y=50 sstb - - SST[GX=COADSX@MODNBD] - LONGITUDE: 20E to 20E(380) - LATITUDE: 49N - Z: N/A - TIME: 16-JAN 06:00 - E: N/A - F: N/A - DATA SET: ./data/coads_climatology.cdf - - Total # of data points: 180 (180*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0 - Maximum value: 1 - Mean value: 0.50556 (unweighted average) - Standard deviation: 0.50136 - -list/l=1/y=40/x=210:250 sst, sst[gx=COADSX@modngd], sst[gx=COADSX@modnbd] - DATA SET: ./data/coads_climatology.cdf - LONGITUDE: 150W to 110W - LATITUDE: 39N - TIME: 16-JAN 06:00 - Column 1: SST is SEA SURFACE TEMPERATURE (Deg C) - Column 2: SST[G=SST on X@MODNGD] is SEA SURFACE TEMPERATURE (# of points)(regrid: SST on X@MODNGD) - Column 3: SST[G=SST on X@MODNBD] is SEA SURFACE TEMPERATURE (# of points)(regrid: SST on X@MODNBD) - SST SST SST -149W / 96: 12.91 1.000 0.000 -147W / 97: 13.13 1.000 0.000 -145W / 98: 13.38 1.000 0.000 -143W / 99: 13.41 1.000 0.000 -141W / 100: 13.51 1.000 0.000 -139W / 101: 13.60 1.000 0.000 -137W / 102: 13.77 1.000 0.000 -135W / 103: 13.79 1.000 0.000 -133W / 104: 13.80 1.000 0.000 -131W / 105: 13.49 1.000 0.000 -129W / 106: 13.16 1.000 0.000 -127W / 107: 12.65 1.000 0.000 -125W / 108: 11.83 1.000 0.000 -123W / 109: 11.72 1.000 0.000 -121W / 110: .... 0.000 1.000 -119W / 111: .... 0.000 1.000 -117W / 112: .... 0.000 1.000 -115W / 113: .... 0.000 1.000 -113W / 114: .... 0.000 1.000 -111W / 115: .... 0.000 1.000 - -! MODVAR -! should be 0 where valid, missing otherwise - -list/l=1/y=40/x=210:250 sst, sst[gx=COADSX@modvar] - DATA SET: ./data/coads_climatology.cdf - LONGITUDE: 150W to 110W - LATITUDE: 39N - TIME: 16-JAN 06:00 - Column 1: SST is SEA SURFACE TEMPERATURE (Deg C) - Column 2: SST[G=SST on X@MODVAR] is Variance of SEA SURFACE TEMPERATURE ((Deg C)^2)(regrid: SST on X@MODVAR) - SST SST -149W / 96: 12.91 0.0000 -147W / 97: 13.13 0.0000 -145W / 98: 13.38 0.0000 -143W / 99: 13.41 0.0000 -141W / 100: 13.51 0.0000 -139W / 101: 13.60 0.0000 -137W / 102: 13.77 0.0000 -135W / 103: 13.79 0.0000 -133W / 104: 13.80 0.0000 -131W / 105: 13.49 0.0000 -129W / 106: 13.16 0.0000 -127W / 107: 12.65 0.0000 -125W / 108: 11.83 0.0000 -123W / 109: 11.72 0.0000 -121W / 110: .... .... -119W / 111: .... .... -117W / 112: .... .... -115W / 113: .... .... -113W / 114: .... .... -111W / 115: .... .... - -! @var regridding should be 0 where valid, missing otherwise -define axis/y=0:21:3/units=degrees_north yax - -list/x=300/l=1 sst[gy=yax], sst[gy=yax@var] - DATA SET: ./data/coads_climatology.cdf - LATITUDE: 1.5S to 22.5N - LONGITUDE: 61W - TIME: 16-JAN 06:00 - Column 1: SST[G=GG12345678901234567890] is SEA SURFACE TEMPERATURE (Deg C)(regrid: GG12345678901234567890) - Column 2: SST[G=GG12345678901234567890 on Y@VAR] is Variance of SEA SURFACE TEMPERATURE ((Deg C)^2)(regrid: GG12345678901234567890 on Y@VAR) - SST SST -0 / 1: .... .... -3N / 2: .... .... -6N / 3: .... .... -9N / 4: 27.12 0.01891 -12N / 5: 26.75 0.00081 -15N / 6: 26.75 0.02797 -18N / 7: 26.12 0.03315 -21N / 8: 25.44 0.09389 -list/x=300/l=1/y=0:20 sst, sst[gy=`sst,return=yaxis`@var] - !-> list/x=300/l=1/y=0:20 sst, sst[gy=COADSY@var] - DATA SET: ./data/coads_climatology.cdf - LATITUDE: 0 to 20N - LONGITUDE: 61W - TIME: 16-JAN 06:00 - Column 1: SST is SEA SURFACE TEMPERATURE (Deg C) - Column 2: SST[G=SST on Y@VAR] is Variance of SEA SURFACE TEMPERATURE ((Deg C)^2)(regrid: SST on Y@VAR) - SST SST -1N / 46: .... .... -3N / 47: .... .... -5N / 48: .... .... -7N / 49: .... .... -9N / 50: 27.12 0.0000 -11N / 51: 26.78 0.0000 -13N / 52: 26.72 0.0000 -15N / 53: 26.75 0.0000 -17N / 54: 26.30 0.0000 -19N / 55: 25.94 0.0000 - -! IIN -! @iin regridding to the source axis -! Result is the same as the @IIN transformation but 0 at -! the start and results pushed up a cell. - -define axis/edge/x=0:10:1 aline -let a = i[gx=aline] - -! edges axis -define axis/x/like=`a,return=xaxis` aline_edges = box_edges(a) - !-> define axis/x/like=aline aline_edges = box_edges(a) - -let c = a[gx=aline_edges@iin] -let d = a[gx=aline@iin] - -! Regrid to edges axis -list c - VARIABLE : A[GX=ALINE_EDGES@IIN] - SUBSET : 11 points (X) - 0 / 1: 0.00 - 1 / 2: 1.00 - 2 / 3: 3.00 - 3 / 4: 6.00 - 4 / 5: 10.00 - 5 / 6: 15.00 - 6 / 7: 21.00 - 7 / 8: 28.00 - 8 / 9: 36.00 - 9 / 10: 45.00 - 10 / 11: 55.00 - -! Regrid to source axis. -list a, d, a[x=@iin] - X: 0 to 10 - Column 1: A is I[GX=ALINE] - Column 2: D is A[GX=ALINE@IIN] - Column 3: A[X=@IIN] is I[GX=ALINE] (indef. integ. on X) - A D A -0.5 / 1: 1.00 0.50 1.00 -1.5 / 2: 2.00 2.00 3.00 -2.5 / 3: 3.00 4.50 6.00 -3.5 / 4: 4.00 8.00 10.00 -4.5 / 5: 5.00 12.50 15.00 -5.5 / 6: 6.00 18.00 21.00 -6.5 / 7: 7.00 24.50 28.00 -7.5 / 8: 8.00 32.00 36.00 -8.5 / 9: 9.00 40.50 45.00 -9.5 / 10: 10.00 50.00 55.00 - -! Time units -def ax/edge/t=1-jan-0001:1-jan-0004:365/unit=day/cal=noleap tax -let one = 1 + 0*t[gt=tax] -list one, one[t=@iin], one[gt=tax@iin] - TIME: 01-JAN-0001 00:00 to 01-JAN-0004 00:00 NOLEAP - Column 1: ONE is 1 + 0*T[GT=TAX] - Column 2: ONE[T=@IIN] is 1 + 0*T[GT=TAX] (indef. integ. on T) - Column 3: ONE[G=TGRID on T@IIN] is 1 + 0*T[GT=TAX] (regrid: TGRID on T@IIN) - ONE ONE ONE -JUL-0001 / 1: 1.000 3.154E+07 1.577E+07 -JUL-0002 / 2: 1.000 6.307E+07 4.730E+07 -JUL-0003 / 3: 1.000 9.461E+07 7.884E+07 - -! Gridding to an identical second axis, columns 3 and 4 match: -def ax/edge/t=1-jan-0001:1-jan-0004:365/unit=day/cal=noleap tax2 -list one, one[t=@iin], one[gt=tax@iin], one[gt=tax2@iin] - WARNING: Listed variables have ambiguous coordinates on axes: T - Column 1: ONE is 1 + 0*T[GT=TAX] - Column 2: ONE[T=@IIN] is 1 + 0*T[GT=TAX] (indef. integ. on T) - Column 3: ONE[G=TGRID on T@IIN] is 1 + 0*T[GT=TAX] (regrid: TGRID on T@IIN) - Column 4: ONE[G=365 day on T@IIN] is 1 + 0*T[GT=TAX] (regrid: 365 day on T@IIN) - ONE ONE ONE ONE -L / 1: 1.000 3.154E+07 1.577E+07 1.577E+07 -L / 2: 1.000 6.307E+07 4.730E+07 4.730E+07 -L / 3: 1.000 9.461E+07 7.884E+07 7.884E+07 - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err74_single_level_contour -! err74_single_level_contour.jnl -! Issue 1874: precision of single levels on contour lines - -! These levels are labeled fine: -use coads_climatology - -set view ul; go margins 0.5 0.5 0.8 1 - -fill/nolab/l=1/x=300:380/y=-40:10/pal=grayscale/lev=(-inf)(15.3,27.3,0.4)(inf) sst -cont/l=1/lev=(17.7)/ov/nolab/color=lightblue sst -cont/l=1/lev=(24.9)/ov/nolab/color=blue sst -contour/l=1/lev=(26.15)/ov/nolab/color=red sst - -! magnitude of the numbers given affects it -set view ur; go margins 0.5 0.5 0.8 1 -let sst2 = 2*sst -fill/nolab/l=1/x=300:380/y=-40:10/pal=grayscale/lev=(-inf)(30.6,54.6,0.8)(inf) sst2 -cont/l=1/lev=(35.4)/ov/nolab/color=lightblue sst2 -cont/l=1/lev=(49.8)/ov/nolab/color=blue sst2 -contour/l=1/lev=(52.34)/ov/nolab/color=red sst2 - -! small values -set view ll; go margins 0.5 0.5 0.8 1 -let sst2 = sst/50 -fill/nolab/l=1/x=300:380/y=-40:10/pal=grayscale/lev=(-inf)(.306,.546,0.008)(inf) sst2 -cont/l=1/lev=(.354)/ov/nolab/color=lightblue sst2 -! What about /SIGDIG? It should override what is done automatically -cont/l=1/lev=(.468)/sigdig=2/ov/nolab/color=blue sst2 -contour/l=1/lev=(.5234)/sigdig=3/ov/nolab/color=red sst2 - -frame /file=single_contour_levels.gif - - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err74_transform_constants -! err74_transform_constants.jnl -! 6/13/2018 acm -! See issue 1868 -! -! Non-regridding transformations of scalars -let a = 2 - -list a[x=@nbd] - VARIABLE : 2 (# of points) - 0.0000 -list a[x=@ngd] - VARIABLE : 2 (# of points) - 1.000 -list a[x=@ave] - VARIABLE : 2 - 2.000 -list a[x=@sum] - VARIABLE : 2 - 2.000 - -! All of these should return an error. - -set mode ignore -list a[x=@var] -list a[x=@shf] -list a[x=@ddc] -list a[x=@ddf] -list a[x=@ddb] -list a[x=@din] -list a[x=@iin] -list a[x=@loc:3] -list a[x=@weq] -list a[x=@cda] -list a[x=@cdb] -list a[x=@cia] -list a[x=@cib] -list a[x=@evn:3] -list a[x=@std] -list a[x=@wgt] - -! smoothers can return the constant's value -list a[x=@sbx] -list a[x=@fav] - -set mode /last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err74_data_inf -! err74_data_inf.jnl -! Issue 1878: Listing data containing only value of "infinity" -! crashed Ferret. - -! value at L=14 is Infinity - -set mode ignore - -use inf.nc -list/l=14 time - VARIABLE : SEA SURFACE TEMPERATURE (hours since 1979-01-01 00:00:00) - invalid coordinate axis - DATA SET : Hourly Argos-tracked drifters location and velocity estimates, with 95% confidence intervals - FILENAME : inf.nc - T : 14 - +Inf - -set mode /last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err74_2Dave_partial_cell -! err74_2Dave_partial_cell.jnl -! 7/5/2019 ACM -! -! Issue 1880: 2D average, with a partial cell at the start or end -! has been incorrect since v7.2, when there were updates to memory -! managementand scatter/gather transformations. - -! Define a simple variable -def ax/edge/x=0:2:1 xax; def ax/edge/y=0:2:1 yax; let a = x[gx=xax] + y[gy=yax] - -list/nohead a - 0.5 / 1: 1.000 2.000 - 1.5 / 2: 2.000 3.000 -list/nohead a[x=@ave,y=@ave] - 2.000 - -! compare 2D, XY ave with separate averages X then Y and Y then X -let b = a[x=@ave] -let c = a[y=@ave] - -list/nohead a[x=@ave,y=@ave], b[y=@ave], c[x=@ave] -I / *: 2.000 2.000 2.000 - -! partial cell at the top -list/nohead/x=0:1.5 a[x=@ave,y=@ave], b[y=@ave], c[x=@ave] -I / *: 1.833 1.833 1.833 - -! Partial cell at the bottom -list/nohead/x=0.5:2 a[x=@ave,y=@ave], b[y=@ave], c[x=@ave] -I / *: 2.167 2.167 2.167 - -!@DIN - -list/nohead a[x=@din,y=@din] - 8.000 - -! compare 2D, XY din with separate def integral X then Y and Y then X -let b = a[x=@din] -let c = a[y=@din] - -list/nohead a[x=@din,y=@din], b[y=@din], c[x=@din] -I / *: 8.000 8.000 8.000 - -! partial cell at the top -list/nohead/x=0:1.5 a[x=@din,y=@din], b[y=@din], c[x=@din] -I / *: 5.500 5.500 5.500 - -! Partial cell at the bottom -list/nohead/x=0.5:2 a[x=@din,y=@din], b[y=@din], c[x=@din] -I / *: 6.500 6.500 6.500 - - - -! STD multi dimension -! set list/prec=5 (matches results of Ferret v7.0) - -def ax/edge/x=0:22:1 xax -def ax/edge/y=0:22:1 yax -let a = x[gx=xax] + y[gy=yax] - -list/nohead a[x=@std,y=@std] - 8.972 - -! partial cell at the top -list/nohead/x=0:1.5 a[x=@std,y=@std] - 6.362 - -! Partial cell at the bottom -list/nohead/x=0.5:2 a[x=@std,y=@std] - 6.362 - -set list/prec=4 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err74_dotsym -! err74_dotsym.jnl -! 7/9/18 ACM -! Issue 1881 Large number of points in PLOT/OVER/VS/SYM=dot hangs Ferret - -define axis/x=1:359:2/units=degrees_east xaxis -define axis/y=-90:90:1/units=degrees_north yaxis -let xpts = x[gx=xaxis] + 0*y[gy=yaxis] -let ypts = 0* x[gx=xaxis] + y[gy=yaxis] -shade xpts -plot/vs/over/sym=dot xpts, ypts - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err74_save_bounds -! err74_save_bounds.jnl -! Appending irregular time to a file without time bounds. -! Caused an error: Ferret wanted to write bounds anyway. If the file -! being appended does not have bounds, and they didn't specify /BOUNDS, -! then just append w/o bounds. -! -! v7.4 and previous had a bug also with /NOBOUNDS when the axis is -! defined as /MONTHLY. It wrote the bounds anyway. - -define axis/monthly/t=1-jan-2000:31-dec-2020:1/t0=1-jan-2000 monthax -let tvar = l[gt=monthax] -save/clobber/nobounds/file=a.nc tvar - -cancel var tvar -cancel axis monthax - -! Note there is no MONTHAX:bounds = "MONTHAX_bnds" attribute -sp ncdump -h a.nc -netcdf a { -dimensions: - monthax = UNLIMITED ; // (252 currently) -variables: - double monthax(monthax) ; - monthax:units = "days since 2000-01-01" ; - monthax:axis = "T" ; - monthax:calendar = "GREGORIAN" ; - monthax:time_origin = "1-JAN-2000" ; - monthax:standard_name = "time" ; - double tvar(monthax) ; - tvar:missing_value = -1.e+34 ; - tvar:_FillValue = -1.e+34 ; - tvar:long_name = "L[GT=MONTHAX]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! Write a couple of subsets. - -! First, with save/nobounds -use a -save/nobounds/clobber/t=1-mar-2014:15-feb-2016/file=monthA.nc tvar -sp ncdump -h monthA.nc -netcdf monthA { -dimensions: - monthax = UNLIMITED ; // (25 currently) -variables: - double monthax(monthax) ; - monthax:units = "days since 2000-01-01" ; - monthax:axis = "T" ; - monthax:calendar = "GREGORIAN" ; - monthax:time_origin = "1-JAN-2000" ; - monthax:standard_name = "time" ; - double tvar(monthax) ; - tvar:missing_value = -1.e+34 ; - tvar:_FillValue = -1.e+34 ; - tvar:long_name = "L[GT=MONTHAX]" ; - tvar:history = "From a" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! If we don't specify anything for bounds, this file is saved with bounds -save/clobber/file=monthB.nc/t=1-mar-2016:31-dec-2018 tvar -sp ncdump -h monthB.nc -netcdf monthB { -dimensions: - monthax = UNLIMITED ; // (35 currently) - bnds = 2 ; -variables: - double monthax(monthax) ; - monthax:units = "days since 2000-01-01" ; - monthax:axis = "T" ; - monthax:calendar = "GREGORIAN" ; - monthax:time_origin = "1-JAN-2000" ; - monthax:standard_name = "time" ; - monthax:bounds = "monthax_bnds" ; - double monthax_bnds(monthax, bnds) ; - double tvar(monthax) ; - tvar:missing_value = -1.e+34 ; - tvar:_FillValue = -1.e+34 ; - tvar:long_name = "L[GT=MONTHAX]" ; - tvar:history = "From a" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -can var/all; can axis monthax; can data/all - -! Now we want to append the data in monthB.nc to monthA.nc -use monthB - -! Previously this was an error: complained about not finding MONTHAX_bnds variable. -! Now the save detects that the original file doesn't have bounds, and just doesn't -! write them. - -save/append/file=monthA.nc/t=1-mar-2016:31-dec-2017 tvar - -! File monthA is written without error and does not havet time bouunds -! The appended axis, now of length without time bounds -sp ncdump -h monthA.nc -netcdf monthA { -dimensions: - monthax = UNLIMITED ; // (47 currently) -variables: - double monthax(monthax) ; - monthax:units = "days since 2000-01-01" ; - monthax:axis = "T" ; - monthax:calendar = "GREGORIAN" ; - monthax:time_origin = "1-JAN-2000" ; - monthax:standard_name = "time" ; - double tvar(monthax) ; - tvar:missing_value = -1.e+34 ; - tvar:_FillValue = -1.e+34 ; - tvar:long_name = "L[GT=MONTHAX]" ; - tvar:history = "From a" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -! File monthA is written without error and does not havet time bouunds -! The appended axis, now of length without time bounds -sp ncdump -h monthA.nc -netcdf monthA { -dimensions: - monthax = UNLIMITED ; // (47 currently) -variables: - double monthax(monthax) ; - monthax:units = "days since 2000-01-01" ; - monthax:axis = "T" ; - monthax:calendar = "GREGORIAN" ; - monthax:time_origin = "1-JAN-2000" ; - monthax:standard_name = "time" ; - double tvar(monthax) ; - tvar:missing_value = -1.e+34 ; - tvar:_FillValue = -1.e+34 ; - tvar:long_name = "L[GT=MONTHAX]" ; - tvar:history = "From a" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - - -! Its still an error to try to append with /bounds -set mode ignore -save/append/file=monthA.nc/t=1-dec-2018:31-dec-2018/bounds tvar - -set mode/last ignore - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err741_fillvalue_nan -! err741_fillvalue_nan.jnl -! issue 1883. _FillValue = nan, no missing_value - -! _FillValue is NaN in longitude and latitude too. - -use dsg_fill_is_nan - -show att TEMP_IR_UNCOR_MEAN - attributes for dataset: ./data/dsg_fill_is_nan.nc - temp_ir_uncor_mean._FillValue = NaN - temp_ir_uncor_mean.standard_name = sea_surface_skin_temperature - temp_ir_uncor_mean.long_name = Skin temperature - temp_ir_uncor_mean.units = degrees_c -show att O2_RBR_SAT_MEAN - attributes for dataset: ./data/dsg_fill_is_nan.nc - o2_rbr_sat_mean.missing_value = NaN - o2_rbr_sat_mean.long_name = Oxygen saturation - o2_rbr_sat_mean.units = percent - -! The nan must be replaced in the longitude and latitude coordinate variables -! missing-values are ok (for now?) in DSG files for any coordinate except time - -plot O2_RBR_SAT_MEAN - -! previously TEMP_IR_UNCOR_MEAN with only a _FillValue of NaN -! and no missing_vlue had no fill or missing attribute written - -save/clobber/file=a.nc TEMP_IR_UNCOR_MEAN,O2_RBR_SAT_MEAN -sp ncdump -h a.nc -netcdf a { -dimensions: - trajectory = 1 ; - obs = 10 ; -variables: - float trajectory(trajectory) ; - trajectory:long_name = "Trajectory/Drone ID" ; - trajectory:cf_role = "trajectory_id" ; - int rowsize(trajectory) ; - rowsize:long_name = "Number of Observations for this Trajectory" ; - rowsize:sample_dimension = "obs" ; - double longitude(obs) ; - longitude:missing_value = -1.e+34 ; - longitude:_FillValue = -1.e+34 ; - longitude:long_name = "longitude" ; - longitude:axis = "X" ; - longitude:units = "degrees_east" ; - longitude:actual_range = 290., 355. ; - longitude:history = "From dsg_fill_is_nan" ; - double latitude(obs) ; - latitude:missing_value = -1.e+34 ; - latitude:_FillValue = -1.e+34 ; - latitude:long_name = "latitude" ; - latitude:axis = "Y" ; - latitude:units = "degrees_north" ; - latitude:actual_range = 10., 40. ; - latitude:history = "From dsg_fill_is_nan" ; - double time(obs) ; - time:axis = "T" ; - time:long_name = "Time" ; - time:point_spacing = "uneven" ; - time:time_origin = "01-JAN-1970 00:00:00" ; - time:units = "seconds since 1970-01-01T00:00:00Z" ; - time:history = "From dsg_fill_is_nan" ; - double temp_ir_uncor_mean(obs) ; - temp_ir_uncor_mean:_FillValue = -1.e+34 ; - temp_ir_uncor_mean:long_name = "Skin temperature" ; - temp_ir_uncor_mean:units = "degrees_c" ; - temp_ir_uncor_mean:history = "From dsg_fill_is_nan" ; - double o2_rbr_sat_mean(obs) ; - o2_rbr_sat_mean:missing_value = -1.e+34 ; - o2_rbr_sat_mean:long_name = "Oxygen saturation" ; - o2_rbr_sat_mean:units = "percent" ; - o2_rbr_sat_mean:history = "From dsg_fill_is_nan" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; - :featureType = "Trajectory" ; -} - - -GO bn_reset bn_use_agg -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_use_agg -GO bn_use_agg -! bn_use_agg.jnl -! 5/20/2018 ACM -! The syntax "use myagg.agg" runs Ferret commands in the journal file myagg.agg -! which initialize an aggregation dataset, treating .agg file as a dataset. -! as of 5/20/18, the .agg extension is not needed (issue 1651) - -! The .agg file in a directory with path spelled out, but w/o the .agg extension - -! Assumes the current working directory is the bench subdirectory -define symbol pwd `SPAWN("pwd")` - !-> define symbol pwd /home/users/ansley/build/pyferret/bench -use ($pwd)/v7jnls/four - !-> SET DAT/FORM=CDF /home/users/ansley/build/pyferret/bench/v7jnls/four -! Example .agg file, used to initialize an aggregation - -ensemble fourfiles = ens1, ens3, ens2, ens4 - -show data - currently SET data sets: - 5> fourfiles (default) Ensemble aggregation - name title I J K L M N - SST SST_IN 1:10 1:9 ... 1:12 1:4 ... - ------------------------------ - member_dset - Member dataset names in Ensembl ... ... ... ... 1:4 ... - title Global Att *title* in Ensemble ... ... ... ... 1:4 ... - history Global Att *history* in Ensembl ... ... ... ... 1:4 ... - Conventions - Global Att *Conventions* in Ens ... ... ... ... 1:4 ... - MODEL Global Att *MODEL* in Ensemble ... ... ... ... 1:4 ... - NUMBER Global Att *NUMBER* in Ensemble ... ... ... ... 1:4 ... - -can data/all - -! .agg file found in directory in the FER_GO paths - -use four.agg -! Example .agg file, used to initialize an aggregation - -ensemble fourfiles = ens1, ens3, ens2, ens4 - - -show data - currently SET data sets: - 5> fourfiles (default) Ensemble aggregation - name title I J K L M N - SST SST_IN 1:10 1:9 ... 1:12 1:4 ... - ------------------------------ - member_dset - Member dataset names in Ensembl ... ... ... ... 1:4 ... - title Global Att *title* in Ensemble ... ... ... ... 1:4 ... - history Global Att *history* in Ensembl ... ... ... ... 1:4 ... - Conventions - Global Att *Conventions* in Ens ... ... ... ... 1:4 ... - MODEL Global Att *MODEL* in Ensemble ... ... ... ... 1:4 ... - NUMBER Global Att *NUMBER* in Ensemble ... ... ... ... 1:4 ... - -can data/all - -! found in a directory in the FER_GO paths, w/o extension -use four -! Example .agg file, used to initialize an aggregation - -ensemble fourfiles = ens1, ens3, ens2, ens4 - -show data - currently SET data sets: - 5> fourfiles (default) Ensemble aggregation - name title I J K L M N - SST SST_IN 1:10 1:9 ... 1:12 1:4 ... - ------------------------------ - member_dset - Member dataset names in Ensembl ... ... ... ... 1:4 ... - title Global Att *title* in Ensemble ... ... ... ... 1:4 ... - history Global Att *history* in Ensembl ... ... ... ... 1:4 ... - Conventions - Global Att *Conventions* in Ens ... ... ... ... 1:4 ... - MODEL Global Att *MODEL* in Ensemble ... ... ... ... 1:4 ... - NUMBER Global Att *NUMBER* in Ensemble ... ... ... ... 1:4 ... - -can data/all - - -! The more complex example from bn_aggregate_u, aggregate in U, T, E, F. - -! If aggregate_tef script has alrady run, leaving the example files -! it writes in tmp/, reuse those, otherwise create them. - -! check for those files. -IF `test_opendap("tmp/f03_e2_t3.nc") NE 0` THEN - !-> IF 0 THEN -ENDIF - -use bigagg -! Example .agg file, used to initialize an aggregation - - -! *** create an artificial file collection with another variable, fcst_3 *** - -! a 20x20 lat-long region -define axis/x=140e:160e:1 xax -define axis/y=10n:20n:1 yax -define axis/Z=0:500:500/EDGES/units=m zax ! a single point axis - -! a 20 year regular monthly axis starting in Jan 1950 -DEFINE AXIS/UNITS=DAYS/T0=01-JAN-1900/EDGES/T=01-JAN-1950:31-DEC-1970:`365.2425/12` monthly - !-> DEFINE AXIS/UNITS=DAYS/T0=01-JAN-1900/EDGES/T=01-JAN-1950:31-DEC-1970:30.436875 monthly - -! define a moving field with errors increasing from a given forecast date -let vy = 1/500 ! speed that forecast structure deviates from truth -let vx = (1+(T[gt=monthly]-tstart)/2000)* 1/300 -let xt = x[gx=xax]-vx*T[gt=monthly] -let yt = y[gy=yax]-vy*T[gt=monthly] -let field = COS((xt-150)/5)*COS((yt-30)/5) + Z[gz=zax] -let fcst = ensemble_variation * (field + fcst_error) -define attribute fcst.im_everywhere = "so promote me" -set variable/title="some variable" fcst -let static_error = SIN((x[gx=xax]-140)/5)*SIN((y[gy=yax]-20)/5) + RANDU(x[gx=xax]+y[gy=yax]) -let structure_drift = (t[gt=monthly]-tstart)/5000 * static_error -let random_error = (t[gt=monthly]-tstart)/2000 * RANDU(t[gt=monthly]+x[gx=xax]+y[gy=yax]) -let fcst_error = structure_drift + random_error - -! Define another variable fcst_3 -let/title="another variable" fcst_3 = fcst + 3 + 0.1*fcst_error - - -repeat/name=fdate/range=1:7:3 (\ - let tstart = t[gt=monthly,l=`fdate`];\ - repeat/name=ens/range=1:2:1 (\ - let ensemble_variation = 1 + (ens-3)/20;\ - let realization = `ens`;\ - save/clobber/file="tmp/f`(fdate-1)/3+1,zw=2`_e`ens`_tu1.nc"/l=`fdate`:`fdate+11` fcst_3, realization;\ - save/clobber/file="tmp/f`(fdate-1)/3+1,zw=2`_e`ens`_tu2.nc"/l=`fdate+12`:`fdate+23` fcst_3, realization;\ - save/clobber/file="tmp/f`(fdate-1)/3+1,zw=2`_e`ens`_tu3.nc"/l=`fdate+24`:`fdate+35` fcst_3, realization)) -!-> REPEAT: FDATE:1 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=1] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> LIST/FORMAT=CDF/clobber/file="tmp/f01_e1_tu1.nc"/l=1:12 fcst_3, realization - !-> LIST/FORMAT=CDF/clobber/file="tmp/f01_e1_tu2.nc"/l=13:24 fcst_3, realization - !-> LIST/FORMAT=CDF/clobber/file="tmp/f01_e1_tu3.nc"/l=25:36 fcst_3, realization -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> LIST/FORMAT=CDF/clobber/file="tmp/f01_e2_tu1.nc"/l=1:12 fcst_3, realization - !-> LIST/FORMAT=CDF/clobber/file="tmp/f01_e2_tu2.nc"/l=13:24 fcst_3, realization - !-> LIST/FORMAT=CDF/clobber/file="tmp/f01_e2_tu3.nc"/l=25:36 fcst_3, realization -!-> REPEAT: FDATE:4 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=4] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> LIST/FORMAT=CDF/clobber/file="tmp/f02_e1_tu1.nc"/l=4:15 fcst_3, realization - !-> LIST/FORMAT=CDF/clobber/file="tmp/f02_e1_tu2.nc"/l=16:27 fcst_3, realization - !-> LIST/FORMAT=CDF/clobber/file="tmp/f02_e1_tu3.nc"/l=28:39 fcst_3, realization -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> LIST/FORMAT=CDF/clobber/file="tmp/f02_e2_tu1.nc"/l=4:15 fcst_3, realization - !-> LIST/FORMAT=CDF/clobber/file="tmp/f02_e2_tu2.nc"/l=16:27 fcst_3, realization - !-> LIST/FORMAT=CDF/clobber/file="tmp/f02_e2_tu3.nc"/l=28:39 fcst_3, realization -!-> REPEAT: FDATE:7 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=7] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> LIST/FORMAT=CDF/clobber/file="tmp/f03_e1_tu1.nc"/l=7:18 fcst_3, realization - !-> LIST/FORMAT=CDF/clobber/file="tmp/f03_e1_tu2.nc"/l=19:30 fcst_3, realization - !-> LIST/FORMAT=CDF/clobber/file="tmp/f03_e1_tu3.nc"/l=31:42 fcst_3, realization -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> LIST/FORMAT=CDF/clobber/file="tmp/f03_e2_tu1.nc"/l=7:18 fcst_3, realization - !-> LIST/FORMAT=CDF/clobber/file="tmp/f03_e2_tu2.nc"/l=19:30 fcst_3, realization - !-> LIST/FORMAT=CDF/clobber/file="tmp/f03_e2_tu3.nc"/l=31:42 fcst_3, realization - -cancel variables/all - -! ***** end of TEFU file creation **************** - -SET MODE VERIFY -! define T aggregations - -! timeseries of files with variable fcst_1 -repeat/name=fdate/range=1:7:3 (\ - let tstart = t[gt=monthly,l=`fdate`];\ - repeat/name=ens/range=1:2:1 (\ - let realization = `ens`;\ - TSERIES t_f`(fdate-1)/3+1,zw=2`_e`ens` = SPAWN("ls -1 tmp/f`(fdate-1)/3+1,zw=2`_e`ens`_t?.nc") )) -!-> REPEAT: FDATE:1 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=1] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/T t_f01_e1 = SPAWN("ls -1 tmp/f01_e1_t?.nc") -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/T t_f01_e2 = SPAWN("ls -1 tmp/f01_e2_t?.nc") -!-> REPEAT: FDATE:4 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=4] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/T t_f02_e1 = SPAWN("ls -1 tmp/f02_e1_t?.nc") -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/T t_f02_e2 = SPAWN("ls -1 tmp/f02_e2_t?.nc") -!-> REPEAT: FDATE:7 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=7] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/T t_f03_e1 = SPAWN("ls -1 tmp/f03_e1_t?.nc") -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/T t_f03_e2 = SPAWN("ls -1 tmp/f03_e2_t?.nc") - -! timeseries of files with variable fcst_3 -repeat/name=fdate/range=1:7:3 (\ - let tstart = t[gt=monthly,l=`fdate`];\ - repeat/name=ens/range=1:2:1 (\ - let realization = `ens`;\ - TSERIES t_f`(fdate-1)/3+1,zw=2`_e`ens`_3 = SPAWN("ls -1 tmp/f`(fdate-1)/3+1,zw=2`_e`ens`_tu?.nc") )) -!-> REPEAT: FDATE:1 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=1] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/T t_f01_e1_3 = SPAWN("ls -1 tmp/f01_e1_tu?.nc") -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/T t_f01_e2_3 = SPAWN("ls -1 tmp/f01_e2_tu?.nc") -!-> REPEAT: FDATE:4 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=4] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/T t_f02_e1_3 = SPAWN("ls -1 tmp/f02_e1_tu?.nc") -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/T t_f02_e2_3 = SPAWN("ls -1 tmp/f02_e2_tu?.nc") -!-> REPEAT: FDATE:7 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=7] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/T t_f03_e1_3 = SPAWN("ls -1 tmp/f03_e1_tu?.nc") -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/T t_f03_e2_3 = SPAWN("ls -1 tmp/f03_e2_tu?.nc") - -cancel variable realization - -SET MODE VERIFY -! now union these to make datsets with fcnst_1 and fcst_3. - -show data/files/br; - currently SET data sets: - 1> t_f01_e1 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e1_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e1_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e1_t3.nc - - 2> t_f01_e2 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e2_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e2_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e2_t3.nc - - 3> t_f02_e1 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e1_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e1_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e1_t3.nc - - 4> t_f02_e2 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e2_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e2_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e2_t3.nc - - 5> t_f03_e1 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e1_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e1_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e1_t3.nc - - 6> t_f03_e2 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e2_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e2_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e2_t3.nc - - 7> t_f01_e1_3 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e1_tu1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e1_tu2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e1_tu3.nc - - 8> t_f01_e2_3 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e2_tu1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e2_tu2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e2_tu3.nc - - 9> t_f02_e1_3 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e1_tu1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e1_tu2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e1_tu3.nc - - 10> t_f02_e2_3 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e2_tu1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e2_tu2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e2_tu3.nc - - 11> t_f03_e1_3 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e1_tu1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e1_tu2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e1_tu3.nc - - 12> t_f03_e2_3 (default) - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e2_tu1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e2_tu2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e2_tu3.nc - - -DEFINE DATA/AGGREGAT/U u1 = t_f01_e1_3, t_f01_e1 -DEFINE DATA/AGGREGAT/U u2 = t_f01_e2, t_f01_e2_3 -show data u1 u2 - currently SET data sets: - 13> u1 Union aggregation - name title I J K L - FCST_3 another variable 1:21 1:11 1:1 1:36 - (L=1:12) - REALIZATION - 1 ... ... ... ... - FCST some variable 1:21 1:11 1:1 1:36 - (L=1:12) - FCST_2 another variable 1:21 1:11 1:1 1:36 - (L=1:12) - -can data u1 u2 - -! Make a batch of files, timeseries aggregations union-ed. -! the /QUIET supresses the note about skipping duplicate variables. -repeat/name=fdate/range=1:7:3 (\ - let tstart = t[gt=monthly,l=`fdate`];\ - repeat/name=ens/range=1:2:1 (\ - let realization = `ens`;\ - UNION/quiet t_f_u`(fdate-1)/3+1,zw=2`_e`ens` = t_f`(fdate-1)/3+1,zw=2`_e`ens`, t_f`(fdate-1)/3+1,zw=2`_e`ens`_3;\ - show data/br t_f_u`(fdate-1)/3+1,zw=2`_e`ens`)) -!-> REPEAT: FDATE:1 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=1] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/U/quiet t_f_u01_e1 = t_f01_e1, t_f01_e1_3 - !-> show data/br t_f_u01_e1 - currently SET data sets: - 13> t_f_u01_e1 (default) Union aggregation -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/U/quiet t_f_u01_e2 = t_f01_e2, t_f01_e2_3 - !-> show data/br t_f_u01_e2 - currently SET data sets: - 14> t_f_u01_e2 (default) Union aggregation -!-> REPEAT: FDATE:4 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=4] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/U/quiet t_f_u02_e1 = t_f02_e1, t_f02_e1_3 - !-> show data/br t_f_u02_e1 - currently SET data sets: - 15> t_f_u02_e1 (default) Union aggregation -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/U/quiet t_f_u02_e2 = t_f02_e2, t_f02_e2_3 - !-> show data/br t_f_u02_e2 - currently SET data sets: - 16> t_f_u02_e2 (default) Union aggregation -!-> REPEAT: FDATE:7 - !-> DEFINE VARIABLE tstart = t[gt=monthly,l=7] -!-> REPEAT: ENS:1 - !-> DEFINE VARIABLE realization = 1 - !-> DEFINE DATA/AGGREGAT/U/quiet t_f_u03_e1 = t_f03_e1, t_f03_e1_3 - !-> show data/br t_f_u03_e1 - currently SET data sets: - 17> t_f_u03_e1 (default) Union aggregation -!-> REPEAT: ENS:2 - !-> DEFINE VARIABLE realization = 2 - !-> DEFINE DATA/AGGREGAT/U/quiet t_f_u03_e2 = t_f03_e2, t_f03_e2_3 - !-> show data/br t_f_u03_e2 - currently SET data sets: - 18> t_f_u03_e2 (default) Union aggregation - -cancel variable realization - -! should share the same time axis -show grid fcst[d=t_f01_e1] - GRID GBT1 - name axis # pts start end subset - xax LONGITUDE 21mr 140E 160E full - yax LATITUDE 11 r 10N 20N full - ZAX1 Z (m) 1 r 250 250 full - MONTHLY3 TIME 36 r 16-JAN-1950 05:14 16-DEC-1952 12:13 full -show grid fcst_3[d=t_f_u01_e2] - GRID GBT1 - name axis # pts start end subset - xax LONGITUDE 21mr 140E 160E full - yax LATITUDE 11 r 10N 20N full - ZAX1 Z (m) 1 r 250 250 full - MONTHLY3 TIME 36 r 16-JAN-1950 05:14 16-DEC-1952 12:13 full - -! Now go on and aggregate these time & union aggregations, in E and F - -! ======== TEST SET 1: aggregate E first, then F - -! define tue aggregations -- only the first remains unhidden -ENSEMBLE tue_f01 = t_f_u01_e1, t_f_u01_e2 -ENSEMBLE/hide tue_f02 = t_f_u02_e1, t_f_u02_e1 -ENSEMBLE/hide tue_f03 = t_f_u03_e1, t_f_u03_e2 -SHOW DATA/brief - currently SET data sets: - 1> t_f01_e1 - 2> t_f01_e2 - 3> t_f02_e1 - 4> t_f02_e2 - 5> t_f03_e1 - 6> t_f03_e2 - 7> t_f01_e1_3 - 8> t_f01_e2_3 - 9> t_f02_e1_3 - 10> t_f02_e2_3 - 11> t_f03_e1_3 - 12> t_f03_e2_3 - 13> t_f_u01_e1 Union aggregation - 14> t_f_u01_e2 Union aggregation - 16> t_f_u02_e2 Union aggregation - 19> tue_f01 Ensemble aggregation - 20> tue_f02 Ensemble aggregation - 21> tue_f03 (default) Ensemble aggregation -SHOW DATA/FULL tue_f03 - currently SET data sets: - 21> tue_f03 (default) Ensemble aggregation - Ensemble series of 2 datasets patterned on t_f_u03_e1 - name title I J K L M N - FCST some variable 1:21 1:11 1:1 1:36 1:2 ... - (L=7:18) - on grid GEN14 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:2.5 - FCST_2 another variable 1:21 1:11 1:1 1:36 1:2 ... - (L=7:18) - on grid GEN14 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:2.5 - REALIZATION - 1 ... ... ... ... 1:2 ... - on grid GGE4 with -1.E+34 for missing data - E=0.5:2.5 - FCST_3 another variable 1:21 1:11 1:1 1:36 1:2 ... - (L=7:18) - on grid GEN14 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:2.5 - ------------------------------ - member_dset - Member dataset names in Ensembl ... ... ... ... 1:2 ... - Data type = TEXT - on grid GGE4 with -1.E+34 for missing data - E=0.5:2.5 - - time range: 17-JUL-1950 20:09 to 17-JUN-1953 03:07 - - Member datasets: - 21.1: t_f_u03_e1 - 21.2: t_f_u03_e2 -SHOW DATA/ATT tue_f03 ! notice the promotion of fcst.im_everywhere - currently SET data sets: - 21> tue_f03 (default) Ensemble aggregation - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . aggregate name CHAR 7 F tue_f03 - - FCST FLOAT long_name CHAR 13 T some variable - missing_value DOUBLE 1 T -1.E+34 - - FCST_2 FLOAT long_name CHAR 16 T another variable - missing_value DOUBLE 1 T -1.E+34 - - REALIZATION FLOAT long_name CHAR 1 T 1 - missing_value DOUBLE 1 T -1.E+34 - - FCST_3 FLOAT long_name CHAR 16 T another variable - missing_value DOUBLE 1 T -1.E+34 - - member_dset CHAR long_name CHAR 32 T Member dataset names in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - -! define tuef aggregation -FMRC/HIDE tuef = tue_f01, tue_f02, tue_f03 -SHOW DATA/brief/files - currently SET data sets: - 1> t_f01_e1 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e1_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e1_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e1_t3.nc - - 2> t_f01_e2 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e2_t1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e2_t2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e2_t3.nc - - 3> t_f02_e1 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e1_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e1_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e1_t3.nc - - 4> t_f02_e2 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e2_t1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e2_t2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e2_t3.nc - - 5> t_f03_e1 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e1_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e1_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e1_t3.nc - - 6> t_f03_e2 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e2_t1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e2_t2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e2_t3.nc - - 7> t_f01_e1_3 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e1_tu1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e1_tu2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e1_tu3.nc - - 8> t_f01_e2_3 - time-dependent data files: -16-JAN-1950 05:14 -> 17-DEC-1950 00:34 tmp/f01_e2_tu1.nc -16-JAN-1951 11:03 -> 17-DEC-1951 06:23 tmp/f01_e2_tu2.nc -16-JAN-1952 16:52 -> 16-DEC-1952 12:13 tmp/f01_e2_tu3.nc - - 9> t_f02_e1_3 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e1_tu1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e1_tu2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e1_tu3.nc - - 10> t_f02_e2_3 - time-dependent data files: -17-APR-1950 12:41 -> 18-MAR-1951 08:01 tmp/f02_e2_tu1.nc -17-APR-1951 18:31 -> 17-MAR-1952 13:51 tmp/f02_e2_tu2.nc -17-APR-1952 00:20 -> 17-MAR-1953 19:40 tmp/f02_e2_tu3.nc - - 11> t_f03_e1_3 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e1_tu1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e1_tu2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e1_tu3.nc - - 12> t_f03_e2_3 - time-dependent data files: -17-JUL-1950 20:09 -> 17-JUN-1951 15:29 tmp/f03_e2_tu1.nc -18-JUL-1951 01:58 -> 16-JUN-1952 21:18 tmp/f03_e2_tu2.nc -17-JUL-1952 07:47 -> 17-JUN-1953 03:07 tmp/f03_e2_tu3.nc - - 13> t_f_u01_e1 Union aggregation - Member datasets: - 13.1: t_f01_e1 - 13.2: t_f01_e1_3 - 14> t_f_u01_e2 Union aggregation - Member datasets: - 14.1: t_f01_e2 - 14.2: t_f01_e2_3 - 16> t_f_u02_e2 Union aggregation - Member datasets: - 16.1: t_f02_e2 - 16.2: t_f02_e2_3 - 22> tuef (default) Forecast aggregation - Member datasets: - 22.1: tue_f01 - 22.2: tue_f02 - 22.3: tue_f03 -show data/full tuef - currently SET data sets: - 22> tuef (default) Forecast aggregation - Forecast series of 3 datasets patterned on tue_f01 - name title I J K L M N - FCST some variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - on grid GFN1 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:2.5 F=16-NOV-1949 08:16:17-AUG-1950 06:38 - TF_TIMES Forecast time step matrix ... ... ... 1:36 ... 1:9 - days since 01-JAN-1900 on grid FTI11 with -1.E+34 for missing data - F=16-DEC-1949 18:45:16-SEP-1950 17:07 - FCST_2 another variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - on grid GFN1 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:2.5 F=16-NOV-1949 08:16:17-AUG-1950 06:38 - FCST_3 another variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - on grid GFN1 with -1.E+34 for missing data - X=139.5E:160.5E Y=9.5N:20.5N Z=249.5:250.5 E=0.5:2.5 F=16-NOV-1949 08:16:17-AUG-1950 06:38 - - time range: 15.218 to 1080.5 - - Member datasets: - 22.1: tue_f01 - 22.2: tue_f02 - 22.3: tue_f03 - -! The time-union-ensemble-forecast aggregation - -set data tuef -show data tuef - currently SET data sets: - 22> tuef (default) Forecast aggregation - name title I J K L M N - FCST some variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - TF_TIMES Forecast time step matrix ... ... ... 1:36 ... 1:9 - FCST_2 another variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - FCST_3 another variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - -sh grid fcst - GRID (G197) Forecast Aggregation Grid - name axis # pts start end subset - xax LONGITUDE 21mr 140E 160E full - yax LATITUDE 11 r 10N 20N full - ZAX1 Z (m) 1 r 250 250 full - TF_LAG_T2 MODEL ELAPSED TIME 36 r 15.218 1080.5 full - ENSEMBLE1 E (realization) 2 r 1 2 full - RUN FORECAST 3 r 01-JAN-1950 00:00 02-JUL-1950 14:54 full -sh grid fcst_3 - GRID (G197) Forecast Aggregation Grid - name axis # pts start end subset - xax LONGITUDE 21mr 140E 160E full - yax LATITUDE 11 r 10N 20N full - ZAX1 Z (m) 1 r 250 250 full - TF_LAG_T2 MODEL ELAPSED TIME 36 r 15.218 1080.5 full - ENSEMBLE1 E (realization) 2 r 1 2 full - RUN FORECAST 3 r 01-JAN-1950 00:00 02-JUL-1950 14:54 full - -! simplest acess -- compact form -- just demonstrate it doesn't fail -stat/brief fcst[i=11:12, j=5:6, l=31:32, m=1:2, n=2:3] - - Total # of data points: 32 (2*2*1*2*2*2) - # flagged as bad data: 0 - Minimum value: 224.77 - Maximum value: 237.75 - Mean value: 228.15 (unweighted average) -stat/brief fcst_3[i=11:12, j=5:6, l=31:32, m=1:2, n=2:3] - - Total # of data points: 32 (2*2*1*2*2*2) - # flagged as bad data: 0 - Minimum value: 227.77 - Maximum value: 240.8 - Mean value: 231.16 (unweighted average) - -! 22 datasets are open including the final T-U-E-F forecast aggregation -show data - currently SET data sets: - 1> t_f01_e1 - name title I J K L - FCST some variable 1:21 1:11 1:1 1:36 - (L=1:12) - FCST_2 another variable 1:21 1:11 1:1 1:36 - (L=1:12) - REALIZATION - 1 ... ... ... ... - - 2> t_f01_e2 - name title I J K L - FCST some variable 1:21 1:11 1:1 1:36 - (L=1:12) - FCST_2 another variable 1:21 1:11 1:1 1:36 - (L=1:12) - REALIZATION - 2 ... ... ... ... - - 3> t_f02_e1 - name title I J K L - FCST some variable 1:21 1:11 1:1 1:36 - (L=4:15) - FCST_2 another variable 1:21 1:11 1:1 1:36 - (L=4:15) - REALIZATION - 1 ... ... ... ... - - 4> t_f02_e2 - name title I J K L - FCST some variable 1:21 1:11 1:1 1:36 - (L=4:15) - FCST_2 another variable 1:21 1:11 1:1 1:36 - (L=4:15) - REALIZATION - 2 ... ... ... ... - - 5> t_f03_e1 - name title I J K L - FCST some variable 1:21 1:11 1:1 1:36 - (L=7:18) - FCST_2 another variable 1:21 1:11 1:1 1:36 - (L=7:18) - REALIZATION - 1 ... ... ... ... - - 6> t_f03_e2 - name title I J K L - FCST some variable 1:21 1:11 1:1 1:36 - (L=7:18) - FCST_2 another variable 1:21 1:11 1:1 1:36 - (L=7:18) - REALIZATION - 2 ... ... ... ... - - 7> t_f01_e1_3 - name title I J K L - fcst_3 another variable 1:21 1:11 1:1 1:36 - (L=1:12) - realization - 1 ... ... ... ... - - 8> t_f01_e2_3 - name title I J K L - fcst_3 another variable 1:21 1:11 1:1 1:36 - (L=1:12) - realization - 2 ... ... ... ... - - 9> t_f02_e1_3 - name title I J K L - fcst_3 another variable 1:21 1:11 1:1 1:36 - (L=4:15) - realization - 1 ... ... ... ... - - 10> t_f02_e2_3 - name title I J K L - fcst_3 another variable 1:21 1:11 1:1 1:36 - (L=4:15) - realization - 2 ... ... ... ... - - 11> t_f03_e1_3 - name title I J K L - fcst_3 another variable 1:21 1:11 1:1 1:36 - (L=7:18) - realization - 1 ... ... ... ... - - 12> t_f03_e2_3 - name title I J K L - fcst_3 another variable 1:21 1:11 1:1 1:36 - (L=7:18) - realization - 2 ... ... ... ... - - 13> t_f_u01_e1 Union aggregation - name title I J K L - FCST some variable 1:21 1:11 1:1 1:36 - (L=1:12) - FCST_2 another variable 1:21 1:11 1:1 1:36 - (L=1:12) - REALIZATION - 1 ... ... ... ... - FCST_3 another variable 1:21 1:11 1:1 1:36 - (L=1:12) - - 14> t_f_u01_e2 Union aggregation - name title I J K L - FCST some variable 1:21 1:11 1:1 1:36 - (L=1:12) - FCST_2 another variable 1:21 1:11 1:1 1:36 - (L=1:12) - REALIZATION - 2 ... ... ... ... - FCST_3 another variable 1:21 1:11 1:1 1:36 - (L=1:12) - - 16> t_f_u02_e2 Union aggregation - name title I J K L - FCST some variable 1:21 1:11 1:1 1:36 - (L=4:15) - FCST_2 another variable 1:21 1:11 1:1 1:36 - (L=4:15) - REALIZATION - 2 ... ... ... ... - FCST_3 another variable 1:21 1:11 1:1 1:36 - (L=4:15) - - 22> tuef (default) Forecast aggregation - name title I J K L M N - FCST some variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - TF_TIMES Forecast time step matrix ... ... ... 1:36 ... 1:9 - FCST_2 another variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - FCST_3 another variable 1:21 1:11 1:1 1:36 1:2 1:3 - (L=1:12) - - -GO bn_reset bn_ens_promote_global -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_ens_promote_global -GO bn_ens_promote_global -! bn_ens_promote_global.jnl -! *acm* 6/4/2018 Issue 1667 - -! When making ensembles, promote global attributes of member -! sets to variables, so can examine, e.g. model_run description. - -ensemble fourfiles = memb2, memb3, memb1, memb4 -show data - currently SET data sets: - 5> fourfiles (default) Ensemble aggregation - name title I J K L M N - SST sst_IN 1:10 1:9 ... 1:12 1:4 ... - MYSTRING string var 1:1 ... ... ... 1:4 ... - ------------------------------ - member_dset - Member dataset names in Ensembl ... ... ... ... 1:4 ... - history Global Att *history* in Ensembl ... ... ... ... 1:4 ... - Conventions - Global Att *Conventions* in Ens ... ... ... ... 1:4 ... - model_run - Global Att *model_run* in Ensem ... ... ... ... 1:4 ... - number Global Att *number* in Ensemble ... ... ... ... 1:4 ... - title Global Att *title* in Ensemble ... ... ... ... 1:4 ... - numlist Global Att *numlist* in Ensembl ... ... ... ... 1:4 ... - sst_g_ Global Att *sst* in Ensemble ... ... ... ... 1:4 ... - investigator - Global Att *investigator* in En ... ... ... ... 1:4 ... - - -sh dat/att - currently SET data sets: - 5> fourfiles (default) Ensemble aggregation - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . aggregate name CHAR 9 F fourfiles - - SST FLOAT long_name CHAR 6 T sst_IN - units CHAR 5 T Deg C - missing_value DOUBLE 1 T -1.E+34 - history CHAR 22 T From coads_climatology - - MYSTRING CHAR long_name CHAR 10 T string var - missing_value DOUBLE 1 T -1.E+34 - - member_dset CHAR long_name CHAR 32 T Member dataset names in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - history CHAR long_name CHAR 32 T Global Att *history* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - Conventions CHAR long_name CHAR 36 T Global Att *Conventions* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - model_run CHAR long_name CHAR 34 T Global Att *model_run* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - number DOUBLE long_name CHAR 31 T Global Att *number* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - title CHAR long_name CHAR 30 T Global Att *title* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - numlist CHAR long_name CHAR 32 T Global Att *numlist* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - sst_g_ CHAR long_name CHAR 28 T Global Att *sst* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - - investigator CHAR long_name CHAR 37 T Global Att *investigator* in Ensemble - missing_value DOUBLE 1 T -1.E+34 - -sh att . - attributes for dataset: fourfiles - ..aggregate name = fourfiles - -! List a numeric file variable -list/i=1/j=2/l=1 sst - VARIABLE : sst_IN (Deg C) - DATA SET : Ensemble series of 4 datasets patterned on memb2 - FILENAME : fourfiles - SUBSET : 4 points (E (realization)) - LONGITUDE: 109W - LATITUDE : 15N - TIME : 16-JAN 06:00 - 109W - 1 - 1 / 1: 54.0 - 2 / 2: 81.0 - 3 / 3: 27.0 - 4 / 4: 108.0 - -! and a string file variable -list mystring - VARIABLE : string var - DATA SET : Ensemble series of 4 datasets patterned on memb2 - FILENAME : fourfiles - SUBSET : 4 points (E (realization)) - X : 1 - 1 - 1 - 1 / 1:"def" - 2 / 2:"ghi_ghi" - 3 / 3:"abc" - 4 / 4:"klm" - -! Dataset names collected as a variable on the Ens axis - -say `mystring[d=2],return=dset` - !-> MESSAGE/CONTINUE memb3 -memb3 -list member_dset - VARIABLE : Member dataset names in Ensemble - DATA SET : Ensemble series of 4 datasets patterned on memb2 - FILENAME : fourfiles - SUBSET : 4 points (E (realization)) - 1 / 1:"memb2" - 2 / 2:"memb3" - 3 / 3:"memb1" - 4 / 4:"memb4" - -! Global attributes promoted to variables on Ens axis - - -! strings -list model_run - VARIABLE : Global Att *model_run* in Ensemble - DATA SET : Ensemble series of 4 datasets patterned on memb2 - FILENAME : fourfiles - SUBSET : 4 points (E (realization)) - 1 / 1:"model run B special case" - 2 / 2:"model run C" - 3 / 3:"modelA" - 4 / 4:"modelD" - -list/e=2:3 model_run - VARIABLE : Global Att *model_run* in Ensemble - DATA SET : Ensemble series of 4 datasets patterned on memb2 - FILENAME : fourfiles - SUBSET : 2 points (E (realization)) - 2 / 2:"model run C" - 3 / 3:"modelA" - -set data fourfiles -show att . - attributes for dataset: fourfiles - ..aggregate name = fourfiles - -! Title is a global att in only some sets -list title - VARIABLE : Global Att *title* in Ensemble - DATA SET : Ensemble series of 4 datasets patterned on memb2 - FILENAME : fourfiles - SUBSET : 4 points (E (realization)) - 1 / 1:"Example datset 2" - 2 / 2:"" - 3 / 3:"A dataset title" - 4 / 4:"Example datset 4" - - -! investigator is a global att in only some sets, is not in 1st set. -list investigator - VARIABLE : Global Att *investigator* in Ensemble - DATA SET : Ensemble series of 4 datasets patterned on memb2 - FILENAME : fourfiles - SUBSET : 4 points (E (realization)) - 1 / 1:"" - 2 / 2:"" - 3 / 3:"Mickey Mouse" - 4 / 4:"" - -! Numeric single-valued attributes become numeric variables. -! any sets that don't have the attribute are represented by missing-value -list number - VARIABLE : Global Att *number* in Ensemble - DATA SET : Ensemble series of 4 datasets patterned on memb2 - FILENAME : fourfiles - SUBSET : 4 points (E (realization)) - 1 / 1: 2.000 - 2 / 2: .... - 3 / 3: 1.000 - 4 / 4: 4.000 - -! Numeric multi-valued attributes become strings listing the values. -! any sets that don't have the attribute are represented by null string -list numlist - VARIABLE : Global Att *numlist* in Ensemble - DATA SET : Ensemble series of 4 datasets patterned on memb2 - FILENAME : fourfiles - SUBSET : 4 points (E (realization)) - 1 / 1:"2" - 2 / 2:"3,2,1" - 3 / 3:"" - 4 / 4:"4,3,2,1" - -! A global attribute matching a file variable is promoted using a changed name -! Global attribute sst becomes promoted variable sst_g_ -list sst_g_ - VARIABLE : Global Att *sst* in Ensemble - DATA SET : Ensemble series of 4 datasets patterned on memb2 - FILENAME : fourfiles - SUBSET : 4 points (E (realization)) - 1 / 1:"A global att matching a file variable" - 2 / 2:"A global att matching a file variable" - 3 / 3:"" - 4 / 4:"A global att matching a file variable" - -! Multiple ensembles defined -cancel data/all - -ensemble f1 = memb2, memb3 -ensemble f2 = memb1, memb4 - -set data f1 -show data - currently SET data sets: - 3> f1 (default) Ensemble aggregation - name title I J K L M N - SST sst_IN 1:10 1:9 ... 1:12 1:2 ... - MYSTRING string var 1:1 ... ... ... 1:2 ... - ------------------------------ - member_dset - Member dataset names in Ensembl ... ... ... ... 1:2 ... - history Global Att *history* in Ensembl ... ... ... ... 1:2 ... - Conventions - Global Att *Conventions* in Ens ... ... ... ... 1:2 ... - model_run - Global Att *model_run* in Ensem ... ... ... ... 1:2 ... - number Global Att *number* in Ensemble ... ... ... ... 1:2 ... - title Global Att *title* in Ensemble ... ... ... ... 1:2 ... - numlist Global Att *numlist* in Ensembl ... ... ... ... 1:2 ... - sst_g_ Global Att *sst* in Ensemble ... ... ... ... 1:2 ... - - 6> f2 Ensemble aggregation - name title I J K L M N - SST sst_IN 1:10 1:9 ... 1:12 1:2 ... - MYSTRING string var 1:1 ... ... ... 1:2 ... - ------------------------------ - member_dset - Member dataset names in Ensembl ... ... ... ... 1:2 ... - history Global Att *history* in Ensembl ... ... ... ... 1:2 ... - Conventions - Global Att *Conventions* in Ens ... ... ... ... 1:2 ... - investigator - Global Att *investigator* in En ... ... ... ... 1:2 ... - model_run - Global Att *model_run* in Ensem ... ... ... ... 1:2 ... - number Global Att *number* in Ensemble ... ... ... ... 1:2 ... - title Global Att *title* in Ensemble ... ... ... ... 1:2 ... - numlist Global Att *numlist* in Ensembl ... ... ... ... 1:2 ... - sst_g_ Global Att *sst* in Ensemble ... ... ... ... 1:2 ... - -list model_run, title - DATA SET: f1 - Ensemble series of 2 datasets patterned on memb2 - E (realization): 0.5 to 2.5 - Column 1: MODEL_RUN is Global Att *model_run* in Ensemble - Column 2: TITLE is Global Att *title* in Ensemble - MODEL_RU TITLE -1 / 1: "model run B special case" "Example datset 2" -2 / 2: "model run C" "" - -set data f2 -show data - currently SET data sets: - 3> f1 Ensemble aggregation - name title I J K L M N - SST sst_IN 1:10 1:9 ... 1:12 1:2 ... - MYSTRING string var 1:1 ... ... ... 1:2 ... - ------------------------------ - member_dset - Member dataset names in Ensembl ... ... ... ... 1:2 ... - history Global Att *history* in Ensembl ... ... ... ... 1:2 ... - Conventions - Global Att *Conventions* in Ens ... ... ... ... 1:2 ... - model_run - Global Att *model_run* in Ensem ... ... ... ... 1:2 ... - number Global Att *number* in Ensemble ... ... ... ... 1:2 ... - title Global Att *title* in Ensemble ... ... ... ... 1:2 ... - numlist Global Att *numlist* in Ensembl ... ... ... ... 1:2 ... - sst_g_ Global Att *sst* in Ensemble ... ... ... ... 1:2 ... - - 6> f2 (default) Ensemble aggregation - name title I J K L M N - SST sst_IN 1:10 1:9 ... 1:12 1:2 ... - MYSTRING string var 1:1 ... ... ... 1:2 ... - ------------------------------ - member_dset - Member dataset names in Ensembl ... ... ... ... 1:2 ... - history Global Att *history* in Ensembl ... ... ... ... 1:2 ... - Conventions - Global Att *Conventions* in Ens ... ... ... ... 1:2 ... - investigator - Global Att *investigator* in En ... ... ... ... 1:2 ... - model_run - Global Att *model_run* in Ensem ... ... ... ... 1:2 ... - number Global Att *number* in Ensemble ... ... ... ... 1:2 ... - title Global Att *title* in Ensemble ... ... ... ... 1:2 ... - numlist Global Att *numlist* in Ensembl ... ... ... ... 1:2 ... - sst_g_ Global Att *sst* in Ensemble ... ... ... ... 1:2 ... - -list model_run, title, investigator - DATA SET: f2 - Ensemble series of 2 datasets patterned on memb1 - E (realization): 0.5 to 2.5 - Column 1: MODEL_RUN is Global Att *model_run* in Ensemble - Column 2: TITLE is Global Att *title* in Ensemble - Column 3: INVESTIGATOR is Global Att *investigator* in Ensemble - MODEL_RU TITLE INVESTIGATOR -1 / 1: "modelA" "A dataset title" "Mickey Mouse" -2 / 2: "modelD" "Example datset 4" "" - - - -! *********** v7.43 and 7.44 Additions *********** - -GO bn_reset bn743_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn743_bug_fixes -GO bn743_bug_fixes -! bn743_bug_fixes.jnl -! test various fixes that went into version 7.43 -! 7/18 *acm* - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err742_plot_vs_windowing -! err742_plot_vs_windowing -! bug 1884 The lower two windows showed nothing. -! they should look the same as the upper ones. - -set mode verify - -! Want a specific aspect ratio, so open a new window -set win/asp=.77 2 - -def view/x=0.1:0.33330/y=0.55:0.9 v1; set view v1; go magnify -plot/thick/nolab/hl=-70:70/vl=-70:70/vs/line 1e6*{-1,1}, 1e6*{-1,1} - -def view/x=0.1:0.33331/y=0.1:0.45 v2; set view v2; go magnify -plot/thick/nolab/hl=-70:70/vl=-70:70/vs/line 1e6*{-1,1}, 1e6*{-1,1} - - - -def view/x=0.6:0.83330/y=0.55:0.9 v3; set view v3; go magnify -plot/thick/nolab/hl=-70:70/vl=-70:70/vs/line 1e6*{-1,1}, 1e6*{1,-1} - -def view/x=0.6:0.83331/y=0.1:0.45 v4; set view v4; go magnify -plot/thick/nolab/hl=-70:70/vl=-70:70/vs/line 1e6*{-1,1}, 1e6*{1,-1} - -frame/file=plot_vs_windowing.gif - -cancel window 2 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err742_use_numeric_name -! err742_use_numeric_name -! Issue 1887 -! 26-July 2018 ACm -! -! write some example files - -let var = {1,2,3,4,5} -save/clobber/file=1990-2010.nc var -save/clobber/file=2001.07.nc cos(var) -save/clobber/file=1990.nc var[i=1] -save/clobber/file=2001+07.nc sin(var) -can var/all - -! These USE commands previously caused fortran run-time errors -use 1990-2010 -use 2001.07 -use 2001+07 - -sh dat - currently SET data sets: - 1> ./1990-2010.nc - name title I J K L - var {1,2,3,4,5} 1:5 ... ... ... - - 2> ./2001.07.nc - name title I J K L - E054 COS(VAR) 1:5 ... ... ... - - 3> ./2001+07.nc (default) - name title I J K L - E355 SIN(VAR) 1:5 ... ... ... - - -! Intentional error -!The syntax "USE n" where n is any integr, always means just see if -!that dataset number is in use, and make it the default. - -set mode ignore -use 1990 -set mode/last ignore - -! Looking for files somewhere in the dataset paths. - -let var = {1,2,3,4,5} -save/clobber/file="data/1990-2010.nc" var -save/clobber/file="data/2001.07.nc" cos(var) -save/clobber/file="data/2001+07.nc" sin(var) -can var/all - -! These USE commands previously caused fortran run-time errors -use 1990-2010 -use 2001.07 -use 2001+07 - -sh dat - currently SET data sets: - 1> ./1990-2010.nc - name title I J K L - var {1,2,3,4,5} 1:5 ... ... ... - - 2> ./2001.07.nc - name title I J K L - E054 COS(VAR) 1:5 ... ... ... - - 3> ./2001+07.nc (default) - name title I J K L - E355 SIN(VAR) 1:5 ... ... ... - - -sp rm data/1990-2010.nc -sp rm data/2001.07.nc -sp rm data/2001+07.nc - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err742_hov_fill -! err742_hov_fill.jnl -! Issue 1888, location of FILL plot -! 7/27/2018 ACM - -set window/aspect=1 - - -! A variable on a 5-month axis of 3-hour intervals defined with units -! of seconds. -define axis/t=1-mar-2012:1-aug-2012:10800/units=seconds/t0=1-mar-2012 t3hour -define axis/y=1:30:1/units=degrees_north yaxis -let ytvar = y[gy=yaxis] * cos(L[gt=t3hour]/200) +0.1*L[gt=t3hour] - -! The upper plot is fine. The lower one has the right data but is located -! wrong so its shifted and the first part of it is chopped off. -set v upper; fill/pal=pale_green_blue_rev ytvar -set v lower; fill/pal=pale_green_blue_rev/lev/l=400:1224 ytvar - -frame/file=hov_fill.gif - -! Restore default aspect ratio -set window/aspect=0.75 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err742_list_many_vars -! err742_list_many_vars.jnl -! -! manyvars.nc was created using the following: -! -! DEFINE AXIS /X=1:99:1 XAX -! DEFINE AXIS /Z=1:5:1 ZAX -! DEFINE GRID /X=XAX /Z=ZAX XZGRID -! SET GRID XZGRID -! LET VAR01 = 1.0 + 0.1 * Z -! SAVE /CLOBBER /FILE=manyvars.nc VAR01 -! REPEAT /I=2:9:1 ( LET VAR0`I` = `I`.0 + 0.1 * Z ; SAVE /APPEND /FILE=manyvars.nc VAR0`I` ) -! REPEAT /I=10:99:1 ( LET VAR`I` = `I`.0 + 0.1 * Z ; SAVE /APPEND /FILE=manyvars.nc VAR`I` ) -! -USE manyvars.nc -LIST /CLOBBER /FILE=manyvars.tsv /norow /width=1024 /format=tab \ - VAR01, VAR02, VAR03, VAR04, VAR05, VAR06, VAR07, VAR08, VAR09, VAR10, \ - VAR11, VAR12, VAR13, VAR14, VAR15, VAR16, VAR17, VAR18, VAR19, VAR20, \ - VAR21, VAR22, VAR23, VAR24, VAR25, VAR26, VAR27, VAR28, VAR29, VAR30, \ - VAR31, VAR32, VAR33, VAR34, VAR35, VAR36, VAR37, VAR38, VAR39, VAR40, \ - VAR41, VAR42, VAR43, VAR44, VAR45, VAR46, VAR47, VAR48, VAR49, VAR50, \ - VAR51, VAR52, VAR53, VAR54, VAR55, VAR56, VAR57, VAR58, VAR59, VAR60, \ - VAR61, VAR62, VAR63, VAR64, VAR65, VAR66, VAR67, VAR68, VAR69, VAR70, \ - VAR71, VAR72, VAR73, VAR74, VAR75, VAR76, VAR77, VAR78, VAR79, VAR80, \ - VAR81, VAR82, VAR83, VAR84, VAR85, VAR86, VAR87, VAR88, VAR89, VAR90, \ - VAR91, VAR92, VAR93, VAR94, VAR95, VAR96, VAR97, VAR98, VAR99 -! -! Earier versions would show VAR49 VAR50 ... VAR74 where VAR17 VAR18 ... VAR42 should be -! in both the titles and the values -! -SPAWN "cat manyvars.tsv" - DATA SET: ./data/manyvars.nc - Z: 0.5 to 5.5 - Column 1: VAR01 is 1.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 2: VAR02 is 2.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 3: VAR03 is 3.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 4: VAR04 is 4.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 5: VAR05 is 5.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 6: VAR06 is 6.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 7: VAR07 is 7.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 8: VAR08 is 8.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 9: VAR09 is 9.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 10: VAR10 is 10.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 11: VAR11 is 11.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 12: VAR12 is 12.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 13: VAR13 is 13.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 14: VAR14 is 14.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 15: VAR15 is 15.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 16: VAR16 is 16.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 17: VAR17 is 17.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 18: VAR18 is 18.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 19: VAR19 is 19.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 20: VAR20 is 20.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 21: VAR21 is 21.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 22: VAR22 is 22.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 23: VAR23 is 23.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 24: VAR24 is 24.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 25: VAR25 is 25.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 26: VAR26 is 26.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 27: VAR27 is 27.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 28: VAR28 is 28.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 29: VAR29 is 29.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 30: VAR30 is 30.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 31: VAR31 is 31.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 32: VAR32 is 32.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 33: VAR33 is 33.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 34: VAR34 is 34.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 35: VAR35 is 35.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 36: VAR36 is 36.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 37: VAR37 is 37.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 38: VAR38 is 38.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 39: VAR39 is 39.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 40: VAR40 is 40.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 41: VAR41 is 41.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 42: VAR42 is 42.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 43: VAR43 is 43.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 44: VAR44 is 44.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 45: VAR45 is 45.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 46: VAR46 is 46.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 47: VAR47 is 47.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 48: VAR48 is 48.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 49: VAR49 is 49.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 50: VAR50 is 50.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 51: VAR51 is 51.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 52: VAR52 is 52.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 53: VAR53 is 53.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 54: VAR54 is 54.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 55: VAR55 is 55.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 56: VAR56 is 56.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 57: VAR57 is 57.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 58: VAR58 is 58.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 59: VAR59 is 59.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 60: VAR60 is 60.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 61: VAR61 is 61.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 62: VAR62 is 62.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 63: VAR63 is 63.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 64: VAR64 is 64.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 65: VAR65 is 65.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 66: VAR66 is 66.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 67: VAR67 is 67.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 68: VAR68 is 68.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 69: VAR69 is 69.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 70: VAR70 is 70.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 71: VAR71 is 71.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 72: VAR72 is 72.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 73: VAR73 is 73.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 74: VAR74 is 74.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 75: VAR75 is 75.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 76: VAR76 is 76.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 77: VAR77 is 77.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 78: VAR78 is 78.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 79: VAR79 is 79.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 80: VAR80 is 80.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 81: VAR81 is 81.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 82: VAR82 is 82.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 83: VAR83 is 83.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 84: VAR84 is 84.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 85: VAR85 is 85.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 86: VAR86 is 86.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 87: VAR87 is 87.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 88: VAR88 is 88.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 89: VAR89 is 89.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 90: VAR90 is 90.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 91: VAR91 is 91.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 92: VAR92 is 92.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 93: VAR93 is 93.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 94: VAR94 is 94.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 95: VAR95 is 95.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 96: VAR96 is 96.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 97: VAR97 is 97.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 98: VAR98 is 98.0 + 0.1 * Z BAD FLAG : -1.E+34 - Column 99: VAR99 is 99.0 + 0.1 * Z BAD FLAG : -1.E+34 -VAR01 VAR02 VAR03 VAR04 VAR05 VAR06 VAR07 VAR08 VAR09 VAR10 VAR11 VAR12 VAR13 VAR14 VAR15 VAR16 VAR17 VAR18 VAR19 VAR20 VAR21 VAR22 VAR23 VAR24 VAR25 VAR26 VAR27 VAR28 VAR29 VAR30 VAR31 VAR32 VAR33 VAR34 VAR35 VAR36 VAR37 VAR38 VAR39 VAR40 VAR41 VAR42 VAR43 VAR44 VAR45 VAR46 VAR47 VAR48 VAR49 VAR50 VAR51 VAR52 VAR53 VAR54 VAR55 VAR56 VAR57 VAR58 VAR59 VAR60 VAR61 VAR62 VAR63 VAR64 VAR65 VAR66 VAR67 VAR68 VAR69 VAR70 VAR71 VAR72 VAR73 VAR74 VAR75 VAR76 VAR77 VAR78 VAR79 VAR80 VAR81 VAR82 VAR83 VAR84 VAR85 VAR86 VAR87 VAR88 VAR89 VAR90 VAR91 VAR92 VAR93 VAR94 VAR95 VAR96 VAR97 VAR98 VAR99 -1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1 26.1 27.1 28.1 29.1 30.1 31.1 32.1 33.1 34.1 35.1 36.1 37.1 38.1 39.1 40.1 41.1 42.1 43.1 44.1 45.1 46.1 47.1 48.1 49.1 50.1 51.1 52.1 53.1 54.1 55.1 56.1 57.1 58.1 59.1 60.1 61.1 62.1 63.1 64.1 65.1 66.1 67.1 68.1 69.1 70.1 71.1 72.1 73.1 74.1 75.1 76.1 77.1 78.1 79.1 80.1 81.1 82.1 83.1 84.1 85.1 86.1 87.1 88.1 89.1 90.1 91.1 92.1 93.1 94.1 95.1 96.1 97.1 98.1 99.1 -1.2 2.2 3.2 4.2 5.2 6.2 7.2 8.2 9.2 10.2 11.2 12.2 13.2 14.2 15.2 16.2 17.2 18.2 19.2 20.2 21.2 22.2 23.2 24.2 25.2 26.2 27.2 28.2 29.2 30.2 31.2 32.2 33.2 34.2 35.2 36.2 37.2 38.2 39.2 40.2 41.2 42.2 43.2 44.2 45.2 46.2 47.2 48.2 49.2 50.2 51.2 52.2 53.2 54.2 55.2 56.2 57.2 58.2 59.2 60.2 61.2 62.2 63.2 64.2 65.2 66.2 67.2 68.2 69.2 70.2 71.2 72.2 73.2 74.2 75.2 76.2 77.2 78.2 79.2 80.2 81.2 82.2 83.2 84.2 85.2 86.2 87.2 88.2 89.2 90.2 91.2 92.2 93.2 94.2 95.2 96.2 97.2 98.2 99.2 -1.3 2.3 3.3 4.3 5.3 6.3 7.3 8.3 9.3 10.3 11.3 12.3 13.3 14.3 15.3 16.3 17.3 18.3 19.3 20.3 21.3 22.3 23.3 24.3 25.3 26.3 27.3 28.3 29.3 30.3 31.3 32.3 33.3 34.3 35.3 36.3 37.3 38.3 39.3 40.3 41.3 42.3 43.3 44.3 45.3 46.3 47.3 48.3 49.3 50.3 51.3 52.3 53.3 54.3 55.3 56.3 57.3 58.3 59.3 60.3 61.3 62.3 63.3 64.3 65.3 66.3 67.3 68.3 69.3 70.3 71.3 72.3 73.3 74.3 75.3 76.3 77.3 78.3 79.3 80.3 81.3 82.3 83.3 84.3 85.3 86.3 87.3 88.3 89.3 90.3 91.3 92.3 93.3 94.3 95.3 96.3 97.3 98.3 99.3 -1.4 2.4 3.4 4.4 5.4 6.4 7.4 8.4 9.4 10.4 11.4 12.4 13.4 14.4 15.4 16.4 17.4 18.4 19.4 20.4 21.4 22.4 23.4 24.4 25.4 26.4 27.4 28.4 29.4 30.4 31.4 32.4 33.4 34.4 35.4 36.4 37.4 38.4 39.4 40.4 41.4 42.4 43.4 44.4 45.4 46.4 47.4 48.4 49.4 50.4 51.4 52.4 53.4 54.4 55.4 56.4 57.4 58.4 59.4 60.4 61.4 62.4 63.4 64.4 65.4 66.4 67.4 68.4 69.4 70.4 71.4 72.4 73.4 74.4 75.4 76.4 77.4 78.4 79.4 80.4 81.4 82.4 83.4 84.4 85.4 86.4 87.4 88.4 89.4 90.4 91.4 92.4 93.4 94.4 95.4 96.4 97.4 98.4 99.4 -1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5 11.5 12.5 13.5 14.5 15.5 16.5 17.5 18.5 19.5 20.5 21.5 22.5 23.5 24.5 25.5 26.5 27.5 28.5 29.5 30.5 31.5 32.5 33.5 34.5 35.5 36.5 37.5 38.5 39.5 40.5 41.5 42.5 43.5 44.5 45.5 46.5 47.5 48.5 49.5 50.5 51.5 52.5 53.5 54.5 55.5 56.5 57.5 58.5 59.5 60.5 61.5 62.5 63.5 64.5 65.5 66.5 67.5 68.5 69.5 70.5 71.5 72.5 73.5 74.5 75.5 76.5 77.5 78.5 79.5 80.5 81.5 82.5 83.5 84.5 85.5 86.5 87.5 88.5 89.5 90.5 91.5 92.5 93.5 94.5 95.5 96.5 97.5 98.5 99.5 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err742_stride_irreg_modulo -! err742_stride_irreg_modulo -! bug 1890, a subspan modulo axis that's irregularly spaced, -! applying strides caused a crash. - -! x axis is shorter than 360 -use err742_stride_irreg_modulo.nc -sh axis `lonvar,return=xaxis` - !-> sh axis longitude - name axis # pts start end - longitude LONGITUDE 6mi 179.5W(-179.5) 179.5E - Axis span (to cell edges) = 359.9 (modulo length = 360) - -set axis/stride=2 `lonvar,return=xaxis` - !-> set axis/stride=2 longitude - -! Previously this command crashes Ferret -stat lonvar - - X[GX=WIND_SPEED] - regrid: on X - LONGITUDE: 180W(-180) to 180E - Y: N/A - Z: N/A - T: N/A - E: N/A - F: N/A - DATA SET: ./data/err742_stride_irreg_modulo.nc - - Total # of data points: 3 (3*1*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 292 - Maximum value: 9584 - Mean value: 4404.3 (unweighted average) - Standard deviation: 4737.1 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err742_dash_vs -! err743_dash_vs.jnl -! 8/24/18 Another example of issue 1884: correctly doing critical -! portion of finding intercepts with axes in double precision - -! The dashed line plots had extra solid lines drawn, report of 8/23/18 - -def sym com "hl=-1:1/vs/line/dash x[gx=-2:2:.1], 0-1.3*cos(2*x[gx=-2:2:.1])" -can view; -set view ul; plot/nolab/vl=-4:4/($com) - !-> plot/nolab/vl=-4:4/hl=-1:1/vs/line/dash x[gx=-2:2:.1], 0-1.3*cos(2*x[gx=-2:2:.1]) -set view ur; plot/nolab/vl=-2:2/($com) - !-> plot/nolab/vl=-2:2/hl=-1:1/vs/line/dash x[gx=-2:2:.1], 0-1.3*cos(2*x[gx=-2:2:.1]) -set view ll; plot/nolab/vl=-1:1/($com) - !-> plot/nolab/vl=-1:1/hl=-1:1/vs/line/dash x[gx=-2:2:.1], 0-1.3*cos(2*x[gx=-2:2:.1]) -set view lr; plot/nolab/vl=-.5:.5/($com) - !-> plot/nolab/vl=-.5:.5/hl=-1:1/vs/line/dash x[gx=-2:2:.1], 0-1.3*cos(2*x[gx=-2:2:.1]) - -frame/file=dash_vs.gif - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err742_bounds_and_even -! err742_bounds_and_even.jnl -! The SHOW GRID couldn't get coordinates for the lon axis -! The first LIST command shows * for longitude range. -! The second LIST command caused a Fortran runtime error and crash - -! File has both point_spacing="even" attribute and bounds on the lon -! axis. The coordinates/bounds are not equally spaced. So neither -! the line_start/line_delta nor the line_coordinates were stored. - -use bug1894.nc -show grid sealev - GRID GDP1 - name axis # pts start end subset - LON1 LONGITUDE 72mi 2.5E 2.5W full - lat LATITUDE 5 r 10S 10N full - normal Z - TIME38 TIME 1 r 02-OCT-1992 12:00 02-OCT-1992 12:00 full -list/y=0/x=-20:20 sealev - VARIABLE : Sea Level Anomaly Estimate (m) - FILENAME : bug1894.nc - SUBSET : 8 points (LONGITUDE) - LATITUDE : 0 - TIME : 02-OCT-1992 12:00 - 0 - 3 - 17.5W / -3: 0.00433 - 12.5W / -2: -0.01566 - 7.5W / -1: -0.01129 - 2.5W / 0: 0.01790 - 2.5E / 1: 0.03413 - 7.5E / 2: 0.04252 - 12.5E / 3: .... - 17.5E / 4: .... -list/i=1:4 x[gx=sealev] - VARIABLE : X - axis LON1 - FILENAME : bug1894.nc - SUBSET : 4 points (LONGITUDE) - 2.5E / 1: 2.50 - 7.5E / 2: 7.50 - 12.5E / 3: 12.50 - 17.5E / 4: 17.50 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err742_v_levels -! err742_v_levels.jnl -! Issue 1899 -! ACM 10/30/2018 -! If the magnitudes of data are small, then /LEVELS=v failed -! to use the variance. - -use data/smallval.nc - -! Previously reported data too large or not within 3 STD -set view ul -shade/lev=v chl -show symbol LEV_OPNLEVS -LEV_OPNLEVS = "(0,3.5E-09,3.5E-09)(3.E-09,3.1E-08,1.E-09)(3.E-08,5.45E-08,3.5E-09)(inf)" - -! variable minus mean - -set view ur -shade/lev=vc chl - chl[x=@ave,y=@ave] -show symbol LEV_OPNLEVS -LEV_OPNLEVS = "(-inf)(-4.2E-08,-3.4E-08,8.E-09)(-3.4E-08,3.4E-08,2.E-09)(3.4E-08,4.2E-08,8.E-09)(inf)" - -! one cell w/ a larger value - -set view ll -shade/lev=v if chl gt 3.e-07 then (-3.e-6) else chl -show symbol LEV_OPNLEVS -LEV_OPNLEVS = "(-inf)(-4.E-08,-1.E-08,1.E-08)(-6.E-09,4.2E-08,2.E-09)(4.E-08,8.E-08,1.E-08)(inf)" - -! this is fine, plots a constant color - -set view lr -shade/lev=v 0.2 + 0*chl -show symbol LEV_OPNLEVS - -frame/file=lev_v_levels.gif - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err742_overlay_shorttime - -! err742_overlay_shorttime.jnl -! 11/1/2018 acm -! Issue 1900 -! - -! Overlay wrong for short-time-span plots. No line sample on key -! for plot/over lines. -! In addition for some choices of intervals, the minor tic marks -! are notdrawn at even sub-intervals of the labeled tics. - -define axis/t=30-aug-2017:1-sep-2017:1/units=minutes taxis -let var1 = cos(L[gt=taxis]/30) -let var2 = sin(L[gt=taxis]/10) - -set view upper -plot/t="30-aug-2017:01:00":"30-aug-2017:03:00" var1, var2 -set view lower -plot/t="30-aug-2017:01:00":"30-aug-2017:03:00" var1 -plot/over var2 - -frame/file=shorttime_over.gif - -! also for vertical time axes -cancel view -set view left -plot/trans/t="30-aug-2017:01:00":"30-aug-2017:03:00" var1, var2 -set view right -plot/trans/t="30-aug-2017:01:00":"30-aug-2017:03:00" var1 -plot/trans/over var2 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err742_xact_regrid -! err742_xact_regrid.jnl -! 11/6/2018 ACM -! -! More on @XACT regridding, see issue 1238 -! and see err682_xact_high_prec.jnl - -! Some axes where which match well enough that we we want to ignore -! the variation from the daily axis. - -Let time = {\ - 221.0000000000000,\ - 221.0416666666280,\ - 221.0833333333720,\ - 221.1250000000000,\ - 221.1666666666280,\ - 221.2083333333720,\ - 221.2916666666280,\ - 221.3333333333720,\ - 221.3750000000000,\ - 221.4166666666280} -define axis/t/t0=1-jan-2018/units=days my_axis = time -let var = L[gt=my_axis] - -define axis/t="10-aug-2018 00:00":"10-aug-2018 10:00":`1/24`/units=day/t0="1-jan-2018 00:00" hrly_ax - !-> define axis/t="10-aug-2018 00:00":"10-aug-2018 10:00":0.04166666666666666/units=day/t0="1-jan-2018 00:00" hrly_ax - - -! Some differ in the last few digits -list/prec=16 t[gt=my_axis] - VARIABLE : T - axis MY_AXIS - SUBSET : 10 points (TIME) - 10-AUG-2018 00:00:00 / 1: 221.0000000000000 - 10-AUG-2018 01:00:00 / 2: 221.0416666666280 - 10-AUG-2018 02:00:00 / 3: 221.0833333333720 - 10-AUG-2018 03:00:00 / 4: 221.1250000000000 - 10-AUG-2018 04:00:00 / 5: 221.1666666666280 - 10-AUG-2018 05:00:00 / 6: 221.2083333333720 - 10-AUG-2018 07:00:00 / 7: 221.2916666666280 - 10-AUG-2018 08:00:00 / 8: 221.3333333333720 - 10-AUG-2018 09:00:00 / 9: 221.3750000000000 - 10-AUG-2018 10:00:00 / 10: 221.4166666666280 -list/prec=16 t[gt=hrly_ax] - VARIABLE : T - axis HRLY_AX - SUBSET : 11 points (TIME) - 10-AUG-2018 00:00:00 / 1: 221.0000000000000 - 10-AUG-2018 01:00:00 / 2: 221.0416666666667 - 10-AUG-2018 02:00:00 / 3: 221.0833333333333 - 10-AUG-2018 03:00:00 / 4: 221.1250000000000 - 10-AUG-2018 04:00:00 / 5: 221.1666666666667 - 10-AUG-2018 05:00:00 / 6: 221.2083333333333 - 10-AUG-2018 06:00:00 / 7: 221.2500000000000 - 10-AUG-2018 07:00:00 / 8: 221.2916666666667 - 10-AUG-2018 08:00:00 / 9: 221.3333333333333 - 10-AUG-2018 09:00:00 / 10: 221.3750000000000 - 10-AUG-2018 10:00:00 / 11: 221.4166666666667 - -let var_on_reg = var[gt=hrly_ax@xact] - -! Previously the regridding was wrong: listed values were 1,2,2,4,5,5,... -list var_on_reg - VARIABLE : VAR[GT=HRLY_AX@XACT] - SUBSET : 11 points (TIME) - 10-AUG-2018 00:00:00 / 1: 1.000 - 10-AUG-2018 01:00:00 / 2: 2.000 - 10-AUG-2018 02:00:00 / 3: 3.000 - 10-AUG-2018 03:00:00 / 4: 4.000 - 10-AUG-2018 04:00:00 / 5: 5.000 - 10-AUG-2018 05:00:00 / 6: 6.000 - 10-AUG-2018 06:00:00 / 7: .... - 10-AUG-2018 07:00:00 / 8: 7.000 - 10-AUG-2018 08:00:00 / 9: 8.000 - 10-AUG-2018 09:00:00 / 10: 9.000 - 10-AUG-2018 10:00:00 / 11: .... - -! some axes with different units so other magnitudes of coordinates -let time = 109573 + {\ - 221.0000000000000,\ - 221.0416666666280,\ - 221.0833333333720,\ - 221.1250000000000,\ - 221.1666666666280,\ - 221.2083333333720,\ - 221.2916666666280,\ - 221.3333333333720,\ - 221.3750000000000,\ - 221.4166666666280} - -define axis/t/t0=1-jan-1718/units=days my_axis = time - -define axis/t="10-aug-2018 00:00":"10-aug-2018 10:00":`1/24`/units=day/t0="1-jan-1900 00:00" hrly_ax - !-> define axis/t="10-aug-2018 00:00":"10-aug-2018 10:00":0.04166666666666666/units=day/t0="1-jan-1900 00:00" hrly_ax - -let var_on_reg = var[gt=hrly_ax@xact] -list var_on_reg - VARIABLE : VAR[GT=HRLY_AX@XACT] - SUBSET : 11 points (TIME) - 10-AUG-2018 00:00:00 / 1: 1.000 - 10-AUG-2018 01:00:00 / 2: 2.000 - 10-AUG-2018 02:00:00 / 3: 3.000 - 10-AUG-2018 03:00:00 / 4: 4.000 - 10-AUG-2018 04:00:00 / 5: 5.000 - 10-AUG-2018 05:00:00 / 6: 6.000 - 10-AUG-2018 06:00:00 / 7: .... - 10-AUG-2018 07:00:00 / 8: 7.000 - 10-AUG-2018 08:00:00 / 9: 8.000 - 10-AUG-2018 09:00:00 / 10: 9.000 - 10-AUG-2018 10:00:00 / 11: .... - - -define axis/t/t0=1-jan-2018/units=seconds my_axis = 24*3600* {\ - 221.0000000000000,\ - 221.0416666666280,\ - 221.0833333333720,\ - 221.1250000000000,\ - 221.1666666666280,\ - 221.2083333333720,\ - 221.2916666666280,\ - 221.3333333333720,\ - 221.3750000000000,\ - 221.4166666666280} - -define axis/t="10-aug-2018 00:00":"10-aug-2018 10:00":3600//units=seconds/t0="1-jan-1900 00:00" hrly_ax - -let var_on_reg = var[gt=hrly_ax@xact] -list var_on_reg - VARIABLE : VAR[GT=HRLY_AX@XACT] - SUBSET : 11 points (TIME) - 10-AUG-2018 00:00 / 1: 1.000 - 10-AUG-2018 01:00 / 2: 2.000 - 10-AUG-2018 02:00 / 3: 3.000 - 10-AUG-2018 03:00 / 4: 4.000 - 10-AUG-2018 04:00 / 5: 5.000 - 10-AUG-2018 05:00 / 6: 6.000 - 10-AUG-2018 06:00 / 7: .... - 10-AUG-2018 07:00 / 8: 7.000 - 10-AUG-2018 08:00 / 9: 8.000 - 10-AUG-2018 09:00 / 10: 9.000 - 10-AUG-2018 10:00 / 11: .... - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err742_trans_striding -! err742_trans_striding.jnl -! 11/7/2018 *acm* -! -! Testing fix for issue 965. Loading adev[L=@max] where the -! underlying variable has strides specified previuosly resulted -! in an error: -! inconsistent sizes of data regions: can't label T axis of A[L=@AVE] -! -use data/navy_uw.nc -let a = uwnd[l=1:132:2] -let adev = a-a[l=@ave] -stat adev[L=@max] - - A-A[L=@AVE] - LONGITUDE: 60W to 0E(360) - LATITUDE: 0 to 60N - Z: N/A - TIME: 01-JAN-0000 00:00 to 16-DEC-0010 11:32 (maximum) - E: N/A - F: N/A - DATA SET: data/navy_uw.nc - - Total # of data points: 900 (30*30*1*1*1*1) - # flagged as bad data: 0 - Minimum value: 0.17362 - Maximum value: 6.4716 - Mean value: 1.6091 (unweighted average) - Standard deviation: 0.94096 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err742_tstart_tend -! err742_tstart_tend.jnl -! 11/27/2018 ACM -! -! See issue 1902: `var,return=tstart` and `var,return=tend` report incorrect -! fractional-seconds on their output - -define axis/t="01-jan-2012 12:00:00":"31-dec-2014 12:00:00":1/unit="days" tdata -let tvar = randu(t[gt=tdata]) - -! Results should end in 12:00:00, but ended in 12:00:00.5 - -define symbol time1 `tvar,return=tstart` - !-> define symbol time1 01-JAN-2012 12:00:00 -define symbol time2 `tvar,return=tend` - !-> define symbol time2 31-DEC-2014 12:00:00 - -! These outputs get stripped off by the cleaning script. Show the hour:min:second portion -let ns = STRLEN("($time1)") - !-> DEFINE VARIABLE ns = STRLEN("01-JAN-2012 12:00:00") -let t1 = STR_REPLACE("($time1)", ":", "_") - !-> DEFINE VARIABLE t1 = STR_REPLACE("01-JAN-2012 12:00:00", ":", "_") -let t2 = STR_REPLACE("($time1)", ":", "_") - !-> DEFINE VARIABLE t2 = STR_REPLACE("01-JAN-2012 12:00:00", ":", "_") -SAY TSTART ends `substring(t1,13,ns)` TEND ends `substring(t2,13,ns)` - !-> MESSAGE/CONTINUE TSTART ends 12_00_00 TEND ends 12_00_00 -TSTART ends 12_00_00 TEND ends 12_00_00 - - -! Check if the units are minutes. These results were also incorrect - -define axis/t="01-jan-2012 12:00:30":"31-dec-2014 12:00:30":0.5/unit="minutes" tdata -let tvar = randu(t[gt=tdata]) - -define symbol time1 `tvar,return=tstart` - !-> define symbol time1 01-JAN-2012 12:00:30 -define symbol time2 `tvar,return=tend` - !-> define symbol time2 31-DEC-2014 12:00:30 -let t1 = STR_REPLACE("($time1)", ":", "_") - !-> DEFINE VARIABLE t1 = STR_REPLACE("01-JAN-2012 12:00:30", ":", "_") -let t2 = STR_REPLACE("($time1)", ":", "_") - !-> DEFINE VARIABLE t2 = STR_REPLACE("01-JAN-2012 12:00:30", ":", "_") -SAY TSTART ends `substring(t1,13,ns)` TEND ends `substring(t2,13,ns)` - !-> MESSAGE/CONTINUE TSTART ends 12_00_30 TEND ends 12_00_30 -TSTART ends 12_00_30 TEND ends 12_00_30 - - - -! Check if the units are seconds. These results were also incorrect - -define axis/t="01-jan-2012 12:00:30":"31-dec-2014 12:00:30":30/unit="seconds" tdata - -let tvar = randu(t[gt=tdata]) - -define symbol time1 `tvar,return=tstart` - !-> define symbol time1 01-JAN-2012 12:00:30.0 -define symbol time2 `tvar,return=tend` - !-> define symbol time2 31-DEC-2014 12:00:30.0 -let ns = STRLEN("($time1)") - !-> DEFINE VARIABLE ns = STRLEN("01-JAN-2012 12:00:30.0") -let t1 = STR_REPLACE("($time1)", ":", "_") - !-> DEFINE VARIABLE t1 = STR_REPLACE("01-JAN-2012 12:00:30.0", ":", "_") -let t2 = STR_REPLACE("($time1)", ":", "_") - !-> DEFINE VARIABLE t2 = STR_REPLACE("01-JAN-2012 12:00:30.0", ":", "_") -SAY TSTART ends `substring(t1,13,ns)` TEND ends `substring(t2,13,ns)` - !-> MESSAGE/CONTINUE TSTART ends 12_00_30.0 TEND ends 12_00_30.0 -TSTART ends 12_00_30.0 TEND ends 12_00_30.0 - - -! Correctly lists fractions if the coordinates are fractions of seconds - -define axis/t="01-jan-2012 12:00:01.2":"01-jan-2012 12:12:01.8":0.2/unit="seconds" tdata -let tvar = randu(t[gt=tdata]) - -define symbol time1 `tvar,return=tstart` - !-> define symbol time1 01-JAN-2012 12:00:01.2 -define symbol time2 `tvar,return=tend` - !-> define symbol time2 01-JAN-2012 12:12:01.8 -let ns = STRLEN("($time1)") - !-> DEFINE VARIABLE ns = STRLEN("01-JAN-2012 12:00:01.2") -let t1 = STR_REPLACE("($time1)", ":", "_") - !-> DEFINE VARIABLE t1 = STR_REPLACE("01-JAN-2012 12:00:01.2", ":", "_") -let t2 = STR_REPLACE("($time1)", ":", "_") - !-> DEFINE VARIABLE t2 = STR_REPLACE("01-JAN-2012 12:00:01.2", ":", "_") -SAY TSTART ends `substring(t1,13,ns)` TEND ends `substring(t2,13,ns)` - !-> MESSAGE/CONTINUE TSTART ends 12_00_01.2 TEND ends 12_00_01.2 -TSTART ends 12_00_01.2 TEND ends 12_00_01.2 - -GO bn_reset bn_data_squared -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_data_squared -GO bn_data_squared -! bn_data_squared.jnl -! Simple test for var^2 output, results after change for ticket 1891 -! 8/29/2018 - -use levitus_3d_subset.nc -list/k=1:10/i=1/j=1/prec=6 temp, temp^2 - DATA SET: ./data/levitus_3d_subset.nc - DEPTH (m): 0 to 350 - LONGITUDE: 120.5E - LATITUDE: 49.5S - Column 1: TEMP is TEMPERATURE (DEG C) - Column 2: EX#2 is TEMP^2 - TEMP EX#2 -0 / 1: 6.82700 46.6079 -10 / 2: 6.84300 46.8267 -20 / 3: 6.84000 46.7856 -30 / 4: 6.74100 45.4411 -50 / 5: 6.62400 43.8774 -75 / 6: 6.75100 45.5760 -100 / 7: 6.46200 41.7574 -150 / 8: 6.46600 41.8092 -200 / 9: 6.02600 36.3127 -300 / 10: 5.44500 29.6480 - -GO bn_reset bn_overlay_graticules -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_overlay_graticules -GO bn_overlay_graticules -! bn_overlay_graticules.jnl -! See issue 1786, graticule lines on plots with overlays. -! Multiple overlay of axis lines causes extra thickness inpyFerret, -! so have been drawing axis lines only once on 1st plot. es and -! graticules weren't drawn on an overlay so the graticule lines -! show on the final plot only where the plot has missing areas - -use coads_climatology -define view/axes/x=0.2:0.8/y=.1:.4 lov -define view/axes/x=0.2:0.8/y=.6:.9 hiv - - -set mode graticule:(dash,color=black) -set view hiv -shade/l=1/x=100:160/y=-40:-10/nolab sst -fill/over/nolab/l=1 sst - -! Do the first plot with /NOAX and the overlay with /AXES -! to draw the axes once, only on the last plot. - -set v lov -shade/l=1/x=100:160/y=-40:-10/nolab/noax sst -fill/over/nolab/l=1/AXES sst -frame/file=graticule_on_over.gif - - -cancel view -! likewise for polygons where the overlay covered up the graticule lines - -set mode graticule -polygon/thick/color=red/palette=blue/noax {1,2,1}, {2,1,0.5} -polygon/thick/color=red/palette=green/over/nolab/axes {2,1,2}, {2,1,0.5} - -! or just vertical ones -polygon/thick/color=red/palette=blue/noax {1,2,1}, {2,1,0.5} -polygon/thick/color=red/palette=green/over/nolab/axes=1,1,0,0 {2,1,2}, {2,1,0.5} - - -! Line plots - -set mode graticule:(dash,thick) -PLOT/i=1:120/color=lighblue/thick=3/nokey/noax cos(i/30), cos(i/33), cos(i/35), cos(i/36), cos(i/38) -PLOT/i=1:120/color=red/thick=3/axes/nokey/nolab/over sin(i/30), sin(i/33), sin(i/35), sin(i/36), sin(i/38) - -! vectors - -VECTOR/I=1:10/J=1:20/LEN=2/color=red/thick=3/noax i/j,j/i -VECTOR/over/nolab/I=1:10/J=1:20/LEN=2/color=lightblue/thick=3/axes (i/j),(j*1.2)/i - -cancel mode graticule - -GO bn_reset bn_mixed_gregorian -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_mixed_gregorian -GO bn_mixed_gregorian -! bn_mixed_gregorian -! Issue 1906 -! 11/2018 PROLEPTIC_GREGORIAN overrides mixed-calendar handling, so no offset applied - -! Create a test dataset with several time axes -! -! This will handled as a mixed, 2-day shifted calendar axis - -define axis/t=1-jan-2001:5-jan-2001:1/t0=1-jan-0001/units=days timem -let var1 = t[gt=timem] -save/clobber/file=mixed_or_proleptic.nc var1 - - -! This uses PROLEPTIC_GREGORIAN, so will handled without the shift - -define axis/t=1-jan-2001:5-jan-2001:1/t0=1-jan-0001/units=days/calendar="PROLEPTIC_GREGORIAN" timep -let var2 = t[gt=timep] -save/append/file=mixed_or_proleptic.nc var2 - - -! This will handled as always, as a proleptic gregorian calendar - -define axis/t=1-jan-2001:5-jan-2001:1/t0=1-jan-1000/units=days tstd -let var3 = t[gt=tstd] -save/append/file=mixed_or_proleptic.nc var3 - -cancel var/all -cancel axis timem,timep,tstd - -! Now test how the axes are interpreted. - -use mixed_or_proleptic.nc - -! This is on a mixed-Gregorian calendar axis so dates are shifted and start on 30-dec-2000 -show axis `var1,return=taxis` - !-> show axis timem - name axis # pts start end - timem TIME 5 r 30-DEC-2000 00:00 03-JAN-2001 00:00 -T0 = 01-JAN-0001 00:00:00 - Axis span (to cell edges) = 5 - - -! This is on a proleptic-Gregorian calendar axis so dates are not shifted -show axis `var2,return=taxis` - !-> show axis timep - name axis # pts start end - timep TIME 5 r 01-JAN-2001 00:00 05-JAN-2001 00:00 -T0 = 01-JAN-0001 -CALENDAR = PROLEPTIC_GREGORIAN - Axis span (to cell edges) = 5 - - -! Axes with time origins other than 1-jan-0001 are handled as proleptic-Gregorian -show axis `var3,return=taxis` - !-> show axis tstd - name axis # pts start end - tstd TIME 5 r 01-JAN-2001 00:00 05-JAN-2001 00:00 -T0 = 01-JAN-1000 - Axis span (to cell edges) = 5 - - -GO bn_reset bn_int64 -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_int64 -GO bn_int64 -! bn_int64.jnl -! issue 1905 -! 11/29/2018 ACM -! -! This dataset stores time coordinates as INT64 -! previously the USE gave a warning about unknown type - -use int64.nc -sh dat - currently SET data sets: - 1> ./data/int64.nc (default) - name title I J K L - BLGPCO2 Surface ocean partial pressure 1:5 ... ... 1:6 - -sh dat/att - currently SET data sets: - 1> ./data/int64.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 36 T FERRET V7.432 (beta/debug) 29-Nov-18 - Conventions CHAR 6 F CF-1.6 - -(XC5) FLOAT units CHAR 12 T degrees_east - long_name CHAR 9 T longitude - axis CHAR 1 T X - modulo FLOAT 1 T 360 - standard_name CHAR 9 F longitude - orig_file_axname - CHAR 3 F XC5 - -(TIME38) INT64 long_name CHAR 4 T Time - axis CHAR 1 T T - units CHAR 33 T seconds since 2012-12-01 00:00:00 - calendar CHAR 19 T proleptic_gregorian - standard_name CHAR 4 F time - orig_file_axname - CHAR 4 F TIME - - BLGPCO2 FLOAT _FillValue FLOAT 1 T -1.E+34 - units CHAR 3 T atm - long_name CHAR 37 T Surface ocean partial pressure of CO2 - history CHAR 70 T From /home/users/ansley/tarfiles/bsose_i001_2013to2017_monthly_pCO2.nc - - -! previously this gave an error -save/clobber/file=a.nc/i=1:4/l=1:5 blgpco2 - -! Write the coords using double, as netcdf fortran wont let us -! define an int64 var for writing. -use a.nc -show grid blgpco2[d=1] - GRID GKU1 - name axis # pts start end subset - XC5 LONGITUDE 5mr 60.083W(299.92) 59.417W(300.58) full - normal Y - normal Z - TIME38 TIME 6 r 02-JUL-2015 10:24 01-DEC-2015 14:24 full -show grid blgpco2[d=2] - GRID GSI1 - name axis # pts start end subset - XC51 LONGITUDE 4mr 60.083W(299.92) 59.583W(300.42) full - normal Y - normal Z - TIME39 TIME 5 r 02-JUL-2015 10:24 01-NOV-2015 04:00 full -list/i=1 blgpco2[d=1] - VARIABLE : Surface ocean partial pressure of CO2 (atm) - FILENAME : int64.nc - SUBSET : 6 points (TIME) - CALENDAR : PROLEPTIC_GREGORIAN - LONGITUDE: 60.08W(299.9) - 60.08W - 1 - 02-JUL-2015 / 1: 3.646E-04 - 01-AUG-2015 / 2: 3.617E-04 - 01-SEP-2015 / 3: 3.430E-04 - 01-OCT-2015 / 4: 3.442E-04 - 01-NOV-2015 / 5: 3.492E-04 - 01-DEC-2015 / 6: 3.867E-04 -list/i=1 blgpco2[d=2] - VARIABLE : Surface ocean partial pressure of CO2 (atm) - FILENAME : a.nc - SUBSET : 5 points (TIME) - CALENDAR : PROLEPTIC_GREGORIAN - LONGITUDE: 60.08W(299.9) - 60.08W - 1 - 02-JUL-2015 / 1: 3.646E-04 - 01-AUG-2015 / 2: 3.617E-04 - 01-SEP-2015 / 3: 3.430E-04 - 01-OCT-2015 / 4: 3.442E-04 - 01-NOV-2015 / 5: 3.492E-04 - -GO bn_reset bn_samplexyz -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_samplexyz -GO bn_samplexyz -! bn_samplexyz.jnl - -! Check the SAMPLEXYZ function, should give missing results for Z sample points -! that lie beyond the ends of the Z axis of the grid being sampled - -show function samplexyz -SAMPLEXYZ(DAT_TO_SAMPLE,XPTS,YPTS,ZPTS) - Returns data sampled at a set of (X,Y,Z) points, using linear interpolation - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X values of sample points - YPTS: Y values of sample points - ZPTS: Z values of sample points - -define axis/x=0:360:1/units=longitude/edges/modulo x1 -define axis/y=-90:90:45/units=latitude/edges y1 -define axis/z/depth/units=meters z1 = {0,2,4,10,20,40,80,120} - -let my_data = 0*x[gx=x1]+y[gy=y1]+z[gz=z1] - -define axis/z=5:155:10/depth zsamples -let zpts = xsequence(z[gz=zsamples]) -let ypts = xsequence((randu(zpts)-0.5)*90) -let xpts = 180 + 0*ypts -let sampl_pts = samplexyz(my_data,xpts,ypts,zpts) - -! Note that the samplexyz should flag points beyond the ends of the grid - -! Check the results with a listing -list ypts, zpts, sampl_pts - X: 0.5 to 16.5 - Column 1: YPTS is XSEQUENCE((RANDU(ZPTS)-0.5)*90) - Column 2: ZPTS is XSEQUENCE(Z[GZ=ZSAMPLES]) - Column 3: SAMPL_PTS is SAMPLEXYZ(MY_DATA,XPTS,YPTS,ZPTS) - YPTS ZPTS SAMPL_PTS -1 / 1: 9.29 5.0 14.3 -2 / 2: 4.68 15.0 19.7 -3 / 3: 15.39 25.0 40.4 -4 / 4: 4.78 35.0 39.8 -5 / 5: -28.35 45.0 16.6 -6 / 6: 14.41 55.0 69.4 -7 / 7: -22.97 65.0 42.0 -8 / 8: -13.93 75.0 61.1 -9 / 9: 23.70 85.0 108.7 -10 / 10: -7.89 95.0 87.1 -11 / 11: -17.39 105.0 87.6 -12 / 12: 32.67 115.0 147.7 -13 / 13: -17.40 125.0 102.6 -14 / 14: -41.75 135.0 78.2 -15 / 15: 10.21 145.0 .... -16 / 16: -15.09 155.0 .... - -let my_yz = y[gy=y1]+z[gz=z1] -let sampl_yz = sampleyz(my_yz, ypts, zpts) - -! Check the results with a listing -list ypts, zpts, reshape(sampl_yz,ypts) - X: 0.5 to 16.5 - Column 1: YPTS is XSEQUENCE((RANDU(ZPTS)-0.5)*90) - Column 2: ZPTS is XSEQUENCE(Z[GZ=ZSAMPLES]) - Column 3: EX#3 is RESHAPE(SAMPL_YZ,YPTS) - YPTS ZPTS EX#3 -1 / 1: 9.29 5.0 14.3 -2 / 2: 4.68 15.0 19.7 -3 / 3: 15.39 25.0 40.4 -4 / 4: 4.78 35.0 39.8 -5 / 5: -28.35 45.0 16.6 -6 / 6: 14.41 55.0 69.4 -7 / 7: -22.97 65.0 42.0 -8 / 8: -13.93 75.0 61.1 -9 / 9: 23.70 85.0 108.7 -10 / 10: -7.89 95.0 87.1 -11 / 11: -17.39 105.0 87.6 -12 / 12: 32.67 115.0 147.7 -13 / 13: -17.40 125.0 .... -14 / 14: -41.75 135.0 .... -15 / 15: 10.21 145.0 .... -16 / 16: -15.09 155.0 .... - -plot/line/sym sampl_pts, reshape(sampl_yz,ypts) - -! and here we show it graphically -shade my_data[x=180] - -plot/vs/over/nolab/ribbon/lev/sym=18/thick/siz=0.2 ypts, zpts, sampl_pts - - - -! *********** v7.45 Additions *********** - -GO bn_reset bn745_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn745_bug_fixes -GO bn745_bug_fixes -! bn745_bug_fixes.jnl -! test various fixes that went into version 7.45 -! 12/18 *acm* - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err744_time_as_string -! err744_time_as_string.jnl -! 12/12/2018 ACM -! See issue 1049: time_dim_1 coordinate is not numeric - -! Previously didnt give a warning message about the invalid time axis -! in the variable time_dim_1 - -use stringtime.nc -show data - currently SET data sets: - 1> ./data/stringtime.nc (default) - name title I J K L - time_dim_1 - ... ... ... 1:5 - CRW Twice-weekly global 50km satell 1:1 1:1 ... 1:5 - -show grid crw - GRID GJX2 - name axis # pts start end subset - LONGITUDE1 LONGITUDE 1 r 105.1E(105.1) 105.1E(105.1) full - latitude LATITUDE 1 r 11.212N 11.212N full - normal Z - time_dim_1 T 5 r 1 5 full - -! The strings are available in a variable, as in other invalid -! coordinate axes, so one could use string functions to parse the -! strings and define a valid axis... - -list time_dim_1 - VARIABLE : TIME_DIM_1 - FILENAME : stringtime.nc - SUBSET : 5 points (T) - CALENDAR : PROLEPTIC_GREGORIAN - 1 / 1:"2000-12-02T00:00:00Z" - 2 / 2:"2000-12-05T00:00:00Z" - 3 / 3:"2000-12-09T00:00:00Z" - 4 / 4:"2000-12-12T00:00:00Z" - 5 / 5:"2000-12-16T00:00:00Z" - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err744_dsetnum -! err744_dsetnum -! 2/8/2019 -! issue 400. -! -! for user-defined variables, return=dset returns wrong result -! Likewise dsetnum, dsatpath -! - -! open a couple data sets -let sst = {1,2,3,4} -let airt = {4,5,6,7,8} - -save/clobber/file=a1.nc sst -save/clobber/file=a2.nc airt - -can var/all - -use a1, a2 - -! this is correct - -say `sst[d=1],return=dsetpath` - !-> MESSAGE/CONTINUE ./a1.nc -./a1.nc - -let u1 = sst[d=1] - -! This should return dataset 1 but returns 2 -! Same bug for return=dset, dsetnum, dsetpath - -say `u1,return=dsetnum` - !-> MESSAGE/CONTINUE 1 -1 -say `u1,return=dset` - !-> MESSAGE/CONTINUE a1 -a1 -say `u1,return=dsetpath` - !-> MESSAGE/CONTINUE ./a1.nc -./a1.nc - -! What about a let/D variable? Not sure what's the right answer here, -! but the changes return 1. - -let/d=2 mydata = sst[d=1] -say `mydata,return=dsetnum` - !-> MESSAGE/CONTINUE 1 -1 - - -! Not going any further with variable definitions. If the -! definition itself doesn't have [d=1] don't try to figure out -! its "dataset". As before this just returns the default dataset -! Document this. - -let var = u1 -say `var,return=dsetnum` - !-> MESSAGE/CONTINUE 2 -2 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err744_shade_error -! err744_shade/nolab/nokey_error -! Issue 1914: with some plot areas, portions of shade/nolab/nokey plot go missing -! Ansley Manke March 8 2019 - -let/title="longitude"/unit="degrees_e" xedge = x[gx=0:3:1] + 0*y[gy=0:3:1] -let/title="latitude"/unit="degrees_n" yedge = 0*x[gx=0:3:1] + y[gy=0:3:1] -let/title="temperature"/unit="K" val = reshape({1,2,3,4,5,6,7,8,9},x[gx=1:3:1]+y[gy=1:3:1]) - -! This plot left the bottom row of cells blank -set win/asp=0.86 -set view full -shade/nolab/nokey val, xedge, yedge - -! With another aspect ratio, it's correct -define view/axes/x=0.5:1/y=0.5:1 square -set view square -shade/nolab/nokey val, xedge, yedge - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err744_keylabs -! err744_keylabs.jnl -! ticket 1915: Numbers at the start of moveable labels weren't drawn. -! 3/2019 ACM - -if ($program_name"0|PyFerret>1|*>0") then set text/font=verdana - !-> if 1 then set text/font=verdana - -let /title="771" var1 = {7,7,1} -let/title="893.0" var2 = {8,9,3} -set view upper -! both of the key labels were missing -plot/thick/key=title var1, var2 - - -let /title="my label is 771" var1 = {7,7,1} -let/title="893 and stuff" var2 = {8,9,3} -set view lower - -! key label for second line said just "and stuff" -plot/thick/key=title var1, var2 - -frame/file=line_key_labels.gif - -if ($program_name"0|PyFerret>1|*>0") then cancel text - !-> if 1 then cancel text - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err744_list_precision -! err744_list_precision.jnl - -! "nnn.nnn" - not a problem -LIST /PREC=6 100.0 * COS(_X[X=0.0:3.2:0.2]) - VARIABLE : 100.0 * COS(_X[X=0.0:3.2:0.2]) - SUBSET : 17 points (X) - 0 / 1: 100.000 - 0.2 / 2: 98.007 - 0.4 / 3: 92.106 - 0.6 / 4: 82.534 - 0.8 / 5: 69.671 - 1 / 6: 54.030 - 1.2 / 7: 36.236 - 1.4 / 8: 16.997 - 1.6 / 9: -2.920 - 1.8 / 10: -22.720 - 2 / 11: -41.615 - 2.2 / 12: -58.850 - 2.4 / 13: -73.739 - 2.6 / 14: -85.689 - 2.8 / 15: -94.222 - 3 / 16: -98.999 - 3.2 / 17: -99.829 - -! should be "nnn.nnnnnn"; previously was giving just "n." (/PREC=1) -LIST /PREC=-6 100.0 * COS(_X[X=0.0:3.2:0.2]) - VARIABLE : 100.0 * COS(_X[X=0.0:3.2:0.2]) - SUBSET : 17 points (X) - 0 / 1: 100.000000 - 0.2 / 2: 98.006658 - 0.4 / 3: 92.106099 - 0.6 / 4: 82.533561 - 0.8 / 5: 69.670671 - 1 / 6: 54.030231 - 1.2 / 7: 36.235775 - 1.4 / 8: 16.996714 - 1.6 / 9: -2.919952 - 1.8 / 10: -22.720209 - 2 / 11: -41.614684 - 2.2 / 12: -58.850112 - 2.4 / 13: -73.739372 - 2.6 / 14: -85.688875 - 2.8 / 15: -94.222234 - 3 / 16: -98.999250 - 3.2 / 17: -99.829478 - -! "nnn.nnn" - not a problem -SET LIST /PREC=6 -LIST 100.0 * COS(_X[X=0.0:3.2:0.2]) - VARIABLE : 100.0 * COS(_X[X=0.0:3.2:0.2]) - SUBSET : 17 points (X) - 0 / 1: 100.000 - 0.2 / 2: 98.007 - 0.4 / 3: 92.106 - 0.6 / 4: 82.534 - 0.8 / 5: 69.671 - 1 / 6: 54.030 - 1.2 / 7: 36.236 - 1.4 / 8: 16.997 - 1.6 / 9: -2.920 - 1.8 / 10: -22.720 - 2 / 11: -41.615 - 2.2 / 12: -58.850 - 2.4 / 13: -73.739 - 2.6 / 14: -85.689 - 2.8 / 15: -94.222 - 3 / 16: -98.999 - 3.2 / 17: -99.829 - -! should be "nnn.nnnnnn"; previously was giving **ERROR: Unknown error writing data 100.00000000000000 -SET LIST /PREC=-6 -LIST 100.0 * COS(_X[X=0.0:3.2:0.2]) - VARIABLE : 100.0 * COS(_X[X=0.0:3.2:0.2]) - SUBSET : 17 points (X) - 0 / 1: 100.000000 - 0.2 / 2: 98.006658 - 0.4 / 3: 92.106099 - 0.6 / 4: 82.533561 - 0.8 / 5: 69.670671 - 1 / 6: 54.030231 - 1.2 / 7: 36.235775 - 1.4 / 8: 16.996714 - 1.6 / 9: -2.919952 - 1.8 / 10: -22.720209 - 2 / 11: -41.614684 - 2.2 / 12: -58.850112 - 2.4 / 13: -73.739372 - 2.6 / 14: -85.688875 - 2.8 / 15: -94.222234 - 3 / 16: -98.999250 - 3.2 / 17: -99.829478 - - -! return to default precision -SET LIST /PREC - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err744_context -! err744_context.jnl -! also testing fix for ticket 1916 -! The fix for 1323 caused this, interfering with -! correct application of the region when loading expression -! with [x=@sum,y=@sum] for different ranges in X and Y - -! test with `return= ` results in the mix. - -set mode diagnos -use "cellareas.nc" -show grid areacella - getgrid EX#1 C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - GRID GQL1 - name axis # pts start end subset - LON1 LONGITUDE 288mr 0E 1.25W full - lat LATITUDE 192 i 90S 90N full - normal Z - normal T - -! this factor previously had a problem with modulo operations -! (as well as using cached values, although obscured by the modulo problem) -let factor = 1.0E14 + areacella - -! this factor had the cache but not the modulo problem -! let factor = 1.0E14 + 100.0 * _X[gx=areacella] + 100.0 * _Y[gy=areacella] - -! the problem arose only with implicit limits on the transformation -let w = factor / areacella[x=@sum,y=@sum] - -! the error used to show up without the following, but arose from code changes -! to support this command. Verify using it beforehand does not cause problems. -say `w,return=shape` - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid W C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid FACTOR C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - getgrid EX#1 C: 6 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - !-> MESSAGE/CONTINUE XY -XY - -! X bounds must be assymetrical across the modulo split -define symbol xlobnds "-5:-1.25" -define symbol xhibnds "0:10" -define symbol xfullbnds "-5:10" -define symbol ybnds "-3.3:9.9" - -! the values in all these should be the same for all longitudes -! but differ with different region sizes - -! following always was computed correctly -list /width=500 /prec=7 /x=($xlobnds) /y=($ybnds) w - !-> list /width=500 /prec=7 /x=-5:-1.25 /y=-3.3:9.9 w - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid W C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid FACTOR C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - eval W C: 7 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - strip moduloing FACTOR on X axis: -3 0 dset: 1 - eval FACTOR C: 11 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - constan cnst M:483 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - reading ARE-ELLA M:430 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE cnst M:483 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing FACTOR on X axis: 285 288 dset: 1 - strip --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - strip moduloing AREACELLA on X axis: -3 0 dset: 1 - found ARE-ELLA M:430 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing AREACELLA on X axis: 285 288 dset: 1 - doing --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 4 by 15 points (LONGITUDE-LATITUDE) - 5W(-5) 3.8W 2.5W 1.3W - -3 -2 -1 0 - 9.89N / 107: 114.9170 114.9170 114.9170 114.9170 - 8.95N / 106: 114.9170 114.9170 114.9170 114.9170 - 8.01N / 105: 114.9170 114.9170 114.9170 114.9170 - 7.07N / 104: 114.9171 114.9171 114.9171 114.9171 - 6.13N / 103: 114.9171 114.9171 114.9171 114.9171 - 5.18N / 102: 114.9171 114.9171 114.9171 114.9171 - 4.24N / 101: 114.9172 114.9172 114.9172 114.9172 - 3.3N / 100: 114.9172 114.9172 114.9172 114.9172 - 2.36N / 99: 114.9172 114.9172 114.9172 114.9172 - 1.41N / 98: 114.9172 114.9172 114.9172 114.9172 - 0.47N / 97: 114.9172 114.9172 114.9172 114.9172 - 0.47S / 96: 114.9172 114.9172 114.9172 114.9172 - 1.41S / 95: 114.9172 114.9172 114.9172 114.9172 - 2.36S / 94: 114.9172 114.9172 114.9172 114.9172 - 3.3S / 93: 114.9172 114.9172 114.9172 114.9172 - -! following always was computed correctly -list /width=500 /prec=7 /x=($xhibnds) /y=($ybnds) w - !-> list /width=500 /prec=7 /x=0:10 /y=-3.3:9.9 w - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - eval W C: 7 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - eval FACTOR C: 9 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - constan cnst M:467 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - reading ARE-ELLA M:376 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE cnst M:467 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - strip --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - found ARE-ELLA M:376 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - doing --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 9 by 15 points (LONGITUDE-LATITUDE) - 0E 1.3E 2.5E 3.8E 5E 6.3E 7.5E 8.8E 10E - 1 2 3 4 5 6 7 8 9 - 9.89N / 107: 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 - 8.95N / 106: 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 - 8.01N / 105: 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 - 7.07N / 104: 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 - 6.13N / 103: 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 - 5.18N / 102: 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 - 4.24N / 101: 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 - 3.3N / 100: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 2.36N / 99: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 1.41N / 98: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 0.47N / 97: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 0.47S / 96: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 1.41S / 95: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 2.36S / 94: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 3.3S / 93: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - -! following used to compute (not pulled from cache) the equivalent of -! the above two sets concatenated (modulo on W instead of ARE-ELLA); -! the correct value is a different altogether and constant across longitude -list /width=500 /prec=7 /x=($xfullbnds) /y=($ybnds) w - !-> list /width=500 /prec=7 /x=-5:10 /y=-3.3:9.9 w - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - eval W C: 7 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - strip moduloing FACTOR on X axis: -3 9 dset: 1 - found FACTOR M:412 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing FACTOR on X axis: 285 288 dset: 1 - found FACTOR M:366 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing FACTOR on X axis: 1 9 dset: 1 - strip --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - strip moduloing AREACELLA on X axis: -3 9 dset: 1 - found ARE-ELLA M:430 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing AREACELLA on X axis: 285 288 dset: 1 - found ARE-ELLA M:376 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing AREACELLA on X axis: 1 9 dset: 1 - doing --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 13 by 15 points (LONGITUDE-LATITUDE) - 5W(-5) 3.8W 2.5W 1.3W 0E 1.3E 2.5E 3.8E 5E 6.3E 7.5E 8.8E 10E - -3 -2 -1 0 1 2 3 4 5 6 7 8 9 - 9.89N / 107: 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 - 8.95N / 106: 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 - 8.01N / 105: 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 - 7.07N / 104: 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 - 6.13N / 103: 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 - 5.18N / 102: 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 - 4.24N / 101: 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 - 3.3N / 100: 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 - 2.36N / 99: 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 - 1.41N / 98: 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 - 0.47N / 97: 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 - 0.47S / 96: 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 - 1.41S / 95: 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 - 2.36S / 94: 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 - 3.3S / 93: 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 - -! following used to get pulled from cache ("found W") instead of being recomputed -! (if other value of factor used the cache pull was clearer) - should be the same as previous listing -list /width=500 /prec=7 /x=($xlobnds) /y=($ybnds) w - !-> list /width=500 /prec=7 /x=-5:-1.25 /y=-3.3:9.9 w - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - eval W C: 7 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - found FACTOR M:300 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - found ARE-ELLA M:449 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 4 by 15 points (LONGITUDE-LATITUDE) - 5W(-5) 3.8W 2.5W 1.3W - -3 -2 -1 0 - 9.89N / 107: 114.9170 114.9170 114.9170 114.9170 - 8.95N / 106: 114.9170 114.9170 114.9170 114.9170 - 8.01N / 105: 114.9170 114.9170 114.9170 114.9170 - 7.07N / 104: 114.9171 114.9171 114.9171 114.9171 - 6.13N / 103: 114.9171 114.9171 114.9171 114.9171 - 5.18N / 102: 114.9171 114.9171 114.9171 114.9171 - 4.24N / 101: 114.9172 114.9172 114.9172 114.9172 - 3.3N / 100: 114.9172 114.9172 114.9172 114.9172 - 2.36N / 99: 114.9172 114.9172 114.9172 114.9172 - 1.41N / 98: 114.9172 114.9172 114.9172 114.9172 - 0.47N / 97: 114.9172 114.9172 114.9172 114.9172 - 0.47S / 96: 114.9172 114.9172 114.9172 114.9172 - 1.41S / 95: 114.9172 114.9172 114.9172 114.9172 - 2.36S / 94: 114.9172 114.9172 114.9172 114.9172 - 3.3S / 93: 114.9172 114.9172 114.9172 114.9172 - -! following used to get pulled from cache ("found W") instead of being recomputed -! (if other value of factor used the cache pull was clearer) - should be the same as previous listing -list /width=500 /prec=7 /x=($xhibnds) /y=($ybnds) w - !-> list /width=500 /prec=7 /x=0:10 /y=-3.3:9.9 w - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - eval W C: 7 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - found FACTOR M:300 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - found ARE-ELLA M:467 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 9 by 15 points (LONGITUDE-LATITUDE) - 0E 1.3E 2.5E 3.8E 5E 6.3E 7.5E 8.8E 10E - 1 2 3 4 5 6 7 8 9 - 9.89N / 107: 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 - 8.95N / 106: 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 - 8.01N / 105: 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 - 7.07N / 104: 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 - 6.13N / 103: 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 - 5.18N / 102: 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 - 4.24N / 101: 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 - 3.3N / 100: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 2.36N / 99: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 1.41N / 98: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 0.47N / 97: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 0.47S / 96: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 1.41S / 95: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 2.36S / 94: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 3.3S / 93: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - -say `w,return=shape` - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid W C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid FACTOR C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - getgrid EX#1 C: 6 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - !-> MESSAGE/CONTINUE XY -XY - -cancel memory - -DELETE W M:222 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE W M:307 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE W M:383 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE W M:486 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE W M:493 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE FACTOR M:300 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE FACTOR M:366 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE FACTOR M:412 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE FACTOR M:483 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:254 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:271 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:376 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:379 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:430 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:449 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:467 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -! repeat with SET REGION - -set region /x=($xlobnds) /y=($ybnds) - !-> set region /x=-5:-1.25 /y=-3.3:9.9 -list /width=500 /prec=7 w - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid W C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid FACTOR C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - eval W C: 6 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - strip moduloing FACTOR on X axis: -3 0 dset: 1 - eval FACTOR C: 10 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - constan cnst M:467 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - reading ARE-ELLA M:449 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE cnst M:467 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing FACTOR on X axis: 285 288 dset: 1 - strip --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - strip moduloing AREACELLA on X axis: -3 0 dset: 1 - found ARE-ELLA M:449 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing AREACELLA on X axis: 285 288 dset: 1 - doing --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 4 by 15 points (LONGITUDE-LATITUDE) - 5W(-5) 3.8W 2.5W 1.3W - -3 -2 -1 0 - 9.89N / 107: 114.9170 114.9170 114.9170 114.9170 - 8.95N / 106: 114.9170 114.9170 114.9170 114.9170 - 8.01N / 105: 114.9170 114.9170 114.9170 114.9170 - 7.07N / 104: 114.9171 114.9171 114.9171 114.9171 - 6.13N / 103: 114.9171 114.9171 114.9171 114.9171 - 5.18N / 102: 114.9171 114.9171 114.9171 114.9171 - 4.24N / 101: 114.9172 114.9172 114.9172 114.9172 - 3.3N / 100: 114.9172 114.9172 114.9172 114.9172 - 2.36N / 99: 114.9172 114.9172 114.9172 114.9172 - 1.41N / 98: 114.9172 114.9172 114.9172 114.9172 - 0.47N / 97: 114.9172 114.9172 114.9172 114.9172 - 0.47S / 96: 114.9172 114.9172 114.9172 114.9172 - 1.41S / 95: 114.9172 114.9172 114.9172 114.9172 - 2.36S / 94: 114.9172 114.9172 114.9172 114.9172 - 3.3S / 93: 114.9172 114.9172 114.9172 114.9172 - -set region /x=($xhibnds) /y=($ybnds) - !-> set region /x=0:10 /y=-3.3:9.9 -list /width=500 /prec=7 w - eval EX#1 C: 4 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - eval W C: 6 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - eval FACTOR C: 8 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - constan cnst M:254 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - reading ARE-ELLA M:483 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE cnst M:254 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - strip --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - found ARE-ELLA M:483 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - doing --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 9 by 15 points (LONGITUDE-LATITUDE) - 0E 1.3E 2.5E 3.8E 5E 6.3E 7.5E 8.8E 10E - 1 2 3 4 5 6 7 8 9 - 9.89N / 107: 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 - 8.95N / 106: 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 - 8.01N / 105: 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 - 7.07N / 104: 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 - 6.13N / 103: 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 - 5.18N / 102: 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 - 4.24N / 101: 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 - 3.3N / 100: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 2.36N / 99: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 1.41N / 98: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 0.47N / 97: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 0.47S / 96: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 1.41S / 95: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 2.36S / 94: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 3.3S / 93: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - -set region /x=($xfullbnds) /y=($ybnds) - !-> set region /x=-5:10 /y=-3.3:9.9 -list /width=500 /prec=7 w - eval EX#1 C: 4 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - eval W C: 6 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - strip moduloing FACTOR on X axis: -3 9 dset: 1 - found FACTOR M:430 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing FACTOR on X axis: 285 288 dset: 1 - found FACTOR M:412 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing FACTOR on X axis: 1 9 dset: 1 - strip --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - strip moduloing AREACELLA on X axis: -3 9 dset: 1 - found ARE-ELLA M:449 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing AREACELLA on X axis: 285 288 dset: 1 - found ARE-ELLA M:483 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing AREACELLA on X axis: 1 9 dset: 1 - doing --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 13 by 15 points (LONGITUDE-LATITUDE) - 5W(-5) 3.8W 2.5W 1.3W 0E 1.3E 2.5E 3.8E 5E 6.3E 7.5E 8.8E 10E - -3 -2 -1 0 1 2 3 4 5 6 7 8 9 - 9.89N / 107: 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 - 8.95N / 106: 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 - 8.01N / 105: 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 - 7.07N / 104: 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 - 6.13N / 103: 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 - 5.18N / 102: 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 - 4.24N / 101: 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 - 3.3N / 100: 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 - 2.36N / 99: 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 - 1.41N / 98: 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 - 0.47N / 97: 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 - 0.47S / 96: 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 - 1.41S / 95: 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 - 2.36S / 94: 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 - 3.3S / 93: 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 - -set region /x=($xlobnds) /y=($ybnds) - !-> set region /x=-5:-1.25 /y=-3.3:9.9 -list /width=500 /prec=7 w - eval EX#1 C: 4 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - eval W C: 6 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - found FACTOR M:300 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - found ARE-ELLA M:376 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 4 by 15 points (LONGITUDE-LATITUDE) - 5W(-5) 3.8W 2.5W 1.3W - -3 -2 -1 0 - 9.89N / 107: 114.9170 114.9170 114.9170 114.9170 - 8.95N / 106: 114.9170 114.9170 114.9170 114.9170 - 8.01N / 105: 114.9170 114.9170 114.9170 114.9170 - 7.07N / 104: 114.9171 114.9171 114.9171 114.9171 - 6.13N / 103: 114.9171 114.9171 114.9171 114.9171 - 5.18N / 102: 114.9171 114.9171 114.9171 114.9171 - 4.24N / 101: 114.9172 114.9172 114.9172 114.9172 - 3.3N / 100: 114.9172 114.9172 114.9172 114.9172 - 2.36N / 99: 114.9172 114.9172 114.9172 114.9172 - 1.41N / 98: 114.9172 114.9172 114.9172 114.9172 - 0.47N / 97: 114.9172 114.9172 114.9172 114.9172 - 0.47S / 96: 114.9172 114.9172 114.9172 114.9172 - 1.41S / 95: 114.9172 114.9172 114.9172 114.9172 - 2.36S / 94: 114.9172 114.9172 114.9172 114.9172 - 3.3S / 93: 114.9172 114.9172 114.9172 114.9172 - -set region /x=($xhibnds) /y=($ybnds) - !-> set region /x=0:10 /y=-3.3:9.9 -list /width=500 /prec=7 w - eval EX#1 C: 4 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - eval W C: 6 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - found FACTOR M:300 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - found ARE-ELLA M:254 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 9 by 15 points (LONGITUDE-LATITUDE) - 0E 1.3E 2.5E 3.8E 5E 6.3E 7.5E 8.8E 10E - 1 2 3 4 5 6 7 8 9 - 9.89N / 107: 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 - 8.95N / 106: 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 - 8.01N / 105: 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 - 7.07N / 104: 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 - 6.13N / 103: 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 - 5.18N / 102: 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 - 4.24N / 101: 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 - 3.3N / 100: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 2.36N / 99: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 1.41N / 98: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 0.47N / 97: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 0.47S / 96: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 1.41S / 95: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 2.36S / 94: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 3.3S / 93: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - -cancel region -cancel memory - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - -DELETE W M:222 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE W M:271 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE W M:307 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE W M:366 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE W M:383 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - -DELETE FACTOR M:300 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE FACTOR M:412 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE FACTOR M:430 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE FACTOR M:467 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - -DELETE ARE-ELLA M:254 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:376 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:379 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:449 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:483 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:486 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:493 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - -say `w,return=shape` - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid W C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid FACTOR C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - getgrid EX#1 C: 6 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - !-> MESSAGE/CONTINUE XY -XY - -! repeat with [X=...,/Y=...] - -list /width=500 /prec=7 w[x=($xlobnds),y=($ybnds)] - !-> list /width=500 /prec=7 w[x=-5:-1.25,y=-3.3:9.9] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid W C: 7 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid FACTOR C: 9 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval W C: 6 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - strip moduloing FACTOR on X axis: -3 0 dset: 1 - eval FACTOR C: 10 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - constan cnst M:493 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - reading ARE-ELLA M:486 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE cnst M:493 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - doing moduloing FACTOR on X axis: 285 288 dset: 1 - strip --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - strip moduloing AREACELLA on X axis: -3 0 dset: 1 - found ARE-ELLA M:486 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing AREACELLA on X axis: 285 288 dset: 1 - doing --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 4 by 15 points (LONGITUDE-LATITUDE) - 5W(-5) 3.8W 2.5W 1.3W - -3 -2 -1 0 - 9.89N / 107: 114.9170 114.9170 114.9170 114.9170 - 8.95N / 106: 114.9170 114.9170 114.9170 114.9170 - 8.01N / 105: 114.9170 114.9170 114.9170 114.9170 - 7.07N / 104: 114.9171 114.9171 114.9171 114.9171 - 6.13N / 103: 114.9171 114.9171 114.9171 114.9171 - 5.18N / 102: 114.9171 114.9171 114.9171 114.9171 - 4.24N / 101: 114.9172 114.9172 114.9172 114.9172 - 3.3N / 100: 114.9172 114.9172 114.9172 114.9172 - 2.36N / 99: 114.9172 114.9172 114.9172 114.9172 - 1.41N / 98: 114.9172 114.9172 114.9172 114.9172 - 0.47N / 97: 114.9172 114.9172 114.9172 114.9172 - 0.47S / 96: 114.9172 114.9172 114.9172 114.9172 - 1.41S / 95: 114.9172 114.9172 114.9172 114.9172 - 2.36S / 94: 114.9172 114.9172 114.9172 114.9172 - 3.3S / 93: 114.9172 114.9172 114.9172 114.9172 - -list /width=500 /prec=7 w[x=($xhibnds),y=($ybnds)] - !-> list /width=500 /prec=7 w[x=0:10,y=-3.3:9.9] - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval W C: 6 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - eval FACTOR C: 8 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - constan cnst M:254 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - reading ARE-ELLA M:467 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE cnst M:254 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - strip --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - found ARE-ELLA M:467 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - doing --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 9 by 15 points (LONGITUDE-LATITUDE) - 0E 1.3E 2.5E 3.8E 5E 6.3E 7.5E 8.8E 10E - 1 2 3 4 5 6 7 8 9 - 9.89N / 107: 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 - 8.95N / 106: 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 - 8.01N / 105: 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 - 7.07N / 104: 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 - 6.13N / 103: 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 - 5.18N / 102: 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 - 4.24N / 101: 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 - 3.3N / 100: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 2.36N / 99: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 1.41N / 98: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 0.47N / 97: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 0.47S / 96: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 1.41S / 95: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 2.36S / 94: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 3.3S / 93: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - -list /width=500 /prec=7 w[x=($xfullbnds),y=($ybnds)] - !-> list /width=500 /prec=7 w[x=-5:10,y=-3.3:9.9] - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval W C: 6 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - strip moduloing FACTOR on X axis: -3 9 dset: 1 - found FACTOR M:483 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing FACTOR on X axis: 285 288 dset: 1 - found FACTOR M:430 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing FACTOR on X axis: 1 9 dset: 1 - strip --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - strip moduloing AREACELLA on X axis: -3 9 dset: 1 - found ARE-ELLA M:486 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing AREACELLA on X axis: 285 288 dset: 1 - found ARE-ELLA M:467 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - doing moduloing AREACELLA on X axis: 1 9 dset: 1 - doing --> AREACELLA[Y=3.3S:9.9N@SM4,D=1] - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 13 by 15 points (LONGITUDE-LATITUDE) - 5W(-5) 3.8W 2.5W 1.3W 0E 1.3E 2.5E 3.8E 5E 6.3E 7.5E 8.8E 10E - -3 -2 -1 0 1 2 3 4 5 6 7 8 9 - 9.89N / 107: 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 35.35906 - 8.95N / 106: 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 35.35908 - 8.01N / 105: 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 35.35909 - 7.07N / 104: 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 35.35910 - 6.13N / 103: 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 35.35911 - 5.18N / 102: 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 - 4.24N / 101: 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 35.35912 - 3.3N / 100: 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 - 2.36N / 99: 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 - 1.41N / 98: 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 - 0.47N / 97: 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 - 0.47S / 96: 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 - 1.41S / 95: 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 35.35914 - 2.36S / 94: 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 - 3.3S / 93: 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 35.35913 - -list /width=500 /prec=7 w[x=($xlobnds),y=($ybnds)] - !-> list /width=500 /prec=7 w[x=-5:-1.25,y=-3.3:9.9] - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval W C: 6 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - found FACTOR M:300 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - found ARE-ELLA M:379 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 4 by 15 points (LONGITUDE-LATITUDE) - 5W(-5) 3.8W 2.5W 1.3W - -3 -2 -1 0 - 9.89N / 107: 114.9170 114.9170 114.9170 114.9170 - 8.95N / 106: 114.9170 114.9170 114.9170 114.9170 - 8.01N / 105: 114.9170 114.9170 114.9170 114.9170 - 7.07N / 104: 114.9171 114.9171 114.9171 114.9171 - 6.13N / 103: 114.9171 114.9171 114.9171 114.9171 - 5.18N / 102: 114.9171 114.9171 114.9171 114.9171 - 4.24N / 101: 114.9172 114.9172 114.9172 114.9172 - 3.3N / 100: 114.9172 114.9172 114.9172 114.9172 - 2.36N / 99: 114.9172 114.9172 114.9172 114.9172 - 1.41N / 98: 114.9172 114.9172 114.9172 114.9172 - 0.47N / 97: 114.9172 114.9172 114.9172 114.9172 - 0.47S / 96: 114.9172 114.9172 114.9172 114.9172 - 1.41S / 95: 114.9172 114.9172 114.9172 114.9172 - 2.36S / 94: 114.9172 114.9172 114.9172 114.9172 - 3.3S / 93: 114.9172 114.9172 114.9172 114.9172 - -list /width=500 /prec=7 w[x=($xhibnds),y=($ybnds)] - !-> list /width=500 /prec=7 w[x=0:10,y=-3.3:9.9] - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GQL1 LON1 LAT NORMAL NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - eval W C: 6 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - found FACTOR M:300 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - found ARE-ELLA M:254 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - VARIABLE : FACTOR / AREACELLA[X=@SUM,Y=@SUM] - FILENAME : cellareas.nc - SUBSET : 9 by 15 points (LONGITUDE-LATITUDE) - 0E 1.3E 2.5E 3.8E 5E 6.3E 7.5E 8.8E 10E - 1 2 3 4 5 6 7 8 9 - 9.89N / 107: 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 51.07420 - 8.95N / 106: 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 51.07422 - 8.01N / 105: 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 51.07424 - 7.07N / 104: 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 51.07425 - 6.13N / 103: 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 51.07427 - 5.18N / 102: 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 51.07428 - 4.24N / 101: 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 51.07429 - 3.3N / 100: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 2.36N / 99: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 1.41N / 98: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 0.47N / 97: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 0.47S / 96: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 1.41S / 95: 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 51.07431 - 2.36S / 94: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - 3.3S / 93: 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 51.07430 - -! cleanup - -cancel symbol xlobnds, xhibnds, xfullbnds, ybnds -cancel var w, factor - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - -DELETE W M:222 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE W M:271 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE W M:307 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE W M:376 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE W M:412 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL - -DELETE FACTOR M:300 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE FACTOR M:430 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE FACTOR M:483 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE FACTOR M:493 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - dealloc dynamic grid GQL1 LON1 LAT NORMAL NORMAL -cancel data cellareas - canceling dset ./data/cellareas.nc - -DELETE ARE-ELLA M:254 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:366 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:379 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:383 dset: 1 I: -3 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:449 dset: 1 I: -3 0 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:467 dset: 1 I: 1 9 J: 93 107 K: -999 -999 L: -999 -999 - -DELETE ARE-ELLA M:486 dset: 1 I: 285 288 J: 93 107 K: -999 -999 L: -999 -999 -set mode /last diagnos - -! -! further report, ticket 1922, expression with a constant-array. - -use coads_climatology -let v1 = tsequence(sst[x=140w,y=0]) -let vx = v1 - -say `vx,return=shape` - !-> MESSAGE/CONTINUE T -T - -plot/vs vx+{1,1,-1,-1,1}, 0*vx+{1,2,2,1,1} - -say `vx,return=shape` - !-> MESSAGE/CONTINUE T -T - - -! -! end of err744_context.jnl - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err744_poly_const_val -! err744_poly_const_val.jnl -! Issue 1918; zero-extent polygons cause a pyferret failure -! but only filled polygons -! -! POLY/LINE without /FILL should still draw even if -! constant-valued in either direction -! -set view upper -let xpts = {2,8,,2,8,,2,2.1,,8,8} -let ypts = {2,2.1,,8,8,,2,8,,2,8} -poly/hl=0:10/vl=0:10/line=14 xpts, ypts -plot/ov/vs/line=16 xpts+1, ypts+1 - -! POLY/FILL will not draw, so will be skipped - -set view ll -use bar_chart_data_small.nc -POLY/LINE/NOLABEL/FILL/lev=4/coord_ax=Z BCHx4,BCHy4 ,wt_plt - -! POLY/LINE/FILL can draw the outline only - -set view lr -use bar_chart_data_small.nc -POLY/LINE/NOLABEL/FILL/lev=4/LINE/THICK/COLOR=red/coord_ax=Z BCHx4,BCHy4 ,wt_plt - -frame/file=poly_with_const.gif - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err744_timeax_plots -! err744_timeax_plots.jnl -! issue 1920: a time range a few seconds into the next day caused -! an extra piece of the time axis to be plotted -! 3/29/2019 - -def view/x=0.1:0.9/y=0.75:0.95/axes v1 -def view/x=0.1:0.9/y=0.45:0.65/axes v2 -def view/x=0.1:0.9/y=0.15:0.35/axes v3 - -! For discrete data we are often defining the time axis from -! time data in a file - -set view v1 -let times = 1513000000 + {\ -509406,511946,513392,551364,555664,570384,584525,584970,591428,643357,649012,\ -663121,664727,666085,743198,743286,758245,763918,840450,845033,927021,941481,\ -945432,950464,961409,965271,975940,1016568,1038717,1047512,1052024,1104094,\ -1163958,1232091,1237204,1247258,1260899,1262517,1268527,1274539,1274628,\ -1276161,1278465,1282797,1286385,1291679,1295978,1303257,1315204,1316810,\ -1327040,1332801} - -DEFINE AXIS/T/T0="1-Jan-1970"/UNITS=seconds tax = times - -! The axis extends to 27-DEC-2017 00:00:01 -list/prec=15 t[gt=tax] - VARIABLE : T - axis TAX - SUBSET : 52 points (TIME) - 17-DEC-2017 11:16:46 / 1: 1513509406.00000 - 17-DEC-2017 11:59:06 / 2: 1513511946.00000 - 17-DEC-2017 12:23:12 / 3: 1513513392.00000 - 17-DEC-2017 22:56:04 / 4: 1513551364.00000 - 18-DEC-2017 00:07:44 / 5: 1513555664.00000 - 18-DEC-2017 04:13:04 / 6: 1513570384.00000 - 18-DEC-2017 08:08:45 / 7: 1513584525.00000 - 18-DEC-2017 08:16:10 / 8: 1513584970.00000 - 18-DEC-2017 10:03:48 / 9: 1513591428.00000 - 19-DEC-2017 00:29:17 / 10: 1513643357.00000 - 19-DEC-2017 02:03:32 / 11: 1513649012.00000 - 19-DEC-2017 05:58:41 / 12: 1513663121.00000 - 19-DEC-2017 06:25:27 / 13: 1513664727.00000 - 19-DEC-2017 06:48:05 / 14: 1513666085.00000 - 20-DEC-2017 04:13:18 / 15: 1513743198.00000 - 20-DEC-2017 04:14:46 / 16: 1513743286.00000 - 20-DEC-2017 08:24:05 / 17: 1513758245.00000 - 20-DEC-2017 09:58:38 / 18: 1513763918.00000 - 21-DEC-2017 07:14:10 / 19: 1513840450.00000 - 21-DEC-2017 08:30:33 / 20: 1513845033.00000 - 22-DEC-2017 07:17:01 / 21: 1513927021.00000 - 22-DEC-2017 11:18:01 / 22: 1513941481.00000 - 22-DEC-2017 12:23:52 / 23: 1513945432.00000 - 22-DEC-2017 13:47:44 / 24: 1513950464.00000 - 22-DEC-2017 16:50:09 / 25: 1513961409.00000 - 22-DEC-2017 17:54:31 / 26: 1513965271.00000 - 22-DEC-2017 20:52:20 / 27: 1513975940.00000 - 23-DEC-2017 08:09:28 / 28: 1514016568.00000 - 23-DEC-2017 14:18:37 / 29: 1514038717.00000 - 23-DEC-2017 16:45:12 / 30: 1514047512.00000 - 23-DEC-2017 18:00:24 / 31: 1514052024.00000 - 24-DEC-2017 08:28:14 / 32: 1514104094.00000 - 25-DEC-2017 01:05:58 / 33: 1514163958.00000 - 25-DEC-2017 20:01:31 / 34: 1514232091.00000 - 25-DEC-2017 21:26:44 / 35: 1514237204.00000 - 26-DEC-2017 00:14:18 / 36: 1514247258.00000 - 26-DEC-2017 04:01:39 / 37: 1514260899.00000 - 26-DEC-2017 04:28:37 / 38: 1514262517.00000 - 26-DEC-2017 06:08:47 / 39: 1514268527.00000 - 26-DEC-2017 07:48:59 / 40: 1514274539.00000 - 26-DEC-2017 07:50:28 / 41: 1514274628.00000 - 26-DEC-2017 08:16:01 / 42: 1514276161.00000 - 26-DEC-2017 08:54:25 / 43: 1514278465.00000 - 26-DEC-2017 10:06:37 / 44: 1514282797.00000 - 26-DEC-2017 11:06:25 / 45: 1514286385.00000 - 26-DEC-2017 12:34:39 / 46: 1514291679.00000 - 26-DEC-2017 13:46:18 / 47: 1514295978.00000 - 26-DEC-2017 15:47:37 / 48: 1514303257.00000 - 26-DEC-2017 19:06:44 / 49: 1514315204.00000 - 26-DEC-2017 19:33:30 / 50: 1514316810.00000 - 26-DEC-2017 22:24:00 / 51: 1514327040.00000 - 27-DEC-2017 00:00:01 / 52: 1514332801.00000 - -! the plot axis extended by one tic-mark interval at the end -LET tt = L[gt=tax] -plot/nolab/color=blue tt - -! This example did the same thing even with older Ferret execs, ask to -! plot a second into a new hour. - -set view v2 - -define axis/t="1-jan-1990:00:00:01":"20-jan-1990:00:00:01":1/units=minutes/t0=1-jan-1990 taxis -let tt = t[gt=taxis] -plot/nolab/color=blue/t="2-jan-1990":"12-jan-1990:00:00:01" cos(tt/400) - -! Here plot a second into a new hour, the vertical axes and plot scale are -! set correctly - -set view v3 - -! starting just before beginning of a day works fine - -plot/nolab/color=blue/t="1-jan-1990:23:59:51":"12-jan-1990:00:00:10" cos(tt/400) - -frame/file=time_axis_ends.gif - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err744_axis_not_even -! err744_axis_not_even.jnl -! issue 334: coordinate axis has a point_spacing=even attribute -! Which should be checked more carefully and ignored. -! 4/15/2019 ACM - -use wrong_reg_axis.nc -list avar - VARIABLE : Variable with xaxis incorrectly marked even - FILENAME : wrong_reg_axis.nc - SUBSET : 4 points (X) - 1005 / 1: 5.00 - 1006 / 2: 6.00 - 1029 / 3: 29.00 - 1030 / 4: 30.00 - -! But if the user specifies USE/REGULART then that overrides everything -! The coordinates are now different from what's in the file, but they're regular. - -cancel data/all -use/regulart wrong_reg_axis.nc -list avar - VARIABLE : Variable with xaxis incorrectly marked even - FILENAME : wrong_reg_axis.nc - SUBSET : 4 points (X) - 1005 / 1: 5.00 - 1013.3 / 2: 6.00 - 1021.7 / 3: 29.00 - 1030 / 4: 30.00 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err744_parsing_slashes -! err744_parsing_slashes.jnl -! 4/17/2019 ACM issue 660 parsing with grave-accent -! expressions apearing right after a slash. -! -! -! Previously gave an error on the SET REGION, unknown qualifier -! Now it's correct - -let region = "x=0:360" -say `region` - !-> MESSAGE/CONTINUE x=0:360 -x=0:360 - -set region/`region` - !-> set region/x=0:360 - -! But this was ok, including the slash in the string - -let region = "/x=0:360" -set region`region` - !-> set region/x=0:360 - -! Test multiple such strings - -let xregion = "x=0:360" -let yregion = "y=15:45" - -set region/`xregion`/`yregion` - !-> set region/x=0:360/y=15:45 - -! Any qualifier right after a slash had the same parsing bug -! This previously gave an error on the PLOT command, unknown qualifier - -let style="color=blue" -plot/`style`/i=1:15 1./i - !-> plot/color=blue/i=1:15 1./i - - -set mode ignore - -! Intentional errors -! This really is an error - -let region = "p=0:360" -say `region` - !-> MESSAGE/CONTINUE p=0:360 -p=0:360 - -set region/`region` - -set mode /last ignore - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err744_F_line_plots -! err744_F_line_plots.jnl -! issue 1926 -! Line plots in the F direction borrowed some info -! from the T axis in the grid if available. - -use 6dfile.nc -show grid u - GRID GNJ3 - name axis # pts start end subset - PSXU69_72 LONGITUDE 4mr 161W 158W full - PSYU15_75 LATITUDE 61 i 10S 10N full - PSZT2 DEPTH (m) 27 i- 5 3824 full - TIME38 TIME 3 r 15-MAR-1983 10:00 15-MAR-1983 12:00 full - EAXIS1 E 5 r 1 5 full - FAXIS1 F 4 r 1 7 full - -! give the F axis a date definition different from the T axis -! (not done in general but you could...) -set axis/units=days/t0=1-oct-2000 faxis -show grid u - GRID GNJ3 - name axis # pts start end subset - PSXU69_72 LONGITUDE 4mr 161W 158W full - PSYU15_75 LATITUDE 61 i 10S 10N full - PSZT2 DEPTH (m) 27 i- 5 3824 full - TIME38 TIME 3 r 15-MAR-1983 10:00 15-MAR-1983 12:00 full - EAXIS1 E 5 r 1 5 full - FAXIS1 F 4 r 1 7 full - -! 2D plot is ok -shade/i=1/k=1/l=1/e=1 u - -set view upper -! Line plot horiz axis had incorrect dates. Should be Oct 2 - 7 -plot/i=1/j=1/k=1/l=1/e=1 u - -set view lower -! If the variable had no T axis then there was an error (v7.432 - 7.444) -define axis/f=1-jan-1990:1-mar-1990:1/unit=days fday -let a = SIN(_f[gf=fday]/10) -let b = 0.4*cos(_f[gf=fday]/4) - 2 -plot a, b - -frame /file=f_line_plots.gif - -GO bn_reset bn_iso8601_time -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_iso8601_time -GO bn_iso8601_time -! bn_iso8601_time.jnl -! test output when MODE DATE_FORMAT is set to ISO -! -! 12/11/2018 ACM -! By the way, xml output that shows time info, and dates that -! are part of time-axis units written to netcdf files have -! already been converted to yyyy-mm-dd dates - -show mode date_format - MODE STATE ARGUMENT - DATE_FORMAT SET DEFAULT -set mode date:iso -show mode date_format - MODE STATE ARGUMENT - DATE_FORMAT SET ISO8601 - -! Time in headers and listings shown in yyyy-mm-dd form - -use gt4d011 -list/i=100/j=40/k=1/l=1:4 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 4 points (TIME) - LONGITUDE: 130.5W - LATITUDE : 1.8333S - DEPTH (m): 5 - 130.5W - 100 - 1982-08-17 12 / 1: 26.20 - 1982-08-23 14 / 2: 26.30 - 1982-08-29 16 / 3: 26.45 - 1982-09-04 18 / 4: 26.66 -! multi-var -list/i=100/j=40/k=1/l=5:12 u,v - DATA SET: ./data/gt4d011.cdf - TIME: 1982-09-07 19:00 to 1982-10-26 11:00 - LONGITUDE: 130W - LATITUDE: 1.6667S - DEPTH (m): 5 - Column 1: U is ZONAL VELOCITY (cm/sec) - Column 2: V is MERIDIONAL VELOCITY (cm/sec) - U V -1982-09-10 20 / 5: 23.12 -3.141 -1982-09-16 22 / 6: 29.80 -3.303 -1982-09-23 00 / 7: 33.85 -4.931 -1982-09-29 02 / 8: 38.61 -4.039 -1982-10-05 04 / 9: 43.65 -2.142 -1982-10-11 06 / 10: 47.04 -2.099 -1982-10-17 08 / 11: 46.11 -5.642 -1982-10-23 10 / 12: 45.30 -7.819 - -say `u,return=t0` - !-> MESSAGE/CONTINUE 1980-01-14 14:00:00 -1980-01-14 14:00:00 - -save/clobber/file=a.nc/k=1 temp -use a.nc -show att (`temp,return=taxis`) - !-> show att (TIME112) - attributes for dataset: ./a.nc - (TIME112).units = hour since 1980-01-14 14:00:00 - (TIME112).time_origin = 1980-01-14 14:00:00 - (TIME112).axis = T - (TIME112).standard_name = time - (TIME112).orig_file_axname = TIME1 - - -cancel data 2 - -! time label on a plot -shade/l=2/k=2 temp -show symbol lab($labnum_t) - !-> show symbol lab2 -LAB2 = "TIME : 1982-08-23 14:00" - -cancel data/all - -! For modulo axes list the year as defined in the axis. -! ISO-8601 date formatting must include a year. - -use coads_climatology -list/x=301/y=-47 sst - VARIABLE : SEA SURFACE TEMPERATURE (Deg C) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (TIME) - LONGITUDE: 59W - LATITUDE : 47S - 59W - 141 - 0000-01-16 / 1: 11.18 - 0000-02-15 / 2: 11.17 - 0000-03-17 / 3: 10.92 - -cancel data/all - -! The seasonal axes in clim_axes_gregorian, clim_axes_julian etc start -! in year 0001 and extend into year 0002. Show the acutal year. -use clim_axes_julian; can data clim_axes_julian -let tt = t[gt=JFM_IRREG_JUL] -list tt - VARIABLE : T[GT=JFM_IRREG_JUL] - SUBSET : 4 points (TIME) - CALENDAR : JULIAN - 0001-02-15 / 1: 45.1 - 0001-05-16 / 2: 135.8 - 0001-08-16 / 3: 227.3 - 0001-11-16 / 4: 319.3 -let tt = t[gt=NDJ_REG_JUL] -list tt - VARIABLE : T[GT=NDJ_REG_JUL] - SUBSET : 4 points (TIME) - CALENDAR : JULIAN - 0001-12-17 / 1: 350.0 - 0002-03-18 / 2: 441.3 - 0002-06-17 / 3: 532.7 - 0002-09-16 / 4: 624.0 - -! The date string shows year 0002. Not the most intuitive thing, -! but we are stuck with it. -use gtsa056_2 -use clim_axes_gregorian; can data clim_axes_gregorian -let temp_seas = temp[gt=NDJ_REG_GRG@mod] -shade/L=2/K=2 temp_seas -show symbol lab($labnum_t) - !-> show symbol lab2 -LAB2 = "TIME : 0002-03-18 08:01:57" - -cancel data/all - -! Define a high-resolution time axis. Dates on the row-headers -! as well as output shown by TAX_DATESTRING are ISO-8601 formatted and -! include fractional part. - -define axis/t="4-dec-2018:02:20":"4-dec-2018:02:22"/t0=1-dec-2018/units=seconds/npoints=411 tfrac -let tt = t[gt=tfrac] -list/l=30:36/prec=12 tt, tax_datestring(tt,tt,"sec") - TIME: 2018-12-04 02:20 to 2018-12-04 02:20 - Column 1: TT is T[GT=TFRAC] - Column 2: EX#2 is TAX_DATESTRING(TT,TT,"sec") - TT EX#2 -2018-12-04 02:20:08.4878 / 30: 267608.487805 "2018-12-04 02:20:08.4878" -2018-12-04 02:20:08.7805 / 31: 267608.780488 "2018-12-04 02:20:08.7805" -2018-12-04 02:20:09.07317 / 32: 267609.073171 "2018-12-04 02:20:09.07317" -2018-12-04 02:20:09.3659 / 33: 267609.365854 "2018-12-04 02:20:09.3659" -2018-12-04 02:20:09.6585 / 34: 267609.658537 "2018-12-04 02:20:09.6585" -2018-12-04 02:20:09.9512 / 35: 267609.951220 "2018-12-04 02:20:09.9512" -2018-12-04 02:20:10.2439 / 36: 267610.243902 "2018-12-04 02:20:10.2439" - - -! tax_ functions - -use gt4d011 - -list/L=15:20 tax_datestring(t[gt=temp],temp,"hour") - VARIABLE : TAX_DATESTRING(T[GT=TEMP],TEMP,"hour") - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - 1982-11-10 16 / 15:"1982-11-10 16" - 1982-11-16 18 / 16:"1982-11-16 18" - 1982-11-22 20 / 17:"1982-11-22 20" - 1982-11-28 22 / 18:"1982-11-28 22" - 1982-12-05 00 / 19:"1982-12-05 00" - 1982-12-11 02 / 20:"1982-12-11 02" -list/L=15:20 tax_datestring(t[gt=temp],temp,"day") - VARIABLE : TAX_DATESTRING(T[GT=TEMP],TEMP,"day") - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - 1982-11-10 16 / 15:"1982-11-10" - 1982-11-16 18 / 16:"1982-11-16" - 1982-11-22 20 / 17:"1982-11-22" - 1982-11-28 22 / 18:"1982-11-28" - 1982-12-05 00 / 19:"1982-12-05" - 1982-12-11 02 / 20:"1982-12-11" -list/L=15:20 tax_dayfrac(t[gt=temp],temp), tax_dayfrac(t[gt=temp],temp)*24. - DATA SET: ./data/gt4d011.cdf - TIME: 1982-11-07 15:00 to 1982-12-14 03:00 - Column 1: TAX_DAYFRAC(T[GT=TEMP],TEMP) - Column 2: EX#2 is TAX_DAYFRAC(T[GT=TEMP],TEMP)*24. - (C001,V001) EX#2 -1982-11-10 16 / 15: 0.6667 16.00 -1982-11-16 18 / 16: 0.7500 18.00 -1982-11-22 20 / 17: 0.8333 20.00 -1982-11-28 22 / 18: 0.9167 22.00 -1982-12-05 00 / 19: 0.0000 0.00 -1982-12-11 02 / 20: 0.0833 2.00 -list/L=15:20 tax_day(t[gt=temp],temp), tax_jday(t[gt=temp],temp) - DATA SET: ./data/gt4d011.cdf - TIME: 1982-11-07 15:00 to 1982-12-14 03:00 - Column 1: TAX_DAY(T[GT=TEMP],TEMP) - Column 2: TAX_JDAY(T[GT=TEMP],TEMP) - (C001,V001) (C001,V006) -1982-11-10 16 / 15: 10.00 314.0 -1982-11-16 18 / 16: 16.00 320.0 -1982-11-22 20 / 17: 22.00 326.0 -1982-11-28 22 / 18: 28.00 332.0 -1982-12-05 00 / 19: 5.00 339.0 -1982-12-11 02 / 20: 11.00 345.0 -list/L=15:20 tax_month(t[gt=temp],temp), tax_yearfrac(t[gt=temp],temp) - DATA SET: ./data/gt4d011.cdf - TIME: 1982-11-07 15:00 to 1982-12-14 03:00 - Column 1: TAX_MONTH(T[GT=TEMP],TEMP) - Column 2: TAX_YEARFRAC(T[GT=TEMP],TEMP) - (C001,V001) (C001,V006) -1982-11-10 16 / 15: 11.00 0.8621 -1982-11-16 18 / 16: 11.00 0.8788 -1982-11-22 20 / 17: 11.00 0.8954 -1982-11-28 22 / 18: 11.00 0.9121 -1982-12-05 00 / 19: 12.00 0.9288 -1982-12-11 02 / 20: 12.00 0.9454 -list/L=15:20 tax_year(t[gt=temp],temp) - VARIABLE : TAX_YEAR(T[GT=TEMP],TEMP) - FILENAME : gt4d011.cdf - SUBSET : 6 points (TIME) - 1982-11-10 16 / 15: 1982. - 1982-11-16 18 / 16: 1982. - 1982-11-22 20 / 17: 1982. - 1982-11-28 22 / 18: 1982. - 1982-12-05 00 / 19: 1982. - 1982-12-11 02 / 20: 1982. -list tax_units(temp) - VARIABLE : TAX_UNITS(TEMP) - FILENAME : gt4d011.cdf - 3600. - -! Return to default format. The mode is never set to false -! Alternatively can SET MODE DATE_FORMAT:DEFAULT - -cancel mode date_format -show mode date_format - MODE STATE ARGUMENT - DATE_FORMAT SET DEFAULT - -! Also, use iso-8601 dates in command syntax -! -! Define axis with /T= and /T0= -define axis/t=1990-01-15:1991-01-15:5/units=days/t0=1990-01-01 tax -show axis tax - name axis # pts start end - tax TIME 74 r 15-JAN-1990 00:00 15-JAN-1991 00:00 -T0 = 01-JAN-1990 - Axis span (to cell edges) = 370 - -! Keep the amount of resolution used -define axis/t=1:5:1/units=days/t0="1989-01-01 00:00" tax -show axis tax - name axis # pts start end - tax TIME 5 r 02-JAN-1989 00:00 06-JAN-1989 00:00 -T0 = 01-JAN-1989 00:00 - Axis span (to cell edges) = 5 - -! true-monthly axes -define axis/t=2010-01-01:2011-07-31:1/t0=2010-01-01/monthly taxis -show axis taxis - name axis # pts start end - taxis TIME 19 i JAN-2010 JUL-2011 (True Monthly) -T0 = 01-JAN-2010 - Axis span (to cell edges) = 19 -show axis/t taxis - name axis # pts start end - taxis TIME 19 i JAN-2010 JUL-2011 (True Monthly) -T0 = 01-JAN-2010 - Axis span (to cell edges) = 19 - - L T TBOX TBOXLO TSTEP (TRUMONTH) - 1> JAN-2010 31 01-JAN-2010 0 - 2> FEB-2010 28 01-FEB-2010 1 - 3> MAR-2010 31 01-MAR-2010 2 - 4> APR-2010 30 01-APR-2010 3 - 5> MAY-2010 31 01-MAY-2010 4 - 6> JUN-2010 30 01-JUN-2010 5 - 7> JUL-2010 31 01-JUL-2010 6 - 8> AUG-2010 31 01-AUG-2010 7 - 9> SEP-2010 30 01-SEP-2010 8 - 10> OCT-2010 31 01-OCT-2010 9 - 11> NOV-2010 30 01-NOV-2010 10 - 12> DEC-2010 31 01-DEC-2010 11 - 13> JAN-2011 31 01-JAN-2011 12 - 14> FEB-2011 28 01-FEB-2011 13 - 15> MAR-2011 31 01-MAR-2011 14 - 16> APR-2011 30 01-APR-2011 15 - 17> MAY-2011 31 01-MAY-2011 16 - 18> JUN-2011 30 01-JUN-2011 17 - 19> JUL-2011 31 01-JUL-2011 18 - -! SET AXIS/T0 - -define axis/t=1:5:1/units=days/t0="1989-01-01 00:00" tax -show axis/t tax - name axis # pts start end - tax TIME 5 r 02-JAN-1989 00:00 06-JAN-1989 00:00 -T0 = 01-JAN-1989 00:00 - Axis span (to cell edges) = 5 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 02-JAN-1989 00:00:00 1 01-JAN-1989 12:00:00 1 - 2> 03-JAN-1989 00:00:00 1 02-JAN-1989 12:00:00 2 - 3> 04-JAN-1989 00:00:00 1 03-JAN-1989 12:00:00 3 - 4> 05-JAN-1989 00:00:00 1 04-JAN-1989 12:00:00 4 - 5> 06-JAN-1989 00:00:00 1 05-JAN-1989 12:00:00 5 - -! reset the time origin -set axis/t0=2010-01-01 tax -show axis /t tax - name axis # pts start end - tax TIME 5 r 02-JAN-2010 00:00 06-JAN-2010 00:00 -T0 = 01-JAN-2010 - Axis span (to cell edges) = 5 - - L T TBOX TBOXLO TSTEP (DAYS) - 1> 02-JAN-2010 00:00:00 1 01-JAN-2010 12:00:00 1 - 2> 03-JAN-2010 00:00:00 1 02-JAN-2010 12:00:00 2 - 3> 04-JAN-2010 00:00:00 1 03-JAN-2010 12:00:00 3 - 4> 05-JAN-2010 00:00:00 1 04-JAN-2010 12:00:00 4 - 5> 06-JAN-2010 00:00:00 1 05-JAN-2010 12:00:00 5 - -! /T= in contexts -let var = t[gt=tax] -list/t=2010-01-03:2010-01-05 var - VARIABLE : T[GT=TAX] - SUBSET : 3 points (TIME) - 03-JAN-2010 00 / 2: 2.000 - 04-JAN-2010 00 / 3: 3.000 - 05-JAN-2010 00 / 4: 4.000 - -! ok to mix formats -list/t=2-jan-2010:2010-01-05 var - VARIABLE : T[GT=TAX] - SUBSET : 4 points (TIME) - 02-JAN-2010 00 / 1: 1.000 - 03-JAN-2010 00 / 2: 2.000 - 04-JAN-2010 00 / 3: 3.000 - 05-JAN-2010 00 / 4: 4.000 - -! -use gt4d011 -list/i=100/j=50/k=1/t=1982-10-15:1982-11-30 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - SUBSET : 8 points (TIME) - LONGITUDE: 130.5W - LATITUDE : 1.5N - DEPTH (m): 5 - 130.5W - 100 - 17-OCT-1982 08 / 11: 30.10 - 23-OCT-1982 10 / 12: 31.20 - 29-OCT-1982 12 / 13: 31.92 - 04-NOV-1982 14 / 14: 32.33 - 10-NOV-1982 16 / 15: 32.48 - 16-NOV-1982 18 / 16: 32.50 - 22-NOV-1982 20 / 17: 32.52 - 28-NOV-1982 22 / 18: 32.61 - -set region/t=1982-10-01:1982-12-01/x=-123:-135/z=15/y=-3 -list salt - VARIABLE : (SALINITY(ppt) - 35) /1000 (frac. by wt. less .035) - FILENAME : gt4d011.cdf - SUBSET : 12 by 11 points (LONGITUDE-TIME) - LATITUDE : 3.1667S - DEPTH (m): 15 - ... listing every 2th point - 134.5W 132.5W 130.5W 128.5W 126.5W 124.5W - -65 -63 -61 -59 -57 -55 - 29-SEP-1982 02 / 8: 2.255E-04 2.272E-04 2.277E-04 2.262E-04 2.238E-04 2.188E-04 - 05-OCT-1982 04 / 9: 2.259E-04 2.254E-04 2.260E-04 2.253E-04 2.238E-04 2.211E-04 - 11-OCT-1982 06 / 10: 2.307E-04 2.270E-04 2.254E-04 2.247E-04 2.234E-04 2.219E-04 - 17-OCT-1982 08 / 11: 2.383E-04 2.329E-04 2.284E-04 2.257E-04 2.239E-04 2.222E-04 - 23-OCT-1982 10 / 12: 2.449E-04 2.401E-04 2.349E-04 2.300E-04 2.263E-04 2.235E-04 - 29-OCT-1982 12 / 13: 2.480E-04 2.457E-04 2.417E-04 2.368E-04 2.314E-04 2.269E-04 - 04-NOV-1982 14 / 14: 2.472E-04 2.477E-04 2.463E-04 2.428E-04 2.378E-04 2.324E-04 - 10-NOV-1982 16 / 15: 2.434E-04 2.456E-04 2.469E-04 2.460E-04 2.427E-04 2.377E-04 - 16-NOV-1982 18 / 16: 2.385E-04 2.406E-04 2.433E-04 2.452E-04 2.445E-04 2.409E-04 - 22-NOV-1982 20 / 17: 2.345E-04 2.352E-04 2.374E-04 2.408E-04 2.430E-04 2.418E-04 - 28-NOV-1982 22 / 18: 2.327E-04 2.315E-04 2.316E-04 2.344E-04 2.385E-04 2.405E-04 - -cancel region - -! Strictly speaking dates must be yyyy-mm-dd with 2-digit month,day -! parsing is forgiving even though this isn't valid iso-8601 formatting -list/t=1982-9-6/k=6/x=-123/y=-3 temp - VARIABLE : TEMPERATURE (deg. C) - FILENAME : gt4d011.cdf - LONGITUDE: 123.5W(-123.5) - LATITUDE : 3.1667S - DEPTH (m): 55 - TIME : 04-SEP-1982 18:00 - 25.96 - -! intentional errors -set mode ignore - -! 4-digit years must be given, else year interpreted as starting with 00 -list/t=82-9-6/k=6/x=-123/y=-3 temp - -! Report time info in iso-8601 date as well. -set mode date:iso - -! region out of dataset range -list/t=1982-01-01/k=1/x=-123/y=-3 salt - -! Illegal dates - -list/t=1982-15-09/k=1/x=-123/y=-3 salt - -list/t=1982-11-31/k=1/x=-123/y=-3 salt - -list/t=15/k=1/x=-123/y=-3 salt - - -list/t=15-09-1983/k=1/x=-123/y=-3 salt - - -! Illegal date specs in DEFINE AXIS - -define axis/t=01-15-2010:09-01-2010:1/units=days/t0=2010-01-01 taxis - -define axis/t=2018-15-01:2019-01-01:1/units=days taxis - -define axis/t=2018--5-01:2019-01-01:1/units=days taxis - - -! illegal format in a /t0 -set axis/t0=2010-15-01 `salt,return=taxis` - !-> set axis/t0=2010-15-01 TIME112 - -! restore modes -cancel mode date_format -set mode/last ignore - - -GO bn_reset bn_agg_given_taxis -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_agg_given_taxis -GO bn_agg_given_taxis -! bn_agg_given_taxes.jnl -! -! time aggregation along a user-provided time axis - -! create some dataset to use, along with the time axes ffax and ftax -GO bn_agg_given_create.sub -! bn_agg_given_create.sub -! -! Creates, if they do not already exist, a set of forecast files with T0 times -! set to the time of each forecast. They have simple values with a logrhythmic -! 'error' with greater forecasted time lag, and a sinusoidal variation along -! the time of forecast. All times are irregularly spaced, with the times of -! forecasts (T0 times) on 01-JAN and 01-JUL, and forecasted times on the 15th -! of each month. -! -! After this completes, the following exist: -! files aggf/forecast_01.nc, aggf/forecast_02.nc, ..., aggf/forecast_38.nc -! containing a single variable called 'value' -! axes ffax (time-of-forecast F axis), -! ftax (superset of all forecasted-times T axes), and - - -CANCEL AXIS ffax - -! the datasets to aggregate - have gaps before, after, and between when viewed along ftax -LET aggfiles = { "aggf/forecast_02.nc", "aggf/forecast_13.nc", "aggf/forecast_24.nc", "aggf/forecast_35.nc" } - -! test using the exactly-matching-times axis (should use @XACT to match) -DEFINE DATA /AGGREGATE /HIDE /T /TAXIS=ftax timeagg = aggfiles -! should show gaps (missing values) before, after, and between -LIST /PREC=6 /X=12E /Y=12S /Z=5.0 value - VARIABLE : forecasted value - FILENAME : timeagg - SUBSET : 288 points (TIME) - LONGITUDE: 12E - LATITUDE : 12S - Z (m) : 5 - 12E - 3 - 15-JAN-2001 00 / 1: .... - 14-FEB-2001 00 / 2: .... - 15-MAR-2001 00 / 3: .... - 15-APR-2001 00 / 4: .... - 15-MAY-2001 00 / 5: .... - 15-JUN-2001 00 / 6: .... - 15-JUL-2001 00 / 7: 4.78548 - 15-AUG-2001 00 / 8: 5.04331 - 15-SEP-2001 00 / 9: 4.93140 - 15-OCT-2001 00 / 10: 4.69806 - 15-NOV-2001 00 / 11: 4.44249 - 15-DEC-2001 00 / 12: 4.26702 - 15-JAN-2002 00 / 13: 4.22320 - 14-FEB-2002 00 / 14: 4.34140 - 15-MAR-2002 00 / 15: 4.59768 - 15-APR-2002 00 / 16: 4.98267 - 15-MAY-2002 00 / 17: 5.39659 - 15-JUN-2002 00 / 18: 5.78261 - 15-JUL-2002 00 / 19: 6.03890 - 15-AUG-2002 00 / 20: 6.12264 - 15-SEP-2002 00 / 21: 5.99540 - 15-OCT-2002 00 / 22: 5.68400 - 15-NOV-2002 00 / 23: 5.21932 - 15-DEC-2002 00 / 24: 4.70907 - 15-JAN-2003 00 / 25: 4.21538 - 14-FEB-2003 00 / 26: 3.85940 - 15-MAR-2003 00 / 27: 3.69402 - 15-APR-2003 00 / 28: 3.74898 - 15-MAY-2003 00 / 29: 4.02725 - 15-JUN-2003 00 / 30: 4.50141 - 15-JUL-2003 00 / 31: 5.06258 - 15-AUG-2003 00 / 32: 5.64487 - 15-SEP-2003 00 / 33: 6.12160 - 15-OCT-2003 00 / 34: 6.39571 - 15-NOV-2003 00 / 35: 6.42950 - 15-DEC-2003 00 / 36: 6.20977 - 15-JAN-2004 00 / 37: 5.75771 - 14-FEB-2004 00 / 38: 5.17681 - 15-MAR-2004 00 / 39: 4.55453 - 15-APR-2004 00 / 40: 3.98248 - 15-MAY-2004 00 / 41: 3.59793 - 15-JUN-2004 00 / 42: 3.45004 - 15-JUL-2004 00 / 43: 3.57784 - 15-AUG-2004 00 / 44: 3.97035 - 15-SEP-2004 00 / 45: 4.55922 - 15-OCT-2004 00 / 46: 5.21611 - 15-NOV-2004 00 / 47: 5.86370 - 15-DEC-2004 00 / 48: 6.34797 - 15-JAN-2005 00 / 49: 6.60908 - 14-FEB-2005 00 / 50: 6.58221 - 15-MAR-2005 00 / 51: 6.29531 - 15-APR-2005 00 / 52: 5.75513 - 15-MAY-2005 00 / 53: 5.09240 - 15-JUN-2005 00 / 54: 4.38446 - 15-JUL-2005 00 / 55: 3.79868 - 15-AUG-2005 00 / 56: 3.40595 - 15-SEP-2005 00 / 57: 3.30296 - 15-OCT-2005 00 / 58: 3.50035 - 15-NOV-2005 00 / 59: 3.97774 - 15-DEC-2005 00 / 60: 4.62476 - 15-JAN-2006 00 / 61: 5.36631 - 14-FEB-2006 00 / 62: 6.02768 - 15-MAR-2006 00 / 63: 6.50493 - 15-APR-2006 00 / 64: 6.74956 - 15-MAY-2006 00 / 65: 6.68160 - 15-JUN-2006 00 / 66: 6.30642 - 15-JUL-2006 00 / 67: .... - 15-AUG-2006 00 / 68: .... - 15-SEP-2006 00 / 69: .... - 15-OCT-2006 00 / 70: .... - 15-NOV-2006 00 / 71: .... - 15-DEC-2006 00 / 72: .... - 15-JAN-2007 00 / 73: 5.28216 - 14-FEB-2007 00 / 74: 4.91316 - 15-MAR-2007 00 / 75: 4.93575 - 15-APR-2007 00 / 76: 5.13795 - 15-MAY-2007 00 / 77: 5.40425 - 15-JUN-2007 00 / 78: 5.65764 - 15-JUL-2007 00 / 79: 5.80588 - 15-AUG-2007 00 / 80: 5.80580 - 15-SEP-2007 00 / 81: 5.63212 - 15-OCT-2007 00 / 82: 5.31885 - 15-NOV-2007 00 / 83: 4.90021 - 15-DEC-2007 00 / 84: 4.47828 - 15-JAN-2008 00 / 85: 4.11104 - 14-FEB-2008 00 / 86: 3.89561 - 15-MAR-2008 00 / 87: 3.86670 - 15-APR-2008 00 / 88: 4.04843 - 15-MAY-2008 00 / 89: 4.40589 - 15-JUN-2008 00 / 90: 4.90171 - 15-JUL-2008 00 / 91: 5.41997 - 15-AUG-2008 00 / 92: 5.89696 - 15-SEP-2008 00 / 93: 6.22250 - 15-OCT-2008 00 / 94: 6.32998 - 15-NOV-2008 00 / 95: 6.19939 - 15-DEC-2008 00 / 96: 5.85530 - 15-JAN-2009 00 / 97: 5.33369 - 14-FEB-2009 00 / 98: 4.75543 - 15-MAR-2009 00 / 99: 4.22266 - 15-APR-2009 00 / 100: 3.78213 - 15-MAY-2009 00 / 101: 3.56132 - 15-JUN-2009 00 / 102: 3.59159 - 15-JUL-2009 00 / 103: 3.87084 - 15-AUG-2009 00 / 104: 4.37044 - 15-SEP-2009 00 / 105: 4.99626 - 15-OCT-2009 00 / 106: 5.61464 - 15-NOV-2009 00 / 107: 6.15138 - 15-DEC-2009 00 / 108: 6.47723 - 15-JAN-2010 00 / 109: 6.54981 - 14-FEB-2010 00 / 110: 6.34792 - 15-MAR-2010 00 / 111: 5.92721 - 15-APR-2010 00 / 112: 5.30720 - 15-MAY-2010 00 / 113: 4.64348 - 15-JUN-2010 00 / 114: 4.01454 - 15-JUL-2010 00 / 115: 3.57023 - 15-AUG-2010 00 / 116: 3.36582 - 15-SEP-2010 00 / 117: 3.46052 - 15-OCT-2010 00 / 118: 3.82435 - 15-NOV-2010 00 / 119: 4.41723 - 15-DEC-2010 00 / 120: 5.10114 - 15-JAN-2011 00 / 121: 5.79586 - 14-FEB-2011 00 / 122: 6.33679 - 15-MAR-2011 00 / 123: 6.64611 - 15-APR-2011 00 / 124: 6.68541 - 15-MAY-2011 00 / 125: 6.42771 - 15-JUN-2011 00 / 126: 5.90065 - 15-JUL-2011 00 / 127: 5.22649 - 15-AUG-2011 00 / 128: 4.48378 - 15-SEP-2011 00 / 129: 3.82933 - 15-OCT-2011 00 / 130: 3.39470 - 15-NOV-2011 00 / 131: 3.23332 - 15-DEC-2011 00 / 132: 3.38570 - 15-JAN-2012 00 / 133: .... - 14-FEB-2012 00 / 134: .... - 15-MAR-2012 00 / 135: .... - 15-APR-2012 00 / 136: .... - 15-MAY-2012 00 / 137: .... - 15-JUN-2012 00 / 138: .... - 15-JUL-2012 00 / 139: 4.67323 - 15-AUG-2012 00 / 140: 5.13185 - 15-SEP-2012 00 / 141: 5.17560 - 15-OCT-2012 00 / 142: 5.02177 - 15-NOV-2012 00 / 143: 4.75087 - 15-DEC-2012 00 / 144: 4.46517 - 15-JAN-2013 00 / 145: 4.23079 - 14-FEB-2013 00 / 146: 4.12877 - 15-MAR-2013 00 / 147: 4.18270 - 15-APR-2013 00 / 148: 4.41019 - 15-MAY-2013 00 / 149: 4.76628 - 15-JUN-2013 00 / 150: 5.21047 - 15-JUL-2013 00 / 151: 5.63414 - 15-AUG-2013 00 / 152: 5.97904 - 15-SEP-2013 00 / 153: 6.15628 - 15-OCT-2013 00 / 154: 6.12656 - 15-NOV-2013 00 / 155: 5.88363 - 15-DEC-2013 00 / 156: 5.47793 - 15-JAN-2014 00 / 157: 4.95365 - 14-FEB-2014 00 / 158: 4.43430 - 15-MAR-2014 00 / 159: 4.00892 - 15-APR-2014 00 / 160: 3.72098 - 15-MAY-2014 00 / 161: 3.66143 - 15-JUN-2014 00 / 162: 3.84430 - 15-JUL-2014 00 / 163: 4.23222 - 15-AUG-2014 00 / 164: 4.78344 - 15-SEP-2014 00 / 165: 5.38881 - 15-OCT-2014 00 / 166: 5.92058 - 15-NOV-2014 00 / 167: 6.31288 - 15-DEC-2014 00 / 168: 6.46882 - 15-JAN-2015 00 / 169: 6.36477 - 14-FEB-2015 00 / 170: 6.02049 - 15-MAR-2015 00 / 171: 5.51225 - 15-APR-2015 00 / 172: 4.86979 - 15-MAY-2015 00 / 173: 4.25906 - 15-JUN-2015 00 / 174: 3.75369 - 15-JUL-2015 00 / 175: 3.47572 - 15-AUG-2015 00 / 176: 3.46192 - 15-SEP-2015 00 / 177: 3.73235 - 15-OCT-2015 00 / 178: 4.22178 - 15-NOV-2015 00 / 179: 4.87495 - 15-DEC-2015 00 / 180: 5.53889 - 15-JAN-2016 00 / 181: 6.13465 - 14-FEB-2016 00 / 182: 6.51992 - 15-MAR-2016 00 / 183: 6.64687 - 15-APR-2016 00 / 184: 6.48047 - 15-MAY-2016 00 / 185: 6.05679 - 15-JUN-2016 00 / 186: 5.42322 - 15-JUL-2016 00 / 187: 4.72767 - 15-AUG-2016 00 / 188: 4.05207 - 15-SEP-2016 00 / 189: 3.54408 - 15-OCT-2016 00 / 190: 3.30238 - 15-NOV-2016 00 / 191: 3.35833 - 15-DEC-2016 00 / 192: 3.70156 - 15-JAN-2017 00 / 193: 4.29414 - 14-FEB-2017 00 / 194: 4.99806 - 15-MAR-2017 00 / 195: 5.68610 - 15-APR-2017 00 / 196: 6.30291 - 15-MAY-2017 00 / 197: 6.67741 - 15-JUN-2017 00 / 198: 6.76315 - 15-JUL-2017 00 / 199: .... - 15-AUG-2017 00 / 200: .... - 15-SEP-2017 00 / 201: .... - 15-OCT-2017 00 / 202: .... - 15-NOV-2017 00 / 203: .... - 15-DEC-2017 00 / 204: .... - 15-JAN-2018 00 / 205: 5.33684 - 14-FEB-2018 00 / 206: 4.85056 - 15-MAR-2018 00 / 207: 4.72718 - 15-APR-2018 00 / 208: 4.80719 - 15-MAY-2018 00 / 209: 5.03077 - 15-JUN-2018 00 / 210: 5.33849 - 15-JUL-2018 00 / 211: 5.63022 - 15-AUG-2018 00 / 212: 5.84520 - 15-SEP-2018 00 / 213: 5.91006 - 15-OCT-2018 00 / 214: 5.80079 - 15-NOV-2018 00 / 215: 5.51786 - 15-DEC-2018 00 / 216: 5.12204 - 15-JAN-2019 00 / 217: 4.65981 - 14-FEB-2019 00 / 218: 4.24476 - 15-MAR-2019 00 / 219: 3.94924 - 15-APR-2019 00 / 220: 3.81224 - 15-MAY-2019 00 / 221: 3.88844 - 15-JUN-2019 00 / 222: 4.17776 - 15-JUL-2019 00 / 223: 4.61799 - 15-AUG-2019 00 / 224: 5.16008 - 15-SEP-2019 00 / 225: 5.69162 - 15-OCT-2019 00 / 226: 6.10043 - 15-NOV-2019 00 / 227: 6.33247 - 15-DEC-2019 00 / 228: 6.32654 - 15-JAN-2020 00 / 229: 6.07672 - 14-FEB-2020 00 / 230: 5.63675 - 15-MAR-2020 00 / 231: 5.07494 - 15-APR-2020 00 / 232: 4.46827 - 15-MAY-2020 00 / 233: 3.96111 - 15-JUN-2020 00 / 234: 3.61676 - 15-JUL-2020 00 / 235: 3.52089 - 15-AUG-2020 00 / 236: 3.68995 - 15-SEP-2020 00 / 237: 4.10515 - 15-OCT-2020 00 / 238: 4.67309 - 15-NOV-2020 00 / 239: 5.32841 - 15-DEC-2020 00 / 240: 5.91642 - 15-JAN-2021 00 / 241: 6.36574 - 14-FEB-2021 00 / 242: 6.56725 - 15-MAR-2021 00 / 243: 6.50670 - 15-APR-2021 00 / 244: 6.17205 - 15-MAY-2021 00 / 245: 5.63651 - 15-JUN-2021 00 / 246: 4.96113 - 15-JUL-2021 00 / 247: 4.30451 - 15-AUG-2021 00 / 248: 3.74505 - 15-SEP-2021 00 / 249: 3.41025 - 15-OCT-2021 00 / 250: 3.36147 - 15-NOV-2021 00 / 251: 3.60787 - 15-DEC-2021 00 / 252: 4.09437 - 15-JAN-2022 00 / 253: 4.76586 - 14-FEB-2022 00 / 254: 5.46513 - 15-MAR-2022 00 / 255: 6.07274 - 15-APR-2022 00 / 256: 6.53501 - 15-MAY-2022 00 / 257: 6.71797 - 15-JUN-2022 00 / 258: 6.59715 - 15-JUL-2022 00 / 259: 6.19828 - 15-AUG-2022 00 / 260: 5.56605 - 15-SEP-2022 00 / 261: 4.82373 - 15-OCT-2022 00 / 262: 4.12851 - 15-NOV-2022 00 / 263: 3.56317 - 15-DEC-2022 00 / 264: 3.26260 - 15-JAN-2023 00 / 265: .... - 14-FEB-2023 00 / 266: .... - 15-MAR-2023 00 / 267: .... - 15-APR-2023 00 / 268: .... - 15-MAY-2023 00 / 269: .... - 15-JUN-2023 00 / 270: .... - 15-JUL-2023 00 / 271: .... - 15-AUG-2023 00 / 272: .... - 15-SEP-2023 00 / 273: .... - 15-OCT-2023 00 / 274: .... - 15-NOV-2023 00 / 275: .... - 15-DEC-2023 00 / 276: .... - 15-JAN-2024 00 / 277: .... - 14-FEB-2024 00 / 278: .... - 15-MAR-2024 00 / 279: .... - 15-APR-2024 00 / 280: .... - 15-MAY-2024 00 / 281: .... - 15-JUN-2024 00 / 282: .... - 15-JUL-2024 00 / 283: .... - 15-AUG-2024 00 / 284: .... - 15-SEP-2024 00 / 285: .... - 15-OCT-2024 00 / 286: .... - 15-NOV-2024 00 / 287: .... - 15-DEC-2024 00 / 288: .... -CANCEL DATA timeagg -CANCEL AXIS ftax - -! try a closely matching (regular) time axis (should use @BIN to match) -DEFINE AXIS /UNITS=DAYS /T0=01-JAN-2000 /T=01-JAN-2001:01-JAN-2025:`365.2425/12.0` tax - !-> DEFINE AXIS /UNITS=DAYS /T0=01-JAN-2000 /T=01-JAN-2001:01-JAN-2025:30.436875 tax -DEFINE DATA /AGGREGATE /HIDE /T /TAXIS=tax timeagg = aggfiles -! should show gaps (missing values) before, after, and between -LIST /PREC=6 /X=12E /Y=12S /Z=5.0 value - VARIABLE : forecasted value - FILENAME : timeagg - SUBSET : 290 points (TIME) - LONGITUDE: 12E - LATITUDE : 12S - Z (m) : 5 - 12E - 3 - 01-JAN-2001 / 1: .... - 31-JAN-2001 / 2: .... - 02-MAR-2001 / 3: .... - 02-APR-2001 / 4: .... - 02-MAY-2001 / 5: .... - 02-JUN-2001 / 6: .... - 02-JUL-2001 / 7: 4.78548 - 02-AUG-2001 / 8: 5.04331 - 01-SEP-2001 / 9: 4.93140 - 01-OCT-2001 / 10: 4.69806 - 01-NOV-2001 / 11: 4.44249 - 01-DEC-2001 / 12: 4.26702 - 01-JAN-2002 / 13: 4.22320 - 31-JAN-2002 / 14: 4.34140 - 03-MAR-2002 / 15: 4.59768 - 02-APR-2002 / 16: 4.98267 - 02-MAY-2002 / 17: 5.39659 - 02-JUN-2002 / 18: 5.78261 - 02-JUL-2002 / 19: 6.03890 - 02-AUG-2002 / 20: 6.12264 - 01-SEP-2002 / 21: 5.99540 - 02-OCT-2002 / 22: 5.68400 - 01-NOV-2002 / 23: 5.21932 - 02-DEC-2002 / 24: 4.70907 - 01-JAN-2003 / 25: 4.21538 - 31-JAN-2003 / 26: 3.85940 - 03-MAR-2003 / 27: 3.69402 - 02-APR-2003 / 28: 3.74898 - 03-MAY-2003 / 29: 4.02725 - 02-JUN-2003 / 30: 4.50141 - 03-JUL-2003 / 31: 5.06258 - 02-AUG-2003 / 32: 5.64487 - 01-SEP-2003 / 33: 6.12160 - 02-OCT-2003 / 34: 6.39571 - 01-NOV-2003 / 35: 6.42950 - 02-DEC-2003 / 36: 6.20977 - 01-JAN-2004 / 37: 5.75771 - 01-FEB-2004 / 38: 5.17681 - 02-MAR-2004 / 39: 4.55453 - 02-APR-2004 / 40: 3.98248 - 02-MAY-2004 / 41: 3.59793 - 01-JUN-2004 / 42: 3.45004 - 02-JUL-2004 / 43: 3.57784 - 01-AUG-2004 / 44: 3.97035 - 01-SEP-2004 / 45: 4.55922 - 01-OCT-2004 / 46: 5.21611 - 01-NOV-2004 / 47: 5.86370 - 01-DEC-2004 / 48: 6.34797 - 31-DEC-2004 / 49: 6.60908 - 31-JAN-2005 / 50: 6.58221 - 02-MAR-2005 / 51: 6.29531 - 02-APR-2005 / 52: 5.75513 - 02-MAY-2005 / 53: 5.09240 - 02-JUN-2005 / 54: 4.38446 - 02-JUL-2005 / 55: 3.79868 - 02-AUG-2005 / 56: 3.40595 - 01-SEP-2005 / 57: 3.30296 - 01-OCT-2005 / 58: 3.50035 - 01-NOV-2005 / 59: 3.97774 - 01-DEC-2005 / 60: 4.62476 - 01-JAN-2006 / 61: 5.36631 - 31-JAN-2006 / 62: 6.02768 - 03-MAR-2006 / 63: 6.50493 - 02-APR-2006 / 64: 6.74956 - 02-MAY-2006 / 65: 6.68160 - 02-JUN-2006 / 66: 6.30642 - 02-JUL-2006 / 67: .... - 02-AUG-2006 / 68: .... - 01-SEP-2006 / 69: .... - 02-OCT-2006 / 70: .... - 01-NOV-2006 / 71: .... - 02-DEC-2006 / 72: .... - 01-JAN-2007 / 73: 5.28216 - 31-JAN-2007 / 74: 4.91316 - 03-MAR-2007 / 75: 4.93575 - 02-APR-2007 / 76: 5.13795 - 03-MAY-2007 / 77: 5.40425 - 02-JUN-2007 / 78: 5.65764 - 03-JUL-2007 / 79: 5.80588 - 02-AUG-2007 / 80: 5.80580 - 01-SEP-2007 / 81: 5.63212 - 02-OCT-2007 / 82: 5.31885 - 01-NOV-2007 / 83: 4.90021 - 02-DEC-2007 / 84: 4.47828 - 01-JAN-2008 / 85: 4.11104 - 01-FEB-2008 / 86: 3.89561 - 02-MAR-2008 / 87: 3.86670 - 02-APR-2008 / 88: 4.04843 - 02-MAY-2008 / 89: 4.40589 - 01-JUN-2008 / 90: 4.90171 - 02-JUL-2008 / 91: 5.41997 - 01-AUG-2008 / 92: 5.89696 - 01-SEP-2008 / 93: 6.22250 - 01-OCT-2008 / 94: 6.32998 - 01-NOV-2008 / 95: 6.19939 - 01-DEC-2008 / 96: 5.85530 - 31-DEC-2008 / 97: 5.33369 - 31-JAN-2009 / 98: 4.75543 - 02-MAR-2009 / 99: 4.22266 - 02-APR-2009 / 100: 3.78213 - 02-MAY-2009 / 101: 3.56132 - 02-JUN-2009 / 102: 3.59159 - 02-JUL-2009 / 103: 3.87084 - 01-AUG-2009 / 104: 4.37044 - 01-SEP-2009 / 105: 4.99626 - 01-OCT-2009 / 106: 5.61464 - 01-NOV-2009 / 107: 6.15138 - 01-DEC-2009 / 108: 6.47723 - 01-JAN-2010 / 109: 6.54981 - 31-JAN-2010 / 110: 6.34792 - 03-MAR-2010 / 111: 5.92721 - 02-APR-2010 / 112: 5.30720 - 02-MAY-2010 / 113: 4.64348 - 02-JUN-2010 / 114: 4.01454 - 02-JUL-2010 / 115: 3.57023 - 02-AUG-2010 / 116: 3.36582 - 01-SEP-2010 / 117: 3.46052 - 02-OCT-2010 / 118: 3.82435 - 01-NOV-2010 / 119: 4.41723 - 01-DEC-2010 / 120: 5.10114 - 01-JAN-2011 / 121: 5.79586 - 31-JAN-2011 / 122: 6.33679 - 03-MAR-2011 / 123: 6.64611 - 02-APR-2011 / 124: 6.68541 - 03-MAY-2011 / 125: 6.42771 - 02-JUN-2011 / 126: 5.90065 - 03-JUL-2011 / 127: 5.22649 - 02-AUG-2011 / 128: 4.48378 - 01-SEP-2011 / 129: 3.82933 - 02-OCT-2011 / 130: 3.39470 - 01-NOV-2011 / 131: 3.23332 - 02-DEC-2011 / 132: 3.38570 - 01-JAN-2012 / 133: .... - 01-FEB-2012 / 134: .... - 02-MAR-2012 / 135: .... - 01-APR-2012 / 136: .... - 02-MAY-2012 / 137: .... - 01-JUN-2012 / 138: .... - 02-JUL-2012 / 139: 4.67323 - 01-AUG-2012 / 140: 5.13185 - 01-SEP-2012 / 141: 5.17560 - 01-OCT-2012 / 142: 5.02177 - 01-NOV-2012 / 143: 4.75087 - 01-DEC-2012 / 144: 4.46517 - 31-DEC-2012 / 145: 4.23079 - 31-JAN-2013 / 146: 4.12877 - 02-MAR-2013 / 147: 4.18270 - 02-APR-2013 / 148: 4.41019 - 02-MAY-2013 / 149: 4.76628 - 02-JUN-2013 / 150: 5.21047 - 02-JUL-2013 / 151: 5.63414 - 01-AUG-2013 / 152: 5.97904 - 01-SEP-2013 / 153: 6.15628 - 01-OCT-2013 / 154: 6.12656 - 01-NOV-2013 / 155: 5.88363 - 01-DEC-2013 / 156: 5.47793 - 01-JAN-2014 / 157: 4.95365 - 31-JAN-2014 / 158: 4.43430 - 03-MAR-2014 / 159: 4.00892 - 02-APR-2014 / 160: 3.72098 - 02-MAY-2014 / 161: 3.66143 - 02-JUN-2014 / 162: 3.84430 - 02-JUL-2014 / 163: 4.23222 - 02-AUG-2014 / 164: 4.78344 - 01-SEP-2014 / 165: 5.38881 - 02-OCT-2014 / 166: 5.92058 - 01-NOV-2014 / 167: 6.31288 - 01-DEC-2014 / 168: 6.46882 - 01-JAN-2015 / 169: 6.36477 - 31-JAN-2015 / 170: 6.02049 - 03-MAR-2015 / 171: 5.51225 - 02-APR-2015 / 172: 4.86979 - 03-MAY-2015 / 173: 4.25906 - 02-JUN-2015 / 174: 3.75369 - 03-JUL-2015 / 175: 3.47572 - 02-AUG-2015 / 176: 3.46192 - 01-SEP-2015 / 177: 3.73235 - 02-OCT-2015 / 178: 4.22178 - 01-NOV-2015 / 179: 4.87495 - 02-DEC-2015 / 180: 5.53889 - 01-JAN-2016 / 181: 6.13465 - 01-FEB-2016 / 182: 6.51992 - 02-MAR-2016 / 183: 6.64687 - 01-APR-2016 / 184: 6.48047 - 02-MAY-2016 / 185: 6.05679 - 01-JUN-2016 / 186: 5.42322 - 02-JUL-2016 / 187: 4.72767 - 01-AUG-2016 / 188: 4.05207 - 01-SEP-2016 / 189: 3.54408 - 01-OCT-2016 / 190: 3.30238 - 01-NOV-2016 / 191: 3.35833 - 01-DEC-2016 / 192: 3.70156 - 31-DEC-2016 / 193: 4.29414 - 31-JAN-2017 / 194: 4.99806 - 02-MAR-2017 / 195: 5.68610 - 02-APR-2017 / 196: 6.30291 - 02-MAY-2017 / 197: 6.67741 - 02-JUN-2017 / 198: 6.76315 - 02-JUL-2017 / 199: .... - 01-AUG-2017 / 200: .... - 01-SEP-2017 / 201: .... - 01-OCT-2017 / 202: .... - 01-NOV-2017 / 203: .... - 01-DEC-2017 / 204: .... - 01-JAN-2018 / 205: 5.33684 - 31-JAN-2018 / 206: 4.85056 - 02-MAR-2018 / 207: 4.72718 - 02-APR-2018 / 208: 4.80719 - 02-MAY-2018 / 209: 5.03077 - 02-JUN-2018 / 210: 5.33849 - 02-JUL-2018 / 211: 5.63022 - 02-AUG-2018 / 212: 5.84520 - 01-SEP-2018 / 213: 5.91006 - 02-OCT-2018 / 214: 5.80079 - 01-NOV-2018 / 215: 5.51786 - 01-DEC-2018 / 216: 5.12204 - 01-JAN-2019 / 217: 4.65981 - 31-JAN-2019 / 218: 4.24476 - 03-MAR-2019 / 219: 3.94924 - 02-APR-2019 / 220: 3.81224 - 03-MAY-2019 / 221: 3.88844 - 02-JUN-2019 / 222: 4.17776 - 02-JUL-2019 / 223: 4.61799 - 02-AUG-2019 / 224: 5.16008 - 01-SEP-2019 / 225: 5.69162 - 02-OCT-2019 / 226: 6.10043 - 01-NOV-2019 / 227: 6.33247 - 02-DEC-2019 / 228: 6.32654 - 01-JAN-2020 / 229: 6.07672 - 01-FEB-2020 / 230: 5.63675 - 02-MAR-2020 / 231: 5.07494 - 01-APR-2020 / 232: 4.46827 - 02-MAY-2020 / 233: 3.96111 - 01-JUN-2020 / 234: 3.61676 - 02-JUL-2020 / 235: 3.52089 - 01-AUG-2020 / 236: 3.68995 - 01-SEP-2020 / 237: 4.10515 - 01-OCT-2020 / 238: 4.67309 - 31-OCT-2020 / 239: 5.32841 - 01-DEC-2020 / 240: 5.91642 - 31-DEC-2020 / 241: 6.36574 - 31-JAN-2021 / 242: 6.56725 - 02-MAR-2021 / 243: 6.50670 - 02-APR-2021 / 244: 6.17205 - 02-MAY-2021 / 245: 5.63651 - 02-JUN-2021 / 246: 4.96113 - 02-JUL-2021 / 247: 4.30451 - 01-AUG-2021 / 248: 3.74505 - 01-SEP-2021 / 249: 3.41025 - 01-OCT-2021 / 250: 3.36147 - 01-NOV-2021 / 251: 3.60787 - 01-DEC-2021 / 252: 4.09437 - 01-JAN-2022 / 253: 4.76586 - 31-JAN-2022 / 254: 5.46513 - 02-MAR-2022 / 255: 6.07274 - 02-APR-2022 / 256: 6.53501 - 02-MAY-2022 / 257: 6.71797 - 02-JUN-2022 / 258: 6.59715 - 02-JUL-2022 / 259: 6.19828 - 02-AUG-2022 / 260: 5.56605 - 01-SEP-2022 / 261: 4.82373 - 02-OCT-2022 / 262: 4.12851 - 01-NOV-2022 / 263: 3.56317 - 01-DEC-2022 / 264: 3.26260 - 01-JAN-2023 / 265: .... - 31-JAN-2023 / 266: .... - 03-MAR-2023 / 267: .... - 02-APR-2023 / 268: .... - 03-MAY-2023 / 269: .... - 02-JUN-2023 / 270: .... - 02-JUL-2023 / 271: .... - 02-AUG-2023 / 272: .... - 01-SEP-2023 / 273: .... - 02-OCT-2023 / 274: .... - 01-NOV-2023 / 275: .... - 02-DEC-2023 / 276: .... - 01-JAN-2024 / 277: .... - 01-FEB-2024 / 278: .... - 02-MAR-2024 / 279: .... - 01-APR-2024 / 280: .... - 02-MAY-2024 / 281: .... - 01-JUN-2024 / 282: .... - 02-JUL-2024 / 283: .... - 01-AUG-2024 / 284: .... - 01-SEP-2024 / 285: .... - 01-OCT-2024 / 286: .... - 31-OCT-2024 / 287: .... - 01-DEC-2024 / 288: .... - 31-DEC-2024 / 289: .... - 31-JAN-2025 / 290: .... -CANCEL DATA timeagg -CANCEL AXIS tax - -! try a completely different time axis (should use @ASN to match) -DEFINE AXIS /UNITS=DAYS /T0=01-JAN-1900 /T=01-JAN-1950:01-JAN-1975:`365.2425/12.0` tax - !-> DEFINE AXIS /UNITS=DAYS /T0=01-JAN-1900 /T=01-JAN-1950:01-JAN-1975:30.436875 tax -DEFINE DATA /AGGREGATE /HIDE /T /TAXIS=tax timeagg = aggfiles -! should only show gaps (missing values) after -LIST /PREC=6 /X=12E /Y=12S /Z=5.0 value - VARIABLE : forecasted value - FILENAME : timeagg - SUBSET : 301 points (TIME) - LONGITUDE: 12E - LATITUDE : 12S - Z (m) : 5 - 12E - 3 - 01-JAN-1950 / 1: 4.78548 - 31-JAN-1950 / 2: 5.04331 - 02-MAR-1950 / 3: 4.93140 - 02-APR-1950 / 4: 4.69806 - 02-MAY-1950 / 5: 4.44249 - 02-JUN-1950 / 6: 4.26702 - 02-JUL-1950 / 7: 4.22320 - 02-AUG-1950 / 8: 4.34140 - 01-SEP-1950 / 9: 4.59768 - 01-OCT-1950 / 10: 4.98267 - 01-NOV-1950 / 11: 5.39659 - 01-DEC-1950 / 12: 5.78261 - 01-JAN-1951 / 13: 6.03890 - 31-JAN-1951 / 14: 6.12264 - 03-MAR-1951 / 15: 5.99540 - 02-APR-1951 / 16: 5.68400 - 02-MAY-1951 / 17: 5.21932 - 02-JUN-1951 / 18: 4.70907 - 02-JUL-1951 / 19: 4.21538 - 02-AUG-1951 / 20: 3.85940 - 01-SEP-1951 / 21: 3.69402 - 02-OCT-1951 / 22: 3.74898 - 01-NOV-1951 / 23: 4.02725 - 02-DEC-1951 / 24: 4.50141 - 01-JAN-1952 / 25: 5.06258 - 31-JAN-1952 / 26: 5.64487 - 02-MAR-1952 / 27: 6.12160 - 01-APR-1952 / 28: 6.39571 - 02-MAY-1952 / 29: 6.42950 - 01-JUN-1952 / 30: 6.20977 - 02-JUL-1952 / 31: 5.75771 - 01-AUG-1952 / 32: 5.17681 - 31-AUG-1952 / 33: 4.55453 - 01-OCT-1952 / 34: 3.98248 - 31-OCT-1952 / 35: 3.59793 - 01-DEC-1952 / 36: 3.45004 - 31-DEC-1952 / 37: 3.57784 - 31-JAN-1953 / 38: 3.97035 - 02-MAR-1953 / 39: 4.55922 - 02-APR-1953 / 40: 5.21611 - 02-MAY-1953 / 41: 5.86370 - 01-JUN-1953 / 42: 6.34797 - 02-JUL-1953 / 43: 6.60908 - 01-AUG-1953 / 44: 6.58221 - 01-SEP-1953 / 45: 6.29531 - 01-OCT-1953 / 46: 5.75513 - 01-NOV-1953 / 47: 5.09240 - 01-DEC-1953 / 48: 4.38446 - 31-DEC-1953 / 49: 3.79868 - 31-JAN-1954 / 50: 3.40595 - 02-MAR-1954 / 51: 3.30296 - 02-APR-1954 / 52: 3.50035 - 02-MAY-1954 / 53: 3.97774 - 02-JUN-1954 / 54: 4.62476 - 02-JUL-1954 / 55: 5.36631 - 02-AUG-1954 / 56: 6.02768 - 01-SEP-1954 / 57: 6.50493 - 01-OCT-1954 / 58: 6.74956 - 01-NOV-1954 / 59: 6.68160 - 01-DEC-1954 / 60: 6.30642 - 01-JAN-1955 / 61: 5.28216 - 31-JAN-1955 / 62: 4.91316 - 03-MAR-1955 / 63: 4.93575 - 02-APR-1955 / 64: 5.13795 - 02-MAY-1955 / 65: 5.40425 - 02-JUN-1955 / 66: 5.65764 - 02-JUL-1955 / 67: 5.80588 - 02-AUG-1955 / 68: 5.80580 - 01-SEP-1955 / 69: 5.63212 - 02-OCT-1955 / 70: 5.31885 - 01-NOV-1955 / 71: 4.90021 - 02-DEC-1955 / 72: 4.47828 - 01-JAN-1956 / 73: 4.11104 - 31-JAN-1956 / 74: 3.89561 - 02-MAR-1956 / 75: 3.86670 - 01-APR-1956 / 76: 4.04843 - 02-MAY-1956 / 77: 4.40589 - 01-JUN-1956 / 78: 4.90171 - 02-JUL-1956 / 79: 5.41997 - 01-AUG-1956 / 80: 5.89696 - 31-AUG-1956 / 81: 6.22250 - 01-OCT-1956 / 82: 6.32998 - 31-OCT-1956 / 83: 6.19939 - 01-DEC-1956 / 84: 5.85530 - 31-DEC-1956 / 85: 5.33369 - 31-JAN-1957 / 86: 4.75543 - 02-MAR-1957 / 87: 4.22266 - 02-APR-1957 / 88: 3.78213 - 02-MAY-1957 / 89: 3.56132 - 01-JUN-1957 / 90: 3.59159 - 02-JUL-1957 / 91: 3.87084 - 01-AUG-1957 / 92: 4.37044 - 01-SEP-1957 / 93: 4.99626 - 01-OCT-1957 / 94: 5.61464 - 01-NOV-1957 / 95: 6.15138 - 01-DEC-1957 / 96: 6.47723 - 31-DEC-1957 / 97: 6.54981 - 31-JAN-1958 / 98: 6.34792 - 02-MAR-1958 / 99: 5.92721 - 02-APR-1958 / 100: 5.30720 - 02-MAY-1958 / 101: 4.64348 - 02-JUN-1958 / 102: 4.01454 - 02-JUL-1958 / 103: 3.57023 - 01-AUG-1958 / 104: 3.36582 - 01-SEP-1958 / 105: 3.46052 - 01-OCT-1958 / 106: 3.82435 - 01-NOV-1958 / 107: 4.41723 - 01-DEC-1958 / 108: 5.10114 - 01-JAN-1959 / 109: 5.79586 - 31-JAN-1959 / 110: 6.33679 - 03-MAR-1959 / 111: 6.64611 - 02-APR-1959 / 112: 6.68541 - 02-MAY-1959 / 113: 6.42771 - 02-JUN-1959 / 114: 5.90065 - 02-JUL-1959 / 115: 5.22649 - 02-AUG-1959 / 116: 4.48378 - 01-SEP-1959 / 117: 3.82933 - 02-OCT-1959 / 118: 3.39470 - 01-NOV-1959 / 119: 3.23332 - 01-DEC-1959 / 120: 3.38570 - 01-JAN-1960 / 121: 4.67323 - 31-JAN-1960 / 122: 5.13185 - 02-MAR-1960 / 123: 5.17560 - 01-APR-1960 / 124: 5.02177 - 02-MAY-1960 / 125: 4.75087 - 01-JUN-1960 / 126: 4.46517 - 02-JUL-1960 / 127: 4.23079 - 01-AUG-1960 / 128: 4.12877 - 31-AUG-1960 / 129: 4.18270 - 01-OCT-1960 / 130: 4.41019 - 31-OCT-1960 / 131: 4.76628 - 01-DEC-1960 / 132: 5.21047 - 31-DEC-1960 / 133: 5.63414 - 31-JAN-1961 / 134: 5.97904 - 02-MAR-1961 / 135: 6.15628 - 01-APR-1961 / 136: 6.12656 - 02-MAY-1961 / 137: 5.88363 - 01-JUN-1961 / 138: 5.47793 - 02-JUL-1961 / 139: 4.95365 - 01-AUG-1961 / 140: 4.43430 - 01-SEP-1961 / 141: 4.00892 - 01-OCT-1961 / 142: 3.72098 - 01-NOV-1961 / 143: 3.66143 - 01-DEC-1961 / 144: 3.84430 - 31-DEC-1961 / 145: 4.23222 - 31-JAN-1962 / 146: 4.78344 - 02-MAR-1962 / 147: 5.38881 - 02-APR-1962 / 148: 5.92058 - 02-MAY-1962 / 149: 6.31288 - 02-JUN-1962 / 150: 6.46882 - 02-JUL-1962 / 151: 6.36477 - 01-AUG-1962 / 152: 6.02049 - 01-SEP-1962 / 153: 5.51225 - 01-OCT-1962 / 154: 4.86979 - 01-NOV-1962 / 155: 4.25906 - 01-DEC-1962 / 156: 3.75369 - 01-JAN-1963 / 157: 3.47572 - 31-JAN-1963 / 158: 3.46192 - 03-MAR-1963 / 159: 3.73235 - 02-APR-1963 / 160: 4.22178 - 02-MAY-1963 / 161: 4.87495 - 02-JUN-1963 / 162: 5.53889 - 02-JUL-1963 / 163: 6.13465 - 02-AUG-1963 / 164: 6.51992 - 01-SEP-1963 / 165: 6.64687 - 02-OCT-1963 / 166: 6.48047 - 01-NOV-1963 / 167: 6.05679 - 01-DEC-1963 / 168: 5.42322 - 01-JAN-1964 / 169: 4.72767 - 31-JAN-1964 / 170: 4.05207 - 02-MAR-1964 / 171: 3.54408 - 01-APR-1964 / 172: 3.30238 - 02-MAY-1964 / 173: 3.35833 - 01-JUN-1964 / 174: 3.70156 - 02-JUL-1964 / 175: 4.29414 - 01-AUG-1964 / 176: 4.99806 - 31-AUG-1964 / 177: 5.68610 - 01-OCT-1964 / 178: 6.30291 - 31-OCT-1964 / 179: 6.67741 - 01-DEC-1964 / 180: 6.76315 - 31-DEC-1964 / 181: 5.33684 - 31-JAN-1965 / 182: 4.85056 - 02-MAR-1965 / 183: 4.72718 - 01-APR-1965 / 184: 4.80719 - 02-MAY-1965 / 185: 5.03077 - 01-JUN-1965 / 186: 5.33849 - 02-JUL-1965 / 187: 5.63022 - 01-AUG-1965 / 188: 5.84520 - 01-SEP-1965 / 189: 5.91006 - 01-OCT-1965 / 190: 5.80079 - 01-NOV-1965 / 191: 5.51786 - 01-DEC-1965 / 192: 5.12204 - 31-DEC-1965 / 193: 4.65981 - 31-JAN-1966 / 194: 4.24476 - 02-MAR-1966 / 195: 3.94924 - 02-APR-1966 / 196: 3.81224 - 02-MAY-1966 / 197: 3.88844 - 02-JUN-1966 / 198: 4.17776 - 02-JUL-1966 / 199: 4.61799 - 01-AUG-1966 / 200: 5.16008 - 01-SEP-1966 / 201: 5.69162 - 01-OCT-1966 / 202: 6.10043 - 01-NOV-1966 / 203: 6.33247 - 01-DEC-1966 / 204: 6.32654 - 01-JAN-1967 / 205: 6.07672 - 31-JAN-1967 / 206: 5.63675 - 02-MAR-1967 / 207: 5.07494 - 02-APR-1967 / 208: 4.46827 - 02-MAY-1967 / 209: 3.96111 - 02-JUN-1967 / 210: 3.61676 - 02-JUL-1967 / 211: 3.52089 - 02-AUG-1967 / 212: 3.68995 - 01-SEP-1967 / 213: 4.10515 - 02-OCT-1967 / 214: 4.67309 - 01-NOV-1967 / 215: 5.32841 - 01-DEC-1967 / 216: 5.91642 - 01-JAN-1968 / 217: 6.36574 - 31-JAN-1968 / 218: 6.56725 - 02-MAR-1968 / 219: 6.50670 - 01-APR-1968 / 220: 6.17205 - 02-MAY-1968 / 221: 5.63651 - 01-JUN-1968 / 222: 4.96113 - 01-JUL-1968 / 223: 4.30451 - 01-AUG-1968 / 224: 3.74505 - 31-AUG-1968 / 225: 3.41025 - 01-OCT-1968 / 226: 3.36147 - 31-OCT-1968 / 227: 3.60787 - 01-DEC-1968 / 228: 4.09437 - 31-DEC-1968 / 229: 4.76586 - 31-JAN-1969 / 230: 5.46513 - 02-MAR-1969 / 231: 6.07274 - 01-APR-1969 / 232: 6.53501 - 02-MAY-1969 / 233: 6.71797 - 01-JUN-1969 / 234: 6.59715 - 02-JUL-1969 / 235: 6.19828 - 01-AUG-1969 / 236: 5.56605 - 01-SEP-1969 / 237: 4.82373 - 01-OCT-1969 / 238: 4.12851 - 31-OCT-1969 / 239: 3.56317 - 01-DEC-1969 / 240: 3.26260 - 31-DEC-1969 / 241: .... - 31-JAN-1970 / 242: .... - 02-MAR-1970 / 243: .... - 02-APR-1970 / 244: .... - 02-MAY-1970 / 245: .... - 02-JUN-1970 / 246: .... - 02-JUL-1970 / 247: .... - 01-AUG-1970 / 248: .... - 01-SEP-1970 / 249: .... - 01-OCT-1970 / 250: .... - 01-NOV-1970 / 251: .... - 01-DEC-1970 / 252: .... - 01-JAN-1971 / 253: .... - 31-JAN-1971 / 254: .... - 02-MAR-1971 / 255: .... - 02-APR-1971 / 256: .... - 02-MAY-1971 / 257: .... - 02-JUN-1971 / 258: .... - 02-JUL-1971 / 259: .... - 02-AUG-1971 / 260: .... - 01-SEP-1971 / 261: .... - 02-OCT-1971 / 262: .... - 01-NOV-1971 / 263: .... - 01-DEC-1971 / 264: .... - 01-JAN-1972 / 265: .... - 31-JAN-1972 / 266: .... - 02-MAR-1972 / 267: .... - 01-APR-1972 / 268: .... - 02-MAY-1972 / 269: .... - 01-JUN-1972 / 270: .... - 01-JUL-1972 / 271: .... - 01-AUG-1972 / 272: .... - 31-AUG-1972 / 273: .... - 01-OCT-1972 / 274: .... - 31-OCT-1972 / 275: .... - 01-DEC-1972 / 276: .... - 31-DEC-1972 / 277: .... - 31-JAN-1973 / 278: .... - 02-MAR-1973 / 279: .... - 01-APR-1973 / 280: .... - 02-MAY-1973 / 281: .... - 01-JUN-1973 / 282: .... - 02-JUL-1973 / 283: .... - 01-AUG-1973 / 284: .... - 01-SEP-1973 / 285: .... - 01-OCT-1973 / 286: .... - 31-OCT-1973 / 287: .... - 01-DEC-1973 / 288: .... - 31-DEC-1973 / 289: .... - 31-JAN-1974 / 290: .... - 02-MAR-1974 / 291: .... - 02-APR-1974 / 292: .... - 02-MAY-1974 / 293: .... - 02-JUN-1974 / 294: .... - 02-JUL-1974 / 295: .... - 01-AUG-1974 / 296: .... - 01-SEP-1974 / 297: .... - 01-OCT-1974 / 298: .... - 01-NOV-1974 / 299: .... - 01-DEC-1974 / 300: .... - 01-JAN-1975 / 301: .... -CANCEL DATA timeagg -CANCEL AXIS tax - -! try without an axis -DEFINE DATA /AGGREGATE /HIDE /T timeagg = aggfiles -! no gaps (missing values) but time axis JUL-2001 -> DEC 2022 with half of 2006, 2012, 2017 -LIST /PREC=6 /X=12E /Y=12S /Z=5.0 value - VARIABLE : forecasted value - FILENAME : timeagg - SUBSET : 240 points (TIME) - LONGITUDE: 12E - LATITUDE : 12S - Z (m) : 5 - 12E - 3 - 15-JUL-2001 00 / 1: 4.78548 - 15-AUG-2001 00 / 2: 5.04331 - 15-SEP-2001 00 / 3: 4.93140 - 15-OCT-2001 00 / 4: 4.69806 - 15-NOV-2001 00 / 5: 4.44249 - 15-DEC-2001 00 / 6: 4.26702 - 15-JAN-2002 00 / 7: 4.22320 - 14-FEB-2002 00 / 8: 4.34140 - 15-MAR-2002 00 / 9: 4.59768 - 15-APR-2002 00 / 10: 4.98267 - 15-MAY-2002 00 / 11: 5.39659 - 15-JUN-2002 00 / 12: 5.78261 - 15-JUL-2002 00 / 13: 6.03890 - 15-AUG-2002 00 / 14: 6.12264 - 15-SEP-2002 00 / 15: 5.99540 - 15-OCT-2002 00 / 16: 5.68400 - 15-NOV-2002 00 / 17: 5.21932 - 15-DEC-2002 00 / 18: 4.70907 - 15-JAN-2003 00 / 19: 4.21538 - 14-FEB-2003 00 / 20: 3.85940 - 15-MAR-2003 00 / 21: 3.69402 - 15-APR-2003 00 / 22: 3.74898 - 15-MAY-2003 00 / 23: 4.02725 - 15-JUN-2003 00 / 24: 4.50141 - 15-JUL-2003 00 / 25: 5.06258 - 15-AUG-2003 00 / 26: 5.64487 - 15-SEP-2003 00 / 27: 6.12160 - 15-OCT-2003 00 / 28: 6.39571 - 15-NOV-2003 00 / 29: 6.42950 - 15-DEC-2003 00 / 30: 6.20977 - 15-JAN-2004 00 / 31: 5.75771 - 14-FEB-2004 00 / 32: 5.17681 - 15-MAR-2004 00 / 33: 4.55453 - 15-APR-2004 00 / 34: 3.98248 - 15-MAY-2004 00 / 35: 3.59793 - 15-JUN-2004 00 / 36: 3.45004 - 15-JUL-2004 00 / 37: 3.57784 - 15-AUG-2004 00 / 38: 3.97035 - 15-SEP-2004 00 / 39: 4.55922 - 15-OCT-2004 00 / 40: 5.21611 - 15-NOV-2004 00 / 41: 5.86370 - 15-DEC-2004 00 / 42: 6.34797 - 15-JAN-2005 00 / 43: 6.60908 - 14-FEB-2005 00 / 44: 6.58221 - 15-MAR-2005 00 / 45: 6.29531 - 15-APR-2005 00 / 46: 5.75513 - 15-MAY-2005 00 / 47: 5.09240 - 15-JUN-2005 00 / 48: 4.38446 - 15-JUL-2005 00 / 49: 3.79868 - 15-AUG-2005 00 / 50: 3.40595 - 15-SEP-2005 00 / 51: 3.30296 - 15-OCT-2005 00 / 52: 3.50035 - 15-NOV-2005 00 / 53: 3.97774 - 15-DEC-2005 00 / 54: 4.62476 - 15-JAN-2006 00 / 55: 5.36631 - 14-FEB-2006 00 / 56: 6.02768 - 15-MAR-2006 00 / 57: 6.50493 - 15-APR-2006 00 / 58: 6.74956 - 15-MAY-2006 00 / 59: 6.68160 - 15-JUN-2006 00 / 60: 6.30642 - 15-JAN-2007 00 / 61: 5.28216 - 14-FEB-2007 00 / 62: 4.91316 - 15-MAR-2007 00 / 63: 4.93575 - 15-APR-2007 00 / 64: 5.13795 - 15-MAY-2007 00 / 65: 5.40425 - 15-JUN-2007 00 / 66: 5.65764 - 15-JUL-2007 00 / 67: 5.80588 - 15-AUG-2007 00 / 68: 5.80580 - 15-SEP-2007 00 / 69: 5.63212 - 15-OCT-2007 00 / 70: 5.31885 - 15-NOV-2007 00 / 71: 4.90021 - 15-DEC-2007 00 / 72: 4.47828 - 15-JAN-2008 00 / 73: 4.11104 - 14-FEB-2008 00 / 74: 3.89561 - 15-MAR-2008 00 / 75: 3.86670 - 15-APR-2008 00 / 76: 4.04843 - 15-MAY-2008 00 / 77: 4.40589 - 15-JUN-2008 00 / 78: 4.90171 - 15-JUL-2008 00 / 79: 5.41997 - 15-AUG-2008 00 / 80: 5.89696 - 15-SEP-2008 00 / 81: 6.22250 - 15-OCT-2008 00 / 82: 6.32998 - 15-NOV-2008 00 / 83: 6.19939 - 15-DEC-2008 00 / 84: 5.85530 - 15-JAN-2009 00 / 85: 5.33369 - 14-FEB-2009 00 / 86: 4.75543 - 15-MAR-2009 00 / 87: 4.22266 - 15-APR-2009 00 / 88: 3.78213 - 15-MAY-2009 00 / 89: 3.56132 - 15-JUN-2009 00 / 90: 3.59159 - 15-JUL-2009 00 / 91: 3.87084 - 15-AUG-2009 00 / 92: 4.37044 - 15-SEP-2009 00 / 93: 4.99626 - 15-OCT-2009 00 / 94: 5.61464 - 15-NOV-2009 00 / 95: 6.15138 - 15-DEC-2009 00 / 96: 6.47723 - 15-JAN-2010 00 / 97: 6.54981 - 14-FEB-2010 00 / 98: 6.34792 - 15-MAR-2010 00 / 99: 5.92721 - 15-APR-2010 00 / 100: 5.30720 - 15-MAY-2010 00 / 101: 4.64348 - 15-JUN-2010 00 / 102: 4.01454 - 15-JUL-2010 00 / 103: 3.57023 - 15-AUG-2010 00 / 104: 3.36582 - 15-SEP-2010 00 / 105: 3.46052 - 15-OCT-2010 00 / 106: 3.82435 - 15-NOV-2010 00 / 107: 4.41723 - 15-DEC-2010 00 / 108: 5.10114 - 15-JAN-2011 00 / 109: 5.79586 - 14-FEB-2011 00 / 110: 6.33679 - 15-MAR-2011 00 / 111: 6.64611 - 15-APR-2011 00 / 112: 6.68541 - 15-MAY-2011 00 / 113: 6.42771 - 15-JUN-2011 00 / 114: 5.90065 - 15-JUL-2011 00 / 115: 5.22649 - 15-AUG-2011 00 / 116: 4.48378 - 15-SEP-2011 00 / 117: 3.82933 - 15-OCT-2011 00 / 118: 3.39470 - 15-NOV-2011 00 / 119: 3.23332 - 15-DEC-2011 00 / 120: 3.38570 - 15-JUL-2012 00 / 121: 4.67323 - 15-AUG-2012 00 / 122: 5.13185 - 15-SEP-2012 00 / 123: 5.17560 - 15-OCT-2012 00 / 124: 5.02177 - 15-NOV-2012 00 / 125: 4.75087 - 15-DEC-2012 00 / 126: 4.46517 - 15-JAN-2013 00 / 127: 4.23079 - 14-FEB-2013 00 / 128: 4.12877 - 15-MAR-2013 00 / 129: 4.18270 - 15-APR-2013 00 / 130: 4.41019 - 15-MAY-2013 00 / 131: 4.76628 - 15-JUN-2013 00 / 132: 5.21047 - 15-JUL-2013 00 / 133: 5.63414 - 15-AUG-2013 00 / 134: 5.97904 - 15-SEP-2013 00 / 135: 6.15628 - 15-OCT-2013 00 / 136: 6.12656 - 15-NOV-2013 00 / 137: 5.88363 - 15-DEC-2013 00 / 138: 5.47793 - 15-JAN-2014 00 / 139: 4.95365 - 14-FEB-2014 00 / 140: 4.43430 - 15-MAR-2014 00 / 141: 4.00892 - 15-APR-2014 00 / 142: 3.72098 - 15-MAY-2014 00 / 143: 3.66143 - 15-JUN-2014 00 / 144: 3.84430 - 15-JUL-2014 00 / 145: 4.23222 - 15-AUG-2014 00 / 146: 4.78344 - 15-SEP-2014 00 / 147: 5.38881 - 15-OCT-2014 00 / 148: 5.92058 - 15-NOV-2014 00 / 149: 6.31288 - 15-DEC-2014 00 / 150: 6.46882 - 15-JAN-2015 00 / 151: 6.36477 - 14-FEB-2015 00 / 152: 6.02049 - 15-MAR-2015 00 / 153: 5.51225 - 15-APR-2015 00 / 154: 4.86979 - 15-MAY-2015 00 / 155: 4.25906 - 15-JUN-2015 00 / 156: 3.75369 - 15-JUL-2015 00 / 157: 3.47572 - 15-AUG-2015 00 / 158: 3.46192 - 15-SEP-2015 00 / 159: 3.73235 - 15-OCT-2015 00 / 160: 4.22178 - 15-NOV-2015 00 / 161: 4.87495 - 15-DEC-2015 00 / 162: 5.53889 - 15-JAN-2016 00 / 163: 6.13465 - 14-FEB-2016 00 / 164: 6.51992 - 15-MAR-2016 00 / 165: 6.64687 - 15-APR-2016 00 / 166: 6.48047 - 15-MAY-2016 00 / 167: 6.05679 - 15-JUN-2016 00 / 168: 5.42322 - 15-JUL-2016 00 / 169: 4.72767 - 15-AUG-2016 00 / 170: 4.05207 - 15-SEP-2016 00 / 171: 3.54408 - 15-OCT-2016 00 / 172: 3.30238 - 15-NOV-2016 00 / 173: 3.35833 - 15-DEC-2016 00 / 174: 3.70156 - 15-JAN-2017 00 / 175: 4.29414 - 14-FEB-2017 00 / 176: 4.99806 - 15-MAR-2017 00 / 177: 5.68610 - 15-APR-2017 00 / 178: 6.30291 - 15-MAY-2017 00 / 179: 6.67741 - 15-JUN-2017 00 / 180: 6.76315 - 15-JAN-2018 00 / 181: 5.33684 - 14-FEB-2018 00 / 182: 4.85056 - 15-MAR-2018 00 / 183: 4.72718 - 15-APR-2018 00 / 184: 4.80719 - 15-MAY-2018 00 / 185: 5.03077 - 15-JUN-2018 00 / 186: 5.33849 - 15-JUL-2018 00 / 187: 5.63022 - 15-AUG-2018 00 / 188: 5.84520 - 15-SEP-2018 00 / 189: 5.91006 - 15-OCT-2018 00 / 190: 5.80079 - 15-NOV-2018 00 / 191: 5.51786 - 15-DEC-2018 00 / 192: 5.12204 - 15-JAN-2019 00 / 193: 4.65981 - 14-FEB-2019 00 / 194: 4.24476 - 15-MAR-2019 00 / 195: 3.94924 - 15-APR-2019 00 / 196: 3.81224 - 15-MAY-2019 00 / 197: 3.88844 - 15-JUN-2019 00 / 198: 4.17776 - 15-JUL-2019 00 / 199: 4.61799 - 15-AUG-2019 00 / 200: 5.16008 - 15-SEP-2019 00 / 201: 5.69162 - 15-OCT-2019 00 / 202: 6.10043 - 15-NOV-2019 00 / 203: 6.33247 - 15-DEC-2019 00 / 204: 6.32654 - 15-JAN-2020 00 / 205: 6.07672 - 14-FEB-2020 00 / 206: 5.63675 - 15-MAR-2020 00 / 207: 5.07494 - 15-APR-2020 00 / 208: 4.46827 - 15-MAY-2020 00 / 209: 3.96111 - 15-JUN-2020 00 / 210: 3.61676 - 15-JUL-2020 00 / 211: 3.52089 - 15-AUG-2020 00 / 212: 3.68995 - 15-SEP-2020 00 / 213: 4.10515 - 15-OCT-2020 00 / 214: 4.67309 - 15-NOV-2020 00 / 215: 5.32841 - 15-DEC-2020 00 / 216: 5.91642 - 15-JAN-2021 00 / 217: 6.36574 - 14-FEB-2021 00 / 218: 6.56725 - 15-MAR-2021 00 / 219: 6.50670 - 15-APR-2021 00 / 220: 6.17205 - 15-MAY-2021 00 / 221: 5.63651 - 15-JUN-2021 00 / 222: 4.96113 - 15-JUL-2021 00 / 223: 4.30451 - 15-AUG-2021 00 / 224: 3.74505 - 15-SEP-2021 00 / 225: 3.41025 - 15-OCT-2021 00 / 226: 3.36147 - 15-NOV-2021 00 / 227: 3.60787 - 15-DEC-2021 00 / 228: 4.09437 - 15-JAN-2022 00 / 229: 4.76586 - 14-FEB-2022 00 / 230: 5.46513 - 15-MAR-2022 00 / 231: 6.07274 - 15-APR-2022 00 / 232: 6.53501 - 15-MAY-2022 00 / 233: 6.71797 - 15-JUN-2022 00 / 234: 6.59715 - 15-JUL-2022 00 / 235: 6.19828 - 15-AUG-2022 00 / 236: 5.56605 - 15-SEP-2022 00 / 237: 4.82373 - 15-OCT-2022 00 / 238: 4.12851 - 15-NOV-2022 00 / 239: 3.56317 - 15-DEC-2022 00 / 240: 3.26260 -CANCEL DATA timeagg - -CANCEL VAR aggfiles - - -GO bn_reset bn_tagg_overlaps -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_tagg_overlaps -GO bn_tagg_overlaps -! bn_tagg_overlaps.jnl -! test time aggregation where there are overlaps between data files - -LET twopi=8.0*ATAN(1.0) - -DEFINE AXIS /T=1-JAN-2009:1-JAN-2010:1 /UNITS=days /T0=1-JAN-2009 time -LET /TITLE=myvar var = COS(twopi * _T[gt=time]/365.0) -SAVE /CLOBBER /FILE=data2009.nc var - -DEFINE AXIS /T=1-JAN-2010:3-JAN-2011:1 /UNITS=days /T0=1-JAN-2010 time -LET /TITLE=myvar var = 10.0 + COS(twopi * _T[gt=time]/365.0) -SAVE /CLOBBER /FILE=data2010.nc var - -DEFINE AXIS /T=1-JAN-2011:1-JAN-2012:1 /UNITS=days /T0=1-JAN-2011 time -LET /TITLE=myvar var = 20.0 + COS(twopi * _T[gt=time]/365.0) -SAVE /CLOBBER /FILE=data2011.nc var - -CANCEL VAR /ALL - -! Cancel axis/all is problematic when running all the bench scripts as in bn_all.jnl -! CANCEL AXIS /ALL -CANCEL AXIS time - - -DEFINE AXIS /T=1-JAN-2009:31-JAN-2012:1 /UNIT=days /T0=01-JAN-2000 aggtime - -! Unlimited number of overlaps -DEFINE DATA /AGG /T /TOVERLAP /TAXIS=aggtime myagg = data2010.nc, data2009.nc, data2011.nc -LIST /PREC=8 var - VARIABLE : myvar - FILENAME : myagg - SUBSET : 1126 points (TIME) - 01-JAN-2009 00 / 1: 1.000000 - 02-JAN-2009 00 / 2: 0.999852 - 03-JAN-2009 00 / 3: 0.999407 - 04-JAN-2009 00 / 4: 0.998667 - 05-JAN-2009 00 / 5: 0.997630 - 06-JAN-2009 00 / 6: 0.996298 - 07-JAN-2009 00 / 7: 0.994671 - 08-JAN-2009 00 / 8: 0.992749 - 09-JAN-2009 00 / 9: 0.990532 - 10-JAN-2009 00 / 10: 0.988023 - 11-JAN-2009 00 / 11: 0.985220 - 12-JAN-2009 00 / 12: 0.982126 - 13-JAN-2009 00 / 13: 0.978740 - 14-JAN-2009 00 / 14: 0.975065 - 15-JAN-2009 00 / 15: 0.971100 - 16-JAN-2009 00 / 16: 0.966848 - 17-JAN-2009 00 / 17: 0.962309 - 18-JAN-2009 00 / 18: 0.957485 - 19-JAN-2009 00 / 19: 0.952378 - 20-JAN-2009 00 / 20: 0.946988 - 21-JAN-2009 00 / 21: 0.941317 - 22-JAN-2009 00 / 22: 0.935368 - 23-JAN-2009 00 / 23: 0.929141 - 24-JAN-2009 00 / 24: 0.922640 - 25-JAN-2009 00 / 25: 0.915864 - 26-JAN-2009 00 / 26: 0.908818 - 27-JAN-2009 00 / 27: 0.901502 - 28-JAN-2009 00 / 28: 0.893919 - 29-JAN-2009 00 / 29: 0.886071 - 30-JAN-2009 00 / 30: 0.877960 - 31-JAN-2009 00 / 31: 0.869589 - 01-FEB-2009 00 / 32: 0.860961 - 02-FEB-2009 00 / 33: 0.852078 - 03-FEB-2009 00 / 34: 0.842942 - 04-FEB-2009 00 / 35: 0.833556 - 05-FEB-2009 00 / 36: 0.823923 - 06-FEB-2009 00 / 37: 0.814046 - 07-FEB-2009 00 / 38: 0.803928 - 08-FEB-2009 00 / 39: 0.793572 - 09-FEB-2009 00 / 40: 0.782980 - 10-FEB-2009 00 / 41: 0.772157 - 11-FEB-2009 00 / 42: 0.761104 - 12-FEB-2009 00 / 43: 0.749826 - 13-FEB-2009 00 / 44: 0.738326 - 14-FEB-2009 00 / 45: 0.726608 - 15-FEB-2009 00 / 46: 0.714673 - 16-FEB-2009 00 / 47: 0.702527 - 17-FEB-2009 00 / 48: 0.690173 - 18-FEB-2009 00 / 49: 0.677615 - 19-FEB-2009 00 / 50: 0.664855 - 20-FEB-2009 00 / 51: 0.651899 - 21-FEB-2009 00 / 52: 0.638749 - 22-FEB-2009 00 / 53: 0.625411 - 23-FEB-2009 00 / 54: 0.611886 - 24-FEB-2009 00 / 55: 0.598181 - 25-FEB-2009 00 / 56: 0.584298 - 26-FEB-2009 00 / 57: 0.570242 - 27-FEB-2009 00 / 58: 0.556017 - 28-FEB-2009 00 / 59: 0.541628 - 01-MAR-2009 00 / 60: 0.527078 - 02-MAR-2009 00 / 61: 0.512371 - 03-MAR-2009 00 / 62: 0.497513 - 04-MAR-2009 00 / 63: 0.482508 - 05-MAR-2009 00 / 64: 0.467359 - 06-MAR-2009 00 / 65: 0.452072 - 07-MAR-2009 00 / 66: 0.436651 - 08-MAR-2009 00 / 67: 0.421101 - 09-MAR-2009 00 / 68: 0.405426 - 10-MAR-2009 00 / 69: 0.389630 - 11-MAR-2009 00 / 70: 0.373720 - 12-MAR-2009 00 / 71: 0.357698 - 13-MAR-2009 00 / 72: 0.341571 - 14-MAR-2009 00 / 73: 0.325342 - 15-MAR-2009 00 / 74: 0.309017 - 16-MAR-2009 00 / 75: 0.292600 - 17-MAR-2009 00 / 76: 0.276097 - 18-MAR-2009 00 / 77: 0.259512 - 19-MAR-2009 00 / 78: 0.242850 - 20-MAR-2009 00 / 79: 0.226116 - 21-MAR-2009 00 / 80: 0.209315 - 22-MAR-2009 00 / 81: 0.192452 - 23-MAR-2009 00 / 82: 0.175531 - 24-MAR-2009 00 / 83: 0.158559 - 25-MAR-2009 00 / 84: 0.141540 - 26-MAR-2009 00 / 85: 0.124479 - 27-MAR-2009 00 / 86: 0.107381 - 28-MAR-2009 00 / 87: 0.090252 - 29-MAR-2009 00 / 88: 0.073095 - 30-MAR-2009 00 / 89: 0.055917 - 31-MAR-2009 00 / 90: 0.038722 - 01-APR-2009 00 / 91: 0.021516 - 02-APR-2009 00 / 92: 0.004304 - 03-APR-2009 00 / 93: -0.012910 - 04-APR-2009 00 / 94: -0.030120 - 05-APR-2009 00 / 95: -0.047321 - 06-APR-2009 00 / 96: -0.064508 - 07-APR-2009 00 / 97: -0.081676 - 08-APR-2009 00 / 98: -0.098820 - 09-APR-2009 00 / 99: -0.115935 - 10-APR-2009 00 / 100: -0.133015 - 11-APR-2009 00 / 101: -0.150055 - 12-APR-2009 00 / 102: -0.167052 - 13-APR-2009 00 / 103: -0.183998 - 14-APR-2009 00 / 104: -0.200891 - 15-APR-2009 00 / 105: -0.217723 - 16-APR-2009 00 / 106: -0.234491 - 17-APR-2009 00 / 107: -0.251190 - 18-APR-2009 00 / 108: -0.267814 - 19-APR-2009 00 / 109: -0.284359 - 20-APR-2009 00 / 110: -0.300820 - 21-APR-2009 00 / 111: -0.317191 - 22-APR-2009 00 / 112: -0.333469 - 23-APR-2009 00 / 113: -0.349647 - 24-APR-2009 00 / 114: -0.365723 - 25-APR-2009 00 / 115: -0.381689 - 26-APR-2009 00 / 116: -0.397543 - 27-APR-2009 00 / 117: -0.413279 - 28-APR-2009 00 / 118: -0.428892 - 29-APR-2009 00 / 119: -0.444378 - 30-APR-2009 00 / 120: -0.459733 - 01-MAY-2009 00 / 121: -0.474951 - 02-MAY-2009 00 / 122: -0.490029 - 03-MAY-2009 00 / 123: -0.504961 - 04-MAY-2009 00 / 124: -0.519744 - 05-MAY-2009 00 / 125: -0.534373 - 06-MAY-2009 00 / 126: -0.548843 - 07-MAY-2009 00 / 127: -0.563151 - 08-MAY-2009 00 / 128: -0.577292 - 09-MAY-2009 00 / 129: -0.591261 - 10-MAY-2009 00 / 130: -0.605056 - 11-MAY-2009 00 / 131: -0.618671 - 12-MAY-2009 00 / 132: -0.632103 - 13-MAY-2009 00 / 133: -0.645348 - 14-MAY-2009 00 / 134: -0.658402 - 15-MAY-2009 00 / 135: -0.671260 - 16-MAY-2009 00 / 136: -0.683919 - 17-MAY-2009 00 / 137: -0.696376 - 18-MAY-2009 00 / 138: -0.708627 - 19-MAY-2009 00 / 139: -0.720667 - 20-MAY-2009 00 / 140: -0.732494 - 21-MAY-2009 00 / 141: -0.744104 - 22-MAY-2009 00 / 142: -0.755493 - 23-MAY-2009 00 / 143: -0.766659 - 24-MAY-2009 00 / 144: -0.777597 - 25-MAY-2009 00 / 145: -0.788305 - 26-MAY-2009 00 / 146: -0.798779 - 27-MAY-2009 00 / 147: -0.809017 - 28-MAY-2009 00 / 148: -0.819015 - 29-MAY-2009 00 / 149: -0.828770 - 30-MAY-2009 00 / 150: -0.838280 - 31-MAY-2009 00 / 151: -0.847541 - 01-JUN-2009 00 / 152: -0.856551 - 02-JUN-2009 00 / 153: -0.865307 - 03-JUN-2009 00 / 154: -0.873807 - 04-JUN-2009 00 / 155: -0.882048 - 05-JUN-2009 00 / 156: -0.890028 - 06-JUN-2009 00 / 157: -0.897743 - 07-JUN-2009 00 / 158: -0.905193 - 08-JUN-2009 00 / 159: -0.912375 - 09-JUN-2009 00 / 160: -0.919286 - 10-JUN-2009 00 / 161: -0.925925 - 11-JUN-2009 00 / 162: -0.932289 - 12-JUN-2009 00 / 163: -0.938377 - 13-JUN-2009 00 / 164: -0.944188 - 14-JUN-2009 00 / 165: -0.949718 - 15-JUN-2009 00 / 166: -0.954967 - 16-JUN-2009 00 / 167: -0.959933 - 17-JUN-2009 00 / 168: -0.964614 - 18-JUN-2009 00 / 169: -0.969010 - 19-JUN-2009 00 / 170: -0.973118 - 20-JUN-2009 00 / 171: -0.976938 - 21-JUN-2009 00 / 172: -0.980469 - 22-JUN-2009 00 / 173: -0.983709 - 23-JUN-2009 00 / 174: -0.986658 - 24-JUN-2009 00 / 175: -0.989314 - 25-JUN-2009 00 / 176: -0.991677 - 26-JUN-2009 00 / 177: -0.993747 - 27-JUN-2009 00 / 178: -0.995521 - 28-JUN-2009 00 / 179: -0.997001 - 29-JUN-2009 00 / 180: -0.998186 - 30-JUN-2009 00 / 181: -0.999074 - 01-JUL-2009 00 / 182: -0.999667 - 02-JUL-2009 00 / 183: -0.999963 - 03-JUL-2009 00 / 184: -0.999963 - 04-JUL-2009 00 / 185: -0.999667 - 05-JUL-2009 00 / 186: -0.999074 - 06-JUL-2009 00 / 187: -0.998186 - 07-JUL-2009 00 / 188: -0.997001 - 08-JUL-2009 00 / 189: -0.995521 - 09-JUL-2009 00 / 190: -0.993747 - 10-JUL-2009 00 / 191: -0.991677 - 11-JUL-2009 00 / 192: -0.989314 - 12-JUL-2009 00 / 193: -0.986658 - 13-JUL-2009 00 / 194: -0.983709 - 14-JUL-2009 00 / 195: -0.980469 - 15-JUL-2009 00 / 196: -0.976938 - 16-JUL-2009 00 / 197: -0.973118 - 17-JUL-2009 00 / 198: -0.969010 - 18-JUL-2009 00 / 199: -0.964614 - 19-JUL-2009 00 / 200: -0.959933 - 20-JUL-2009 00 / 201: -0.954967 - 21-JUL-2009 00 / 202: -0.949718 - 22-JUL-2009 00 / 203: -0.944188 - 23-JUL-2009 00 / 204: -0.938377 - 24-JUL-2009 00 / 205: -0.932289 - 25-JUL-2009 00 / 206: -0.925925 - 26-JUL-2009 00 / 207: -0.919286 - 27-JUL-2009 00 / 208: -0.912375 - 28-JUL-2009 00 / 209: -0.905193 - 29-JUL-2009 00 / 210: -0.897743 - 30-JUL-2009 00 / 211: -0.890028 - 31-JUL-2009 00 / 212: -0.882048 - 01-AUG-2009 00 / 213: -0.873807 - 02-AUG-2009 00 / 214: -0.865307 - 03-AUG-2009 00 / 215: -0.856551 - 04-AUG-2009 00 / 216: -0.847541 - 05-AUG-2009 00 / 217: -0.838280 - 06-AUG-2009 00 / 218: -0.828770 - 07-AUG-2009 00 / 219: -0.819015 - 08-AUG-2009 00 / 220: -0.809017 - 09-AUG-2009 00 / 221: -0.798779 - 10-AUG-2009 00 / 222: -0.788305 - 11-AUG-2009 00 / 223: -0.777597 - 12-AUG-2009 00 / 224: -0.766659 - 13-AUG-2009 00 / 225: -0.755493 - 14-AUG-2009 00 / 226: -0.744104 - 15-AUG-2009 00 / 227: -0.732494 - 16-AUG-2009 00 / 228: -0.720667 - 17-AUG-2009 00 / 229: -0.708627 - 18-AUG-2009 00 / 230: -0.696376 - 19-AUG-2009 00 / 231: -0.683919 - 20-AUG-2009 00 / 232: -0.671260 - 21-AUG-2009 00 / 233: -0.658402 - 22-AUG-2009 00 / 234: -0.645348 - 23-AUG-2009 00 / 235: -0.632103 - 24-AUG-2009 00 / 236: -0.618671 - 25-AUG-2009 00 / 237: -0.605056 - 26-AUG-2009 00 / 238: -0.591261 - 27-AUG-2009 00 / 239: -0.577292 - 28-AUG-2009 00 / 240: -0.563151 - 29-AUG-2009 00 / 241: -0.548843 - 30-AUG-2009 00 / 242: -0.534373 - 31-AUG-2009 00 / 243: -0.519744 - 01-SEP-2009 00 / 244: -0.504961 - 02-SEP-2009 00 / 245: -0.490029 - 03-SEP-2009 00 / 246: -0.474951 - 04-SEP-2009 00 / 247: -0.459733 - 05-SEP-2009 00 / 248: -0.444378 - 06-SEP-2009 00 / 249: -0.428892 - 07-SEP-2009 00 / 250: -0.413279 - 08-SEP-2009 00 / 251: -0.397543 - 09-SEP-2009 00 / 252: -0.381689 - 10-SEP-2009 00 / 253: -0.365723 - 11-SEP-2009 00 / 254: -0.349647 - 12-SEP-2009 00 / 255: -0.333469 - 13-SEP-2009 00 / 256: -0.317191 - 14-SEP-2009 00 / 257: -0.300820 - 15-SEP-2009 00 / 258: -0.284359 - 16-SEP-2009 00 / 259: -0.267814 - 17-SEP-2009 00 / 260: -0.251190 - 18-SEP-2009 00 / 261: -0.234491 - 19-SEP-2009 00 / 262: -0.217723 - 20-SEP-2009 00 / 263: -0.200891 - 21-SEP-2009 00 / 264: -0.183998 - 22-SEP-2009 00 / 265: -0.167052 - 23-SEP-2009 00 / 266: -0.150055 - 24-SEP-2009 00 / 267: -0.133015 - 25-SEP-2009 00 / 268: -0.115935 - 26-SEP-2009 00 / 269: -0.098820 - 27-SEP-2009 00 / 270: -0.081676 - 28-SEP-2009 00 / 271: -0.064508 - 29-SEP-2009 00 / 272: -0.047321 - 30-SEP-2009 00 / 273: -0.030120 - 01-OCT-2009 00 / 274: -0.012910 - 02-OCT-2009 00 / 275: 0.004304 - 03-OCT-2009 00 / 276: 0.021516 - 04-OCT-2009 00 / 277: 0.038722 - 05-OCT-2009 00 / 278: 0.055917 - 06-OCT-2009 00 / 279: 0.073095 - 07-OCT-2009 00 / 280: 0.090252 - 08-OCT-2009 00 / 281: 0.107381 - 09-OCT-2009 00 / 282: 0.124479 - 10-OCT-2009 00 / 283: 0.141540 - 11-OCT-2009 00 / 284: 0.158559 - 12-OCT-2009 00 / 285: 0.175531 - 13-OCT-2009 00 / 286: 0.192452 - 14-OCT-2009 00 / 287: 0.209315 - 15-OCT-2009 00 / 288: 0.226116 - 16-OCT-2009 00 / 289: 0.242850 - 17-OCT-2009 00 / 290: 0.259512 - 18-OCT-2009 00 / 291: 0.276097 - 19-OCT-2009 00 / 292: 0.292600 - 20-OCT-2009 00 / 293: 0.309017 - 21-OCT-2009 00 / 294: 0.325342 - 22-OCT-2009 00 / 295: 0.341571 - 23-OCT-2009 00 / 296: 0.357698 - 24-OCT-2009 00 / 297: 0.373720 - 25-OCT-2009 00 / 298: 0.389630 - 26-OCT-2009 00 / 299: 0.405426 - 27-OCT-2009 00 / 300: 0.421101 - 28-OCT-2009 00 / 301: 0.436651 - 29-OCT-2009 00 / 302: 0.452072 - 30-OCT-2009 00 / 303: 0.467359 - 31-OCT-2009 00 / 304: 0.482508 - 01-NOV-2009 00 / 305: 0.497513 - 02-NOV-2009 00 / 306: 0.512371 - 03-NOV-2009 00 / 307: 0.527078 - 04-NOV-2009 00 / 308: 0.541628 - 05-NOV-2009 00 / 309: 0.556017 - 06-NOV-2009 00 / 310: 0.570242 - 07-NOV-2009 00 / 311: 0.584298 - 08-NOV-2009 00 / 312: 0.598181 - 09-NOV-2009 00 / 313: 0.611886 - 10-NOV-2009 00 / 314: 0.625411 - 11-NOV-2009 00 / 315: 0.638749 - 12-NOV-2009 00 / 316: 0.651899 - 13-NOV-2009 00 / 317: 0.664855 - 14-NOV-2009 00 / 318: 0.677615 - 15-NOV-2009 00 / 319: 0.690173 - 16-NOV-2009 00 / 320: 0.702527 - 17-NOV-2009 00 / 321: 0.714673 - 18-NOV-2009 00 / 322: 0.726608 - 19-NOV-2009 00 / 323: 0.738326 - 20-NOV-2009 00 / 324: 0.749826 - 21-NOV-2009 00 / 325: 0.761104 - 22-NOV-2009 00 / 326: 0.772157 - 23-NOV-2009 00 / 327: 0.782980 - 24-NOV-2009 00 / 328: 0.793572 - 25-NOV-2009 00 / 329: 0.803928 - 26-NOV-2009 00 / 330: 0.814046 - 27-NOV-2009 00 / 331: 0.823923 - 28-NOV-2009 00 / 332: 0.833556 - 29-NOV-2009 00 / 333: 0.842942 - 30-NOV-2009 00 / 334: 0.852078 - 01-DEC-2009 00 / 335: 0.860961 - 02-DEC-2009 00 / 336: 0.869589 - 03-DEC-2009 00 / 337: 0.877960 - 04-DEC-2009 00 / 338: 0.886071 - 05-DEC-2009 00 / 339: 0.893919 - 06-DEC-2009 00 / 340: 0.901502 - 07-DEC-2009 00 / 341: 0.908818 - 08-DEC-2009 00 / 342: 0.915864 - 09-DEC-2009 00 / 343: 0.922640 - 10-DEC-2009 00 / 344: 0.929141 - 11-DEC-2009 00 / 345: 0.935368 - 12-DEC-2009 00 / 346: 0.941317 - 13-DEC-2009 00 / 347: 0.946988 - 14-DEC-2009 00 / 348: 0.952378 - 15-DEC-2009 00 / 349: 0.957485 - 16-DEC-2009 00 / 350: 0.962309 - 17-DEC-2009 00 / 351: 0.966848 - 18-DEC-2009 00 / 352: 0.971100 - 19-DEC-2009 00 / 353: 0.975065 - 20-DEC-2009 00 / 354: 0.978740 - 21-DEC-2009 00 / 355: 0.982126 - 22-DEC-2009 00 / 356: 0.985220 - 23-DEC-2009 00 / 357: 0.988023 - 24-DEC-2009 00 / 358: 0.990532 - 25-DEC-2009 00 / 359: 0.992749 - 26-DEC-2009 00 / 360: 0.994671 - 27-DEC-2009 00 / 361: 0.996298 - 28-DEC-2009 00 / 362: 0.997630 - 29-DEC-2009 00 / 363: 0.998667 - 30-DEC-2009 00 / 364: 0.999407 - 31-DEC-2009 00 / 365: 0.999852 - 01-JAN-2010 00 / 366: 11.000000 - 02-JAN-2010 00 / 367: 10.999852 - 03-JAN-2010 00 / 368: 10.999407 - 04-JAN-2010 00 / 369: 10.998667 - 05-JAN-2010 00 / 370: 10.997630 - 06-JAN-2010 00 / 371: 10.996298 - 07-JAN-2010 00 / 372: 10.994671 - 08-JAN-2010 00 / 373: 10.992749 - 09-JAN-2010 00 / 374: 10.990532 - 10-JAN-2010 00 / 375: 10.988023 - 11-JAN-2010 00 / 376: 10.985220 - 12-JAN-2010 00 / 377: 10.982126 - 13-JAN-2010 00 / 378: 10.978740 - 14-JAN-2010 00 / 379: 10.975065 - 15-JAN-2010 00 / 380: 10.971100 - 16-JAN-2010 00 / 381: 10.966848 - 17-JAN-2010 00 / 382: 10.962309 - 18-JAN-2010 00 / 383: 10.957485 - 19-JAN-2010 00 / 384: 10.952378 - 20-JAN-2010 00 / 385: 10.946988 - 21-JAN-2010 00 / 386: 10.941317 - 22-JAN-2010 00 / 387: 10.935368 - 23-JAN-2010 00 / 388: 10.929141 - 24-JAN-2010 00 / 389: 10.922640 - 25-JAN-2010 00 / 390: 10.915864 - 26-JAN-2010 00 / 391: 10.908818 - 27-JAN-2010 00 / 392: 10.901502 - 28-JAN-2010 00 / 393: 10.893919 - 29-JAN-2010 00 / 394: 10.886071 - 30-JAN-2010 00 / 395: 10.877960 - 31-JAN-2010 00 / 396: 10.869589 - 01-FEB-2010 00 / 397: 10.860961 - 02-FEB-2010 00 / 398: 10.852078 - 03-FEB-2010 00 / 399: 10.842942 - 04-FEB-2010 00 / 400: 10.833556 - 05-FEB-2010 00 / 401: 10.823923 - 06-FEB-2010 00 / 402: 10.814046 - 07-FEB-2010 00 / 403: 10.803928 - 08-FEB-2010 00 / 404: 10.793572 - 09-FEB-2010 00 / 405: 10.782980 - 10-FEB-2010 00 / 406: 10.772157 - 11-FEB-2010 00 / 407: 10.761104 - 12-FEB-2010 00 / 408: 10.749826 - 13-FEB-2010 00 / 409: 10.738326 - 14-FEB-2010 00 / 410: 10.726608 - 15-FEB-2010 00 / 411: 10.714673 - 16-FEB-2010 00 / 412: 10.702527 - 17-FEB-2010 00 / 413: 10.690173 - 18-FEB-2010 00 / 414: 10.677615 - 19-FEB-2010 00 / 415: 10.664855 - 20-FEB-2010 00 / 416: 10.651899 - 21-FEB-2010 00 / 417: 10.638749 - 22-FEB-2010 00 / 418: 10.625411 - 23-FEB-2010 00 / 419: 10.611886 - 24-FEB-2010 00 / 420: 10.598181 - 25-FEB-2010 00 / 421: 10.584298 - 26-FEB-2010 00 / 422: 10.570242 - 27-FEB-2010 00 / 423: 10.556017 - 28-FEB-2010 00 / 424: 10.541628 - 01-MAR-2010 00 / 425: 10.527078 - 02-MAR-2010 00 / 426: 10.512371 - 03-MAR-2010 00 / 427: 10.497513 - 04-MAR-2010 00 / 428: 10.482508 - 05-MAR-2010 00 / 429: 10.467359 - 06-MAR-2010 00 / 430: 10.452072 - 07-MAR-2010 00 / 431: 10.436651 - 08-MAR-2010 00 / 432: 10.421101 - 09-MAR-2010 00 / 433: 10.405426 - 10-MAR-2010 00 / 434: 10.389630 - 11-MAR-2010 00 / 435: 10.373720 - 12-MAR-2010 00 / 436: 10.357698 - 13-MAR-2010 00 / 437: 10.341571 - 14-MAR-2010 00 / 438: 10.325342 - 15-MAR-2010 00 / 439: 10.309017 - 16-MAR-2010 00 / 440: 10.292600 - 17-MAR-2010 00 / 441: 10.276097 - 18-MAR-2010 00 / 442: 10.259512 - 19-MAR-2010 00 / 443: 10.242850 - 20-MAR-2010 00 / 444: 10.226116 - 21-MAR-2010 00 / 445: 10.209315 - 22-MAR-2010 00 / 446: 10.192452 - 23-MAR-2010 00 / 447: 10.175531 - 24-MAR-2010 00 / 448: 10.158559 - 25-MAR-2010 00 / 449: 10.141540 - 26-MAR-2010 00 / 450: 10.124479 - 27-MAR-2010 00 / 451: 10.107381 - 28-MAR-2010 00 / 452: 10.090252 - 29-MAR-2010 00 / 453: 10.073095 - 30-MAR-2010 00 / 454: 10.055917 - 31-MAR-2010 00 / 455: 10.038722 - 01-APR-2010 00 / 456: 10.021516 - 02-APR-2010 00 / 457: 10.004304 - 03-APR-2010 00 / 458: 9.987090 - 04-APR-2010 00 / 459: 9.969880 - 05-APR-2010 00 / 460: 9.952679 - 06-APR-2010 00 / 461: 9.935492 - 07-APR-2010 00 / 462: 9.918324 - 08-APR-2010 00 / 463: 9.901180 - 09-APR-2010 00 / 464: 9.884065 - 10-APR-2010 00 / 465: 9.866985 - 11-APR-2010 00 / 466: 9.849945 - 12-APR-2010 00 / 467: 9.832948 - 13-APR-2010 00 / 468: 9.816002 - 14-APR-2010 00 / 469: 9.799109 - 15-APR-2010 00 / 470: 9.782277 - 16-APR-2010 00 / 471: 9.765509 - 17-APR-2010 00 / 472: 9.748810 - 18-APR-2010 00 / 473: 9.732186 - 19-APR-2010 00 / 474: 9.715641 - 20-APR-2010 00 / 475: 9.699180 - 21-APR-2010 00 / 476: 9.682809 - 22-APR-2010 00 / 477: 9.666531 - 23-APR-2010 00 / 478: 9.650353 - 24-APR-2010 00 / 479: 9.634277 - 25-APR-2010 00 / 480: 9.618311 - 26-APR-2010 00 / 481: 9.602457 - 27-APR-2010 00 / 482: 9.586721 - 28-APR-2010 00 / 483: 9.571108 - 29-APR-2010 00 / 484: 9.555622 - 30-APR-2010 00 / 485: 9.540267 - 01-MAY-2010 00 / 486: 9.525049 - 02-MAY-2010 00 / 487: 9.509971 - 03-MAY-2010 00 / 488: 9.495039 - 04-MAY-2010 00 / 489: 9.480256 - 05-MAY-2010 00 / 490: 9.465627 - 06-MAY-2010 00 / 491: 9.451157 - 07-MAY-2010 00 / 492: 9.436849 - 08-MAY-2010 00 / 493: 9.422708 - 09-MAY-2010 00 / 494: 9.408739 - 10-MAY-2010 00 / 495: 9.394944 - 11-MAY-2010 00 / 496: 9.381329 - 12-MAY-2010 00 / 497: 9.367897 - 13-MAY-2010 00 / 498: 9.354652 - 14-MAY-2010 00 / 499: 9.341598 - 15-MAY-2010 00 / 500: 9.328740 - 16-MAY-2010 00 / 501: 9.316081 - 17-MAY-2010 00 / 502: 9.303624 - 18-MAY-2010 00 / 503: 9.291373 - 19-MAY-2010 00 / 504: 9.279333 - 20-MAY-2010 00 / 505: 9.267506 - 21-MAY-2010 00 / 506: 9.255896 - 22-MAY-2010 00 / 507: 9.244507 - 23-MAY-2010 00 / 508: 9.233341 - 24-MAY-2010 00 / 509: 9.222403 - 25-MAY-2010 00 / 510: 9.211695 - 26-MAY-2010 00 / 511: 9.201221 - 27-MAY-2010 00 / 512: 9.190983 - 28-MAY-2010 00 / 513: 9.180985 - 29-MAY-2010 00 / 514: 9.171230 - 30-MAY-2010 00 / 515: 9.161720 - 31-MAY-2010 00 / 516: 9.152459 - 01-JUN-2010 00 / 517: 9.143449 - 02-JUN-2010 00 / 518: 9.134693 - 03-JUN-2010 00 / 519: 9.126193 - 04-JUN-2010 00 / 520: 9.117952 - 05-JUN-2010 00 / 521: 9.109972 - 06-JUN-2010 00 / 522: 9.102257 - 07-JUN-2010 00 / 523: 9.094807 - 08-JUN-2010 00 / 524: 9.087625 - 09-JUN-2010 00 / 525: 9.080714 - 10-JUN-2010 00 / 526: 9.074075 - 11-JUN-2010 00 / 527: 9.067711 - 12-JUN-2010 00 / 528: 9.061623 - 13-JUN-2010 00 / 529: 9.055812 - 14-JUN-2010 00 / 530: 9.050282 - 15-JUN-2010 00 / 531: 9.045033 - 16-JUN-2010 00 / 532: 9.040067 - 17-JUN-2010 00 / 533: 9.035386 - 18-JUN-2010 00 / 534: 9.030990 - 19-JUN-2010 00 / 535: 9.026882 - 20-JUN-2010 00 / 536: 9.023062 - 21-JUN-2010 00 / 537: 9.019531 - 22-JUN-2010 00 / 538: 9.016291 - 23-JUN-2010 00 / 539: 9.013342 - 24-JUN-2010 00 / 540: 9.010686 - 25-JUN-2010 00 / 541: 9.008323 - 26-JUN-2010 00 / 542: 9.006253 - 27-JUN-2010 00 / 543: 9.004479 - 28-JUN-2010 00 / 544: 9.002999 - 29-JUN-2010 00 / 545: 9.001814 - 30-JUN-2010 00 / 546: 9.000926 - 01-JUL-2010 00 / 547: 9.000333 - 02-JUL-2010 00 / 548: 9.000037 - 03-JUL-2010 00 / 549: 9.000037 - 04-JUL-2010 00 / 550: 9.000333 - 05-JUL-2010 00 / 551: 9.000926 - 06-JUL-2010 00 / 552: 9.001814 - 07-JUL-2010 00 / 553: 9.002999 - 08-JUL-2010 00 / 554: 9.004479 - 09-JUL-2010 00 / 555: 9.006253 - 10-JUL-2010 00 / 556: 9.008323 - 11-JUL-2010 00 / 557: 9.010686 - 12-JUL-2010 00 / 558: 9.013342 - 13-JUL-2010 00 / 559: 9.016291 - 14-JUL-2010 00 / 560: 9.019531 - 15-JUL-2010 00 / 561: 9.023062 - 16-JUL-2010 00 / 562: 9.026882 - 17-JUL-2010 00 / 563: 9.030990 - 18-JUL-2010 00 / 564: 9.035386 - 19-JUL-2010 00 / 565: 9.040067 - 20-JUL-2010 00 / 566: 9.045033 - 21-JUL-2010 00 / 567: 9.050282 - 22-JUL-2010 00 / 568: 9.055812 - 23-JUL-2010 00 / 569: 9.061623 - 24-JUL-2010 00 / 570: 9.067711 - 25-JUL-2010 00 / 571: 9.074075 - 26-JUL-2010 00 / 572: 9.080714 - 27-JUL-2010 00 / 573: 9.087625 - 28-JUL-2010 00 / 574: 9.094807 - 29-JUL-2010 00 / 575: 9.102257 - 30-JUL-2010 00 / 576: 9.109972 - 31-JUL-2010 00 / 577: 9.117952 - 01-AUG-2010 00 / 578: 9.126193 - 02-AUG-2010 00 / 579: 9.134693 - 03-AUG-2010 00 / 580: 9.143449 - 04-AUG-2010 00 / 581: 9.152459 - 05-AUG-2010 00 / 582: 9.161720 - 06-AUG-2010 00 / 583: 9.171230 - 07-AUG-2010 00 / 584: 9.180985 - 08-AUG-2010 00 / 585: 9.190983 - 09-AUG-2010 00 / 586: 9.201221 - 10-AUG-2010 00 / 587: 9.211695 - 11-AUG-2010 00 / 588: 9.222403 - 12-AUG-2010 00 / 589: 9.233341 - 13-AUG-2010 00 / 590: 9.244507 - 14-AUG-2010 00 / 591: 9.255896 - 15-AUG-2010 00 / 592: 9.267506 - 16-AUG-2010 00 / 593: 9.279333 - 17-AUG-2010 00 / 594: 9.291373 - 18-AUG-2010 00 / 595: 9.303624 - 19-AUG-2010 00 / 596: 9.316081 - 20-AUG-2010 00 / 597: 9.328740 - 21-AUG-2010 00 / 598: 9.341598 - 22-AUG-2010 00 / 599: 9.354652 - 23-AUG-2010 00 / 600: 9.367897 - 24-AUG-2010 00 / 601: 9.381329 - 25-AUG-2010 00 / 602: 9.394944 - 26-AUG-2010 00 / 603: 9.408739 - 27-AUG-2010 00 / 604: 9.422708 - 28-AUG-2010 00 / 605: 9.436849 - 29-AUG-2010 00 / 606: 9.451157 - 30-AUG-2010 00 / 607: 9.465627 - 31-AUG-2010 00 / 608: 9.480256 - 01-SEP-2010 00 / 609: 9.495039 - 02-SEP-2010 00 / 610: 9.509971 - 03-SEP-2010 00 / 611: 9.525049 - 04-SEP-2010 00 / 612: 9.540267 - 05-SEP-2010 00 / 613: 9.555622 - 06-SEP-2010 00 / 614: 9.571108 - 07-SEP-2010 00 / 615: 9.586721 - 08-SEP-2010 00 / 616: 9.602457 - 09-SEP-2010 00 / 617: 9.618311 - 10-SEP-2010 00 / 618: 9.634277 - 11-SEP-2010 00 / 619: 9.650353 - 12-SEP-2010 00 / 620: 9.666531 - 13-SEP-2010 00 / 621: 9.682809 - 14-SEP-2010 00 / 622: 9.699180 - 15-SEP-2010 00 / 623: 9.715641 - 16-SEP-2010 00 / 624: 9.732186 - 17-SEP-2010 00 / 625: 9.748810 - 18-SEP-2010 00 / 626: 9.765509 - 19-SEP-2010 00 / 627: 9.782277 - 20-SEP-2010 00 / 628: 9.799109 - 21-SEP-2010 00 / 629: 9.816002 - 22-SEP-2010 00 / 630: 9.832948 - 23-SEP-2010 00 / 631: 9.849945 - 24-SEP-2010 00 / 632: 9.866985 - 25-SEP-2010 00 / 633: 9.884065 - 26-SEP-2010 00 / 634: 9.901180 - 27-SEP-2010 00 / 635: 9.918324 - 28-SEP-2010 00 / 636: 9.935492 - 29-SEP-2010 00 / 637: 9.952679 - 30-SEP-2010 00 / 638: 9.969880 - 01-OCT-2010 00 / 639: 9.987090 - 02-OCT-2010 00 / 640: 10.004304 - 03-OCT-2010 00 / 641: 10.021516 - 04-OCT-2010 00 / 642: 10.038722 - 05-OCT-2010 00 / 643: 10.055917 - 06-OCT-2010 00 / 644: 10.073095 - 07-OCT-2010 00 / 645: 10.090252 - 08-OCT-2010 00 / 646: 10.107381 - 09-OCT-2010 00 / 647: 10.124479 - 10-OCT-2010 00 / 648: 10.141540 - 11-OCT-2010 00 / 649: 10.158559 - 12-OCT-2010 00 / 650: 10.175531 - 13-OCT-2010 00 / 651: 10.192452 - 14-OCT-2010 00 / 652: 10.209315 - 15-OCT-2010 00 / 653: 10.226116 - 16-OCT-2010 00 / 654: 10.242850 - 17-OCT-2010 00 / 655: 10.259512 - 18-OCT-2010 00 / 656: 10.276097 - 19-OCT-2010 00 / 657: 10.292600 - 20-OCT-2010 00 / 658: 10.309017 - 21-OCT-2010 00 / 659: 10.325342 - 22-OCT-2010 00 / 660: 10.341571 - 23-OCT-2010 00 / 661: 10.357698 - 24-OCT-2010 00 / 662: 10.373720 - 25-OCT-2010 00 / 663: 10.389630 - 26-OCT-2010 00 / 664: 10.405426 - 27-OCT-2010 00 / 665: 10.421101 - 28-OCT-2010 00 / 666: 10.436651 - 29-OCT-2010 00 / 667: 10.452072 - 30-OCT-2010 00 / 668: 10.467359 - 31-OCT-2010 00 / 669: 10.482508 - 01-NOV-2010 00 / 670: 10.497513 - 02-NOV-2010 00 / 671: 10.512371 - 03-NOV-2010 00 / 672: 10.527078 - 04-NOV-2010 00 / 673: 10.541628 - 05-NOV-2010 00 / 674: 10.556017 - 06-NOV-2010 00 / 675: 10.570242 - 07-NOV-2010 00 / 676: 10.584298 - 08-NOV-2010 00 / 677: 10.598181 - 09-NOV-2010 00 / 678: 10.611886 - 10-NOV-2010 00 / 679: 10.625411 - 11-NOV-2010 00 / 680: 10.638749 - 12-NOV-2010 00 / 681: 10.651899 - 13-NOV-2010 00 / 682: 10.664855 - 14-NOV-2010 00 / 683: 10.677615 - 15-NOV-2010 00 / 684: 10.690173 - 16-NOV-2010 00 / 685: 10.702527 - 17-NOV-2010 00 / 686: 10.714673 - 18-NOV-2010 00 / 687: 10.726608 - 19-NOV-2010 00 / 688: 10.738326 - 20-NOV-2010 00 / 689: 10.749826 - 21-NOV-2010 00 / 690: 10.761104 - 22-NOV-2010 00 / 691: 10.772157 - 23-NOV-2010 00 / 692: 10.782980 - 24-NOV-2010 00 / 693: 10.793572 - 25-NOV-2010 00 / 694: 10.803928 - 26-NOV-2010 00 / 695: 10.814046 - 27-NOV-2010 00 / 696: 10.823923 - 28-NOV-2010 00 / 697: 10.833556 - 29-NOV-2010 00 / 698: 10.842942 - 30-NOV-2010 00 / 699: 10.852078 - 01-DEC-2010 00 / 700: 10.860961 - 02-DEC-2010 00 / 701: 10.869589 - 03-DEC-2010 00 / 702: 10.877960 - 04-DEC-2010 00 / 703: 10.886071 - 05-DEC-2010 00 / 704: 10.893919 - 06-DEC-2010 00 / 705: 10.901502 - 07-DEC-2010 00 / 706: 10.908818 - 08-DEC-2010 00 / 707: 10.915864 - 09-DEC-2010 00 / 708: 10.922640 - 10-DEC-2010 00 / 709: 10.929141 - 11-DEC-2010 00 / 710: 10.935368 - 12-DEC-2010 00 / 711: 10.941317 - 13-DEC-2010 00 / 712: 10.946988 - 14-DEC-2010 00 / 713: 10.952378 - 15-DEC-2010 00 / 714: 10.957485 - 16-DEC-2010 00 / 715: 10.962309 - 17-DEC-2010 00 / 716: 10.966848 - 18-DEC-2010 00 / 717: 10.971100 - 19-DEC-2010 00 / 718: 10.975065 - 20-DEC-2010 00 / 719: 10.978740 - 21-DEC-2010 00 / 720: 10.982126 - 22-DEC-2010 00 / 721: 10.985220 - 23-DEC-2010 00 / 722: 10.988023 - 24-DEC-2010 00 / 723: 10.990532 - 25-DEC-2010 00 / 724: 10.992749 - 26-DEC-2010 00 / 725: 10.994671 - 27-DEC-2010 00 / 726: 10.996298 - 28-DEC-2010 00 / 727: 10.997630 - 29-DEC-2010 00 / 728: 10.998667 - 30-DEC-2010 00 / 729: 10.999407 - 31-DEC-2010 00 / 730: 10.999852 - 01-JAN-2011 00 / 731: 21.000000 - 02-JAN-2011 00 / 732: 20.999852 - 03-JAN-2011 00 / 733: 20.999407 - 04-JAN-2011 00 / 734: 20.998667 - 05-JAN-2011 00 / 735: 20.997630 - 06-JAN-2011 00 / 736: 20.996298 - 07-JAN-2011 00 / 737: 20.994671 - 08-JAN-2011 00 / 738: 20.992749 - 09-JAN-2011 00 / 739: 20.990532 - 10-JAN-2011 00 / 740: 20.988023 - 11-JAN-2011 00 / 741: 20.985220 - 12-JAN-2011 00 / 742: 20.982126 - 13-JAN-2011 00 / 743: 20.978740 - 14-JAN-2011 00 / 744: 20.975065 - 15-JAN-2011 00 / 745: 20.971100 - 16-JAN-2011 00 / 746: 20.966848 - 17-JAN-2011 00 / 747: 20.962309 - 18-JAN-2011 00 / 748: 20.957485 - 19-JAN-2011 00 / 749: 20.952378 - 20-JAN-2011 00 / 750: 20.946988 - 21-JAN-2011 00 / 751: 20.941317 - 22-JAN-2011 00 / 752: 20.935368 - 23-JAN-2011 00 / 753: 20.929141 - 24-JAN-2011 00 / 754: 20.922640 - 25-JAN-2011 00 / 755: 20.915864 - 26-JAN-2011 00 / 756: 20.908818 - 27-JAN-2011 00 / 757: 20.901502 - 28-JAN-2011 00 / 758: 20.893919 - 29-JAN-2011 00 / 759: 20.886071 - 30-JAN-2011 00 / 760: 20.877960 - 31-JAN-2011 00 / 761: 20.869589 - 01-FEB-2011 00 / 762: 20.860961 - 02-FEB-2011 00 / 763: 20.852078 - 03-FEB-2011 00 / 764: 20.842942 - 04-FEB-2011 00 / 765: 20.833556 - 05-FEB-2011 00 / 766: 20.823923 - 06-FEB-2011 00 / 767: 20.814046 - 07-FEB-2011 00 / 768: 20.803928 - 08-FEB-2011 00 / 769: 20.793572 - 09-FEB-2011 00 / 770: 20.782980 - 10-FEB-2011 00 / 771: 20.772157 - 11-FEB-2011 00 / 772: 20.761104 - 12-FEB-2011 00 / 773: 20.749826 - 13-FEB-2011 00 / 774: 20.738326 - 14-FEB-2011 00 / 775: 20.726608 - 15-FEB-2011 00 / 776: 20.714673 - 16-FEB-2011 00 / 777: 20.702527 - 17-FEB-2011 00 / 778: 20.690173 - 18-FEB-2011 00 / 779: 20.677615 - 19-FEB-2011 00 / 780: 20.664855 - 20-FEB-2011 00 / 781: 20.651899 - 21-FEB-2011 00 / 782: 20.638749 - 22-FEB-2011 00 / 783: 20.625411 - 23-FEB-2011 00 / 784: 20.611886 - 24-FEB-2011 00 / 785: 20.598181 - 25-FEB-2011 00 / 786: 20.584298 - 26-FEB-2011 00 / 787: 20.570242 - 27-FEB-2011 00 / 788: 20.556017 - 28-FEB-2011 00 / 789: 20.541628 - 01-MAR-2011 00 / 790: 20.527078 - 02-MAR-2011 00 / 791: 20.512371 - 03-MAR-2011 00 / 792: 20.497513 - 04-MAR-2011 00 / 793: 20.482508 - 05-MAR-2011 00 / 794: 20.467359 - 06-MAR-2011 00 / 795: 20.452072 - 07-MAR-2011 00 / 796: 20.436651 - 08-MAR-2011 00 / 797: 20.421101 - 09-MAR-2011 00 / 798: 20.405426 - 10-MAR-2011 00 / 799: 20.389630 - 11-MAR-2011 00 / 800: 20.373720 - 12-MAR-2011 00 / 801: 20.357698 - 13-MAR-2011 00 / 802: 20.341571 - 14-MAR-2011 00 / 803: 20.325342 - 15-MAR-2011 00 / 804: 20.309017 - 16-MAR-2011 00 / 805: 20.292600 - 17-MAR-2011 00 / 806: 20.276097 - 18-MAR-2011 00 / 807: 20.259512 - 19-MAR-2011 00 / 808: 20.242850 - 20-MAR-2011 00 / 809: 20.226116 - 21-MAR-2011 00 / 810: 20.209315 - 22-MAR-2011 00 / 811: 20.192452 - 23-MAR-2011 00 / 812: 20.175531 - 24-MAR-2011 00 / 813: 20.158559 - 25-MAR-2011 00 / 814: 20.141540 - 26-MAR-2011 00 / 815: 20.124479 - 27-MAR-2011 00 / 816: 20.107381 - 28-MAR-2011 00 / 817: 20.090252 - 29-MAR-2011 00 / 818: 20.073095 - 30-MAR-2011 00 / 819: 20.055917 - 31-MAR-2011 00 / 820: 20.038722 - 01-APR-2011 00 / 821: 20.021516 - 02-APR-2011 00 / 822: 20.004304 - 03-APR-2011 00 / 823: 19.987090 - 04-APR-2011 00 / 824: 19.969880 - 05-APR-2011 00 / 825: 19.952679 - 06-APR-2011 00 / 826: 19.935492 - 07-APR-2011 00 / 827: 19.918324 - 08-APR-2011 00 / 828: 19.901180 - 09-APR-2011 00 / 829: 19.884065 - 10-APR-2011 00 / 830: 19.866985 - 11-APR-2011 00 / 831: 19.849945 - 12-APR-2011 00 / 832: 19.832948 - 13-APR-2011 00 / 833: 19.816002 - 14-APR-2011 00 / 834: 19.799109 - 15-APR-2011 00 / 835: 19.782277 - 16-APR-2011 00 / 836: 19.765509 - 17-APR-2011 00 / 837: 19.748810 - 18-APR-2011 00 / 838: 19.732186 - 19-APR-2011 00 / 839: 19.715641 - 20-APR-2011 00 / 840: 19.699180 - 21-APR-2011 00 / 841: 19.682809 - 22-APR-2011 00 / 842: 19.666531 - 23-APR-2011 00 / 843: 19.650353 - 24-APR-2011 00 / 844: 19.634277 - 25-APR-2011 00 / 845: 19.618311 - 26-APR-2011 00 / 846: 19.602457 - 27-APR-2011 00 / 847: 19.586721 - 28-APR-2011 00 / 848: 19.571108 - 29-APR-2011 00 / 849: 19.555622 - 30-APR-2011 00 / 850: 19.540267 - 01-MAY-2011 00 / 851: 19.525049 - 02-MAY-2011 00 / 852: 19.509971 - 03-MAY-2011 00 / 853: 19.495039 - 04-MAY-2011 00 / 854: 19.480256 - 05-MAY-2011 00 / 855: 19.465627 - 06-MAY-2011 00 / 856: 19.451157 - 07-MAY-2011 00 / 857: 19.436849 - 08-MAY-2011 00 / 858: 19.422708 - 09-MAY-2011 00 / 859: 19.408739 - 10-MAY-2011 00 / 860: 19.394944 - 11-MAY-2011 00 / 861: 19.381329 - 12-MAY-2011 00 / 862: 19.367897 - 13-MAY-2011 00 / 863: 19.354652 - 14-MAY-2011 00 / 864: 19.341598 - 15-MAY-2011 00 / 865: 19.328740 - 16-MAY-2011 00 / 866: 19.316081 - 17-MAY-2011 00 / 867: 19.303624 - 18-MAY-2011 00 / 868: 19.291373 - 19-MAY-2011 00 / 869: 19.279333 - 20-MAY-2011 00 / 870: 19.267506 - 21-MAY-2011 00 / 871: 19.255896 - 22-MAY-2011 00 / 872: 19.244507 - 23-MAY-2011 00 / 873: 19.233341 - 24-MAY-2011 00 / 874: 19.222403 - 25-MAY-2011 00 / 875: 19.211695 - 26-MAY-2011 00 / 876: 19.201221 - 27-MAY-2011 00 / 877: 19.190983 - 28-MAY-2011 00 / 878: 19.180985 - 29-MAY-2011 00 / 879: 19.171230 - 30-MAY-2011 00 / 880: 19.161720 - 31-MAY-2011 00 / 881: 19.152459 - 01-JUN-2011 00 / 882: 19.143449 - 02-JUN-2011 00 / 883: 19.134693 - 03-JUN-2011 00 / 884: 19.126193 - 04-JUN-2011 00 / 885: 19.117952 - 05-JUN-2011 00 / 886: 19.109972 - 06-JUN-2011 00 / 887: 19.102257 - 07-JUN-2011 00 / 888: 19.094807 - 08-JUN-2011 00 / 889: 19.087625 - 09-JUN-2011 00 / 890: 19.080714 - 10-JUN-2011 00 / 891: 19.074075 - 11-JUN-2011 00 / 892: 19.067711 - 12-JUN-2011 00 / 893: 19.061623 - 13-JUN-2011 00 / 894: 19.055812 - 14-JUN-2011 00 / 895: 19.050282 - 15-JUN-2011 00 / 896: 19.045033 - 16-JUN-2011 00 / 897: 19.040067 - 17-JUN-2011 00 / 898: 19.035386 - 18-JUN-2011 00 / 899: 19.030990 - 19-JUN-2011 00 / 900: 19.026882 - 20-JUN-2011 00 / 901: 19.023062 - 21-JUN-2011 00 / 902: 19.019531 - 22-JUN-2011 00 / 903: 19.016291 - 23-JUN-2011 00 / 904: 19.013342 - 24-JUN-2011 00 / 905: 19.010686 - 25-JUN-2011 00 / 906: 19.008323 - 26-JUN-2011 00 / 907: 19.006253 - 27-JUN-2011 00 / 908: 19.004479 - 28-JUN-2011 00 / 909: 19.002999 - 29-JUN-2011 00 / 910: 19.001814 - 30-JUN-2011 00 / 911: 19.000926 - 01-JUL-2011 00 / 912: 19.000333 - 02-JUL-2011 00 / 913: 19.000037 - 03-JUL-2011 00 / 914: 19.000037 - 04-JUL-2011 00 / 915: 19.000333 - 05-JUL-2011 00 / 916: 19.000926 - 06-JUL-2011 00 / 917: 19.001814 - 07-JUL-2011 00 / 918: 19.002999 - 08-JUL-2011 00 / 919: 19.004479 - 09-JUL-2011 00 / 920: 19.006253 - 10-JUL-2011 00 / 921: 19.008323 - 11-JUL-2011 00 / 922: 19.010686 - 12-JUL-2011 00 / 923: 19.013342 - 13-JUL-2011 00 / 924: 19.016291 - 14-JUL-2011 00 / 925: 19.019531 - 15-JUL-2011 00 / 926: 19.023062 - 16-JUL-2011 00 / 927: 19.026882 - 17-JUL-2011 00 / 928: 19.030990 - 18-JUL-2011 00 / 929: 19.035386 - 19-JUL-2011 00 / 930: 19.040067 - 20-JUL-2011 00 / 931: 19.045033 - 21-JUL-2011 00 / 932: 19.050282 - 22-JUL-2011 00 / 933: 19.055812 - 23-JUL-2011 00 / 934: 19.061623 - 24-JUL-2011 00 / 935: 19.067711 - 25-JUL-2011 00 / 936: 19.074075 - 26-JUL-2011 00 / 937: 19.080714 - 27-JUL-2011 00 / 938: 19.087625 - 28-JUL-2011 00 / 939: 19.094807 - 29-JUL-2011 00 / 940: 19.102257 - 30-JUL-2011 00 / 941: 19.109972 - 31-JUL-2011 00 / 942: 19.117952 - 01-AUG-2011 00 / 943: 19.126193 - 02-AUG-2011 00 / 944: 19.134693 - 03-AUG-2011 00 / 945: 19.143449 - 04-AUG-2011 00 / 946: 19.152459 - 05-AUG-2011 00 / 947: 19.161720 - 06-AUG-2011 00 / 948: 19.171230 - 07-AUG-2011 00 / 949: 19.180985 - 08-AUG-2011 00 / 950: 19.190983 - 09-AUG-2011 00 / 951: 19.201221 - 10-AUG-2011 00 / 952: 19.211695 - 11-AUG-2011 00 / 953: 19.222403 - 12-AUG-2011 00 / 954: 19.233341 - 13-AUG-2011 00 / 955: 19.244507 - 14-AUG-2011 00 / 956: 19.255896 - 15-AUG-2011 00 / 957: 19.267506 - 16-AUG-2011 00 / 958: 19.279333 - 17-AUG-2011 00 / 959: 19.291373 - 18-AUG-2011 00 / 960: 19.303624 - 19-AUG-2011 00 / 961: 19.316081 - 20-AUG-2011 00 / 962: 19.328740 - 21-AUG-2011 00 / 963: 19.341598 - 22-AUG-2011 00 / 964: 19.354652 - 23-AUG-2011 00 / 965: 19.367897 - 24-AUG-2011 00 / 966: 19.381329 - 25-AUG-2011 00 / 967: 19.394944 - 26-AUG-2011 00 / 968: 19.408739 - 27-AUG-2011 00 / 969: 19.422708 - 28-AUG-2011 00 / 970: 19.436849 - 29-AUG-2011 00 / 971: 19.451157 - 30-AUG-2011 00 / 972: 19.465627 - 31-AUG-2011 00 / 973: 19.480256 - 01-SEP-2011 00 / 974: 19.495039 - 02-SEP-2011 00 / 975: 19.509971 - 03-SEP-2011 00 / 976: 19.525049 - 04-SEP-2011 00 / 977: 19.540267 - 05-SEP-2011 00 / 978: 19.555622 - 06-SEP-2011 00 / 979: 19.571108 - 07-SEP-2011 00 / 980: 19.586721 - 08-SEP-2011 00 / 981: 19.602457 - 09-SEP-2011 00 / 982: 19.618311 - 10-SEP-2011 00 / 983: 19.634277 - 11-SEP-2011 00 / 984: 19.650353 - 12-SEP-2011 00 / 985: 19.666531 - 13-SEP-2011 00 / 986: 19.682809 - 14-SEP-2011 00 / 987: 19.699180 - 15-SEP-2011 00 / 988: 19.715641 - 16-SEP-2011 00 / 989: 19.732186 - 17-SEP-2011 00 / 990: 19.748810 - 18-SEP-2011 00 / 991: 19.765509 - 19-SEP-2011 00 / 992: 19.782277 - 20-SEP-2011 00 / 993: 19.799109 - 21-SEP-2011 00 / 994: 19.816002 - 22-SEP-2011 00 / 995: 19.832948 - 23-SEP-2011 00 / 996: 19.849945 - 24-SEP-2011 00 / 997: 19.866985 - 25-SEP-2011 00 / 998: 19.884065 - 26-SEP-2011 00 / 999: 19.901180 - 27-SEP-2011 00 / 1000: 19.918324 - 28-SEP-2011 00 / 1001: 19.935492 - 29-SEP-2011 00 / 1002: 19.952679 - 30-SEP-2011 00 / 1003: 19.969880 - 01-OCT-2011 00 / 1004: 19.987090 - 02-OCT-2011 00 / 1005: 20.004304 - 03-OCT-2011 00 / 1006: 20.021516 - 04-OCT-2011 00 / 1007: 20.038722 - 05-OCT-2011 00 / 1008: 20.055917 - 06-OCT-2011 00 / 1009: 20.073095 - 07-OCT-2011 00 / 1010: 20.090252 - 08-OCT-2011 00 / 1011: 20.107381 - 09-OCT-2011 00 / 1012: 20.124479 - 10-OCT-2011 00 / 1013: 20.141540 - 11-OCT-2011 00 / 1014: 20.158559 - 12-OCT-2011 00 / 1015: 20.175531 - 13-OCT-2011 00 / 1016: 20.192452 - 14-OCT-2011 00 / 1017: 20.209315 - 15-OCT-2011 00 / 1018: 20.226116 - 16-OCT-2011 00 / 1019: 20.242850 - 17-OCT-2011 00 / 1020: 20.259512 - 18-OCT-2011 00 / 1021: 20.276097 - 19-OCT-2011 00 / 1022: 20.292600 - 20-OCT-2011 00 / 1023: 20.309017 - 21-OCT-2011 00 / 1024: 20.325342 - 22-OCT-2011 00 / 1025: 20.341571 - 23-OCT-2011 00 / 1026: 20.357698 - 24-OCT-2011 00 / 1027: 20.373720 - 25-OCT-2011 00 / 1028: 20.389630 - 26-OCT-2011 00 / 1029: 20.405426 - 27-OCT-2011 00 / 1030: 20.421101 - 28-OCT-2011 00 / 1031: 20.436651 - 29-OCT-2011 00 / 1032: 20.452072 - 30-OCT-2011 00 / 1033: 20.467359 - 31-OCT-2011 00 / 1034: 20.482508 - 01-NOV-2011 00 / 1035: 20.497513 - 02-NOV-2011 00 / 1036: 20.512371 - 03-NOV-2011 00 / 1037: 20.527078 - 04-NOV-2011 00 / 1038: 20.541628 - 05-NOV-2011 00 / 1039: 20.556017 - 06-NOV-2011 00 / 1040: 20.570242 - 07-NOV-2011 00 / 1041: 20.584298 - 08-NOV-2011 00 / 1042: 20.598181 - 09-NOV-2011 00 / 1043: 20.611886 - 10-NOV-2011 00 / 1044: 20.625411 - 11-NOV-2011 00 / 1045: 20.638749 - 12-NOV-2011 00 / 1046: 20.651899 - 13-NOV-2011 00 / 1047: 20.664855 - 14-NOV-2011 00 / 1048: 20.677615 - 15-NOV-2011 00 / 1049: 20.690173 - 16-NOV-2011 00 / 1050: 20.702527 - 17-NOV-2011 00 / 1051: 20.714673 - 18-NOV-2011 00 / 1052: 20.726608 - 19-NOV-2011 00 / 1053: 20.738326 - 20-NOV-2011 00 / 1054: 20.749826 - 21-NOV-2011 00 / 1055: 20.761104 - 22-NOV-2011 00 / 1056: 20.772157 - 23-NOV-2011 00 / 1057: 20.782980 - 24-NOV-2011 00 / 1058: 20.793572 - 25-NOV-2011 00 / 1059: 20.803928 - 26-NOV-2011 00 / 1060: 20.814046 - 27-NOV-2011 00 / 1061: 20.823923 - 28-NOV-2011 00 / 1062: 20.833556 - 29-NOV-2011 00 / 1063: 20.842942 - 30-NOV-2011 00 / 1064: 20.852078 - 01-DEC-2011 00 / 1065: 20.860961 - 02-DEC-2011 00 / 1066: 20.869589 - 03-DEC-2011 00 / 1067: 20.877960 - 04-DEC-2011 00 / 1068: 20.886071 - 05-DEC-2011 00 / 1069: 20.893919 - 06-DEC-2011 00 / 1070: 20.901502 - 07-DEC-2011 00 / 1071: 20.908818 - 08-DEC-2011 00 / 1072: 20.915864 - 09-DEC-2011 00 / 1073: 20.922640 - 10-DEC-2011 00 / 1074: 20.929141 - 11-DEC-2011 00 / 1075: 20.935368 - 12-DEC-2011 00 / 1076: 20.941317 - 13-DEC-2011 00 / 1077: 20.946988 - 14-DEC-2011 00 / 1078: 20.952378 - 15-DEC-2011 00 / 1079: 20.957485 - 16-DEC-2011 00 / 1080: 20.962309 - 17-DEC-2011 00 / 1081: 20.966848 - 18-DEC-2011 00 / 1082: 20.971100 - 19-DEC-2011 00 / 1083: 20.975065 - 20-DEC-2011 00 / 1084: 20.978740 - 21-DEC-2011 00 / 1085: 20.982126 - 22-DEC-2011 00 / 1086: 20.985220 - 23-DEC-2011 00 / 1087: 20.988023 - 24-DEC-2011 00 / 1088: 20.990532 - 25-DEC-2011 00 / 1089: 20.992749 - 26-DEC-2011 00 / 1090: 20.994671 - 27-DEC-2011 00 / 1091: 20.996298 - 28-DEC-2011 00 / 1092: 20.997630 - 29-DEC-2011 00 / 1093: 20.998667 - 30-DEC-2011 00 / 1094: 20.999407 - 31-DEC-2011 00 / 1095: 20.999852 - 01-JAN-2012 00 / 1096: 21.000000 - 02-JAN-2012 00 / 1097: .... - 03-JAN-2012 00 / 1098: .... - 04-JAN-2012 00 / 1099: .... - 05-JAN-2012 00 / 1100: .... - 06-JAN-2012 00 / 1101: .... - 07-JAN-2012 00 / 1102: .... - 08-JAN-2012 00 / 1103: .... - 09-JAN-2012 00 / 1104: .... - 10-JAN-2012 00 / 1105: .... - 11-JAN-2012 00 / 1106: .... - 12-JAN-2012 00 / 1107: .... - 13-JAN-2012 00 / 1108: .... - 14-JAN-2012 00 / 1109: .... - 15-JAN-2012 00 / 1110: .... - 16-JAN-2012 00 / 1111: .... - 17-JAN-2012 00 / 1112: .... - 18-JAN-2012 00 / 1113: .... - 19-JAN-2012 00 / 1114: .... - 20-JAN-2012 00 / 1115: .... - 21-JAN-2012 00 / 1116: .... - 22-JAN-2012 00 / 1117: .... - 23-JAN-2012 00 / 1118: .... - 24-JAN-2012 00 / 1119: .... - 25-JAN-2012 00 / 1120: .... - 26-JAN-2012 00 / 1121: .... - 27-JAN-2012 00 / 1122: .... - 28-JAN-2012 00 / 1123: .... - 29-JAN-2012 00 / 1124: .... - 30-JAN-2012 00 / 1125: .... - 31-JAN-2012 00 / 1126: .... -CANCEL DATA /ALL - -! No more than three overlaps -DEFINE DATA /AGG /T /TOVERLAP=3 /TAXIS=aggtime myagg = data2010.nc, data2009.nc, data2011.nc -LIST /PREC=8 var[L=1:`var,ret=size`:5] - !-> LIST /PREC=8 var[L=1:1126:5] - VARIABLE : myvar - regrid: 5 day on T - FILENAME : myagg - SUBSET : 226 points (TIME) - 01-JAN-2009 00 / 1: 1.000000 - 06-JAN-2009 00 / 2: 0.996298 - 11-JAN-2009 00 / 3: 0.985220 - 16-JAN-2009 00 / 4: 0.966848 - 21-JAN-2009 00 / 5: 0.941317 - 26-JAN-2009 00 / 6: 0.908818 - 31-JAN-2009 00 / 7: 0.869589 - 05-FEB-2009 00 / 8: 0.823923 - 10-FEB-2009 00 / 9: 0.772157 - 15-FEB-2009 00 / 10: 0.714673 - 20-FEB-2009 00 / 11: 0.651899 - 25-FEB-2009 00 / 12: 0.584298 - 02-MAR-2009 00 / 13: 0.512371 - 07-MAR-2009 00 / 14: 0.436651 - 12-MAR-2009 00 / 15: 0.357698 - 17-MAR-2009 00 / 16: 0.276097 - 22-MAR-2009 00 / 17: 0.192452 - 27-MAR-2009 00 / 18: 0.107381 - 01-APR-2009 00 / 19: 0.021516 - 06-APR-2009 00 / 20: -0.064508 - 11-APR-2009 00 / 21: -0.150055 - 16-APR-2009 00 / 22: -0.234491 - 21-APR-2009 00 / 23: -0.317191 - 26-APR-2009 00 / 24: -0.397543 - 01-MAY-2009 00 / 25: -0.474951 - 06-MAY-2009 00 / 26: -0.548843 - 11-MAY-2009 00 / 27: -0.618671 - 16-MAY-2009 00 / 28: -0.683919 - 21-MAY-2009 00 / 29: -0.744104 - 26-MAY-2009 00 / 30: -0.798779 - 31-MAY-2009 00 / 31: -0.847541 - 05-JUN-2009 00 / 32: -0.890028 - 10-JUN-2009 00 / 33: -0.925925 - 15-JUN-2009 00 / 34: -0.954967 - 20-JUN-2009 00 / 35: -0.976938 - 25-JUN-2009 00 / 36: -0.991677 - 30-JUN-2009 00 / 37: -0.999074 - 05-JUL-2009 00 / 38: -0.999074 - 10-JUL-2009 00 / 39: -0.991677 - 15-JUL-2009 00 / 40: -0.976938 - 20-JUL-2009 00 / 41: -0.954967 - 25-JUL-2009 00 / 42: -0.925925 - 30-JUL-2009 00 / 43: -0.890028 - 04-AUG-2009 00 / 44: -0.847541 - 09-AUG-2009 00 / 45: -0.798779 - 14-AUG-2009 00 / 46: -0.744104 - 19-AUG-2009 00 / 47: -0.683919 - 24-AUG-2009 00 / 48: -0.618671 - 29-AUG-2009 00 / 49: -0.548843 - 03-SEP-2009 00 / 50: -0.474951 - 08-SEP-2009 00 / 51: -0.397543 - 13-SEP-2009 00 / 52: -0.317191 - 18-SEP-2009 00 / 53: -0.234491 - 23-SEP-2009 00 / 54: -0.150055 - 28-SEP-2009 00 / 55: -0.064508 - 03-OCT-2009 00 / 56: 0.021516 - 08-OCT-2009 00 / 57: 0.107381 - 13-OCT-2009 00 / 58: 0.192452 - 18-OCT-2009 00 / 59: 0.276097 - 23-OCT-2009 00 / 60: 0.357698 - 28-OCT-2009 00 / 61: 0.436651 - 02-NOV-2009 00 / 62: 0.512371 - 07-NOV-2009 00 / 63: 0.584298 - 12-NOV-2009 00 / 64: 0.651899 - 17-NOV-2009 00 / 65: 0.714673 - 22-NOV-2009 00 / 66: 0.772157 - 27-NOV-2009 00 / 67: 0.823923 - 02-DEC-2009 00 / 68: 0.869589 - 07-DEC-2009 00 / 69: 0.908818 - 12-DEC-2009 00 / 70: 0.941317 - 17-DEC-2009 00 / 71: 0.966848 - 22-DEC-2009 00 / 72: 0.985220 - 27-DEC-2009 00 / 73: 0.996298 - 01-JAN-2010 00 / 74: 11.000000 - 06-JAN-2010 00 / 75: 10.996298 - 11-JAN-2010 00 / 76: 10.985220 - 16-JAN-2010 00 / 77: 10.966848 - 21-JAN-2010 00 / 78: 10.941317 - 26-JAN-2010 00 / 79: 10.908818 - 31-JAN-2010 00 / 80: 10.869589 - 05-FEB-2010 00 / 81: 10.823923 - 10-FEB-2010 00 / 82: 10.772157 - 15-FEB-2010 00 / 83: 10.714673 - 20-FEB-2010 00 / 84: 10.651899 - 25-FEB-2010 00 / 85: 10.584298 - 02-MAR-2010 00 / 86: 10.512371 - 07-MAR-2010 00 / 87: 10.436651 - 12-MAR-2010 00 / 88: 10.357698 - 17-MAR-2010 00 / 89: 10.276097 - 22-MAR-2010 00 / 90: 10.192452 - 27-MAR-2010 00 / 91: 10.107381 - 01-APR-2010 00 / 92: 10.021516 - 06-APR-2010 00 / 93: 9.935492 - 11-APR-2010 00 / 94: 9.849945 - 16-APR-2010 00 / 95: 9.765509 - 21-APR-2010 00 / 96: 9.682809 - 26-APR-2010 00 / 97: 9.602457 - 01-MAY-2010 00 / 98: 9.525049 - 06-MAY-2010 00 / 99: 9.451157 - 11-MAY-2010 00 / 100: 9.381329 - 16-MAY-2010 00 / 101: 9.316081 - 21-MAY-2010 00 / 102: 9.255896 - 26-MAY-2010 00 / 103: 9.201221 - 31-MAY-2010 00 / 104: 9.152459 - 05-JUN-2010 00 / 105: 9.109972 - 10-JUN-2010 00 / 106: 9.074075 - 15-JUN-2010 00 / 107: 9.045033 - 20-JUN-2010 00 / 108: 9.023062 - 25-JUN-2010 00 / 109: 9.008323 - 30-JUN-2010 00 / 110: 9.000926 - 05-JUL-2010 00 / 111: 9.000926 - 10-JUL-2010 00 / 112: 9.008323 - 15-JUL-2010 00 / 113: 9.023062 - 20-JUL-2010 00 / 114: 9.045033 - 25-JUL-2010 00 / 115: 9.074075 - 30-JUL-2010 00 / 116: 9.109972 - 04-AUG-2010 00 / 117: 9.152459 - 09-AUG-2010 00 / 118: 9.201221 - 14-AUG-2010 00 / 119: 9.255896 - 19-AUG-2010 00 / 120: 9.316081 - 24-AUG-2010 00 / 121: 9.381329 - 29-AUG-2010 00 / 122: 9.451157 - 03-SEP-2010 00 / 123: 9.525049 - 08-SEP-2010 00 / 124: 9.602457 - 13-SEP-2010 00 / 125: 9.682809 - 18-SEP-2010 00 / 126: 9.765509 - 23-SEP-2010 00 / 127: 9.849945 - 28-SEP-2010 00 / 128: 9.935492 - 03-OCT-2010 00 / 129: 10.021516 - 08-OCT-2010 00 / 130: 10.107381 - 13-OCT-2010 00 / 131: 10.192452 - 18-OCT-2010 00 / 132: 10.276097 - 23-OCT-2010 00 / 133: 10.357698 - 28-OCT-2010 00 / 134: 10.436651 - 02-NOV-2010 00 / 135: 10.512371 - 07-NOV-2010 00 / 136: 10.584298 - 12-NOV-2010 00 / 137: 10.651899 - 17-NOV-2010 00 / 138: 10.714673 - 22-NOV-2010 00 / 139: 10.772157 - 27-NOV-2010 00 / 140: 10.823923 - 02-DEC-2010 00 / 141: 10.869589 - 07-DEC-2010 00 / 142: 10.908818 - 12-DEC-2010 00 / 143: 10.941317 - 17-DEC-2010 00 / 144: 10.966848 - 22-DEC-2010 00 / 145: 10.985220 - 27-DEC-2010 00 / 146: 10.996298 - 01-JAN-2011 00 / 147: 21.000000 - 06-JAN-2011 00 / 148: 20.996298 - 11-JAN-2011 00 / 149: 20.985220 - 16-JAN-2011 00 / 150: 20.966848 - 21-JAN-2011 00 / 151: 20.941317 - 26-JAN-2011 00 / 152: 20.908818 - 31-JAN-2011 00 / 153: 20.869589 - 05-FEB-2011 00 / 154: 20.823923 - 10-FEB-2011 00 / 155: 20.772157 - 15-FEB-2011 00 / 156: 20.714673 - 20-FEB-2011 00 / 157: 20.651899 - 25-FEB-2011 00 / 158: 20.584298 - 02-MAR-2011 00 / 159: 20.512371 - 07-MAR-2011 00 / 160: 20.436651 - 12-MAR-2011 00 / 161: 20.357698 - 17-MAR-2011 00 / 162: 20.276097 - 22-MAR-2011 00 / 163: 20.192452 - 27-MAR-2011 00 / 164: 20.107381 - 01-APR-2011 00 / 165: 20.021516 - 06-APR-2011 00 / 166: 19.935492 - 11-APR-2011 00 / 167: 19.849945 - 16-APR-2011 00 / 168: 19.765509 - 21-APR-2011 00 / 169: 19.682809 - 26-APR-2011 00 / 170: 19.602457 - 01-MAY-2011 00 / 171: 19.525049 - 06-MAY-2011 00 / 172: 19.451157 - 11-MAY-2011 00 / 173: 19.381329 - 16-MAY-2011 00 / 174: 19.316081 - 21-MAY-2011 00 / 175: 19.255896 - 26-MAY-2011 00 / 176: 19.201221 - 31-MAY-2011 00 / 177: 19.152459 - 05-JUN-2011 00 / 178: 19.109972 - 10-JUN-2011 00 / 179: 19.074075 - 15-JUN-2011 00 / 180: 19.045033 - 20-JUN-2011 00 / 181: 19.023062 - 25-JUN-2011 00 / 182: 19.008323 - 30-JUN-2011 00 / 183: 19.000926 - 05-JUL-2011 00 / 184: 19.000926 - 10-JUL-2011 00 / 185: 19.008323 - 15-JUL-2011 00 / 186: 19.023062 - 20-JUL-2011 00 / 187: 19.045033 - 25-JUL-2011 00 / 188: 19.074075 - 30-JUL-2011 00 / 189: 19.109972 - 04-AUG-2011 00 / 190: 19.152459 - 09-AUG-2011 00 / 191: 19.201221 - 14-AUG-2011 00 / 192: 19.255896 - 19-AUG-2011 00 / 193: 19.316081 - 24-AUG-2011 00 / 194: 19.381329 - 29-AUG-2011 00 / 195: 19.451157 - 03-SEP-2011 00 / 196: 19.525049 - 08-SEP-2011 00 / 197: 19.602457 - 13-SEP-2011 00 / 198: 19.682809 - 18-SEP-2011 00 / 199: 19.765509 - 23-SEP-2011 00 / 200: 19.849945 - 28-SEP-2011 00 / 201: 19.935492 - 03-OCT-2011 00 / 202: 20.021516 - 08-OCT-2011 00 / 203: 20.107381 - 13-OCT-2011 00 / 204: 20.192452 - 18-OCT-2011 00 / 205: 20.276097 - 23-OCT-2011 00 / 206: 20.357698 - 28-OCT-2011 00 / 207: 20.436651 - 02-NOV-2011 00 / 208: 20.512371 - 07-NOV-2011 00 / 209: 20.584298 - 12-NOV-2011 00 / 210: 20.651899 - 17-NOV-2011 00 / 211: 20.714673 - 22-NOV-2011 00 / 212: 20.772157 - 27-NOV-2011 00 / 213: 20.823923 - 02-DEC-2011 00 / 214: 20.869589 - 07-DEC-2011 00 / 215: 20.908818 - 12-DEC-2011 00 / 216: 20.941317 - 17-DEC-2011 00 / 217: 20.966848 - 22-DEC-2011 00 / 218: 20.985220 - 27-DEC-2011 00 / 219: 20.996298 - 01-JAN-2012 00 / 220: 21.000000 - 06-JAN-2012 00 / 221: .... - 11-JAN-2012 00 / 222: .... - 16-JAN-2012 00 / 223: .... - 21-JAN-2012 00 / 224: .... - 26-JAN-2012 00 / 225: .... - 31-JAN-2012 00 / 226: .... -CANCEL DATA /ALL - -SET MODE IGNORE - -! Standard time aggregation fails -DEFINE DATA /AGG /T myagg = data2010.nc, data2009.nc, data2011.nc - -! Without /TOVERLAP, @XACT fails (defaults to @ASN if permitted) -DEFINE DATA /AGG /T /TAXIS=aggtime@XACT myagg = data2010.nc, data2009.nc, data2011.nc - -! Without /TOVERLAP, @BIN fails (defaults to @ASN if permitted) -DEFINE DATA /AGG /T /TAXIS=aggtime@BIN myagg = data2010.nc, data2009.nc, data2011.nc - -! More overlaps than allowed -DEFINE DATA /AGG /T /TOVERLAP=2 /TAXIS=aggtime@XACT myagg = data2010.nc, data2009.nc, data2011.nc - -! More overlaps than allowed -DEFINE DATA /AGG /T /TOVERLAP=2 /TAXIS=aggtime@BIN myagg = data2010.nc, data2009.nc, data2011.nc - -CANCEL MODE IGNORE - - -GO bn_reset bn_samplexyzt -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_samplexyzt -GO bn_samplexyzt -! bn_samplexyzt -! Ansley Manke 3/8/2019 - -show function samplexyzt -SAMPLEXYZT(DAT_TO_SAMPLE,XPTS,YPTS,ZPTS,TPTS) - Returns data sampled at a set of points in X,Y,Z,T, using linear interpolation - DAT_TO_SAMPLE: variable (x,y,z,t,e,f) to sample - XPTS: X values of sample points - YPTS: Y values of sample points - ZPTS: Z values of sample points - TPTS: T values of sample points - -use gt4d011.cdf -let xpts = {-131,-132.4, -126.1} -let ypts = {0.5, -0.2, -2.1} -let zpts = {10,30,80} -let tpts = {23800, 24500, 25700} - -list/prec=7 samplexyzt(u,xpts, ypts,zpts, tpts) - VARIABLE : SAMPLEXYZT(U,XPTS, YPTS,ZPTS, TPTS) - FILENAME : gt4d011.cdf - SUBSET : 3 points (X) - 1 / 1: 38.04994 - 2 / 2: 62.96714 - 3 / 3: 26.76408 - -! Compare result at a constant z location with the SAMPLEXYT function - -set mode interpolate - -let zpts = {50, 50, 50} -list/prec=7 samplexyzt(u,xpts, ypts, zpts, tpts) - VARIABLE : SAMPLEXYZT(U,XPTS, YPTS, ZPTS, TPTS) - FILENAME : gt4d011.cdf - SUBSET : 3 points (X) - 1 / 1: 35.03247 - 2 / 2: 56.87335 - 3 / 3: 41.07122 -list/prec=7 samplexyt(u[z=50], xpts, ypts, tpts) - VARIABLE : SAMPLEXYT(U[Z=50], XPTS, YPTS, TPTS) - FILENAME : gt4d011.cdf - SUBSET : 3 points (X) - 1 / 1: 35.03247 - 2 / 2: 56.87335 - 3 / 3: 41.07122 -set mode/last interpolate - -GO bn_reset bn_sample_multi -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_sample_multi -GO bn_sample_multi -! bn_sample_multi -! See the big discussion in issue 1924 -! 4/8/2019 ACM -! 4/11/2018 more tests, can't sample 1-D var in another direction -! 4/12/2018 Both arguments must have an axis in the sample-direction -! -! Tests for functions samplei_multi, etc as discussed in ticket 1924 -! Same tests in all directions - -define axis/e=11:15:1 aax_a -define axis/e=1:4:1 aax_b -define axis/x=0:1:1 sax -let a_1 = _e[ge=aax_a]^2 -let a_2 = (4-x[gx=sax])^2 -let a_2d = a_1 + a_2 -let b_1 = 5-_e[ge=aax_b] -let b_2 = 1+x[gx=sax] -let b_2d = b_1 + b_2 - 1 -list a_2d - VARIABLE : A_1 + A_2 - SUBSET : 2 by 5 points (X-E) - 0 1 - 1 2 - 11 / 1: 137.0 130.0 - 12 / 2: 160.0 153.0 - 13 / 3: 185.0 178.0 - 14 / 4: 212.0 205.0 - 15 / 5: 241.0 234.0 -list b_2d - VARIABLE : B_1 + B_2 - 1 - SUBSET : 2 by 4 points (X-E) - 0 1 - 1 2 - 1 / 1: 4.000 5.000 - 2 / 2: 3.000 4.000 - 3 / 3: 2.000 3.000 - 4 / 4: 1.000 2.000 -list samplem_multi(a_2d, b_2d) - VARIABLE : SAMPLEM_MULTI(A_2D, B_2D) - SUBSET : 2 by 4 points (X-E) - 0 1 - 1 2 - 1 / 1: 212.0 234.0 - 2 / 2: 185.0 205.0 - 3 / 3: 160.0 178.0 - 4 / 4: 137.0 153.0 - -! SAMPLEM_MULTI agrees with SAMPLEM for a 1D index list in the E direction -list b_1 - VARIABLE : 5-_E[GE=AAX_B] - SUBSET : 4 points (E) - 1 / 1: 4.000 - 2 / 2: 3.000 - 3 / 3: 2.000 - 4 / 4: 1.000 -list samplem (a_2d, b_1) - VARIABLE : SAMPLEM (A_2D, B_1) - SUBSET : 2 by 4 points (X-E) - 0 1 - 1 2 - 1 / 1: 212.0 205.0 - 2 / 2: 185.0 178.0 - 3 / 3: 160.0 153.0 - 4 / 4: 137.0 130.0 -list samplem_multi (a_2d, b_1) - VARIABLE : SAMPLEM_MULTI (A_2D, B_1) - SUBSET : 2 by 4 points (X-E) - 0 1 - 1 2 - 1 / 1: 212.0 205.0 - 2 / 2: 185.0 178.0 - 3 / 3: 160.0 153.0 - 4 / 4: 137.0 130.0 - -! Intentional errors -set mode ignore_error - -! Cannot sample the x-e data along t - -define axis/t=3:4:1 sax2 -let b_t = t[gt=sax2] -list samplem_multi(a_2d, b_t) - -! Cannot sample the x data along e, but can if we add an e axis to arg 1 - -list samplem_multi(a_2, b_1) -list samplem_multi(a_2+esequence(0), b_1) - VARIABLE : SAMPLEM_MULTI(A_2+ESEQUENCE(0), B_1) - SUBSET : 2 by 4 points (X-E) - 0 1 - 1 2 - 1 / 1: .... .... - 2 / 2: .... .... - 3 / 3: .... .... - 4 / 4: 16.00 9.00 -list samplem_multi(a_2+0*esequence({3,1,2}), b_1) - VARIABLE : SAMPLEM_MULTI(A_2+0*ESEQUENCE({3,1,2}), B_1) - SUBSET : 2 by 4 points (X-E) - 0 1 - 1 2 - 1 / 1: .... .... - 2 / 2: 16.00 9.00 - 3 / 3: 16.00 9.00 - 4 / 4: 16.00 9.00 - -set mode/last ignore_error - -! Not an error: The grid of the INDEX var in non-sample directions -! must be conformable with the grid of to-be-sampled. - -define axis/x=0:3:1 bigax -let c_2 = 1+x[gx=bigax] -let c_2d = c_2 + b_1 -list c_2d - VARIABLE : C_2 + B_1 - SUBSET : 4 by 4 points (X-E) - 0 1 2 3 - 1 2 3 4 - 1 / 1: 5.000 6.000 7.000 8.000 - 2 / 2: 4.000 5.000 6.000 7.000 - 3 / 3: 3.000 4.000 5.000 6.000 - 4 / 4: 2.000 3.000 4.000 5.000 -list samplem_multi(a_2d, c_2d) - VARIABLE : SAMPLEM_MULTI(A_2D, C_2D) - SUBSET : 2 by 4 points (X-E) - 0 1 - 1 2 - 1 / 1: 241.0 .... - 2 / 2: 212.0 234.0 - 3 / 3: 185.0 205.0 - 4 / 4: 160.0 178.0 - -! Monte Carlo resamples of a dataset, as outlined in #1924 -! Sample E data using an M-N st of indices. - -let data = ESEQUENCE({59,91,26,37,72,43,87}) -let ndat = `data,r=msize` - !-> DEFINE VARIABLE ndat = 7 -let na = 8 -let vals = _n[n=1:`na`] - !-> DEFINE VARIABLE vals = _n[n=1:8] -let samp_indices = 1 + int(ndat * randu(_e[ge=data, m=1:`ndat`]+vals)) - !-> DEFINE VARIABLE samp_indices = 1 + int(ndat * randu(_e[ge=data, m=1:7]+vals)) -let bootstrap_resamples = samplem_multi(data+0*samp_indices, samp_indices) - -list data - VARIABLE : ESEQUENCE({59,91,26,37,72,43,87}) - SUBSET : 7 points (E) - 1 / 1: 59.00 - 2 / 2: 91.00 - 3 / 3: 26.00 - 4 / 4: 37.00 - 5 / 5: 72.00 - 6 / 6: 43.00 - 7 / 7: 87.00 -list samp_indices - VARIABLE : 1 + INT(NDAT * RANDU(_E[GE=DATA, M=1:7]+VALS)) - SUBSET : 7 by 8 points (E-F) - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 7.000 4.000 1.000 2.000 6.000 2.000 7.000 - 2 / 2: 4.000 4.000 7.000 3.000 7.000 7.000 4.000 - 3 / 3: 5.000 7.000 4.000 1.000 1.000 5.000 6.000 - 4 / 4: 6.000 6.000 1.000 2.000 3.000 7.000 4.000 - 5 / 5: 1.000 2.000 6.000 2.000 5.000 5.000 2.000 - 6 / 6: 6.000 4.000 6.000 7.000 3.000 5.000 3.000 - 7 / 7: 4.000 1.000 6.000 4.000 2.000 6.000 7.000 - 8 / 8: 2.000 7.000 7.000 1.000 3.000 4.000 7.000 -list bootstrap_resamples - VARIABLE : SAMPLEM_MULTI(DATA+0*SAMP_INDICES, SAMP_INDICES) - SUBSET : 7 by 8 points (E-F) - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 87.00 37.00 59.00 91.00 43.00 91.00 87.00 - 2 / 2: 37.00 37.00 87.00 26.00 87.00 87.00 37.00 - 3 / 3: 72.00 87.00 37.00 59.00 59.00 72.00 43.00 - 4 / 4: 43.00 43.00 59.00 91.00 26.00 87.00 37.00 - 5 / 5: 59.00 91.00 43.00 91.00 72.00 72.00 91.00 - 6 / 6: 43.00 37.00 43.00 87.00 26.00 72.00 26.00 - 7 / 7: 37.00 59.00 43.00 37.00 91.00 43.00 87.00 - 8 / 8: 91.00 87.00 87.00 59.00 26.00 37.00 87.00 - -! Sample 2D data in this way, samples in M as above for each Z - -let data2d = data + z[z=0:6:6] -list data2d - VARIABLE : DATA + Z[Z=0:6:6] - SUBSET : 2 by 7 points (Z-E) - 0 6 - 1 2 - 1 / 1: 59.00 65.00 - 2 / 2: 91.00 97.00 - 3 / 3: 26.00 32.00 - 4 / 4: 37.00 43.00 - 5 / 5: 72.00 78.00 - 6 / 6: 43.00 49.00 - 7 / 7: 87.00 93.00 - -let data2d_samp = samplem_multi (data2d, samp_indices) -list/z=1 data2d_samp !same as the 1-d sample of "data" just above - VARIABLE : SAMPLEM_MULTI (DATA2D, SAMP_INDICES) - SUBSET : 7 by 8 points (E-F) - Z : 0 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 87.00 37.00 59.00 91.00 43.00 91.00 87.00 - 2 / 2: 37.00 37.00 87.00 26.00 87.00 87.00 37.00 - 3 / 3: 72.00 87.00 37.00 59.00 59.00 72.00 43.00 - 4 / 4: 43.00 43.00 59.00 91.00 26.00 87.00 37.00 - 5 / 5: 59.00 91.00 43.00 91.00 72.00 72.00 91.00 - 6 / 6: 43.00 37.00 43.00 87.00 26.00 72.00 26.00 - 7 / 7: 37.00 59.00 43.00 37.00 91.00 43.00 87.00 - 8 / 8: 91.00 87.00 87.00 59.00 26.00 37.00 87.00 -list/z=6 data2d_samp - VARIABLE : SAMPLEM_MULTI (DATA2D, SAMP_INDICES) - SUBSET : 7 by 8 points (E-F) - Z : 6 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 93.00 43.00 65.00 97.00 49.00 97.00 93.00 - 2 / 2: 43.00 43.00 93.00 32.00 93.00 93.00 43.00 - 3 / 3: 78.00 93.00 43.00 65.00 65.00 78.00 49.00 - 4 / 4: 49.00 49.00 65.00 97.00 32.00 93.00 43.00 - 5 / 5: 65.00 97.00 49.00 97.00 78.00 78.00 97.00 - 6 / 6: 49.00 43.00 49.00 93.00 32.00 78.00 32.00 - 7 / 7: 43.00 65.00 49.00 43.00 97.00 49.00 93.00 - 8 / 8: 97.00 93.00 93.00 65.00 32.00 43.00 93.00 - -! SAMPLEI_multi - -define axis/x=11:15:1 aax_a -define axis/x=1:4:1 aax_b -define axis/y=0:1:1 sax -let a_1 = x[gx=aax_a]^2 -let a_2 = (4-y[gy=sax])^2 -let a_2d = a_1 + a_2 -let b_1 = 5-x[gx=aax_b] -let b_2 = 1+y[gy=sax] -let b_2d = b_1 + b_2 - 1 -list samplei_multi(a_2d, b_2d) - VARIABLE : SAMPLEI_MULTI(A_2D, B_2D) - SUBSET : 4 by 2 points (X-Y) - 1 2 3 4 - 1 2 3 4 - 0 / 1: 212.0 185.0 160.0 137.0 - 1 / 2: 234.0 205.0 178.0 153.0 -list samplei_multi(a_2d, b_1) - VARIABLE : SAMPLEI_MULTI(A_2D, B_1) - SUBSET : 4 by 2 points (X-Y) - 1 2 3 4 - 1 2 3 4 - 0 / 1: 212.0 185.0 160.0 137.0 - 1 / 2: 205.0 178.0 153.0 130.0 - -! Intentional errors -set mode ignore_error - -! Cannot sample the x-y data along t - -define axis/t=3:4:1 sax2 -let b_t = t[gt=sax2] -list samplei_multi(a_2d, b_t) - -! Cannot sample the y data along x, but can if we add an x axis to arg 1 - -list samplei_multi(a_2, b_1) -list samplei_multi(a_2+xsequence(0), b_1) - VARIABLE : SAMPLEI_MULTI(A_2+XSEQUENCE(0), B_1) - SUBSET : 4 by 2 points (X-Y) - 1 2 3 4 - 1 2 3 4 - 0 / 1: .... .... .... 16.00 - 1 / 2: .... .... .... 9.00 -list samplei_multi(a_2+0*xsequence({3,1,2}), b_1) - VARIABLE : SAMPLEI_MULTI(A_2+0*XSEQUENCE({3,1,2}), B_1) - SUBSET : 4 by 2 points (X-Y) - 1 2 3 4 - 1 2 3 4 - 0 / 1: .... 16.00 16.00 16.00 - 1 / 2: .... 9.00 9.00 9.00 - -set mode/last ignore_error - -! Not an error: The grid of the INDEX var in non-sample directions -! must be conformable with the grid of to-be-sampled. - -define axis/y=0:3:1 bigax -let c_2 = 1+y[gy=bigax] -let c_2d = c_2 + b_1 -list c_2d - VARIABLE : C_2 + B_1 - SUBSET : 4 by 4 points (X-Y) - 1 2 3 4 - 1 2 3 4 - 0 / 1: 5.000 4.000 3.000 2.000 - 1 / 2: 6.000 5.000 4.000 3.000 - 2 / 3: 7.000 6.000 5.000 4.000 - 3 / 4: 8.000 7.000 6.000 5.000 -list samplei_multi(a_2d, c_2d) - VARIABLE : SAMPLEI_MULTI(A_2D, C_2D) - SUBSET : 4 by 2 points (X-Y) - 1 2 3 4 - 1 2 3 4 - 0 / 1: 241.0 212.0 185.0 160.0 - 1 / 2: .... 234.0 205.0 178.0 - -! Monte Carlo resamples of a dataset, as outlined in #1924 -! Sample I data using an I-M st of indices. - -let data = {59,91,26,37,72,43,87} -let ndat = `data,r=isize` - !-> DEFINE VARIABLE ndat = 7 -let na = 8 -let vals = _m[m=1:`na`] - !-> DEFINE VARIABLE vals = _m[m=1:8] -let samp_indices = 1 + int(ndat * randu(x[gx=data,i=1:`ndat`]+vals)) - !-> DEFINE VARIABLE samp_indices = 1 + int(ndat * randu(x[gx=data,i=1:7]+vals)) -let bootstrap_resamples = samplei_multi(data+0*samp_indices, samp_indices) - -list data - VARIABLE : {59,91,26,37,72,43,87} - SUBSET : 7 points (X) - 1 / 1: 59.00 - 2 / 2: 91.00 - 3 / 3: 26.00 - 4 / 4: 37.00 - 5 / 5: 72.00 - 6 / 6: 43.00 - 7 / 7: 87.00 -list samp_indices - VARIABLE : 1 + INT(NDAT * RANDU(X[GX=DATA,I=1:7]+VALS)) - SUBSET : 7 by 8 points (X-E) - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 7.000 4.000 1.000 2.000 6.000 2.000 7.000 - 2 / 2: 4.000 4.000 7.000 3.000 7.000 7.000 4.000 - 3 / 3: 5.000 7.000 4.000 1.000 1.000 5.000 6.000 - 4 / 4: 6.000 6.000 1.000 2.000 3.000 7.000 4.000 - 5 / 5: 1.000 2.000 6.000 2.000 5.000 5.000 2.000 - 6 / 6: 6.000 4.000 6.000 7.000 3.000 5.000 3.000 - 7 / 7: 4.000 1.000 6.000 4.000 2.000 6.000 7.000 - 8 / 8: 2.000 7.000 7.000 1.000 3.000 4.000 7.000 -list bootstrap_resamples - VARIABLE : SAMPLEI_MULTI(DATA+0*SAMP_INDICES, SAMP_INDICES) - SUBSET : 7 by 8 points (X-E) - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 87.00 37.00 59.00 91.00 43.00 91.00 87.00 - 2 / 2: 37.00 37.00 87.00 26.00 87.00 87.00 37.00 - 3 / 3: 72.00 87.00 37.00 59.00 59.00 72.00 43.00 - 4 / 4: 43.00 43.00 59.00 91.00 26.00 87.00 37.00 - 5 / 5: 59.00 91.00 43.00 91.00 72.00 72.00 91.00 - 6 / 6: 43.00 37.00 43.00 87.00 26.00 72.00 26.00 - 7 / 7: 37.00 59.00 43.00 37.00 91.00 43.00 87.00 - 8 / 8: 91.00 87.00 87.00 59.00 26.00 37.00 87.00 - -! Sample 2D data in this way, samples in I for each Z - -let data2d = data + z[z=0:6:6] -list data2d - VARIABLE : DATA + Z[Z=0:6:6] - SUBSET : 7 by 2 points (X-Z) - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 0 / 1: 59.00 91.00 26.00 37.00 72.00 43.00 87.00 - 6 / 2: 65.00 97.00 32.00 43.00 78.00 49.00 93.00 - -let data2d_samp = samplei_multi (data2d, samp_indices) -list/z=1 data2d_samp !same as the 1-d sample of "data" just above - VARIABLE : SAMPLEI_MULTI (DATA2D, SAMP_INDICES) - SUBSET : 7 by 8 points (X-E) - Z : 0 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 87.00 37.00 59.00 91.00 43.00 91.00 87.00 - 2 / 2: 37.00 37.00 87.00 26.00 87.00 87.00 37.00 - 3 / 3: 72.00 87.00 37.00 59.00 59.00 72.00 43.00 - 4 / 4: 43.00 43.00 59.00 91.00 26.00 87.00 37.00 - 5 / 5: 59.00 91.00 43.00 91.00 72.00 72.00 91.00 - 6 / 6: 43.00 37.00 43.00 87.00 26.00 72.00 26.00 - 7 / 7: 37.00 59.00 43.00 37.00 91.00 43.00 87.00 - 8 / 8: 91.00 87.00 87.00 59.00 26.00 37.00 87.00 -list/z=6 data2d_samp - VARIABLE : SAMPLEI_MULTI (DATA2D, SAMP_INDICES) - SUBSET : 7 by 8 points (X-E) - Z : 6 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 93.00 43.00 65.00 97.00 49.00 97.00 93.00 - 2 / 2: 43.00 43.00 93.00 32.00 93.00 93.00 43.00 - 3 / 3: 78.00 93.00 43.00 65.00 65.00 78.00 49.00 - 4 / 4: 49.00 49.00 65.00 97.00 32.00 93.00 43.00 - 5 / 5: 65.00 97.00 49.00 97.00 78.00 78.00 97.00 - 6 / 6: 49.00 43.00 49.00 93.00 32.00 78.00 32.00 - 7 / 7: 43.00 65.00 49.00 43.00 97.00 49.00 93.00 - 8 / 8: 97.00 93.00 93.00 65.00 32.00 43.00 93.00 - -! SAMPLJ_multi - -define axis/y=11:15:1 aax_a -define axis/y=1:4:1 aax_b -define axis/x=0:1:1 sax -let a_1 = y[gy=aax_a]^2 -let a_2 = (4-x[gx=sax])^2 -let a_2d = a_1 + a_2 -let b_1 = 5-y[gy=aax_b] -let b_2 = 1+x[gx=sax] -let b_2d = b_1 + b_2 - 1 -list samplej_multi(a_2d, b_2d) - VARIABLE : SAMPLEJ_MULTI(A_2D, B_2D) - SUBSET : 2 by 4 points (X-Y) - 0 1 - 1 2 - 1 / 1: 212.0 234.0 - 2 / 2: 185.0 205.0 - 3 / 3: 160.0 178.0 - 4 / 4: 137.0 153.0 -list samplej_multi(a_2d, b_1) - VARIABLE : SAMPLEJ_MULTI(A_2D, B_1) - SUBSET : 2 by 4 points (X-Y) - 0 1 - 1 2 - 1 / 1: 212.0 205.0 - 2 / 2: 185.0 178.0 - 3 / 3: 160.0 153.0 - 4 / 4: 137.0 130.0 - -! Intentional errors -set mode ignore_error - -! Cannot sample the x-y data along t - -define axis/t=3:4:1 sax2 -let b_t = t[gt=sax2] -list samplej_multi(a_2d, b_t) - -! Cannot sample the x data along y, but can if we add a y axis to arg 1 - -list samplej_multi(a_2, b_1) -list samplej_multi(a_2+ysequence(0), b_1) - VARIABLE : SAMPLEJ_MULTI(A_2+YSEQUENCE(0), B_1) - SUBSET : 2 by 4 points (X-Y) - 0 1 - 1 2 - 1 / 1: .... .... - 2 / 2: .... .... - 3 / 3: .... .... - 4 / 4: 16.00 9.00 -list samplej_multi(a_2+0*ysequence({3,1,2}), b_1) - VARIABLE : SAMPLEJ_MULTI(A_2+0*YSEQUENCE({3,1,2}), B_1) - SUBSET : 2 by 4 points (X-Y) - 0 1 - 1 2 - 1 / 1: .... .... - 2 / 2: 16.00 9.00 - 3 / 3: 16.00 9.00 - 4 / 4: 16.00 9.00 - -set mode/last ignore_error - -! Not an error: The grid of the INDEX var in non-sample directions -! must be conformable with the grid of to-be-sampled. - -define axis/x=0:3:1 bigax -let c_2 = 1+x[gx=bigax] -let c_2d = c_2 + b_1 -list c_2d - VARIABLE : C_2 + B_1 - SUBSET : 4 by 4 points (X-Y) - 0 1 2 3 - 1 2 3 4 - 1 / 1: 5.000 6.000 7.000 8.000 - 2 / 2: 4.000 5.000 6.000 7.000 - 3 / 3: 3.000 4.000 5.000 6.000 - 4 / 4: 2.000 3.000 4.000 5.000 -list samplej_multi(a_2d, c_2d) - VARIABLE : SAMPLEJ_MULTI(A_2D, C_2D) - SUBSET : 2 by 4 points (X-Y) - 0 1 - 1 2 - 1 / 1: 241.0 .... - 2 / 2: 212.0 234.0 - 3 / 3: 185.0 205.0 - 4 / 4: 160.0 178.0 - -! Monte Carlo resamples of a dataset, as outlined in #1924 -! Sample Y data using an Y-N st of indices. - -let data = YSEQUENCE({59,91,26,37,72,43,87}) -let ndat = `data,r=jsize` - !-> DEFINE VARIABLE ndat = 7 -let na = 8 -let vals = _n[n=1:`na`] - !-> DEFINE VARIABLE vals = _n[n=1:8] -let samp_indices = 1 + int(ndat * randu(_y[gy=data, j=1:`ndat`]+vals)) - !-> DEFINE VARIABLE samp_indices = 1 + int(ndat * randu(_y[gy=data, j=1:7]+vals)) -let bootstrap_resamples = samplej_multi(data+0*samp_indices, samp_indices) - -list data - VARIABLE : YSEQUENCE({59,91,26,37,72,43,87}) - SUBSET : 7 points (Y) - 1 / 1: 59.00 - 2 / 2: 91.00 - 3 / 3: 26.00 - 4 / 4: 37.00 - 5 / 5: 72.00 - 6 / 6: 43.00 - 7 / 7: 87.00 -list samp_indices - VARIABLE : 1 + INT(NDAT * RANDU(_Y[GY=DATA, J=1:7]+VALS)) - SUBSET : 7 by 8 points (Y-F) - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 7.000 4.000 1.000 2.000 6.000 2.000 7.000 - 2 / 2: 4.000 4.000 7.000 3.000 7.000 7.000 4.000 - 3 / 3: 5.000 7.000 4.000 1.000 1.000 5.000 6.000 - 4 / 4: 6.000 6.000 1.000 2.000 3.000 7.000 4.000 - 5 / 5: 1.000 2.000 6.000 2.000 5.000 5.000 2.000 - 6 / 6: 6.000 4.000 6.000 7.000 3.000 5.000 3.000 - 7 / 7: 4.000 1.000 6.000 4.000 2.000 6.000 7.000 - 8 / 8: 2.000 7.000 7.000 1.000 3.000 4.000 7.000 -list bootstrap_resamples - VARIABLE : SAMPLEJ_MULTI(DATA+0*SAMP_INDICES, SAMP_INDICES) - SUBSET : 7 by 8 points (Y-F) - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 87.00 37.00 59.00 91.00 43.00 91.00 87.00 - 2 / 2: 37.00 37.00 87.00 26.00 87.00 87.00 37.00 - 3 / 3: 72.00 87.00 37.00 59.00 59.00 72.00 43.00 - 4 / 4: 43.00 43.00 59.00 91.00 26.00 87.00 37.00 - 5 / 5: 59.00 91.00 43.00 91.00 72.00 72.00 91.00 - 6 / 6: 43.00 37.00 43.00 87.00 26.00 72.00 26.00 - 7 / 7: 37.00 59.00 43.00 37.00 91.00 43.00 87.00 - 8 / 8: 91.00 87.00 87.00 59.00 26.00 37.00 87.00 - -! Sample 2D data in this way, samples in M as above for each Z - -let data2d = data + z[z=0:6:6] -list data2d - VARIABLE : DATA + Z[Z=0:6:6] - SUBSET : 7 by 2 points (Y-Z) - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 0 / 1: 59.00 91.00 26.00 37.00 72.00 43.00 87.00 - 6 / 2: 65.00 97.00 32.00 43.00 78.00 49.00 93.00 - -let data2d_samp = samplej_multi (data2d, samp_indices) -list/z=1 data2d_samp !same as the 1-d sample of "data" just above - VARIABLE : SAMPLEJ_MULTI (DATA2D, SAMP_INDICES) - SUBSET : 7 by 8 points (Y-F) - Z : 0 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 87.00 37.00 59.00 91.00 43.00 91.00 87.00 - 2 / 2: 37.00 37.00 87.00 26.00 87.00 87.00 37.00 - 3 / 3: 72.00 87.00 37.00 59.00 59.00 72.00 43.00 - 4 / 4: 43.00 43.00 59.00 91.00 26.00 87.00 37.00 - 5 / 5: 59.00 91.00 43.00 91.00 72.00 72.00 91.00 - 6 / 6: 43.00 37.00 43.00 87.00 26.00 72.00 26.00 - 7 / 7: 37.00 59.00 43.00 37.00 91.00 43.00 87.00 - 8 / 8: 91.00 87.00 87.00 59.00 26.00 37.00 87.00 -list/z=6 data2d_samp - VARIABLE : SAMPLEJ_MULTI (DATA2D, SAMP_INDICES) - SUBSET : 7 by 8 points (Y-F) - Z : 6 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 93.00 43.00 65.00 97.00 49.00 97.00 93.00 - 2 / 2: 43.00 43.00 93.00 32.00 93.00 93.00 43.00 - 3 / 3: 78.00 93.00 43.00 65.00 65.00 78.00 49.00 - 4 / 4: 49.00 49.00 65.00 97.00 32.00 93.00 43.00 - 5 / 5: 65.00 97.00 49.00 97.00 78.00 78.00 97.00 - 6 / 6: 49.00 43.00 49.00 93.00 32.00 78.00 32.00 - 7 / 7: 43.00 65.00 49.00 43.00 97.00 49.00 93.00 - 8 / 8: 97.00 93.00 93.00 65.00 32.00 43.00 93.00 - -! SAMPLEK_MULTI - -define axis/z=11:15:1 aax_a -define axis/z=1:4:1 aax_b -define axis/x=0:1:1 sax -let a_1 = z[gz=aax_a]^2 -let a_2 = (4-x[gx=sax])^2 -let a_2d = a_1 + a_2 -let b_1 = 5-z[gz=aax_b] -let b_2 = 1+x[gx=sax] -let b_2d = b_1 + b_2 - 1 -list samplek_multi(a_2d, b_2d) - VARIABLE : SAMPLEK_MULTI(A_2D, B_2D) - SUBSET : 2 by 4 points (X-Z) - 0 1 - 1 2 - 1 / 1: 212.0 234.0 - 2 / 2: 185.0 205.0 - 3 / 3: 160.0 178.0 - 4 / 4: 137.0 153.0 -list samplek_multi(a_2d, b_1) - VARIABLE : SAMPLEK_MULTI(A_2D, B_1) - SUBSET : 2 by 4 points (X-Z) - 0 1 - 1 2 - 1 / 1: 212.0 205.0 - 2 / 2: 185.0 178.0 - 3 / 3: 160.0 153.0 - 4 / 4: 137.0 130.0 - -! Intentional errors -set mode ignore_error - -! Cannot sample the x-z data along t - -define axis/t=3:4:1 sax2 -let b_t = t[gt=sax2] -list samplek_multi(a_2d, b_t) - -! Cannot sample the x data along x, but can if we add a z axis to arg 1 - -list samplek_multi(a_2, b_1) -list samplek_multi(a_2+zsequence(0), b_1) - VARIABLE : SAMPLEK_MULTI(A_2+ZSEQUENCE(0), B_1) - SUBSET : 2 by 4 points (X-Z) - 0 1 - 1 2 - 1 / 1: .... .... - 2 / 2: .... .... - 3 / 3: .... .... - 4 / 4: 16.00 9.00 -list samplek_multi(a_2+0*zsequence({3,1,2}), b_1) - VARIABLE : SAMPLEK_MULTI(A_2+0*ZSEQUENCE({3,1,2}), B_1) - SUBSET : 2 by 4 points (X-Z) - 0 1 - 1 2 - 1 / 1: .... .... - 2 / 2: 16.00 9.00 - 3 / 3: 16.00 9.00 - 4 / 4: 16.00 9.00 - -set mode/last ignore_error - -! Not an error: The grid of the INDEX var in non-sample directions -! must be conformable with the grid of to-be-sampled. - -define axis/x=0:3:1 bigax -let c_2 = 1+x[gx=bigax] -let c_2d = c_2 + b_1 -list c_2d - VARIABLE : C_2 + B_1 - SUBSET : 4 by 4 points (X-Z) - 0 1 2 3 - 1 2 3 4 - 1 / 1: 5.000 6.000 7.000 8.000 - 2 / 2: 4.000 5.000 6.000 7.000 - 3 / 3: 3.000 4.000 5.000 6.000 - 4 / 4: 2.000 3.000 4.000 5.000 -list samplek_multi(a_2d, c_2d) - VARIABLE : SAMPLEK_MULTI(A_2D, C_2D) - SUBSET : 2 by 4 points (X-Z) - 0 1 - 1 2 - 1 / 1: 241.0 .... - 2 / 2: 212.0 234.0 - 3 / 3: 185.0 205.0 - 4 / 4: 160.0 178.0 - -! Monte Carlo resamples of a dataset, as outlined in #1924 -! Sample Z data using an Z-N st of indices. - -let data = ZSEQUENCE({59,91,26,37,72,43,87}) -let ndat = `data,r=ksize` - !-> DEFINE VARIABLE ndat = 7 -let na = 8 -let vals = _n[n=1:`na`] - !-> DEFINE VARIABLE vals = _n[n=1:8] -let samp_indices = 1 + int(ndat * randu(_z[gz=data, k=1:`ndat`]+vals)) - !-> DEFINE VARIABLE samp_indices = 1 + int(ndat * randu(_z[gz=data, k=1:7]+vals)) -let bootstrap_resamples = samplek_multi(data+0*samp_indices, samp_indices) - -list data - VARIABLE : ZSEQUENCE({59,91,26,37,72,43,87}) - SUBSET : 7 points (Z) - 1 / 1: 59.00 - 2 / 2: 91.00 - 3 / 3: 26.00 - 4 / 4: 37.00 - 5 / 5: 72.00 - 6 / 6: 43.00 - 7 / 7: 87.00 -list samp_indices - VARIABLE : 1 + INT(NDAT * RANDU(_Z[GZ=DATA, K=1:7]+VALS)) - SUBSET : 7 by 8 points (Z-F) - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 7.000 4.000 1.000 2.000 6.000 2.000 7.000 - 2 / 2: 4.000 4.000 7.000 3.000 7.000 7.000 4.000 - 3 / 3: 5.000 7.000 4.000 1.000 1.000 5.000 6.000 - 4 / 4: 6.000 6.000 1.000 2.000 3.000 7.000 4.000 - 5 / 5: 1.000 2.000 6.000 2.000 5.000 5.000 2.000 - 6 / 6: 6.000 4.000 6.000 7.000 3.000 5.000 3.000 - 7 / 7: 4.000 1.000 6.000 4.000 2.000 6.000 7.000 - 8 / 8: 2.000 7.000 7.000 1.000 3.000 4.000 7.000 -list bootstrap_resamples - VARIABLE : SAMPLEK_MULTI(DATA+0*SAMP_INDICES, SAMP_INDICES) - SUBSET : 7 by 8 points (Z-F) - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 87.00 37.00 59.00 91.00 43.00 91.00 87.00 - 2 / 2: 37.00 37.00 87.00 26.00 87.00 87.00 37.00 - 3 / 3: 72.00 87.00 37.00 59.00 59.00 72.00 43.00 - 4 / 4: 43.00 43.00 59.00 91.00 26.00 87.00 37.00 - 5 / 5: 59.00 91.00 43.00 91.00 72.00 72.00 91.00 - 6 / 6: 43.00 37.00 43.00 87.00 26.00 72.00 26.00 - 7 / 7: 37.00 59.00 43.00 37.00 91.00 43.00 87.00 - 8 / 8: 91.00 87.00 87.00 59.00 26.00 37.00 87.00 - -! Sample 2D data in this way, samples in M as above for each Z - -let data2d = data + y[y=0:6:6] -list data2d - VARIABLE : DATA + Y[Y=0:6:6] - SUBSET : 2 by 7 points (Y-Z) - 0 6 - 1 2 - 1 / 1: 59.00 65.00 - 2 / 2: 91.00 97.00 - 3 / 3: 26.00 32.00 - 4 / 4: 37.00 43.00 - 5 / 5: 72.00 78.00 - 6 / 6: 43.00 49.00 - 7 / 7: 87.00 93.00 - -let data2d_samp = samplek_multi (data2d, samp_indices) -list/y=1 data2d_samp !same as the 1-d sample of "data" just above - VARIABLE : SAMPLEK_MULTI (DATA2D, SAMP_INDICES) - SUBSET : 7 by 8 points (Z-F) - Y : 0 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 87.00 37.00 59.00 91.00 43.00 91.00 87.00 - 2 / 2: 37.00 37.00 87.00 26.00 87.00 87.00 37.00 - 3 / 3: 72.00 87.00 37.00 59.00 59.00 72.00 43.00 - 4 / 4: 43.00 43.00 59.00 91.00 26.00 87.00 37.00 - 5 / 5: 59.00 91.00 43.00 91.00 72.00 72.00 91.00 - 6 / 6: 43.00 37.00 43.00 87.00 26.00 72.00 26.00 - 7 / 7: 37.00 59.00 43.00 37.00 91.00 43.00 87.00 - 8 / 8: 91.00 87.00 87.00 59.00 26.00 37.00 87.00 -list/y=6 data2d_samp - VARIABLE : SAMPLEK_MULTI (DATA2D, SAMP_INDICES) - SUBSET : 7 by 8 points (Z-F) - Y : 6 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 93.00 43.00 65.00 97.00 49.00 97.00 93.00 - 2 / 2: 43.00 43.00 93.00 32.00 93.00 93.00 43.00 - 3 / 3: 78.00 93.00 43.00 65.00 65.00 78.00 49.00 - 4 / 4: 49.00 49.00 65.00 97.00 32.00 93.00 43.00 - 5 / 5: 65.00 97.00 49.00 97.00 78.00 78.00 97.00 - 6 / 6: 49.00 43.00 49.00 93.00 32.00 78.00 32.00 - 7 / 7: 43.00 65.00 49.00 43.00 97.00 49.00 93.00 - 8 / 8: 97.00 93.00 93.00 65.00 32.00 43.00 93.00 - -! SAMPLEL_MULTI - -define axis/t=11:15:1 aax_a -define axis/t=1:4:1 aax_b -define axis/x=0:1:1 sax -let a_1 = t[gt=aax_a]^2 -let a_2 = (4-x[gx=sax])^2 -let a_2d = a_1 + a_2 -let b_1 = 5-t[gt=aax_b] -let b_2 = 1+x[gx=sax] -let b_2d = b_1 + b_2 - 1 -list samplel_multi(a_2d, b_2d) - VARIABLE : SAMPLEL_MULTI(A_2D, B_2D) - SUBSET : 2 by 4 points (X-T) - 0 1 - 1 2 - 1 / 1: 212.0 234.0 - 2 / 2: 185.0 205.0 - 3 / 3: 160.0 178.0 - 4 / 4: 137.0 153.0 -list samplel_multi(a_2d, b_1) - VARIABLE : SAMPLEL_MULTI(A_2D, B_1) - SUBSET : 2 by 4 points (X-T) - 0 1 - 1 2 - 1 / 1: 212.0 205.0 - 2 / 2: 185.0 178.0 - 3 / 3: 160.0 153.0 - 4 / 4: 137.0 130.0 - -! Intentional errors -set mode ignore_error - -! Cannot sample the x-t data along F - -define axis/f=3:4:1 sax2 -let b_f = _F[gf=sax2] -list samplel_multi(a_2d, b_f) - -! Cannot sample the x data along t, but can if we add a t axis to arg 1 - -list samplel_multi(a_2, b_1) -list samplel_multi(a_2+tsequence(0), b_1) - VARIABLE : SAMPLEL_MULTI(A_2+TSEQUENCE(0), B_1) - SUBSET : 2 by 4 points (X-T) - 0 1 - 1 2 - 1 / 1: .... .... - 2 / 2: .... .... - 3 / 3: .... .... - 4 / 4: 16.00 9.00 -list samplel_multi(a_2+0*tsequence({3,1,2}), b_1) - VARIABLE : SAMPLEL_MULTI(A_2+0*TSEQUENCE({3,1,2}), B_1) - SUBSET : 2 by 4 points (X-T) - 0 1 - 1 2 - 1 / 1: .... .... - 2 / 2: 16.00 9.00 - 3 / 3: 16.00 9.00 - 4 / 4: 16.00 9.00 - -set mode/last ignore_error - -! Not an error: The grid of the INDEX var in non-sample directions -! must be conformable with the grid of to-be-sampled. - -define axis/x=0:3:1 bigax -let c_2 = 1+x[gx=bigax] -let c_2d = c_2 + b_1 -list c_2d - VARIABLE : C_2 + B_1 - SUBSET : 4 by 4 points (X-T) - 0 1 2 3 - 1 2 3 4 - 1 / 1: 5.000 6.000 7.000 8.000 - 2 / 2: 4.000 5.000 6.000 7.000 - 3 / 3: 3.000 4.000 5.000 6.000 - 4 / 4: 2.000 3.000 4.000 5.000 -list samplel_multi(a_2d, c_2d) - VARIABLE : SAMPLEL_MULTI(A_2D, C_2D) - SUBSET : 2 by 4 points (X-T) - 0 1 - 1 2 - 1 / 1: 241.0 .... - 2 / 2: 212.0 234.0 - 3 / 3: 185.0 205.0 - 4 / 4: 160.0 178.0 - -! Monte Carlo resamples of a dataset, as outlined in #1924 -! Sample Z data using an T-N st of indices. - -let data = TSEQUENCE({59,91,26,37,72,43,87}) -let ndat = `data,r=lsize` - !-> DEFINE VARIABLE ndat = 7 -let na = 8 -let vals = _n[n=1:`na`] - !-> DEFINE VARIABLE vals = _n[n=1:8] -let samp_indices = 1 + int(ndat * randu(_t[gt=data, l=1:`ndat`]+vals)) - !-> DEFINE VARIABLE samp_indices = 1 + int(ndat * randu(_t[gt=data, l=1:7]+vals)) -let bootstrap_resamples = samplel_multi(data+0*samp_indices, samp_indices) - -list data - VARIABLE : TSEQUENCE({59,91,26,37,72,43,87}) - SUBSET : 7 points (T) - 1 / 1: 59.00 - 2 / 2: 91.00 - 3 / 3: 26.00 - 4 / 4: 37.00 - 5 / 5: 72.00 - 6 / 6: 43.00 - 7 / 7: 87.00 -list samp_indices - VARIABLE : 1 + INT(NDAT * RANDU(_T[GT=DATA, L=1:7]+VALS)) - SUBSET : 7 by 8 points (T-F) - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 7.000 4.000 1.000 2.000 6.000 2.000 7.000 - 2 / 2: 4.000 4.000 7.000 3.000 7.000 7.000 4.000 - 3 / 3: 5.000 7.000 4.000 1.000 1.000 5.000 6.000 - 4 / 4: 6.000 6.000 1.000 2.000 3.000 7.000 4.000 - 5 / 5: 1.000 2.000 6.000 2.000 5.000 5.000 2.000 - 6 / 6: 6.000 4.000 6.000 7.000 3.000 5.000 3.000 - 7 / 7: 4.000 1.000 6.000 4.000 2.000 6.000 7.000 - 8 / 8: 2.000 7.000 7.000 1.000 3.000 4.000 7.000 -list bootstrap_resamples - VARIABLE : SAMPLEL_MULTI(DATA+0*SAMP_INDICES, SAMP_INDICES) - SUBSET : 7 by 8 points (T-F) - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 87.00 37.00 59.00 91.00 43.00 91.00 87.00 - 2 / 2: 37.00 37.00 87.00 26.00 87.00 87.00 37.00 - 3 / 3: 72.00 87.00 37.00 59.00 59.00 72.00 43.00 - 4 / 4: 43.00 43.00 59.00 91.00 26.00 87.00 37.00 - 5 / 5: 59.00 91.00 43.00 91.00 72.00 72.00 91.00 - 6 / 6: 43.00 37.00 43.00 87.00 26.00 72.00 26.00 - 7 / 7: 37.00 59.00 43.00 37.00 91.00 43.00 87.00 - 8 / 8: 91.00 87.00 87.00 59.00 26.00 37.00 87.00 - -! Sample 2D data in this way, samples in M as above for each Z - -let data2d = data + y[y=0:6:6] -list data2d - VARIABLE : DATA + Y[Y=0:6:6] - SUBSET : 2 by 7 points (Y-T) - 0 6 - 1 2 - 1 / 1: 59.00 65.00 - 2 / 2: 91.00 97.00 - 3 / 3: 26.00 32.00 - 4 / 4: 37.00 43.00 - 5 / 5: 72.00 78.00 - 6 / 6: 43.00 49.00 - 7 / 7: 87.00 93.00 - -let data2d_samp = samplel_multi (data2d, samp_indices) -list/y=1 data2d_samp !same as the 1-d sample of "data" just above - VARIABLE : SAMPLEL_MULTI (DATA2D, SAMP_INDICES) - SUBSET : 7 by 8 points (T-F) - Y : 0 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 87.00 37.00 59.00 91.00 43.00 91.00 87.00 - 2 / 2: 37.00 37.00 87.00 26.00 87.00 87.00 37.00 - 3 / 3: 72.00 87.00 37.00 59.00 59.00 72.00 43.00 - 4 / 4: 43.00 43.00 59.00 91.00 26.00 87.00 37.00 - 5 / 5: 59.00 91.00 43.00 91.00 72.00 72.00 91.00 - 6 / 6: 43.00 37.00 43.00 87.00 26.00 72.00 26.00 - 7 / 7: 37.00 59.00 43.00 37.00 91.00 43.00 87.00 - 8 / 8: 91.00 87.00 87.00 59.00 26.00 37.00 87.00 -list/y=6 data2d_samp - VARIABLE : SAMPLEL_MULTI (DATA2D, SAMP_INDICES) - SUBSET : 7 by 8 points (T-F) - Y : 6 - 1 2 3 4 5 6 7 - 1 2 3 4 5 6 7 - 1 / 1: 93.00 43.00 65.00 97.00 49.00 97.00 93.00 - 2 / 2: 43.00 43.00 93.00 32.00 93.00 93.00 43.00 - 3 / 3: 78.00 93.00 43.00 65.00 65.00 78.00 49.00 - 4 / 4: 49.00 49.00 65.00 97.00 32.00 93.00 43.00 - 5 / 5: 65.00 97.00 49.00 97.00 78.00 78.00 97.00 - 6 / 6: 49.00 43.00 49.00 93.00 32.00 78.00 32.00 - 7 / 7: 43.00 65.00 49.00 43.00 97.00 49.00 93.00 - 8 / 8: 97.00 93.00 93.00 65.00 32.00 43.00 93.00 - -! SAMPLEN_MULTI - -define axis/f=11:15:1 aax_a -define axis/f=1:4:1 aax_b -define axis/x=0:1:1 sax -let a_1 = _f[gf=aax_a]^2 -let a_2 = (4-x[gx=sax])^2 -let a_2d = a_1 + a_2 -let b_1 = 5-_f[gf=aax_b] -let b_2 = 1+x[gx=sax] -let b_2d = b_1 + b_2 - 1 -list samplen_multi(a_2d, b_2d) - VARIABLE : SAMPLEN_MULTI(A_2D, B_2D) - SUBSET : 2 by 4 points (X-F) - 0 1 - 1 2 - 1 / 1: 212.0 234.0 - 2 / 2: 185.0 205.0 - 3 / 3: 160.0 178.0 - 4 / 4: 137.0 153.0 -list samplen_multi(a_2d, b_1) - VARIABLE : SAMPLEN_MULTI(A_2D, B_1) - SUBSET : 2 by 4 points (X-F) - 0 1 - 1 2 - 1 / 1: 212.0 205.0 - 2 / 2: 185.0 178.0 - 3 / 3: 160.0 153.0 - 4 / 4: 137.0 130.0 - -! Intentional errors -set mode ignore_error - -! Cannot sample the x-f data along T - -define axis/t=3:4:1 sax2 -let b_t = t[gt=sax2] -list samplen_multi(a_2d, b_t) - -! Cannot sample the x data along f, but can if we add an f axis to arg 1 - -list samplen_multi(a_2, b_1) -list samplen_multi(a_2+fsequence(0), b_1) - VARIABLE : SAMPLEN_MULTI(A_2+FSEQUENCE(0), B_1) - SUBSET : 2 by 4 points (X-F) - 0 1 - 1 2 - 1 / 1: .... .... - 2 / 2: .... .... - 3 / 3: .... .... - 4 / 4: 16.00 9.00 -list samplen_multi(a_2+0*fsequence({3,1,2}), b_1) - VARIABLE : SAMPLEN_MULTI(A_2+0*FSEQUENCE({3,1,2}), B_1) - SUBSET : 2 by 4 points (X-F) - 0 1 - 1 2 - 1 / 1: .... .... - 2 / 2: 16.00 9.00 - 3 / 3: 16.00 9.00 - 4 / 4: 16.00 9.00 - -set mode/last ignore_error - -! Not an error: The grid of the INDEX var in non-sample directions -! must be conformable with the grid of to-be-sampled. - -define axis/x=0:3:1 bigax -let c_2 = 1+x[gx=bigax] -let c_2d = c_2 + b_1 -list c_2d - VARIABLE : C_2 + B_1 - SUBSET : 4 by 4 points (X-F) - 0 1 2 3 - 1 2 3 4 - 1 / 1: 5.000 6.000 7.000 8.000 - 2 / 2: 4.000 5.000 6.000 7.000 - 3 / 3: 3.000 4.000 5.000 6.000 - 4 / 4: 2.000 3.000 4.000 5.000 -list samplen_multi(a_2d, c_2d) - VARIABLE : SAMPLEN_MULTI(A_2D, C_2D) - SUBSET : 2 by 4 points (X-F) - 0 1 - 1 2 - 1 / 1: 241.0 .... - 2 / 2: 212.0 234.0 - 3 / 3: 185.0 205.0 - 4 / 4: 160.0 178.0 - -! Monte Carlo resamples of a dataset, as outlined in #1924 -! Sample F data using an T-M st of indices. - -let data = FSEQUENCE({59,91,26,37,72,43,87}) -let ndat = `data,r=nsize` - !-> DEFINE VARIABLE ndat = 7 -let na = 8 -let vals = _m[m=1:`na`] - !-> DEFINE VARIABLE vals = _m[m=1:8] -let samp_indices = 1 + int(ndat * randu(_f[gy=data, n=1:`ndat`]+vals)) - !-> DEFINE VARIABLE samp_indices = 1 + int(ndat * randu(_f[gy=data, n=1:7]+vals)) -let bootstrap_resamples = samplen_multi(data+0*samp_indices, samp_indices) - -list data - VARIABLE : FSEQUENCE({59,91,26,37,72,43,87}) - SUBSET : 7 points (F) - 1 / 1: 59.00 - 2 / 2: 91.00 - 3 / 3: 26.00 - 4 / 4: 37.00 - 5 / 5: 72.00 - 6 / 6: 43.00 - 7 / 7: 87.00 -list samp_indices - VARIABLE : 1 + INT(NDAT * RANDU(_F[GY=DATA, N=1:7]+VALS)) - SUBSET : 8 by 7 points (E-F) - 1 2 3 4 5 6 7 8 - 1 2 3 4 5 6 7 8 - 1 / 1: 7.000 4.000 1.000 2.000 6.000 2.000 7.000 4.000 - 2 / 2: 4.000 7.000 3.000 7.000 7.000 4.000 5.000 7.000 - 3 / 3: 4.000 1.000 1.000 5.000 6.000 6.000 6.000 1.000 - 4 / 4: 2.000 3.000 7.000 4.000 1.000 2.000 6.000 2.000 - 5 / 5: 5.000 5.000 2.000 6.000 4.000 6.000 7.000 3.000 - 6 / 6: 5.000 3.000 4.000 1.000 6.000 4.000 2.000 6.000 - 7 / 7: 7.000 2.000 7.000 7.000 1.000 3.000 4.000 7.000 -list bootstrap_resamples - VARIABLE : SAMPLEN_MULTI(DATA+0*SAMP_INDICES, SAMP_INDICES) - SUBSET : 8 by 7 points (E-F) - 1 2 3 4 5 6 7 8 - 1 2 3 4 5 6 7 8 - 1 / 1: 87.00 37.00 59.00 91.00 43.00 91.00 87.00 37.00 - 2 / 2: 37.00 87.00 26.00 87.00 87.00 37.00 72.00 87.00 - 3 / 3: 37.00 59.00 59.00 72.00 43.00 43.00 43.00 59.00 - 4 / 4: 91.00 26.00 87.00 37.00 59.00 91.00 43.00 91.00 - 5 / 5: 72.00 72.00 91.00 43.00 37.00 43.00 87.00 26.00 - 6 / 6: 72.00 26.00 37.00 59.00 43.00 37.00 91.00 43.00 - 7 / 7: 87.00 91.00 87.00 87.00 59.00 26.00 37.00 87.00 - -! Sample 2D data in this way, samples in M as above for each Z - -let data2d = data + z[z=0:6:6] -list data2d - VARIABLE : DATA + Z[Z=0:6:6] - SUBSET : 2 by 7 points (Z-F) - 0 6 - 1 2 - 1 / 1: 59.00 65.00 - 2 / 2: 91.00 97.00 - 3 / 3: 26.00 32.00 - 4 / 4: 37.00 43.00 - 5 / 5: 72.00 78.00 - 6 / 6: 43.00 49.00 - 7 / 7: 87.00 93.00 - -let data2d_samp = samplen_multi (data2d, samp_indices) -list/z=1 data2d_samp !same as the 1-d sample of "data" just above - VARIABLE : SAMPLEN_MULTI (DATA2D, SAMP_INDICES) - SUBSET : 8 by 7 points (E-F) - Z : 0 - 1 2 3 4 5 6 7 8 - 1 2 3 4 5 6 7 8 - 1 / 1: 87.00 37.00 59.00 91.00 43.00 91.00 87.00 37.00 - 2 / 2: 37.00 87.00 26.00 87.00 87.00 37.00 72.00 87.00 - 3 / 3: 37.00 59.00 59.00 72.00 43.00 43.00 43.00 59.00 - 4 / 4: 91.00 26.00 87.00 37.00 59.00 91.00 43.00 91.00 - 5 / 5: 72.00 72.00 91.00 43.00 37.00 43.00 87.00 26.00 - 6 / 6: 72.00 26.00 37.00 59.00 43.00 37.00 91.00 43.00 - 7 / 7: 87.00 91.00 87.00 87.00 59.00 26.00 37.00 87.00 -list/z=6 data2d_samp - VARIABLE : SAMPLEN_MULTI (DATA2D, SAMP_INDICES) - SUBSET : 8 by 7 points (E-F) - Z : 6 - 1 2 3 4 5 6 7 8 - 1 2 3 4 5 6 7 8 - 1 / 1: 93.00 43.00 65.00 97.00 49.00 97.00 93.00 43.00 - 2 / 2: 43.00 93.00 32.00 93.00 93.00 43.00 78.00 93.00 - 3 / 3: 43.00 65.00 65.00 78.00 49.00 49.00 49.00 65.00 - 4 / 4: 97.00 32.00 93.00 43.00 65.00 97.00 49.00 97.00 - 5 / 5: 78.00 78.00 97.00 49.00 43.00 49.00 93.00 32.00 - 6 / 6: 78.00 32.00 43.00 65.00 49.00 43.00 97.00 49.00 - 7 / 7: 93.00 97.00 93.00 93.00 65.00 32.00 43.00 93.00 - -! *********** v7.51 Additions *********** - -GO bn_reset bn751_bug_fixes -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn751_bug_fixes -GO bn751_bug_fixes -! bn751_bug_fixes.jnl -! test various fixes that went into version 7.51 -! 4/19 *acm* - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_grave_parsing -! err75_grave_parsing -! 4/29/19 ACM -! See issue 1927. Error parsing the grave-accent expr -! when a previous command had qualifiers - -let obs_yr1 = 1880 -let obs_yr2 = 2014 - -! This succeeded -let/title="Observations (`obs_yr1`-`obs_yr2`)"/unit="#C" ts_obs = sst - !-> DEFINE VARIABLE/title="Observations (1880-2014)"/unit="#C" ts_obs = sst - -let obs_yr1 = 1880 -let obs_yr2 = 2014 -def ax/t=1-jan-1880:1-jan-2015:`1/12`/unit=years/edge/cal=noleap tax_hist - !-> def ax/t=1-jan-1880:1-jan-2015:0.08333333333333333/unit=years/edge/cal=noleap tax_hist - -! This failed with a syntax error -let/title="Observations (`obs_yr1`-`obs_yr2`)"/unit="#C" ts_obs = sst - !-> DEFINE VARIABLE/title="Observations (1880-2014)"/unit="#C" ts_obs = sst - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_tm_fmt_ints -! err75_tm_fmt_ints -! 5/06/19 KMS -! See issue 1929. Integer overflow in tm_fmt.F and tm_fmt_user.F - -! This succeeded -say `2.2100001 * 1e8` - !-> MESSAGE/CONTINUE 221000010 -221000010 - -! This crashed the program (undetected integer overflow when represented as an integer) -say `2.2100001 * 1e9` - !-> MESSAGE/CONTINUE 2210000100 -2210000100 - -! Try some other variants -say `2.2100001 * 1e12` - !-> MESSAGE/CONTINUE 2210000100000 -2210000100000 -say `2.2100001 * 1e-2` - !-> MESSAGE/CONTINUE 0.022100001 -0.022100001 -say `2.00` - !-> MESSAGE/CONTINUE 2 -2 -say `2.` - !-> MESSAGE/CONTINUE 2 -2 - -! Add even more magnitudes -say `2.2100001 * 1e13` - !-> MESSAGE/CONTINUE 22100001000000 -22100001000000 -say `2.2100001 * 1e16` - !-> MESSAGE/CONTINUE 2.2100001E+16 -2.2100001E+16 -say `2.2100001 * 1e19` - !-> MESSAGE/CONTINUE 2.2100001E+19 -2.2100001E+19 - -say `-2.2100001 * 1e13` - !-> MESSAGE/CONTINUE -22100001000000 --22100001000000 -say `-2.2100001 * 1e-13` - !-> MESSAGE/CONTINUE -2.2100001E-13 --2.2100001E-13 -say `-2.2100001 * 1e-8` - !-> MESSAGE/CONTINUE -2.2100001E-08 --2.2100001E-08 -say `-2.2100001 * 1e-5` - !-> MESSAGE/CONTINUE -0.000022100001 --0.000022100001 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_listings_conformable -! err75_listings_conformable.jnl -! issue 1932 5/16/2019 -! -! listing 1-D yvar, xvar, along with a 2-D variable twoDvar got the data in -! twoDvar wrong, when the yvar is listed first; this triggers the listing -! to be done with Y varying fastest, but the data wasn't permuted to do that. - -let var = 100*{1,,3,4,,6,7,8,,10,11,12} -define axis/x=1:4:1 xaxis -define axis/y=1:3:1 yaxis -let xyvar = x[gx=xaxis] + y[gy=yaxis] -let testvar = reshape (var, xyvar) -list testvar - VARIABLE : RESHAPE (VAR, XYVAR) - SUBSET : 4 by 3 points (X-Y) - 1 2 3 4 - 1 2 3 4 - 1 / 1: 100. .... 300. 400. - 2 / 2: .... 600. 700. 800. - 3 / 3: .... 1000. 1100. 1200. - -! this is ok x varying fastest in the 3-var listing -list x[gx=testvar], y[gy=testvar], testvar - X: 0.5 to 4.5 - Y: 0.5 to 3.5 - Column 1: X is X (axis XAXIS) - Column 2: Y is Y (axis YAXIS) - Column 3: TESTVAR is RESHAPE (VAR, XYVAR) - X Y TESTVAR - ---- J:1 Y: 1 -1 / 1: 1.000 1.000 100. -2 / 2: 2.000 1.000 .... -3 / 3: 3.000 1.000 300. -4 / 4: 4.000 1.000 400. - ---- J:2 Y: 2 -1 / 1: 1.000 2.000 .... -2 / 2: 2.000 2.000 600. -3 / 3: 3.000 2.000 700. -4 / 4: 4.000 2.000 800. - ---- J:3 Y: 3 -1 / 1: 1.000 3.000 .... -2 / 2: 2.000 3.000 1000. -3 / 3: 3.000 3.000 1100. -4 / 4: 4.000 3.000 1200. - -! This was wrong, y varying fastest in the 3-var listing -list y[gy=testvar], x[gx=testvar], testvar - Y: 0.5 to 3.5 - X: 0.5 to 4.5 - Column 1: Y is Y (axis YAXIS) - Column 2: X is X (axis XAXIS) - Column 3: TESTVAR is RESHAPE (VAR, XYVAR) - Y X TESTVAR - ---- I:1 X: 1 -1 / 1: 1.000 1.000 100. -2 / 2: 2.000 1.000 .... -3 / 3: 3.000 1.000 .... - ---- I:2 X: 2 -1 / 1: 1.000 2.000 .... -2 / 2: 2.000 2.000 600. -3 / 3: 3.000 2.000 1000. - ---- I:3 X: 3 -1 / 1: 1.000 3.000 300. -2 / 2: 2.000 3.000 700. -3 / 3: 3.000 3.000 1100. - ---- I:4 X: 4 -1 / 1: 1.000 4.000 400. -2 / 2: 2.000 4.000 800. -3 / 3: 3.000 4.000 1200. - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_time_origin -! err75_time_origin.jnl -! test of time_origin attribute value on an time axis - -LET ii = _I[I=1:24] -LET offset1970 = DAYS1900(1970,1,1) -LET month = MOD(ii-1,12)+1 -LET year = 1970 + INT((ii-1)/12) - -DEFINE AXIS/T0="1-JAN-1970"/EDGES/UNITS=days tmnth = DAYS1900(year,month,1) - offset1970 -LET mytime = _T[GT=tmnth] -show axis tmnth - name axis # pts start end - tmnth TIME 23 i 16-JAN-1970 12:00 16-NOV-1971 00:00 -T0 = 1-JAN-1970 - Axis span (to cell edges) = 699 -SAVE /FILE=time_origin_1.nc /CLOBBER mytime -CAN VAR mytime -CAN AXIS tmnth - -SPAWN ncdump time_origin_1.nc | grep -i tmnth - tmnth = UNLIMITED ; // (23 currently) - double tmnth(tmnth) ; - tmnth:units = "days since 1970-01-01" ; - tmnth:axis = "T" ; - tmnth:bounds = "tmnth_bnds" ; - tmnth:time_origin = "01-JAN-1970" ; - tmnth:standard_name = "time" ; - double tmnth_bnds(tmnth, bnds) ; - double mytime(tmnth) ; - mytime:long_name = "_T[GT=TMNTH]" ; - tmnth = 15.5, 45, 74.5, 105, 135.5, 166, 196.5, 227.5, 258, 288.5, 319, - tmnth_bnds = - -DEFINE AXIS/T0="01-JAN-1970"/EDGES/UNITS=days tmnth = DAYS1900(year,month,1) - offset1970 -show axis tmnth - name axis # pts start end - tmnth TIME 23 i 16-JAN-1970 12:00 16-NOV-1971 00:00 -T0 = 01-JAN-1970 - Axis span (to cell edges) = 699 - -LET mytime = _T[GT=tmnth] -SAVE /FILE=time_origin_01.nc /CLOBBER mytime -CAN VAR mytime -CAN AXIS tmnth - -SPAWN ncdump time_origin_01.nc | grep -i tmnth - tmnth = UNLIMITED ; // (23 currently) - double tmnth(tmnth) ; - tmnth:units = "days since 1970-01-01" ; - tmnth:axis = "T" ; - tmnth:bounds = "tmnth_bnds" ; - tmnth:time_origin = "01-JAN-1970" ; - tmnth:standard_name = "time" ; - double tmnth_bnds(tmnth, bnds) ; - double mytime(tmnth) ; - mytime:long_name = "_T[GT=TMNTH]" ; - tmnth = 15.5, 45, 74.5, 105, 135.5, 166, 196.5, 227.5, 258, 288.5, 319, - tmnth_bnds = - -! or can define the axis with the time origin in ISO time -DEFINE AXIS/T0="1970-01-01"/EDGES/UNITS=days tmnth = DAYS1900(year,month,1) - offset1970 -show axis tmnth - name axis # pts start end - tmnth TIME 23 i 16-JAN-1970 12:00 16-NOV-1971 00:00 -T0 = 01-JAN-1970 - Axis span (to cell edges) = 699 - -LET mytime = _T[GT=tmnth] -SAVE /FILE=time_origin_01.nc /CLOBBER mytime -CAN VAR mytime -CAN AXIS tmnth - -SPAWN ncdump time_origin_01.nc | grep -i tmnth - tmnth = UNLIMITED ; // (23 currently) - double tmnth(tmnth) ; - tmnth:units = "days since 1970-01-01" ; - tmnth:axis = "T" ; - tmnth:bounds = "tmnth_bnds" ; - tmnth:time_origin = "01-JAN-1970" ; - tmnth:standard_name = "time" ; - double tmnth_bnds(tmnth, bnds) ; - double mytime(tmnth) ; - mytime:long_name = "_T[GT=TMNTH]" ; - tmnth = 15.5, 45, 74.5, 105, 135.5, 166, 196.5, 227.5, 258, 288.5, 319, - tmnth_bnds = - - -! and/or can output the time string in iso time - -DEFINE AXIS/T0="01-JAN-1970"/EDGES/UNITS=days tmnth = DAYS1900(year,month,1) - offset1970 -show axis tmnth - name axis # pts start end - tmnth TIME 23 i 16-JAN-1970 12:00 16-NOV-1971 00:00 -T0 = 01-JAN-1970 - Axis span (to cell edges) = 699 - -LET mytime = _T[GT=tmnth] -SET MODE DATE:ISO -SAVE /FILE=time_origin_01.nc /CLOBBER mytime -CAN VAR mytime -CAN AXIS tmnth - -SPAWN ncdump time_origin_01.nc | grep -i tmnth - tmnth = UNLIMITED ; // (23 currently) - double tmnth(tmnth) ; - tmnth:units = "days since 1970-01-01" ; - tmnth:axis = "T" ; - tmnth:bounds = "tmnth_bnds" ; - tmnth:time_origin = "1970-01-01" ; - tmnth:standard_name = "time" ; - double tmnth_bnds(tmnth, bnds) ; - double mytime(tmnth) ; - mytime:long_name = "_T[GT=TMNTH]" ; - tmnth = 15.5, 45, 74.5, 105, 135.5, 166, 196.5, 227.5, 258, 288.5, 319, - tmnth_bnds = - - -CAN VAR year, month, offset1970, ii -CANCEL MODE DATE - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_packed_no_missing -! err75_packed_no_missing.jnl -! -! 5/24/2019: ticket 1935 -! -! The data is packed with a _FillValue of -32767s and no missing_value. -! The fourth value is a valid value of 0, which unpacks to 180. -! previously the scaling treated the variable as if it had a missing_value -! of 0 and _Fillvalue of -32767s and so put bad-flag into the 4th location. -! -! In the file, item 4 is 0 -sp ncdump -v var data/packed_no_missflag.nc -netcdf packed_no_missflag { -dimensions: - time = UNLIMITED ; // (1 currently) - latitude = 11 ; - longitude = 1 ; -variables: - short var(time, latitude, longitude) ; - var:long_name = "Mean primary swell wave direction from" ; - var:units = "degree" ; - var:add_offset = 180. ; - var:scale_factor = 0.01 ; - var:_FillValue = -32767s ; - var:standard_name = "sea_surface_primary_swell_wave_from_direction" ; - var:cell_methods = "time:point area:mean" ; - var:type_of_analysis = "spectral analysis" ; - var:WMO_code = 107 ; - float latitude(latitude) ; - latitude:standard_name = "latitude" ; - latitude:long_name = "latitude coordinate" ; - latitude:units = "degrees_north" ; - latitude:axis = "Y" ; - latitude:step = 0.2 ; - float longitude(longitude) ; - longitude:standard_name = "longitude" ; - longitude:long_name = "longitude coordinate" ; - longitude:units = "degrees_east" ; - longitude:axis = "X" ; - longitude:step = 0.2 ; - double time(time) ; - time:standard_name = "time" ; - time:long_name = "time" ; - time:units = "hours since 1950-1-1 00:00:00" ; - time:calendar = "standard" ; - time:axis = "T" ; - time:step = 3 ; - -// global attributes: - :CDI = "Climate Data Interface version 1.7.2 (http://mpimet.mpg.de/cdi)" ; - :Conventions = "CF-1.6" ; - :CDO = "Climate Data Operators version 1.7.2 (http://mpimet.mpg.de/cdo)" ; -data: - - var = - _, - _, - 1341, - 535, - 0, - -247, - 66, - 150, - -129, - -277, - 771 ; -} - -! When unpacked, 0 should become 180. Previously it was set to missing. -use packed_no_missflag.nc -list var - VARIABLE : Mean primary swell wave direction from (degree) - FILENAME : packed_no_missflag.nc - SUBSET : 11 points (LATITUDE) - LONGITUDE: 18E - TIME : 21-AUG-2014 21:00 - 18E - 1 - 60N / 11: .... - 59.8N / 10: .... - 59.6N / 9: 193.4 - 59.4N / 8: 185.3 - 59.2N / 7: 180.0 - 59N / 6: 177.5 - 58.8N / 5: 180.7 - 58.6N / 4: 181.5 - 58.4N / 3: 178.7 - 58.2N / 2: 177.2 - 58N / 1: 187.7 - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_poly_modulo - - -use coads_climatology -let var = sst - 16 - -! save just one timestep -save/clobber/L=1/y=30:60/file=a.nc var -cancel data/all -cancel var/all -use a - -let yvar = ysequence(var) -!======================================= -! Create bounds of cells -let lon_LL = ysequence(var*0+xboxlo[g=var]) -let lon_UL = ysequence(var*0+xboxlo[g=var]) -let lon_UR = ysequence(var*0+xboxhi[g=var]) -let lon_LR = ysequence(var*0+xboxhi[g=var]) -let lon_bounds0 = xcat(lon_LL,lon_UL) -let lon_bounds1 = xcat(lon_bounds0,lon_UR) -let lon_bounds = xcat(lon_bounds1,lon_LR) -let/units=degrees_east/title=LONGITUDE ylon = lon_bounds -!======================================= -! Create bounds of cells -let lat_LL = ysequence(var*0+yboxlo[g=var]) -let lat_UL = ysequence(var*0+yboxhi[g=var]) -let lat_UR = ysequence(var*0+yboxhi[g=var]) -let lat_LR = ysequence(var*0+yboxlo[g=var]) -let lat_bounds0 = xcat(lat_LL,lat_UL) -let lat_bounds1 = xcat(lat_bounds0,lat_UR) -let lat_bounds = xcat(lat_bounds1,lat_LR) -let/units=degrees_north/title=LATITUDE ylat = lat_bounds - -! This plot is ok, uses levels computed on all the data, -! The overlay recomputes the same levels with all the data and plots the same key -! polygon/modulo/hlim=-10:60/vlim=30:60/line/fill/pal=rainbow/lev=25 ylon, ylat, yvar; set win/new - -! Here the overlay plot triggered by the /MODULO did not apply the specified levels -! but just computed levels from the data and also drew the key for those new levels. -! The left-hand side of the plot east of 20E was way too yellow. -polygon/modulo/hlim=-10:60/vlim=30:60/fill/pal=rainbow/lev=(-5,0,1)(0,2.6,0.2) ylon, ylat, yvar -frame/file=poly_modulo_levels.gif - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_longname_cr -! err75_longname_cr.jnl -! This dataset has DOS-style control character at the end of the -! long_name long_name for variable dissolved_o2. It garbled the listing -! - -! Note the long_name attribute on dissolved_o2 -! Also note newlines in the long_name for nitrite and in the global history attribute. -! Those are ok. This is often seen in the history attribute. - -sp ncdump -h data/bad_longname.nc -netcdf bad_longname { -dimensions: - obs = 4 ; - id_strlen = 10 ; -variables: - float depth(obs) ; - depth:long_name = "Depth" ; - depth:positive = "down" ; - depth:standard_name = "depth" ; - depth:units = "m" ; - float nitrite(obs) ; - nitrite:_FillValue = -1.e+34f ; - nitrite:long_name = "NO2\n", - "A two-line long_name" ; - nitrite:missing_value = -1.e+34f ; - nitrite:standard_name = "mole_concentration_of_nitrite_in_sea_water" ; - nitrite:units = "micromoles/kg" ; - float dissolved_o2(obs) ; - dissolved_o2:_FillValue = -1.e+34f ; - dissolved_o2:long_name = "Dissolved Oxygen Concentration 1 mMoles/kg\r" ; - dissolved_o2:missing_value = -1.e+34f ; - dissolved_o2:standard_name = "mole_concentration_of_dissolved_molecular_oxygen_in_sea_water" ; - dissolved_o2:units = "micromoles/kg" ; - -// global attributes: - :history = "FERRET V7 13-Jun-16\n", - "2019-05-31T21:51:27Z (local files)\n", - "2019-05-31T21:51:27Z http://dunkel.pmel.noaa.gov:9290/erddap/tabledap/ChukchiSea_454a_037a_fcf4.nc" ; - :INST_TYPE = "Sea-Bird CTD SBE911" ; - :institution = "PMEL EcoFOCI" ; -} - -use bad_longname.nc - -! Previously the header lines describing the variables said this, with the -! second line garbled: -! -! Column 1: DEPTH is Depth (m) -! (micromoles/kg)OLVED_O2 is Dissolved Oxygen Concentration 1 mMoles/kg -! Column 3: NITRITE is NO2 -! A two-line long_name (micromoles/kg) - - -list depth, dissolved_o2, nitrite - DATA SET: ./data/bad_longname.nc - X: 0.5 to 4.5 - Column 1: DEPTH is Depth (m) - Column 2: DISSOLVED_O2 is Dissolved Oxygen Concentration 1 mMoles/kg (micromoles/kg) - Column 3: NITRITE is NO2 -A two-line long_name (micromoles/kg) - DEPTH DISSOLV NITRITE -1 / 1: 0.000 296.6 0.0098 -2 / 2: 1.000 296.6 .... -3 / 3: 2.000 296.6 0.2251 -4 / 4: 3.000 296.7 0.1566 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_vlimits -! err75_vlimits.jnl -! issue 1940. The /vlimits were translated as dates for variables on a -! time axis. Incorrect attempt to translate the date as an iso-8601 date -! -! The plot succeeded but issued an error -! **TMAP ERR: error in time line definition 1 is not valid in this calendar - -use coads_vwnd.cdf -plot/i=90/j=65/vlim=-10:1.99E-2 vwnd - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_reversed_axis -! err75_z_reversed.jnl -! Issue 1941 - -! The file has the z-axis reversed, z listed in order 1000, 900, ... -! The file also has 2-D bounds variables in the lon, lat direction -! so grid formation needs to handle the nvert dimension. - -! make an identical copy of the file and open both - -sp cp data/z_reversed.nc z_copy.nc - -! This listing is correct -use z_reversed -list q - VARIABLE : Q - FILENAME : z_reversed.nc - SUBSET : 6 points (Z) - 500 / 1: 6.000 - 600 / 2: 5.000 - 700 / 3: 4.000 - 800 / 4: 3.000 - 900 / 5: 2.000 - 1000 / 6: 1.000 - -! This listing was incorrect, listed q=1,2,3,4,5,6 -use z_copy -list q - VARIABLE : Q - FILENAME : z_copy.nc - SUBSET : 6 points (Z) - 500 / 1: 6.000 - 600 / 2: 5.000 - 700 / 3: 4.000 - 800 / 4: 3.000 - 900 / 5: 2.000 - 1000 / 6: 1.000 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_grave_numbers -! err75_grave_numbers - -! 1.23456790123456789 with E from -16 to 16, p from -16 to 16 - -say `1.234567890123456789E-16,p=-16` - !-> MESSAGE/CONTINUE 0.0000000000000001 -0.0000000000000001 -say `1.234567890123456789E-16,p=-15` - !-> MESSAGE/CONTINUE 0.000000000000000 -0.000000000000000 -say `1.234567890123456789E-16,p=-14` - !-> MESSAGE/CONTINUE 0.00000000000000 -0.00000000000000 -say `1.234567890123456789E-16,p=-13` - !-> MESSAGE/CONTINUE 0.0000000000000 -0.0000000000000 -say `1.234567890123456789E-16,p=-12` - !-> MESSAGE/CONTINUE 0.000000000000 -0.000000000000 -say `1.234567890123456789E-16,p=-11` - !-> MESSAGE/CONTINUE 0.00000000000 -0.00000000000 -say `1.234567890123456789E-16,p=-10` - !-> MESSAGE/CONTINUE 0.0000000000 -0.0000000000 -say `1.234567890123456789E-16,p=-9` - !-> MESSAGE/CONTINUE 0.000000000 -0.000000000 -say `1.234567890123456789E-16,p=-8` - !-> MESSAGE/CONTINUE 0.00000000 -0.00000000 -say `1.234567890123456789E-16,p=-7` - !-> MESSAGE/CONTINUE 0.0000000 -0.0000000 -say `1.234567890123456789E-16,p=-6` - !-> MESSAGE/CONTINUE 0.000000 -0.000000 -say `1.234567890123456789E-16,p=-5` - !-> MESSAGE/CONTINUE 0.00000 -0.00000 -say `1.234567890123456789E-16,p=-4` - !-> MESSAGE/CONTINUE 0.0000 -0.0000 -say `1.234567890123456789E-16,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-16,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-16,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-16,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-16,p=1` - !-> MESSAGE/CONTINUE 1.E-16 -1.E-16 -say `1.234567890123456789E-16,p=2` - !-> MESSAGE/CONTINUE 1.2E-16 -1.2E-16 -say `1.234567890123456789E-16,p=3` - !-> MESSAGE/CONTINUE 1.23E-16 -1.23E-16 -say `1.234567890123456789E-16,p=4` - !-> MESSAGE/CONTINUE 1.235E-16 -1.235E-16 -say `1.234567890123456789E-16,p=5` - !-> MESSAGE/CONTINUE 1.2346E-16 -1.2346E-16 -say `1.234567890123456789E-16,p=6` - !-> MESSAGE/CONTINUE 1.23457E-16 -1.23457E-16 -say `1.234567890123456789E-16,p=7` - !-> MESSAGE/CONTINUE 1.234568E-16 -1.234568E-16 -say `1.234567890123456789E-16,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-16 -1.2345679E-16 -say `1.234567890123456789E-16,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-16 -1.23456789E-16 -say `1.234567890123456789E-16,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-16 -1.23456789E-16 -say `1.234567890123456789E-16,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-16 -1.2345678901E-16 -say `1.234567890123456789E-16,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-16 -1.23456789012E-16 -say `1.234567890123456789E-16,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-16 -1.234567890123E-16 -say `1.234567890123456789E-16,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-16 -1.2345678901235E-16 -say `1.234567890123456789E-16,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-16 -1.23456789012346E-16 -say `1.234567890123456789E-16,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-16 -1.234567890123457E-16 - -say `1.234567890123456789E-15,p=-16` - !-> MESSAGE/CONTINUE 0.0000000000000012 -0.0000000000000012 -say `1.234567890123456789E-15,p=-15` - !-> MESSAGE/CONTINUE 0.000000000000001 -0.000000000000001 -say `1.234567890123456789E-15,p=-14` - !-> MESSAGE/CONTINUE 0.00000000000000 -0.00000000000000 -say `1.234567890123456789E-15,p=-13` - !-> MESSAGE/CONTINUE 0.0000000000000 -0.0000000000000 -say `1.234567890123456789E-15,p=-12` - !-> MESSAGE/CONTINUE 0.000000000000 -0.000000000000 -say `1.234567890123456789E-15,p=-11` - !-> MESSAGE/CONTINUE 0.00000000000 -0.00000000000 -say `1.234567890123456789E-15,p=-10` - !-> MESSAGE/CONTINUE 0.0000000000 -0.0000000000 -say `1.234567890123456789E-15,p=-9` - !-> MESSAGE/CONTINUE 0.000000000 -0.000000000 -say `1.234567890123456789E-15,p=-8` - !-> MESSAGE/CONTINUE 0.00000000 -0.00000000 -say `1.234567890123456789E-15,p=-7` - !-> MESSAGE/CONTINUE 0.0000000 -0.0000000 -say `1.234567890123456789E-15,p=-6` - !-> MESSAGE/CONTINUE 0.000000 -0.000000 -say `1.234567890123456789E-15,p=-5` - !-> MESSAGE/CONTINUE 0.00000 -0.00000 -say `1.234567890123456789E-15,p=-4` - !-> MESSAGE/CONTINUE 0.0000 -0.0000 -say `1.234567890123456789E-15,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-15,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-15,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-15,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-15,p=1` - !-> MESSAGE/CONTINUE 1.E-15 -1.E-15 -say `1.234567890123456789E-15,p=2` - !-> MESSAGE/CONTINUE 1.2E-15 -1.2E-15 -say `1.234567890123456789E-15,p=3` - !-> MESSAGE/CONTINUE 1.23E-15 -1.23E-15 -say `1.234567890123456789E-15,p=4` - !-> MESSAGE/CONTINUE 1.235E-15 -1.235E-15 -say `1.234567890123456789E-15,p=5` - !-> MESSAGE/CONTINUE 1.2346E-15 -1.2346E-15 -say `1.234567890123456789E-15,p=6` - !-> MESSAGE/CONTINUE 1.23457E-15 -1.23457E-15 -say `1.234567890123456789E-15,p=7` - !-> MESSAGE/CONTINUE 1.234568E-15 -1.234568E-15 -say `1.234567890123456789E-15,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-15 -1.2345679E-15 -say `1.234567890123456789E-15,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-15 -1.23456789E-15 -say `1.234567890123456789E-15,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-15 -1.23456789E-15 -say `1.234567890123456789E-15,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-15 -1.2345678901E-15 -say `1.234567890123456789E-15,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-15 -1.23456789012E-15 -say `1.234567890123456789E-15,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-15 -1.234567890123E-15 -say `1.234567890123456789E-15,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-15 -1.2345678901235E-15 -say `1.234567890123456789E-15,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-15 -1.23456789012346E-15 -say `1.234567890123456789E-15,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-15 -1.234567890123457E-15 - -say `1.234567890123456789E-14,p=-16` - !-> MESSAGE/CONTINUE 0.0000000000000123 -0.0000000000000123 -say `1.234567890123456789E-14,p=-15` - !-> MESSAGE/CONTINUE 0.000000000000012 -0.000000000000012 -say `1.234567890123456789E-14,p=-14` - !-> MESSAGE/CONTINUE 0.00000000000001 -0.00000000000001 -say `1.234567890123456789E-14,p=-13` - !-> MESSAGE/CONTINUE 0.0000000000000 -0.0000000000000 -say `1.234567890123456789E-14,p=-12` - !-> MESSAGE/CONTINUE 0.000000000000 -0.000000000000 -say `1.234567890123456789E-14,p=-11` - !-> MESSAGE/CONTINUE 0.00000000000 -0.00000000000 -say `1.234567890123456789E-14,p=-10` - !-> MESSAGE/CONTINUE 0.0000000000 -0.0000000000 -say `1.234567890123456789E-14,p=-9` - !-> MESSAGE/CONTINUE 0.000000000 -0.000000000 -say `1.234567890123456789E-14,p=-8` - !-> MESSAGE/CONTINUE 0.00000000 -0.00000000 -say `1.234567890123456789E-14,p=-7` - !-> MESSAGE/CONTINUE 0.0000000 -0.0000000 -say `1.234567890123456789E-14,p=-6` - !-> MESSAGE/CONTINUE 0.000000 -0.000000 -say `1.234567890123456789E-14,p=-5` - !-> MESSAGE/CONTINUE 0.00000 -0.00000 -say `1.234567890123456789E-14,p=-4` - !-> MESSAGE/CONTINUE 0.0000 -0.0000 -say `1.234567890123456789E-14,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-14,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-14,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-14,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-14,p=1` - !-> MESSAGE/CONTINUE 1.E-14 -1.E-14 -say `1.234567890123456789E-14,p=2` - !-> MESSAGE/CONTINUE 1.2E-14 -1.2E-14 -say `1.234567890123456789E-14,p=3` - !-> MESSAGE/CONTINUE 1.23E-14 -1.23E-14 -say `1.234567890123456789E-14,p=4` - !-> MESSAGE/CONTINUE 1.235E-14 -1.235E-14 -say `1.234567890123456789E-14,p=5` - !-> MESSAGE/CONTINUE 1.2346E-14 -1.2346E-14 -say `1.234567890123456789E-14,p=6` - !-> MESSAGE/CONTINUE 1.23457E-14 -1.23457E-14 -say `1.234567890123456789E-14,p=7` - !-> MESSAGE/CONTINUE 1.234568E-14 -1.234568E-14 -say `1.234567890123456789E-14,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-14 -1.2345679E-14 -say `1.234567890123456789E-14,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-14 -1.23456789E-14 -say `1.234567890123456789E-14,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-14 -1.23456789E-14 -say `1.234567890123456789E-14,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-14 -1.2345678901E-14 -say `1.234567890123456789E-14,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-14 -1.23456789012E-14 -say `1.234567890123456789E-14,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-14 -1.234567890123E-14 -say `1.234567890123456789E-14,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-14 -1.2345678901235E-14 -say `1.234567890123456789E-14,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-14 -1.23456789012346E-14 -say `1.234567890123456789E-14,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-14 -1.234567890123457E-14 - -say `1.234567890123456789E-13,p=-16` - !-> MESSAGE/CONTINUE 0.0000000000001235 -0.0000000000001235 -say `1.234567890123456789E-13,p=-15` - !-> MESSAGE/CONTINUE 0.000000000000123 -0.000000000000123 -say `1.234567890123456789E-13,p=-14` - !-> MESSAGE/CONTINUE 0.00000000000012 -0.00000000000012 -say `1.234567890123456789E-13,p=-13` - !-> MESSAGE/CONTINUE 0.0000000000001 -0.0000000000001 -say `1.234567890123456789E-13,p=-12` - !-> MESSAGE/CONTINUE 0.000000000000 -0.000000000000 -say `1.234567890123456789E-13,p=-11` - !-> MESSAGE/CONTINUE 0.00000000000 -0.00000000000 -say `1.234567890123456789E-13,p=-10` - !-> MESSAGE/CONTINUE 0.0000000000 -0.0000000000 -say `1.234567890123456789E-13,p=-9` - !-> MESSAGE/CONTINUE 0.000000000 -0.000000000 -say `1.234567890123456789E-13,p=-8` - !-> MESSAGE/CONTINUE 0.00000000 -0.00000000 -say `1.234567890123456789E-13,p=-7` - !-> MESSAGE/CONTINUE 0.0000000 -0.0000000 -say `1.234567890123456789E-13,p=-6` - !-> MESSAGE/CONTINUE 0.000000 -0.000000 -say `1.234567890123456789E-13,p=-5` - !-> MESSAGE/CONTINUE 0.00000 -0.00000 -say `1.234567890123456789E-13,p=-4` - !-> MESSAGE/CONTINUE 0.0000 -0.0000 -say `1.234567890123456789E-13,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-13,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-13,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-13,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-13,p=1` - !-> MESSAGE/CONTINUE 1.E-13 -1.E-13 -say `1.234567890123456789E-13,p=2` - !-> MESSAGE/CONTINUE 1.2E-13 -1.2E-13 -say `1.234567890123456789E-13,p=3` - !-> MESSAGE/CONTINUE 1.23E-13 -1.23E-13 -say `1.234567890123456789E-13,p=4` - !-> MESSAGE/CONTINUE 1.235E-13 -1.235E-13 -say `1.234567890123456789E-13,p=5` - !-> MESSAGE/CONTINUE 1.2346E-13 -1.2346E-13 -say `1.234567890123456789E-13,p=6` - !-> MESSAGE/CONTINUE 1.23457E-13 -1.23457E-13 -say `1.234567890123456789E-13,p=7` - !-> MESSAGE/CONTINUE 1.234568E-13 -1.234568E-13 -say `1.234567890123456789E-13,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-13 -1.2345679E-13 -say `1.234567890123456789E-13,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-13 -1.23456789E-13 -say `1.234567890123456789E-13,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-13 -1.23456789E-13 -say `1.234567890123456789E-13,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-13 -1.2345678901E-13 -say `1.234567890123456789E-13,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-13 -1.23456789012E-13 -say `1.234567890123456789E-13,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-13 -1.234567890123E-13 -say `1.234567890123456789E-13,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-13 -1.2345678901235E-13 -say `1.234567890123456789E-13,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-13 -1.23456789012346E-13 -say `1.234567890123456789E-13,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-13 -1.234567890123457E-13 - -say `1.234567890123456789E-12,p=-16` - !-> MESSAGE/CONTINUE 0.0000000000012346 -0.0000000000012346 -say `1.234567890123456789E-12,p=-15` - !-> MESSAGE/CONTINUE 0.000000000001235 -0.000000000001235 -say `1.234567890123456789E-12,p=-14` - !-> MESSAGE/CONTINUE 0.00000000000123 -0.00000000000123 -say `1.234567890123456789E-12,p=-13` - !-> MESSAGE/CONTINUE 0.0000000000012 -0.0000000000012 -say `1.234567890123456789E-12,p=-12` - !-> MESSAGE/CONTINUE 0.000000000001 -0.000000000001 -say `1.234567890123456789E-12,p=-11` - !-> MESSAGE/CONTINUE 0.00000000000 -0.00000000000 -say `1.234567890123456789E-12,p=-10` - !-> MESSAGE/CONTINUE 0.0000000000 -0.0000000000 -say `1.234567890123456789E-12,p=-9` - !-> MESSAGE/CONTINUE 0.000000000 -0.000000000 -say `1.234567890123456789E-12,p=-8` - !-> MESSAGE/CONTINUE 0.00000000 -0.00000000 -say `1.234567890123456789E-12,p=-7` - !-> MESSAGE/CONTINUE 0.0000000 -0.0000000 -say `1.234567890123456789E-12,p=-6` - !-> MESSAGE/CONTINUE 0.000000 -0.000000 -say `1.234567890123456789E-12,p=-5` - !-> MESSAGE/CONTINUE 0.00000 -0.00000 -say `1.234567890123456789E-12,p=-4` - !-> MESSAGE/CONTINUE 0.0000 -0.0000 -say `1.234567890123456789E-12,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-12,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-12,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-12,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-12,p=1` - !-> MESSAGE/CONTINUE 1.E-12 -1.E-12 -say `1.234567890123456789E-12,p=2` - !-> MESSAGE/CONTINUE 1.2E-12 -1.2E-12 -say `1.234567890123456789E-12,p=3` - !-> MESSAGE/CONTINUE 1.23E-12 -1.23E-12 -say `1.234567890123456789E-12,p=4` - !-> MESSAGE/CONTINUE 1.235E-12 -1.235E-12 -say `1.234567890123456789E-12,p=5` - !-> MESSAGE/CONTINUE 1.2346E-12 -1.2346E-12 -say `1.234567890123456789E-12,p=6` - !-> MESSAGE/CONTINUE 1.23457E-12 -1.23457E-12 -say `1.234567890123456789E-12,p=7` - !-> MESSAGE/CONTINUE 1.234568E-12 -1.234568E-12 -say `1.234567890123456789E-12,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-12 -1.2345679E-12 -say `1.234567890123456789E-12,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-12 -1.23456789E-12 -say `1.234567890123456789E-12,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-12 -1.23456789E-12 -say `1.234567890123456789E-12,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-12 -1.2345678901E-12 -say `1.234567890123456789E-12,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-12 -1.23456789012E-12 -say `1.234567890123456789E-12,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-12 -1.234567890123E-12 -say `1.234567890123456789E-12,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-12 -1.2345678901235E-12 -say `1.234567890123456789E-12,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-12 -1.23456789012346E-12 -say `1.234567890123456789E-12,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-12 -1.234567890123457E-12 - -say `1.234567890123456789E-11,p=-16` - !-> MESSAGE/CONTINUE 0.0000000000123457 -0.0000000000123457 -say `1.234567890123456789E-11,p=-15` - !-> MESSAGE/CONTINUE 0.000000000012346 -0.000000000012346 -say `1.234567890123456789E-11,p=-14` - !-> MESSAGE/CONTINUE 0.00000000001235 -0.00000000001235 -say `1.234567890123456789E-11,p=-13` - !-> MESSAGE/CONTINUE 0.0000000000123 -0.0000000000123 -say `1.234567890123456789E-11,p=-12` - !-> MESSAGE/CONTINUE 0.000000000012 -0.000000000012 -say `1.234567890123456789E-11,p=-11` - !-> MESSAGE/CONTINUE 0.00000000001 -0.00000000001 -say `1.234567890123456789E-11,p=-10` - !-> MESSAGE/CONTINUE 0.0000000000 -0.0000000000 -say `1.234567890123456789E-11,p=-9` - !-> MESSAGE/CONTINUE 0.000000000 -0.000000000 -say `1.234567890123456789E-11,p=-8` - !-> MESSAGE/CONTINUE 0.00000000 -0.00000000 -say `1.234567890123456789E-11,p=-7` - !-> MESSAGE/CONTINUE 0.0000000 -0.0000000 -say `1.234567890123456789E-11,p=-6` - !-> MESSAGE/CONTINUE 0.000000 -0.000000 -say `1.234567890123456789E-11,p=-5` - !-> MESSAGE/CONTINUE 0.00000 -0.00000 -say `1.234567890123456789E-11,p=-4` - !-> MESSAGE/CONTINUE 0.0000 -0.0000 -say `1.234567890123456789E-11,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-11,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-11,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-11,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-11,p=1` - !-> MESSAGE/CONTINUE 1.E-11 -1.E-11 -say `1.234567890123456789E-11,p=2` - !-> MESSAGE/CONTINUE 1.2E-11 -1.2E-11 -say `1.234567890123456789E-11,p=3` - !-> MESSAGE/CONTINUE 1.23E-11 -1.23E-11 -say `1.234567890123456789E-11,p=4` - !-> MESSAGE/CONTINUE 1.235E-11 -1.235E-11 -say `1.234567890123456789E-11,p=5` - !-> MESSAGE/CONTINUE 1.2346E-11 -1.2346E-11 -say `1.234567890123456789E-11,p=6` - !-> MESSAGE/CONTINUE 1.23457E-11 -1.23457E-11 -say `1.234567890123456789E-11,p=7` - !-> MESSAGE/CONTINUE 1.234568E-11 -1.234568E-11 -say `1.234567890123456789E-11,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-11 -1.2345679E-11 -say `1.234567890123456789E-11,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-11 -1.23456789E-11 -say `1.234567890123456789E-11,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-11 -1.23456789E-11 -say `1.234567890123456789E-11,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-11 -1.2345678901E-11 -say `1.234567890123456789E-11,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-11 -1.23456789012E-11 -say `1.234567890123456789E-11,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-11 -1.234567890123E-11 -say `1.234567890123456789E-11,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-11 -1.2345678901235E-11 -say `1.234567890123456789E-11,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-11 -1.23456789012346E-11 -say `1.234567890123456789E-11,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-11 -1.234567890123457E-11 - -say `1.234567890123456789E-10,p=-16` - !-> MESSAGE/CONTINUE 0.0000000001234568 -0.0000000001234568 -say `1.234567890123456789E-10,p=-15` - !-> MESSAGE/CONTINUE 0.000000000123457 -0.000000000123457 -say `1.234567890123456789E-10,p=-14` - !-> MESSAGE/CONTINUE 0.00000000012346 -0.00000000012346 -say `1.234567890123456789E-10,p=-13` - !-> MESSAGE/CONTINUE 0.0000000001235 -0.0000000001235 -say `1.234567890123456789E-10,p=-12` - !-> MESSAGE/CONTINUE 0.000000000123 -0.000000000123 -say `1.234567890123456789E-10,p=-11` - !-> MESSAGE/CONTINUE 0.00000000012 -0.00000000012 -say `1.234567890123456789E-10,p=-10` - !-> MESSAGE/CONTINUE 0.0000000001 -0.0000000001 -say `1.234567890123456789E-10,p=-9` - !-> MESSAGE/CONTINUE 0.000000000 -0.000000000 -say `1.234567890123456789E-10,p=-8` - !-> MESSAGE/CONTINUE 0.00000000 -0.00000000 -say `1.234567890123456789E-10,p=-7` - !-> MESSAGE/CONTINUE 0.0000000 -0.0000000 -say `1.234567890123456789E-10,p=-6` - !-> MESSAGE/CONTINUE 0.000000 -0.000000 -say `1.234567890123456789E-10,p=-5` - !-> MESSAGE/CONTINUE 0.00000 -0.00000 -say `1.234567890123456789E-10,p=-4` - !-> MESSAGE/CONTINUE 0.0000 -0.0000 -say `1.234567890123456789E-10,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-10,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-10,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-10,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-10,p=1` - !-> MESSAGE/CONTINUE 1.E-10 -1.E-10 -say `1.234567890123456789E-10,p=2` - !-> MESSAGE/CONTINUE 1.2E-10 -1.2E-10 -say `1.234567890123456789E-10,p=3` - !-> MESSAGE/CONTINUE 1.23E-10 -1.23E-10 -say `1.234567890123456789E-10,p=4` - !-> MESSAGE/CONTINUE 1.235E-10 -1.235E-10 -say `1.234567890123456789E-10,p=5` - !-> MESSAGE/CONTINUE 1.2346E-10 -1.2346E-10 -say `1.234567890123456789E-10,p=6` - !-> MESSAGE/CONTINUE 1.23457E-10 -1.23457E-10 -say `1.234567890123456789E-10,p=7` - !-> MESSAGE/CONTINUE 1.234568E-10 -1.234568E-10 -say `1.234567890123456789E-10,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-10 -1.2345679E-10 -say `1.234567890123456789E-10,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-10 -1.23456789E-10 -say `1.234567890123456789E-10,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-10 -1.23456789E-10 -say `1.234567890123456789E-10,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-10 -1.2345678901E-10 -say `1.234567890123456789E-10,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-10 -1.23456789012E-10 -say `1.234567890123456789E-10,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-10 -1.234567890123E-10 -say `1.234567890123456789E-10,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-10 -1.2345678901235E-10 -say `1.234567890123456789E-10,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-10 -1.23456789012346E-10 -say `1.234567890123456789E-10,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-10 -1.234567890123457E-10 - -say `1.234567890123456789E-9,p=-16` - !-> MESSAGE/CONTINUE 0.0000000012345679 -0.0000000012345679 -say `1.234567890123456789E-9,p=-15` - !-> MESSAGE/CONTINUE 0.000000001234568 -0.000000001234568 -say `1.234567890123456789E-9,p=-14` - !-> MESSAGE/CONTINUE 0.00000000123457 -0.00000000123457 -say `1.234567890123456789E-9,p=-13` - !-> MESSAGE/CONTINUE 0.0000000012346 -0.0000000012346 -say `1.234567890123456789E-9,p=-12` - !-> MESSAGE/CONTINUE 0.000000001235 -0.000000001235 -say `1.234567890123456789E-9,p=-11` - !-> MESSAGE/CONTINUE 0.00000000123 -0.00000000123 -say `1.234567890123456789E-9,p=-10` - !-> MESSAGE/CONTINUE 0.0000000012 -0.0000000012 -say `1.234567890123456789E-9,p=-9` - !-> MESSAGE/CONTINUE 0.000000001 -0.000000001 -say `1.234567890123456789E-9,p=-8` - !-> MESSAGE/CONTINUE 0.00000000 -0.00000000 -say `1.234567890123456789E-9,p=-7` - !-> MESSAGE/CONTINUE 0.0000000 -0.0000000 -say `1.234567890123456789E-9,p=-6` - !-> MESSAGE/CONTINUE 0.000000 -0.000000 -say `1.234567890123456789E-9,p=-5` - !-> MESSAGE/CONTINUE 0.00000 -0.00000 -say `1.234567890123456789E-9,p=-4` - !-> MESSAGE/CONTINUE 0.0000 -0.0000 -say `1.234567890123456789E-9,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-9,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-9,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-9,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-9,p=1` - !-> MESSAGE/CONTINUE 1.E-09 -1.E-09 -say `1.234567890123456789E-9,p=2` - !-> MESSAGE/CONTINUE 1.2E-09 -1.2E-09 -say `1.234567890123456789E-9,p=3` - !-> MESSAGE/CONTINUE 1.23E-09 -1.23E-09 -say `1.234567890123456789E-9,p=4` - !-> MESSAGE/CONTINUE 1.235E-09 -1.235E-09 -say `1.234567890123456789E-9,p=5` - !-> MESSAGE/CONTINUE 1.2346E-09 -1.2346E-09 -say `1.234567890123456789E-9,p=6` - !-> MESSAGE/CONTINUE 1.23457E-09 -1.23457E-09 -say `1.234567890123456789E-9,p=7` - !-> MESSAGE/CONTINUE 1.234568E-09 -1.234568E-09 -say `1.234567890123456789E-9,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-09 -1.2345679E-09 -say `1.234567890123456789E-9,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-09 -1.23456789E-09 -say `1.234567890123456789E-9,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-09 -1.23456789E-09 -say `1.234567890123456789E-9,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-09 -1.2345678901E-09 -say `1.234567890123456789E-9,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-09 -1.23456789012E-09 -say `1.234567890123456789E-9,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-09 -1.234567890123E-09 -say `1.234567890123456789E-9,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-09 -1.2345678901235E-09 -say `1.234567890123456789E-9,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-09 -1.23456789012346E-09 -say `1.234567890123456789E-9,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-09 -1.234567890123457E-09 - -say `1.234567890123456789E-8,p=-16` - !-> MESSAGE/CONTINUE 0.0000000123456789 -0.0000000123456789 -say `1.234567890123456789E-8,p=-15` - !-> MESSAGE/CONTINUE 0.000000012345679 -0.000000012345679 -say `1.234567890123456789E-8,p=-14` - !-> MESSAGE/CONTINUE 0.00000001234568 -0.00000001234568 -say `1.234567890123456789E-8,p=-13` - !-> MESSAGE/CONTINUE 0.0000000123457 -0.0000000123457 -say `1.234567890123456789E-8,p=-12` - !-> MESSAGE/CONTINUE 0.000000012346 -0.000000012346 -say `1.234567890123456789E-8,p=-11` - !-> MESSAGE/CONTINUE 0.00000001235 -0.00000001235 -say `1.234567890123456789E-8,p=-10` - !-> MESSAGE/CONTINUE 0.0000000123 -0.0000000123 -say `1.234567890123456789E-8,p=-9` - !-> MESSAGE/CONTINUE 0.000000012 -0.000000012 -say `1.234567890123456789E-8,p=-8` - !-> MESSAGE/CONTINUE 0.00000001 -0.00000001 -say `1.234567890123456789E-8,p=-7` - !-> MESSAGE/CONTINUE 0.0000000 -0.0000000 -say `1.234567890123456789E-8,p=-6` - !-> MESSAGE/CONTINUE 0.000000 -0.000000 -say `1.234567890123456789E-8,p=-5` - !-> MESSAGE/CONTINUE 0.00000 -0.00000 -say `1.234567890123456789E-8,p=-4` - !-> MESSAGE/CONTINUE 0.0000 -0.0000 -say `1.234567890123456789E-8,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-8,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-8,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-8,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-8,p=1` - !-> MESSAGE/CONTINUE 1.E-08 -1.E-08 -say `1.234567890123456789E-8,p=2` - !-> MESSAGE/CONTINUE 1.2E-08 -1.2E-08 -say `1.234567890123456789E-8,p=3` - !-> MESSAGE/CONTINUE 1.23E-08 -1.23E-08 -say `1.234567890123456789E-8,p=4` - !-> MESSAGE/CONTINUE 1.235E-08 -1.235E-08 -say `1.234567890123456789E-8,p=5` - !-> MESSAGE/CONTINUE 1.2346E-08 -1.2346E-08 -say `1.234567890123456789E-8,p=6` - !-> MESSAGE/CONTINUE 1.23457E-08 -1.23457E-08 -say `1.234567890123456789E-8,p=7` - !-> MESSAGE/CONTINUE 1.234568E-08 -1.234568E-08 -say `1.234567890123456789E-8,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-08 -1.2345679E-08 -say `1.234567890123456789E-8,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-08 -1.23456789E-08 -say `1.234567890123456789E-8,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-08 -1.23456789E-08 -say `1.234567890123456789E-8,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-08 -1.2345678901E-08 -say `1.234567890123456789E-8,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-08 -1.23456789012E-08 -say `1.234567890123456789E-8,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-08 -1.234567890123E-08 -say `1.234567890123456789E-8,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-08 -1.2345678901235E-08 -say `1.234567890123456789E-8,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-08 -1.23456789012346E-08 -say `1.234567890123456789E-8,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-08 -1.234567890123457E-08 - -say `1.234567890123456789E-7,p=-16` - !-> MESSAGE/CONTINUE 0.0000001234567890 -0.0000001234567890 -say `1.234567890123456789E-7,p=-15` - !-> MESSAGE/CONTINUE 0.000000123456789 -0.000000123456789 -say `1.234567890123456789E-7,p=-14` - !-> MESSAGE/CONTINUE 0.00000012345679 -0.00000012345679 -say `1.234567890123456789E-7,p=-13` - !-> MESSAGE/CONTINUE 0.0000001234568 -0.0000001234568 -say `1.234567890123456789E-7,p=-12` - !-> MESSAGE/CONTINUE 0.000000123457 -0.000000123457 -say `1.234567890123456789E-7,p=-11` - !-> MESSAGE/CONTINUE 0.00000012346 -0.00000012346 -say `1.234567890123456789E-7,p=-10` - !-> MESSAGE/CONTINUE 0.0000001235 -0.0000001235 -say `1.234567890123456789E-7,p=-9` - !-> MESSAGE/CONTINUE 0.000000123 -0.000000123 -say `1.234567890123456789E-7,p=-8` - !-> MESSAGE/CONTINUE 0.00000012 -0.00000012 -say `1.234567890123456789E-7,p=-7` - !-> MESSAGE/CONTINUE 0.0000001 -0.0000001 -say `1.234567890123456789E-7,p=-6` - !-> MESSAGE/CONTINUE 0.000000 -0.000000 -say `1.234567890123456789E-7,p=-5` - !-> MESSAGE/CONTINUE 0.00000 -0.00000 -say `1.234567890123456789E-7,p=-4` - !-> MESSAGE/CONTINUE 0.0000 -0.0000 -say `1.234567890123456789E-7,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-7,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-7,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-7,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-7,p=1` - !-> MESSAGE/CONTINUE 1.E-07 -1.E-07 -say `1.234567890123456789E-7,p=2` - !-> MESSAGE/CONTINUE 1.2E-07 -1.2E-07 -say `1.234567890123456789E-7,p=3` - !-> MESSAGE/CONTINUE 1.23E-07 -1.23E-07 -say `1.234567890123456789E-7,p=4` - !-> MESSAGE/CONTINUE 1.235E-07 -1.235E-07 -say `1.234567890123456789E-7,p=5` - !-> MESSAGE/CONTINUE 1.2346E-07 -1.2346E-07 -say `1.234567890123456789E-7,p=6` - !-> MESSAGE/CONTINUE 1.23457E-07 -1.23457E-07 -say `1.234567890123456789E-7,p=7` - !-> MESSAGE/CONTINUE 1.234568E-07 -1.234568E-07 -say `1.234567890123456789E-7,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-07 -1.2345679E-07 -say `1.234567890123456789E-7,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-07 -1.23456789E-07 -say `1.234567890123456789E-7,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-07 -1.23456789E-07 -say `1.234567890123456789E-7,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-07 -1.2345678901E-07 -say `1.234567890123456789E-7,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-07 -1.23456789012E-07 -say `1.234567890123456789E-7,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-07 -1.234567890123E-07 -say `1.234567890123456789E-7,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-07 -1.2345678901235E-07 -say `1.234567890123456789E-7,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-07 -1.23456789012346E-07 -say `1.234567890123456789E-7,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-07 -1.234567890123457E-07 - -say `1.234567890123456789E-6,p=-16` - !-> MESSAGE/CONTINUE 0.0000012345678901 -0.0000012345678901 -say `1.234567890123456789E-6,p=-15` - !-> MESSAGE/CONTINUE 0.000001234567890 -0.000001234567890 -say `1.234567890123456789E-6,p=-14` - !-> MESSAGE/CONTINUE 0.00000123456789 -0.00000123456789 -say `1.234567890123456789E-6,p=-13` - !-> MESSAGE/CONTINUE 0.0000012345679 -0.0000012345679 -say `1.234567890123456789E-6,p=-12` - !-> MESSAGE/CONTINUE 0.000001234568 -0.000001234568 -say `1.234567890123456789E-6,p=-11` - !-> MESSAGE/CONTINUE 0.00000123457 -0.00000123457 -say `1.234567890123456789E-6,p=-10` - !-> MESSAGE/CONTINUE 0.0000012346 -0.0000012346 -say `1.234567890123456789E-6,p=-9` - !-> MESSAGE/CONTINUE 0.000001235 -0.000001235 -say `1.234567890123456789E-6,p=-8` - !-> MESSAGE/CONTINUE 0.00000123 -0.00000123 -say `1.234567890123456789E-6,p=-7` - !-> MESSAGE/CONTINUE 0.0000012 -0.0000012 -say `1.234567890123456789E-6,p=-6` - !-> MESSAGE/CONTINUE 0.000001 -0.000001 -say `1.234567890123456789E-6,p=-5` - !-> MESSAGE/CONTINUE 0.00000 -0.00000 -say `1.234567890123456789E-6,p=-4` - !-> MESSAGE/CONTINUE 0.0000 -0.0000 -say `1.234567890123456789E-6,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-6,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-6,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-6,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-6,p=1` - !-> MESSAGE/CONTINUE 1.E-06 -1.E-06 -say `1.234567890123456789E-6,p=2` - !-> MESSAGE/CONTINUE 1.2E-06 -1.2E-06 -say `1.234567890123456789E-6,p=3` - !-> MESSAGE/CONTINUE 1.23E-06 -1.23E-06 -say `1.234567890123456789E-6,p=4` - !-> MESSAGE/CONTINUE 1.235E-06 -1.235E-06 -say `1.234567890123456789E-6,p=5` - !-> MESSAGE/CONTINUE 1.2346E-06 -1.2346E-06 -say `1.234567890123456789E-6,p=6` - !-> MESSAGE/CONTINUE 1.23457E-06 -1.23457E-06 -say `1.234567890123456789E-6,p=7` - !-> MESSAGE/CONTINUE 1.234568E-06 -1.234568E-06 -say `1.234567890123456789E-6,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-06 -1.2345679E-06 -say `1.234567890123456789E-6,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-06 -1.23456789E-06 -say `1.234567890123456789E-6,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-06 -1.23456789E-06 -say `1.234567890123456789E-6,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-06 -1.2345678901E-06 -say `1.234567890123456789E-6,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-06 -1.23456789012E-06 -say `1.234567890123456789E-6,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-06 -1.234567890123E-06 -say `1.234567890123456789E-6,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-06 -1.2345678901235E-06 -say `1.234567890123456789E-6,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-06 -1.23456789012346E-06 -say `1.234567890123456789E-6,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-06 -1.234567890123457E-06 - -say `1.234567890123456789E-5,p=-16` - !-> MESSAGE/CONTINUE 0.0000123456789012 -0.0000123456789012 -say `1.234567890123456789E-5,p=-15` - !-> MESSAGE/CONTINUE 0.000012345678901 -0.000012345678901 -say `1.234567890123456789E-5,p=-14` - !-> MESSAGE/CONTINUE 0.00001234567890 -0.00001234567890 -say `1.234567890123456789E-5,p=-13` - !-> MESSAGE/CONTINUE 0.0000123456789 -0.0000123456789 -say `1.234567890123456789E-5,p=-12` - !-> MESSAGE/CONTINUE 0.000012345679 -0.000012345679 -say `1.234567890123456789E-5,p=-11` - !-> MESSAGE/CONTINUE 0.00001234568 -0.00001234568 -say `1.234567890123456789E-5,p=-10` - !-> MESSAGE/CONTINUE 0.0000123457 -0.0000123457 -say `1.234567890123456789E-5,p=-9` - !-> MESSAGE/CONTINUE 0.000012346 -0.000012346 -say `1.234567890123456789E-5,p=-8` - !-> MESSAGE/CONTINUE 0.00001235 -0.00001235 -say `1.234567890123456789E-5,p=-7` - !-> MESSAGE/CONTINUE 0.0000123 -0.0000123 -say `1.234567890123456789E-5,p=-6` - !-> MESSAGE/CONTINUE 0.000012 -0.000012 -say `1.234567890123456789E-5,p=-5` - !-> MESSAGE/CONTINUE 0.00001 -0.00001 -say `1.234567890123456789E-5,p=-4` - !-> MESSAGE/CONTINUE 0.0000 -0.0000 -say `1.234567890123456789E-5,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-5,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-5,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-5,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-5,p=1` - !-> MESSAGE/CONTINUE 1.E-05 -1.E-05 -say `1.234567890123456789E-5,p=2` - !-> MESSAGE/CONTINUE 1.2E-05 -1.2E-05 -say `1.234567890123456789E-5,p=3` - !-> MESSAGE/CONTINUE 1.23E-05 -1.23E-05 -say `1.234567890123456789E-5,p=4` - !-> MESSAGE/CONTINUE 1.235E-05 -1.235E-05 -say `1.234567890123456789E-5,p=5` - !-> MESSAGE/CONTINUE 1.2346E-05 -1.2346E-05 -say `1.234567890123456789E-5,p=6` - !-> MESSAGE/CONTINUE 1.23457E-05 -1.23457E-05 -say `1.234567890123456789E-5,p=7` - !-> MESSAGE/CONTINUE 1.234568E-05 -1.234568E-05 -say `1.234567890123456789E-5,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-05 -1.2345679E-05 -say `1.234567890123456789E-5,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-05 -1.23456789E-05 -say `1.234567890123456789E-5,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-05 -1.23456789E-05 -say `1.234567890123456789E-5,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-05 -1.2345678901E-05 -say `1.234567890123456789E-5,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-05 -1.23456789012E-05 -say `1.234567890123456789E-5,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-05 -1.234567890123E-05 -say `1.234567890123456789E-5,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-05 -1.2345678901235E-05 -say `1.234567890123456789E-5,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-05 -1.23456789012346E-05 -say `1.234567890123456789E-5,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-05 -1.234567890123457E-05 - -say `1.234567890123456789E-4,p=-16` - !-> MESSAGE/CONTINUE 0.0001234567890123 -0.0001234567890123 -say `1.234567890123456789E-4,p=-15` - !-> MESSAGE/CONTINUE 0.000123456789012 -0.000123456789012 -say `1.234567890123456789E-4,p=-14` - !-> MESSAGE/CONTINUE 0.00012345678901 -0.00012345678901 -say `1.234567890123456789E-4,p=-13` - !-> MESSAGE/CONTINUE 0.0001234567890 -0.0001234567890 -say `1.234567890123456789E-4,p=-12` - !-> MESSAGE/CONTINUE 0.000123456789 -0.000123456789 -say `1.234567890123456789E-4,p=-11` - !-> MESSAGE/CONTINUE 0.00012345679 -0.00012345679 -say `1.234567890123456789E-4,p=-10` - !-> MESSAGE/CONTINUE 0.0001234568 -0.0001234568 -say `1.234567890123456789E-4,p=-9` - !-> MESSAGE/CONTINUE 0.000123457 -0.000123457 -say `1.234567890123456789E-4,p=-8` - !-> MESSAGE/CONTINUE 0.00012346 -0.00012346 -say `1.234567890123456789E-4,p=-7` - !-> MESSAGE/CONTINUE 0.0001235 -0.0001235 -say `1.234567890123456789E-4,p=-6` - !-> MESSAGE/CONTINUE 0.000123 -0.000123 -say `1.234567890123456789E-4,p=-5` - !-> MESSAGE/CONTINUE 0.00012 -0.00012 -say `1.234567890123456789E-4,p=-4` - !-> MESSAGE/CONTINUE 0.0001 -0.0001 -say `1.234567890123456789E-4,p=-3` - !-> MESSAGE/CONTINUE 0.000 -0.000 -say `1.234567890123456789E-4,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-4,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-4,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-4,p=1` - !-> MESSAGE/CONTINUE 1.E-04 -1.E-04 -say `1.234567890123456789E-4,p=2` - !-> MESSAGE/CONTINUE 1.2E-04 -1.2E-04 -say `1.234567890123456789E-4,p=3` - !-> MESSAGE/CONTINUE 1.23E-04 -1.23E-04 -say `1.234567890123456789E-4,p=4` - !-> MESSAGE/CONTINUE 1.235E-04 -1.235E-04 -say `1.234567890123456789E-4,p=5` - !-> MESSAGE/CONTINUE 1.2346E-04 -1.2346E-04 -say `1.234567890123456789E-4,p=6` - !-> MESSAGE/CONTINUE 1.23457E-04 -1.23457E-04 -say `1.234567890123456789E-4,p=7` - !-> MESSAGE/CONTINUE 1.234568E-04 -1.234568E-04 -say `1.234567890123456789E-4,p=8` - !-> MESSAGE/CONTINUE 1.2345679E-04 -1.2345679E-04 -say `1.234567890123456789E-4,p=9` - !-> MESSAGE/CONTINUE 1.23456789E-04 -1.23456789E-04 -say `1.234567890123456789E-4,p=10` - !-> MESSAGE/CONTINUE 1.23456789E-04 -1.23456789E-04 -say `1.234567890123456789E-4,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E-04 -1.2345678901E-04 -say `1.234567890123456789E-4,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E-04 -1.23456789012E-04 -say `1.234567890123456789E-4,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E-04 -1.234567890123E-04 -say `1.234567890123456789E-4,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E-04 -1.2345678901235E-04 -say `1.234567890123456789E-4,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E-04 -1.23456789012346E-04 -say `1.234567890123456789E-4,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E-04 -1.234567890123457E-04 - -say `1.234567890123456789E-3,p=-16` - !-> MESSAGE/CONTINUE 0.0012345678901235 -0.0012345678901235 -say `1.234567890123456789E-3,p=-15` - !-> MESSAGE/CONTINUE 0.001234567890123 -0.001234567890123 -say `1.234567890123456789E-3,p=-14` - !-> MESSAGE/CONTINUE 0.00123456789012 -0.00123456789012 -say `1.234567890123456789E-3,p=-13` - !-> MESSAGE/CONTINUE 0.0012345678901 -0.0012345678901 -say `1.234567890123456789E-3,p=-12` - !-> MESSAGE/CONTINUE 0.001234567890 -0.001234567890 -say `1.234567890123456789E-3,p=-11` - !-> MESSAGE/CONTINUE 0.00123456789 -0.00123456789 -say `1.234567890123456789E-3,p=-10` - !-> MESSAGE/CONTINUE 0.0012345679 -0.0012345679 -say `1.234567890123456789E-3,p=-9` - !-> MESSAGE/CONTINUE 0.001234568 -0.001234568 -say `1.234567890123456789E-3,p=-8` - !-> MESSAGE/CONTINUE 0.00123457 -0.00123457 -say `1.234567890123456789E-3,p=-7` - !-> MESSAGE/CONTINUE 0.0012346 -0.0012346 -say `1.234567890123456789E-3,p=-6` - !-> MESSAGE/CONTINUE 0.001235 -0.001235 -say `1.234567890123456789E-3,p=-5` - !-> MESSAGE/CONTINUE 0.00123 -0.00123 -say `1.234567890123456789E-3,p=-4` - !-> MESSAGE/CONTINUE 0.0012 -0.0012 -say `1.234567890123456789E-3,p=-3` - !-> MESSAGE/CONTINUE 0.001 -0.001 -say `1.234567890123456789E-3,p=-2` - !-> MESSAGE/CONTINUE 0.00 -0.00 -say `1.234567890123456789E-3,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-3,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-3,p=1` - !-> MESSAGE/CONTINUE 1.E-03 -1.E-03 -say `1.234567890123456789E-3,p=2` - !-> MESSAGE/CONTINUE 1.2E-03 -1.2E-03 -say `1.234567890123456789E-3,p=3` - !-> MESSAGE/CONTINUE 0.00123 -0.00123 -say `1.234567890123456789E-3,p=4` - !-> MESSAGE/CONTINUE 0.001235 -0.001235 -say `1.234567890123456789E-3,p=5` - !-> MESSAGE/CONTINUE 0.0012346 -0.0012346 -say `1.234567890123456789E-3,p=6` - !-> MESSAGE/CONTINUE 0.00123457 -0.00123457 -say `1.234567890123456789E-3,p=7` - !-> MESSAGE/CONTINUE 0.001234568 -0.001234568 -say `1.234567890123456789E-3,p=8` - !-> MESSAGE/CONTINUE 0.0012345679 -0.0012345679 -say `1.234567890123456789E-3,p=9` - !-> MESSAGE/CONTINUE 0.00123456789 -0.00123456789 -say `1.234567890123456789E-3,p=10` - !-> MESSAGE/CONTINUE 0.00123456789 -0.00123456789 -say `1.234567890123456789E-3,p=11` - !-> MESSAGE/CONTINUE 0.0012345678901 -0.0012345678901 -say `1.234567890123456789E-3,p=12` - !-> MESSAGE/CONTINUE 0.00123456789012 -0.00123456789012 -say `1.234567890123456789E-3,p=13` - !-> MESSAGE/CONTINUE 0.001234567890123 -0.001234567890123 -say `1.234567890123456789E-3,p=14` - !-> MESSAGE/CONTINUE 0.0012345678901235 -0.0012345678901235 -say `1.234567890123456789E-3,p=15` - !-> MESSAGE/CONTINUE 0.00123456789012346 -0.00123456789012346 -say `1.234567890123456789E-3,p=16` - !-> MESSAGE/CONTINUE 0.001234567890123457 -0.001234567890123457 - -say `1.234567890123456789E-2,p=-16` - !-> MESSAGE/CONTINUE 0.0123456789012346 -0.0123456789012346 -say `1.234567890123456789E-2,p=-15` - !-> MESSAGE/CONTINUE 0.012345678901235 -0.012345678901235 -say `1.234567890123456789E-2,p=-14` - !-> MESSAGE/CONTINUE 0.01234567890123 -0.01234567890123 -say `1.234567890123456789E-2,p=-13` - !-> MESSAGE/CONTINUE 0.0123456789012 -0.0123456789012 -say `1.234567890123456789E-2,p=-12` - !-> MESSAGE/CONTINUE 0.012345678901 -0.012345678901 -say `1.234567890123456789E-2,p=-11` - !-> MESSAGE/CONTINUE 0.01234567890 -0.01234567890 -say `1.234567890123456789E-2,p=-10` - !-> MESSAGE/CONTINUE 0.0123456789 -0.0123456789 -say `1.234567890123456789E-2,p=-9` - !-> MESSAGE/CONTINUE 0.012345679 -0.012345679 -say `1.234567890123456789E-2,p=-8` - !-> MESSAGE/CONTINUE 0.01234568 -0.01234568 -say `1.234567890123456789E-2,p=-7` - !-> MESSAGE/CONTINUE 0.0123457 -0.0123457 -say `1.234567890123456789E-2,p=-6` - !-> MESSAGE/CONTINUE 0.012346 -0.012346 -say `1.234567890123456789E-2,p=-5` - !-> MESSAGE/CONTINUE 0.01235 -0.01235 -say `1.234567890123456789E-2,p=-4` - !-> MESSAGE/CONTINUE 0.0123 -0.0123 -say `1.234567890123456789E-2,p=-3` - !-> MESSAGE/CONTINUE 0.012 -0.012 -say `1.234567890123456789E-2,p=-2` - !-> MESSAGE/CONTINUE 0.01 -0.01 -say `1.234567890123456789E-2,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1.234567890123456789E-2,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-2,p=1` - !-> MESSAGE/CONTINUE 1.E-02 -1.E-02 -say `1.234567890123456789E-2,p=2` - !-> MESSAGE/CONTINUE 1.2E-02 -1.2E-02 -say `1.234567890123456789E-2,p=3` - !-> MESSAGE/CONTINUE 0.0123 -0.0123 -say `1.234567890123456789E-2,p=4` - !-> MESSAGE/CONTINUE 0.01235 -0.01235 -say `1.234567890123456789E-2,p=5` - !-> MESSAGE/CONTINUE 0.012346 -0.012346 -say `1.234567890123456789E-2,p=6` - !-> MESSAGE/CONTINUE 0.0123457 -0.0123457 -say `1.234567890123456789E-2,p=7` - !-> MESSAGE/CONTINUE 0.01234568 -0.01234568 -say `1.234567890123456789E-2,p=8` - !-> MESSAGE/CONTINUE 0.012345679 -0.012345679 -say `1.234567890123456789E-2,p=9` - !-> MESSAGE/CONTINUE 0.0123456789 -0.0123456789 -say `1.234567890123456789E-2,p=10` - !-> MESSAGE/CONTINUE 0.0123456789 -0.0123456789 -say `1.234567890123456789E-2,p=11` - !-> MESSAGE/CONTINUE 0.012345678901 -0.012345678901 -say `1.234567890123456789E-2,p=12` - !-> MESSAGE/CONTINUE 0.0123456789012 -0.0123456789012 -say `1.234567890123456789E-2,p=13` - !-> MESSAGE/CONTINUE 0.01234567890123 -0.01234567890123 -say `1.234567890123456789E-2,p=14` - !-> MESSAGE/CONTINUE 0.012345678901235 -0.012345678901235 -say `1.234567890123456789E-2,p=15` - !-> MESSAGE/CONTINUE 0.0123456789012346 -0.0123456789012346 -say `1.234567890123456789E-2,p=16` - !-> MESSAGE/CONTINUE 0.01234567890123457 -0.01234567890123457 - -say `1.234567890123456789E-1,p=-16` - !-> MESSAGE/CONTINUE 0.1234567890123457 -0.1234567890123457 -say `1.234567890123456789E-1,p=-15` - !-> MESSAGE/CONTINUE 0.123456789012346 -0.123456789012346 -say `1.234567890123456789E-1,p=-14` - !-> MESSAGE/CONTINUE 0.12345678901235 -0.12345678901235 -say `1.234567890123456789E-1,p=-13` - !-> MESSAGE/CONTINUE 0.1234567890123 -0.1234567890123 -say `1.234567890123456789E-1,p=-12` - !-> MESSAGE/CONTINUE 0.123456789012 -0.123456789012 -say `1.234567890123456789E-1,p=-11` - !-> MESSAGE/CONTINUE 0.12345678901 -0.12345678901 -say `1.234567890123456789E-1,p=-10` - !-> MESSAGE/CONTINUE 0.1234567890 -0.1234567890 -say `1.234567890123456789E-1,p=-9` - !-> MESSAGE/CONTINUE 0.123456789 -0.123456789 -say `1.234567890123456789E-1,p=-8` - !-> MESSAGE/CONTINUE 0.12345679 -0.12345679 -say `1.234567890123456789E-1,p=-7` - !-> MESSAGE/CONTINUE 0.1234568 -0.1234568 -say `1.234567890123456789E-1,p=-6` - !-> MESSAGE/CONTINUE 0.123457 -0.123457 -say `1.234567890123456789E-1,p=-5` - !-> MESSAGE/CONTINUE 0.12346 -0.12346 -say `1.234567890123456789E-1,p=-4` - !-> MESSAGE/CONTINUE 0.1235 -0.1235 -say `1.234567890123456789E-1,p=-3` - !-> MESSAGE/CONTINUE 0.123 -0.123 -say `1.234567890123456789E-1,p=-2` - !-> MESSAGE/CONTINUE 0.12 -0.12 -say `1.234567890123456789E-1,p=-1` - !-> MESSAGE/CONTINUE 0.1 -0.1 -say `1.234567890123456789E-1,p=0` - !-> MESSAGE/CONTINUE 0 -0 -say `1.234567890123456789E-1,p=1` - !-> MESSAGE/CONTINUE 0.1 -0.1 -say `1.234567890123456789E-1,p=2` - !-> MESSAGE/CONTINUE 0.12 -0.12 -say `1.234567890123456789E-1,p=3` - !-> MESSAGE/CONTINUE 0.123 -0.123 -say `1.234567890123456789E-1,p=4` - !-> MESSAGE/CONTINUE 0.1235 -0.1235 -say `1.234567890123456789E-1,p=5` - !-> MESSAGE/CONTINUE 0.12346 -0.12346 -say `1.234567890123456789E-1,p=6` - !-> MESSAGE/CONTINUE 0.123457 -0.123457 -say `1.234567890123456789E-1,p=7` - !-> MESSAGE/CONTINUE 0.1234568 -0.1234568 -say `1.234567890123456789E-1,p=8` - !-> MESSAGE/CONTINUE 0.12345679 -0.12345679 -say `1.234567890123456789E-1,p=9` - !-> MESSAGE/CONTINUE 0.123456789 -0.123456789 -say `1.234567890123456789E-1,p=10` - !-> MESSAGE/CONTINUE 0.123456789 -0.123456789 -say `1.234567890123456789E-1,p=11` - !-> MESSAGE/CONTINUE 0.12345678901 -0.12345678901 -say `1.234567890123456789E-1,p=12` - !-> MESSAGE/CONTINUE 0.123456789012 -0.123456789012 -say `1.234567890123456789E-1,p=13` - !-> MESSAGE/CONTINUE 0.1234567890123 -0.1234567890123 -say `1.234567890123456789E-1,p=14` - !-> MESSAGE/CONTINUE 0.12345678901235 -0.12345678901235 -say `1.234567890123456789E-1,p=15` - !-> MESSAGE/CONTINUE 0.123456789012346 -0.123456789012346 -say `1.234567890123456789E-1,p=16` - !-> MESSAGE/CONTINUE 0.1234567890123457 -0.1234567890123457 - -say `1.234567890123456789,p=-16` - !-> MESSAGE/CONTINUE 1.2345678901234567 -1.2345678901234567 -say `1.234567890123456789,p=-15` - !-> MESSAGE/CONTINUE 1.234567890123457 -1.234567890123457 -say `1.234567890123456789,p=-14` - !-> MESSAGE/CONTINUE 1.23456789012346 -1.23456789012346 -say `1.234567890123456789,p=-13` - !-> MESSAGE/CONTINUE 1.2345678901235 -1.2345678901235 -say `1.234567890123456789,p=-12` - !-> MESSAGE/CONTINUE 1.234567890123 -1.234567890123 -say `1.234567890123456789,p=-11` - !-> MESSAGE/CONTINUE 1.23456789012 -1.23456789012 -say `1.234567890123456789,p=-10` - !-> MESSAGE/CONTINUE 1.2345678901 -1.2345678901 -say `1.234567890123456789,p=-9` - !-> MESSAGE/CONTINUE 1.234567890 -1.234567890 -say `1.234567890123456789,p=-8` - !-> MESSAGE/CONTINUE 1.23456789 -1.23456789 -say `1.234567890123456789,p=-7` - !-> MESSAGE/CONTINUE 1.2345679 -1.2345679 -say `1.234567890123456789,p=-6` - !-> MESSAGE/CONTINUE 1.234568 -1.234568 -say `1.234567890123456789,p=-5` - !-> MESSAGE/CONTINUE 1.23457 -1.23457 -say `1.234567890123456789,p=-4` - !-> MESSAGE/CONTINUE 1.2346 -1.2346 -say `1.234567890123456789,p=-3` - !-> MESSAGE/CONTINUE 1.235 -1.235 -say `1.234567890123456789,p=-2` - !-> MESSAGE/CONTINUE 1.23 -1.23 -say `1.234567890123456789,p=-1` - !-> MESSAGE/CONTINUE 1.2 -1.2 -say `1.234567890123456789,p=0` - !-> MESSAGE/CONTINUE 1 -1 -say `1.234567890123456789,p=1` - !-> MESSAGE/CONTINUE 1 -1 -say `1.234567890123456789,p=2` - !-> MESSAGE/CONTINUE 1.2 -1.2 -say `1.234567890123456789,p=3` - !-> MESSAGE/CONTINUE 1.23 -1.23 -say `1.234567890123456789,p=4` - !-> MESSAGE/CONTINUE 1.235 -1.235 -say `1.234567890123456789,p=5` - !-> MESSAGE/CONTINUE 1.2346 -1.2346 -say `1.234567890123456789,p=6` - !-> MESSAGE/CONTINUE 1.23457 -1.23457 -say `1.234567890123456789,p=7` - !-> MESSAGE/CONTINUE 1.234568 -1.234568 -say `1.234567890123456789,p=8` - !-> MESSAGE/CONTINUE 1.2345679 -1.2345679 -say `1.234567890123456789,p=9` - !-> MESSAGE/CONTINUE 1.23456789 -1.23456789 -say `1.234567890123456789,p=10` - !-> MESSAGE/CONTINUE 1.23456789 -1.23456789 -say `1.234567890123456789,p=11` - !-> MESSAGE/CONTINUE 1.2345678901 -1.2345678901 -say `1.234567890123456789,p=12` - !-> MESSAGE/CONTINUE 1.23456789012 -1.23456789012 -say `1.234567890123456789,p=13` - !-> MESSAGE/CONTINUE 1.234567890123 -1.234567890123 -say `1.234567890123456789,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235 -1.2345678901235 -say `1.234567890123456789,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346 -1.23456789012346 -say `1.234567890123456789,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457 -1.234567890123457 - -say `1.234567890123456789E1,p=-16` - !-> MESSAGE/CONTINUE 12.34567890123457 -12.34567890123457 -say `1.234567890123456789E1,p=-15` - !-> MESSAGE/CONTINUE 12.345678901234567 -12.345678901234567 -say `1.234567890123456789E1,p=-14` - !-> MESSAGE/CONTINUE 12.34567890123457 -12.34567890123457 -say `1.234567890123456789E1,p=-13` - !-> MESSAGE/CONTINUE 12.3456789012346 -12.3456789012346 -say `1.234567890123456789E1,p=-12` - !-> MESSAGE/CONTINUE 12.345678901235 -12.345678901235 -say `1.234567890123456789E1,p=-11` - !-> MESSAGE/CONTINUE 12.34567890123 -12.34567890123 -say `1.234567890123456789E1,p=-10` - !-> MESSAGE/CONTINUE 12.3456789012 -12.3456789012 -say `1.234567890123456789E1,p=-9` - !-> MESSAGE/CONTINUE 12.345678901 -12.345678901 -say `1.234567890123456789E1,p=-8` - !-> MESSAGE/CONTINUE 12.34567890 -12.34567890 -say `1.234567890123456789E1,p=-7` - !-> MESSAGE/CONTINUE 12.3456789 -12.3456789 -say `1.234567890123456789E1,p=-6` - !-> MESSAGE/CONTINUE 12.345679 -12.345679 -say `1.234567890123456789E1,p=-5` - !-> MESSAGE/CONTINUE 12.34568 -12.34568 -say `1.234567890123456789E1,p=-4` - !-> MESSAGE/CONTINUE 12.3457 -12.3457 -say `1.234567890123456789E1,p=-3` - !-> MESSAGE/CONTINUE 12.346 -12.346 -say `1.234567890123456789E1,p=-2` - !-> MESSAGE/CONTINUE 12.35 -12.35 -say `1.234567890123456789E1,p=-1` - !-> MESSAGE/CONTINUE 12.3 -12.3 -say `1.234567890123456789E1,p=0` - !-> MESSAGE/CONTINUE 12 -12 -say `1.234567890123456789E1,p=1` - !-> MESSAGE/CONTINUE 1.E+01 -1.E+01 -say `1.234567890123456789E1,p=2` - !-> MESSAGE/CONTINUE 12 -12 -say `1.234567890123456789E1,p=3` - !-> MESSAGE/CONTINUE 12.3 -12.3 -say `1.234567890123456789E1,p=4` - !-> MESSAGE/CONTINUE 12.35 -12.35 -say `1.234567890123456789E1,p=5` - !-> MESSAGE/CONTINUE 12.346 -12.346 -say `1.234567890123456789E1,p=6` - !-> MESSAGE/CONTINUE 12.3457 -12.3457 -say `1.234567890123456789E1,p=7` - !-> MESSAGE/CONTINUE 12.34568 -12.34568 -say `1.234567890123456789E1,p=8` - !-> MESSAGE/CONTINUE 12.345679 -12.345679 -say `1.234567890123456789E1,p=9` - !-> MESSAGE/CONTINUE 12.3456789 -12.3456789 -say `1.234567890123456789E1,p=10` - !-> MESSAGE/CONTINUE 12.3456789 -12.3456789 -say `1.234567890123456789E1,p=11` - !-> MESSAGE/CONTINUE 12.345678901 -12.345678901 -say `1.234567890123456789E1,p=12` - !-> MESSAGE/CONTINUE 12.3456789012 -12.3456789012 -say `1.234567890123456789E1,p=13` - !-> MESSAGE/CONTINUE 12.34567890123 -12.34567890123 -say `1.234567890123456789E1,p=14` - !-> MESSAGE/CONTINUE 12.345678901235 -12.345678901235 -say `1.234567890123456789E1,p=15` - !-> MESSAGE/CONTINUE 12.3456789012346 -12.3456789012346 -say `1.234567890123456789E1,p=16` - !-> MESSAGE/CONTINUE 12.34567890123457 -12.34567890123457 - -say `1.234567890123456789E2,p=-16` - !-> MESSAGE/CONTINUE 123.4567890123457 -123.4567890123457 -say `1.234567890123456789E2,p=-15` - !-> MESSAGE/CONTINUE 123.4567890123457 -123.4567890123457 -say `1.234567890123456789E2,p=-14` - !-> MESSAGE/CONTINUE 123.45678901234568 -123.45678901234568 -say `1.234567890123456789E2,p=-13` - !-> MESSAGE/CONTINUE 123.4567890123457 -123.4567890123457 -say `1.234567890123456789E2,p=-12` - !-> MESSAGE/CONTINUE 123.456789012346 -123.456789012346 -say `1.234567890123456789E2,p=-11` - !-> MESSAGE/CONTINUE 123.45678901235 -123.45678901235 -say `1.234567890123456789E2,p=-10` - !-> MESSAGE/CONTINUE 123.4567890123 -123.4567890123 -say `1.234567890123456789E2,p=-9` - !-> MESSAGE/CONTINUE 123.456789012 -123.456789012 -say `1.234567890123456789E2,p=-8` - !-> MESSAGE/CONTINUE 123.45678901 -123.45678901 -say `1.234567890123456789E2,p=-7` - !-> MESSAGE/CONTINUE 123.4567890 -123.4567890 -say `1.234567890123456789E2,p=-6` - !-> MESSAGE/CONTINUE 123.456789 -123.456789 -say `1.234567890123456789E2,p=-5` - !-> MESSAGE/CONTINUE 123.45679 -123.45679 -say `1.234567890123456789E2,p=-4` - !-> MESSAGE/CONTINUE 123.4568 -123.4568 -say `1.234567890123456789E2,p=-3` - !-> MESSAGE/CONTINUE 123.457 -123.457 -say `1.234567890123456789E2,p=-2` - !-> MESSAGE/CONTINUE 123.46 -123.46 -say `1.234567890123456789E2,p=-1` - !-> MESSAGE/CONTINUE 123.5 -123.5 -say `1.234567890123456789E2,p=0` - !-> MESSAGE/CONTINUE 123 -123 -say `1.234567890123456789E2,p=1` - !-> MESSAGE/CONTINUE 1.E+02 -1.E+02 -say `1.234567890123456789E2,p=2` - !-> MESSAGE/CONTINUE 1.2E+02 -1.2E+02 -say `1.234567890123456789E2,p=3` - !-> MESSAGE/CONTINUE 123 -123 -say `1.234567890123456789E2,p=4` - !-> MESSAGE/CONTINUE 123.5 -123.5 -say `1.234567890123456789E2,p=5` - !-> MESSAGE/CONTINUE 123.46 -123.46 -say `1.234567890123456789E2,p=6` - !-> MESSAGE/CONTINUE 123.457 -123.457 -say `1.234567890123456789E2,p=7` - !-> MESSAGE/CONTINUE 123.4568 -123.4568 -say `1.234567890123456789E2,p=8` - !-> MESSAGE/CONTINUE 123.45679 -123.45679 -say `1.234567890123456789E2,p=9` - !-> MESSAGE/CONTINUE 123.456789 -123.456789 -say `1.234567890123456789E2,p=10` - !-> MESSAGE/CONTINUE 123.456789 -123.456789 -say `1.234567890123456789E2,p=11` - !-> MESSAGE/CONTINUE 123.45678901 -123.45678901 -say `1.234567890123456789E2,p=12` - !-> MESSAGE/CONTINUE 123.456789012 -123.456789012 -say `1.234567890123456789E2,p=13` - !-> MESSAGE/CONTINUE 123.4567890123 -123.4567890123 -say `1.234567890123456789E2,p=14` - !-> MESSAGE/CONTINUE 123.45678901235 -123.45678901235 -say `1.234567890123456789E2,p=15` - !-> MESSAGE/CONTINUE 123.456789012346 -123.456789012346 -say `1.234567890123456789E2,p=16` - !-> MESSAGE/CONTINUE 123.4567890123457 -123.4567890123457 - -say `1.234567890123456789E3,p=-16` - !-> MESSAGE/CONTINUE 1234.567890123457 -1234.567890123457 -say `1.234567890123456789E3,p=-15` - !-> MESSAGE/CONTINUE 1234.567890123457 -1234.567890123457 -say `1.234567890123456789E3,p=-14` - !-> MESSAGE/CONTINUE 1234.567890123457 -1234.567890123457 -say `1.234567890123456789E3,p=-13` - !-> MESSAGE/CONTINUE 1234.5678901234569 -1234.5678901234569 -say `1.234567890123456789E3,p=-12` - !-> MESSAGE/CONTINUE 1234.567890123457 -1234.567890123457 -say `1.234567890123456789E3,p=-11` - !-> MESSAGE/CONTINUE 1234.56789012346 -1234.56789012346 -say `1.234567890123456789E3,p=-10` - !-> MESSAGE/CONTINUE 1234.5678901235 -1234.5678901235 -say `1.234567890123456789E3,p=-9` - !-> MESSAGE/CONTINUE 1234.567890123 -1234.567890123 -say `1.234567890123456789E3,p=-8` - !-> MESSAGE/CONTINUE 1234.56789012 -1234.56789012 -say `1.234567890123456789E3,p=-7` - !-> MESSAGE/CONTINUE 1234.5678901 -1234.5678901 -say `1.234567890123456789E3,p=-6` - !-> MESSAGE/CONTINUE 1234.567890 -1234.567890 -say `1.234567890123456789E3,p=-5` - !-> MESSAGE/CONTINUE 1234.56789 -1234.56789 -say `1.234567890123456789E3,p=-4` - !-> MESSAGE/CONTINUE 1234.5679 -1234.5679 -say `1.234567890123456789E3,p=-3` - !-> MESSAGE/CONTINUE 1234.568 -1234.568 -say `1.234567890123456789E3,p=-2` - !-> MESSAGE/CONTINUE 1234.57 -1234.57 -say `1.234567890123456789E3,p=-1` - !-> MESSAGE/CONTINUE 1234.6 -1234.6 -say `1.234567890123456789E3,p=0` - !-> MESSAGE/CONTINUE 1235 -1235 -say `1.234567890123456789E3,p=1` - !-> MESSAGE/CONTINUE 1.E+03 -1.E+03 -say `1.234567890123456789E3,p=2` - !-> MESSAGE/CONTINUE 1.2E+03 -1.2E+03 -say `1.234567890123456789E3,p=3` - !-> MESSAGE/CONTINUE 1.23E+03 -1.23E+03 -say `1.234567890123456789E3,p=4` - !-> MESSAGE/CONTINUE 1235 -1235 -say `1.234567890123456789E3,p=5` - !-> MESSAGE/CONTINUE 1234.6 -1234.6 -say `1.234567890123456789E3,p=6` - !-> MESSAGE/CONTINUE 1234.57 -1234.57 -say `1.234567890123456789E3,p=7` - !-> MESSAGE/CONTINUE 1234.568 -1234.568 -say `1.234567890123456789E3,p=8` - !-> MESSAGE/CONTINUE 1234.5679 -1234.5679 -say `1.234567890123456789E3,p=9` - !-> MESSAGE/CONTINUE 1234.56789 -1234.56789 -say `1.234567890123456789E3,p=10` - !-> MESSAGE/CONTINUE 1234.56789 -1234.56789 -say `1.234567890123456789E3,p=11` - !-> MESSAGE/CONTINUE 1234.5678901 -1234.5678901 -say `1.234567890123456789E3,p=12` - !-> MESSAGE/CONTINUE 1234.56789012 -1234.56789012 -say `1.234567890123456789E3,p=13` - !-> MESSAGE/CONTINUE 1234.567890123 -1234.567890123 -say `1.234567890123456789E3,p=14` - !-> MESSAGE/CONTINUE 1234.5678901235 -1234.5678901235 -say `1.234567890123456789E3,p=15` - !-> MESSAGE/CONTINUE 1234.56789012346 -1234.56789012346 -say `1.234567890123456789E3,p=16` - !-> MESSAGE/CONTINUE 1234.567890123457 -1234.567890123457 - -say `1.234567890123456789E4,p=-16` - !-> MESSAGE/CONTINUE 12345.67890123457 -12345.67890123457 -say `1.234567890123456789E4,p=-15` - !-> MESSAGE/CONTINUE 12345.67890123457 -12345.67890123457 -say `1.234567890123456789E4,p=-14` - !-> MESSAGE/CONTINUE 12345.67890123457 -12345.67890123457 -say `1.234567890123456789E4,p=-13` - !-> MESSAGE/CONTINUE 12345.67890123457 -12345.67890123457 -say `1.234567890123456789E4,p=-12` - !-> MESSAGE/CONTINUE 12345.678901234567 -12345.678901234567 -say `1.234567890123456789E4,p=-11` - !-> MESSAGE/CONTINUE 12345.67890123457 -12345.67890123457 -say `1.234567890123456789E4,p=-10` - !-> MESSAGE/CONTINUE 12345.6789012346 -12345.6789012346 -say `1.234567890123456789E4,p=-9` - !-> MESSAGE/CONTINUE 12345.678901235 -12345.678901235 -say `1.234567890123456789E4,p=-8` - !-> MESSAGE/CONTINUE 12345.67890123 -12345.67890123 -say `1.234567890123456789E4,p=-7` - !-> MESSAGE/CONTINUE 12345.6789012 -12345.6789012 -say `1.234567890123456789E4,p=-6` - !-> MESSAGE/CONTINUE 12345.678901 -12345.678901 -say `1.234567890123456789E4,p=-5` - !-> MESSAGE/CONTINUE 12345.67890 -12345.67890 -say `1.234567890123456789E4,p=-4` - !-> MESSAGE/CONTINUE 12345.6789 -12345.6789 -say `1.234567890123456789E4,p=-3` - !-> MESSAGE/CONTINUE 12345.679 -12345.679 -say `1.234567890123456789E4,p=-2` - !-> MESSAGE/CONTINUE 12345.68 -12345.68 -say `1.234567890123456789E4,p=-1` - !-> MESSAGE/CONTINUE 12345.7 -12345.7 -say `1.234567890123456789E4,p=0` - !-> MESSAGE/CONTINUE 12346 -12346 -say `1.234567890123456789E4,p=1` - !-> MESSAGE/CONTINUE 1.E+04 -1.E+04 -say `1.234567890123456789E4,p=2` - !-> MESSAGE/CONTINUE 1.2E+04 -1.2E+04 -say `1.234567890123456789E4,p=3` - !-> MESSAGE/CONTINUE 1.23E+04 -1.23E+04 -say `1.234567890123456789E4,p=4` - !-> MESSAGE/CONTINUE 1.235E+04 -1.235E+04 -say `1.234567890123456789E4,p=5` - !-> MESSAGE/CONTINUE 12346 -12346 -say `1.234567890123456789E4,p=6` - !-> MESSAGE/CONTINUE 12345.7 -12345.7 -say `1.234567890123456789E4,p=7` - !-> MESSAGE/CONTINUE 12345.68 -12345.68 -say `1.234567890123456789E4,p=8` - !-> MESSAGE/CONTINUE 12345.679 -12345.679 -say `1.234567890123456789E4,p=9` - !-> MESSAGE/CONTINUE 12345.6789 -12345.6789 -say `1.234567890123456789E4,p=10` - !-> MESSAGE/CONTINUE 12345.6789 -12345.6789 -say `1.234567890123456789E4,p=11` - !-> MESSAGE/CONTINUE 12345.678901 -12345.678901 -say `1.234567890123456789E4,p=12` - !-> MESSAGE/CONTINUE 12345.6789012 -12345.6789012 -say `1.234567890123456789E4,p=13` - !-> MESSAGE/CONTINUE 12345.67890123 -12345.67890123 -say `1.234567890123456789E4,p=14` - !-> MESSAGE/CONTINUE 12345.678901235 -12345.678901235 -say `1.234567890123456789E4,p=15` - !-> MESSAGE/CONTINUE 12345.6789012346 -12345.6789012346 -say `1.234567890123456789E4,p=16` - !-> MESSAGE/CONTINUE 12345.67890123457 -12345.67890123457 - -say `1.234567890123456789E5,p=-16` - !-> MESSAGE/CONTINUE 123456.7890123457 -123456.7890123457 -say `1.234567890123456789E5,p=-15` - !-> MESSAGE/CONTINUE 123456.7890123457 -123456.7890123457 -say `1.234567890123456789E5,p=-14` - !-> MESSAGE/CONTINUE 123456.7890123457 -123456.7890123457 -say `1.234567890123456789E5,p=-13` - !-> MESSAGE/CONTINUE 123456.7890123457 -123456.7890123457 -say `1.234567890123456789E5,p=-12` - !-> MESSAGE/CONTINUE 123456.7890123457 -123456.7890123457 -say `1.234567890123456789E5,p=-11` - !-> MESSAGE/CONTINUE 123456.78901234567 -123456.78901234567 -say `1.234567890123456789E5,p=-10` - !-> MESSAGE/CONTINUE 123456.7890123457 -123456.7890123457 -say `1.234567890123456789E5,p=-9` - !-> MESSAGE/CONTINUE 123456.789012346 -123456.789012346 -say `1.234567890123456789E5,p=-8` - !-> MESSAGE/CONTINUE 123456.78901235 -123456.78901235 -say `1.234567890123456789E5,p=-7` - !-> MESSAGE/CONTINUE 123456.7890123 -123456.7890123 -say `1.234567890123456789E5,p=-6` - !-> MESSAGE/CONTINUE 123456.789012 -123456.789012 -say `1.234567890123456789E5,p=-5` - !-> MESSAGE/CONTINUE 123456.78901 -123456.78901 -say `1.234567890123456789E5,p=-4` - !-> MESSAGE/CONTINUE 123456.7890 -123456.7890 -say `1.234567890123456789E5,p=-3` - !-> MESSAGE/CONTINUE 123456.789 -123456.789 -say `1.234567890123456789E5,p=-2` - !-> MESSAGE/CONTINUE 123456.79 -123456.79 -say `1.234567890123456789E5,p=-1` - !-> MESSAGE/CONTINUE 123456.8 -123456.8 -say `1.234567890123456789E5,p=0` - !-> MESSAGE/CONTINUE 123457 -123457 -say `1.234567890123456789E5,p=1` - !-> MESSAGE/CONTINUE 1.E+05 -1.E+05 -say `1.234567890123456789E5,p=2` - !-> MESSAGE/CONTINUE 1.2E+05 -1.2E+05 -say `1.234567890123456789E5,p=3` - !-> MESSAGE/CONTINUE 1.23E+05 -1.23E+05 -say `1.234567890123456789E5,p=4` - !-> MESSAGE/CONTINUE 1.235E+05 -1.235E+05 -say `1.234567890123456789E5,p=5` - !-> MESSAGE/CONTINUE 1.2346E+05 -1.2346E+05 -say `1.234567890123456789E5,p=6` - !-> MESSAGE/CONTINUE 123457 -123457 -say `1.234567890123456789E5,p=7` - !-> MESSAGE/CONTINUE 123456.8 -123456.8 -say `1.234567890123456789E5,p=8` - !-> MESSAGE/CONTINUE 123456.79 -123456.79 -say `1.234567890123456789E5,p=9` - !-> MESSAGE/CONTINUE 123456.789 -123456.789 -say `1.234567890123456789E5,p=10` - !-> MESSAGE/CONTINUE 123456.789 -123456.789 -say `1.234567890123456789E5,p=11` - !-> MESSAGE/CONTINUE 123456.78901 -123456.78901 -say `1.234567890123456789E5,p=12` - !-> MESSAGE/CONTINUE 123456.789012 -123456.789012 -say `1.234567890123456789E5,p=13` - !-> MESSAGE/CONTINUE 123456.7890123 -123456.7890123 -say `1.234567890123456789E5,p=14` - !-> MESSAGE/CONTINUE 123456.78901235 -123456.78901235 -say `1.234567890123456789E5,p=15` - !-> MESSAGE/CONTINUE 123456.789012346 -123456.789012346 -say `1.234567890123456789E5,p=16` - !-> MESSAGE/CONTINUE 123456.7890123457 -123456.7890123457 - -say `1.234567890123456789E6,p=-16` - !-> MESSAGE/CONTINUE 1234567.890123457 -1234567.890123457 -say `1.234567890123456789E6,p=-15` - !-> MESSAGE/CONTINUE 1234567.890123457 -1234567.890123457 -say `1.234567890123456789E6,p=-14` - !-> MESSAGE/CONTINUE 1234567.890123457 -1234567.890123457 -say `1.234567890123456789E6,p=-13` - !-> MESSAGE/CONTINUE 1234567.890123457 -1234567.890123457 -say `1.234567890123456789E6,p=-12` - !-> MESSAGE/CONTINUE 1234567.890123457 -1234567.890123457 -say `1.234567890123456789E6,p=-11` - !-> MESSAGE/CONTINUE 1234567.890123457 -1234567.890123457 -say `1.234567890123456789E6,p=-10` - !-> MESSAGE/CONTINUE 1234567.8901234567 -1234567.8901234567 -say `1.234567890123456789E6,p=-9` - !-> MESSAGE/CONTINUE 1234567.890123457 -1234567.890123457 -say `1.234567890123456789E6,p=-8` - !-> MESSAGE/CONTINUE 1234567.89012346 -1234567.89012346 -say `1.234567890123456789E6,p=-7` - !-> MESSAGE/CONTINUE 1234567.8901235 -1234567.8901235 -say `1.234567890123456789E6,p=-6` - !-> MESSAGE/CONTINUE 1234567.890123 -1234567.890123 -say `1.234567890123456789E6,p=-5` - !-> MESSAGE/CONTINUE 1234567.89012 -1234567.89012 -say `1.234567890123456789E6,p=-4` - !-> MESSAGE/CONTINUE 1234567.8901 -1234567.8901 -say `1.234567890123456789E6,p=-3` - !-> MESSAGE/CONTINUE 1234567.890 -1234567.890 -say `1.234567890123456789E6,p=-2` - !-> MESSAGE/CONTINUE 1234567.89 -1234567.89 -say `1.234567890123456789E6,p=-1` - !-> MESSAGE/CONTINUE 1234567.9 -1234567.9 -say `1.234567890123456789E6,p=0` - !-> MESSAGE/CONTINUE 1234568 -1234568 -say `1.234567890123456789E6,p=1` - !-> MESSAGE/CONTINUE 1.E+06 -1.E+06 -say `1.234567890123456789E6,p=2` - !-> MESSAGE/CONTINUE 1.2E+06 -1.2E+06 -say `1.234567890123456789E6,p=3` - !-> MESSAGE/CONTINUE 1.23E+06 -1.23E+06 -say `1.234567890123456789E6,p=4` - !-> MESSAGE/CONTINUE 1.235E+06 -1.235E+06 -say `1.234567890123456789E6,p=5` - !-> MESSAGE/CONTINUE 1.2346E+06 -1.2346E+06 -say `1.234567890123456789E6,p=6` - !-> MESSAGE/CONTINUE 1.23457E+06 -1.23457E+06 -say `1.234567890123456789E6,p=7` - !-> MESSAGE/CONTINUE 1234568 -1234568 -say `1.234567890123456789E6,p=8` - !-> MESSAGE/CONTINUE 1234567.9 -1234567.9 -say `1.234567890123456789E6,p=9` - !-> MESSAGE/CONTINUE 1234567.89 -1234567.89 -say `1.234567890123456789E6,p=10` - !-> MESSAGE/CONTINUE 1234567.89 -1234567.89 -say `1.234567890123456789E6,p=11` - !-> MESSAGE/CONTINUE 1234567.8901 -1234567.8901 -say `1.234567890123456789E6,p=12` - !-> MESSAGE/CONTINUE 1234567.89012 -1234567.89012 -say `1.234567890123456789E6,p=13` - !-> MESSAGE/CONTINUE 1234567.890123 -1234567.890123 -say `1.234567890123456789E6,p=14` - !-> MESSAGE/CONTINUE 1234567.8901235 -1234567.8901235 -say `1.234567890123456789E6,p=15` - !-> MESSAGE/CONTINUE 1234567.89012346 -1234567.89012346 -say `1.234567890123456789E6,p=16` - !-> MESSAGE/CONTINUE 1234567.890123457 -1234567.890123457 - -say `1.234567890123456789E7,p=-16` - !-> MESSAGE/CONTINUE 12345678.90123457 -12345678.90123457 -say `1.234567890123456789E7,p=-15` - !-> MESSAGE/CONTINUE 12345678.90123457 -12345678.90123457 -say `1.234567890123456789E7,p=-14` - !-> MESSAGE/CONTINUE 12345678.90123457 -12345678.90123457 -say `1.234567890123456789E7,p=-13` - !-> MESSAGE/CONTINUE 12345678.90123457 -12345678.90123457 -say `1.234567890123456789E7,p=-12` - !-> MESSAGE/CONTINUE 12345678.90123457 -12345678.90123457 -say `1.234567890123456789E7,p=-11` - !-> MESSAGE/CONTINUE 12345678.90123457 -12345678.90123457 -say `1.234567890123456789E7,p=-10` - !-> MESSAGE/CONTINUE 12345678.90123457 -12345678.90123457 -say `1.234567890123456789E7,p=-9` - !-> MESSAGE/CONTINUE 12345678.901234567 -12345678.901234567 -say `1.234567890123456789E7,p=-8` - !-> MESSAGE/CONTINUE 12345678.90123457 -12345678.90123457 -say `1.234567890123456789E7,p=-7` - !-> MESSAGE/CONTINUE 12345678.9012346 -12345678.9012346 -say `1.234567890123456789E7,p=-6` - !-> MESSAGE/CONTINUE 12345678.901235 -12345678.901235 -say `1.234567890123456789E7,p=-5` - !-> MESSAGE/CONTINUE 12345678.90123 -12345678.90123 -say `1.234567890123456789E7,p=-4` - !-> MESSAGE/CONTINUE 12345678.9012 -12345678.9012 -say `1.234567890123456789E7,p=-3` - !-> MESSAGE/CONTINUE 12345678.901 -12345678.901 -say `1.234567890123456789E7,p=-2` - !-> MESSAGE/CONTINUE 12345678.90 -12345678.90 -say `1.234567890123456789E7,p=-1` - !-> MESSAGE/CONTINUE 12345678.9 -12345678.9 -say `1.234567890123456789E7,p=0` - !-> MESSAGE/CONTINUE 12345679 -12345679 -say `1.234567890123456789E7,p=1` - !-> MESSAGE/CONTINUE 1.E+07 -1.E+07 -say `1.234567890123456789E7,p=2` - !-> MESSAGE/CONTINUE 1.2E+07 -1.2E+07 -say `1.234567890123456789E7,p=3` - !-> MESSAGE/CONTINUE 1.23E+07 -1.23E+07 -say `1.234567890123456789E7,p=4` - !-> MESSAGE/CONTINUE 1.235E+07 -1.235E+07 -say `1.234567890123456789E7,p=5` - !-> MESSAGE/CONTINUE 1.2346E+07 -1.2346E+07 -say `1.234567890123456789E7,p=6` - !-> MESSAGE/CONTINUE 1.23457E+07 -1.23457E+07 -say `1.234567890123456789E7,p=7` - !-> MESSAGE/CONTINUE 1.234568E+07 -1.234568E+07 -say `1.234567890123456789E7,p=8` - !-> MESSAGE/CONTINUE 12345679 -12345679 -say `1.234567890123456789E7,p=9` - !-> MESSAGE/CONTINUE 12345678.9 -12345678.9 -say `1.234567890123456789E7,p=10` - !-> MESSAGE/CONTINUE 12345678.9 -12345678.9 -say `1.234567890123456789E7,p=11` - !-> MESSAGE/CONTINUE 12345678.901 -12345678.901 -say `1.234567890123456789E7,p=12` - !-> MESSAGE/CONTINUE 12345678.9012 -12345678.9012 -say `1.234567890123456789E7,p=13` - !-> MESSAGE/CONTINUE 12345678.90123 -12345678.90123 -say `1.234567890123456789E7,p=14` - !-> MESSAGE/CONTINUE 12345678.901235 -12345678.901235 -say `1.234567890123456789E7,p=15` - !-> MESSAGE/CONTINUE 12345678.9012346 -12345678.9012346 -say `1.234567890123456789E7,p=16` - !-> MESSAGE/CONTINUE 12345678.90123457 -12345678.90123457 - -say `1.234567890123456789E8,p=-16` - !-> MESSAGE/CONTINUE 123456789.0123457 -123456789.0123457 -say `1.234567890123456789E8,p=-15` - !-> MESSAGE/CONTINUE 123456789.0123457 -123456789.0123457 -say `1.234567890123456789E8,p=-14` - !-> MESSAGE/CONTINUE 123456789.0123457 -123456789.0123457 -say `1.234567890123456789E8,p=-13` - !-> MESSAGE/CONTINUE 123456789.0123457 -123456789.0123457 -say `1.234567890123456789E8,p=-12` - !-> MESSAGE/CONTINUE 123456789.0123457 -123456789.0123457 -say `1.234567890123456789E8,p=-11` - !-> MESSAGE/CONTINUE 123456789.0123457 -123456789.0123457 -say `1.234567890123456789E8,p=-10` - !-> MESSAGE/CONTINUE 123456789.0123457 -123456789.0123457 -say `1.234567890123456789E8,p=-9` - !-> MESSAGE/CONTINUE 123456789.0123457 -123456789.0123457 -say `1.234567890123456789E8,p=-8` - !-> MESSAGE/CONTINUE 123456789.01234567 -123456789.01234567 -say `1.234567890123456789E8,p=-7` - !-> MESSAGE/CONTINUE 123456789.0123457 -123456789.0123457 -say `1.234567890123456789E8,p=-6` - !-> MESSAGE/CONTINUE 123456789.012346 -123456789.012346 -say `1.234567890123456789E8,p=-5` - !-> MESSAGE/CONTINUE 123456789.01235 -123456789.01235 -say `1.234567890123456789E8,p=-4` - !-> MESSAGE/CONTINUE 123456789.0123 -123456789.0123 -say `1.234567890123456789E8,p=-3` - !-> MESSAGE/CONTINUE 123456789.012 -123456789.012 -say `1.234567890123456789E8,p=-2` - !-> MESSAGE/CONTINUE 123456789.01 -123456789.01 -say `1.234567890123456789E8,p=-1` - !-> MESSAGE/CONTINUE 123456789.0 -123456789.0 -say `1.234567890123456789E8,p=0` - !-> MESSAGE/CONTINUE 123456789 -123456789 -say `1.234567890123456789E8,p=1` - !-> MESSAGE/CONTINUE 1.E+08 -1.E+08 -say `1.234567890123456789E8,p=2` - !-> MESSAGE/CONTINUE 1.2E+08 -1.2E+08 -say `1.234567890123456789E8,p=3` - !-> MESSAGE/CONTINUE 1.23E+08 -1.23E+08 -say `1.234567890123456789E8,p=4` - !-> MESSAGE/CONTINUE 1.235E+08 -1.235E+08 -say `1.234567890123456789E8,p=5` - !-> MESSAGE/CONTINUE 1.2346E+08 -1.2346E+08 -say `1.234567890123456789E8,p=6` - !-> MESSAGE/CONTINUE 1.23457E+08 -1.23457E+08 -say `1.234567890123456789E8,p=7` - !-> MESSAGE/CONTINUE 1.234568E+08 -1.234568E+08 -say `1.234567890123456789E8,p=8` - !-> MESSAGE/CONTINUE 1.2345679E+08 -1.2345679E+08 -say `1.234567890123456789E8,p=9` - !-> MESSAGE/CONTINUE 123456789 -123456789 -say `1.234567890123456789E8,p=10` - !-> MESSAGE/CONTINUE 123456789 -123456789 -say `1.234567890123456789E8,p=11` - !-> MESSAGE/CONTINUE 123456789.01 -123456789.01 -say `1.234567890123456789E8,p=12` - !-> MESSAGE/CONTINUE 123456789.012 -123456789.012 -say `1.234567890123456789E8,p=13` - !-> MESSAGE/CONTINUE 123456789.0123 -123456789.0123 -say `1.234567890123456789E8,p=14` - !-> MESSAGE/CONTINUE 123456789.01235 -123456789.01235 -say `1.234567890123456789E8,p=15` - !-> MESSAGE/CONTINUE 123456789.012346 -123456789.012346 -say `1.234567890123456789E8,p=16` - !-> MESSAGE/CONTINUE 123456789.0123457 -123456789.0123457 - -say `1.234567890123456789E9,p=-16` - !-> MESSAGE/CONTINUE 1234567890.123457 -1234567890.123457 -say `1.234567890123456789E9,p=-15` - !-> MESSAGE/CONTINUE 1234567890.123457 -1234567890.123457 -say `1.234567890123456789E9,p=-14` - !-> MESSAGE/CONTINUE 1234567890.123457 -1234567890.123457 -say `1.234567890123456789E9,p=-13` - !-> MESSAGE/CONTINUE 1234567890.123457 -1234567890.123457 -say `1.234567890123456789E9,p=-12` - !-> MESSAGE/CONTINUE 1234567890.123457 -1234567890.123457 -say `1.234567890123456789E9,p=-11` - !-> MESSAGE/CONTINUE 1234567890.123457 -1234567890.123457 -say `1.234567890123456789E9,p=-10` - !-> MESSAGE/CONTINUE 1234567890.123457 -1234567890.123457 -say `1.234567890123456789E9,p=-9` - !-> MESSAGE/CONTINUE 1234567890.123457 -1234567890.123457 -say `1.234567890123456789E9,p=-8` - !-> MESSAGE/CONTINUE 1234567890.123457 -1234567890.123457 -say `1.234567890123456789E9,p=-7` - !-> MESSAGE/CONTINUE 1234567890.1234567 -1234567890.1234567 -say `1.234567890123456789E9,p=-6` - !-> MESSAGE/CONTINUE 1234567890.123457 -1234567890.123457 -say `1.234567890123456789E9,p=-5` - !-> MESSAGE/CONTINUE 1234567890.12346 -1234567890.12346 -say `1.234567890123456789E9,p=-4` - !-> MESSAGE/CONTINUE 1234567890.1235 -1234567890.1235 -say `1.234567890123456789E9,p=-3` - !-> MESSAGE/CONTINUE 1234567890.123 -1234567890.123 -say `1.234567890123456789E9,p=-2` - !-> MESSAGE/CONTINUE 1234567890.12 -1234567890.12 -say `1.234567890123456789E9,p=-1` - !-> MESSAGE/CONTINUE 1234567890.1 -1234567890.1 -say `1.234567890123456789E9,p=0` - !-> MESSAGE/CONTINUE 1234567890 -1234567890 -say `1.234567890123456789E9,p=1` - !-> MESSAGE/CONTINUE 1.E+09 -1.E+09 -say `1.234567890123456789E9,p=2` - !-> MESSAGE/CONTINUE 1.2E+09 -1.2E+09 -say `1.234567890123456789E9,p=3` - !-> MESSAGE/CONTINUE 1.23E+09 -1.23E+09 -say `1.234567890123456789E9,p=4` - !-> MESSAGE/CONTINUE 1.235E+09 -1.235E+09 -say `1.234567890123456789E9,p=5` - !-> MESSAGE/CONTINUE 1.2346E+09 -1.2346E+09 -say `1.234567890123456789E9,p=6` - !-> MESSAGE/CONTINUE 1.23457E+09 -1.23457E+09 -say `1.234567890123456789E9,p=7` - !-> MESSAGE/CONTINUE 1.234568E+09 -1.234568E+09 -say `1.234567890123456789E9,p=8` - !-> MESSAGE/CONTINUE 1.2345679E+09 -1.2345679E+09 -say `1.234567890123456789E9,p=9` - !-> MESSAGE/CONTINUE 1.23456789E+09 -1.23456789E+09 -say `1.234567890123456789E9,p=10` - !-> MESSAGE/CONTINUE 1234567890 -1234567890 -say `1.234567890123456789E9,p=11` - !-> MESSAGE/CONTINUE 1234567890.1 -1234567890.1 -say `1.234567890123456789E9,p=12` - !-> MESSAGE/CONTINUE 1234567890.12 -1234567890.12 -say `1.234567890123456789E9,p=13` - !-> MESSAGE/CONTINUE 1234567890.123 -1234567890.123 -say `1.234567890123456789E9,p=14` - !-> MESSAGE/CONTINUE 1234567890.1235 -1234567890.1235 -say `1.234567890123456789E9,p=15` - !-> MESSAGE/CONTINUE 1234567890.12346 -1234567890.12346 -say `1.234567890123456789E9,p=16` - !-> MESSAGE/CONTINUE 1234567890.123457 -1234567890.123457 - -say `1.234567890123456789E10,p=-16` - !-> MESSAGE/CONTINUE 12345678901.23457 -12345678901.23457 -say `1.234567890123456789E10,p=-15` - !-> MESSAGE/CONTINUE 12345678901.23457 -12345678901.23457 -say `1.234567890123456789E10,p=-14` - !-> MESSAGE/CONTINUE 12345678901.23457 -12345678901.23457 -say `1.234567890123456789E10,p=-13` - !-> MESSAGE/CONTINUE 12345678901.23457 -12345678901.23457 -say `1.234567890123456789E10,p=-12` - !-> MESSAGE/CONTINUE 12345678901.23457 -12345678901.23457 -say `1.234567890123456789E10,p=-11` - !-> MESSAGE/CONTINUE 12345678901.23457 -12345678901.23457 -say `1.234567890123456789E10,p=-10` - !-> MESSAGE/CONTINUE 12345678901.23457 -12345678901.23457 -say `1.234567890123456789E10,p=-9` - !-> MESSAGE/CONTINUE 12345678901.23457 -12345678901.23457 -say `1.234567890123456789E10,p=-8` - !-> MESSAGE/CONTINUE 12345678901.23457 -12345678901.23457 -say `1.234567890123456789E10,p=-7` - !-> MESSAGE/CONTINUE 12345678901.23457 -12345678901.23457 -say `1.234567890123456789E10,p=-6` - !-> MESSAGE/CONTINUE 12345678901.234568 -12345678901.234568 -say `1.234567890123456789E10,p=-5` - !-> MESSAGE/CONTINUE 12345678901.23457 -12345678901.23457 -say `1.234567890123456789E10,p=-4` - !-> MESSAGE/CONTINUE 12345678901.2346 -12345678901.2346 -say `1.234567890123456789E10,p=-3` - !-> MESSAGE/CONTINUE 12345678901.235 -12345678901.235 -say `1.234567890123456789E10,p=-2` - !-> MESSAGE/CONTINUE 12345678901.23 -12345678901.23 -say `1.234567890123456789E10,p=-1` - !-> MESSAGE/CONTINUE 12345678901.2 -12345678901.2 -say `1.234567890123456789E10,p=0` - !-> MESSAGE/CONTINUE 12345678901 -12345678901 -say `1.234567890123456789E10,p=1` - !-> MESSAGE/CONTINUE 1.E+10 -1.E+10 -say `1.234567890123456789E10,p=2` - !-> MESSAGE/CONTINUE 1.2E+10 -1.2E+10 -say `1.234567890123456789E10,p=3` - !-> MESSAGE/CONTINUE 1.23E+10 -1.23E+10 -say `1.234567890123456789E10,p=4` - !-> MESSAGE/CONTINUE 1.235E+10 -1.235E+10 -say `1.234567890123456789E10,p=5` - !-> MESSAGE/CONTINUE 1.2346E+10 -1.2346E+10 -say `1.234567890123456789E10,p=6` - !-> MESSAGE/CONTINUE 1.23457E+10 -1.23457E+10 -say `1.234567890123456789E10,p=7` - !-> MESSAGE/CONTINUE 1.234568E+10 -1.234568E+10 -say `1.234567890123456789E10,p=8` - !-> MESSAGE/CONTINUE 1.2345679E+10 -1.2345679E+10 -say `1.234567890123456789E10,p=9` - !-> MESSAGE/CONTINUE 1.23456789E+10 -1.23456789E+10 -say `1.234567890123456789E10,p=10` - !-> MESSAGE/CONTINUE 1.23456789E+10 -1.23456789E+10 -say `1.234567890123456789E10,p=11` - !-> MESSAGE/CONTINUE 12345678901 -12345678901 -say `1.234567890123456789E10,p=12` - !-> MESSAGE/CONTINUE 12345678901.2 -12345678901.2 -say `1.234567890123456789E10,p=13` - !-> MESSAGE/CONTINUE 12345678901.23 -12345678901.23 -say `1.234567890123456789E10,p=14` - !-> MESSAGE/CONTINUE 12345678901.235 -12345678901.235 -say `1.234567890123456789E10,p=15` - !-> MESSAGE/CONTINUE 12345678901.2346 -12345678901.2346 -say `1.234567890123456789E10,p=16` - !-> MESSAGE/CONTINUE 12345678901.23457 -12345678901.23457 - -say `1.234567890123456789E11,p=-16` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 -say `1.234567890123456789E11,p=-15` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 -say `1.234567890123456789E11,p=-14` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 -say `1.234567890123456789E11,p=-13` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 -say `1.234567890123456789E11,p=-12` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 -say `1.234567890123456789E11,p=-11` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 -say `1.234567890123456789E11,p=-10` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 -say `1.234567890123456789E11,p=-9` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 -say `1.234567890123456789E11,p=-8` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 -say `1.234567890123456789E11,p=-7` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 -say `1.234567890123456789E11,p=-6` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 -say `1.234567890123456789E11,p=-5` - !-> MESSAGE/CONTINUE 123456789012.34567 -123456789012.34567 -say `1.234567890123456789E11,p=-4` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 -say `1.234567890123456789E11,p=-3` - !-> MESSAGE/CONTINUE 123456789012.346 -123456789012.346 -say `1.234567890123456789E11,p=-2` - !-> MESSAGE/CONTINUE 123456789012.35 -123456789012.35 -say `1.234567890123456789E11,p=-1` - !-> MESSAGE/CONTINUE 123456789012.3 -123456789012.3 -say `1.234567890123456789E11,p=0` - !-> MESSAGE/CONTINUE 123456789012 -123456789012 -say `1.234567890123456789E11,p=1` - !-> MESSAGE/CONTINUE 1.E+11 -1.E+11 -say `1.234567890123456789E11,p=2` - !-> MESSAGE/CONTINUE 1.2E+11 -1.2E+11 -say `1.234567890123456789E11,p=3` - !-> MESSAGE/CONTINUE 1.23E+11 -1.23E+11 -say `1.234567890123456789E11,p=4` - !-> MESSAGE/CONTINUE 1.235E+11 -1.235E+11 -say `1.234567890123456789E11,p=5` - !-> MESSAGE/CONTINUE 1.2346E+11 -1.2346E+11 -say `1.234567890123456789E11,p=6` - !-> MESSAGE/CONTINUE 1.23457E+11 -1.23457E+11 -say `1.234567890123456789E11,p=7` - !-> MESSAGE/CONTINUE 1.234568E+11 -1.234568E+11 -say `1.234567890123456789E11,p=8` - !-> MESSAGE/CONTINUE 1.2345679E+11 -1.2345679E+11 -say `1.234567890123456789E11,p=9` - !-> MESSAGE/CONTINUE 1.23456789E+11 -1.23456789E+11 -say `1.234567890123456789E11,p=10` - !-> MESSAGE/CONTINUE 1.23456789E+11 -1.23456789E+11 -say `1.234567890123456789E11,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E+11 -1.2345678901E+11 -say `1.234567890123456789E11,p=12` - !-> MESSAGE/CONTINUE 123456789012 -123456789012 -say `1.234567890123456789E11,p=13` - !-> MESSAGE/CONTINUE 123456789012.3 -123456789012.3 -say `1.234567890123456789E11,p=14` - !-> MESSAGE/CONTINUE 123456789012.35 -123456789012.35 -say `1.234567890123456789E11,p=15` - !-> MESSAGE/CONTINUE 123456789012.346 -123456789012.346 -say `1.234567890123456789E11,p=16` - !-> MESSAGE/CONTINUE 123456789012.3457 -123456789012.3457 - -say `1.234567890123456789E12,p=-16` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-15` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-14` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-13` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-12` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-11` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-10` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-9` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-8` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-7` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-6` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-5` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-4` - !-> MESSAGE/CONTINUE 1234567890123.4568 -1234567890123.4568 -say `1.234567890123456789E12,p=-3` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 -say `1.234567890123456789E12,p=-2` - !-> MESSAGE/CONTINUE 1234567890123.46 -1234567890123.46 -say `1.234567890123456789E12,p=-1` - !-> MESSAGE/CONTINUE 1234567890123.5 -1234567890123.5 -say `1.234567890123456789E12,p=0` - !-> MESSAGE/CONTINUE 1234567890123 -1234567890123 -say `1.234567890123456789E12,p=1` - !-> MESSAGE/CONTINUE 1.E+12 -1.E+12 -say `1.234567890123456789E12,p=2` - !-> MESSAGE/CONTINUE 1.2E+12 -1.2E+12 -say `1.234567890123456789E12,p=3` - !-> MESSAGE/CONTINUE 1.23E+12 -1.23E+12 -say `1.234567890123456789E12,p=4` - !-> MESSAGE/CONTINUE 1.235E+12 -1.235E+12 -say `1.234567890123456789E12,p=5` - !-> MESSAGE/CONTINUE 1.2346E+12 -1.2346E+12 -say `1.234567890123456789E12,p=6` - !-> MESSAGE/CONTINUE 1.23457E+12 -1.23457E+12 -say `1.234567890123456789E12,p=7` - !-> MESSAGE/CONTINUE 1.234568E+12 -1.234568E+12 -say `1.234567890123456789E12,p=8` - !-> MESSAGE/CONTINUE 1.2345679E+12 -1.2345679E+12 -say `1.234567890123456789E12,p=9` - !-> MESSAGE/CONTINUE 1.23456789E+12 -1.23456789E+12 -say `1.234567890123456789E12,p=10` - !-> MESSAGE/CONTINUE 1.23456789E+12 -1.23456789E+12 -say `1.234567890123456789E12,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E+12 -1.2345678901E+12 -say `1.234567890123456789E12,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E+12 -1.23456789012E+12 -say `1.234567890123456789E12,p=13` - !-> MESSAGE/CONTINUE 1234567890123 -1234567890123 -say `1.234567890123456789E12,p=14` - !-> MESSAGE/CONTINUE 1234567890123.5 -1234567890123.5 -say `1.234567890123456789E12,p=15` - !-> MESSAGE/CONTINUE 1234567890123.46 -1234567890123.46 -say `1.234567890123456789E12,p=16` - !-> MESSAGE/CONTINUE 1234567890123.457 -1234567890123.457 - -say `1.234567890123456789E13,p=-16` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-15` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-14` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-13` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-12` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-11` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-10` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-9` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-8` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-7` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-6` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-5` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-4` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-3` - !-> MESSAGE/CONTINUE 12345678901234.568 -12345678901234.568 -say `1.234567890123456789E13,p=-2` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 -say `1.234567890123456789E13,p=-1` - !-> MESSAGE/CONTINUE 12345678901234.6 -12345678901234.6 -say `1.234567890123456789E13,p=0` - !-> MESSAGE/CONTINUE 12345678901235 -12345678901235 -say `1.234567890123456789E13,p=1` - !-> MESSAGE/CONTINUE 1.E+13 -1.E+13 -say `1.234567890123456789E13,p=2` - !-> MESSAGE/CONTINUE 1.2E+13 -1.2E+13 -say `1.234567890123456789E13,p=3` - !-> MESSAGE/CONTINUE 1.23E+13 -1.23E+13 -say `1.234567890123456789E13,p=4` - !-> MESSAGE/CONTINUE 1.235E+13 -1.235E+13 -say `1.234567890123456789E13,p=5` - !-> MESSAGE/CONTINUE 1.2346E+13 -1.2346E+13 -say `1.234567890123456789E13,p=6` - !-> MESSAGE/CONTINUE 1.23457E+13 -1.23457E+13 -say `1.234567890123456789E13,p=7` - !-> MESSAGE/CONTINUE 1.234568E+13 -1.234568E+13 -say `1.234567890123456789E13,p=8` - !-> MESSAGE/CONTINUE 1.2345679E+13 -1.2345679E+13 -say `1.234567890123456789E13,p=9` - !-> MESSAGE/CONTINUE 1.23456789E+13 -1.23456789E+13 -say `1.234567890123456789E13,p=10` - !-> MESSAGE/CONTINUE 1.23456789E+13 -1.23456789E+13 -say `1.234567890123456789E13,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E+13 -1.2345678901E+13 -say `1.234567890123456789E13,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E+13 -1.23456789012E+13 -say `1.234567890123456789E13,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E+13 -1.234567890123E+13 -say `1.234567890123456789E13,p=14` - !-> MESSAGE/CONTINUE 12345678901235 -12345678901235 -say `1.234567890123456789E13,p=15` - !-> MESSAGE/CONTINUE 12345678901234.6 -12345678901234.6 -say `1.234567890123456789E13,p=16` - !-> MESSAGE/CONTINUE 12345678901234.57 -12345678901234.57 - -say `1.234567890123456789E14,p=-16` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-15` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-14` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-13` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-12` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-11` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-10` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-9` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-8` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-7` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-6` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-5` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-4` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-3` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=-2` - !-> MESSAGE/CONTINUE 123456789012345.67 -123456789012345.67 -say `1.234567890123456789E14,p=-1` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 -say `1.234567890123456789E14,p=0` - !-> MESSAGE/CONTINUE 123456789012346 -123456789012346 -say `1.234567890123456789E14,p=1` - !-> MESSAGE/CONTINUE 1.E+14 -1.E+14 -say `1.234567890123456789E14,p=2` - !-> MESSAGE/CONTINUE 1.2E+14 -1.2E+14 -say `1.234567890123456789E14,p=3` - !-> MESSAGE/CONTINUE 1.23E+14 -1.23E+14 -say `1.234567890123456789E14,p=4` - !-> MESSAGE/CONTINUE 1.235E+14 -1.235E+14 -say `1.234567890123456789E14,p=5` - !-> MESSAGE/CONTINUE 1.2346E+14 -1.2346E+14 -say `1.234567890123456789E14,p=6` - !-> MESSAGE/CONTINUE 1.23457E+14 -1.23457E+14 -say `1.234567890123456789E14,p=7` - !-> MESSAGE/CONTINUE 1.234568E+14 -1.234568E+14 -say `1.234567890123456789E14,p=8` - !-> MESSAGE/CONTINUE 1.2345679E+14 -1.2345679E+14 -say `1.234567890123456789E14,p=9` - !-> MESSAGE/CONTINUE 1.23456789E+14 -1.23456789E+14 -say `1.234567890123456789E14,p=10` - !-> MESSAGE/CONTINUE 1.23456789E+14 -1.23456789E+14 -say `1.234567890123456789E14,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E+14 -1.2345678901E+14 -say `1.234567890123456789E14,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E+14 -1.23456789012E+14 -say `1.234567890123456789E14,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E+14 -1.234567890123E+14 -say `1.234567890123456789E14,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E+14 -1.2345678901235E+14 -say `1.234567890123456789E14,p=15` - !-> MESSAGE/CONTINUE 123456789012346 -123456789012346 -say `1.234567890123456789E14,p=16` - !-> MESSAGE/CONTINUE 123456789012345.7 -123456789012345.7 - -say `1.234567890123456789E15,p=-16` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-15` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-14` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-13` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-12` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-11` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-10` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-9` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-8` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-7` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-6` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-5` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-4` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-3` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-2` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=-1` - !-> MESSAGE/CONTINUE 1234567890123456.8 -1234567890123456.8 -say `1.234567890123456789E15,p=0` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 -say `1.234567890123456789E15,p=1` - !-> MESSAGE/CONTINUE 1.E+15 -1.E+15 -say `1.234567890123456789E15,p=2` - !-> MESSAGE/CONTINUE 1.2E+15 -1.2E+15 -say `1.234567890123456789E15,p=3` - !-> MESSAGE/CONTINUE 1.23E+15 -1.23E+15 -say `1.234567890123456789E15,p=4` - !-> MESSAGE/CONTINUE 1.235E+15 -1.235E+15 -say `1.234567890123456789E15,p=5` - !-> MESSAGE/CONTINUE 1.2346E+15 -1.2346E+15 -say `1.234567890123456789E15,p=6` - !-> MESSAGE/CONTINUE 1.23457E+15 -1.23457E+15 -say `1.234567890123456789E15,p=7` - !-> MESSAGE/CONTINUE 1.234568E+15 -1.234568E+15 -say `1.234567890123456789E15,p=8` - !-> MESSAGE/CONTINUE 1.2345679E+15 -1.2345679E+15 -say `1.234567890123456789E15,p=9` - !-> MESSAGE/CONTINUE 1.23456789E+15 -1.23456789E+15 -say `1.234567890123456789E15,p=10` - !-> MESSAGE/CONTINUE 1.23456789E+15 -1.23456789E+15 -say `1.234567890123456789E15,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E+15 -1.2345678901E+15 -say `1.234567890123456789E15,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E+15 -1.23456789012E+15 -say `1.234567890123456789E15,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E+15 -1.234567890123E+15 -say `1.234567890123456789E15,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E+15 -1.2345678901235E+15 -say `1.234567890123456789E15,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E+15 -1.23456789012346E+15 -say `1.234567890123456789E15,p=16` - !-> MESSAGE/CONTINUE 1234567890123457 -1234567890123457 - -say `1.234567890123456789E16,p=-16` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-15` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-14` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-13` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-12` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-11` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-10` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-9` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-8` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-7` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-6` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-5` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-4` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-3` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-2` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=-1` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `1.234567890123456789E16,p=0` - !-> MESSAGE/CONTINUE 12345678901234568 -12345678901234568 -say `1.234567890123456789E16,p=1` - !-> MESSAGE/CONTINUE 1.E+16 -1.E+16 -say `1.234567890123456789E16,p=2` - !-> MESSAGE/CONTINUE 1.2E+16 -1.2E+16 -say `1.234567890123456789E16,p=3` - !-> MESSAGE/CONTINUE 1.23E+16 -1.23E+16 -say `1.234567890123456789E16,p=4` - !-> MESSAGE/CONTINUE 1.235E+16 -1.235E+16 -say `1.234567890123456789E16,p=5` - !-> MESSAGE/CONTINUE 1.2346E+16 -1.2346E+16 -say `1.234567890123456789E16,p=6` - !-> MESSAGE/CONTINUE 1.23457E+16 -1.23457E+16 -say `1.234567890123456789E16,p=7` - !-> MESSAGE/CONTINUE 1.234568E+16 -1.234568E+16 -say `1.234567890123456789E16,p=8` - !-> MESSAGE/CONTINUE 1.2345679E+16 -1.2345679E+16 -say `1.234567890123456789E16,p=9` - !-> MESSAGE/CONTINUE 1.23456789E+16 -1.23456789E+16 -say `1.234567890123456789E16,p=10` - !-> MESSAGE/CONTINUE 1.23456789E+16 -1.23456789E+16 -say `1.234567890123456789E16,p=11` - !-> MESSAGE/CONTINUE 1.2345678901E+16 -1.2345678901E+16 -say `1.234567890123456789E16,p=12` - !-> MESSAGE/CONTINUE 1.23456789012E+16 -1.23456789012E+16 -say `1.234567890123456789E16,p=13` - !-> MESSAGE/CONTINUE 1.234567890123E+16 -1.234567890123E+16 -say `1.234567890123456789E16,p=14` - !-> MESSAGE/CONTINUE 1.2345678901235E+16 -1.2345678901235E+16 -say `1.234567890123456789E16,p=15` - !-> MESSAGE/CONTINUE 1.23456789012346E+16 -1.23456789012346E+16 -say `1.234567890123456789E16,p=16` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 - -! adding lots of insignificant zeros -say `00000000000000000012345678901234567890` - !-> MESSAGE/CONTINUE 1.234567890123457E+19 -1.234567890123457E+19 -say `000000000000000000.12345678901234567890` - !-> MESSAGE/CONTINUE 0.1234567890123457 -0.1234567890123457 -say `0000.1234567890123456789000000000000000` - !-> MESSAGE/CONTINUE 0.1234567890123457 -0.1234567890123457 - -! other test cases, possibly in other tests - -say `2.2100001 * 1e8` - !-> MESSAGE/CONTINUE 221000010 -221000010 -say `2.2100001 * 1e9` - !-> MESSAGE/CONTINUE 2210000100 -2210000100 -say `2.2100001 * 1e9` - !-> MESSAGE/CONTINUE 2210000100 -2210000100 -say `2.2100001 * 1e13` - !-> MESSAGE/CONTINUE 22100001000000 -22100001000000 - -say `1.555555551e-9,p=10` - !-> MESSAGE/CONTINUE 1.555555551E-09 -1.555555551E-09 - -say `1234567890123456` - !-> MESSAGE/CONTINUE 1234567890123456 -1234567890123456 -say `12345678901234567` - !-> MESSAGE/CONTINUE 1.234567890123457E+16 -1.234567890123457E+16 -say `123456789012345678` - !-> MESSAGE/CONTINUE 1.234567890123457E+17 -1.234567890123457E+17 -say `1234567890123456789` - !-> MESSAGE/CONTINUE 1.234567890123457E+18 -1.234567890123457E+18 -say `12345678901234567890` - !-> MESSAGE/CONTINUE 1.234567890123457E+19 -1.234567890123457E+19 -say `123456789012345678901` - !-> MESSAGE/CONTINUE 1.234567890123457E+20 -1.234567890123457E+20 -say `1234567890123456789012` - !-> MESSAGE/CONTINUE 1.234567890123457E+21 -1.234567890123457E+21 -say `12345678901234567890123` - !-> MESSAGE/CONTINUE 1.234567890123457E+22 -1.234567890123457E+22 -say `123456789012345678901234` - !-> MESSAGE/CONTINUE 1.234567890123457E+23 -1.234567890123457E+23 - -say `1e-5,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1e-6,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1e-7,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 -say `1e-11,p=-1` - !-> MESSAGE/CONTINUE 0.0 -0.0 - -list/prec=12 {`1 + 0.1`, `1 + 1e-7`, `1 + 1e-8`} - 1 - !-> list/prec=12 {1.1, 1.0000001, 1.00000001} - 1 - VARIABLE : {1.1, 1.0000001, 1.00000001} - 1 - SUBSET : 3 points (X) - 1 / 1: 0.100000000000 - 2 / 2: 0.000000100000 - 3 / 3: 0.000000010000 - -list/prec=12 1.000000001,`1.000000001` - !-> list/prec=12 1.000000001,1.000000001 - Column 1: cnst is constant - Column 2: cnst is constant - cnst cnst -I / *: 1.00000000100 1.00000000100 - -list/prec=12 0.999999999, `0.999999999` - !-> list/prec=12 0.999999999, 0.999999999 - Column 1: cnst is constant - Column 2: cnst is constant - cnst cnst -I / *: 0.999999999000 0.999999999000 -list/prec=12 1.000500001,`1.000500001` - !-> list/prec=12 1.000500001,1.000500001 - Column 1: cnst is constant - Column 2: cnst is constant - cnst cnst -I / *: 1.00050000100 1.00050000100 - -say `1.55555e8,p=2` - !-> MESSAGE/CONTINUE 1.6E+08 -1.6E+08 -say `1.55555e7,p=2` - !-> MESSAGE/CONTINUE 1.6E+07 -1.6E+07 - -say `1.55555e-8,p=2` - !-> MESSAGE/CONTINUE 1.6E-08 -1.6E-08 - -say `1.555555555e-9,p=1` - !-> MESSAGE/CONTINUE 2.E-09 -2.E-09 - -say `1.555555555e-9,p=2` - !-> MESSAGE/CONTINUE 1.6E-09 -1.6E-09 - -say `1.555555555e-9,p=3` - !-> MESSAGE/CONTINUE 1.56E-09 -1.56E-09 - -say `1.555555555e-9,p=4` - !-> MESSAGE/CONTINUE 1.556E-09 -1.556E-09 - -list/nohead/p=16 1234567890123456, `1234567890123456` - !-> list/nohead/p=16 1234567890123456, 1234567890123456 -I / *: 1234567890123456. 1234567890123456. -list/nohead/p=16 1234567890123456, `1234567890123456,p=16` - !-> list/nohead/p=16 1234567890123456, 1234567890123456 -I / *: 1234567890123456. 1234567890123456. - -! negative precision: don't do fixed decimal format if it will -! list too many digits - -say `2.2 * 1e10,p=-5` - !-> MESSAGE/CONTINUE 22000000000.00000 -22000000000.00000 -say `2.2 * 1e16,p=-5` - !-> MESSAGE/CONTINUE 2.2E+16 -2.2E+16 -say `2.2 * 1e21,p=-5` - !-> MESSAGE/CONTINUE 2.2E+21 -2.2E+21 -say `2.2 * 1e41,p=-5` - !-> MESSAGE/CONTINUE 2.2E+41 -2.2E+41 -say `2.2 * 1e14,p=-1` - !-> MESSAGE/CONTINUE 220000000000000.0 -220000000000000.0 - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_set_global_att_out -! err75_set_global_att_out.jnl -! 6/27/2019 Acm -! -! Issue 1942: Previously the second instance of "set att/output=all ." -! in a session caused an error. - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc -set att/output=all . -save/clobber/file=a.nc prof, time - -set att/output=all . - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_key_labels -! err75_key_labels -! 7/1/2019 issue 1929 -! various tests using data at different orders of magnitude. -! some switched back and forth from decimal to scientific notation -! some started adding too many digits. - -use coads_climatology - -set v ul -shade/L=1/x=150:220/y=-90:0 sst * 1e-6 -set v ur -shade/L=1/x=150:220/y=-90:0 sst * 1e-12 -set v ll -shade/L=1/x=150:220/y=-90:0/key=horiz sst * 1e-13 -set v lr -shade/L=1/x=150:220/y=-90:0/key=horiz sst * 1e4 - -frame/file=key_labels_magnitude.gif - -!!!! Remember to update documentation about precision= -! https://ferret.pmel.noaa.gov/Ferret/documentation/users-guide/variables-xpressions/EMBEDDED-XPRESSIONS#_VPINDEXENTRY_576 -! Changes here: In the case of a negative precision value, Ferret will again drop terminating zeros to the right of the decimal point. -! It does not drop terminating zero's and for large numbers does not return a decimal string result -! -! -! https://ferret.pmel.noaa.gov/Ferret/documentation/users-guide/variables-xpressions/EMBEDDED-XPRESSIONS#_VPINDEXENTRY_572 -! Changes here: [ for p=0] ...This also means that Ferret will always return at least one significant digit: - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err75_scale_missingval -! err75_scale_missingval.jnl -! Ticket 1948: variable with a missing_value flag only -! has zero's mis-handled. - -! Additionally the values for missing and fill were not initialized, -! so the bug only shows up intermittantly. Reading a scaled var with -! bad=0 causes them to be set to 0 as in a fresh session. - -let/bad=0 a = 1 -define att/output a.scale_factor = 10 -save/clobber/file=a.nc a -cancel var a -use a.nc -list a - VARIABLE : 1 - FILENAME : a.nc - 1.000 -cancel data/all - -! The variable has a missing_value flag but not _FillValue -! The 0 in var was shown as missing -use scale_test -show attributes var1 - attributes for dataset: ./data/scale_test.nc - VAR1.missing_value = -1.E+34 - VAR1.scale_factor = 1000 - VAR1.long_name = Var with missing_value only -list var1 - VARIABLE : Var with missing_value only - FILENAME : scale_test.nc - SUBSET : 3 by 2 points (X-Y) - 1 2 3 - 1 2 3 - 1 / 1: 1100. 0. 2200. - 2 / 2: 3300. 4400. 4800. - -! with a _FillValue attribute, it's treated correctly -show attributes var2 - attributes for dataset: ./data/scale_test.nc - VAR2._FillValue = -1.E+34 - VAR2.scale_factor = 1000 - VAR2.long_name = Var with _FillValue only -list var2 - VARIABLE : Var with _FillValue only - FILENAME : scale_test.nc - SUBSET : 3 by 2 points (X-Y) - 1 2 3 - 1 2 3 - 1 / 1: 1100. 0. 2200. - 2 / 2: 3300. 4400. 4800. - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err751_dsg_fmask -! err751_dsg_fmask.jnl -! 8/20/2019 -! defining a mask based on feature values where -! the feature-value may be missing -! Canceling a mask, make sure data in memory not reused. - - -use DSG_ERDDAP_pmelTao5daySst.nc - -let mask_by_code = if wmo_platform_code EQ 51011 or wmo_platform_code EQ 23003 then 1 -list/m=1:20 wmo_platform_code, mask_by_code - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 1 to 20 - STATION is Timeseries-id - WMO_PLATFORM_CODE is WMO Platform Code - MASK_BY_CODE is IF WMO_PLATFORM_CODE EQ 51011 OR WMO_PLATFORM_CODE EQ 23003 THEN 1 - FEATURE STATION LONGITUDE LATITUDE WMO_PLATMASK_BY_CODE - 1 0n0e 0E 0 13010. ... - 2 0n10w 10W 0 15002. ... - 3 0n110w 110W 0 32323. ... - 4 0n125w 125W 0 51011. 1.000 - 5 0n140w 140W 0 51311. ... - 6 0n155w 155W 0 51023. ... - 7 0n156e 156E 0 52317. ... - 8 0n165e 165E 0 52321. ... - 9 0n170w 170W 0 51010. ... - 10 0n23w 23W 0 31007. ... - 11 0n67e 67E 0 23015. ... - 12 0n80.5e 80.5E 0 23001. ... - 13 0n90e 90E 0 23004. ... - 14 0n95w 95W 0 32321. ... - 15 1.5n67e 67E 1.5N ... ... - 16 1.5s67e 67E 1.5S ... ... - 17 1.5s80.5e 80.5E 1.5S 23003. 1.000 - 18 10s10w 10W 10S 15001. ... - 19 12n23w 23W 12N 13001. ... - 20 12n90e 90E 12N 23008. ... -set data/fmask=mask_by_code 1 -list t_25[t=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature -Mask on features has been set: IF WMO_PLATFORM_CODE EQ 51011 OR WMO_PLATFORM_CODE EQ 23003 THEN 1 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) (maximum, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE T_25 - 4 0n125w 125W 0 28.80 - 17 1.5s80.5e 80.5E 1.5S 29.94 - -! Now if we cancel the mask check that all features used and listed ok -cancel data/fmask 1 -list/m=1:20 t_25[t=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 1 to 20 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) (maximum, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE T_25 - 1 0n0e 0E 0 29.86 - 2 0n10w 10W 0 29.64 - 3 0n110w 110W 0 27.63 - 4 0n125w 125W 0 28.80 - 5 0n140w 140W 0 27.36 - 6 0n155w 155W 0 28.22 - 7 0n156e 156E 0 30.77 - 8 0n165e 165E 0 30.40 - 9 0n170w 170W 0 27.88 - 10 0n23w 23W 0 29.64 - 11 0n67e 67E 0 30.44 - 12 0n80.5e 80.5E 0 30.14 - 13 0n90e 90E 0 29.73 - 14 0n95w 95W 0 28.60 - 15 1.5n67e 67E 1.5N 30.44 - 16 1.5s67e 67E 1.5S 30.48 - 17 1.5s80.5e 80.5E 1.5S 29.94 - 18 10s10w 10W 10S 27.84 - 19 12n23w 23W 12N 25.48 - 20 12n90e 90E 12N 30.08 - -GO bn_reset bn_cdf_strlen -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_cdf_strlen -GO bn_cdf_strlen -! bn_cdf_strlen.jnl -! New SAVE/STRLEN= qualifier, when saving user-defined strings to netCDF -! Also when writing user-defined variable, extend the string length to make -! room in the string dimension for possible appending. -! See issue #1946 - -let strings = {"abc", "defg", "hijkl", "lmnopq"} -define axis/t=1:4:1 taxis -let tt = t[gt=taxis] -let tstrings = reshape(strings, tt) -let tstrings_long = STRCAT(tstrings, "_1234567890") - -! Write user-defined variable to netCDF. Default is to set the -! string-dimension length to the max length of the strings written. - -save/clobber/file=a.nc tstrings, tstrings_long -sp ncdump a.nc -netcdf a { -dimensions: - taxis = UNLIMITED ; // (4 currently) - STRING1_6 = 6 ; - STRING1_17 = 17 ; -variables: - double taxis(taxis) ; - taxis:axis = "T" ; - char tstrings(taxis, STRING1_6) ; - tstrings:long_name = "RESHAPE(STRINGS, TT)" ; - char tstrings_long(taxis, STRING1_17) ; - tstrings_long:long_name = "STRCAT(TSTRINGS, \"_1234567890\")" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - taxis = 1, 2, 3, 4 ; - - tstrings = - "abc", - "defg", - "hijkl", - "lmnopq" ; - - tstrings_long = - "abc_1234567890", - "defg_1234567890", - "hijkl_1234567890", - "lmnopq_1234567890" ; -} - -! or /STRLEN sets the length - -save/clobber/file=a.nc/STRLEN=7 tstrings -sp ncdump a.nc -netcdf a { -dimensions: - taxis = UNLIMITED ; // (4 currently) - STRING1_7 = 7 ; -variables: - double taxis(taxis) ; - taxis:axis = "T" ; - char tstrings(taxis, STRING1_7) ; - tstrings:long_name = "RESHAPE(STRINGS, TT)" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - taxis = 1, 2, 3, 4 ; - - tstrings = - "abc", - "defg", - "hijkl", - "lmnopq" ; -} - -! If /STRLEN specified it applies to all string variables - -save/clobber/file=a.nc/L=1/STRLEN=20 tstrings, tstrings_long -save/append/file=a.nc/L=2:4 tstrings, tstrings_long - -sp ncdump a.nc -netcdf a { -dimensions: - taxis = UNLIMITED ; // (4 currently) - STRING1_20 = 20 ; -variables: - double taxis(taxis) ; - taxis:axis = "T" ; - char tstrings(taxis, STRING1_20) ; - tstrings:long_name = "RESHAPE(STRINGS, TT)" ; - char tstrings_long(taxis, STRING1_20) ; - tstrings_long:long_name = "STRCAT(TSTRINGS, \"_1234567890\")" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - taxis = 1, 2, 3, 4 ; - - tstrings = - "abc", - "defg", - "hijkl", - "lmnopq" ; - - tstrings_long = - "abc_1234567890", - "defg_1234567890", - "hijkl_1234567890", - "lmnopq_1234567890" ; -} - -! -! SAVE/STRLEN can be used when writing data out of netCDF files. -! Note it doesn't change the name of the string dimension - -use string_on_time.nc -list t_25, str_temp - DATA SET: ./data/string_on_time.nc - TIME: 13-JAN-2017 00:00 to 07-MAR-2017 00:00 - Column 1: T_25 is Sea Surface Temperature (degree_C) - Column 2: STR_TEMP is FLOATSTR(T_25, "(F5.2)") - T_25 STR_TEMP -15-JAN-2017 12 / 1: 28.59 "28.59" -20-JAN-2017 12 / 2: 28.88 "28.88" -25-JAN-2017 12 / 3: 28.78 "28.78" -30-JAN-2017 12 / 4: 28.87 "28.87123" -04-FEB-2017 12 / 5: 28.74 "28.74" -09-FEB-2017 12 / 6: 28.53 "28.53" -14-FEB-2017 12 / 7: 28.76 "28.76" -19-FEB-2017 12 / 8: 29.27 "29.2712345" -24-FEB-2017 12 / 9: 29.15 "29.15" -01-MAR-2017 12 / 10: 29.03 "29.03" -02-MAR-2017 12 / 11: 29.13 "29.13" -03-MAR-2017 12 / 12: 29.19 "29.19" -04-MAR-2017 12 / 13: 29.25 "29.25" -05-MAR-2017 12 / 14: 29.25 "29.25" -06-MAR-2017 12 / 15: 29.21 "29.21" -save/clobber/file=a.nc/L=1:3/strlen=15 t_25, str_temp -save/append/file=a.nc/L=4:12 t_25, str_temp -sp ncdump a.nc -netcdf a { -dimensions: - time = UNLIMITED ; // (12 currently) - bnds = 2 ; - var_strlen = 15 ; -variables: - double time(time) ; - time:units = "seconds since 1970-01-01 00:00:00" ; - time:time_origin = "01-JAN-1970 00:00:00" ; - time:axis = "T" ; - time:standard_name = "time" ; - time:bounds = "time_bnds" ; - double time_bnds(time, bnds) ; - float T_25(time) ; - T_25:missing_value = 1.e+35f ; - T_25:long_name = "Sea Surface Temperature" ; - T_25:units = "degree_C" ; - T_25:history = "From DSG_ERDDAP_pmelTao5daySst" ; - char str_temp(time, var_strlen) ; - str_temp:long_name = "FLOATSTR(T_25, \"(F5.2)\")" ; - str_temp:history = "From pmelTao5daySst_1b58_1191_8205" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - time = 1484481600, 1484913600, 1485345600, 1485777600, 1486209600, - 1486641600, 1487073600, 1487505600, 1487937600, 1488369600, 1488456000, - 1488542400 ; - - time_bnds = - 1484265600, 1484697600, - 1484697600, 1485129600, - 1485129600, 1485561600, - _, _, - _, _, - _, _, - _, _, - _, _, - _, _, - _, _, - _, _, - _, _ ; - - T_25 = 28.592, 28.88, 28.776, 28.872, 28.742, 28.53, 28.76, 29.268, 29.15, - 29.034, 29.126, 29.194 ; - - str_temp = - "28.59", - "28.88", - "28.78", - "28.87123", - "28.74", - "28.53", - "28.76", - "29.2712345", - "29.15", - "29.03", - "29.13", - "29.19" ; -} - -! /STRLEN is silently ignored writing numeric data. - -save/clobber/file=a.nc/L=1:10/strlen=15 t_25 -sp ncdump a.nc -netcdf a { -dimensions: - time = UNLIMITED ; // (10 currently) - bnds = 2 ; -variables: - double time(time) ; - time:units = "seconds since 1970-01-01 00:00:00" ; - time:time_origin = "01-JAN-1970 00:00:00" ; - time:axis = "T" ; - time:standard_name = "time" ; - time:bounds = "time_bnds" ; - double time_bnds(time, bnds) ; - float T_25(time) ; - T_25:missing_value = 1.e+35f ; - T_25:long_name = "Sea Surface Temperature" ; - T_25:units = "degree_C" ; - T_25:history = "From DSG_ERDDAP_pmelTao5daySst" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - time = 1484481600, 1484913600, 1485345600, 1485777600, 1486209600, - 1486641600, 1487073600, 1487505600, 1487937600, 1488369600 ; - - time_bnds = - 1484265600, 1484697600, - 1484697600, 1485129600, - 1485129600, 1485561600, - 1485561600, 1485993600, - 1485993600, 1486425600, - 1486425600, 1486857600, - 1486857600, 1487289600, - 1487289600, 1487721600, - 1487721600, 1488153600, - 1488153600, 1488412800 ; - - T_25 = 28.592, 28.88, 28.776, 28.872, 28.742, 28.53, 28.76, 29.268, 29.15, - 29.034 ; -} - -! Warnings - -! SAVE/STRLEN is applied only on the first WRITE, not on /APPEND - -save/clobber/file=a.nc/L=1/strlen=6 tstrings -save/append/file=a.nc/L=2:4/strlen=10 tstrings -sp ncdump a.nc -netcdf a { -dimensions: - taxis = UNLIMITED ; // (4 currently) - STRING1_6 = 6 ; -variables: - double taxis(taxis) ; - taxis:axis = "T" ; - char tstrings(taxis, STRING1_6) ; - tstrings:long_name = "RESHAPE(STRINGS, TT)" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - taxis = 1, 2, 3, 4 ; - - tstrings = - "abc", - "defg", - "hijkl", - "lmnopq" ; -} - -! Intentional errors -set mode ignore - -! This needs length of 15. - -let strings = {"abc", "defg", "hijkl", "lmnopqrstuvwxyz"} - -save/clobber/file=a.nc/L=1 tstrings, tstrings_long -save/append/file=a.nc/L=2:4 tstrings, tstrings_long - -! save/append/strlen= cannot be used to change the string length - -save/clobber/file=a.nc/L=1/strlen=4 tstrings -save/append/file=a.nc/L=2:4/strlen=10 tstrings - -! /STRLEN applies to all the variables on the command line -! 7 is not long enough for 1st var not for 2nd variable - -sp rm a.nc -save/clobber/file=a.nc/STRLEN=7 tstrings, tstrings_long -sp ncdump a.nc -netcdf a { - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} - -set mode/last ignore - -! *********** DSG Additions *********** - -GO bn_reset bn_dsg_tseries -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_tseries -GO bn_dsg_tseries -! bn_dsg_tseries.jnl -! 5/2017 -- exercise native DSG support - -use DSG_ERDDAP_pmelTao5daySst.nc - -SHOW grid t_25 - GRID (G205) - DSG Feature type Timeseries - name axis # pts start end subset - normal X - normal Y - normal Z - FEATURE_T TIME 2376 r 15-JAN-2017 12:00 21-APR-2017 12:00 Variable lengths - features E (instance) 70 r 1 70 full - normal F - -! SHOW DATA/FULL lists more details and for DSG data adds region info -show data/full - currently SET data sets: - 1> ./data/DSG_ERDDAP_pmelTao5daySst.nc (default) - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - DSG Feature type Timeseries - name title I J K L M N - array Array ... ... ... ... 1:70 ... - Data type = TEXT - on grid GAD1 with -1.E+34 & NaN for missing data - E=0.5:70.5 - station Station ... ... ... ... 1:70 ... - Data type = TEXT - on grid GAD1 with -1.E+34 & NaN for missing data - E=0.5:70.5 - wmo_platform_code - WMO Platform Code ... ... ... ... 1:70 ... - on grid GAD1 with 2.147484E+09 for missing data - E=0.5:70.5 - longitude - Nominal Longitude ... ... ... ... 1:70 ... - degrees_east on grid GAD1 with 1.E+35 for missing data - E=0.5:70.5 - latitude Nominal Latitude ... ... ... ... 1:70 ... - degrees_north on grid GAD1 with 1.E+35 for missing data - E=0.5:70.5 - rowSize Number of Observations for this ... ... ... ... 1:70 ... - on grid GAD1 with NaN & -1.E+34 for missing data - E=0.5:70.5 - time Centered Time ... ... ... tot 2376 1:70 ... - seconds since 1970-01-01T00:00:00Z on grid GAD2 with NaN & -1.E+34 for missing data - E=0.5:70.5 - depth Depth ... ... ... tot 2376 1:70 ... - m on grid GAD2 with 1.E+35 for missing data - E=0.5:70.5 - T_25 Sea Surface Temperature ... ... ... tot 2376 1:70 ... - degree_C on grid GAD2 with 1.E+35 for missing data - E=0.5:70.5 - QT_5025 Sea Surface Temperature Quality ... ... ... tot 2376 1:70 ... - on grid GAD2 with 1.E+35 for missing data - E=0.5:70.5 - ST_6025 Sea Surface Temperature Source ... ... ... tot 2376 1:70 ... - on grid GAD2 with 1.E+35 for missing data - E=0.5:70.5 - str_temp FLOATSTR(T_25, "(F5.2)") ... ... ... tot 2376 1:70 ... - Data type = TEXT - on grid GAD2 with -1.E+34 & NaN for missing data - E=0.5:70.5 - - longitude range: 0E to 10W - latitude range: 19S to 21N - depth range: 1 to 1.5 - time range: 15-JAN-2017 12:00 to 21-APR-2017 12:00 - - -!basic file variable listings -list longitude[y=5:10] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - LONGITUDE is Nominal Longitude (degrees_east) - FEATURE STATION LONGITUDE LATITUDE LONGITUDE - 44 5n125w 125W 5N 235.0 - 45 5n140w 140W 5N 220.0 - 46 5n155w 155W 5N 205.0 - 47 5n165e 165E 5N 165.0 - 48 5n170w 170W 5N 190.0 - 49 5n180w 180E 5N 180.0 - 58 8n125w 125W 8N 235.0 - 59 8n137e 137E 8N 137.0 - 60 8n180w 180E 8N 180.0 - 61 8n90e 90E 8N 90.0 - 62 8n95w 95W 8N 265.0 - 70 9n140w 140W 9N 220.0 -list rowsize[x=95:180,y=5:10] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - FEATURE STATION LONGITUDE LATITUDE ROWSIZE - 47 5n165e 165E 5N 37.00 - 49 5n180w 180E 5N 37.00 - 59 8n137e 137E 8N 37.00 - 60 8n180w 180E 8N 37.00 -list/e=59:60 rowsize[x=95:180,y=5:10] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 59 to 60 - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - FEATURE STATION LONGITUDE LATITUDE ROWSIZE - 59 8n137e 137E 8N 37.00 - 60 8n180w 180E 8N 37.00 -list t_25[x=95:180,y=5:10,t=19-mar-2017:22-mar-2017] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 - - 47 5n165e 165E 5N 1 19-MAR-2017 12:00 29.55 - 47 5n165e 165E 5N 1 20-MAR-2017 12:00 29.57 - 47 5n165e 165E 5N 1 21-MAR-2017 12:00 29.58 - - 49 5n180w 180E 5N 1 19-MAR-2017 12:00 28.72 - 49 5n180w 180E 5N 1 20-MAR-2017 12:00 28.73 - 49 5n180w 180E 5N 1 21-MAR-2017 12:00 28.73 - - 59 8n137e 137E 8N 1.5 19-MAR-2017 12:00 28.97 - 59 8n137e 137E 8N 1.5 20-MAR-2017 12:00 28.96 - 59 8n137e 137E 8N 1.5 21-MAR-2017 12:00 28.95 - - 60 8n180w 180E 8N 1 19-MAR-2017 12:00 28.42 - 60 8n180w 180E 8N 1 20-MAR-2017 12:00 28.44 - 60 8n180w 180E 8N 1 21-MAR-2017 12:00 28.45 - - - -! for convenience /M= is equivalent to /E= -! other subscripts are ignored (F axis functionality remains to be tested) -list/m=59:60 rowsize[x=95:180,y=5:10] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 59 to 60 - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - FEATURE STATION LONGITUDE LATITUDE ROWSIZE - 59 8n137e 137E 8N 37.00 - 60 8n180w 180E 8N 37.00 - -! String variables station id and str_temp on the obs axis -list/m=7:12 station, rowsize - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 7 to 12 - STATION is Timeseries-id - STATION is Station - ROWSIZE is Number of Observations for this TimeSeries - FEATURE STATION LONGITUDE LATITUDE STATION ROWSIZE - 7 0n156e 156E 0 "0n156e" 37.00 - 8 0n165e 165E 0 "0n165e" 37.00 - 9 0n170w 170W 0 "0n170w" 37.00 - 10 0n23w 23W 0 "0n23w" 33.00 - 11 0n67e 67E 0 "0n67e" 37.00 - 12 0n80.5e 80.5E 0 "0n80.5e" 37.00 - -list/x=95:180/y=5:10/t=19-mar-2017:22-mar-2017 t_25, str_temp, depth, station - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : LONGITUDE: 95E to 180E - LATITUDE: 5N to 10N - TIME: 19-MAR-2017 00:00 to 22-MAR-2017 00:00 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) - STR_TEMP is FLOATSTR(T_25, "(F5.2)") - DEPTH is Depth (m) - STATION is Station - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 STR_TEMP DEPTH STATION - - 47 5n165e 165E 5N 1 19-MAR-2017 12:00 29.55 "29.55" 1.000 "5n165e" - 47 5n165e 165E 5N 1 20-MAR-2017 12:00 29.57 "29.57" 1.000 "5n165e" - 47 5n165e 165E 5N 1 21-MAR-2017 12:00 29.58 "29.58" 1.000 "5n165e" - - 49 5n180w 180E 5N 1 19-MAR-2017 12:00 28.72 "28.72" 1.000 "5n180w" - 49 5n180w 180E 5N 1 20-MAR-2017 12:00 28.73 "28.73" 1.000 "5n180w" - 49 5n180w 180E 5N 1 21-MAR-2017 12:00 28.73 "28.73" 1.000 "5n180w" - - 59 8n137e 137E 8N 1.5 19-MAR-2017 12:00 28.97 "28.97" 1.500 "8n137e" - 59 8n137e 137E 8N 1.5 20-MAR-2017 12:00 28.96 "28.96" 1.500 "8n137e" - 59 8n137e 137E 8N 1.5 21-MAR-2017 12:00 28.95 "28.95" 1.500 "8n137e" - - 60 8n180w 180E 8N 1 19-MAR-2017 12:00 28.42 "28.42" 1.000 "8n180w" - 60 8n180w 180E 8N 1 20-MAR-2017 12:00 28.44 "28.44" 1.000 "8n180w" - 60 8n180w 180E 8N 1 21-MAR-2017 12:00 28.45 "28.45" 1.000 "8n180w" - -! simple DSG algebra listings -let a = longitude*0 + rowsize -list/e=11:15 a - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 11 to 15 - STATION is Timeseries-id - A is LONGITUDE*0 + ROWSIZE - FEATURE STATION LONGITUDE LATITUDE A - 11 0n67e 67E 0 37.00 - 12 0n80.5e 80.5E 0 37.00 - 13 0n90e 90E 0 37.00 - 14 0n95w 95W 0 32.00 - 15 1.5n67e 67E 1.5N 37.00 -list a[x=95:180,y=5:10,t=15-mar-2017:22-mar-2017] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - A is LONGITUDE*0 + ROWSIZE - FEATURE STATION LONGITUDE LATITUDE A - 47 5n165e 165E 5N 37.00 - 49 5n180w 180E 5N 37.00 - 59 8n137e 137E 8N 37.00 - 60 8n180w 180E 8N 37.00 -list a[x=95:180,y=5:10,t=15-mar-2017:22-mar-2017,e=59:60] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - A is LONGITUDE*0 + ROWSIZE - FEATURE STATION LONGITUDE LATITUDE A - 59 8n137e 137E 8N 37.00 - 60 8n180w 180E 8N 37.00 - -! verify cache behaviors -! cache hit should occur on obtaining restricted region - look for 'found b' -! in the second list -! Note: feature subset depends upon T constraints even though expression 'B -! is a pure instance expression -cancel memory/all -let b = longitude*0 + rowsize -list b[x=75:180,y=-5:10] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - B is LONGITUDE*0 + ROWSIZE - FEATURE STATION LONGITUDE LATITUDE B - 7 0n156e 156E 0 37.00 - 8 0n165e 165E 0 37.00 - 12 0n80.5e 80.5E 0 37.00 - 13 0n90e 90E 0 37.00 - 17 1.5s80.5e 80.5E 1.5S 37.00 - 32 2n180w 180E 2N 1.00 - 37 2s165e 165E 2S 37.00 - 39 2s180w 180E 2S 24.00 - 41 4n90e 90E 4N 35.00 - 43 4s80.5e 80.5E 4S 37.00 - 47 5n165e 165E 5N 37.00 - 49 5n180w 180E 5N 37.00 - 54 5s180w 180E 5S 37.00 - 55 5s95e 95E 5S 37.00 - 59 8n137e 137E 8N 37.00 - 60 8n180w 180E 8N 37.00 - 61 8n90e 90E 8N 37.00 -set mode diagnostic -list b[x=95:180,y=5:10,t=15-mar-2017:22-mar-2017] - dealloc dynamic grid GAD1 NORMAL NORMAL NORMAL NORMAL FEATURES NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GAD1 NORMAL NORMAL NORMAL NORMAL FEATURES NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 70 N: -999 -999 - found B M:366 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 70 N: -999 -999 - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - B is LONGITUDE*0 + ROWSIZE - FEATURE STATION LONGITUDE LATITUDE B - 47 5n165e 165E 5N 37.00 - 49 5n180w 180E 5N 37.00 - 59 8n137e 137E 8N 37.00 - 60 8n180w 180E 8N 37.00 -set mode/last diagnostic - -! cache hit should not occur when region gets relaxed - no 'found c' -let c = longitude*0 + rowsize -list c[x=95:180,y=5:10] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - C is LONGITUDE*0 + ROWSIZE - FEATURE STATION LONGITUDE LATITUDE C - 47 5n165e 165E 5N 37.00 - 49 5n180w 180E 5N 37.00 - 59 8n137e 137E 8N 37.00 - 60 8n180w 180E 8N 37.00 -set mode diagnostic -list c[x=75:180,y=5:10] ! relax existing constraint - dealloc dynamic grid GAD1 NORMAL NORMAL NORMAL NORMAL FEATURES NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GAD1 NORMAL NORMAL NORMAL NORMAL FEATURES NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 70 N: -999 -999 - eval C C: 6 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 70 N: -999 -999 - found LON-TUDE M:493 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 70 N: -999 -999 - constan cnst M:483 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE cnst M:483 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - found ROWSIZE M:483 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 70 N: -999 -999 - -DELETE tpry M:449 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 70 N: -999 -999 - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - C is LONGITUDE*0 + ROWSIZE - FEATURE STATION LONGITUDE LATITUDE C - 47 5n165e 165E 5N 37.00 - 49 5n180w 180E 5N 37.00 - 59 8n137e 137E 8N 37.00 - 60 8n180w 180E 8N 37.00 - 61 8n90e 90E 8N 37.00 -set mode/last diagnostic - -! cache hit shoud not occur when new constraint is added - no 'found d' -let d = longitude*0 + rowsize -list d[x=95:180,y=5:10] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - D is LONGITUDE*0 + ROWSIZE - FEATURE STATION LONGITUDE LATITUDE D - 47 5n165e 165E 5N 37.00 - 49 5n180w 180E 5N 37.00 - 59 8n137e 137E 8N 37.00 - 60 8n180w 180E 8N 37.00 -set mode diagnostic -list d[x=95:180] ! remove a constraint - dealloc dynamic grid GAD1 NORMAL NORMAL NORMAL NORMAL FEATURES NORMAL - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid GAD1 NORMAL NORMAL NORMAL NORMAL FEATURES NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 70 N: -999 -999 - eval D C: 6 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 70 N: -999 -999 - found LON-TUDE M:493 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 70 N: -999 -999 - constan cnst M:483 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE cnst M:483 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - found ROWSIZE M:483 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 70 N: -999 -999 - -DELETE tpry M:449 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 M: 1 70 N: -999 -999 - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - D is LONGITUDE*0 + ROWSIZE - FEATURE STATION LONGITUDE LATITUDE D - 7 0n156e 156E 0 37.00 - 8 0n165e 165E 0 37.00 - 32 2n180w 180E 2N 1.00 - 37 2s165e 165E 2S 37.00 - 39 2s180w 180E 2S 24.00 - 47 5n165e 165E 5N 37.00 - 49 5n180w 180E 5N 37.00 - 54 5s180w 180E 5S 37.00 - 55 5s95e 95E 5S 37.00 - 59 8n137e 137E 8N 37.00 - 60 8n180w 180E 8N 37.00 - 65 8s165e 165E 8S 37.00 - 67 8s180w 180E 8S 36.00 - 69 8s95e 95E 8S 37.00 -set mode/last diagnostic - -! defined regions may be helpful working with DSG datasets -! Note: be alert for cache hit errors if the regions definition gets changed -! If the region name is used *inside* of a LET definition then changing the -! region actually changes the LET definition, but does not cause uvar memory -! to be purged. I don't *think* this will be a problem for DSG variables -let a = longitude*0 + rowsize -define region/x=95:180/y=5:10/t=15-mar-2017:20-mar-2017 my_reg -list a[@my_reg] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - A is LONGITUDE*0 + ROWSIZE - FEATURE STATION LONGITUDE LATITUDE A - 47 5n165e 165E 5N 37.00 - 49 5n180w 180E 5N 37.00 - 59 8n137e 137E 8N 37.00 - 60 8n180w 180E 8N 37.00 - -! Intentional errors -set mode ignore - -! trap inconsistent DSG constraints -list t_25[x=95:180] + longitude - -! Cannot select DSG data by index in i,j,k,l -list/l=1:5 t_25 -list/i=200:210 t_25 -list/m=31:32 t_25 ! by feature number is ok - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 31 to 32 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 - - 31 2n170w 170W 2N 1 15-JAN-2017 12:00 26.99 - 31 2n170w 170W 2N 1 20-JAN-2017 12:00 27.41 - 31 2n170w 170W 2N 1 25-JAN-2017 12:00 27.44 - 31 2n170w 170W 2N 1 30-JAN-2017 12:00 26.85 - - 32 2n180w 180E 2N 1 15-JAN-2017 12:00 27.79 - -set mode/last ignore - -! pseudo-variable tests -list/e=5:6 x[g=t_25] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 5 to 6 - STATION is Timeseries-id - X is X (axis TIME37) - FEATURE STATION LONGITUDE LATITUDE X - 5 0n140w 140W 0 220.0 - 6 0n155w 155W 0 205.0 -list y[g=rowsize,e=14:18] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - Y is Y (axis TIME37) - FEATURE STATION LONGITUDE LATITUDE Y - 14 0n95w 95W 0 0.00 - 15 1.5n67e 67E 1.5N 1.50 - 16 1.5s67e 67E 1.5S -1.50 - 17 1.5s80.5e 80.5E 1.5S -1.50 - 18 10s10w 10W 10S -10.00 -list/e=13:15 t[g=t_25,x=60:100,t=1-mar-2017:15-mar-2017] ! field width DSGTBD - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 13 to 15 - STATION is Timeseries-id - T is T (axis FEATURE_T) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T - - 13 0n90e 90E 0 1 01-MAR-2017 12:00 1.488E+09 - 13 0n90e 90E 0 1 02-MAR-2017 12:00 1.488E+09 - 13 0n90e 90E 0 1 03-MAR-2017 12:00 1.489E+09 - 13 0n90e 90E 0 1 04-MAR-2017 12:00 1.489E+09 - 13 0n90e 90E 0 1 05-MAR-2017 12:00 1.489E+09 - 13 0n90e 90E 0 1 06-MAR-2017 12:00 1.489E+09 - 13 0n90e 90E 0 1 07-MAR-2017 12:00 1.489E+09 - 13 0n90e 90E 0 1 08-MAR-2017 12:00 1.489E+09 - 13 0n90e 90E 0 1 09-MAR-2017 12:00 1.489E+09 - 13 0n90e 90E 0 1 10-MAR-2017 12:00 1.489E+09 - 13 0n90e 90E 0 1 11-MAR-2017 12:00 1.489E+09 - 13 0n90e 90E 0 1 12-MAR-2017 12:00 1.489E+09 - 13 0n90e 90E 0 1 13-MAR-2017 12:00 1.489E+09 - 13 0n90e 90E 0 1 14-MAR-2017 12:00 1.489E+09 - - 15 1.5n67e 67E 1.5N 1 01-MAR-2017 12:00 1.488E+09 - 15 1.5n67e 67E 1.5N 1 02-MAR-2017 12:00 1.488E+09 - 15 1.5n67e 67E 1.5N 1 03-MAR-2017 12:00 1.489E+09 - 15 1.5n67e 67E 1.5N 1 04-MAR-2017 12:00 1.489E+09 - 15 1.5n67e 67E 1.5N 1 05-MAR-2017 12:00 1.489E+09 - 15 1.5n67e 67E 1.5N 1 06-MAR-2017 12:00 1.489E+09 - 15 1.5n67e 67E 1.5N 1 07-MAR-2017 12:00 1.489E+09 - 15 1.5n67e 67E 1.5N 1 08-MAR-2017 12:00 1.489E+09 - 15 1.5n67e 67E 1.5N 1 09-MAR-2017 12:00 1.489E+09 - 15 1.5n67e 67E 1.5N 1 10-MAR-2017 12:00 1.489E+09 - 15 1.5n67e 67E 1.5N 1 11-MAR-2017 12:00 1.489E+09 - 15 1.5n67e 67E 1.5N 1 12-MAR-2017 12:00 1.489E+09 - 15 1.5n67e 67E 1.5N 1 13-MAR-2017 12:00 1.489E+09 - 15 1.5n67e 67E 1.5N 1 14-MAR-2017 12:00 1.489E+09 -list i[g=rowsize,e=6:12] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - I is I (axis TIME37) - FEATURE STATION LONGITUDE LATITUDE I - 6 0n155w 155W 0 6.00 - 7 0n156e 156E 0 7.00 - 8 0n165e 165E 0 8.00 - 9 0n170w 170W 0 9.00 - 10 0n23w 23W 0 10.00 - 11 0n67e 67E 0 11.00 - 12 0n80.5e 80.5E 0 12.00 -list/t=1-feb-2017:25-feb-2017 l[g=rowsize,e=12:15] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : TIME: 01-FEB-2017 00:00 to 25-FEB-2017 00:00 - STATION is Timeseries-id - L is L (axis FEATURE_T) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME L - - 12 0n80.5e 80.5E 0 1 04-FEB-2017 12:00 5.00 - 12 0n80.5e 80.5E 0 1 09-FEB-2017 12:00 6.00 - 12 0n80.5e 80.5E 0 1 14-FEB-2017 12:00 7.00 - 12 0n80.5e 80.5E 0 1 19-FEB-2017 12:00 8.00 - 12 0n80.5e 80.5E 0 1 24-FEB-2017 12:00 9.00 - - 13 0n90e 90E 0 1 04-FEB-2017 12:00 5.00 - 13 0n90e 90E 0 1 09-FEB-2017 12:00 6.00 - 13 0n90e 90E 0 1 14-FEB-2017 12:00 7.00 - 13 0n90e 90E 0 1 19-FEB-2017 12:00 8.00 - 13 0n90e 90E 0 1 24-FEB-2017 12:00 9.00 - - 14 0n95w 95W 0 1 04-FEB-2017 12:00 5.00 - 14 0n95w 95W 0 1 09-FEB-2017 12:00 6.00 - 14 0n95w 95W 0 1 14-FEB-2017 12:00 7.00 - 14 0n95w 95W 0 1 19-FEB-2017 12:00 8.00 - 14 0n95w 95W 0 1 24-FEB-2017 12:00 9.00 - - 15 1.5n67e 67E 1.5N 1 04-FEB-2017 12:00 5.00 - 15 1.5n67e 67E 1.5N 1 09-FEB-2017 12:00 6.00 - 15 1.5n67e 67E 1.5N 1 14-FEB-2017 12:00 7.00 - 15 1.5n67e 67E 1.5N 1 19-FEB-2017 12:00 8.00 - 15 1.5n67e 67E 1.5N 1 24-FEB-2017 12:00 9.00 - -! multi-variable listing test -list/y=5n rowsize, IF rowsize LT 10 then 1 - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : LATITUDE: 5N - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - EX#2 is IF ROWSIZE LT 10 THEN 1 - FEATURE STATION LONGITUDE LATITUDE ROWSIZE EX#2 - 44 5n125w 125W 5N 37.00 ... - 45 5n140w 140W 5N 37.00 ... - 46 5n155w 155W 5N 8.00 1.000 - 47 5n165e 165E 5N 37.00 ... - 48 5n170w 170W 5N 37.00 ... - 49 5n180w 180E 5N 37.00 ... -list/y=2s/x=165:185/t=15-MAR-2017:27-MAR-2017 rowsize, t_25 - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : LONGITUDE: 165E to 175W - LATITUDE: 2S - TIME: 15-MAR-2017 00:00 to 27-MAR-2017 00:00 - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - T_25 is Sea Surface Temperature (degree_C) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME ROWSIZE T_25 - - 37 2s165e 165E 2S 1 15-MAR-2017 12:00 37.00 28.74 - 37 2s165e 165E 2S 1 16-MAR-2017 12:00 37.00 28.81 - 37 2s165e 165E 2S 1 17-MAR-2017 12:00 37.00 28.90 - 37 2s165e 165E 2S 1 18-MAR-2017 12:00 37.00 29.01 - 37 2s165e 165E 2S 1 19-MAR-2017 12:00 37.00 29.11 - 37 2s165e 165E 2S 1 20-MAR-2017 12:00 37.00 29.18 - 37 2s165e 165E 2S 1 21-MAR-2017 12:00 37.00 29.26 - 37 2s165e 165E 2S 1 22-MAR-2017 12:00 37.00 29.31 - - 39 2s180w 180E 2S 1 19-MAR-2017 12:00 24.00 27.50 - -! compressing transform tests (using @MAX) -! ... compress instance variable along E axis -list rowsize[e=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - FEATURE STATION ROWSIZE - 1 37.00 - -! ... demonstrate that constraints are used in the transformation -list/e=30:33 rowsize - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 30 to 33 - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - FEATURE STATION LONGITUDE LATITUDE ROWSIZE - 30 2n155w 155W 2N 37.00 - 31 2n170w 170W 2N 4.00 - 32 2n180w 180E 2N 1.00 - 33 2s110w 110W 2S 37.00 -list/e=30:33 rowsize[e=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 30 to 33 (maximum) - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - FEATURE STATION ROWSIZE - 1 37.00 -list/e=31:32 rowsize[e=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 31 to 32 (maximum) - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - FEATURE STATION ROWSIZE - 1 4.000 - -! ... compress obs variable along orientation axis -list/e=40:43 t_25[t=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 40 to 43 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) (maximum, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE T_25 - 40 4n23w 23W 4N 29.42 - 41 4n90e 90E 4N 30.32 - 42 4s57e 57E 4S 30.59 - 43 4s80.5e 80.5E 4S 30.18 - -! ... mix instance and point variables in same listing -list/e=14:18 rowsize, rowsize[e=@max], t_25[t=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 14 to 18 - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - ROWSIZE is Number of Observations for this TimeSeries - T_25 is Sea Surface Temperature (degree_C) (maximum, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE ROWSIZE ROWSIZE T_25 - 14 0n95w 95W 0 32.00 37.00 28.60 - 15 1.5n67e 67E 1.5N 37.00 37.00 30.44 - 16 1.5s67e 67E 1.5S 37.00 37.00 30.48 - 17 1.5s80.5e 80.5E 1.5S 37.00 37.00 29.94 - 18 10s10w 10W 10S 32.00 37.00 27.84 - -! ... mix obs, point and instance variables in same listing -list/e=14:18/t=10-mar-2017:15-mar-2017 t_25, rowsize[e=@max], t_25[t=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : TIME: 10-MAR-2017 00:00 to 15-MAR-2017 00:00 (maximum) - E (instance): 14 to 18 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) - ROWSIZE is Number of Observations for this TimeSeries - T_25 is Sea Surface Temperature (degree_C) (maximum, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 ROWSIZE T_25 - - 14 0n95w 95W 0 1 10-MAR-2017 12:00 27.61 37.00 27.94 - 14 0n95w 95W 0 1 11-MAR-2017 12:00 27.79 37.00 27.94 - 14 0n95w 95W 0 1 12-MAR-2017 12:00 27.86 37.00 27.94 - 14 0n95w 95W 0 1 13-MAR-2017 12:00 27.94 37.00 27.94 - 14 0n95w 95W 0 1 14-MAR-2017 12:00 27.80 37.00 27.94 - - 15 1.5n67e 67E 1.5N 1 10-MAR-2017 12:00 29.55 37.00 29.72 - 15 1.5n67e 67E 1.5N 1 11-MAR-2017 12:00 29.56 37.00 29.72 - 15 1.5n67e 67E 1.5N 1 12-MAR-2017 12:00 29.60 37.00 29.72 - 15 1.5n67e 67E 1.5N 1 13-MAR-2017 12:00 29.67 37.00 29.72 - 15 1.5n67e 67E 1.5N 1 14-MAR-2017 12:00 29.72 37.00 29.72 - - 16 1.5s67e 67E 1.5S 1 10-MAR-2017 12:00 29.32 37.00 29.59 - 16 1.5s67e 67E 1.5S 1 11-MAR-2017 12:00 29.31 37.00 29.59 - 16 1.5s67e 67E 1.5S 1 12-MAR-2017 12:00 29.37 37.00 29.59 - 16 1.5s67e 67E 1.5S 1 13-MAR-2017 12:00 29.50 37.00 29.59 - 16 1.5s67e 67E 1.5S 1 14-MAR-2017 12:00 29.59 37.00 29.59 - - 17 1.5s80.5e 80.5E 1.5S 1 10-MAR-2017 12:00 29.46 37.00 29.79 - 17 1.5s80.5e 80.5E 1.5S 1 11-MAR-2017 12:00 29.56 37.00 29.79 - 17 1.5s80.5e 80.5E 1.5S 1 12-MAR-2017 12:00 29.63 37.00 29.79 - 17 1.5s80.5e 80.5E 1.5S 1 13-MAR-2017 12:00 29.70 37.00 29.79 - 17 1.5s80.5e 80.5E 1.5S 1 14-MAR-2017 12:00 29.79 37.00 29.79 - - 18 10s10w 10W 10S 1 10-MAR-2017 12:00 27.23 37.00 27.39 - 18 10s10w 10W 10S 1 11-MAR-2017 12:00 27.23 37.00 27.39 - 18 10s10w 10W 10S 1 12-MAR-2017 12:00 27.26 37.00 27.39 - 18 10s10w 10W 10S 1 13-MAR-2017 12:00 27.33 37.00 27.39 - 18 10s10w 10W 10S 1 14-MAR-2017 12:00 27.39 37.00 27.39 - -! ...confirm that observation-level flitering is happening -let a = l[g=t_25] -list/e=17:18/t=10-mar-2017:15-mar-2017 a, a[t=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : TIME: 10-MAR-2017 00:00 to 15-MAR-2017 00:00 (maximum) - E (instance): 17 to 18 - STATION is Timeseries-id - L is L (axis FEATURE_T) - A is L[G=T_25] (maximum, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME L A - - 17 1.5s80.5e 80.5E 1.5S 1 10-MAR-2017 12:00 19.00 23.00 - 17 1.5s80.5e 80.5E 1.5S 1 11-MAR-2017 12:00 20.00 23.00 - 17 1.5s80.5e 80.5E 1.5S 1 12-MAR-2017 12:00 21.00 23.00 - 17 1.5s80.5e 80.5E 1.5S 1 13-MAR-2017 12:00 22.00 23.00 - 17 1.5s80.5e 80.5E 1.5S 1 14-MAR-2017 12:00 23.00 23.00 - - 18 10s10w 10W 10S 1 10-MAR-2017 12:00 14.00 18.00 - 18 10s10w 10W 10S 1 11-MAR-2017 12:00 15.00 18.00 - 18 10s10w 10W 10S 1 12-MAR-2017 12:00 16.00 18.00 - 18 10s10w 10W 10S 1 13-MAR-2017 12:00 17.00 18.00 - 18 10s10w 10W 10S 1 14-MAR-2017 12:00 18.00 18.00 - -! ... confirm no cache hit on narrowing compressing transform limits -canc mem/all -list/e=17:18/t=10-mar-2017:18-mar-2017 a, a[t=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : TIME: 10-MAR-2017 00:00 to 18-MAR-2017 00:00 (maximum) - E (instance): 17 to 18 - STATION is Timeseries-id - L is L (axis FEATURE_T) - A is L[G=T_25] (maximum, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME L A - - 17 1.5s80.5e 80.5E 1.5S 1 10-MAR-2017 12:00 19.00 26.00 - 17 1.5s80.5e 80.5E 1.5S 1 11-MAR-2017 12:00 20.00 26.00 - 17 1.5s80.5e 80.5E 1.5S 1 12-MAR-2017 12:00 21.00 26.00 - 17 1.5s80.5e 80.5E 1.5S 1 13-MAR-2017 12:00 22.00 26.00 - 17 1.5s80.5e 80.5E 1.5S 1 14-MAR-2017 12:00 23.00 26.00 - 17 1.5s80.5e 80.5E 1.5S 1 15-MAR-2017 12:00 24.00 26.00 - 17 1.5s80.5e 80.5E 1.5S 1 16-MAR-2017 12:00 25.00 26.00 - 17 1.5s80.5e 80.5E 1.5S 1 17-MAR-2017 12:00 26.00 26.00 - - 18 10s10w 10W 10S 1 10-MAR-2017 12:00 14.00 21.00 - 18 10s10w 10W 10S 1 11-MAR-2017 12:00 15.00 21.00 - 18 10s10w 10W 10S 1 12-MAR-2017 12:00 16.00 21.00 - 18 10s10w 10W 10S 1 13-MAR-2017 12:00 17.00 21.00 - 18 10s10w 10W 10S 1 14-MAR-2017 12:00 18.00 21.00 - 18 10s10w 10W 10S 1 15-MAR-2017 12:00 19.00 21.00 - 18 10s10w 10W 10S 1 16-MAR-2017 12:00 20.00 21.00 - 18 10s10w 10W 10S 1 17-MAR-2017 12:00 21.00 21.00 -list/e=17:18/t=10-mar-2017:15-mar-2017 a, a[t=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : TIME: 10-MAR-2017 00:00 to 15-MAR-2017 00:00 (maximum) - E (instance): 17 to 18 - STATION is Timeseries-id - A is L[G=T_25] - A is L[G=T_25] (maximum, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME A A - - 17 1.5s80.5e 80.5E 1.5S 1 10-MAR-2017 12:00 19.00 23.00 - 17 1.5s80.5e 80.5E 1.5S 1 11-MAR-2017 12:00 20.00 23.00 - 17 1.5s80.5e 80.5E 1.5S 1 12-MAR-2017 12:00 21.00 23.00 - 17 1.5s80.5e 80.5E 1.5S 1 13-MAR-2017 12:00 22.00 23.00 - 17 1.5s80.5e 80.5E 1.5S 1 14-MAR-2017 12:00 23.00 23.00 - - 18 10s10w 10W 10S 1 10-MAR-2017 12:00 14.00 18.00 - 18 10s10w 10W 10S 1 11-MAR-2017 12:00 15.00 18.00 - 18 10s10w 10W 10S 1 12-MAR-2017 12:00 16.00 18.00 - 18 10s10w 10W 10S 1 13-MAR-2017 12:00 17.00 18.00 - 18 10s10w 10W 10S 1 14-MAR-2017 12:00 18.00 18.00 - -! illegal transformations -set mode ignore -list rowsize[t=@max] -list t_25[e=@max] -list t_25[t=@max,e=@max] -set mode/last ignore - -! build a LET-pyramid involving a DSG transformation -let a = t_25[t=@max] -list a[e=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - A is T_25[T=@MAX] - FEATURE STATION A - 1 30.77 -list a[e=6:8] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - A is T_25[T=@MAX] - FEATURE STATION LONGITUDE LATITUDE A - 6 0n155w 155W 0 28.22 - 7 0n156e 156E 0 30.77 - 8 0n165e 165E 0 30.40 -let b = a[e=@max] -list b - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - A is T_25[T=@MAX] - FEATURE STATION A - 1 30.77 - -! smoothing transformation -list/e=17:18 t_25[t=@sbx], t_25, t_25-t_25[t=@sbx] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 17 to 18 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) (box smoothed by 3 pts, each Timeseries) - T_25 is Sea Surface Temperature (degree_C) - EX#3 is T_25-T_25[T=@SBX] - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 T_25 EX#3 - - 17 1.5s80.5e 80.5E 1.5S 1 15-JAN-2017 12:00 ... 28.30 ... - 17 1.5s80.5e 80.5E 1.5S 1 20-JAN-2017 12:00 28.45 28.33 -0.1120 - 17 1.5s80.5e 80.5E 1.5S 1 25-JAN-2017 12:00 28.62 28.70 0.0820 - 17 1.5s80.5e 80.5E 1.5S 1 30-JAN-2017 12:00 28.76 28.82 0.0620 - 17 1.5s80.5e 80.5E 1.5S 1 04-FEB-2017 12:00 28.78 28.76 -0.0213 - 17 1.5s80.5e 80.5E 1.5S 1 09-FEB-2017 12:00 28.85 28.76 -0.0913 - 17 1.5s80.5e 80.5E 1.5S 1 14-FEB-2017 12:00 28.94 29.03 0.0967 - 17 1.5s80.5e 80.5E 1.5S 1 19-FEB-2017 12:00 29.05 29.02 -0.0280 - 17 1.5s80.5e 80.5E 1.5S 1 24-FEB-2017 12:00 29.09 29.09 -0.0080 - 17 1.5s80.5e 80.5E 1.5S 1 01-MAR-2017 12:00 29.15 29.18 0.0273 - 17 1.5s80.5e 80.5E 1.5S 1 02-MAR-2017 12:00 29.16 29.19 0.0280 - 17 1.5s80.5e 80.5E 1.5S 1 03-MAR-2017 12:00 29.14 29.11 -0.0247 - 17 1.5s80.5e 80.5E 1.5S 1 04-MAR-2017 12:00 29.10 29.11 0.0100 - 17 1.5s80.5e 80.5E 1.5S 1 05-MAR-2017 12:00 29.10 29.08 -0.0173 - 17 1.5s80.5e 80.5E 1.5S 1 06-MAR-2017 12:00 29.13 29.11 -0.0247 - 17 1.5s80.5e 80.5E 1.5S 1 07-MAR-2017 12:00 29.21 29.20 -0.0127 - 17 1.5s80.5e 80.5E 1.5S 1 08-MAR-2017 12:00 29.31 29.34 0.0247 - 17 1.5s80.5e 80.5E 1.5S 1 09-MAR-2017 12:00 29.40 29.40 -0.0013 - 17 1.5s80.5e 80.5E 1.5S 1 10-MAR-2017 12:00 29.47 29.46 -0.0107 - 17 1.5s80.5e 80.5E 1.5S 1 11-MAR-2017 12:00 29.55 29.56 0.0087 - 17 1.5s80.5e 80.5E 1.5S 1 12-MAR-2017 12:00 29.63 29.63 0.0000 - 17 1.5s80.5e 80.5E 1.5S 1 13-MAR-2017 12:00 29.70 29.70 -0.0080 - 17 1.5s80.5e 80.5E 1.5S 1 14-MAR-2017 12:00 29.80 29.79 -0.0107 - 17 1.5s80.5e 80.5E 1.5S 1 15-MAR-2017 12:00 29.88 29.92 0.0353 - 17 1.5s80.5e 80.5E 1.5S 1 16-MAR-2017 12:00 29.92 29.94 0.0167 - 17 1.5s80.5e 80.5E 1.5S 1 17-MAR-2017 12:00 29.87 29.91 0.0333 - 17 1.5s80.5e 80.5E 1.5S 1 18-MAR-2017 12:00 29.81 29.78 -0.0353 - 17 1.5s80.5e 80.5E 1.5S 1 19-MAR-2017 12:00 29.74 29.75 0.0133 - 17 1.5s80.5e 80.5E 1.5S 1 20-MAR-2017 12:00 29.71 29.69 -0.0220 - 17 1.5s80.5e 80.5E 1.5S 1 21-MAR-2017 12:00 29.70 29.69 -0.0053 - 17 1.5s80.5e 80.5E 1.5S 1 22-MAR-2017 12:00 29.61 29.71 0.1000 - 17 1.5s80.5e 80.5E 1.5S 1 27-MAR-2017 12:00 29.58 29.43 -0.1498 - 17 1.5s80.5e 80.5E 1.5S 1 01-APR-2017 12:00 29.51 29.59 0.0842 - 17 1.5s80.5e 80.5E 1.5S 1 06-APR-2017 12:00 29.52 29.51 -0.0124 - 17 1.5s80.5e 80.5E 1.5S 1 11-APR-2017 12:00 29.51 29.46 -0.0547 - 17 1.5s80.5e 80.5E 1.5S 1 16-APR-2017 12:00 29.63 29.58 -0.0533 - 17 1.5s80.5e 80.5E 1.5S 1 21-APR-2017 12:00 ... 29.85 ... - - 18 10s10w 10W 10S 1 15-JAN-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 20-JAN-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 25-JAN-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 30-JAN-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 04-FEB-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 09-FEB-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 14-FEB-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 19-FEB-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 24-FEB-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 01-MAR-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 06-MAR-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 08-MAR-2017 12:00 ... 27.26 ... - 18 10s10w 10W 10S 1 09-MAR-2017 12:00 27.25 27.24 -0.0028 - 18 10s10w 10W 10S 1 10-MAR-2017 12:00 27.23 27.23 -0.0044 - 18 10s10w 10W 10S 1 11-MAR-2017 12:00 27.24 27.23 -0.0107 - 18 10s10w 10W 10S 1 12-MAR-2017 12:00 27.27 27.26 -0.0113 - 18 10s10w 10W 10S 1 13-MAR-2017 12:00 27.33 27.33 0.0007 - 18 10s10w 10W 10S 1 14-MAR-2017 12:00 27.39 27.39 0.0007 - 18 10s10w 10W 10S 1 15-MAR-2017 12:00 27.45 27.45 0.0027 - 18 10s10w 10W 10S 1 16-MAR-2017 12:00 27.50 27.51 0.0100 - 18 10s10w 10W 10S 1 17-MAR-2017 12:00 27.53 27.53 0.0033 - 18 10s10w 10W 10S 1 18-MAR-2017 12:00 27.55 27.55 -0.0040 - 18 10s10w 10W 10S 1 19-MAR-2017 12:00 27.58 27.57 -0.0040 - 18 10s10w 10W 10S 1 20-MAR-2017 12:00 27.61 27.61 -0.0027 - 18 10s10w 10W 10S 1 21-MAR-2017 12:00 27.66 27.66 -0.0060 - 18 10s10w 10W 10S 1 22-MAR-2017 12:00 27.74 27.72 -0.0193 - 18 10s10w 10W 10S 1 27-MAR-2017 12:00 27.80 27.84 0.0433 - 18 10s10w 10W 10S 1 01-APR-2017 12:00 27.80 27.83 0.0327 - 18 10s10w 10W 10S 1 06-APR-2017 12:00 27.75 27.73 -0.0207 - 18 10s10w 10W 10S 1 11-APR-2017 12:00 27.70 27.68 -0.0147 - 18 10s10w 10W 10S 1 16-APR-2017 12:00 27.71 27.68 -0.0240 - 18 10s10w 10W 10S 1 21-APR-2017 12:00 ... 27.76 ... - -! ... smoothed results should not be changed by obs filtering -list/e=17:18/t=15-feb-2017:15-mar-2017 t_25[t=@sbx], t_25, t_25-t_25[t=@sbx] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : TIME: 15-FEB-2017 00:00 to 15-MAR-2017 00:00 - E (instance): 17 to 18 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) (box smoothed by 3 pts, each Timeseries) - T_25 is Sea Surface Temperature (degree_C) - EX#3 is T_25-T_25[T=@SBX] - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 T_25 EX#3 - - 17 1.5s80.5e 80.5E 1.5S 1 19-FEB-2017 12:00 29.05 29.02 -0.0280 - 17 1.5s80.5e 80.5E 1.5S 1 24-FEB-2017 12:00 29.09 29.09 -0.0080 - 17 1.5s80.5e 80.5E 1.5S 1 01-MAR-2017 12:00 29.15 29.18 0.0273 - 17 1.5s80.5e 80.5E 1.5S 1 02-MAR-2017 12:00 29.16 29.19 0.0280 - 17 1.5s80.5e 80.5E 1.5S 1 03-MAR-2017 12:00 29.14 29.11 -0.0247 - 17 1.5s80.5e 80.5E 1.5S 1 04-MAR-2017 12:00 29.10 29.11 0.0100 - 17 1.5s80.5e 80.5E 1.5S 1 05-MAR-2017 12:00 29.10 29.08 -0.0173 - 17 1.5s80.5e 80.5E 1.5S 1 06-MAR-2017 12:00 29.13 29.11 -0.0247 - 17 1.5s80.5e 80.5E 1.5S 1 07-MAR-2017 12:00 29.21 29.20 -0.0127 - 17 1.5s80.5e 80.5E 1.5S 1 08-MAR-2017 12:00 29.31 29.34 0.0247 - 17 1.5s80.5e 80.5E 1.5S 1 09-MAR-2017 12:00 29.40 29.40 -0.0013 - 17 1.5s80.5e 80.5E 1.5S 1 10-MAR-2017 12:00 29.47 29.46 -0.0107 - 17 1.5s80.5e 80.5E 1.5S 1 11-MAR-2017 12:00 29.55 29.56 0.0087 - 17 1.5s80.5e 80.5E 1.5S 1 12-MAR-2017 12:00 29.63 29.63 0.0000 - 17 1.5s80.5e 80.5E 1.5S 1 13-MAR-2017 12:00 29.70 29.70 -0.0080 - 17 1.5s80.5e 80.5E 1.5S 1 14-MAR-2017 12:00 29.80 29.79 -0.0107 - - 18 10s10w 10W 10S 1 19-FEB-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 24-FEB-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 01-MAR-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 06-MAR-2017 12:00 ... ... ... - 18 10s10w 10W 10S 1 08-MAR-2017 12:00 ... 27.26 ... - 18 10s10w 10W 10S 1 09-MAR-2017 12:00 27.25 27.24 -0.0028 - 18 10s10w 10W 10S 1 10-MAR-2017 12:00 27.23 27.23 -0.0044 - 18 10s10w 10W 10S 1 11-MAR-2017 12:00 27.24 27.23 -0.0107 - 18 10s10w 10W 10S 1 12-MAR-2017 12:00 27.27 27.26 -0.0113 - 18 10s10w 10W 10S 1 13-MAR-2017 12:00 27.33 27.33 0.0007 - 18 10s10w 10W 10S 1 14-MAR-2017 12:00 27.39 27.39 0.0007 - -! ... smoothing along E axis also allowed (but is it useful?) -list rowsize, rowsize[e=@sbx] - rowsize - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - EX#2 is ROWSIZE[E=@SBX] - ROWSIZE - FEATURE STATION LONGITUDE LATITUDE ROWSIZE EX#2 - 1 0n0e 0E 0 37.00 -12.33 - 2 0n10w 10W 0 37.00 -4.00 - 3 0n110w 110W 0 25.00 8.00 - 4 0n125w 125W 0 37.00 -4.00 - 5 0n140w 140W 0 37.00 0.00 - 6 0n155w 155W 0 37.00 0.00 - 7 0n156e 156E 0 37.00 0.00 - 8 0n165e 165E 0 37.00 0.00 - 9 0n170w 170W 0 37.00 -1.33 - 10 0n23w 23W 0 33.00 2.67 - 11 0n67e 67E 0 37.00 -1.33 - 12 0n80.5e 80.5E 0 37.00 0.00 - 13 0n90e 90E 0 37.00 -1.67 - 14 0n95w 95W 0 32.00 3.33 - 15 1.5n67e 67E 1.5N 37.00 -1.67 - 16 1.5s67e 67E 1.5S 37.00 0.00 - 17 1.5s80.5e 80.5E 1.5S 37.00 -1.67 - 18 10s10w 10W 10S 32.00 3.33 - 19 12n23w 23W 12N 37.00 -1.67 - 20 12n90e 90E 12N 37.00 0.00 - 21 12s80.5e 80.5E 12S 37.00 -2.00 - 22 12s93e 93E 12S 31.00 4.00 - 23 14s32w 32W 14S 37.00 -2.00 - 24 15n90e 90E 15N 37.00 0.00 - 25 19s34w 34W 19S 37.00 0.00 - 26 20n38w 38W 20N 37.00 0.00 - 27 21n23w 23W 21N 37.00 0.00 - 28 2n125w 125W 2N 37.00 0.00 - 29 2n140w 140W 2N 37.00 0.00 - 30 2n155w 155W 2N 37.00 -11.00 - 31 2n170w 170W 2N 4.00 10.00 - 32 2n180w 180E 2N 1.00 0.67 - 33 2s110w 110W 2S 37.00 -36.67 - 34 2s125w 125W 2S 37.00 -37.00 - 35 2s140w 140W 2S 37.00 -37.00 - 36 2s155w 155W 2S 37.00 -37.00 - 37 2s165e 165E 2S 37.00 -37.00 - 38 2s170w 170W 2S 36.00 -36.00 - 39 2s180w 180E 2S 24.00 -24.00 - 40 4n23w 23W 4N 37.00 -37.00 - 41 4n90e 90E 4N 35.00 -35.00 - 42 4s57e 57E 4S 37.00 -37.00 - 43 4s80.5e 80.5E 4S 37.00 -37.00 - 44 5n125w 125W 5N 37.00 -37.00 - 45 5n140w 140W 5N 37.00 -37.00 - 46 5n155w 155W 5N 8.00 -8.00 - 47 5n165e 165E 5N 37.00 -37.00 - 48 5n170w 170W 5N 37.00 -37.00 - 49 5n180w 180E 5N 37.00 -37.00 - 50 5s125w 125W 5S 37.00 -37.00 - 51 5s140w 140W 5S 37.00 -37.00 - 52 5s155w 155W 5S 5.00 -5.00 - 53 5s170w 170W 5S 37.00 -37.00 - 54 5s180w 180E 5S 37.00 -37.00 - 55 5s95e 95E 5S 37.00 -37.00 - 56 6s10w 10W 6S 30.00 -30.00 - 57 6s8e 8E 6S 37.00 -37.00 - 58 8n125w 125W 8N 37.00 -37.00 - 59 8n137e 137E 8N 37.00 -37.00 - 60 8n180w 180E 8N 37.00 -37.00 - 61 8n90e 90E 8N 37.00 -37.00 - 62 8n95w 95W 8N 9.00 -9.00 - 63 8s125w 125W 8S 37.00 -37.00 - 64 8s155w 155W 8S 37.00 -37.00 - 65 8s165e 165E 8S 37.00 -37.00 - 66 8s170w 170W 8S 37.00 -37.00 - 67 8s180w 180E 8S 36.00 -36.00 - 68 8s55e 55E 8S 37.00 -37.00 - 69 8s95e 95E 8S 37.00 -37.00 - 70 9n140w 140W 9N 37.00 -37.00 - -! ... identical smoothing result, despite feature filtering -list/e=67:70 rowsize, rowsize[e=@sbx] - rowsize - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 67 to 70 - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - EX#2 is ROWSIZE[E=@SBX] - ROWSIZE - FEATURE STATION LONGITUDE LATITUDE ROWSIZE EX#2 - 67 8s180w 180E 8S 36.00 -36.00 - 68 8s55e 55E 8S 37.00 -37.00 - 69 8s95e 95E 8S 37.00 -37.00 - 70 9n140w 140W 9N 37.00 -37.00 - -! tbd tests -! - regridding - -GO bn_reset bn_regrid_to_dsg -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_to_dsg -GO bn_regrid_to_dsg -! bn_regrid_to_dsg.jnl - -! test regridding of gridded data to a DSG target - - -! DSGTBD: as of 5/2017 there is more to test. This tests only -! - coordinate-complete xyzt source data and coordinate-complete DSG -! not tested are under- and over-specified situations -! under-specified: -! 3D XYZ model being sampled onto a 2D XY DSG -! user would need to specify how to reduce Z limits to a point -! using a LET definition, say, LET my_z_restricted = my_var[Z=@ave] -! over-specified -! fixed time XYZ model being sampled onto an XYT trajectory DSG -! -! 8/19 adding tests for -! grid-to-trajectory -! grid-to-profile - - -use DSG_ERDDAP_pmelTao5daySst.nc - -! create a test dataset -! fake "temp" values are actually the latitude values -! ****** -define axis/t=1-jan-2017:1-apr-2017:3/unit=days tfake -define axis/y=20s:20n:1 yfake -define axis/x=0:359:1/unit=degrees/modulo xfake -define axis/z=0:2:.5/unit=meters zfake -define grid/x=xfake/y=yfake/z=zfake/t=tfake gfake -let/title=Temperature temp = y[g=gfake] + 0*(x[g=gfake]+z[g=gfake]+t[g=gfake]) -save/clobber/file=fake_model_temp.nc/outtype=float temp -cancel variables/all -! ****** - -! demonstrate regridding model data to DSG using file data -USE fake_model_temp.nc - -! regrid of time series -list/x=160e:170e temp[d=fake_model_temp,g=t_25[d=DSG_ERDDAP_pmelTao5daySst]] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : LONGITUDE: 160 to 170 - STATION is Timeseries-id - TEMP is Temperature (regrid: to Timeseries DSG grid) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME TEMP - - 8 0n165e 165E 0 1 15-JAN-2017 12:00 0.000 - 8 0n165e 165E 0 1 20-JAN-2017 12:00 0.000 - 8 0n165e 165E 0 1 25-JAN-2017 12:00 0.000 - 8 0n165e 165E 0 1 30-JAN-2017 12:00 0.000 - 8 0n165e 165E 0 1 04-FEB-2017 12:00 0.000 - 8 0n165e 165E 0 1 09-FEB-2017 12:00 0.000 - 8 0n165e 165E 0 1 14-FEB-2017 12:00 0.000 - 8 0n165e 165E 0 1 19-FEB-2017 12:00 0.000 - 8 0n165e 165E 0 1 24-FEB-2017 12:00 0.000 - 8 0n165e 165E 0 1 01-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 02-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 03-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 04-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 05-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 06-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 07-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 08-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 09-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 10-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 11-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 12-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 13-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 14-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 15-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 16-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 17-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 18-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 19-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 20-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 21-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 22-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 27-MAR-2017 12:00 0.000 - 8 0n165e 165E 0 1 01-APR-2017 12:00 0.000 - 8 0n165e 165E 0 1 06-APR-2017 12:00 ... - 8 0n165e 165E 0 1 11-APR-2017 12:00 ... - 8 0n165e 165E 0 1 16-APR-2017 12:00 ... - 8 0n165e 165E 0 1 21-APR-2017 12:00 ... - - 37 2s165e 165E 2S 1 15-JAN-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 20-JAN-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 25-JAN-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 30-JAN-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 04-FEB-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 09-FEB-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 14-FEB-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 19-FEB-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 24-FEB-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 01-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 02-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 03-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 04-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 05-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 06-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 07-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 08-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 09-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 10-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 11-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 12-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 13-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 14-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 15-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 16-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 17-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 18-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 19-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 20-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 21-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 22-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 27-MAR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 01-APR-2017 12:00 -2.000 - 37 2s165e 165E 2S 1 06-APR-2017 12:00 ... - 37 2s165e 165E 2S 1 11-APR-2017 12:00 ... - 37 2s165e 165E 2S 1 16-APR-2017 12:00 ... - 37 2s165e 165E 2S 1 21-APR-2017 12:00 ... - - 47 5n165e 165E 5N 1 15-JAN-2017 12:00 5.000 - 47 5n165e 165E 5N 1 20-JAN-2017 12:00 5.000 - 47 5n165e 165E 5N 1 25-JAN-2017 12:00 5.000 - 47 5n165e 165E 5N 1 30-JAN-2017 12:00 5.000 - 47 5n165e 165E 5N 1 04-FEB-2017 12:00 5.000 - 47 5n165e 165E 5N 1 09-FEB-2017 12:00 5.000 - 47 5n165e 165E 5N 1 14-FEB-2017 12:00 5.000 - 47 5n165e 165E 5N 1 19-FEB-2017 12:00 5.000 - 47 5n165e 165E 5N 1 24-FEB-2017 12:00 5.000 - 47 5n165e 165E 5N 1 01-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 06-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 07-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 08-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 09-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 10-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 11-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 12-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 13-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 14-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 15-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 16-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 17-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 18-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 19-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 20-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 21-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 22-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 23-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 24-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 25-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 26-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 27-MAR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 01-APR-2017 12:00 5.000 - 47 5n165e 165E 5N 1 06-APR-2017 12:00 ... - 47 5n165e 165E 5N 1 11-APR-2017 12:00 ... - 47 5n165e 165E 5N 1 16-APR-2017 12:00 ... - 47 5n165e 165E 5N 1 21-APR-2017 12:00 ... - - 65 8s165e 165E 8S 1 15-JAN-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 20-JAN-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 25-JAN-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 30-JAN-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 04-FEB-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 09-FEB-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 14-FEB-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 19-FEB-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 24-FEB-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 01-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 06-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 07-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 08-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 09-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 10-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 11-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 12-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 13-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 14-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 15-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 16-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 17-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 18-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 19-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 20-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 21-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 22-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 23-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 24-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 25-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 26-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 27-MAR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 01-APR-2017 12:00 -8.000 - 65 8s165e 165E 8S 1 06-APR-2017 12:00 ... - 65 8s165e 165E 8S 1 11-APR-2017 12:00 ... - 65 8s165e 165E 8S 1 16-APR-2017 12:00 ... - 65 8s165e 165E 8S 1 21-APR-2017 12:00 ... -cancel mem/all -SET MODE DIAG -! notice that the X-restricted LOAD requests a smaller X subscript range -load/x=160e:170e temp[d=fake_model_temp,g=t_25[d=DSG_ERDDAP_pmelTao5daySst]] - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G202) FEATURE_X FEATURE_Y FEATURE_Z FEATURE_T FEATURES NORMAL - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 2376 M: -999 -999 N: -999 -999 - strip regrid on T: TEMP --> GAD2 @NRST - reading TEMP M:493 dset: 2 I: 161 171 J: 2 41 K: 3 4 L: 6 31 - regrid TEMP M:483 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 2376 M: -999 -999 N: -999 -999 -load temp[d=fake_model_temp,g=t_25[d=DSG_ERDDAP_pmelTao5daySst]] - eval EX#1 C: 4 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 2376 M: -999 -999 N: -999 -999 - strip regrid on T: TEMP --> GAD2 @NRST - reading TEMP M:412 dset: 2 I: 1 351 J: 2 41 K: 3 4 L: 6 31 - regrid TEMP M:433 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 2376 M: -999 -999 N: -999 -999 -SET MODE/LAST DIAG - -! now the same thing, but sampling from a uvar instead of an fvar -define axis/t=1-jan-2017:1-apr-2017:3/unit=days tlittle -define axis/y=20.01s:20n:1 ylittle ! offset a little from an exact hit -define axis/x=0:359:1/unit=degrees/modulo xlittle -define axis/z=0:2:.5/unit=meters zlittle -define grid/x=xlittle/y=ylittle/z=zlittle/t=tlittle glittle -let/title=Temperature little_temp = y[g=glittle] + 0*(x[g=glittle]+z[g=glittle]+t[g=glittle]) -list/x=160e:170e little_temp[g=t_25[d=DSG_ERDDAP_pmelTao5daySst]] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : LONGITUDE: 160 to 170 - STATION is Timeseries-id - LITTLE_TEMP is Temperature (regrid: to Timeseries DSG grid) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME LITTLE_TEMP - - 8 0n165e 165E 0 1 15-JAN-2017 12:00 -0.010 - 8 0n165e 165E 0 1 20-JAN-2017 12:00 -0.010 - 8 0n165e 165E 0 1 25-JAN-2017 12:00 -0.010 - 8 0n165e 165E 0 1 30-JAN-2017 12:00 -0.010 - 8 0n165e 165E 0 1 04-FEB-2017 12:00 -0.010 - 8 0n165e 165E 0 1 09-FEB-2017 12:00 -0.010 - 8 0n165e 165E 0 1 14-FEB-2017 12:00 -0.010 - 8 0n165e 165E 0 1 19-FEB-2017 12:00 -0.010 - 8 0n165e 165E 0 1 24-FEB-2017 12:00 -0.010 - 8 0n165e 165E 0 1 01-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 02-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 03-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 04-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 05-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 06-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 07-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 08-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 09-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 10-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 11-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 12-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 13-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 14-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 15-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 16-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 17-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 18-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 19-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 20-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 21-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 22-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 27-MAR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 01-APR-2017 12:00 -0.010 - 8 0n165e 165E 0 1 06-APR-2017 12:00 ... - 8 0n165e 165E 0 1 11-APR-2017 12:00 ... - 8 0n165e 165E 0 1 16-APR-2017 12:00 ... - 8 0n165e 165E 0 1 21-APR-2017 12:00 ... - - 37 2s165e 165E 2S 1 15-JAN-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 20-JAN-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 25-JAN-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 30-JAN-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 04-FEB-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 09-FEB-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 14-FEB-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 19-FEB-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 24-FEB-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 01-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 02-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 03-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 04-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 05-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 06-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 07-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 08-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 09-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 10-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 11-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 12-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 13-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 14-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 15-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 16-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 17-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 18-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 19-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 20-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 21-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 22-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 27-MAR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 01-APR-2017 12:00 -2.010 - 37 2s165e 165E 2S 1 06-APR-2017 12:00 ... - 37 2s165e 165E 2S 1 11-APR-2017 12:00 ... - 37 2s165e 165E 2S 1 16-APR-2017 12:00 ... - 37 2s165e 165E 2S 1 21-APR-2017 12:00 ... - - 47 5n165e 165E 5N 1 15-JAN-2017 12:00 4.990 - 47 5n165e 165E 5N 1 20-JAN-2017 12:00 4.990 - 47 5n165e 165E 5N 1 25-JAN-2017 12:00 4.990 - 47 5n165e 165E 5N 1 30-JAN-2017 12:00 4.990 - 47 5n165e 165E 5N 1 04-FEB-2017 12:00 4.990 - 47 5n165e 165E 5N 1 09-FEB-2017 12:00 4.990 - 47 5n165e 165E 5N 1 14-FEB-2017 12:00 4.990 - 47 5n165e 165E 5N 1 19-FEB-2017 12:00 4.990 - 47 5n165e 165E 5N 1 24-FEB-2017 12:00 4.990 - 47 5n165e 165E 5N 1 01-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 06-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 07-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 08-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 09-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 10-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 11-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 12-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 13-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 14-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 15-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 16-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 17-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 18-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 19-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 20-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 21-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 22-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 23-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 24-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 25-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 26-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 27-MAR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 01-APR-2017 12:00 4.990 - 47 5n165e 165E 5N 1 06-APR-2017 12:00 ... - 47 5n165e 165E 5N 1 11-APR-2017 12:00 ... - 47 5n165e 165E 5N 1 16-APR-2017 12:00 ... - 47 5n165e 165E 5N 1 21-APR-2017 12:00 ... - - 65 8s165e 165E 8S 1 15-JAN-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 20-JAN-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 25-JAN-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 30-JAN-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 04-FEB-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 09-FEB-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 14-FEB-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 19-FEB-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 24-FEB-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 01-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 06-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 07-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 08-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 09-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 10-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 11-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 12-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 13-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 14-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 15-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 16-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 17-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 18-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 19-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 20-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 21-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 22-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 23-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 24-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 25-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 26-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 27-MAR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 01-APR-2017 12:00 -8.010 - 65 8s165e 165E 8S 1 06-APR-2017 12:00 ... - 65 8s165e 165E 8S 1 11-APR-2017 12:00 ... - 65 8s165e 165E 8S 1 16-APR-2017 12:00 ... - 65 8s165e 165E 8S 1 21-APR-2017 12:00 ... - -! Test some plots: the legend line samples should be labeled with the station IDs -let regridded_var = temp[d=2,g=t_25[d=1]] - -set v ul; plot/x=160e:170e t_25[d=1] -set v ur; plot/x=160e:170e regridded_var - -set v ll; plot/m=35:43 t_25[d=1] -set v lr; plot/m=35:43 regridded_var -frame/file=regrid_to_dsg_ts.gif -cancel view - -! ******* scatter/gather tests -! see what happens when the source data is too big for memory -! ==> STRIP/GATHER on T axis -define axis/t=1-jan-2017:1-apr-2017:.3/unit=days tbig -define axis/y=20.001s:20n:.5 ybig ! offset a tiny bit from an exact hit -define axis/x=0:359:2/unit=degrees/modulo xbig -define axis/z=0:2:.1/unit=meters zbig -define grid/x=xbig/y=ybig/z=zbig/t=tbig gbig -let/title=Temperature big_temp = y[g=gbig] + 0*(x[g=gbig]+z[g=gbig]+t[g=gbig]) -say `big_temp,r=size` - !-> MESSAGE/CONTINUE 92672181 -92672181 -load big_temp[g=t_25[d=DSG_ERDDAP_pmelTao5daySst]] -SHOW MEMORY/DIAGNOSTIC - Last gather - Variable Axis Xform Chunk Repeated - BIG_TEMP T 37 1 - Total table slots: 500 - Free table slots: 485 - Un-cached variables: 0 - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 25.03 Mb - Current cache: 174.99 Mb -!stat big_temp[g=t_25[d=DSG_ERDDAP_pmelTao5daySst]] ! not yet DSG-enabled - -! Again, this time with T axis size inadequate, so split occurs on Z -! (same size source data but 1/100 as many time points) -! ==> STRIP/GATHER on ****Z*** axis -define axis/t=1-jan-2017:1-apr-2017:`.3*100`/unit=days tbigz - !-> define axis/t=1-jan-2017:1-apr-2017:30/unit=days tbigz -define axis/y=20.001s:20n:.5 ybigz ! offset a tiny bit from an exact hit -define axis/x=0:359:2/unit=degrees/modulo xbigz -define axis/z=0:2:`.1/100`/unit=meters zbigz - !-> define axis/z=0:2:0.001/unit=meters zbigz -define grid/x=xbigz/y=ybigz/z=zbigz/t=tbigz gbigz -let/title=Temperature bigz_temp = y[g=gbigz] + 0*(x[g=gbigz]+z[g=gbigz]+t[g=gbigz]) -say `bigz_temp,r=size` - !-> MESSAGE/CONTINUE 117346644 -117346644 -load bigz_temp[g=t_25[d=DSG_ERDDAP_pmelTao5daySst]] -SHOW MEMORY/DIAGNOSTIC - Last gather - Variable Axis Xform Chunk Repeated - BIGZ_TEMP Z 56 1 - Total table slots: 500 - Free table slots: 482 - Un-cached variables: 0 - SET MEMORY/SIZE: 250 Mb (31.25 megawords) - Peak demand: 25.25 Mb - Current cache: 229.07 Mb -!stat bigz_temp[g=t_25[d=DSG_ERDDAP_pmelTao5daySst]] ! not yet DSG-enabled - -! by constraining the request (in X) the needed source data is reduced -! (I:81 86 J: 3 81 K: 11 16 L: 49 301) -cancel memory/all -SET MODE DIAG -load/x=160e:170e big_temp[g=t_25[d=DSG_ERDDAP_pmelTao5daySst]] - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid BIG_TEMP C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G202) FEATURE_X FEATURE_Y FEATURE_Z FEATURE_T FEATURES NORMAL - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 2376 M: -999 -999 N: -999 -999 - strip regrid on T: BIG_TEMP --> GAD2 @NRST - eval BIG_TEMP C: 8 dset: 0 I: 81 86 J: 3 81 K: 11 16 L: 49 301 - pseudo Y M:493 dset: 0 I: -999 -999 J: 3 81 K: -999 -999 L: -999 -999 - constan cnst M:483 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo X M:433 dset: 0 I: 81 86 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo Z M:412 dset: 0 I: -999 -999 J: -999 -999 K: 11 16 L: -999 -999 - -DELETE Z M:412 dset: 0 I: -999 -999 J: -999 -999 K: 11 16 L: -999 -999 - -DELETE X M:433 dset: 0 I: 81 86 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo T M:433 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: 49 301 - -DELETE T M:433 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: 49 301 - -DELETE tpry M:379 dset: 0 I: 81 86 J: -999 -999 K: 11 16 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:412 dset: 0 I: 81 86 J: -999 -999 K: 11 16 L: 49 301 M: -999 -999 N: -999 -999 - -DELETE cnst M:483 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE tpry M:379 dset: 0 I: 81 86 J: -999 -999 K: 11 16 L: 49 301 M: -999 -999 N: -999 -999 - -DELETE Y M:493 dset: 0 I: -999 -999 J: 3 81 K: -999 -999 L: -999 -999 - regrid BIG_TEMP M:493 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 2376 M: -999 -999 N: -999 -999 - -! constraining on E implicitly constrains XYZT, too -!(I: 118 118 J: 31 31 K: 11 11 L: 49 301) -cancel memory/all - dealloc dynamic grid (G202) FEATURE_X FEATURE_Y FEATURE_Z FEATURE_T FEATURES NORMAL - -DELETE BIG_TEMP M:483 dset: 0 I: 81 86 J: 3 81 K: 11 16 L: 49 301 - -DELETE BIG_TEMP M:493 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 2376 M: -999 -999 N: -999 -999 - dealloc dynamic grid GBIG XBIG YBIG ZBIG TBIG -load/e=50 big_temp[g=t_25[d=DSG_ERDDAP_pmelTao5daySst]] - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - getgrid BIG_TEMP C: 7 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G202) FEATURE_X FEATURE_Y FEATURE_Z FEATURE_T FEATURES NORMAL - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 2 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 2376 M: -999 -999 N: -999 -999 - strip regrid on T: BIG_TEMP --> GAD2 @NRST - eval BIG_TEMP C: 8 dset: 0 I: 118 118 J: 31 31 K: 11 11 L: 49 301 - pseudo Y M:493 dset: 0 I: -999 -999 J: 31 31 K: -999 -999 L: -999 -999 - constan cnst M:483 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo X M:379 dset: 0 I: 118 118 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo Z M:412 dset: 0 I: -999 -999 J: -999 -999 K: 11 11 L: -999 -999 - -DELETE Z M:412 dset: 0 I: -999 -999 J: -999 -999 K: 11 11 L: -999 -999 - -DELETE X M:379 dset: 0 I: 118 118 J: -999 -999 K: -999 -999 L: -999 -999 - pseudo T M:379 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: 49 301 - -DELETE T M:379 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: 49 301 - -DELETE tpry M:433 dset: 0 I: 118 118 J: -999 -999 K: 11 11 L: -999 -999 M: -999 -999 N: -999 -999 - -DELETE tpry M:412 dset: 0 I: 118 118 J: -999 -999 K: 11 11 L: 49 301 M: -999 -999 N: -999 -999 - -DELETE cnst M:483 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: -999 -999 - -DELETE tpry M:433 dset: 0 I: 118 118 J: -999 -999 K: 11 11 L: 49 301 M: -999 -999 N: -999 -999 - -DELETE Y M:493 dset: 0 I: -999 -999 J: 31 31 K: -999 -999 L: -999 -999 - regrid BIG_TEMP M:493 dset: 0 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 2376 M: -999 -999 N: -999 -999 -SET MODE/LAST DIAG - -! Gridded-to-Trajectory -cancel data/all -cancel var/all - -use sail_2019.nc - -define axis/t=17-may-2019:20-may-2019:1/units=hours tfake -define axis/x=-168:-165:0.2/units=degrees_east xfake -define axis/y=54:57:0.2/units=degrees_north yfake -define grid/x=xfake/y=yfake/t=tfake gfake -let/title="Gridded Temp"/Units="Degrees_C" temp = y[g=gfake] + 0*(x[g=gfake]+t[g=gfake]) -save/clobber/file=fake_model_temp.nc/outtype=float temp -can var/all - -! The data is latitude values -use fake_model_temp.nc - -set v ul -plot temp[d=2,g=temp_ctd_rbr_mean[d=1]] - -! With a title -set v ur -LET/title="Temp grid2DSG" temp_from_grid = temp[d=2,g=temp_ctd_rbr_mean[d=1]] -plot temp_from_grid - -! test modulo in X -define axis/t=17-may-2019:20-may-2019:1/units=hours tfake -define axis/x=192:195:0.2/units=degrees_east xfake -define axis/y=54:57:0.2/units=degrees_north yfake -define grid/x=xfake/y=yfake/t=tfake gfake -let/title="Gridded Temp"/Units="Degrees_C" temp = y[g=gfake] + 0*(x[g=gfake]+t[g=gfake]) -save/clobber/file=fake_model_temp.nc/outtype=float temp -can var/all - -use fake_model_temp.nc - -set v ll -plot/title="Modulo Longitudes" temp[d=2,g=temp_ctd_rbr_mean[d=1]] - -set v lr -LET/title="grid2DSG w/ mod" temp_from_grid = temp[d=2,g=temp_ctd_rbr_mean[d=1]] -plot temp_from_grid -frame/file=regrid_to_dsg_traj.gif -cancel view - -! constrain in T and E -set mode diag -list/e=2/t="18-may-2019:12:00":"19-MAY-2019 23:00" temp[d=2,g=temp_ctd_rbr_mean[d=1]] - dealloc dynamic grid (G202) FEATURE_X FEATURE_Y NORMAL FEATURE_T FEATURES NORMAL - getgrid EX#1 C: 5 dset: 2 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G202) FEATURE_X FEATURE_Y NORMAL FEATURE_T FEATURES NORMAL - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 2 I: 1 116 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - strip regrid on X: TEMP --> GDZ2 @NRST - found TEMP M:493 dset: 2 I: -10 -6 J: 5 10 K: -999 -999 L: 15 72 - regrid TEMP M:379 dset: 2 I: 1 116 J: -999 -999 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 - DATA SET: ./data/sail_2019.nc - SUBSET : TIME: 1.5582E+09 to 1.5583E+09 - E (instance): 2 - TRAJECTORY is Trajectory-id - TEMP is Gridded Temp (Degrees_C) (regrid: to Trajectory DSG grid) - FEATURE TRAJECTORY LONGITUDE LATITUDE TIME TEMP - - 2 1034.0 166.5W 55.3343N 18-MAY-2019 12:59 55.40 - 2 1034.0 166.5W 55.3737N 18-MAY-2019 13:59 55.40 - 2 1034.0 166.5W 55.396N 18-MAY-2019 14:59 55.40 - 2 1034.0 166.6W 55.4094N 18-MAY-2019 15:59 55.40 - 2 1034.0 166.6W 55.435N 18-MAY-2019 16:59 55.40 - 2 1034.0 166.6W 55.4502N 18-MAY-2019 17:59 55.40 - 2 1034.0 166.6W 55.4686N 18-MAY-2019 18:59 55.40 - 2 1034.0 166.6W 55.4851N 18-MAY-2019 19:59 55.40 - 2 1034.0 166.7W 55.5022N 18-MAY-2019 20:59 55.60 - 2 1034.0 166.7W 55.5243N 18-MAY-2019 21:59 55.60 - 2 1034.0 166.7W 55.5518N 18-MAY-2019 22:59 55.60 - 2 1034.0 166.7W 55.577N 18-MAY-2019 23:59 55.60 - 2 1034.0 166.7W 55.6013N 19-MAY-2019 00:59 55.60 - 2 1034.0 166.7W 55.6177N 19-MAY-2019 01:59 55.60 - 2 1034.0 166.7W 55.6371N 19-MAY-2019 02:59 55.60 - 2 1034.0 166.7W 55.6479N 19-MAY-2019 03:59 55.60 - 2 1034.0 166.7W 55.6485N 19-MAY-2019 04:59 55.60 - 2 1034.0 166.7W 55.6428N 19-MAY-2019 05:59 55.60 - 2 1034.0 166.7W 55.6364N 19-MAY-2019 06:59 55.60 - 2 1034.0 166.7W 55.6301N 19-MAY-2019 07:59 55.60 - 2 1034.0 166.7W 55.6254N 19-MAY-2019 08:59 55.60 - 2 1034.0 166.7W 55.6245N 19-MAY-2019 09:59 55.60 - 2 1034.0 166.7W 55.6304N 19-MAY-2019 10:59 55.60 - 2 1034.0 166.7W 55.6398N 19-MAY-2019 11:59 55.60 - 2 1034.0 166.8W 55.6514N 19-MAY-2019 12:59 55.60 - 2 1034.0 166.8W 55.6606N 19-MAY-2019 13:59 55.60 - 2 1034.0 166.8W 55.6669N 19-MAY-2019 14:59 55.60 - 2 1034.0 166.8W 55.6723N 19-MAY-2019 15:59 55.60 - 2 1034.0 166.8W 55.6781N 19-MAY-2019 16:59 55.60 - 2 1034.0 166.8W 55.6817N 19-MAY-2019 17:59 55.60 - 2 1034.0 166.8W 55.6833N 19-MAY-2019 18:59 55.60 - 2 1034.0 166.8W 55.6843N 19-MAY-2019 19:59 55.60 - 2 1034.0 166.8W 55.6875N 19-MAY-2019 20:59 55.60 - 2 1034.0 166.8W 55.6941N 19-MAY-2019 21:59 55.60 - 2 1034.0 166.8W 55.7054N 19-MAY-2019 22:59 55.80 -can mode diag - -! finer grid, do we get scatter/gather? -can dat/all -define symbol save_mem = ($ferret_memory) - !-> define symbol save_mem = 31.25 -set mem/siz=2mb - -use sail_2019.nc - -! Test scatter/gather -define axis/t=17-may-2019:20-may-2019:1/units=minutes tbig - -define axis/x=0:359:.5/unit=degrees/modulo xbig -define axis/y=54:57:0.2/units=degrees_north ybig -define grid/x=xbig/y=ybig/t=tbig gbig -let big_temp = y[g=gbig] + 0*(x[g=gbig]+t[g=gbig]) - -say `big_temp,r=size` - !-> MESSAGE/CONTINUE 49708784 -49708784 - -load big_temp[g=temp_ctd_rbr_mean[d=1]] -show mem/diag - Last gather - Variable Axis Xform Chunk Repeated - BIG_TEMP T 1385 1 - Total table slots: 500 - Free table slots: 496 - Un-cached variables: 0 - SET MEMORY/SIZE: 2 Mb (250000 words) - Peak demand: 233.66 Kb - Current cache: 493.55 Kb - -set mem/siz=($save_mem) - !-> set mem/siz=31.25 - -! Gridded-to-profile -cancel data/all -cancel var/all - -! Make some fake gridded data: Z from the gridded z axis, -! with small variations in X and Y - -define axis/t=11-aug-2009:14-aug-2009:6/units=hours tfake -define axis/x=236:240:0.5/units=degrees_east/modulo xfake -define axis/y=35:45:0.5/units=degrees_north yfake -define axis/z=0:35:1/depth/unit=meters zfake -define grid/x=xfake/y=yfake/z=zfake/t=tfake gfake -let/title="z from grid with a little xy" zz = z[g=gfake] + 0.05*x[g=gfake]+ 0.1* y[g=gfake]+ 0*t[g=gfake] -save/clobber/file=fake_model_temp.nc/outtype=float zz -cancel variables/all - -! ****** -! demonstrate regridding model data to DSG using file data - -! The depths are listed from deepest to shallowest in each profile - -use profile_dsg_downup -list/e=1 depth - DATA SET: ./data/profile_dsg_downup.nc - SUBSET : E (instance): 1 - PROFILE is Profile-id-id - DEPTH is DEPTH_M (m) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME DEPTH - - 1 1 123.1W 41.3N 33.2111 13-AUG-2009 00:00 33.21 - 1 1 123.1W 41.3N 31.5953 13-AUG-2009 00:00 31.60 - 1 1 123.1W 41.3N 24.9692 13-AUG-2009 00:00 24.97 - 1 1 123.1W 41.3N 20.5466 13-AUG-2009 00:00 20.55 - 1 1 123.1W 41.3N 15.312 13-AUG-2009 00:00 15.31 - 1 1 123.1W 41.3N 10.1546 13-AUG-2009 00:00 10.15 - 1 1 123.1W 41.3N 4.9567 13-AUG-2009 00:00 4.96 - 1 1 123.1W 41.3N 2.12 13-AUG-2009 00:00 2.12 - -USE fake_model_temp.nc -list zz[d=fake_model_temp,g=temp[d=1]] - DATA SET: ./data/profile_dsg_downup.nc - PROFILE is Profile-id-id - ZZ is z from grid with a little xy (regrid: to Profile DSG grid) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME ZZ - - 1 1 123.1W 41.3N 33.2111 13-AUG-2009 00:00 49.00 - 1 1 123.1W 41.3N 31.5953 13-AUG-2009 00:00 48.00 - 1 1 123.1W 41.3N 24.9692 13-AUG-2009 00:00 41.00 - 1 1 123.1W 41.3N 20.5466 13-AUG-2009 00:00 37.00 - 1 1 123.1W 41.3N 15.312 13-AUG-2009 00:00 31.00 - 1 1 123.1W 41.3N 10.1546 13-AUG-2009 00:00 26.00 - 1 1 123.1W 41.3N 4.9567 13-AUG-2009 00:00 21.00 - 1 1 123.1W 41.3N 2.12 13-AUG-2009 00:00 18.00 - - 2 2 120.4W 44.11N 33.2111 13-AUG-2009 12:58 49.38 - 2 2 120.4W 44.11N 32.2686 13-AUG-2009 12:58 48.38 - 2 2 120.4W 44.11N 30.491 13-AUG-2009 12:58 46.38 - 2 2 120.4W 44.11N 26.6257 13-AUG-2009 12:58 43.38 - 2 2 120.4W 44.11N 23.495 13-AUG-2009 12:58 39.38 - 2 2 120.4W 44.11N 20.9152 13-AUG-2009 12:58 37.38 - 2 2 120.4W 44.11N 17.9293 13-AUG-2009 12:58 34.38 - 2 2 120.4W 44.11N 14.8822 13-AUG-2009 12:58 31.38 - 2 2 120.4W 44.11N 11.8737 13-AUG-2009 12:58 28.38 - 2 2 120.4W 44.11N 8.8551 13-AUG-2009 12:58 25.38 - 2 2 120.4W 44.11N 5.823 13-AUG-2009 12:58 22.38 - 2 2 120.4W 44.11N 3.7747 13-AUG-2009 12:58 20.38 - 2 2 120.4W 44.11N 2.12 13-AUG-2009 12:58 18.38 - - 3 3 121W 38.8N 23.495 12-AUG-2009 00:00 38.85 - 3 3 121W 38.8N 20.9152 12-AUG-2009 00:00 36.85 - 3 3 121W 38.8N 17.9293 12-AUG-2009 00:00 33.85 - 3 3 121W 38.8N 14.8822 12-AUG-2009 00:00 30.85 - 3 3 121W 38.8N 11.8737 12-AUG-2009 00:00 27.85 - 3 3 121W 38.8N 8.8551 12-AUG-2009 00:00 24.85 - 3 3 121W 38.8N 5.823 12-AUG-2009 00:00 21.85 - 3 3 121W 38.8N 3.7747 12-AUG-2009 00:00 19.85 - 3 3 121W 38.8N 2.12 12-AUG-2009 00:00 17.85 - -cancel data/all - -! The depths in this file are listed from shallowest to deepest in each profile. -! The results are the same, only inverted. - -use profile_dsg_updown -USE fake_model_temp.nc -list zz[d=fake_model_temp,g=temp[d=1]] - DATA SET: ./data/profile_dsg_updown.nc - PROFILE is Profile-id-id - ZZ is z from grid with a little xy (regrid: to Profile DSG grid) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME ZZ - - 1 1 123.1W 41.3N 2.12 13-AUG-2009 00:00 18.00 - 1 1 123.1W 41.3N 4.96 13-AUG-2009 00:00 21.00 - 1 1 123.1W 41.3N 10.15 13-AUG-2009 00:00 26.00 - 1 1 123.1W 41.3N 15.31 13-AUG-2009 00:00 31.00 - 1 1 123.1W 41.3N 20.55 13-AUG-2009 00:00 37.00 - 1 1 123.1W 41.3N 24.97 13-AUG-2009 00:00 41.00 - 1 1 123.1W 41.3N 31.6 13-AUG-2009 00:00 48.00 - 1 1 123.1W 41.3N 33.21 13-AUG-2009 00:00 49.00 - - 2 2 120.4W 44.11N 2.12 13-AUG-2009 12:58 18.38 - 2 2 120.4W 44.11N 3.77 13-AUG-2009 12:58 20.38 - 2 2 120.4W 44.11N 5.82 13-AUG-2009 12:58 22.38 - 2 2 120.4W 44.11N 8.86 13-AUG-2009 12:58 25.38 - 2 2 120.4W 44.11N 11.87 13-AUG-2009 12:58 28.38 - 2 2 120.4W 44.11N 14.88 13-AUG-2009 12:58 31.38 - 2 2 120.4W 44.11N 17.93 13-AUG-2009 12:58 34.38 - 2 2 120.4W 44.11N 20.92 13-AUG-2009 12:58 37.38 - 2 2 120.4W 44.11N 23.5 13-AUG-2009 12:58 39.38 - 2 2 120.4W 44.11N 26.63 13-AUG-2009 12:58 43.38 - 2 2 120.4W 44.11N 30.49 13-AUG-2009 12:58 46.38 - 2 2 120.4W 44.11N 32.27 13-AUG-2009 12:58 48.38 - 2 2 120.4W 44.11N 33.21 13-AUG-2009 12:58 49.38 - - 3 3 121W 38.8N 2.12 12-AUG-2009 00:00 17.85 - 3 3 121W 38.8N 3.77 12-AUG-2009 00:00 19.85 - 3 3 121W 38.8N 5.82 12-AUG-2009 00:00 21.85 - 3 3 121W 38.8N 8.86 12-AUG-2009 00:00 24.85 - 3 3 121W 38.8N 11.87 12-AUG-2009 00:00 27.85 - 3 3 121W 38.8N 14.88 12-AUG-2009 00:00 30.85 - 3 3 121W 38.8N 17.93 12-AUG-2009 00:00 33.85 - 3 3 121W 38.8N 20.92 12-AUG-2009 00:00 36.85 - 3 3 121W 38.8N 23.5 12-AUG-2009 00:00 38.85 - -! Just list a point or two out of the grid. They match the above -list/nohead/x=120.4W/y= 44.11N/z=26.6257/l=1 zz - 43.38 -list/nohead/x=121W/y=38.8/z=14.8822/L=1 zz - 30.85 - - -GO bn_reset bn_dsg_feature_mask -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_feature_mask -GO bn_dsg_feature_mask -! bn_dsg_feature_mask -! 9/4/2018 -! Tests of selecting features via a mask -! PLOT/MASKFEATURE var, mask - -use dsg_cross_prime.nc - -! Mask must be the length of feature-direction axis -! Incoming missing-flag on the mask is handled internally - -let/bad=-99 emask = {1,-99,1} -set data/fmask=emask 1 - -! Mask info listed with SHOW DATA -show data - currently SET data sets: - 1> ./data/dsg_cross_prime.nc (default) - DSG Feature type Trajectory -Mask on features has been set: {1,-99,1} - name title I J K L M N - id id ... ... ... ... 1:3 ... - rowsize Number of Observations for this ... ... ... ... 1:3 ... - lons longitude tot 18 ... ... ... 1:3 ... - lats latitude tot 18 ... ... ... 1:3 ... - sst Temperature tot 18 ... ... ... 1:3 ... - time Centered Time tot 18 ... ... ... 1:3 ... - - -! Mask applied on a listing -list sst - DATA SET: ./data/dsg_cross_prime.nc -Mask on features has been set: {1,-99,1} - ID is Trajectory-id - SST is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME SST - - 1 1000 6W 20S 09-FEB-2017 12:00 24.41 - 1 1000 2E 10S 14-FEB-2017 12:00 25.22 - 1 1000 5W 30N 19-FEB-2017 12:00 25.92 - 1 1000 3E 40N 24-FEB-2017 12:00 28.97 - 1 1000 1E 20S 01-MAR-2017 12:00 28.03 - - 3 3000 15W 15S 10-MAR-2017 12:00 23.41 - 3 3000 5W 25S 11-MAR-2017 12:00 20.77 - 3 3000 1E 35S 12-MAR-2017 12:00 19.97 - 3 3000 5E 45S 13-MAR-2017 12:00 19.05 - 3 3000 10E 55S 14-MAR-2017 12:00 18.27 - -! redefine the mask. Just the act of redefining emask should trigger something. -! for now it doesn't. Use commands to - -let emask = {,1,1} -set data/fmask=emask 1 -list sst - DATA SET: ./data/dsg_cross_prime.nc -Mask on features has been set: {,1,1} - ID is Trajectory-id - SST is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME SST - - 2 2000 70W 15S 02-MAR-2017 12:00 27.77 - 2 2000 20E 20N 03-MAR-2017 12:00 26.91 - 2 2000 30E 10N 04-MAR-2017 12:00 26.07 - 2 2000 60W 15S 05-MAR-2017 12:00 25.08 - 2 2000 50W 20N 06-MAR-2017 12:00 24.01 - 2 2000 10W 10N 07-MAR-2017 12:00 23.53 - 2 2000 50W 15S 08-MAR-2017 12:00 22.64 - 2 2000 5E 20N 09-MAR-2017 12:00 21.64 - - 3 3000 15W 15S 10-MAR-2017 12:00 23.41 - 3 3000 5W 25S 11-MAR-2017 12:00 20.77 - 3 3000 1E 35S 12-MAR-2017 12:00 19.97 - 3 3000 5E 45S 13-MAR-2017 12:00 19.05 - 3 3000 10E 55S 14-MAR-2017 12:00 18.27 - -! Use a new mask-var -let onefeature = {,1,} -set data/fmask=onefeature 1 -list sst - DATA SET: ./data/dsg_cross_prime.nc -Mask on features has been set: {,1,} - ID is Trajectory-id - SST is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME SST - - 2 2000 70W 15S 02-MAR-2017 12:00 27.77 - 2 2000 20E 20N 03-MAR-2017 12:00 26.91 - 2 2000 30E 10N 04-MAR-2017 12:00 26.07 - 2 2000 60W 15S 05-MAR-2017 12:00 25.08 - 2 2000 50W 20N 06-MAR-2017 12:00 24.01 - 2 2000 10W 10N 07-MAR-2017 12:00 23.53 - 2 2000 50W 15S 08-MAR-2017 12:00 22.64 - 2 2000 5E 20N 09-MAR-2017 12:00 21.64 - -! Open more datasets and define masks for them. - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc -set var/units=units pco2 - -let/title="Where Profile is 80,86,87,88" mask = element_index (profile,{80,86,87,88}) - -set data/fmask=mask 2 -show data - currently SET data sets: - 1> ./data/dsg_cross_prime.nc - DSG Feature type Trajectory -Mask on features has been set: {,1,} - name title I J K L M N - id id ... ... ... ... 1:3 ... - rowsize Number of Observations for this ... ... ... ... 1:3 ... - lons longitude tot 18 ... ... ... 1:3 ... - lats latitude tot 18 ... ... ... 1:3 ... - sst Temperature tot 18 ... ... ... 1:3 ... - time Centered Time tot 18 ... ... ... 1:3 ... - - 2> ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc (default) - DSG Feature type Profile -Mask on features has been set: Where Profile is 80,86,87,88 - name title I J K L M N - prof Prof ... ... ... ... 1:21 ... - profile profile ID: Cruise and Station ... ... ... ... 1:21 ... - time Time ... ... ... ... 1:21 ... - latitude Latitude ... ... ... ... 1:21 ... - longitude - Longitude ... ... ... ... 1:21 ... - rowSize Number of Observations for this ... ... ... ... 1:21 ... - PRESS_DB PRESS_DB ... ... tot 373 ... 1:21 ... - PCO2 PCO2 ... ... tot 373 ... 1:21 ... - -set v ul -plot pco2 - - -let/title="Where Longitude < 121W" mask = if longitude lt -121 then 1 - -set v ur -plot pco2 - -use DSG_ERDDAP_pmelTao5daySst.nc - -let/title="Where station is 8s125w, 8s170w, 5n155w, 2s165e" mask = element_index_str (station, {"8s125w", "8s170w", "5n155w", "2s165e"}) - -set data/fmask=mask 3 - -set v lower -set var/title=Temperature/units="Deg C" t_25 -plot/color/thick t_25 - -frame/file=dsg_traj_feature_mask.gif - - -! All the datasets and masks are still in place. - -show data - currently SET data sets: - 1> ./data/dsg_cross_prime.nc - DSG Feature type Trajectory -Mask on features has been set: {,1,} - name title I J K L M N - id id ... ... ... ... 1:3 ... - rowsize Number of Observations for this ... ... ... ... 1:3 ... - lons longitude tot 18 ... ... ... 1:3 ... - lats latitude tot 18 ... ... ... 1:3 ... - sst Temperature tot 18 ... ... ... 1:3 ... - time Centered Time tot 18 ... ... ... 1:3 ... - - 2> ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - DSG Feature type Profile -Mask on features has been set: Where Profile is 80,86,87,88 - name title I J K L M N - prof Prof ... ... ... ... 1:21 ... - profile profile ID: Cruise and Station ... ... ... ... 1:21 ... - time Time ... ... ... ... 1:21 ... - latitude Latitude ... ... ... ... 1:21 ... - longitude - Longitude ... ... ... ... 1:21 ... - rowSize Number of Observations for this ... ... ... ... 1:21 ... - PRESS_DB PRESS_DB ... ... tot 373 ... 1:21 ... - PCO2 PCO2 ... ... tot 373 ... 1:21 ... - - 3> ./data/DSG_ERDDAP_pmelTao5daySst.nc (default) - DSG Feature type Timeseries -Mask on features has been set: Where station is 8s125w, 8s170w, 5n155w, 2s165e - name title I J K L M N - array Array ... ... ... ... 1:70 ... - station Station ... ... ... ... 1:70 ... - wmo_platform_code - WMO Platform Code ... ... ... ... 1:70 ... - longitude - Nominal Longitude ... ... ... ... 1:70 ... - latitude Nominal Latitude ... ... ... ... 1:70 ... - rowSize Number of Observations for this ... ... ... ... 1:70 ... - time Centered Time ... ... ... tot 2376 1:70 ... - depth Depth ... ... ... tot 2376 1:70 ... - T_25 Temperature ... ... ... tot 2376 1:70 ... - QT_5025 Sea Surface Temperature Quality ... ... ... tot 2376 1:70 ... - ST_6025 Sea Surface Temperature Source ... ... ... tot 2376 1:70 ... - str_temp FLOATSTR(T_25, "(F5.2)") ... ... ... tot 2376 1:70 ... - -set data 1 -list sst - DATA SET: ./data/dsg_cross_prime.nc -Mask on features has been set: {,1,} - ID is Trajectory-id - SST is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME SST - - 2 2000 70W 15S 02-MAR-2017 12:00 27.77 - 2 2000 20E 20N 03-MAR-2017 12:00 26.91 - 2 2000 30E 10N 04-MAR-2017 12:00 26.07 - 2 2000 60W 15S 05-MAR-2017 12:00 25.08 - 2 2000 50W 20N 06-MAR-2017 12:00 24.01 - 2 2000 10W 10N 07-MAR-2017 12:00 23.53 - 2 2000 50W 15S 08-MAR-2017 12:00 22.64 - 2 2000 5E 20N 09-MAR-2017 12:00 21.64 - -! Cancel data/FMASK - -cancel data/fmask 2 -show data 2 - currently SET data sets: - 2> ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - DSG Feature type Profile - name title I J K L M N - prof Prof ... ... ... ... 1:21 ... - profile profile ID: Cruise and Station ... ... ... ... 1:21 ... - time Time ... ... ... ... 1:21 ... - latitude Latitude ... ... ... ... 1:21 ... - longitude - Longitude ... ... ... ... 1:21 ... - rowSize Number of Observations for this ... ... ... ... 1:21 ... - PRESS_DB PRESS_DB ... ... tot 373 ... 1:21 ... - PCO2 PCO2 ... ... tot 373 ... 1:21 ... - - -show data 1 - currently SET data sets: - 1> ./data/dsg_cross_prime.nc (default) - DSG Feature type Trajectory -Mask on features has been set: {,1,} - name title I J K L M N - id id ... ... ... ... 1:3 ... - rowsize Number of Observations for this ... ... ... ... 1:3 ... - lons longitude tot 18 ... ... ... 1:3 ... - lats latitude tot 18 ... ... ... 1:3 ... - sst Temperature tot 18 ... ... ... 1:3 ... - time Centered Time tot 18 ... ... ... 1:3 ... - - - -GO bn_reset bn_dsg_repeat_m -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_repeat_m -GO bn_dsg_repeat_m -! bn_dsg_repeat_m.jnl -! Can repeat over M to look at individual features -! 10/3/2018 - - -use dsg_cross_dateline -repeat/m=1:3 (list temp) -!-> REPEAT: M=1 - DATA SET: ./data/dsg_cross_dateline.nc - SUBSET : E (instance): 1 - ID is Trajectory-id - TEMP is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME TEMP - - 1 096U20160108 172E 20S 09-FEB-2017 12:00 28.08 - 1 096U20160108 174W 10S 14-FEB-2017 12:00 28.20 - 1 096U20160108 175E 30N 19-FEB-2017 12:00 29.01 - 1 096U20160108 171W 40N 24-FEB-2017 12:00 29.24 - 1 096U20160108 174W 20S 01-MAR-2017 12:00 29.14 -!-> REPEAT: M=2 - DATA SET: ./data/dsg_cross_dateline.nc - SUBSET : E (instance): 2 - ID is Trajectory-id - TEMP is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME TEMP - - 2 A 2017 01 14 150E 15S 02-MAR-2017 12:00 29.57 - 2 A 2017 01 14 170W 20N 03-MAR-2017 12:00 29.26 - 2 A 2017 01 14 120E 10N 04-MAR-2017 12:00 28.53 -!-> REPEAT: M=3 - DATA SET: ./data/dsg_cross_dateline.nc - SUBSET : E (instance): 3 - ID is Trajectory-id - TEMP is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME TEMP - - 3 09AR20151209 102E 10N 05-MAR-2017 12:00 28.97 - 3 09AR20151209 100E 20N 06-MAR-2017 12:00 28.03 - 3 09AR20151209 123E 30N 07-MAR-2017 12:00 27.77 - 3 09AR20151209 100E 40N 08-MAR-2017 12:00 26.91 - 3 09AR20151209 110E 50N 09-MAR-2017 12:00 26.07 - -plot temp -repeat/m=1:3 (plot/over/nolab/thick/sym=18/siz=`_m*0.1` temp) -!-> REPEAT: M=1 - !-> plot/over/nolab/thick/sym=18/siz=0.1 temp -!-> REPEAT: M=2 - !-> plot/over/nolab/thick/sym=18/siz=0.2 temp -!-> REPEAT: M=3 - !-> plot/over/nolab/thick/sym=18/siz=0.3 temp - -! A time-series with one point previously was an error now plots a point -use DSG_ERDDAP_pmelTao5daySst.nc -repeat/m=30:32 (plot/color=blue/thick t_25) -!-> REPEAT: M=30 -!-> REPEAT: M=31 -!-> REPEAT: M=32 - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d -plot pco2 -repeat/m=2:6:2 (plot/thick/color=blue pco2) -!-> REPEAT: M=2 -!-> REPEAT: M=4 -!-> REPEAT: M=6 - -GO bn_reset bn_dsg_traj_plot -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_traj_plot -GO bn_dsg_traj_plot -! bn_dsg_traj_plot.jnl -! 4/24/2018 ACM -! -! Trajectory plots: -! * Automatically pick up the pen between trajectories -! * If only lon, lat given and it's a dsg trajectory, color-by feature -! * Trajectories which cross the dateline, e.g. longitude lists such as -! {-178, -179, 177} or {354, 355, 3, 1} -! are corrected internally, only when drawing. - -! Set up to mimic fland and basemap behavior -use coads_climatology -let land = if sst[d=1,L=1] then 0 else 1 - -! Picking up the pen between trajectories -! Correcting for crossing the prime meridion or dateline - -use dsg_cross_prime - -! classic method: plot/vs/ribbon with 3 vars. -! This will still work, but no need for the /GAPVAR -! construct of earlier Ferret versions. Also handles -! modulo longitude - -set view upper -plot/vs/ribbon/line/thick/lev=v lons, lats, sst - -! Or, call to just PLOT SST makes the trajectory plot. - -set view lower -plot/vs/ribbon/line/thick/lev=v sst -frame/file=dsg_traj_1.gif -cancel view - -! Overlay on a map - -set view ul -shade/x=-180:180/y=-80:80/pal=gray_light/lev=(1)/nokey/nolab land - -! Note how the longitudes cross the prime meridion within trajectories -use dsg_cross_prime - -list lons - DATA SET: ./data/dsg_cross_prime.nc - ID is Trajectory-id - LONS is longitude (degrees_east) - FEATURE ID LONGITUDE LATITUDE TIME LONS - - 1 1000 6W 20S 09-FEB-2017 12:00 354.0 - 1 1000 2E 10S 14-FEB-2017 12:00 2.0 - 1 1000 5W 30N 19-FEB-2017 12:00 355.0 - 1 1000 3E 40N 24-FEB-2017 12:00 3.0 - 1 1000 1E 20S 01-MAR-2017 12:00 1.0 - - 2 2000 70W 15S 02-MAR-2017 12:00 290.0 - 2 2000 20E 20N 03-MAR-2017 12:00 20.0 - 2 2000 30E 10N 04-MAR-2017 12:00 30.0 - 2 2000 60W 15S 05-MAR-2017 12:00 300.0 - 2 2000 50W 20N 06-MAR-2017 12:00 310.0 - 2 2000 10W 10N 07-MAR-2017 12:00 350.0 - 2 2000 50W 15S 08-MAR-2017 12:00 310.0 - 2 2000 5E 20N 09-MAR-2017 12:00 5.0 - - 3 3000 15W 15S 10-MAR-2017 12:00 345.0 - 3 3000 5W 25S 11-MAR-2017 12:00 355.0 - 3 3000 1E 35S 12-MAR-2017 12:00 1.0 - 3 3000 5E 45S 13-MAR-2017 12:00 5.0 - 3 3000 10E 55S 14-MAR-2017 12:00 10.0 -plot/nolab/over/line/thick/key sst - - -! or overlay land as in "go fland" -! The region is set by the lon/lat data in the dsg file - -set view ur -plot/line/thick/lev=v sst -shade/over/nolab/pal=gray_light/lev=(1)/nokey/nolab land - -! Test longitudes crossing the dateline - -set view ll -shade/x=0:360/y=-80:80/pal=gray_light/lev=(1)/nokey/nolab land - -use dsg_cross_dateline -list lons - DATA SET: ./data/dsg_cross_dateline.nc - ID is Trajectory-id - LONS is longitude (degrees_east) - FEATURE ID LONGITUDE LATITUDE TIME LONS - - 1 096U20160108 172E 20S 09-FEB-2017 12:00 172.0 - 1 096U20160108 174W 10S 14-FEB-2017 12:00 -174.0 - 1 096U20160108 175E 30N 19-FEB-2017 12:00 175.0 - 1 096U20160108 171W 40N 24-FEB-2017 12:00 -171.0 - 1 096U20160108 174W 20S 01-MAR-2017 12:00 -174.0 - - 2 A 2017 01 14 150E 15S 02-MAR-2017 12:00 150.0 - 2 A 2017 01 14 170W 20N 03-MAR-2017 12:00 -170.0 - 2 A 2017 01 14 120E 10N 04-MAR-2017 12:00 120.0 - - 3 09AR20151209 102E 10N 05-MAR-2017 12:00 102.0 - 3 09AR20151209 100E 20N 06-MAR-2017 12:00 100.0 - 3 09AR20151209 123E 30N 07-MAR-2017 12:00 123.0 - 3 09AR20151209 100E 40N 08-MAR-2017 12:00 100.0 - 3 09AR20151209 110E 50N 09-MAR-2017 12:00 110.0 -plot/over/line/thick/pal=ten_by_levels/key=horiz id - -! These contain some wacky longitude values, -1741, 999. -! The algorithm cannot correct and issues a NOTE, but still -! draws the plot. - -set view lr -shade/x=0:360/y=-80:80/pal=gray_light/lev=(1)/nokey/nolab land - -use dsg_cross_dateline_bad.nc -list lons - DATA SET: ./data/dsg_cross_dateline_bad.nc - ID is Trajectory-id - LONS is longitude (degrees_east) - FEATURE ID LONGITUDE LATITUDE TIME LONS - - 1 1000 172E 20S 09-FEB-2017 12:00 172. - 1 1000 174E 10S 14-FEB-2017 12:00 174. - 1 1000 175E 30N 19-FEB-2017 12:00 175. - 1 1000 88E 40N 24-FEB-2017 12:00 -1712. - 1 1000 174W 20S 01-MAR-2017 12:00 -174. - - 2 2000 150E 15S 02-MAR-2017 12:00 150. - 2 2000 170W 20N 03-MAR-2017 12:00 -170. - 2 2000 120E 10N 04-MAR-2017 12:00 120. - - 3 3000 100E 10N 05-MAR-2017 12:00 100. - 3 3000 100E 20N 06-MAR-2017 12:00 100. - 3 3000 81W 30N 07-MAR-2017 12:00 999. - 3 3000 100E 40N 08-MAR-2017 12:00 100. - 3 3000 100E 50N 09-MAR-2017 12:00 100. -plot/over/line/thick/key/pal=ten_by_levels/pal=ten_by_levels id - -frame/file=dsg_traj_2.gif -cancel view - -! Plot a variable colored by feature number,using PLOT/VS/RIBBON -! Use PLOT/VS for plots in other directions than lon/lat trajectories. -! When coloring by ID, the labels on color keys are automatically centered - -use dsg_cross_dateline.nc -set view upper -plot/vs/ribbon/line/thick/pal=ten_by_levels lons, temp, id - -set view lower -plot/vs/ribbon/line/thick/key=hor/pal=ten_by_levels time, temp, id -frame/file=dsg_traj_3.gif - -! Label by any feature-level metadata variable, whether it's numeric, string, -! the ID or something else. Labels drawn at an angle if not enough space along key. - -cancel data/all -cancel view - -use dsg_cross_dateline -set view ul -plot/thick/pal=ten_by_levels id - -use dsg_string_id -show data - currently SET data sets: - 1> ./data/dsg_cross_dateline.nc - DSG Feature type Trajectory - name title I J K L M N - id id ... ... ... ... 1:3 ... - rowsize Number of Obs ... ... ... ... 1:3 ... - lons longitude tot 13 ... ... ... 1:3 ... - lats latitude tot 13 ... ... ... 1:3 ... - temp Temperature tot 13 ... ... ... 1:3 ... - time Centered Time tot 13 ... ... ... 1:3 ... - - 2> ./data/dsg_string_id.nc (default) - DSG Feature type Trajectory - name title I J K L M N - id Institution ... ... ... ... 1:3 ... - institution - ... ... ... ... 1:3 ... - rowsize Number of Obs ... ... ... ... 1:3 ... - lons longitude tot 13 ... ... ... 1:3 ... - lats latitude tot 13 ... ... ... 1:3 ... - temp Temperature tot 13 ... ... ... 1:3 ... - time Centered Time tot 13 ... ... ... 1:3 ... - -set view ll -plot/line/thick/pal=ten_by_levels id - -define view/x=0.6:0.9/y=0.5:1 upnarrow - -set view upnarrow -plot/nolab/line/thick/pal=ten_by_levels/key=horiz institution -set v lr -plot/nolab/line/thick/pal=ten_by_levels rowsize - -frame/file=dsg_traj_4.gif - -GO bn_reset bn_regrid_from_dsg -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_from_dsg -GO bn_regrid_from_dsg -! bn_regrid_from_dsg.jnl - -! test regridding from a DSG obs variable to a uniform orthogonal grid - -! DSGTBD: as of 5/2017 there is more to test. This tests only -! - algebra involving the result gridded variable with other grids -! (this grid still possesses the special E axis of the DSG) -! -! 8/19 adding tests for -! Trajectory-to-grid requests (not implemented, return an error message) -! Profile dsg regrid to common z axis. - -use DSG_ERDDAP_pmelTao5daySst.nc - -define axis/t="15-jan-2017:12:00":21-apr-2017:10/unit=days tuniform ! hit L=1 - -! basic, no constraints -list/e=1/t=15-jan-2017:20-jan-2017 t_25, L[g=t_25] ! note result on first tstep - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : TIME: 15-JAN-2017 12:00 to 20-JAN-2017 00:00 - E (instance): 1 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) - L is L (axis FEATURE_T) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 L - - 1 0n0e 0E 0 1 15-JAN-2017 12:00 28.59 1.00 -list/prec=6 t_25[gt=tuniform] - VARIABLE : Sea Surface Temperature (degree_C) - regrid: 10 day on T - DATA SET : TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - FILENAME : DSG_ERDDAP_pmelTao5daySst.nc - SUBSET : 11 by 70 points (TIME-E (instance)) - 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 - 1 2 3 4 5 6 7 8 9 10 11 - 1 / 1: 28.5920 28.7760 28.7420 28.7600 29.1500 29.2140 29.8120 29.6185 29.6332 29.2128 .... - 2 / 2: 27.7240 28.7060 28.4840 28.1220 28.1340 28.3160 29.3875 29.5972 29.0836 28.7504 .... - 3 / 3: 25.4366 23.7251 26.4731 26.6892 .... 26.1460 27.6172 .... .... .... .... - 4 / 4: 24.8498 24.2374 25.3987 26.1627 26.2862 25.9022 26.5002 26.7776 27.2821 27.6250 .... - 5 / 5: 25.2489 25.4793 25.5672 26.0399 25.8833 26.0190 26.4824 26.8117 27.0898 27.3055 .... - 6 / 6: 25.1945 25.9425 25.7298 26.3807 26.2529 26.4760 27.0917 26.6732 26.8219 27.9954 .... - 7 / 7: 30.3540 30.5840 30.3660 30.4500 30.4400 30.6440 30.2680 29.5260 30.0400 30.1984 .... - 8 / 8: 30.3981 30.3727 30.1519 29.8793 29.8631 28.5404 28.2173 28.4462 28.7372 28.7229 .... - 9 / 9: 27.0630 26.9899 26.2345 26.9052 26.6382 27.1968 27.0887 26.9299 27.2341 27.7690 .... - 10 / 10: 27.8860 28.1380 27.7960 27.9540 28.5480 27.8580 28.2600 28.8528 28.4828 29.1004 .... - 11 / 11: 28.2540 28.8200 29.0100 28.9660 28.4640 29.5260 29.9500 30.2040 30.0756 30.1932 .... - 12 / 12: 28.2440 28.9260 28.8960 29.2260 29.0820 29.5260 30.1320 29.9952 29.7636 29.6692 .... - 13 / 13: .... .... .... .... .... 29.4160 29.4840 29.5608 29.6056 29.6308 .... - 14 / 14: 25.7181 24.9521 27.3566 28.2847 26.9854 26.8104 27.5947 27.2685 .... .... .... - 15 / 15: 27.9700 28.7060 28.5380 28.8880 28.3260 29.5140 29.7980 30.1564 30.2924 30.2900 .... - 16 / 16: 28.2400 29.0100 29.4720 29.1920 29.0300 29.4460 29.7920 30.3380 30.1608 30.3372 .... - 17 / 17: 28.3020 28.7020 28.7600 29.0340 29.0860 29.1060 29.9360 29.4824 29.5251 29.5528 .... - 18 / 18: .... .... .... .... .... .... 27.5080 27.8176 27.7492 27.6840 .... - 19 / 19: 25.4760 24.9180 24.7560 23.7380 23.4340 23.6860 24.2560 23.7380 24.3824 24.5140 .... - 20 / 20: 27.6960 27.6840 27.7520 27.8120 27.6000 28.3040 28.4620 28.5960 29.8980 29.5628 .... - 21 / 21: 28.2420 28.0200 28.6620 28.5680 28.7900 28.3020 27.9820 28.2404 28.1108 27.8932 .... - 22 / 22: 28.5980 28.5820 28.1380 27.9440 28.3150 28.2040 28.4620 28.5020 28.3712 .... .... - 23 / 23: 27.4240 27.3260 27.2360 27.2820 27.5540 27.7660 27.6840 28.1072 28.1084 28.3300 .... - 24 / 24: 26.1660 27.0920 26.9700 26.9160 27.8820 28.5800 28.5680 28.7440 29.5280 29.0300 .... - 25 / 25: 27.6800 27.9160 27.8100 27.9420 28.0633 28.2200 28.2260 28.2480 28.1776 28.2492 .... - 26 / 26: 24.5840 24.4620 24.2280 23.9640 23.7660 23.6160 23.5150 23.4920 24.0564 24.7936 .... - 27 / 27: .... .... 21.5720 21.8760 21.5700 21.5220 21.2980 21.0720 21.1256 22.0844 .... - 28 / 28: .... .... .... 26.4567 27.1763 26.3552 27.6875 28.1823 28.2683 26.9952 .... - 29 / 29: .... 26.5156 26.7506 26.0196 27.1667 26.5549 27.2769 26.9398 27.1434 27.5755 .... - 30 / 30: 25.7479 26.4353 26.5793 26.7931 27.2645 27.5662 27.3482 27.3335 27.1543 27.5070 .... - 31 / 31: 26.9922 27.4433 .... .... .... .... .... .... .... .... .... - 32 / 32: 27.7854 .... .... .... .... .... .... .... .... .... .... - 33 / 33: 25.5415 25.2389 26.3913 26.7600 27.7948 27.7852 27.9831 28.4924 28.2647 28.1384 .... - 34 / 34: 26.2452 24.9461 25.9084 26.5116 26.9698 27.5137 27.6385 28.2959 28.6393 29.1112 .... - 35 / 35: .... .... 26.3495 26.7855 26.2057 26.8354 27.4080 28.2481 27.9967 28.1523 .... - 36 / 36: 25.8985 25.9715 26.2936 27.0389 26.8928 27.2291 27.9907 27.9069 27.5886 28.7029 .... - 37 / 37: 30.2623 30.4153 30.0306 30.0713 29.7406 29.4690 28.8121 29.2035 29.3607 29.1690 .... - 38 / 38: 27.8394 27.1035 27.5206 27.4739 27.1443 27.7578 27.8452 27.8623 28.3230 28.7562 .... - 39 / 39: 28.9938 28.7350 28.1802 27.5728 28.5446 28.1318 27.5880 .... .... .... .... - 40 / 40: 28.4340 28.3080 28.2180 28.1240 28.4220 28.9475 28.8440 28.3980 28.9268 29.4060 .... - 41 / 41: .... .... .... .... .... 29.1375 29.6880 30.1492 30.3072 29.6312 .... - 42 / 42: 28.0540 28.1500 28.3640 29.4500 28.7240 28.8540 29.4620 30.1900 30.1239 30.2152 .... - 43 / 43: 28.1040 28.3540 28.5080 29.0960 29.0980 28.9320 30.0120 29.7232 30.0744 29.9796 .... - 44 / 44: .... .... .... 27.2496 27.4631 27.3657 27.7322 27.9366 28.5746 28.4517 .... - 45 / 45: .... 26.7640 27.2011 26.5482 27.0442 27.2886 27.6622 27.6954 27.8331 27.8372 .... - 46 / 46: 27.3683 27.3450 27.6267 27.0179 .... .... .... .... .... .... .... - 47 / 47: 29.9147 29.6577 29.7198 29.8171 29.7740 29.4614 29.4949 29.4805 29.2594 29.2837 .... - 48 / 48: 28.2716 27.8597 27.7603 28.6530 28.2802 28.4988 28.5393 28.3882 28.2995 28.3427 .... - 49 / 49: 28.7423 28.6722 28.4748 28.6287 28.5295 28.7298 28.6729 28.6525 28.6364 28.5579 .... - 50 / 50: 26.2561 25.9404 26.8452 27.4136 27.9795 28.2546 28.1749 28.5663 28.6967 28.8996 .... - 51 / 51: 27.1730 26.7001 26.9911 27.5523 28.3286 28.9153 28.0914 29.0374 29.3040 29.4568 .... - 52 / 52: 27.3951 27.5777 28.0065 .... .... .... .... .... .... .... .... - 53 / 53: 29.1287 29.1422 28.8362 28.6983 28.8934 28.6024 28.8819 29.5393 29.2284 29.4523 .... - 54 / 54: 29.3837 29.2502 29.0386 28.4461 28.9853 29.4221 28.6646 29.4757 29.3935 29.5197 .... - 55 / 55: 28.7000 28.5540 28.1400 28.8620 28.8480 29.0040 28.8780 28.7688 29.1020 29.1036 .... - 56 / 56: .... .... .... .... .... .... 28.3840 28.4532 28.5500 28.7580 .... - 57 / 57: 28.6440 28.5380 28.0740 28.7200 29.0040 29.8660 30.1400 29.5188 29.6416 29.6120 .... - 58 / 58: 27.1523 27.1359 27.2200 27.1974 27.2224 27.3466 27.3929 27.6526 28.2239 28.3139 .... - 59 / 59: 29.3120 28.8040 28.7220 28.7660 29.1060 29.0440 28.9320 28.9468 28.7000 29.1040 .... - 60 / 60: 28.4406 28.3962 28.2732 28.1998 28.3050 28.5506 28.4365 28.4274 28.4004 28.3645 .... - 61 / 61: 28.2375 28.1260 28.1160 28.4840 28.5560 28.9700 29.1880 29.3680 30.3756 29.6456 .... - 62 / 62: 26.0229 26.6641 26.6652 26.7096 27.5338 .... .... .... .... .... .... - 63 / 63: 27.1788 26.9122 27.3239 28.1166 28.1861 28.0019 28.3168 28.2539 28.4002 28.5951 .... - 64 / 64: 29.3147 29.1193 28.8509 28.8443 29.1033 29.2192 29.7817 29.6486 29.7789 30.0640 .... - 65 / 65: 30.3589 30.2227 30.3216 30.0064 29.8312 30.0418 30.2157 30.0931 30.0337 30.1482 .... - 66 / 66: 29.8820 29.7754 29.4475 29.6344 29.4614 29.7118 29.6645 29.6100 29.6053 29.7648 .... - 67 / 67: 30.2629 30.0338 29.8520 29.8723 30.0231 30.1067 30.1091 29.9767 29.7343 29.8142 .... - 68 / 68: 28.1640 27.5240 27.7300 28.8980 28.9840 28.4060 28.6680 29.0300 29.7376 29.5444 .... - 69 / 69: 28.9520 28.7580 28.8980 28.9860 29.2440 29.4020 29.0740 28.7880 28.9672 28.9272 .... - 70 / 70: 27.1724 26.5182 26.4219 27.2217 27.4353 27.4308 27.4538 27.1602 27.4573 27.5447 .... -canc mem/all - -! compute only a subset of the gridded result -set mode diag -list/prec=6/e=29:34/l=3:7 t_25[gt=tuniform] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL - dealloc dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL - allocate dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 3 7 M: 29 34 N: -999 -999 - allocate dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL - strip regrid on T: T_25 --> (G175) @LIN - reading T_25 M:483 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 2376 M: -999 -999 N: -999 -999 - regrid T_25 M:447 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 3 7 M: 29 34 N: -999 -999 - dealloc dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL - VARIABLE : Sea Surface Temperature (degree_C) - regrid: 10 day on T - DATA SET : TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - FILENAME : DSG_ERDDAP_pmelTao5daySst.nc - SUBSET : 5 by 6 points (TIME-E (instance)) - 2017 2017 2017 2017 2017 - 3 4 5 6 7 - 29 / 29: 26.7506 26.0196 27.1667 26.5549 27.2769 - 30 / 30: 26.5793 26.7931 27.2645 27.5662 27.3482 - 31 / 31: .... .... .... .... .... - 32 / 32: .... .... .... .... .... - 33 / 33: 26.3913 26.7600 27.7948 27.7852 27.9831 - 34 / 34: 25.9084 26.5116 26.9698 27.5137 27.6385 -canc mem/all - dealloc dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL - -DELETE T_25 M:447 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 3 7 M: 29 34 N: -999 -999 - -DELETE T_25 M:483 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 2376 M: -999 -999 N: -999 -999 - -! confirm cache hits are occuring -load t_25[gt=tuniform] - getgrid EX#1 C: 5 dset: 1 I: 1 1 J: 1 1 K: 1 1 L: 1 1 M: 1 1 N: 1 1 - allocate dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL - dealloc dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL - allocate dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL - eval EX#1 C: 4 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 11 M: 1 70 N: -999 -999 - allocate dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL - strip regrid on T: T_25 --> (G175) @LIN - reading T_25 M:483 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 2376 M: -999 -999 N: -999 -999 - regrid T_25 M:447 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 11 M: 1 70 N: -999 -999 - dealloc dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL -list/prec=6/e=29:34/l=5:8 t_25[gt=tuniform] - strip limits reconciliation : EX#1 - eval EX#1 C: 5 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 5 8 M: 29 34 N: -999 -999 - allocate dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL - found T_25 M:447 dset: 1 I: -999 -999 J: -999 -999 K: -999 -999 L: 1 11 M: 1 70 N: -999 -999 - dealloc dynamic grid (G175) NORMAL NORMAL NORMAL TUNIFORM FEATURES NORMAL - VARIABLE : Sea Surface Temperature (degree_C) - regrid: 10 day on T - DATA SET : TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - FILENAME : DSG_ERDDAP_pmelTao5daySst.nc - SUBSET : 4 by 6 points (TIME-E (instance)) - 2017 2017 2017 2017 - 5 6 7 8 - 29 / 29: 27.1667 26.5549 27.2769 26.9398 - 30 / 30: 27.2645 27.5662 27.3482 27.3335 - 31 / 31: .... .... .... .... - 32 / 32: .... .... .... .... - 33 / 33: 27.7948 27.7852 27.9831 28.4924 - 34 / 34: 26.9698 27.5137 27.6385 28.2959 - -DELETE T_25 M:412 dset: 1 I: 5 8 J: 29 34 K: -999 -999 L: -999 -999 M: -999 -999 N: -999 -999 -set mode/last diag - -! now some operations where the numerical results are apparent -! to confirm that results are right -define axis/t="1-apr-2017:12:00":15-apr-2017:1/unit=days tapril -LET feature_l = 0*t_25 + L ! grid of L implicit, as with classic grids -list/e=29:34/t=1-apr-2017:15-apr-2017 feature_l ! a chunk from the middle - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : TIME: 01-APR-2017 00:00 to 15-APR-2017 00:00 - E (instance): 29 to 34 - STATION is Timeseries-id - FEATURE_L is 0*T_25 + L - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME FEATURE_L - - 29 2n140w 140W 2N 1 01-APR-2017 12:00 33.00 - 29 2n140w 140W 2N 1 06-APR-2017 12:00 34.00 - 29 2n140w 140W 2N 1 11-APR-2017 12:00 35.00 - - 30 2n155w 155W 2N 1 01-APR-2017 12:00 33.00 - 30 2n155w 155W 2N 1 06-APR-2017 12:00 34.00 - 30 2n155w 155W 2N 1 11-APR-2017 12:00 35.00 - - 33 2s110w 110W 2S 1 01-APR-2017 12:00 33.00 - 33 2s110w 110W 2S 1 06-APR-2017 12:00 34.00 - 33 2s110w 110W 2S 1 11-APR-2017 12:00 35.00 - - 34 2s125w 125W 2S 1 01-APR-2017 12:00 33.00 - 34 2s125w 125W 2S 1 06-APR-2017 12:00 34.00 - 34 2s125w 125W 2S 1 11-APR-2017 12:00 35.00 -list/e=29:34 feature_l[gt=tapril] - VARIABLE : 0*T_25 + L - regrid: 1 day on T - DATA SET : TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - FILENAME : DSG_ERDDAP_pmelTao5daySst.nc - SUBSET : 15 by 6 points (TIME-E (instance)) - 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - 29 / 29: 33.00 33.20 33.40 33.60 33.80 34.00 34.20 34.40 34.60 34.80 35.00 35.20 35.40 35.60 35.80 - 30 / 30: 33.00 33.20 33.40 33.60 33.80 34.00 34.20 34.40 34.60 34.80 35.00 35.20 35.40 35.60 35.80 - 31 / 31: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 32 / 32: .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... - 33 / 33: 33.00 33.20 33.40 33.60 33.80 34.00 34.20 34.40 34.60 34.80 35.00 35.20 35.40 35.60 35.80 - 34 / 34: 33.00 33.20 33.40 33.60 33.80 34.00 34.20 34.40 34.60 34.80 35.00 35.20 35.40 35.60 35.80 - -! TSEQUENCE as an easy way to get out of DSG-ness -! just proving that it works at this stage ... -stat TSEQUENCE(t_25) - - TSEQUENCE(T_25) - X: N/A - Y: N/A - Z: N/A - T: 0.5 to 2376.5 - E: N/A - F: N/A - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - - Total # of data points: 2376 (1*1*1*2376*1*1) - # flagged as bad data: 64 - Minimum value: 20.892 - Maximum value: 30.774 - Mean value: 28.185 (unweighted average) - Standard deviation: 1.5837 -stat TSEQUENCE(T[g=t_25]) - - TSEQUENCE(T[G=T_25]) - X: N/A - Y: N/A - Z: N/A - T: 0.5 to 2376.5 - E: N/A - F: N/A - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - - Total # of data points: 2376 (1*1*1*2376*1*1) - # flagged as bad data: 0 - Minimum value: 1.4844816E+09 - Maximum value: 1.492776E+09 - Mean value: 1.48890775E+09 (unweighted average) - Standard deviation: 1.9541E+06 - -! DSGTBD: a good benchmark test/demo: -! - sort and de-dup the T values -! - create a time axis that has all of the tsteps of the DSG -! - regrid to this time axis -CANCEL DATA/ALL -CANCEL VAR/ALL - -! intentional errors -! Trajectory-to-gridded not implemented at this time. Return an error - -use sail_2019.nc -define axis/t=1-may-2019:31-may-2019:31/edges/units=days time_all -define axis/x=-168:-165:0.2/units=degrees_east xreg -define axis/y=54:57:0.2/units=degrees_north yreg -define grid/x=xreg/y=yreg/t=time_all grid_reg - -let reg_var = x[gx=xreg] + 0*y[gy=yreg] + 0*t[gt=time_all] - -set mode ignore -load TEMP_CTD_RBR_MEAN[d=1,g=reg_var] - -cancel mode ignore - -! Profile to fixed z axis - -use profile_dsg2 -list pot_temp_degc - DATA SET: ./data/profile_dsg2.nc - PROFILE is Profile-id-id - POT_TEMP_DEGC is pot_temp_degc - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME POT_TEMP_DEGC - - 1 1 123.1W 41.3N 33.2111 13-AUG-2009 00:00 8.65 - 1 1 123.1W 41.3N 31.5953 13-AUG-2009 00:00 8.65 - 1 1 123.1W 41.3N 24.9692 13-AUG-2009 00:00 ... - 1 1 123.1W 41.3N 20.5466 13-AUG-2009 00:00 8.97 - 1 1 123.1W 41.3N 15.312 13-AUG-2009 00:00 9.05 - 1 1 123.1W 41.3N 10.1546 13-AUG-2009 00:00 9.46 - 1 1 123.1W 41.3N 4.9567 13-AUG-2009 00:00 10.61 - 1 1 123.1W 41.3N 2.12 13-AUG-2009 00:00 11.47 - - 2 2 120.4W 44.11N 33.2111 13-AUG-2009 12:58 ... - 2 2 120.4W 44.11N 32.2686 13-AUG-2009 12:58 ... - 2 2 120.4W 44.11N 30.491 13-AUG-2009 12:58 8.83 - 2 2 120.4W 44.11N 26.6257 13-AUG-2009 12:58 8.83 - 2 2 120.4W 44.11N 23.495 13-AUG-2009 12:58 9.44 - 2 2 120.4W 44.11N 20.9152 13-AUG-2009 12:58 9.59 - 2 2 120.4W 44.11N 17.9293 13-AUG-2009 12:58 11.03 - 2 2 120.4W 44.11N 14.8822 13-AUG-2009 12:58 11.38 - 2 2 120.4W 44.11N 11.8737 13-AUG-2009 12:58 11.88 - 2 2 120.4W 44.11N 8.8551 13-AUG-2009 12:58 12.15 - 2 2 120.4W 44.11N 5.823 13-AUG-2009 12:58 12.68 - 2 2 120.4W 44.11N 3.7747 13-AUG-2009 12:58 13.90 - 2 2 120.4W 44.11N 2.12 13-AUG-2009 12:58 14.72 - - 3 3 121W 38.8N 23.495 12-AUG-2009 00:00 8.83 - 3 3 121W 38.8N 20.9152 12-AUG-2009 00:00 8.63 - 3 3 121W 38.8N 17.9293 12-AUG-2009 00:00 ... - 3 3 121W 38.8N 14.8822 12-AUG-2009 00:00 ... - 3 3 121W 38.8N 11.8737 12-AUG-2009 00:00 15.86 - 3 3 121W 38.8N 8.8551 12-AUG-2009 00:00 16.20 - 3 3 121W 38.8N 5.823 12-AUG-2009 00:00 16.47 - 3 3 121W 38.8N 3.7747 12-AUG-2009 00:00 16.81 - 3 3 121W 38.8N 2.12 12-AUG-2009 00:00 16.81 - -! Define a regular z axis -define axis/z=2:34:2/units=m/depth zreg - -! Sanity check - regrid the depth variable should reproduce the reg-axis depths -list/order=ez/pre=6 depth[gz=zreg] - VARIABLE : DEPTH_M (m) - regrid: 2 m on Z - FILENAME : profile_dsg2.nc - SUBSET : 3 by 17 points (E (instance)-DEPTH (m)) - 1 2 3 - 1 2 3 - 2 / 1: .... .... .... - 4 / 2: 4.0000 4.0000 4.0000 - 6 / 3: 6.0000 6.0000 6.0000 - 8 / 4: 8.0000 8.0000 8.0000 - 10 / 5: 10.0000 10.0000 10.0000 - 12 / 6: 12.0000 12.0000 12.0000 - 14 / 7: 14.0000 14.0000 14.0000 - 16 / 8: 16.0000 16.0000 16.0000 - 18 / 9: 18.0000 18.0000 18.0000 - 20 / 10: 20.0000 20.0000 20.0000 - 22 / 11: 22.0000 22.0000 22.0000 - 24 / 12: 24.0000 24.0000 .... - 26 / 13: 26.0000 26.0000 .... - 28 / 14: 28.0000 28.0000 .... - 30 / 15: 30.0000 30.0000 .... - 32 / 16: 32.0000 32.0000 .... - 34 / 17: .... .... .... - -! Regrid temperature -list/order=ez/pre=6 pot_temp_degc[gz=zreg] - VARIABLE : pot_temp_degc - regrid: 2 m on Z - FILENAME : profile_dsg2.nc - SUBSET : 3 by 17 points (E (instance)-DEPTH (m)) - 1 2 3 - 1 2 3 - 2 / 1: .... .... .... - 4 / 2: 10.8973 13.7676 16.7763 - 6 / 3: 10.3750 12.6446 16.4537 - 8 / 4: 9.9336 12.2993 16.2778 - 10 / 5: 9.4922 12.0474 16.0736 - 12 / 6: 9.3105 11.8557 .... - 14 / 7: 9.1505 11.5246 .... - 16 / 8: 9.0359 11.2492 .... - 18 / 9: 9.0076 10.9918 .... - 20 / 10: 8.9793 10.0322 .... - 22 / 11: .... 9.5277 8.7149 - 24 / 12: .... 9.3398 .... - 26 / 13: .... 8.9528 .... - 28 / 14: .... 8.8317 .... - 30 / 15: .... 8.8317 .... - 32 / 16: 8.6517 .... .... - 34 / 17: .... .... .... - -list/order=ez/pre=6/z=10:26 pot_temp_degc[gz=zreg] - VARIABLE : pot_temp_degc - regrid: 2 m on Z - FILENAME : profile_dsg2.nc - SUBSET : 3 by 9 points (E (instance)-DEPTH (m)) - 1 2 3 - 1 2 3 - 10 / 5: 9.4922 12.0474 16.0736 - 12 / 6: 9.3105 11.8557 .... - 14 / 7: 9.1505 11.5246 .... - 16 / 8: 9.0359 11.2492 .... - 18 / 9: 9.0076 10.9918 .... - 20 / 10: 8.9793 10.0322 .... - 22 / 11: .... 9.5277 8.7149 - 24 / 12: .... 9.3398 .... - 26 / 13: .... 8.9528 .... - - - -go bn_reset bn_dsg_use_feature -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_use_feature -GO bn_dsg_use_feature -! bn_dsg_use_feature -! Tests of use/FEATURE= -! 7/2018 Save a plot -! 9/2018 Allow USE/Feature= on open datasets. If the new -! feature type will work for the dataset, it's re-initialized. - -! This dataset has featuretype=Trajectory but it also has a time -! coordinate variable. It can be treated as a timeseries dataset - -use dsg_cross_dateline.nc -! SHOW DATA/FULL lists more details and for DSG data adds region info -show data/full - currently SET data sets: - 1> ./data/dsg_cross_dateline.nc (default) - - DSG Feature type Trajectory - name title I J K L M N - id id ... ... ... ... 1:3 ... - Data type = TEXT - on grid GTP1 with -1.E+34 & NaN for missing data - E=0.5:3.5 - rowsize Number of Obs ... ... ... ... 1:3 ... - on grid GTP1 with -1.E+34 for missing data - E=0.5:3.5 - lons longitude tot 13 ... ... ... 1:3 ... - degrees_east on grid GTP2 with -1.E+34 for missing data - X=171.46E(-188.54):170.46W(189.54) E=0.5:3.5 - lats latitude tot 13 ... ... ... 1:3 ... - degrees_north on grid GTP2 with -1.E+34 for missing data - X=171.46E(-188.54):170.46W(189.54) E=0.5:3.5 - temp Temperature tot 13 ... ... ... 1:3 ... - Degrees C on grid GTP2 with -1.E+34 for missing data - X=171.46E(-188.54):170.46W(189.54) E=0.5:3.5 - time Centered Time tot 13 ... ... ... 1:3 ... - seconds since 1970-01-01T00:00:00Z on grid GTP2 with NaN & -1.E+34 for missing data - X=171.46E(-188.54):170.46W(189.54) E=0.5:3.5 - - longitude range: 174W(-174) to 175E - latitude range: 20S to 50N - - -! plots as a set of paths -set v upper -plot/thick/title="native trajectories" temp - -! OR, look at as a timeseries. Can specify this change on an open dataset -use/feature=timeseries 1 -show data/full - currently SET data sets: - 1> ./data/dsg_cross_dateline.nc (default) - - DSG Feature type Timeseries - name title I J K L M N - id id ... ... ... ... 1:3 ... - Data type = TEXT - on grid GTP1 with -1.E+34 & NaN for missing data - E=0.5:3.5 - rowsize Number of Obs ... ... ... ... 1:3 ... - on grid GTP1 with -1.E+34 for missing data - E=0.5:3.5 - lons longitude ... ... ... tot 13 1:3 ... - degrees_east on grid GTP2 with -1.E+34 for missing data - E=0.5:3.5 - lats latitude ... ... ... tot 13 1:3 ... - degrees_north on grid GTP2 with -1.E+34 for missing data - E=0.5:3.5 - temp Temperature ... ... ... tot 13 1:3 ... - Degrees C on grid GTP2 with -1.E+34 for missing data - E=0.5:3.5 - time Centered Time ... ... ... tot 13 1:3 ... - seconds since 1970-01-01T00:00:00Z on grid GTP2 with NaN & -1.E+34 for missing data - E=0.5:3.5 - - longitude range: 174W(-174) to 175E - latitude range: 20S to 50N - time range: 15-JAN-2017 12:00 to 14-MAR-2017 12:00 - - -! plots as a set of timeseries -set v lower -plot/thick/title="With /feature=timeseries" temp - -frame/file=dsg_use_feature.gif - -cancel data/all - -! use/feature with its native featuretype is no-op - -use/feature=Trajectory dsg_cross_dateline.nc -show data - currently SET data sets: - 1> ./data/dsg_cross_dateline.nc (default) - DSG Feature type Trajectory - name title I J K L M N - id id ... ... ... ... 1:3 ... - rowsize Number of Obs ... ... ... ... 1:3 ... - lons longitude tot 13 ... ... ... 1:3 ... - lats latitude tot 13 ... ... ... 1:3 ... - temp Temperature tot 13 ... ... ... 1:3 ... - time Centered Time tot 13 ... ... ... 1:3 ... - - -! use/feature=none ignores DSG attributes and treats it as -! a classic gridded file - -use/feature=none dsg_cross_dateline.nc -show data - currently SET data sets: - 1> ./data/dsg_cross_dateline.nc (default) - name title I J K L M N - id id ... ... ... ... 1:3 ... - rowsize Number of Obs ... ... ... ... 1:3 ... - lons longitude 1:13 ... ... ... ... ... - lats latitude 1:13 ... ... ... ... ... - temp Temperature 1:13 ... ... ... ... ... - time Centered Time 1:13 ... ... ... ... ... - - -! intentional errors: -! This is an error: there is no depth coordinate data - -cancel data/all -set mode ignore -use/feature=profile dsg_cross_dateline.nc - -! A timeseries dataset can't be used as a trajectory (unless -! there were lon/lat along the obs axis) - -use DSG_ERDDAP_pmelTao5daySst -show data - currently SET data sets: - 1> ./data/DSG_ERDDAP_pmelTao5daySst.nc (default) - DSG Feature type Timeseries - name title I J K L M N - array Array ... ... ... ... 1:70 ... - station Station ... ... ... ... 1:70 ... - wmo_platform_code - WMO Platform Code ... ... ... ... 1:70 ... - longitude - Nominal Longitude ... ... ... ... 1:70 ... - latitude Nominal Latitude ... ... ... ... 1:70 ... - rowSize Number of Observations for this ... ... ... ... 1:70 ... - time Centered Time ... ... ... tot 2376 1:70 ... - depth Depth ... ... ... tot 2376 1:70 ... - T_25 Sea Surface Temperature ... ... ... tot 2376 1:70 ... - QT_5025 Sea Surface Temperature Quality ... ... ... tot 2376 1:70 ... - ST_6025 Sea Surface Temperature Source ... ... ... tot 2376 1:70 ... - str_temp FLOATSTR(T_25, "(F5.2)") ... ... ... tot 2376 1:70 ... - - -! This is an error -use/feature=trajectory DSG_ERDDAP_pmelTao5daySst - -! but the dataset is still open from the earlier initializatin -show data - currently SET data sets: - 1> ./data/DSG_ERDDAP_pmelTao5daySst.nc (default) - DSG Feature type Timeseries - name title I J K L M N - array Array ... ... ... ... 1:70 ... - station Station ... ... ... ... 1:70 ... - wmo_platform_code - WMO Platform Code ... ... ... ... 1:70 ... - longitude - Nominal Longitude ... ... ... ... 1:70 ... - latitude Nominal Latitude ... ... ... ... 1:70 ... - rowSize Number of Observations for this ... ... ... ... 1:70 ... - time Centered Time ... ... ... tot 2376 1:70 ... - depth Depth ... ... ... tot 2376 1:70 ... - T_25 Sea Surface Temperature ... ... ... tot 2376 1:70 ... - QT_5025 Sea Surface Temperature Quality ... ... ... tot 2376 1:70 ... - ST_6025 Sea Surface Temperature Source ... ... ... tot 2376 1:70 ... - str_temp FLOATSTR(T_25, "(F5.2)") ... ... ... tot 2376 1:70 ... - - -cancel data/all - -! Intentionally incomplete files. These are rejected as a DSG -! coaching suggests setting /feature=none - -! Missing a latitude coordinate. -use dsg_bad_coord -sh dat - currently SET data sets: -can dat/all - -! Missing the attribute on the RowSize variable -use dsg_bad_atts1 -sh dat - currently SET data sets: -can dat/all - -! Missing the attribute on the feature-id variable -use dsg_bad_atts2 -sh dat - currently SET data sets: - -can dat/all - - -set mode /last ignore - -! Multiple variables with an axis attribute and units of lon/ lat. -! Here lon and lon360 variables - using the wrong one may be harmless -! the lat and yindex variables are different, so the grid will be wrong. -! This is handled as a warning. - -use dsg_multi_coord - -! lats is latitude values, but yindex got used for latitude -list sst, lons, lon360, yindex, lats - DATA SET: ./data/dsg_multi_coord.nc - ID is Trajectory-id - SST is Temperature (Degrees C) - LONS is longitude (degrees_east) - LON360 is longitude 360 (degrees_east) - YINDEX is YINDEX (degrees_north) - LATS is latitude (degrees_north) - FEATURE ID LONGITUDE LATITUDE TIME SST LONS LON360 YINDEX LATS - - 1 1000 8W 1N 10-JAN-1985 04:00 24.41 -8.00 352.0 1.00 -20.00 - 1 1000 6W 2N 13-JAN-1985 01:30 25.22 -6.00 354.0 2.00 -10.00 - 1 1000 5W 3N 16-JAN-1985 21:30 25.92 -5.00 355.0 3.00 30.00 - 1 1000 3E 4N 18-JAN-1985 23:30 28.97 3.00 3.0 4.00 40.00 - 1 1000 1E 5N 24-JAN-1985 18:30 28.03 1.00 1.0 5.00 -20.00 - - 2 2000 70W 6N 30-MAR-1985 00:05 27.77 -70.00 290.0 6.00 -15.00 - 2 2000 20E 7N 07-APR-1985 06:02 26.91 20.00 20.0 7.00 20.00 - 2 2000 30E 8N 18-APR-1985 06:02 26.07 30.00 30.0 8.00 10.00 - 2 2000 60W 9N 05-AUG-1985 04:22 25.08 -60.00 300.0 9.00 -15.00 - 2 2000 50W 10N 10-AUG-1985 18:28 24.01 -50.00 310.0 10.00 20.00 - 2 2000 10W 11N 14-AUG-1985 16:15 23.53 -10.00 350.0 11.00 10.00 - 2 2000 50W 12N 18-AUG-1985 16:45 22.64 -50.00 310.0 12.00 -15.00 - 2 2000 10W 13N 27-AUG-1985 02:45 21.64 -10.00 350.0 13.00 20.00 - - 3 3000 15W 14N 27-AUG-1985 02:45 23.41 -15.00 345.0 14.00 -15.00 - 3 3000 5W 15N 27-AUG-1985 02:46 20.77 -5.00 355.0 15.00 -25.00 - 3 3000 1E 16N 27-AUG-1985 02:48 19.97 1.00 1.0 16.00 -35.00 - 3 3000 5E 17N 27-AUG-1985 02:50 19.05 5.00 5.0 17.00 -45.00 - 3 3000 10E 18N 27-AUG-1985 02:56 18.27 10.00 10.0 18.00 -55.00 - -cancel data/all - -! use/feature on a non-dsg dataset issues a warning -use/feature=trajectory coads_climatology -show data - currently SET data sets: - 1> ./data/coads_climatology.cdf (default) - name title I J K L - SST SEA SURFACE TEMPERATURE 1:180 1:90 ... 1:3 - - - -GO bn_reset bn_dsg_plot_timeseries -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_plot_timeseries -GO bn_dsg_plot_timeseries -! bn_dsg_plot_timeseries.jnl -! Line plots of tseries data - - -use DSG_ERDDAP_pmelTao5daySst.nc - -! A subset using x/y/t Label the key with IDs -! Upper left labels reflect the subset -set view upper -plot/x=0:100/y=5:20/thick T_25 - -! A subset in M -set view lower -plot/m=5:13/thick t_25 - -frame/file=dsg_tseries_plot_1.gif - -! Now USE/FEATURE= to access a trajectory dataset as timeseries data. -! Note how upper-left labels adjust to show dimensions orthogonal to the plots - -cancel view -cancel data/all - -! This is a trajectory set. Plot it as a trajectory and then view it as -! a timeseries. Test PLOT/TITLE= here as well. - -use dsg_cross_dateline -show data - currently SET data sets: - 1> ./data/dsg_cross_dateline.nc (default) - DSG Feature type Trajectory - name title I J K L M N - id id ... ... ... ... 1:3 ... - rowsize Number of Obs ... ... ... ... 1:3 ... - lons longitude tot 13 ... ... ... 1:3 ... - lats latitude tot 13 ... ... ... 1:3 ... - temp Temperature tot 13 ... ... ... 1:3 ... - time Centered Time tot 13 ... ... ... 1:3 ... - -set view ul -plot/thick/title="My Title" temp - -! Now reinitialize it as timeseries data. -use/feature="timeseries" dsg_cross_dateline -show data - currently SET data sets: - 1> ./data/dsg_cross_dateline.nc (default) - DSG Feature type Timeseries - name title I J K L M N - id id ... ... ... ... 1:3 ... - rowsize Number of Obs ... ... ... ... 1:3 ... - lons longitude ... ... ... tot 13 1:3 ... - lats latitude ... ... ... tot 13 1:3 ... - temp Temperature ... ... ... tot 13 1:3 ... - time Centered Time ... ... ... tot 13 1:3 ... - -set view lower -plot/thick/color/title="My Title" temp - - -frame/file=dsg_tseries_plot_2.gif - - -cancel view -! Plot an instance variable as a line in e direction - -use DSG_ERDDAP_pmelTao5daySst.nc -set view upper -plot/NOKEY t_25[t=@max] -frame/file=dsg_tseries_plot_3.gif - -cancel view - -! /NOKEY and /KEY qualifiers -! Multi-feature plots automatically get a legend labeled with feature ids -! PLOT/KEY with just one line drawn will also generate a legend key. -! Also testing PLOT/TITLE here - -set view ul -plot/m=1:3/thick/color/title="My Title" t_25 -set view ur -plot/nokey/m=1:3/thick/color/title="My Title" t_25 - - -! Now just one timeseries. By default there's no line legend, label below plot -! But PLOT/KEY makes a legend like a multi-feature plot. - -set view ll -plot/m=5/thick/color/title="My Title" t_25 -set view lr -plot/key/m=5/thick/color/title="My Title" t_25 - - -frame/file=dsg_tseries_plot_4.gif - -GO bn_reset bn_dsg_save -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_save -GO bn_dsg_save -! -use dsg_cross_prime.nc -! simple save keeps all the needed elements for DSG file -save/clobber/file=a.nc sst -can data/all; use a -list sst - DATA SET: ./a.nc - ID is Trajectory-id - SST is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME SST - - 1 1000 6W 20S 09-FEB-2017 12:00 24.41 - 1 1000 2E 10S 14-FEB-2017 12:00 25.22 - 1 1000 5W 30N 19-FEB-2017 12:00 25.92 - 1 1000 3E 40N 24-FEB-2017 12:00 28.97 - 1 1000 1E 20S 01-MAR-2017 12:00 28.03 - - 2 2000 70W 15S 02-MAR-2017 12:00 27.77 - 2 2000 20E 20N 03-MAR-2017 12:00 26.91 - 2 2000 30E 10N 04-MAR-2017 12:00 26.07 - 2 2000 60W 15S 05-MAR-2017 12:00 25.08 - 2 2000 50W 20N 06-MAR-2017 12:00 24.01 - 2 2000 10W 10N 07-MAR-2017 12:00 23.53 - 2 2000 50W 15S 08-MAR-2017 12:00 22.64 - 2 2000 5E 20N 09-MAR-2017 12:00 21.64 - - 3 3000 15W 15S 10-MAR-2017 12:00 23.41 - 3 3000 5W 25S 11-MAR-2017 12:00 20.77 - 3 3000 1E 35S 12-MAR-2017 12:00 19.97 - 3 3000 5E 45S 13-MAR-2017 12:00 19.05 - 3 3000 10E 55S 14-MAR-2017 12:00 18.27 - -use dsg_cross_prime.nc - -! now with a mask -let/bad=-99 emask = {1,-99,1} -set data/fmask=emask 1 -save/clobber/file=a.nc/title='masked {1,-99,1}' sst -can data/all; use a -list sst - DATA SET: ./a.nc - 'masked {1,-99,1}' - ID is Trajectory-id - SST is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME SST - - 1 1000 6W 20S 09-FEB-2017 12:00 24.41 - 1 1000 2E 10S 14-FEB-2017 12:00 25.22 - 1 1000 5W 30N 19-FEB-2017 12:00 25.92 - 1 1000 3E 40N 24-FEB-2017 12:00 28.97 - 1 1000 1E 20S 01-MAR-2017 12:00 28.03 - - 2 3000 15W 15S 10-MAR-2017 12:00 23.41 - 2 3000 5W 25S 11-MAR-2017 12:00 20.77 - 2 3000 1E 35S 12-MAR-2017 12:00 19.97 - 2 3000 5E 45S 13-MAR-2017 12:00 19.05 - 2 3000 10E 55S 14-MAR-2017 12:00 18.27 - -use dsg_cross_prime.nc - -! or with limits in space-time -cancel data/fmask 1 -save/clobber/file=a.nc/x=0:180/y=0:90 sst -list/x=0:180/y=0:90 sst - DATA SET: ./data/dsg_cross_prime.nc - SUBSET : LONGITUDE: 1E to 180E - LATITUDE: 0 to 40N - ID is Trajectory-id - SST is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME SST - - 1 1000 3E 40N 24-FEB-2017 12:00 28.97 - - 2 2000 20E 20N 03-MAR-2017 12:00 26.91 - 2 2000 30E 10N 04-MAR-2017 12:00 26.07 - 2 2000 5E 20N 09-MAR-2017 12:00 21.64 -can data/all; use a -list sst - DATA SET: ./a.nc - ID is Trajectory-id - SST is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME SST - - 1 1000 3E 40N 24-FEB-2017 12:00 28.97 - - 2 2000 20E 20N 03-MAR-2017 12:00 26.91 - 2 2000 30E 10N 04-MAR-2017 12:00 26.07 - 2 2000 5E 20N 09-MAR-2017 12:00 21.64 - -use dsg_cross_prime.nc - -! another dataset and mask - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc -set var/units=units pco2 -let/title="Where Profile is 80,86,87,88" mask = element_index (profile,{80,86,87,88}) - -set data/fmask=mask WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d -save/clobber/file=a.nc pco2 -can data/all; use a -list pco2 - DATA SET: ./a.nc - PROFILE is Profile-id-id - PCO2 is PCO2 (units) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME PCO2 - - 1 80 120.8W 34.33N 733.64 28-AUG-2011 07:01 1227. - 1 80 120.8W 34.33N 733.56 28-AUG-2011 07:01 ... - 1 80 120.8W 34.33N 650.88 28-AUG-2011 07:01 1261. - 1 80 120.8W 34.33N 550.91 28-AUG-2011 07:01 1266. - 1 80 120.8W 34.33N 470.36 28-AUG-2011 07:01 1186. - 1 80 120.8W 34.33N 400.38 28-AUG-2011 07:01 1209. - 1 80 120.8W 34.33N 300.32 28-AUG-2011 07:01 1218. - 1 80 120.8W 34.33N 200.69 28-AUG-2011 07:01 1072. - 1 80 120.8W 34.33N 150.32 28-AUG-2011 07:01 934. - 1 80 120.8W 34.33N 125.21 28-AUG-2011 07:01 908. - 1 80 120.8W 34.33N 100.7 28-AUG-2011 07:01 857. - 1 80 120.8W 34.33N 79.97 28-AUG-2011 07:01 815. - 1 80 120.8W 34.33N 60.05 28-AUG-2011 07:01 792. - 1 80 120.8W 34.33N 49.34 28-AUG-2011 07:01 605. - 1 80 120.8W 34.33N 40.16 28-AUG-2011 07:01 531. - 1 80 120.8W 34.33N 29.52 28-AUG-2011 07:01 ... - 1 80 120.8W 34.33N 29.8 28-AUG-2011 07:01 527. - 1 80 120.8W 34.33N 19.92 28-AUG-2011 07:01 520. - 1 80 120.8W 34.33N 10.7 28-AUG-2011 07:01 519. - 1 80 120.8W 34.33N 3.79 28-AUG-2011 07:01 524. - 1 80 120.8W 34.33N 2.85 28-AUG-2011 07:01 ... - - 2 86 120.1W 32.34N 2110.28 29-AUG-2011 17:34 688. - 2 86 120.1W 32.34N 2110.2 29-AUG-2011 17:34 ... - 2 86 120.1W 32.34N 2000.51 29-AUG-2011 17:34 737. - 2 86 120.1W 32.34N 1500.99 29-AUG-2011 17:34 905. - 2 86 120.1W 32.34N 1000.37 29-AUG-2011 17:34 1116. - 2 86 120.1W 32.34N 750.18 29-AUG-2011 17:34 1120. - 2 86 120.1W 32.34N 501.74 29-AUG-2011 17:34 1258. - 2 86 120.1W 32.34N 399.86 29-AUG-2011 17:34 1189. - 2 86 120.1W 32.34N 299.74 29-AUG-2011 17:34 ... - 2 86 120.1W 32.34N 248.46 29-AUG-2011 17:34 886. - 2 86 120.1W 32.34N 200.58 29-AUG-2011 17:34 887. - 2 86 120.1W 32.34N 149.97 29-AUG-2011 17:34 815. - 2 86 120.1W 32.34N 100.86 29-AUG-2011 17:34 499. - 2 86 120.1W 32.34N 80.78 29-AUG-2011 17:34 435. - 2 86 120.1W 32.34N 60.91 29-AUG-2011 17:34 385. - 2 86 120.1W 32.34N 50.22 29-AUG-2011 17:34 364. - 2 86 120.1W 32.34N 40.86 29-AUG-2011 17:34 359. - 2 86 120.1W 32.34N 40.77 29-AUG-2011 17:34 ... - 2 86 120.1W 32.34N 31.01 29-AUG-2011 17:34 332. - 2 86 120.1W 32.34N 21.51 29-AUG-2011 17:34 352. - 2 86 120.1W 32.34N 9.78 29-AUG-2011 17:34 367. - 2 86 120.1W 32.34N 4.31 29-AUG-2011 17:34 366. - 2 86 120.1W 32.34N 4.13 29-AUG-2011 17:34 ... - - 3 87 120W 32.39N 1151.74 29-AUG-2011 21:26 1155. - 3 87 120W 32.39N 1153.67 29-AUG-2011 21:26 ... - 3 87 120W 32.39N 1000.58 29-AUG-2011 21:26 1154. - 3 87 120W 32.39N 750.4 29-AUG-2011 21:26 1255. - 3 87 120W 32.39N 506.59 29-AUG-2011 21:26 1342. - 3 87 120W 32.39N 402.94 29-AUG-2011 21:26 1266. - 3 87 120W 32.39N 302.26 29-AUG-2011 21:26 1146. - 3 87 120W 32.39N 200.4 29-AUG-2011 21:26 938. - 3 87 120W 32.39N 148.94 29-AUG-2011 21:26 816. - 3 87 120W 32.39N 124.56 29-AUG-2011 21:26 664. - 3 87 120W 32.39N 103.21 29-AUG-2011 21:26 565. - 3 87 120W 32.39N 80.61 29-AUG-2011 21:26 507. - 3 87 120W 32.39N 59.5 29-AUG-2011 21:26 414. - 3 87 120W 32.39N 50.1 29-AUG-2011 21:26 416. - 3 87 120W 32.39N 43.65 29-AUG-2011 21:26 400. - 3 87 120W 32.39N 41.93 29-AUG-2011 21:26 ... - 3 87 120W 32.39N 30.54 29-AUG-2011 21:26 390. - 3 87 120W 32.39N 20.89 29-AUG-2011 21:26 374. - 3 87 120W 32.39N 15.54 29-AUG-2011 21:26 372. - 3 87 120W 32.39N 10.91 29-AUG-2011 21:26 376. - 3 87 120W 32.39N 6.5 29-AUG-2011 21:26 374. - 3 87 120W 32.39N 5.56 29-AUG-2011 21:26 ... - - 4 88 118W 33.35N 724.32 30-AUG-2011 12:40 1297. - 4 88 118W 33.35N 724.28 30-AUG-2011 12:40 ... - 4 88 118W 33.35N 500.4 30-AUG-2011 12:40 1321. - 4 88 118W 33.35N 399.28 30-AUG-2011 12:40 1320. - 4 88 118W 33.35N 299.96 30-AUG-2011 12:40 1166. - 4 88 118W 33.35N 200.37 30-AUG-2011 12:40 1005. - 4 88 118W 33.35N 149.48 30-AUG-2011 12:40 879. - 4 88 118W 33.35N 124.78 30-AUG-2011 12:40 794. - 4 88 118W 33.35N 99.8 30-AUG-2011 12:40 722. - 4 88 118W 33.35N 81.22 30-AUG-2011 12:40 641. - 4 88 118W 33.35N 59.86 30-AUG-2011 12:40 553. - 4 88 118W 33.35N 50.26 30-AUG-2011 12:40 501. - 4 88 118W 33.35N 39.93 30-AUG-2011 12:40 455. - 4 88 118W 33.35N 30.08 30-AUG-2011 12:40 447. - 4 88 118W 33.35N 25.05 30-AUG-2011 12:40 ... - 4 88 118W 33.35N 19.97 30-AUG-2011 12:40 389. - 4 88 118W 33.35N 10 30-AUG-2011 12:40 387. - 4 88 118W 33.35N 3.22 30-AUG-2011 12:40 406. - 4 88 118W 33.35N 3.24 30-AUG-2011 12:40 ... - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - -! Also constrained in space -save/clobber/file=a.nc/z=0:100/y=30:33 pco2 -can data/all; use a -list pco2 - DATA SET: ./a.nc - PROFILE is Profile-id-id - PCO2 is PCO2 - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME PCO2 - - 1 85 120.9W 31.95N 79.94 29-AUG-2011 09:10 504.8 - 1 85 120.9W 31.95N 60.12 29-AUG-2011 09:10 380.8 - 1 85 120.9W 31.95N 49.62 29-AUG-2011 09:10 379.6 - 1 85 120.9W 31.95N 40.6 29-AUG-2011 09:10 369.3 - 1 85 120.9W 31.95N 30.21 29-AUG-2011 09:10 380.4 - 1 85 120.9W 31.95N 20.37 29-AUG-2011 09:10 370.3 - 1 85 120.9W 31.95N 20.34 29-AUG-2011 09:10 ... - 1 85 120.9W 31.95N 9.89 29-AUG-2011 09:10 368.9 - 1 85 120.9W 31.95N 4.39 29-AUG-2011 09:10 366.9 - 1 85 120.9W 31.95N 4.14 29-AUG-2011 09:10 ... - - 2 86 120.1W 32.34N 80.78 29-AUG-2011 17:34 434.8 - 2 86 120.1W 32.34N 60.91 29-AUG-2011 17:34 385.1 - 2 86 120.1W 32.34N 50.22 29-AUG-2011 17:34 364.3 - 2 86 120.1W 32.34N 40.86 29-AUG-2011 17:34 358.9 - 2 86 120.1W 32.34N 40.77 29-AUG-2011 17:34 ... - 2 86 120.1W 32.34N 31.01 29-AUG-2011 17:34 331.9 - 2 86 120.1W 32.34N 21.51 29-AUG-2011 17:34 352.2 - 2 86 120.1W 32.34N 9.78 29-AUG-2011 17:34 367.4 - 2 86 120.1W 32.34N 4.31 29-AUG-2011 17:34 366.4 - 2 86 120.1W 32.34N 4.13 29-AUG-2011 17:34 ... - - 3 87 120W 32.39N 80.61 29-AUG-2011 21:26 506.8 - 3 87 120W 32.39N 59.5 29-AUG-2011 21:26 414.4 - 3 87 120W 32.39N 50.1 29-AUG-2011 21:26 416.4 - 3 87 120W 32.39N 43.65 29-AUG-2011 21:26 399.6 - 3 87 120W 32.39N 41.93 29-AUG-2011 21:26 ... - 3 87 120W 32.39N 30.54 29-AUG-2011 21:26 390.1 - 3 87 120W 32.39N 20.89 29-AUG-2011 21:26 374.0 - 3 87 120W 32.39N 15.54 29-AUG-2011 21:26 372.0 - 3 87 120W 32.39N 10.91 29-AUG-2011 21:26 375.6 - 3 87 120W 32.39N 6.5 29-AUG-2011 21:26 374.0 - 3 87 120W 32.39N 5.56 29-AUG-2011 21:26 ... - -cancel data/all; cancel var/all - -! Save an obs variable and a user-defined var on the same grid. - -use profile_dsg -let/like=sal nobig = if sal le 35 then sal -save/clobber/file=a.nc sal -save/append/file=a.nc nobig - -cancel data/all; cancel var/all -use a -show data - currently SET data sets: - 1> ./a.nc (default) - DSG Feature type Profile - name title I J K L M N - profile profile ID: Cruise and Station ... ... ... ... 1:3 ... - rowsize Number of Observations for this ... ... ... ... 1:3 ... - longitude - station longitude ... ... ... ... 1:3 ... - latitude station latitude ... ... ... ... 1:3 ... - depth DEPTH_M ... ... tot 34 ... 1:3 ... - time time ... ... ... ... 1:3 ... - sal sal ... ... tot 34 ... 1:3 ... - nobig sal ... ... tot 34 ... 1:3 ... - -list sal, nobig - DATA SET: ./a.nc - PROFILE is Profile-id-id - SAL is sal - NOBIG is sal - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME SAL NOBIG - - 1 1 123.1W 41.3N 33.2111 13-AUG-2009 00:00 33.68 33.68 - 1 1 123.1W 41.3N 31.5953 13-AUG-2009 00:00 33.68 33.68 - 1 1 123.1W 41.3N 24.9692 13-AUG-2009 00:00 33.61 33.61 - 1 1 123.1W 41.3N 20.5466 13-AUG-2009 00:00 33.55 33.55 - 1 1 123.1W 41.3N 15.312 13-AUG-2009 00:00 33.50 33.50 - 1 1 123.1W 41.3N 10.1546 13-AUG-2009 00:00 33.47 33.47 - 1 1 123.1W 41.3N 4.9567 13-AUG-2009 00:00 33.46 33.46 - 1 1 123.1W 41.3N 2.12 13-AUG-2009 00:00 33.44 33.44 - - 2 2 120.4W 44.11N 33.2111 13-AUG-2009 12:58 34.71 34.71 - 2 2 120.4W 44.11N 32.2686 13-AUG-2009 12:58 34.41 34.41 - 2 2 120.4W 44.11N 30.491 13-AUG-2009 12:58 34.28 34.28 - 2 2 120.4W 44.11N 26.6257 13-AUG-2009 12:58 34.28 34.28 - 2 2 120.4W 44.11N 23.495 13-AUG-2009 12:58 34.25 34.25 - 2 2 120.4W 44.11N 20.9152 13-AUG-2009 12:58 34.19 34.19 - 2 2 120.4W 44.11N 17.9293 13-AUG-2009 12:58 34.31 34.31 - 2 2 120.4W 44.11N 14.8822 13-AUG-2009 12:58 34.30 34.30 - 2 2 120.4W 44.11N 11.8737 13-AUG-2009 12:58 34.29 34.29 - 2 2 120.4W 44.11N 8.8551 13-AUG-2009 12:58 34.21 34.21 - 2 2 120.4W 44.11N 5.823 13-AUG-2009 12:58 34.11 34.11 - 2 2 120.4W 44.11N 3.7747 13-AUG-2009 12:58 32.94 32.94 - 2 2 120.4W 44.11N 2.12 13-AUG-2009 12:58 32.78 32.78 - - 3 3 121W 38.8N 33.2111 12-AUG-2009 00:00 34.83 34.83 - 3 3 121W 38.8N 32.2686 12-AUG-2009 00:00 34.82 34.82 - 3 3 121W 38.8N 30.491 12-AUG-2009 00:00 35.63 ... - 3 3 121W 38.8N 26.6257 12-AUG-2009 00:00 35.32 ... - 3 3 121W 38.8N 23.495 12-AUG-2009 00:00 32.96 32.96 - 3 3 121W 38.8N 20.9152 12-AUG-2009 00:00 32.83 32.83 - 3 3 121W 38.8N 17.9293 12-AUG-2009 00:00 32.70 32.70 - 3 3 121W 38.8N 14.8822 12-AUG-2009 00:00 32.63 32.63 - 3 3 121W 38.8N 11.8737 12-AUG-2009 00:00 32.47 32.47 - 3 3 121W 38.8N 8.8551 12-AUG-2009 00:00 32.45 32.45 - 3 3 121W 38.8N 5.823 12-AUG-2009 00:00 32.41 32.41 - 3 3 121W 38.8N 3.7747 12-AUG-2009 00:00 32.38 32.38 - 3 3 121W 38.8N 2.12 12-AUG-2009 00:00 32.38 32.38 - -GO bn_reset bn_dsg_transforms -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_transforms -GO bn_dsg_transforms -! Transforms: -! DSG_ERDDAP_pmelTao5daySst.nc timeseries example -! simple_traj_dsg.nc trajectories with a varialbe having gaps (can test timeseries ops too) -! profile_dsg.nc has gaps in the variable pot_temp_degc - - -!!!!!!!!!!!! -! NGD, NBD MIN, MAX - -use DSG_ERDDAP_pmelTao5daySst -list/m=1:5 rowsize, T_25[t=@ngd], T_25[t=@nbd], T_25[t=@min], T_25[t=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 1 to 5 - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - T_25 is Sea Surface Temperature (number of valid, each Timeseries) - T_25 is Sea Surface Temperature (number flagged bad, each Timeseries) - T_25 is Sea Surface Temperature (degree_C) (minimum, each Timeseries) - T_25 is Sea Surface Temperature (degree_C) (maximum, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE ROWSIZE T_25 T_25 T_25 T_25 - 1 0n0e 0E 0 37.00 37.00 0.000 28.53 29.86 - 2 0n10w 10W 0 37.00 37.00 0.000 27.72 29.64 - 3 0n110w 110W 0 25.00 23.00 2.000 23.73 27.63 - 4 0n125w 125W 0 37.00 37.00 0.000 24.24 28.80 - 5 0n140w 140W 0 37.00 37.00 0.000 25.25 27.36 - -let tmin = T_25[t=@min] -let tmax = T_25[t=@max] - -list rowsize[e=@min], rowsize[e=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - ROWSIZE is Number of Observations for this TimeSeries - ROWSIZE is Number of Observations for this TimeSeries - FEATURE STATION ROWSIZE ROWSIZE - 1 1.000 37.00 -list tmin[e=@min], tmax[e=@max] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - STATION is Timeseries-id - TMIN is T_25[T=@MIN] - TMAX is T_25[T=@MAX] - FEATURE STATION TMIN TMAX - 1 20.89 30.77 - -! Which tseries have some bad data? - -LET mask = if T_25[t=@nbd] GT 0 then 1 -set data/fmask=mask DSG_ERDDAP_pmelTao5daySst - -list station, rowsize, T_25[t=@ngd], T_25[t=@nbd] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature -Mask on features has been set: IF T_25[T=@NBD] GT 0 THEN 1 - STATION is Timeseries-id - STATION is Station - ROWSIZE is Number of Observations for this TimeSeries - T_25 is Sea Surface Temperature (number of valid, each Timeseries) - T_25 is Sea Surface Temperature (number flagged bad, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE STATION ROWSIZE T_25 T_25 - 3 0n110w 110W 0 "0n110w" 25.00 23.00 2.00 - 13 0n90e 90E 0 "0n90e" 37.00 27.00 10.00 - 18 10s10w 10W 10S "10s10w" 32.00 21.00 11.00 - 27 21n23w 23W 21N "21n23w" 37.00 34.00 3.00 - 28 2n125w 125W 2N "2n125w" 37.00 32.00 5.00 - 29 2n140w 140W 2N "2n140w" 37.00 35.00 2.00 - 35 2s140w 140W 2S "2s140w" 37.00 34.00 3.00 - 41 4n90e 90E 4N "4n90e" 35.00 25.00 10.00 - 44 5n125w 125W 5N "5n125w" 37.00 32.00 5.00 - 45 5n140w 140W 5N "5n140w" 37.00 35.00 2.00 - 56 6s10w 10W 6S "6s10w" 30.00 19.00 11.00 - -can data/all -use simple_traj_dsg -list rowsize, sstgap[i=@ngd], sstgap[i=@nbd], sstgap[i=@min], sstgap[i=@max] - DATA SET: ./data/simple_traj_dsg.nc - ID is Trajectory-id - ROWSIZE is Number of Observations for this Trajectory - SSTGAP is IF SST GT 20 THEN SST (number of valid, each Trajectory) - SSTGAP is IF SST GT 20 THEN SST (number flagged bad, each Trajectory) - SSTGAP is IF SST GT 20 THEN SST (minimum, each Trajectory) - SSTGAP is IF SST GT 20 THEN SST (maximum, each Trajectory) - FEATURE ID ROWSIZE SSTGAP SSTGAP SSTGAP SSTGAP - 1 1000 5.000 4.000 1.000 23.97 28.03 - 2 2000 8.000 4.000 4.000 23.53 27.77 - 3 3000 5.000 3.000 2.000 21.05 23.41 - 4 4000 8.000 4.000 4.000 21.64 37.77 - -! good+bad is now less than rowsize - based on # in the subset - -list/y=15:20 rowsize, sstgap[i=@ngd]+sstgap[i=@nbd], sstgap[i=@ngd], sstgap[i=@nbd], sstgap[i=@min], sstgap[i=@max] - DATA SET: ./data/simple_traj_dsg.nc - ID is Trajectory-id - ROWSIZE is Number of Observations for this Trajectory - EX#2 is SSTGAP[I=@NGD]+SSTGAP[I=@NBD] - SSTGAP is IF SST GT 20 THEN SST (number of valid, each Trajectory) - SSTGAP is IF SST GT 20 THEN SST (number flagged bad, each Trajectory) - SSTGAP is IF SST GT 20 THEN SST (minimum, each Trajectory) - SSTGAP is IF SST GT 20 THEN SST (maximum, each Trajectory) - FEATURE ID ROWSIZE EX#2 SSTGAP SSTGAP SSTGAP SSTGAP - 1 1000 5.000 1.000 1.000 0.000 24.41 24.41 - 2 2000 8.000 7.000 4.000 3.000 23.53 27.77 - 4 4000 8.000 8.000 4.000 4.000 21.64 37.77 - -can data/all -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d - -list rowsize, pco2[z=@ngd], pco2[z=@nbd], pco2[z=@min], pco2[z=@max] - DATA SET: ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - West Coast Carbon cruises - PROFILE is Profile-id-id - ROWSIZE is Number of Observations for this Profile - PCO2 is PCO2 (number of valid, each Profile-id) - PCO2 is PCO2 (number flagged bad, each Profile-id) - PCO2 is PCO2 (minimum, each Profile-id) - PCO2 is PCO2 (maximum, each Profile-id) - FEATURE PROFILE LONGITUDE LATITUDE TIME ROWSIZE PCO2 PCO2 PCO2 PCO2 - 1 70 122.4W 36.52N 25-AUG-2011 11:46 24.00 21.00 3.000 369.9 1300. - 2 71 122.1W 36.7N 25-AUG-2011 16:33 22.00 19.00 3.000 370.2 1322. - 3 72 122W 36.71N 25-AUG-2011 19:23 17.00 14.00 3.000 335.5 1233. - 4 73 122W 36.74N 25-AUG-2011 22:03 14.00 11.00 3.000 336.4 1024. - 5 74 121.9W 36.76N 26-AUG-2011 01:07 12.00 10.00 2.000 333.1 809. - 6 75 121.9W 36.79N 26-AUG-2011 03:51 17.00 14.00 3.000 258.9 1158. - 7 76 121.8W 36.8N 26-AUG-2011 06:18 17.00 15.00 2.000 349.5 1265. - 8 77 122.5W 33.52N 27-AUG-2011 12:17 24.00 21.00 3.000 372.7 1303. - 9 78 121.2W 34.14N 27-AUG-2011 23:06 24.00 21.00 3.000 364.7 1310. - 10 79 121W 34.21N 28-AUG-2011 03:24 21.00 18.00 3.000 367.1 1315. - 11 80 120.8W 34.33N 28-AUG-2011 07:01 21.00 18.00 3.000 519.0 1266. - 12 81 120.7W 34.38N 28-AUG-2011 10:34 17.00 14.00 3.000 574.7 1224. - 13 82 120.6W 34.42N 28-AUG-2011 13:19 15.00 11.00 4.000 566.7 978. - 14 83 120.4W 34.43N 28-AUG-2011 16:07 9.00 6.00 3.000 348.8 553. - 15 84 120.5W 34.43N 28-AUG-2011 18:55 11.00 8.00 3.000 373.0 814. - 16 85 120.9W 31.95N 29-AUG-2011 09:10 24.00 21.00 3.000 366.9 1225. - 17 86 120.1W 32.34N 29-AUG-2011 17:34 23.00 19.00 4.000 331.9 1258. - 18 87 120W 32.39N 29-AUG-2011 21:26 22.00 19.00 3.000 372.0 1342. - 19 88 118W 33.35N 30-AUG-2011 12:40 19.00 16.00 3.000 386.9 1321. - 20 89 117.8W 33.48N 30-AUG-2011 16:47 12.00 9.00 3.000 362.0 619. - 21 90 117.8W 33.49N 30-AUG-2011 18:06 8.00 5.00 3.000 372.4 495. - - -!!!!!!!!!!!! -! FILLERS -! FLN, FAV, FNR -! Filling ends and restarts with each new feature - -cancel data/all - -! IN X -use simple_traj_dsg -list sstgap, sstgap[x=@fln], sstgap[x=@fav], sstgap[x=@fnr] - DATA SET: ./data/simple_traj_dsg.nc - ID is Trajectory-id - SSTGAP is IF SST GT 20 THEN SST - SSTGAP is IF SST GT 20 THEN SST (linear-filled by 1 pts, each Trajectory) - SSTGAP is IF SST GT 20 THEN SST (ave-filled by 3 pts, each Trajectory) - SSTGAP is IF SST GT 20 THEN SST (nearest-filled by 1 pts, each Trajectory) - FEATURE ID LONGITUDE LATITUDE TIME SSTGAP SSTGAP SSTGAP SSTGAP - - 1 1000 98W 20N 02-JAN-1970 12:00 24.41 24.41 24.41 24.41 - 1 1000 96W 21N 03-JAN-1970 12:00 25.22 25.22 25.22 25.22 - 1 1000 95W 22.3N 04-JAN-1970 12:00 ... ... 24.59 24.59 - 1 1000 99W 23N 05-JAN-1970 12:00 23.97 23.97 23.97 23.97 - 1 1000 90W 21N 06-JAN-1970 12:00 28.03 28.03 28.03 28.03 - - 2 2000 108W 15N 03-JAN-1970 00:00 27.77 27.77 27.77 27.77 - 2 2000 106W 16N 05-JAN-1970 00:00 ... ... 27.77 27.77 - 2 2000 105W 14.5N 07-JAN-1970 00:00 ... ... 25.08 25.08 - 2 2000 109W 15N 09-JAN-1970 00:00 25.08 25.08 25.08 25.08 - 2 2000 101W 15.6N 11-JAN-1970 00:00 24.01 24.01 24.01 24.01 - 2 2000 108W 16N 13-JAN-1970 00:00 23.53 23.53 23.53 23.53 - 2 2000 106W 17N 15-JAN-1970 00:00 ... ... 23.53 23.53 - 2 2000 105W 17.2N 17-JAN-1970 00:00 ... ... ... 23.53 - - 3 3000 138W 25N 02-JAN-1970 00:00 ... ... 23.41 23.41 - 3 3000 136W 23.6N 04-JAN-1970 00:00 23.41 23.41 23.41 23.41 - 3 3000 135W 23N 08-JAN-1970 00:00 ... ... 22.23 22.23 - 3 3000 139W 22.5N 13-JAN-1970 00:00 21.05 21.05 21.05 21.05 - 3 3000 129W 21.1N 20-JAN-1970 00:00 22.27 22.27 22.27 22.27 - - 4 4000 116W 18N 02-JAN-1970 00:00 37.77 37.77 37.77 37.77 - 4 4000 116W 18N 03-JAN-1970 00:00 ... ... 37.77 37.77 - 4 4000 116W 18N 04-JAN-1970 00:00 ... ... ... 37.77 - 4 4000 116W 18N 05-JAN-1970 00:00 ... ... ... 23.53 - 4 4000 116W 18N 06-JAN-1970 00:00 ... ... 23.53 23.53 - 4 4000 116W 18N 07-JAN-1970 00:00 23.53 23.53 23.53 23.53 - 4 4000 116W 18N 08-JAN-1970 00:00 22.64 22.64 22.64 22.64 - 4 4000 116W 18N 09-JAN-1970 00:00 21.64 21.64 21.64 21.64 - -use/feature=none simple_traj_dsg -list sstgap, sstgap[x=@fln], sstgap[x=@fav], sstgap[x=@fnr] - DATA SET: ./data/simple_traj_dsg.nc - X: 0.5 to 26.5 - Column 1: SSTGAP is IF SST GT 20 THEN SST - Column 2: SSTGAP[X=@FLN:1] is IF SST GT 20 THEN SST (linear-filled by 1 pts on X) - Column 3: SSTGAP[X=@FAV:3] is IF SST GT 20 THEN SST (ave-filled by 3 pts on X) - Column 4: SSTGAP[X=@FNR:1] is IF SST GT 20 THEN SST (nearest-filled by 1 pts on X) - SSTGAP SSTGAP SSTGAP SSTGAP -1 / 1: 24.41 24.41 24.41 24.41 -2 / 2: 25.22 25.22 25.22 25.22 -3 / 3: .... 24.59 24.59 24.59 -4 / 4: 23.97 23.97 23.97 23.97 -5 / 5: 28.03 28.03 28.03 28.03 -6 / 6: 27.77 27.77 27.77 27.77 -7 / 7: .... 26.87 27.77 27.77 -8 / 8: .... 25.98 25.08 25.08 -9 / 9: 25.08 25.08 25.08 25.08 -10 / 10: 24.01 24.01 24.01 24.01 -11 / 11: 23.53 23.53 23.53 23.53 -12 / 12: .... 23.50 23.53 23.53 -13 / 13: .... 23.47 .... 23.47 -14 / 14: .... 23.44 23.41 23.41 -15 / 15: 23.41 23.41 23.41 23.41 -16 / 16: .... 22.23 22.23 22.23 -17 / 17: 21.05 21.05 21.05 21.05 -18 / 18: 22.27 22.27 22.27 22.27 -19 / 19: 37.77 37.77 37.77 37.77 -20 / 20: .... 34.92 37.77 37.77 -21 / 21: .... 32.07 .... 37.77 -22 / 22: .... 29.23 .... 23.53 -23 / 23: .... 26.38 23.53 23.53 -24 / 24: 23.53 23.53 23.53 23.53 -25 / 25: 22.64 22.64 22.64 22.64 -26 / 26: 21.64 21.64 21.64 21.64 - -! In T - -use DSG_ERDDAP_pmelTao5daySst - -let miss = if t_25 gt 28.4 then t_25 -list/m=2/t=15-jan-2017:15-mar-2017 t_25, miss, miss[t=@fln], miss[t=@fav], miss[t=@fnr] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : TIME: 15-JAN-2017 12:00 to 15-MAR-2017 00:00 (nearest-filled by 1 pts) - E (instance): 2 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) - MISS is IF T_25 GT 28.4 THEN T_25 - MISS is IF T_25 GT 28.4 THEN T_25 (linear-filled by 1 pts, each Timeseries) - MISS is IF T_25 GT 28.4 THEN T_25 (ave-filled by 3 pts, each Timeseries) - MISS is IF T_25 GT 28.4 THEN T_25 (nearest-filled by 1 pts, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 MISS MISS MISS MISS - - 2 0n10w 10W 0 1 15-JAN-2017 12:00 27.72 ... ... ... 28.71 - 2 0n10w 10W 0 1 20-JAN-2017 12:00 28.01 ... ... 28.71 28.71 - 2 0n10w 10W 0 1 25-JAN-2017 12:00 28.71 28.71 28.71 28.71 28.71 - 2 0n10w 10W 0 1 30-JAN-2017 12:00 28.94 28.94 28.94 28.94 28.94 - 2 0n10w 10W 0 1 04-FEB-2017 12:00 28.48 28.48 28.48 28.48 28.48 - 2 0n10w 10W 0 1 09-FEB-2017 12:00 28.23 ... 28.55 28.48 28.48 - 2 0n10w 10W 0 1 14-FEB-2017 12:00 28.12 ... 28.61 28.67 28.67 - 2 0n10w 10W 0 1 19-FEB-2017 12:00 28.67 28.67 28.67 28.67 28.67 - 2 0n10w 10W 0 1 24-FEB-2017 12:00 28.13 ... 28.60 28.67 28.67 - 2 0n10w 10W 0 1 01-MAR-2017 12:00 28.04 ... 28.53 ... 28.67 - 2 0n10w 10W 0 1 02-MAR-2017 12:00 28.04 ... 28.51 ... 28.67 - 2 0n10w 10W 0 1 03-MAR-2017 12:00 28.10 ... 28.50 ... 28.56 - 2 0n10w 10W 0 1 04-MAR-2017 12:00 28.20 ... 28.48 ... 28.44 - 2 0n10w 10W 0 1 05-MAR-2017 12:00 28.25 ... 28.47 ... 28.44 - 2 0n10w 10W 0 1 06-MAR-2017 12:00 28.32 ... 28.45 28.44 28.44 - 2 0n10w 10W 0 1 07-MAR-2017 12:00 28.44 28.44 28.44 28.44 28.44 - 2 0n10w 10W 0 1 08-MAR-2017 12:00 28.49 28.49 28.49 28.49 28.49 - 2 0n10w 10W 0 1 09-MAR-2017 12:00 28.57 28.57 28.57 28.57 28.57 - 2 0n10w 10W 0 1 10-MAR-2017 12:00 28.70 28.70 28.70 28.70 28.70 - 2 0n10w 10W 0 1 11-MAR-2017 12:00 28.80 28.80 28.80 28.80 28.80 - 2 0n10w 10W 0 1 12-MAR-2017 12:00 28.86 28.86 28.86 28.86 28.86 - 2 0n10w 10W 0 1 13-MAR-2017 12:00 29.07 29.07 29.07 29.07 29.07 - 2 0n10w 10W 0 1 14-MAR-2017 12:00 29.21 29.21 29.21 29.21 29.21 - -! In Z -! Write computed var in DSG netCDF file - -use profile_dsg -let/like=sal nobig = if sal le 35 then sal - -save/clobber/file=a.nc sal -save/append/file=a.nc nobig -can data profile_dsg; cancel var/all - -use a -list/m=3 nobig, nobig[z=@fln] - DATA SET: ./a.nc - SUBSET : E (instance): 3 - PROFILE is Profile-id-id - NOBIG is sal - NOBIG is sal (linear-filled by 1 pts, each Profile-id) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME NOBIG NOBIG - - 3 3 121W 38.8N 33.2111 12-AUG-2009 00:00 34.83 34.83 - 3 3 121W 38.8N 32.2686 12-AUG-2009 00:00 34.82 34.82 - 3 3 121W 38.8N 30.491 12-AUG-2009 00:00 ... 34.44 - 3 3 121W 38.8N 26.6257 12-AUG-2009 00:00 ... 33.63 - 3 3 121W 38.8N 23.495 12-AUG-2009 00:00 32.96 32.96 - 3 3 121W 38.8N 20.9152 12-AUG-2009 00:00 32.83 32.83 - 3 3 121W 38.8N 17.9293 12-AUG-2009 00:00 32.70 32.70 - 3 3 121W 38.8N 14.8822 12-AUG-2009 00:00 32.63 32.63 - 3 3 121W 38.8N 11.8737 12-AUG-2009 00:00 32.47 32.47 - 3 3 121W 38.8N 8.8551 12-AUG-2009 00:00 32.45 32.45 - 3 3 121W 38.8N 5.823 12-AUG-2009 00:00 32.41 32.41 - 3 3 121W 38.8N 3.7747 12-AUG-2009 00:00 32.38 32.38 - 3 3 121W 38.8N 2.12 12-AUG-2009 00:00 32.38 32.38 -plot /thick/line/sym nobig -plot /thick/line/sym nobig[z=@fln] - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d -list/m=20:21 pco2, pco2[z=@fav], pco2[z=@fln], pco2[z=@fnr] - DATA SET: ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - West Coast Carbon cruises - SUBSET : E (instance): 20 to 21 - PROFILE is Profile-id-id - PCO2 is PCO2 - PCO2 is PCO2 (ave-filled by 3 pts, each Profile-id) - PCO2 is PCO2 (linear-filled by 1 pts, each Profile-id) - PCO2 is PCO2 (nearest-filled by 1 pts, each Profile-id) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME PCO2 PCO2 PCO2 PCO2 - - 20 89 117.8W 33.48N 67.96 30-AUG-2011 16:47 619.0 619.0 619.0 619.0 - 20 89 117.8W 33.48N 68.21 30-AUG-2011 16:47 ... 608.4 619.6 608.4 - 20 89 117.8W 33.48N 59.95 30-AUG-2011 16:47 597.8 597.8 597.8 597.8 - 20 89 117.8W 33.48N 49.87 30-AUG-2011 16:47 570.7 570.7 570.7 570.7 - 20 89 117.8W 33.48N 40.18 30-AUG-2011 16:47 578.0 578.0 578.0 578.0 - 20 89 117.8W 33.48N 29.87 30-AUG-2011 16:47 471.3 471.3 471.3 471.3 - 20 89 117.8W 33.48N 29.63 30-AUG-2011 16:47 ... 427.9 469.2 427.9 - 20 89 117.8W 33.48N 19.83 30-AUG-2011 16:47 384.5 384.5 384.5 384.5 - 20 89 117.8W 33.48N 14.86 30-AUG-2011 16:47 362.0 362.0 362.0 362.0 - 20 89 117.8W 33.48N 9.92 30-AUG-2011 16:47 362.5 362.5 362.5 362.5 - 20 89 117.8W 33.48N 2.94 30-AUG-2011 16:47 379.3 379.3 379.3 379.3 - 20 89 117.8W 33.48N 3.01 30-AUG-2011 16:47 ... 379.3 ... 379.3 - - 21 90 117.8W 33.49N 31.62 30-AUG-2011 18:06 495.3 495.3 495.3 495.3 - 21 90 117.8W 33.49N 31.63 30-AUG-2011 18:06 ... 465.0 495.4 465.0 - 21 90 117.8W 33.49N 19.81 30-AUG-2011 18:06 434.7 434.7 434.7 434.7 - 21 90 117.8W 33.49N 19.75 30-AUG-2011 18:06 ... 409.2 434.1 409.2 - 21 90 117.8W 33.49N 14.87 30-AUG-2011 18:06 383.8 383.8 383.8 383.8 - 21 90 117.8W 33.49N 10.41 30-AUG-2011 18:06 383.1 383.1 383.1 383.1 - 21 90 117.8W 33.49N 3.08 30-AUG-2011 18:06 372.4 372.4 372.4 372.4 - 21 90 117.8W 33.49N 2.94 30-AUG-2011 18:06 ... 372.4 ... 372.4 - - -!!!!!!!!!!!! -! SMOOTHERS - -use simple_traj_dsg -list sst, sst[x=@sbx], sst[x=@swl], sst[x=@shn], sst[x=@spz] - DATA SET: ./data/simple_traj_dsg.nc - X: 0.5 to 26.5 - Column 1: SST is Temperature (Degrees C) - Column 2: SST[X=@SBX:3] is Temperature (Degrees C)(box smoothed by 3 pts on X) - Column 3: SST[X=@SWL:3] is Temperature (Degrees C)(Welch smoothed by 3 pts on X) - Column 4: SST[X=@SHN:3] is Temperature (Degrees C)(Hanning smoothed by 3 pts on X) - Column 5: SST[X=@SPZ:3] is Temperature (Degrees C)(Parzen smoothed by 3 pts on X) - SST SST SST SST SST -1 / 1: 24.41 .... .... .... .... -2 / 2: 25.22 20.85 21.29 21.94 21.94 -3 / 3: 12.92 20.70 19.92 18.76 18.76 -4 / 4: 23.97 21.64 21.87 22.22 22.22 -5 / 5: 28.03 26.59 26.73 26.95 26.95 -6 / 6: 27.77 27.27 27.32 27.40 27.40 -7 / 7: 26.02 26.62 26.56 26.47 26.47 -8 / 8: 26.07 25.72 25.76 25.81 25.81 -9 / 9: 25.08 25.05 25.06 25.06 25.06 -10 / 10: 24.01 24.21 24.19 24.16 24.16 -11 / 11: 23.53 23.39 23.41 23.43 23.43 -12 / 12: 22.64 22.60 22.61 22.61 22.61 -13 / 13: 21.64 22.56 22.47 22.33 22.33 -14 / 14: 23.41 21.27 21.49 21.81 21.81 -15 / 15: 18.77 20.05 19.92 19.73 19.73 -16 / 16: 17.97 19.26 19.13 18.94 18.94 -17 / 17: 21.05 20.43 20.49 20.59 20.59 -18 / 18: 22.27 23.70 23.55 23.34 23.34 -19 / 19: 27.77 25.35 25.59 25.96 25.96 -20 / 20: 26.02 26.62 26.56 26.47 26.47 -21 / 21: 26.07 25.72 25.76 25.81 25.81 -22 / 22: 25.08 25.05 25.06 25.06 25.06 -23 / 23: 24.01 24.21 24.19 24.16 24.16 -24 / 24: 23.53 23.39 23.41 23.43 23.43 -25 / 25: 22.64 22.60 22.61 22.61 22.61 -26 / 26: 21.64 .... .... .... .... - -use DSG_ERDDAP_pmelTao5daySst -list/m=62 t_25, t_25[t=@sbx], t_25[t=@swl], t_25[t=@shn], t_25[t=@spz] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 62 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) - T_25 is Sea Surface Temperature (degree_C) (box smoothed by 3 pts, each Timeseries) - T_25 is Sea Surface Temperature (degree_C) (Welch smoothed by 3 pts, each Timeseries) - T_25 is Sea Surface Temperature (degree_C) (Hanning smoothed by 3 pts, each Timeseries) - T_25 is Sea Surface Temperature (degree_C) (Parzen smoothed by 3 pts, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 T_25 T_25 T_25 T_25 - - 62 8n95w 95W 8N 1 15-JAN-2017 12:00 26.02 ... ... ... ... - 62 8n95w 95W 8N 1 20-JAN-2017 12:00 26.30 26.33 26.32 26.32 26.32 - 62 8n95w 95W 8N 1 25-JAN-2017 12:00 26.66 26.60 26.60 26.61 26.61 - 62 8n95w 95W 8N 1 30-JAN-2017 12:00 26.83 26.72 26.73 26.75 26.75 - 62 8n95w 95W 8N 1 04-FEB-2017 12:00 26.67 26.71 26.71 26.70 26.70 - 62 8n95w 95W 8N 1 09-FEB-2017 12:00 26.64 26.67 26.67 26.66 26.66 - 62 8n95w 95W 8N 1 14-FEB-2017 12:00 26.71 26.73 26.73 26.72 26.72 - 62 8n95w 95W 8N 1 19-FEB-2017 12:00 26.83 27.03 27.01 26.98 26.98 - 62 8n95w 95W 8N 1 24-FEB-2017 12:00 27.53 ... ... ... ... - - -use DSG_ERDDAP_pmelTao5daySst -plot/m=2/thick t_25 -plot/over/color=red/thick/m=2/nolab t_25[t=@sbx] -plot/over/color=blue/thick/m=2/nolab t_25[t=@swl] -plot/over/color=green/thick=3/m=2/nolab t_25[t=@shn] -plot/over/color=black/line/sym=19/siz=.12/m=2/nolab t_25[t=@spz] - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d -list/m=1 pco2, pco2[z=@sbx], pco2[z=@swl], pco2[z=@shn] - DATA SET: ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - West Coast Carbon cruises - SUBSET : E (instance): 1 - PROFILE is Profile-id-id - PCO2 is PCO2 - PCO2 is PCO2 (box smoothed by 3 pts, each Profile-id) - PCO2 is PCO2 (Welch smoothed by 3 pts, each Profile-id) - PCO2 is PCO2 (Hanning smoothed by 3 pts, each Profile-id) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME PCO2 PCO2 PCO2 PCO2 - - 1 70 122.4W 36.52N 2199.8201 25-AUG-2011 11:46 750. ... ... ... - 1 70 122.4W 36.52N 2199.8899 25-AUG-2011 11:46 ... ... ... ... - 1 70 122.4W 36.52N 2000.84 25-AUG-2011 11:46 784. ... ... ... - 1 70 122.4W 36.52N 1750.47 25-AUG-2011 11:46 846. 867. 865. 862. - 1 70 122.4W 36.52N 1500.8199 25-AUG-2011 11:46 973. 971. 971. 972. - 1 70 122.4W 36.52N 1250.96 25-AUG-2011 11:46 1096. 1099. 1099. 1098. - 1 70 122.4W 36.52N 999.52 25-AUG-2011 11:46 1229. 1194. 1197. 1203. - 1 70 122.4W 36.52N 801.53 25-AUG-2011 11:46 1257. 1262. 1261. 1261. - 1 70 122.4W 36.52N 599.99 25-AUG-2011 11:46 1300. 1270. 1273. 1278. - 1 70 122.4W 36.52N 500.09 25-AUG-2011 11:46 1254. 1261. 1260. 1259. - 1 70 122.4W 36.52N 400.28 25-AUG-2011 11:46 1228. 1229. 1229. 1229. - 1 70 122.4W 36.52N 299.89 25-AUG-2011 11:46 1204. 1178. 1181. 1185. - 1 70 122.4W 36.52N 201.1 25-AUG-2011 11:46 1103. 1097. 1097. 1098. - 1 70 122.4W 36.52N 101.44 25-AUG-2011 11:46 984. 1001. 999. 997. - 1 70 122.4W 36.52N 80.8 25-AUG-2011 11:46 916. 932. 930. 928. - 1 70 122.4W 36.52N 59.83 25-AUG-2011 11:46 896. 892. 892. 893. - 1 70 122.4W 36.52N 50.1 25-AUG-2011 11:46 863. 854. 855. 856. - 1 70 122.4W 36.52N 39.66 25-AUG-2011 11:46 802. 777. 779. 783. - 1 70 122.4W 36.52N 30.14 25-AUG-2011 11:46 666. 641. 644. 648. - 1 70 122.4W 36.52N 20.23 25-AUG-2011 11:46 456. 499. 494. 488. - 1 70 122.4W 36.52N 10.29 25-AUG-2011 11:46 374. ... ... ... - 1 70 122.4W 36.52N 10.19 25-AUG-2011 11:46 ... ... ... ... - 1 70 122.4W 36.52N 4.01 25-AUG-2011 11:46 ... ... ... ... - 1 70 122.4W 36.52N 4 25-AUG-2011 11:46 370. ... ... ... - - -!!!!!!!!!!!! -! DIFFERENCES - -use simple_traj_dsg -list sst, sst[x=@ddc], sst[x=@ddb], sst[x=@ddf] - DATA SET: ./data/simple_traj_dsg.nc - X: 0.5 to 26.5 - Column 1: SST is Temperature (Degrees C) - Column 2: SST[X=@DDC] is Temperature (Degrees C)(centered derivative on X) - Column 3: SST[X=@DDB] is Temperature (Degrees C)(backwards derivative on X) - Column 4: SST[X=@DDF] is Temperature (Degrees C)(forward derivative on X) - SST SST SST SST -1 / 1: 24.41 .... .... 0.81 -2 / 2: 25.22 -5.745 0.81 -12.30 -3 / 3: 12.92 -0.625 -12.30 11.05 -4 / 4: 23.97 7.555 11.05 4.06 -5 / 5: 28.03 1.900 4.06 -0.26 -6 / 6: 27.77 -1.005 -0.26 -1.75 -7 / 7: 26.02 -0.850 -1.75 0.05 -8 / 8: 26.07 -0.470 0.05 -0.99 -9 / 9: 25.08 -1.030 -0.99 -1.07 -10 / 10: 24.01 -0.775 -1.07 -0.48 -11 / 11: 23.53 -0.685 -0.48 -0.89 -12 / 12: 22.64 -0.945 -0.89 -1.00 -13 / 13: 21.64 0.385 -1.00 1.77 -14 / 14: 23.41 -1.435 1.77 -4.64 -15 / 15: 18.77 -2.720 -4.64 -0.80 -16 / 16: 17.97 1.140 -0.80 3.08 -17 / 17: 21.05 2.150 3.08 1.22 -18 / 18: 22.27 3.360 1.22 5.50 -19 / 19: 27.77 1.875 5.50 -1.75 -20 / 20: 26.02 -0.850 -1.75 0.05 -21 / 21: 26.07 -0.470 0.05 -0.99 -22 / 22: 25.08 -1.030 -0.99 -1.07 -23 / 23: 24.01 -0.775 -1.07 -0.48 -24 / 24: 23.53 -0.685 -0.48 -0.89 -25 / 25: 22.64 -0.945 -0.89 -1.00 -26 / 26: 21.64 .... -1.00 .... - -use DSG_ERDDAP_pmelTao5daySst -list/m=62 t_25, t_25[t=@ddc], t_25[t=@ddb], t_25[t=@ddf] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 62 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) - T_25 is Sea Surface Temperature (degree_C) (centered derivative, each Timeseries) - T_25 is Sea Surface Temperature (degree_C) (backwards derivative, each Timeseries) - T_25 is Sea Surface Temperature (degree_C) (forward derivative, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 T_25 T_25 T_25 - - 62 8n95w 95W 8N 1 15-JAN-2017 12:00 26.02 ... ... 6.317E-07 - 62 8n95w 95W 8N 1 20-JAN-2017 12:00 26.30 1.484E-06 6.317E-07 8.525E-07 - 62 8n95w 95W 8N 1 25-JAN-2017 12:00 26.66 1.241E-06 8.525E-07 3.887E-07 - 62 8n95w 95W 8N 1 30-JAN-2017 12:00 26.83 2.499E-09 3.887E-07 -3.862E-07 - 62 8n95w 95W 8N 1 04-FEB-2017 12:00 26.67 -4.444E-07 -3.862E-07 -5.819E-08 - 62 8n95w 95W 8N 1 09-FEB-2017 12:00 26.64 1.028E-07 -5.819E-08 1.610E-07 - 62 8n95w 95W 8N 1 14-FEB-2017 12:00 26.71 4.446E-07 1.610E-07 2.837E-07 - 62 8n95w 95W 8N 1 19-FEB-2017 12:00 26.83 1.908E-06 2.837E-07 1.624E-06 - 62 8n95w 95W 8N 1 24-FEB-2017 12:00 27.53 ... 1.624E-06 ... - - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d -list/m=3:4 pco2, pco2[z=@ddc], pco2[z=@ddb], pco2[z=@ddf] - DATA SET: ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - West Coast Carbon cruises - SUBSET : E (instance): 3 to 4 - PROFILE is Profile-id-id - PCO2 is PCO2 - PCO2 is PCO2 (centered derivative, each Profile-id) - PCO2 is PCO2 (backwards derivative, each Profile-id) - PCO2 is PCO2 (forward derivative, each Profile-id) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME PCO2 PCO2 PCO2 PCO2 - - 3 72 122W 36.71N 369.49 25-AUG-2011 19:23 1216. ... ... ... - 3 72 122W 36.71N 369.55 25-AUG-2011 19:23 ... 1.78 ... ... - 3 72 122W 36.71N 350.73 25-AUG-2011 19:23 1233. ... ... -0.95 - 3 72 122W 36.71N 299.85 25-AUG-2011 19:23 1200. -0.67 -0.44 -0.23 - 3 72 122W 36.71N 199.7 25-AUG-2011 19:23 1182. -2.45 -0.24 -2.21 - 3 72 122W 36.71N 150 25-AUG-2011 19:23 1016. -4.61 -4.45 -0.16 - 3 72 122W 36.71N 125.1 25-AUG-2011 19:23 1010. -3.07 -0.24 -2.83 - 3 72 122W 36.71N 100.37 25-AUG-2011 19:23 940. -7.05 -3.12 -3.93 - 3 72 122W 36.71N 80.05 25-AUG-2011 19:23 851. -7.45 -4.39 -3.06 - 3 72 122W 36.71N 60.04 25-AUG-2011 19:23 790. -10.11 -3.08 -7.03 - 3 72 122W 36.71N 40.05 25-AUG-2011 19:23 649. -19.20 -7.02 -12.18 - 3 72 122W 36.71N 20 25-AUG-2011 19:23 405. ... -24.40 ... - 3 72 122W 36.71N 20.06 25-AUG-2011 19:23 ... -7.16 ... ... - 3 72 122W 36.71N 15.27 25-AUG-2011 19:23 388. ... ... -5.56 - 3 72 122W 36.71N 10.11 25-AUG-2011 19:23 361. -9.12 -4.77 -4.35 - 3 72 122W 36.71N 3.68 25-AUG-2011 19:23 335. ... -7.88 ... - 3 72 122W 36.71N 3.71 25-AUG-2011 19:23 ... ... ... ... - - 4 73 122W 36.74N 112.36 25-AUG-2011 22:03 1024. ... ... ... - 4 73 122W 36.74N 112.26 25-AUG-2011 22:03 ... -18.46 ... ... - 4 73 122W 36.74N 99.61 25-AUG-2011 22:03 906. ... ... -3.68 - 4 73 122W 36.74N 79.97 25-AUG-2011 22:03 847. -7.14 -3.02 -4.12 - 4 73 122W 36.74N 60.21 25-AUG-2011 22:03 766. -5.42 -5.46 0.04 - 4 73 122W 36.74N 50.23 25-AUG-2011 22:03 766. -8.78 0.06 -8.84 - 4 73 122W 36.74N 40.42 25-AUG-2011 22:03 679. -13.95 -8.71 -5.25 - 4 73 122W 36.74N 30.14 25-AUG-2011 22:03 626. -24.31 -5.16 -19.16 - 4 73 122W 36.74N 19.98 25-AUG-2011 22:03 430. -32.64 -25.73 -6.92 - 4 73 122W 36.74N 14.92 25-AUG-2011 22:03 378. ... -21.05 ... - 4 73 122W 36.74N 14.98 25-AUG-2011 22:03 ... -16.85 ... ... - 4 73 122W 36.74N 10.02 25-AUG-2011 22:03 336. ... ... 2.14 - 4 73 122W 36.74N 3.06 25-AUG-2011 22:03 349. ... 3.64 ... - 4 73 122W 36.74N 3.01 25-AUG-2011 22:03 ... ... ... ... - -cancel data/all - - -!!!!!!!!!!!! -! AVERAGES and INTEGRALS - -! trajectory -use simple_traj_dsg.nc - -list sst[x=@ave] - DATA SET: ./data/simple_traj_dsg.nc - ID is Trajectory-id - SST is Temperature (Degrees C) (averaged, each Trajectory) - FEATURE ID SST - 1 1000 23.78 - 2 2000 24.78 - 3 3000 21.11 - 4 4000 ... -list sst[x=@sum] , sst[x=@sum]/rowsize - DATA SET: ./data/simple_traj_dsg.nc - ID is Trajectory-id - SST is Temperature (Degrees C) (summed, each Trajectory) - EX#2 is SST[X=@SUM]/ROWSIZE - FEATURE ID SST EX#2 - 1 1000 114.5 22.91 - 2 2000 196.8 24.59 - 3 3000 103.5 20.69 - 4 4000 196.8 24.59 - -list/m=3 sst[x=@iin], sst[x=@rsum] - DATA SET: ./data/simple_traj_dsg.nc - SUBSET : E (instance): 3 - ID is Trajectory-id - SST is Temperature (Degrees C) (indef. integ., each Trajectory) - SST is Temperature (Degrees C) (running sum, each Trajectory) - FEATURE ID LONGITUDE LATITUDE TIME SST SST - - 3 3000 138W 25N 02-JAN-1970 00:00 5.983E+06 23.4 - 3 3000 136W 23.6N 04-JAN-1970 00:00 1.078E+07 42.2 - 3 3000 135W 23N 08-JAN-1970 00:00 1.297E+07 60.1 - 3 3000 139W 22.5N 13-JAN-1970 00:00 2.169E+07 81.2 - 3 3000 129W 21.1N 20-JAN-1970 00:00 2.981E+07 103.5 - -list rowsize[e=@sum] - DATA SET: ./data/simple_traj_dsg.nc - ID is Trajectory-id - ROWSIZE is Number of Observations for this Trajectory - FEATURE ID ROWSIZE - 1 26.00 - -use profile_dsg -list sal[z=@ave] - DATA SET: ./data/profile_dsg.nc - PROFILE is Profile-id-id - SAL is sal (averaged, each Profile-id) - FEATURE PROFILE LONGITUDE LATITUDE TIME SAL - 1 1 123.1W 41.3N 13-AUG-2009 00:00 33.54 - 2 2 120.4W 44.11N 13-AUG-2009 12:58 34.12 - 3 3 121W 38.8N 12-AUG-2009 00:00 33.32 -list sal[z=@sum], sal[z=@sum]/rowsize - DATA SET: ./data/profile_dsg.nc - PROFILE is Profile-id-id - SAL is sal (summed, each Profile-id) - EX#2 is SAL[Z=@SUM]/ROWSIZE - FEATURE PROFILE LONGITUDE LATITUDE TIME SAL EX#2 - 1 1 123.1W 41.3N 13-AUG-2009 00:00 268.4 33.55 - 2 2 120.4W 44.11N 13-AUG-2009 12:58 443.1 34.08 - 3 3 121W 38.8N 12-AUG-2009 00:00 433.8 33.37 -list sal[z=@din] - DATA SET: ./data/profile_dsg.nc - PROFILE is Profile-id-id - SAL is sal (integrated, each Profile-id) - FEATURE PROFILE LONGITUDE LATITUDE TIME SAL - 1 1 123.1W 41.3N 13-AUG-2009 00:00 1117. - 2 2 120.4W 44.11N 13-AUG-2009 12:58 1105. - 3 3 121W 38.8N 12-AUG-2009 00:00 1079. -list sal, sal[z=@iin], sal[z=@rsum] - DATA SET: ./data/profile_dsg.nc - PROFILE is Profile-id-id - SAL is sal - SAL is sal (indef. integ., each Profile-id) - SAL is sal (running sum, each Profile-id) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME SAL SAL SAL - - 1 1 123.1W 41.3N 33.2111 13-AUG-2009 00:00 33.68 54. 33.7 - 1 1 123.1W 41.3N 31.5953 13-AUG-2009 00:00 33.68 193. 67.4 - 1 1 123.1W 41.3N 24.9692 13-AUG-2009 00:00 33.61 379. 101.0 - 1 1 123.1W 41.3N 20.5466 13-AUG-2009 00:00 33.55 541. 134.5 - 1 1 123.1W 41.3N 15.312 13-AUG-2009 00:00 33.50 715. 168.0 - 1 1 123.1W 41.3N 10.1546 13-AUG-2009 00:00 33.47 888. 201.5 - 1 1 123.1W 41.3N 4.9567 13-AUG-2009 00:00 33.46 1023. 234.9 - 1 1 123.1W 41.3N 2.12 13-AUG-2009 00:00 33.44 1117. 268.4 - - 2 2 120.4W 44.11N 33.2111 13-AUG-2009 12:58 34.71 33. 34.7 - 2 2 120.4W 44.11N 32.2686 13-AUG-2009 12:58 34.41 80. 69.1 - 2 2 120.4W 44.11N 30.491 13-AUG-2009 12:58 34.28 176. 103.4 - 2 2 120.4W 44.11N 26.6257 13-AUG-2009 12:58 34.28 296. 137.7 - 2 2 120.4W 44.11N 23.495 13-AUG-2009 12:58 34.25 394. 171.9 - 2 2 120.4W 44.11N 20.9152 13-AUG-2009 12:58 34.19 489. 206.1 - 2 2 120.4W 44.11N 17.9293 13-AUG-2009 12:58 34.31 593. 240.4 - 2 2 120.4W 44.11N 14.8822 13-AUG-2009 12:58 34.30 696. 274.7 - 2 2 120.4W 44.11N 11.8737 13-AUG-2009 12:58 34.29 800. 309.0 - 2 2 120.4W 44.11N 8.8551 13-AUG-2009 12:58 34.21 903. 343.2 - 2 2 120.4W 44.11N 5.823 13-AUG-2009 12:58 34.11 990. 377.3 - 2 2 120.4W 44.11N 3.7747 13-AUG-2009 12:58 32.94 1051. 410.3 - 2 2 120.4W 44.11N 2.12 13-AUG-2009 12:58 32.78 1105. 443.1 - - 3 3 121W 38.8N 33.2111 12-AUG-2009 00:00 34.83 33. 34.8 - 3 3 121W 38.8N 32.2686 12-AUG-2009 00:00 34.82 80. 69.7 - 3 3 121W 38.8N 30.491 12-AUG-2009 00:00 35.63 181. 105.3 - 3 3 121W 38.8N 26.6257 12-AUG-2009 00:00 35.32 304. 140.6 - 3 3 121W 38.8N 23.495 12-AUG-2009 00:00 32.96 398. 173.6 - 3 3 121W 38.8N 20.9152 12-AUG-2009 00:00 32.83 490. 206.4 - 3 3 121W 38.8N 17.9293 12-AUG-2009 00:00 32.70 588. 239.1 - 3 3 121W 38.8N 14.8822 12-AUG-2009 00:00 32.63 687. 271.7 - 3 3 121W 38.8N 11.8737 12-AUG-2009 00:00 32.47 785. 304.2 - 3 3 121W 38.8N 8.8551 12-AUG-2009 00:00 32.45 883. 336.6 - 3 3 121W 38.8N 5.823 12-AUG-2009 00:00 32.41 966. 369.1 - 3 3 121W 38.8N 3.7747 12-AUG-2009 00:00 32.38 1026. 401.4 - 3 3 121W 38.8N 2.12 12-AUG-2009 00:00 32.38 1079. 433.8 - - -list sal, sal[z=@iin], sal[z=@rsum] - DATA SET: ./data/profile_dsg.nc - PROFILE is Profile-id-id - SAL is sal - SAL is sal (indef. integ., each Profile-id) - SAL is sal (running sum, each Profile-id) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME SAL SAL SAL - - 1 1 123.1W 41.3N 33.2111 13-AUG-2009 00:00 33.68 54. 33.7 - 1 1 123.1W 41.3N 31.5953 13-AUG-2009 00:00 33.68 193. 67.4 - 1 1 123.1W 41.3N 24.9692 13-AUG-2009 00:00 33.61 379. 101.0 - 1 1 123.1W 41.3N 20.5466 13-AUG-2009 00:00 33.55 541. 134.5 - 1 1 123.1W 41.3N 15.312 13-AUG-2009 00:00 33.50 715. 168.0 - 1 1 123.1W 41.3N 10.1546 13-AUG-2009 00:00 33.47 888. 201.5 - 1 1 123.1W 41.3N 4.9567 13-AUG-2009 00:00 33.46 1023. 234.9 - 1 1 123.1W 41.3N 2.12 13-AUG-2009 00:00 33.44 1117. 268.4 - - 2 2 120.4W 44.11N 33.2111 13-AUG-2009 12:58 34.71 33. 34.7 - 2 2 120.4W 44.11N 32.2686 13-AUG-2009 12:58 34.41 80. 69.1 - 2 2 120.4W 44.11N 30.491 13-AUG-2009 12:58 34.28 176. 103.4 - 2 2 120.4W 44.11N 26.6257 13-AUG-2009 12:58 34.28 296. 137.7 - 2 2 120.4W 44.11N 23.495 13-AUG-2009 12:58 34.25 394. 171.9 - 2 2 120.4W 44.11N 20.9152 13-AUG-2009 12:58 34.19 489. 206.1 - 2 2 120.4W 44.11N 17.9293 13-AUG-2009 12:58 34.31 593. 240.4 - 2 2 120.4W 44.11N 14.8822 13-AUG-2009 12:58 34.30 696. 274.7 - 2 2 120.4W 44.11N 11.8737 13-AUG-2009 12:58 34.29 800. 309.0 - 2 2 120.4W 44.11N 8.8551 13-AUG-2009 12:58 34.21 903. 343.2 - 2 2 120.4W 44.11N 5.823 13-AUG-2009 12:58 34.11 990. 377.3 - 2 2 120.4W 44.11N 3.7747 13-AUG-2009 12:58 32.94 1051. 410.3 - 2 2 120.4W 44.11N 2.12 13-AUG-2009 12:58 32.78 1105. 443.1 - - 3 3 121W 38.8N 33.2111 12-AUG-2009 00:00 34.83 33. 34.8 - 3 3 121W 38.8N 32.2686 12-AUG-2009 00:00 34.82 80. 69.7 - 3 3 121W 38.8N 30.491 12-AUG-2009 00:00 35.63 181. 105.3 - 3 3 121W 38.8N 26.6257 12-AUG-2009 00:00 35.32 304. 140.6 - 3 3 121W 38.8N 23.495 12-AUG-2009 00:00 32.96 398. 173.6 - 3 3 121W 38.8N 20.9152 12-AUG-2009 00:00 32.83 490. 206.4 - 3 3 121W 38.8N 17.9293 12-AUG-2009 00:00 32.70 588. 239.1 - 3 3 121W 38.8N 14.8822 12-AUG-2009 00:00 32.63 687. 271.7 - 3 3 121W 38.8N 11.8737 12-AUG-2009 00:00 32.47 785. 304.2 - 3 3 121W 38.8N 8.8551 12-AUG-2009 00:00 32.45 883. 336.6 - 3 3 121W 38.8N 5.823 12-AUG-2009 00:00 32.41 966. 369.1 - 3 3 121W 38.8N 3.7747 12-AUG-2009 00:00 32.38 1026. 401.4 - 3 3 121W 38.8N 2.12 12-AUG-2009 00:00 32.38 1079. 433.8 - -let s_ave = sal[z=@ave] -list s_ave[e=@sum] - DATA SET: ./data/profile_dsg.nc - PROFILE is Profile-id-id - S_AVE is SAL[Z=@AVE] - FEATURE PROFILE S_AVE - 1 101.0 - -use DSG_ERDDAP_pmelTao5daySst -sh dat - currently SET data sets: - 1> ./data/simple_traj_dsg.nc - DSG Feature type Trajectory - name title I J K L M N - id id ... ... ... ... 1:4 ... - rowsize Number of Observations for this ... ... ... ... 1:4 ... - lons longitude tot 26 ... ... ... 1:4 ... - lats latitude tot 26 ... ... ... 1:4 ... - time Centered Time tot 26 ... ... ... 1:4 ... - sst Temperature tot 26 ... ... ... 1:4 ... - sstgap IF SST GT 20 THEN SST tot 26 ... ... ... 1:4 ... - - 2> ./data/profile_dsg.nc - DSG Feature type Profile - name title I J K L M N - rowsize number of obs for this profile ... ... ... ... 1:3 ... - profile profile ID: Cruise and Station ... ... ... ... 1:3 ... - time time ... ... ... ... 1:3 ... - latitude station latitude ... ... ... ... 1:3 ... - longitude - station longitude ... ... ... ... 1:3 ... - pot_temp_degc - pot_temp_degc ... ... tot 34 ... 1:3 ... - sal sal ... ... tot 34 ... 1:3 ... - depth DEPTH_M ... ... tot 34 ... 1:3 ... - - 3> ./data/DSG_ERDDAP_pmelTao5daySst.nc (default) - DSG Feature type Timeseries - name title I J K L M N - array Array ... ... ... ... 1:70 ... - station Station ... ... ... ... 1:70 ... - wmo_platform_code - WMO Platform Code ... ... ... ... 1:70 ... - longitude - Nominal Longitude ... ... ... ... 1:70 ... - latitude Nominal Latitude ... ... ... ... 1:70 ... - rowSize Number of Observations for this ... ... ... ... 1:70 ... - time Centered Time ... ... ... tot 2376 1:70 ... - depth Depth ... ... ... tot 2376 1:70 ... - T_25 Sea Surface Temperature ... ... ... tot 2376 1:70 ... - QT_5025 Sea Surface Temperature Quality ... ... ... tot 2376 1:70 ... - ST_6025 Sea Surface Temperature Source ... ... ... tot 2376 1:70 ... - str_temp FLOATSTR(T_25, "(F5.2)") ... ... ... tot 2376 1:70 ... - -list/m=1:5 t_25[T=@ave] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 1 to 5 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) (averaged, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE T_25 - 1 0n0e 0E 0 29.20 - 2 0n10w 10W 0 28.64 - 3 0n110w 110W 0 26.11 - 4 0n125w 125W 0 26.19 - 5 0n140w 140W 0 26.23 -list/m=1:5 t_25[T=@sum], t_25[T=@sum]/rowsize - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 1 to 5 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) (summed, each Timeseries) - EX#2 is T_25[T=@SUM]/ROWSIZE - FEATURE STATION LONGITUDE LATITUDE T_25 EX#2 - 1 0n0e 0E 0 1084. 29.30 - 2 0n10w 10W 0 1062. 28.71 - 3 0n110w 110W 0 608. 24.32 - 4 0n125w 125W 0 969. 26.20 - 5 0n140w 140W 0 975. 26.34 -list/m=1:5 t_25[T=@din] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 1 to 5 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) (integrated, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE T_25 - 1 0n0e 0E 0 2.548E+08 - 2 0n10w 10W 0 2.499E+08 - 3 0n110w 110W 0 1.399E+08 - 4 0n125w 125W 0 2.286E+08 - 5 0n140w 140W 0 2.289E+08 -list/m=30:31/t=1-jan-2017:15-feb-2017 t_25, t_25[t=@rsum], t_25[t=@iin] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : TIME: 15-JAN-2017 12:00 to 15-FEB-2017 00:00 (indef. integ.) - E (instance): 30 to 31 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) - T_25 is Sea Surface Temperature (degree_C) (running sum, each Timeseries) - T_25 is Sea Surface Temperature (degree_C) (indef. integ., each Timeseries) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 T_25 T_25 - - 30 2n155w 155W 2N 1 15-JAN-2017 12:00 25.75 26. 1.112E+07 - 30 2n155w 155W 2N 1 20-JAN-2017 12:00 26.26 52. 2.247E+07 - 30 2n155w 155W 2N 1 25-JAN-2017 12:00 26.44 78. 3.389E+07 - 30 2n155w 155W 2N 1 30-JAN-2017 12:00 26.54 105. 4.535E+07 - 30 2n155w 155W 2N 1 04-FEB-2017 12:00 26.58 132. 5.683E+07 - 30 2n155w 155W 2N 1 09-FEB-2017 12:00 26.87 158. 6.844E+07 - 30 2n155w 155W 2N 1 14-FEB-2017 12:00 26.79 185. 8.001E+07 - - 31 2n170w 170W 2N 1 15-JAN-2017 12:00 26.99 27. 1.166E+07 - 31 2n170w 170W 2N 1 20-JAN-2017 12:00 27.41 54. 2.350E+07 - 31 2n170w 170W 2N 1 25-JAN-2017 12:00 27.44 82. 3.536E+07 - 31 2n170w 170W 2N 1 30-JAN-2017 12:00 26.85 109. 4.696E+07 - - -cancel data/all - - -!!!!!!!!!!!! -! WEIGHTS -! @WGT weights for ave, integration - -use simple_traj_dsg -list sst[x=@wgt], 1000* earth_distance(lons, lats) - DATA SET: ./data/simple_traj_dsg.nc - ID is Trajectory-id - SST is Temperature (Degrees C) (weights for avg,int, each Trajectory) - EX#2 is 1000* EARTH_DISTANCE(LONS, LATS) - FEATURE ID LONGITUDE LATITUDE TIME SST EX#2 - - 1 1000 98W 20N 02-JAN-1970 12:00 236130. 0. - 1 1000 96W 21N 03-JAN-1970 12:00 236130. 236130. - 1 1000 95W 22.3N 04-JAN-1970 12:00 177703. 177703. - 1 1000 99W 23N 05-JAN-1970 12:00 417788. 417788. - 1 1000 90W 21N 06-JAN-1970 12:00 320255. 953993. - - 2 2000 108W 15N 03-JAN-1970 00:00 241436. 2015347. - 2 2000 106W 16N 05-JAN-1970 00:00 241436. 241436. - 2 2000 105W 14.5N 07-JAN-1970 00:00 198319. 198319. - 2 2000 109W 15N 09-JAN-1970 00:00 433707. 433707. - 2 2000 101W 15.6N 11-JAN-1970 00:00 276544. 860595. - 2 2000 108W 16N 13-JAN-1970 00:00 276544. 750263. - 2 2000 106W 17N 15-JAN-1970 00:00 240487. 240487. - 2 2000 105W 17.2N 17-JAN-1970 00:00 108584. 108584. - - 3 3000 138W 25N 02-JAN-1970 00:00 255570. 3521817. - 3 3000 136W 23.6N 04-JAN-1970 00:00 255570. 255570. - 3 3000 135W 23N 08-JAN-1970 00:00 121991. 121991. - 3 3000 139W 22.5N 13-JAN-1970 00:00 413926. 413926. - 3 3000 129W 21.1N 20-JAN-1970 00:00 364752. 1043916. - - 4 4000 116W 18N 02-JAN-1970 00:00 0. 1404639. - 4 4000 116W 18N 03-JAN-1970 00:00 0. 0. - 4 4000 116W 18N 04-JAN-1970 00:00 0. 0. - 4 4000 116W 18N 05-JAN-1970 00:00 0. 0. - 4 4000 116W 18N 06-JAN-1970 00:00 0. 0. - 4 4000 116W 18N 07-JAN-1970 00:00 0. 0. - 4 4000 116W 18N 08-JAN-1970 00:00 0. 0. - 4 4000 116W 18N 09-JAN-1970 00:00 0. 0. - -list sst[x=@ave] - DATA SET: ./data/simple_traj_dsg.nc - ID is Trajectory-id - SST is Temperature (Degrees C) (averaged, each Trajectory) - FEATURE ID SST - 1 1000 23.78 - 2 2000 24.78 - 3 3000 21.11 - 4 4000 ... - -cancel data/all -! note variable "time" doesn't have a missing-data flag so the last column -! for some reason shows NaN at the end of this listing. -use DSG_ERDDAP_pmelTao5daySst -list/m=62 t_25, t_25[t=@wgt], time[t=@ddf] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 62 - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) - T_25 is Sea Surface Temperature (degree_C) (weights for avg,int, each Timeseries) - TIME is Centered Time (seconds since 1970-01-01T00:00:00Z) (forward derivative, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 T_25 TIME - - 62 8n95w 95W 8N 1 15-JAN-2017 12:00 26.02 432000. 1.000 - 62 8n95w 95W 8N 1 20-JAN-2017 12:00 26.30 432000. 1.000 - 62 8n95w 95W 8N 1 25-JAN-2017 12:00 26.66 432000. 1.000 - 62 8n95w 95W 8N 1 30-JAN-2017 12:00 26.83 432000. 1.000 - 62 8n95w 95W 8N 1 04-FEB-2017 12:00 26.67 432000. 1.000 - 62 8n95w 95W 8N 1 09-FEB-2017 12:00 26.64 432000. 1.000 - 62 8n95w 95W 8N 1 14-FEB-2017 12:00 26.71 432000. 1.000 - 62 8n95w 95W 8N 1 19-FEB-2017 12:00 26.83 432000. 1.000 - 62 8n95w 95W 8N 1 24-FEB-2017 12:00 27.53 432000. NaN - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d -list/m=3:4 pco2, pco2[z=@wgt], press_db[z=@ddf] - DATA SET: ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - West Coast Carbon cruises - SUBSET : E (instance): 3 to 4 - PROFILE is Profile-id-id - PCO2 is PCO2 - PCO2 is PCO2 (weights for avg,int, each Profile-id) - PRESS_DB is PRESS_DB (forward derivative, each Profile-id) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME PCO2 PCO2 PRESS_DB - - 3 72 122W 36.71N 369.49 25-AUG-2011 19:23 1216. 0.06 1.000 - 3 72 122W 36.71N 369.55 25-AUG-2011 19:23 ... 9.38 -2.006 - 3 72 122W 36.71N 350.73 25-AUG-2011 19:23 1233. 34.85 -1.460 - 3 72 122W 36.71N 299.85 25-AUG-2011 19:23 1200. 75.52 -1.326 - 3 72 122W 36.71N 199.7 25-AUG-2011 19:23 1182. 74.93 -0.663 - 3 72 122W 36.71N 150 25-AUG-2011 19:23 1016. 37.30 -0.668 - 3 72 122W 36.71N 125.1 25-AUG-2011 19:23 1010. 24.81 -0.997 - 3 72 122W 36.71N 100.37 25-AUG-2011 19:23 940. 22.52 -0.902 - 3 72 122W 36.71N 80.05 25-AUG-2011 19:23 851. 20.17 -0.992 - 3 72 122W 36.71N 60.04 25-AUG-2011 19:23 790. 20.00 -0.999 - 3 72 122W 36.71N 40.05 25-AUG-2011 19:23 649. 20.02 -1.001 - 3 72 122W 36.71N 20 25-AUG-2011 19:23 405. 9.99 0.006 - 3 72 122W 36.71N 20.06 25-AUG-2011 19:23 ... 2.36 -2.025 - 3 72 122W 36.71N 15.27 25-AUG-2011 19:23 388. 4.97 -1.037 - 3 72 122W 36.71N 10.11 25-AUG-2011 19:23 361. 5.80 -1.110 - 3 72 122W 36.71N 3.68 25-AUG-2011 19:23 335. 3.20 0.009 - 3 72 122W 36.71N 3.71 25-AUG-2011 19:23 ... 0.03 ... - - 4 73 122W 36.74N 112.36 25-AUG-2011 22:03 1024. 0.10 -1.000 - 4 73 122W 36.74N 112.26 25-AUG-2011 22:03 ... 6.38 -1.984 - 4 73 122W 36.74N 99.61 25-AUG-2011 22:03 906. 16.15 -1.216 - 4 73 122W 36.74N 79.97 25-AUG-2011 22:03 847. 19.70 -1.003 - 4 73 122W 36.74N 60.21 25-AUG-2011 22:03 766. 14.87 -0.671 - 4 73 122W 36.74N 50.23 25-AUG-2011 22:03 766. 9.90 -0.991 - 4 73 122W 36.74N 40.42 25-AUG-2011 22:03 679. 10.05 -1.023 - 4 73 122W 36.74N 30.14 25-AUG-2011 22:03 626. 10.22 -0.994 - 4 73 122W 36.74N 19.98 25-AUG-2011 22:03 430. 7.61 -0.665 - 4 73 122W 36.74N 14.92 25-AUG-2011 22:03 378. 2.50 0.024 - 4 73 122W 36.74N 14.98 25-AUG-2011 22:03 ... 2.45 -2.024 - 4 73 122W 36.74N 10.02 25-AUG-2011 22:03 336. 5.96 -1.168 - 4 73 122W 36.74N 3.06 25-AUG-2011 22:03 349. 3.51 -0.014 - 4 73 122W 36.74N 3.01 25-AUG-2011 22:03 ... 0.05 ... - -cancel data/all - -!!!!!!!!!!!! -! EVENT MASK - -use simple_traj_dsg -list sst, sst[x=@evn:20], sst[x=@evn:24] - DATA SET: ./data/simple_traj_dsg.nc - ID is Trajectory-id - SST is Temperature (Degrees C) - SST is Temperature (Degrees C) (event mask of 20, each Trajectory) - SST is Temperature (Degrees C) (event mask of 24, each Trajectory) - FEATURE ID LONGITUDE LATITUDE TIME SST SST SST - - 1 1000 98W 20N 02-JAN-1970 12:00 24.41 0.000 0.000 - 1 1000 96W 21N 03-JAN-1970 12:00 25.22 0.000 0.000 - 1 1000 95W 22.3N 04-JAN-1970 12:00 12.92 1.000 1.000 - 1 1000 99W 23N 05-JAN-1970 12:00 23.97 2.000 1.000 - 1 1000 90W 21N 06-JAN-1970 12:00 28.03 2.000 2.000 - - 2 2000 108W 15N 03-JAN-1970 00:00 27.77 0.000 0.000 - 2 2000 106W 16N 05-JAN-1970 00:00 26.02 0.000 0.000 - 2 2000 105W 14.5N 07-JAN-1970 00:00 26.07 0.000 0.000 - 2 2000 109W 15N 09-JAN-1970 00:00 25.08 0.000 0.000 - 2 2000 101W 15.6N 11-JAN-1970 00:00 24.01 0.000 0.000 - 2 2000 108W 16N 13-JAN-1970 00:00 23.53 0.000 1.000 - 2 2000 106W 17N 15-JAN-1970 00:00 22.64 0.000 1.000 - 2 2000 105W 17.2N 17-JAN-1970 00:00 21.64 0.000 1.000 - - 3 3000 138W 25N 02-JAN-1970 00:00 23.41 0.000 0.000 - 3 3000 136W 23.6N 04-JAN-1970 00:00 18.77 1.000 0.000 - 3 3000 135W 23N 08-JAN-1970 00:00 17.97 1.000 0.000 - 3 3000 139W 22.5N 13-JAN-1970 00:00 21.05 2.000 0.000 - 3 3000 129W 21.1N 20-JAN-1970 00:00 22.27 2.000 0.000 - - 4 4000 116W 18N 02-JAN-1970 00:00 27.77 0.000 0.000 - 4 4000 116W 18N 03-JAN-1970 00:00 26.02 0.000 0.000 - 4 4000 116W 18N 04-JAN-1970 00:00 26.07 0.000 0.000 - 4 4000 116W 18N 05-JAN-1970 00:00 25.08 0.000 0.000 - 4 4000 116W 18N 06-JAN-1970 00:00 24.01 0.000 0.000 - 4 4000 116W 18N 07-JAN-1970 00:00 23.53 0.000 1.000 - 4 4000 116W 18N 08-JAN-1970 00:00 22.64 0.000 1.000 - 4 4000 116W 18N 09-JAN-1970 00:00 21.64 0.000 1.000 - -use DSG_ERDDAP_pmelTao5daySst.nc -let/title="Where station is 5n155w, 8n95w" mask = element_index_str (station, {"5n155w", "8n95w"}) -set data/fmask=mask DSG_ERDDAP_pmelTao5daySst -list t_25, t_25[t=@evn:27.4] - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature -Mask on features has been set: Where station is 5n155w, 8n95w - STATION is Timeseries-id - T_25 is Sea Surface Temperature (degree_C) - T_25 is Sea Surface Temperature (degree_C) (event mask of 27.4, each Timeseries) - FEATURE STATION LONGITUDE LATITUDE DEPTH TIME T_25 T_25 - - 46 5n155w 155W 5N 1 15-JAN-2017 12:00 27.37 0.000 - 46 5n155w 155W 5N 1 20-JAN-2017 12:00 27.32 0.000 - 46 5n155w 155W 5N 1 25-JAN-2017 12:00 27.35 0.000 - 46 5n155w 155W 5N 1 30-JAN-2017 12:00 27.70 1.000 - 46 5n155w 155W 5N 1 04-FEB-2017 12:00 27.63 1.000 - 46 5n155w 155W 5N 1 09-FEB-2017 12:00 27.45 1.000 - 46 5n155w 155W 5N 1 14-FEB-2017 12:00 27.02 2.000 - 46 5n155w 155W 5N 1 19-FEB-2017 12:00 27.00 2.000 - - 62 8n95w 95W 8N 1 15-JAN-2017 12:00 26.02 0.000 - 62 8n95w 95W 8N 1 20-JAN-2017 12:00 26.30 0.000 - 62 8n95w 95W 8N 1 25-JAN-2017 12:00 26.66 0.000 - 62 8n95w 95W 8N 1 30-JAN-2017 12:00 26.83 0.000 - 62 8n95w 95W 8N 1 04-FEB-2017 12:00 26.67 0.000 - 62 8n95w 95W 8N 1 09-FEB-2017 12:00 26.64 0.000 - 62 8n95w 95W 8N 1 14-FEB-2017 12:00 26.71 0.000 - 62 8n95w 95W 8N 1 19-FEB-2017 12:00 26.83 0.000 - 62 8n95w 95W 8N 1 24-FEB-2017 12:00 27.53 1.000 - - -use WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d -list/m=3:4 pco2, pco2[z=@evn:1000], pco2[z=@evn:500] - DATA SET: ./data/WestCoastCarbon_9d9c_f562_77b5_5f8e_5d19_7b1d.nc - West Coast Carbon cruises - SUBSET : E (instance): 3 to 4 - PROFILE is Profile-id-id - PCO2 is PCO2 - PCO2 is PCO2 (event mask of 1000, each Profile-id) - PCO2 is PCO2 (event mask of 500, each Profile-id) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME PCO2 PCO2 PCO2 - - 3 72 122W 36.71N 369.49 25-AUG-2011 19:23 1216. 0.000 0.000 - 3 72 122W 36.71N 369.55 25-AUG-2011 19:23 ... 0.000 0.000 - 3 72 122W 36.71N 350.73 25-AUG-2011 19:23 1233. 0.000 0.000 - 3 72 122W 36.71N 299.85 25-AUG-2011 19:23 1200. 0.000 0.000 - 3 72 122W 36.71N 199.7 25-AUG-2011 19:23 1182. 0.000 0.000 - 3 72 122W 36.71N 150 25-AUG-2011 19:23 1016. 0.000 0.000 - 3 72 122W 36.71N 125.1 25-AUG-2011 19:23 1010. 0.000 0.000 - 3 72 122W 36.71N 100.37 25-AUG-2011 19:23 940. 1.000 0.000 - 3 72 122W 36.71N 80.05 25-AUG-2011 19:23 851. 1.000 0.000 - 3 72 122W 36.71N 60.04 25-AUG-2011 19:23 790. 1.000 0.000 - 3 72 122W 36.71N 40.05 25-AUG-2011 19:23 649. 1.000 0.000 - 3 72 122W 36.71N 20 25-AUG-2011 19:23 405. 1.000 1.000 - 3 72 122W 36.71N 20.06 25-AUG-2011 19:23 ... 1.000 1.000 - 3 72 122W 36.71N 15.27 25-AUG-2011 19:23 388. 1.000 1.000 - 3 72 122W 36.71N 10.11 25-AUG-2011 19:23 361. 1.000 1.000 - 3 72 122W 36.71N 3.68 25-AUG-2011 19:23 335. 1.000 1.000 - 3 72 122W 36.71N 3.71 25-AUG-2011 19:23 ... 1.000 1.000 - - 4 73 122W 36.74N 112.36 25-AUG-2011 22:03 1024. 0.000 0.000 - 4 73 122W 36.74N 112.26 25-AUG-2011 22:03 ... 0.000 0.000 - 4 73 122W 36.74N 99.61 25-AUG-2011 22:03 906. 0.000 0.000 - 4 73 122W 36.74N 79.97 25-AUG-2011 22:03 847. 0.000 0.000 - 4 73 122W 36.74N 60.21 25-AUG-2011 22:03 766. 0.000 0.000 - 4 73 122W 36.74N 50.23 25-AUG-2011 22:03 766. 0.000 0.000 - 4 73 122W 36.74N 40.42 25-AUG-2011 22:03 679. 0.000 0.000 - 4 73 122W 36.74N 30.14 25-AUG-2011 22:03 626. 0.000 0.000 - 4 73 122W 36.74N 19.98 25-AUG-2011 22:03 430. 0.000 1.000 - 4 73 122W 36.74N 14.92 25-AUG-2011 22:03 378. 0.000 1.000 - 4 73 122W 36.74N 14.98 25-AUG-2011 22:03 ... 0.000 1.000 - 4 73 122W 36.74N 10.02 25-AUG-2011 22:03 336. 0.000 1.000 - 4 73 122W 36.74N 3.06 25-AUG-2011 22:03 349. 0.000 1.000 - 4 73 122W 36.74N 3.01 25-AUG-2011 22:03 ... 0.000 1.000 - - -!!!!!!!!!!!! -! CIA, CIB, CDA, CDB not implemented at this time. -! issue a note and just do the operation on the full list - -use simple_traj_dsg -list sstgap, sstgap[x=@cda], sstgap[x=@cdb], sstgap[x=@cia], sstgap[x=@cib] - DATA SET: ./data/simple_traj_dsg.nc - ID is Trajectory-id - SSTGAP is IF SST GT 20 THEN SST - SSTGAP is IF SST GT 20 THEN SST (closest dist above by 1 pts) - SSTGAP is IF SST GT 20 THEN SST (closest dist below by 1 pts) - SSTGAP is IF SST GT 20 THEN SST (closest index above by 1 pts) - SSTGAP is IF SST GT 20 THEN SST (closest index below by 1 pts) - FEATURE ID LONGITUDE LATITUDE TIME SSTGAP SSTGAP SSTGAP SSTGAP SSTGAP - - 1 1000 98W 20N 02-JAN-1970 12:00 24.41 0.000 0.000 0.000 0.000 - 1 1000 96W 21N 03-JAN-1970 12:00 25.22 0.000 0.000 0.000 0.000 - 1 1000 95W 22.3N 04-JAN-1970 12:00 ... 1.960 1.960 1.000 1.000 - 1 1000 99W 23N 05-JAN-1970 12:00 23.97 0.000 0.000 0.000 0.000 - 1 1000 90W 21N 06-JAN-1970 12:00 28.03 0.000 0.000 0.000 0.000 - - 2 2000 108W 15N 03-JAN-1970 00:00 27.77 0.000 0.000 0.000 0.000 - 2 2000 106W 16N 05-JAN-1970 00:00 ... 3.920 1.960 2.000 1.000 - 2 2000 105W 14.5N 07-JAN-1970 00:00 ... 1.960 3.920 1.000 2.000 - 2 2000 109W 15N 09-JAN-1970 00:00 25.08 0.000 0.000 0.000 0.000 - 2 2000 101W 15.6N 11-JAN-1970 00:00 24.01 0.000 0.000 0.000 0.000 - 2 2000 108W 16N 13-JAN-1970 00:00 23.53 0.000 0.000 0.000 0.000 - 2 2000 106W 17N 15-JAN-1970 00:00 ... 5.880 1.960 3.000 1.000 - 2 2000 105W 17.2N 17-JAN-1970 00:00 ... 3.920 3.920 2.000 2.000 - - 3 3000 138W 25N 02-JAN-1970 00:00 ... 1.960 5.880 1.000 3.000 - 3 3000 136W 23.6N 04-JAN-1970 00:00 23.41 0.000 0.000 0.000 0.000 - 3 3000 135W 23N 08-JAN-1970 00:00 ... 1.960 1.960 1.000 1.000 - 3 3000 139W 22.5N 13-JAN-1970 00:00 21.05 0.000 0.000 0.000 0.000 - 3 3000 129W 21.1N 20-JAN-1970 00:00 22.27 0.000 0.000 0.000 0.000 - - 4 4000 116W 18N 02-JAN-1970 00:00 37.77 0.000 0.000 0.000 0.000 - 4 4000 116W 18N 03-JAN-1970 00:00 ... 7.840 1.960 4.000 1.000 - 4 4000 116W 18N 04-JAN-1970 00:00 ... 5.880 3.920 3.000 2.000 - 4 4000 116W 18N 05-JAN-1970 00:00 ... 3.920 5.880 2.000 3.000 - 4 4000 116W 18N 06-JAN-1970 00:00 ... 1.960 7.840 1.000 4.000 - 4 4000 116W 18N 07-JAN-1970 00:00 23.53 0.000 0.000 0.000 0.000 - 4 4000 116W 18N 08-JAN-1970 00:00 22.64 0.000 0.000 0.000 0.000 - 4 4000 116W 18N 09-JAN-1970 00:00 21.64 0.000 0.000 0.000 0.000 - - -GO bn_reset bn_dsg_one_e_val -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_one_e_val -GO bn_dsg_one_e_val -! bn_dsg_one_e_val.jnl -! -! Return a feature-variable at a specific M. -! earlier versions listed the value at m=1 -! in the grave-accent returns. - -use DSG_ERDDAP_pmelTao5daySst - -list/m=1:6 station, rowsize - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 1 to 6 - STATION is Timeseries-id - STATION is Station - ROWSIZE is Number of Observations for this TimeSeries - FEATURE STATION LONGITUDE LATITUDE STATION ROWSIZE - 1 0n0e 0E 0 "0n0e" 37.00 - 2 0n10w 10W 0 "0n10w" 37.00 - 3 0n110w 110W 0 "0n110w" 25.00 - 4 0n125w 125W 0 "0n125w" 37.00 - 5 0n140w 140W 0 "0n140w" 37.00 - 6 0n155w 155W 0 "0n155w" 37.00 -list/m=6 station - DATA SET: ./data/DSG_ERDDAP_pmelTao5daySst.nc - TAO/TRITON, RAMA, and PIRATA Buoys, 5-Day, 1977-present, Sea Surface Temperature - SUBSET : E (instance): 6 - STATION is Timeseries-id - STATION is Station - FEATURE STATION LONGITUDE LATITUDE STATION - 6 0n155w 155W 0 "0n155w" - - -! Previous versions listed the value at m=1. - -say `station[m=3]` `station[e=3]` - !-> MESSAGE/CONTINUE 0n110w 0n110w -0n110w 0n110w -say `station[m=5]` `station[e=5]` - !-> MESSAGE/CONTINUE 0n140w 0n140w -0n140w 0n140w - -say `station[m=3]` `longitude[m=3]` `rowsize[m=3]` - !-> MESSAGE/CONTINUE 0n110w 250 25 -0n110w 250 25 - -GO bn_reset bn_dsg_list_comma_tab -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_list_comma_tab -GO bn_dsg_list_comma_tab -! bn_dsg_list_comma_tab -! Tests of comma- and tab-separated output from DSG datasets -! 5/30/2019 - -use dsg_cross_dateline - -! default listing makes the big header -! and includes coordinate and feature info - -list/format=comma temp, lons - DATA SET: ./data/dsg_cross_dateline.nc - Column 1: ID is Trajectory-id - Column 2: TIME - Column 3: LONGITUDE (degrees_east) - Column 4: LATITUDE (degrees_north) - Column 5: TEMP is Temperature (Degrees C) BAD FLAG : -1.E+34 - Column 6: LONS is longitude (degrees_east) BAD FLAG : -1.E+34 -ID,TIME,LONGITUDE,LATITUDE,TEMP,LONS -096U20160108,09-FEB-2017 12:00,172E,20S,28.08,172 -096U20160108,14-FEB-2017 12:00,174W,10S,28.2,-174 -096U20160108,19-FEB-2017 12:00,175E,30N,29.01,175 -096U20160108,24-FEB-2017 12:00,171W,40N,29.24,-171 -096U20160108,01-MAR-2017 12:00,174W,20S,29.14,-174 -A 2017 01 14,02-MAR-2017 12:00,150E,15S,29.57,150 -A 2017 01 14,03-MAR-2017 12:00,170W,20N,29.26,-170 -A 2017 01 14,04-MAR-2017 12:00,120E,10N,28.53,120 -09AR20151209,05-MAR-2017 12:00,102E,10N,28.97,102 -09AR20151209,06-MAR-2017 12:00,100E,20N,28.03,100 -09AR20151209,07-MAR-2017 12:00,123E,30N,27.77,123 -09AR20151209,08-MAR-2017 12:00,100E,40N,26.91,100 -09AR20151209,09-MAR-2017 12:00,110E,50N,26.07,110 - -! subset in longitude -list/format=comma/x=0:180 temp, lons - DATA SET: ./data/dsg_cross_dateline.nc - Column 1: ID is Trajectory-id - Column 2: TIME - Column 3: LONGITUDE (degrees_east) - Column 4: LATITUDE (degrees_north) - Column 5: TEMP is Temperature (Degrees C) BAD FLAG : -1.E+34 - Column 6: LONS is longitude (degrees_east) BAD FLAG : -1.E+34 -ID,TIME,LONGITUDE,LATITUDE,TEMP,LONS -096U20160108,09-FEB-2017 12:00,172E,20S,28.08,172 -096U20160108,19-FEB-2017 12:00,175E,30N,29.01,175 -A 2017 01 14,02-MAR-2017 12:00,150E,15S,29.57,150 -A 2017 01 14,04-MAR-2017 12:00,120E,10N,28.53,120 -09AR20151209,05-MAR-2017 12:00,102E,10N,28.97,102 -09AR20151209,06-MAR-2017 12:00,100E,20N,28.03,100 -09AR20151209,07-MAR-2017 12:00,123E,30N,27.77,123 -09AR20151209,08-MAR-2017 12:00,100E,40N,26.91,100 -09AR20151209,09-MAR-2017 12:00,110E,50N,26.07,110 -list/x=0:180/m=2:3/form=comma temp, lons - DATA SET: ./data/dsg_cross_dateline.nc - Column 1: ID is Trajectory-id - Column 2: TIME - Column 3: LONGITUDE (degrees_east) - Column 4: LATITUDE (degrees_north) - Column 5: TEMP is Temperature (Degrees C) BAD FLAG : -1.E+34 - Column 6: LONS is longitude (degrees_east) BAD FLAG : -1.E+34 -ID,TIME,LONGITUDE,LATITUDE,TEMP,LONS -A 2017 01 14,02-MAR-2017 12:00,150E,15S,29.57,150 -A 2017 01 14,04-MAR-2017 12:00,120E,10N,28.53,120 -09AR20151209,05-MAR-2017 12:00,102E,10N,28.97,102 -09AR20151209,06-MAR-2017 12:00,100E,20N,28.03,100 -09AR20151209,07-MAR-2017 12:00,123E,30N,27.77,123 -09AR20151209,08-MAR-2017 12:00,100E,40N,26.91,100 -09AR20151209,09-MAR-2017 12:00,110E,50N,26.07,110 - -! when coordinate variables are specified they are unformatted. -list/x=0:180/m=2:3/form=comma lons, lats, time, temp - DATA SET: ./data/dsg_cross_dateline.nc - Column 1: ID is Trajectory-id - Column 2: TIME - Column 3: LONGITUDE (degrees_east) - Column 4: LATITUDE (degrees_north) - Column 5: LONS is longitude (degrees_east) BAD FLAG : -1.E+34 - Column 6: LATS is latitude (degrees_north) BAD FLAG : -1.E+34 - Column 7: TIME is Centered Time (seconds since 1970-01-01T00:00:00Z) BAD FLAG : NaN - Column 8: TEMP is Temperature (Degrees C) BAD FLAG : -1.E+34 -ID,TIME,LONGITUDE,LATITUDE,LONS,LATS,TIME,TEMP -A 2017 01 14,02-MAR-2017 12:00,150E,15S,150,-15,1488456000,29.57 -A 2017 01 14,04-MAR-2017 12:00,120E,10N,120,10,1488628800,28.53 -09AR20151209,05-MAR-2017 12:00,102E,10N,102,10,1488715200,28.97 -09AR20151209,06-MAR-2017 12:00,100E,20N,100,20,1488801600,28.03 -09AR20151209,07-MAR-2017 12:00,123E,30N,123,30,1488888000,27.77 -09AR20151209,08-MAR-2017 12:00,100E,40N,100,40,1488974400,26.91 -09AR20151209,09-MAR-2017 12:00,110E,50N,110,50,1489060800,26.07 - -! /nohead removes all the header except one line with column names -list/x=0:180/m=2:3/form=comma/nohead temp, lats -ID,TIME,LONGITUDE,LATITUDE,TEMP,LATS -A 2017 01 14,02-MAR-2017 12:00,150E,15S,29.57,-15 -A 2017 01 14,04-MAR-2017 12:00,120E,10N,28.53,10 -09AR20151209,05-MAR-2017 12:00,102E,10N,28.97,10 -09AR20151209,06-MAR-2017 12:00,100E,20N,28.03,20 -09AR20151209,07-MAR-2017 12:00,123E,30N,27.77,30 -09AR20151209,08-MAR-2017 12:00,100E,40N,26.91,40 -09AR20151209,09-MAR-2017 12:00,110E,50N,26.07,50 - -! /norow removes the coordinate data -list/x=0:180/m=2:3/form=comma/norow temp, lons - DATA SET: ./data/dsg_cross_dateline.nc - Column 1: TEMP is Temperature (Degrees C) BAD FLAG : -1.E+34 - Column 2: LONS is longitude (degrees_east) BAD FLAG : -1.E+34 -TEMP,LONS - 29.57,150 - 28.53,120 - 28.97,102 - 28.03,100 - 27.77,123 - 26.91,100 - 26.07,110 - -! /norow and /nohead. -list/x=0:180/m=2:3/form=comma/norow/nohead lons, lats, time, temp -LONS,LATS,TIME,TEMP - 150,-15,1488456000,29.57 - 120,10,1488628800,28.53 - 102,10,1488715200,28.97 - 100,20,1488801600,28.03 - 123,30,1488888000,27.77 - 100,40,1488974400,26.91 - 110,50,1489060800,26.07 - -! tab formats -list/format=tab temp, lons - DATA SET: ./data/dsg_cross_dateline.nc - Column 1: ID is Trajectory-id - Column 2: TIME - Column 3: LONGITUDE (degrees_east) - Column 4: LATITUDE (degrees_north) - Column 5: TEMP is Temperature (Degrees C) BAD FLAG : -1.E+34 - Column 6: LONS is longitude (degrees_east) BAD FLAG : -1.E+34 -ID TIME LONGITUDE LATITUDE TEMP LONS -096U20160108 09-FEB-2017 12:00 172E 20S 28.08 172 -096U20160108 14-FEB-2017 12:00 174W 10S 28.2 -174 -096U20160108 19-FEB-2017 12:00 175E 30N 29.01 175 -096U20160108 24-FEB-2017 12:00 171W 40N 29.24 -171 -096U20160108 01-MAR-2017 12:00 174W 20S 29.14 -174 -A 2017 01 14 02-MAR-2017 12:00 150E 15S 29.57 150 -A 2017 01 14 03-MAR-2017 12:00 170W 20N 29.26 -170 -A 2017 01 14 04-MAR-2017 12:00 120E 10N 28.53 120 -09AR20151209 05-MAR-2017 12:00 102E 10N 28.97 102 -09AR20151209 06-MAR-2017 12:00 100E 20N 28.03 100 -09AR20151209 07-MAR-2017 12:00 123E 30N 27.77 123 -09AR20151209 08-MAR-2017 12:00 100E 40N 26.91 100 -09AR20151209 09-MAR-2017 12:00 110E 50N 26.07 110 - -! subset in longitude -list/format=tab/x=0:180 temp, lons - DATA SET: ./data/dsg_cross_dateline.nc - Column 1: ID is Trajectory-id - Column 2: TIME - Column 3: LONGITUDE (degrees_east) - Column 4: LATITUDE (degrees_north) - Column 5: TEMP is Temperature (Degrees C) BAD FLAG : -1.E+34 - Column 6: LONS is longitude (degrees_east) BAD FLAG : -1.E+34 -ID TIME LONGITUDE LATITUDE TEMP LONS -096U20160108 09-FEB-2017 12:00 172E 20S 28.08 172 -096U20160108 19-FEB-2017 12:00 175E 30N 29.01 175 -A 2017 01 14 02-MAR-2017 12:00 150E 15S 29.57 150 -A 2017 01 14 04-MAR-2017 12:00 120E 10N 28.53 120 -09AR20151209 05-MAR-2017 12:00 102E 10N 28.97 102 -09AR20151209 06-MAR-2017 12:00 100E 20N 28.03 100 -09AR20151209 07-MAR-2017 12:00 123E 30N 27.77 123 -09AR20151209 08-MAR-2017 12:00 100E 40N 26.91 100 -09AR20151209 09-MAR-2017 12:00 110E 50N 26.07 110 -list/x=0:180/m=2:3/form=tab temp, lons - DATA SET: ./data/dsg_cross_dateline.nc - Column 1: ID is Trajectory-id - Column 2: TIME - Column 3: LONGITUDE (degrees_east) - Column 4: LATITUDE (degrees_north) - Column 5: TEMP is Temperature (Degrees C) BAD FLAG : -1.E+34 - Column 6: LONS is longitude (degrees_east) BAD FLAG : -1.E+34 -ID TIME LONGITUDE LATITUDE TEMP LONS -A 2017 01 14 02-MAR-2017 12:00 150E 15S 29.57 150 -A 2017 01 14 04-MAR-2017 12:00 120E 10N 28.53 120 -09AR20151209 05-MAR-2017 12:00 102E 10N 28.97 102 -09AR20151209 06-MAR-2017 12:00 100E 20N 28.03 100 -09AR20151209 07-MAR-2017 12:00 123E 30N 27.77 123 -09AR20151209 08-MAR-2017 12:00 100E 40N 26.91 100 -09AR20151209 09-MAR-2017 12:00 110E 50N 26.07 110 - -! when coordinate variables are specified they are unformatted. -list/x=0:180/m=2:3/form=tab lons, lats, time, temp - DATA SET: ./data/dsg_cross_dateline.nc - Column 1: ID is Trajectory-id - Column 2: TIME - Column 3: LONGITUDE (degrees_east) - Column 4: LATITUDE (degrees_north) - Column 5: LONS is longitude (degrees_east) BAD FLAG : -1.E+34 - Column 6: LATS is latitude (degrees_north) BAD FLAG : -1.E+34 - Column 7: TIME is Centered Time (seconds since 1970-01-01T00:00:00Z) BAD FLAG : NaN - Column 8: TEMP is Temperature (Degrees C) BAD FLAG : -1.E+34 -ID TIME LONGITUDE LATITUDE LONS LATS TIME TEMP -A 2017 01 14 02-MAR-2017 12:00 150E 15S 150 -15 1488456000 29.57 -A 2017 01 14 04-MAR-2017 12:00 120E 10N 120 10 1488628800 28.53 -09AR20151209 05-MAR-2017 12:00 102E 10N 102 10 1488715200 28.97 -09AR20151209 06-MAR-2017 12:00 100E 20N 100 20 1488801600 28.03 -09AR20151209 07-MAR-2017 12:00 123E 30N 123 30 1488888000 27.77 -09AR20151209 08-MAR-2017 12:00 100E 40N 100 40 1488974400 26.91 -09AR20151209 09-MAR-2017 12:00 110E 50N 110 50 1489060800 26.07 - -! /nohead removes all the header except one line with column names -list/x=0:180/m=2:3/form=tab/nohead temp, lons -ID TIME LONGITUDE LATITUDE TEMP LONS -A 2017 01 14 02-MAR-2017 12:00 150E 15S 29.57 150 -A 2017 01 14 04-MAR-2017 12:00 120E 10N 28.53 120 -09AR20151209 05-MAR-2017 12:00 102E 10N 28.97 102 -09AR20151209 06-MAR-2017 12:00 100E 20N 28.03 100 -09AR20151209 07-MAR-2017 12:00 123E 30N 27.77 123 -09AR20151209 08-MAR-2017 12:00 100E 40N 26.91 100 -09AR20151209 09-MAR-2017 12:00 110E 50N 26.07 110 - -! /norow removes the coordinate data -list/x=0:180/m=2:3/form=tab/norow temp, lons - DATA SET: ./data/dsg_cross_dateline.nc - Column 1: TEMP is Temperature (Degrees C) BAD FLAG : -1.E+34 - Column 2: LONS is longitude (degrees_east) BAD FLAG : -1.E+34 -TEMP LONS - 29.57 150 - 28.53 120 - 28.97 102 - 28.03 100 - 27.77 123 - 26.91 100 - 26.07 110 - -! /norow and /nohead. -list/x=0:180/m=2:3/form=tab/norow/nohead lons, lats, time, temp -LONS LATS TIME TEMP - 150 -15 1488456000 29.57 - 120 10 1488628800 28.53 - 102 10 1488715200 28.97 - 100 20 1488801600 28.03 - 123 30 1488888000 27.77 - 100 40 1488974400 26.91 - 110 50 1489060800 26.07 - - -! Test profile data, automatically include depth in the coordinates - -use profile_dsg -let pmask = {1,,1} -set data/fmask=pmask profile_dsg -list/form=comma sal, pot_temp_degc - DATA SET: ./data/profile_dsg.nc - Column 1: PROFILE is Profile-id - Column 2: TIME - Column 3: LONGITUDE (degrees_east) - Column 4: LATITUDE (degrees_north) - Column 5: DEPTH (m) - Column 6: SAL is sal BAD FLAG : -999 - Column 7: POT_TEMP_DEGC is pot_temp_degc BAD FLAG : -999 -PROFILE,TIME,LONGITUDE,LATITUDE,DEPTH (m),SAL,POT_TEMP_DEGC -1,13-AUG-2009 00:00,123.1W,41.3N,33.2111,33.6806793212890,8.64810562133789 -1,13-AUG-2009 00:00,123.1W,41.3N,31.5953,33.6773796081543,8.65287399291992 -1,13-AUG-2009 00:00,123.1W,41.3N,24.9692,33.6072807312011,-999 -1,13-AUG-2009 00:00,123.1W,41.3N,20.5466,33.5483703613281,8.97160434722900 -1,13-AUG-2009 00:00,123.1W,41.3N,15.312,33.4959793090820,9.0455904006958 -1,13-AUG-2009 00:00,123.1W,41.3N,10.1546,33.4687385559082,9.45806694030761 -1,13-AUG-2009 00:00,123.1W,41.3N,4.9567,33.4580497741699,10.6052703857421 -1,13-AUG-2009 00:00,123.1W,41.3N,2.12,33.4360084533691,11.4713001251220 -3,12-AUG-2009 00:00,121W,38.8N,33.2111,34.8310012817382,8.43563938140869 -3,12-AUG-2009 00:00,121W,38.8N,32.2686,34.8194694519043,8.59558486938476 -3,12-AUG-2009 00:00,121W,38.8N,30.491,35.6285514831543,9.04855346679687 -3,12-AUG-2009 00:00,121W,38.8N,26.6257,35.3219795227050,8.67933559417724 -3,12-AUG-2009 00:00,121W,38.8N,23.495,32.9634513854980,8.82941341400146 -3,12-AUG-2009 00:00,121W,38.8N,20.9152,32.8312187194824,-999 -3,12-AUG-2009 00:00,121W,38.8N,17.9293,32.7035293579101,-999 -3,12-AUG-2009 00:00,121W,38.8N,14.8822,32.6279487609863,-999 -3,12-AUG-2009 00:00,121W,38.8N,11.8737,32.4748497009277,15.8626499176025 -3,12-AUG-2009 00:00,121W,38.8N,8.8551,32.4465217590332,16.2025508880615 -3,12-AUG-2009 00:00,121W,38.8N,5.823,32.4125289916992,16.4692497253418 -3,12-AUG-2009 00:00,121W,38.8N,3.7747,32.3826217651367,16.8142890930175 -3,12-AUG-2009 00:00,121W,38.8N,2.12,32.3826217651367,16.8142890930175 - - -GO bn_reset bn_dsg_if_exprns -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_if_exprns -GO bn_dsg_if_exprns -! bn_dsg_if_exprns.jnl -! Test computing expressions with IF -! ACM 7/11/19 - -! The data has a lot of missing values. Make sure those are handled -! correctly - -use uwnd_dsg.nc - -! Defining masks IF condition THEN 1 - -let ugt = if uwnd_abs gt 6. then 1 -let uge = if uwnd_abs ge 6.76 then 1 -list uwnd_abs, ugt, uge - DATA SET: ./data/uwnd_dsg.nc - TRAJECTORY is Trajectory-id - UWND_ABS is Eastward wind magnitude (m s-1) - UGT is IF UWND_ABS GT 6. THEN 1 - UGE is IF UWND_ABS GE 6.76 THEN 1 - FEATURE TRAJECTORY LONGITUDE LATITUDE TIME UWND_ABS UGT UGE - - 1 1002.0 98W 20N 22-AUG-2017 07:34 5.800 ... ... - 1 1002.0 96W 21N 22-AUG-2017 07:35 5.350 ... ... - 1 1002.0 95W 22.3N 22-AUG-2017 07:36 ... ... ... - 1 1002.0 99W 23N 22-AUG-2017 07:37 ... ... ... - 1 1002.0 90W 21N 22-AUG-2017 07:38 ... ... ... - 1 1002.0 108W 15N 22-AUG-2017 07:39 6.710 1.000 ... - 1 1002.0 106W 16N 22-AUG-2017 07:40 6.100 1.000 ... - 1 1002.0 105W 14.5N 22-AUG-2017 07:41 ... ... ... - 1 1002.0 109W 15N 22-AUG-2017 07:42 ... ... ... - 1 1002.0 101W 15.6N 22-AUG-2017 07:43 ... ... ... - 1 1002.0 108W 16N 22-AUG-2017 07:44 6.270 1.000 ... - 1 1002.0 106W 17N 22-AUG-2017 07:45 6.760 1.000 1.000 - 1 1002.0 105W 17.2N 22-AUG-2017 07:46 7.350 1.000 1.000 - 1 1002.0 138W 25N 22-AUG-2017 07:47 7.120 1.000 1.000 - 1 1002.0 136W 23.6N 22-AUG-2017 07:48 ... ... ... - -let ult = if uwnd_abs LT 6. then 1 -let ule = if uwnd_abs LE 6.76 then 1 -list uwnd_abs, ult, ule - DATA SET: ./data/uwnd_dsg.nc - TRAJECTORY is Trajectory-id - UWND_ABS is Eastward wind magnitude (m s-1) - ULT is IF UWND_ABS LT 6. THEN 1 - ULE is IF UWND_ABS LE 6.76 THEN 1 - FEATURE TRAJECTORY LONGITUDE LATITUDE TIME UWND_ABS ULT ULE - - 1 1002.0 98W 20N 22-AUG-2017 07:34 5.800 1.000 1.000 - 1 1002.0 96W 21N 22-AUG-2017 07:35 5.350 1.000 1.000 - 1 1002.0 95W 22.3N 22-AUG-2017 07:36 ... ... ... - 1 1002.0 99W 23N 22-AUG-2017 07:37 ... ... ... - 1 1002.0 90W 21N 22-AUG-2017 07:38 ... ... ... - 1 1002.0 108W 15N 22-AUG-2017 07:39 6.710 ... 1.000 - 1 1002.0 106W 16N 22-AUG-2017 07:40 6.100 ... 1.000 - 1 1002.0 105W 14.5N 22-AUG-2017 07:41 ... ... ... - 1 1002.0 109W 15N 22-AUG-2017 07:42 ... ... ... - 1 1002.0 101W 15.6N 22-AUG-2017 07:43 ... ... ... - 1 1002.0 108W 16N 22-AUG-2017 07:44 6.270 ... 1.000 - 1 1002.0 106W 17N 22-AUG-2017 07:45 6.760 ... 1.000 - 1 1002.0 105W 17.2N 22-AUG-2017 07:46 7.350 ... ... - 1 1002.0 138W 25N 22-AUG-2017 07:47 7.120 ... ... - 1 1002.0 136W 23.6N 22-AUG-2017 07:48 ... ... ... - -let une = if uwnd_abs NE 6.76 then 1 -let ueq = if uwnd_abs EQ 6.76 then 1 -list uwnd_abs, une, ueq - DATA SET: ./data/uwnd_dsg.nc - TRAJECTORY is Trajectory-id - UWND_ABS is Eastward wind magnitude (m s-1) - UNE is IF UWND_ABS NE 6.76 THEN 1 - UEQ is IF UWND_ABS EQ 6.76 THEN 1 - FEATURE TRAJECTORY LONGITUDE LATITUDE TIME UWND_ABS UNE UEQ - - 1 1002.0 98W 20N 22-AUG-2017 07:34 5.800 1.000 ... - 1 1002.0 96W 21N 22-AUG-2017 07:35 5.350 1.000 ... - 1 1002.0 95W 22.3N 22-AUG-2017 07:36 ... ... ... - 1 1002.0 99W 23N 22-AUG-2017 07:37 ... ... ... - 1 1002.0 90W 21N 22-AUG-2017 07:38 ... ... ... - 1 1002.0 108W 15N 22-AUG-2017 07:39 6.710 1.000 ... - 1 1002.0 106W 16N 22-AUG-2017 07:40 6.100 1.000 ... - 1 1002.0 105W 14.5N 22-AUG-2017 07:41 ... ... ... - 1 1002.0 109W 15N 22-AUG-2017 07:42 ... ... ... - 1 1002.0 101W 15.6N 22-AUG-2017 07:43 ... ... ... - 1 1002.0 108W 16N 22-AUG-2017 07:44 6.270 1.000 ... - 1 1002.0 106W 17N 22-AUG-2017 07:45 6.760 ... 1.000 - 1 1002.0 105W 17.2N 22-AUG-2017 07:46 7.350 1.000 ... - 1 1002.0 138W 25N 22-AUG-2017 07:47 7.120 1.000 ... - 1 1002.0 136W 23.6N 22-AUG-2017 07:48 ... ... ... - - -! Now with ELSE another-variable - -let ugt = if uwnd_abs gt 6 then uwnd_abs else uwnd_mean -let uge = if uwnd_abs ge 6.27 then uwnd_abs else uwnd_mean -list uwnd_abs, ugt, uge - DATA SET: ./data/uwnd_dsg.nc - TRAJECTORY is Trajectory-id - UWND_ABS is Eastward wind magnitude (m s-1) - UGT is IF UWND_ABS GT 6 THEN UWND_ABS ELSE UWND_MEAN - UGE is IF UWND_ABS GE 6.27 THEN UWND_ABS ELSE UWND_MEAN - FEATURE TRAJECTORY LONGITUDE LATITUDE TIME UWND_ABS UGT UGE - - 1 1002.0 98W 20N 22-AUG-2017 07:34 5.800 -5.800 -5.800 - 1 1002.0 96W 21N 22-AUG-2017 07:35 5.350 -5.350 -5.350 - 1 1002.0 95W 22.3N 22-AUG-2017 07:36 ... ... ... - 1 1002.0 99W 23N 22-AUG-2017 07:37 ... ... ... - 1 1002.0 90W 21N 22-AUG-2017 07:38 ... ... ... - 1 1002.0 108W 15N 22-AUG-2017 07:39 6.710 6.710 6.710 - 1 1002.0 106W 16N 22-AUG-2017 07:40 6.100 6.100 -6.100 - 1 1002.0 105W 14.5N 22-AUG-2017 07:41 ... ... ... - 1 1002.0 109W 15N 22-AUG-2017 07:42 ... ... ... - 1 1002.0 101W 15.6N 22-AUG-2017 07:43 ... ... ... - 1 1002.0 108W 16N 22-AUG-2017 07:44 6.270 6.270 6.270 - 1 1002.0 106W 17N 22-AUG-2017 07:45 6.760 6.760 6.760 - 1 1002.0 105W 17.2N 22-AUG-2017 07:46 7.350 7.350 7.350 - 1 1002.0 138W 25N 22-AUG-2017 07:47 7.120 7.120 7.120 - 1 1002.0 136W 23.6N 22-AUG-2017 07:48 ... ... ... - -let ult = if uwnd_abs LT 6 then uwnd_abs else uwnd_mean -let ule = if uwnd_abs LE 6.27 then uwnd_abs else uwnd_mean -list uwnd_abs, ult, ule - DATA SET: ./data/uwnd_dsg.nc - TRAJECTORY is Trajectory-id - UWND_ABS is Eastward wind magnitude (m s-1) - ULT is IF UWND_ABS LT 6 THEN UWND_ABS ELSE UWND_MEAN - ULE is IF UWND_ABS LE 6.27 THEN UWND_ABS ELSE UWND_MEAN - FEATURE TRAJECTORY LONGITUDE LATITUDE TIME UWND_ABS ULT ULE - - 1 1002.0 98W 20N 22-AUG-2017 07:34 5.800 5.800 5.800 - 1 1002.0 96W 21N 22-AUG-2017 07:35 5.350 5.350 5.350 - 1 1002.0 95W 22.3N 22-AUG-2017 07:36 ... ... ... - 1 1002.0 99W 23N 22-AUG-2017 07:37 ... ... ... - 1 1002.0 90W 21N 22-AUG-2017 07:38 ... ... ... - 1 1002.0 108W 15N 22-AUG-2017 07:39 6.710 -6.710 -6.710 - 1 1002.0 106W 16N 22-AUG-2017 07:40 6.100 -6.100 6.100 - 1 1002.0 105W 14.5N 22-AUG-2017 07:41 ... ... ... - 1 1002.0 109W 15N 22-AUG-2017 07:42 ... ... ... - 1 1002.0 101W 15.6N 22-AUG-2017 07:43 ... ... ... - 1 1002.0 108W 16N 22-AUG-2017 07:44 6.270 -6.270 6.270 - 1 1002.0 106W 17N 22-AUG-2017 07:45 6.760 -6.760 -6.760 - 1 1002.0 105W 17.2N 22-AUG-2017 07:46 7.350 -7.350 -7.350 - 1 1002.0 138W 25N 22-AUG-2017 07:47 7.120 -7.120 -7.120 - 1 1002.0 136W 23.6N 22-AUG-2017 07:48 ... ... ... - -let une = if uwnd_abs NE 5.8 then uwnd_abs else uwnd_mean -let ueq = if uwnd_abs EQ 5.8 then uwnd_abs else uwnd_mean -list uwnd_abs, une, ueq - DATA SET: ./data/uwnd_dsg.nc - TRAJECTORY is Trajectory-id - UWND_ABS is Eastward wind magnitude (m s-1) - UNE is IF UWND_ABS NE 5.8 THEN UWND_ABS ELSE UWND_MEAN - UEQ is IF UWND_ABS EQ 5.8 THEN UWND_ABS ELSE UWND_MEAN - FEATURE TRAJECTORY LONGITUDE LATITUDE TIME UWND_ABS UNE UEQ - - 1 1002.0 98W 20N 22-AUG-2017 07:34 5.800 -5.800 5.800 - 1 1002.0 96W 21N 22-AUG-2017 07:35 5.350 5.350 -5.350 - 1 1002.0 95W 22.3N 22-AUG-2017 07:36 ... ... ... - 1 1002.0 99W 23N 22-AUG-2017 07:37 ... ... ... - 1 1002.0 90W 21N 22-AUG-2017 07:38 ... ... ... - 1 1002.0 108W 15N 22-AUG-2017 07:39 6.710 6.710 -6.710 - 1 1002.0 106W 16N 22-AUG-2017 07:40 6.100 6.100 -6.100 - 1 1002.0 105W 14.5N 22-AUG-2017 07:41 ... ... ... - 1 1002.0 109W 15N 22-AUG-2017 07:42 ... ... ... - 1 1002.0 101W 15.6N 22-AUG-2017 07:43 ... ... ... - 1 1002.0 108W 16N 22-AUG-2017 07:44 6.270 6.270 -6.270 - 1 1002.0 106W 17N 22-AUG-2017 07:45 6.760 6.760 -6.760 - 1 1002.0 105W 17.2N 22-AUG-2017 07:46 7.350 7.350 -7.350 - 1 1002.0 138W 25N 22-AUG-2017 07:47 7.120 7.120 -7.120 - 1 1002.0 136W 23.6N 22-AUG-2017 07:48 ... ... ... - -! expressions that replace missing data with a constant or variable - -let valid_else_100 = if uwnd_abs then uwnd_abs else 100 -let valid_else_lon = if uwnd_abs then uwnd_abs else longitude -let eqval_else_100 = if uwnd_abs eq 5.8 then uwnd_abs else 100 -list uwnd_abs, valid_else_100, valid_else_lon, eqval_else_100 - DATA SET: ./data/uwnd_dsg.nc - TRAJECTORY is Trajectory-id - UWND_ABS is Eastward wind magnitude (m s-1) - VALID_ELSE_100 is IF UWND_ABS THEN UWND_ABS ELSE 100 - VALID_ELSE_LON is IF UWND_ABS THEN UWND_ABS ELSE LONGITUDE - EQVAL_ELSE_100 is IF UWND_ABS EQ 5.8 THEN UWND_ABS ELSE 100 - FEATURE TRAJECTORY LONGITUDE LATITUDE TIME UWND_ABSVALID_ELVALID_ELEQVAL_ELSE_100 - - 1 1002.0 98W 20N 22-AUG-2017 07:34 5.800 5.8 5.8 5.8 - 1 1002.0 96W 21N 22-AUG-2017 07:35 5.350 5.3 5.3 100.0 - 1 1002.0 95W 22.3N 22-AUG-2017 07:36 ... 100.0 265.0 100.0 - 1 1002.0 99W 23N 22-AUG-2017 07:37 ... 100.0 261.0 100.0 - 1 1002.0 90W 21N 22-AUG-2017 07:38 ... 100.0 270.0 100.0 - 1 1002.0 108W 15N 22-AUG-2017 07:39 6.710 6.7 6.7 100.0 - 1 1002.0 106W 16N 22-AUG-2017 07:40 6.100 6.1 6.1 100.0 - 1 1002.0 105W 14.5N 22-AUG-2017 07:41 ... 100.0 255.0 100.0 - 1 1002.0 109W 15N 22-AUG-2017 07:42 ... 100.0 251.0 100.0 - 1 1002.0 101W 15.6N 22-AUG-2017 07:43 ... 100.0 259.0 100.0 - 1 1002.0 108W 16N 22-AUG-2017 07:44 6.270 6.3 6.3 100.0 - 1 1002.0 106W 17N 22-AUG-2017 07:45 6.760 6.8 6.8 100.0 - 1 1002.0 105W 17.2N 22-AUG-2017 07:46 7.350 7.3 7.3 100.0 - 1 1002.0 138W 25N 22-AUG-2017 07:47 7.120 7.1 7.1 100.0 - 1 1002.0 136W 23.6N 22-AUG-2017 07:48 ... 100.0 224.0 100.0 - - -GO bn_reset bn_dsg_subset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_subset -GO bn_dsg_subset -! bn_dsg_subset.jnl -! 7/24/2019 ACM -! testing subsetting in Time, space. Particularly that a time subset -! is correctly done on non-timeseries dsg dataset. -! More tests for timeseries data are in bn_dsg_tseries - -use dsg_cross_prime.nc - -! Subset trajectory data in time then in lon/ time -list sst - DATA SET: ./data/dsg_cross_prime.nc - ID is Trajectory-id - SST is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME SST - - 1 1000 6W 20S 09-FEB-2017 12:00 24.41 - 1 1000 2E 10S 14-FEB-2017 12:00 25.22 - 1 1000 5W 30N 19-FEB-2017 12:00 25.92 - 1 1000 3E 40N 24-FEB-2017 12:00 28.97 - 1 1000 1E 20S 01-MAR-2017 12:00 28.03 - - 2 2000 70W 15S 02-MAR-2017 12:00 27.77 - 2 2000 20E 20N 03-MAR-2017 12:00 26.91 - 2 2000 30E 10N 04-MAR-2017 12:00 26.07 - 2 2000 60W 15S 05-MAR-2017 12:00 25.08 - 2 2000 50W 20N 06-MAR-2017 12:00 24.01 - 2 2000 10W 10N 07-MAR-2017 12:00 23.53 - 2 2000 50W 15S 08-MAR-2017 12:00 22.64 - 2 2000 5E 20N 09-MAR-2017 12:00 21.64 - - 3 3000 15W 15S 10-MAR-2017 12:00 23.41 - 3 3000 5W 25S 11-MAR-2017 12:00 20.77 - 3 3000 1E 35S 12-MAR-2017 12:00 19.97 - 3 3000 5E 45S 13-MAR-2017 12:00 19.05 - 3 3000 10E 55S 14-MAR-2017 12:00 18.27 -list/t=1-mar-2017:14-mar-2017 sst - DATA SET: ./data/dsg_cross_prime.nc - SUBSET : TIME: 01-MAR-2017 00:00 to 14-MAR-2017 00:00 JULIAN - ID is Trajectory-id - SST is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME SST - - 1 1000 1E 20S 01-MAR-2017 12:00 28.03 - - 2 2000 70W 15S 02-MAR-2017 12:00 27.77 - 2 2000 20E 20N 03-MAR-2017 12:00 26.91 - 2 2000 30E 10N 04-MAR-2017 12:00 26.07 - 2 2000 60W 15S 05-MAR-2017 12:00 25.08 - 2 2000 50W 20N 06-MAR-2017 12:00 24.01 - 2 2000 10W 10N 07-MAR-2017 12:00 23.53 - 2 2000 50W 15S 08-MAR-2017 12:00 22.64 - 2 2000 5E 20N 09-MAR-2017 12:00 21.64 - - 3 3000 15W 15S 10-MAR-2017 12:00 23.41 - 3 3000 5W 25S 11-MAR-2017 12:00 20.77 - 3 3000 1E 35S 12-MAR-2017 12:00 19.97 - 3 3000 5E 45S 13-MAR-2017 12:00 19.05 -list/y=-20:0/t=1-mar-2017:14-mar-2017 sst - DATA SET: ./data/dsg_cross_prime.nc - SUBSET : LATITUDE: 20S to 0 - TIME: 01-MAR-2017 00:00 to 14-MAR-2017 00:00 JULIAN - ID is Trajectory-id - SST is Temperature (Degrees C) - FEATURE ID LONGITUDE LATITUDE TIME SST - - 1 1000 1E 20S 01-MAR-2017 12:00 28.03 - - 2 2000 70W 15S 02-MAR-2017 12:00 27.77 - 2 2000 60W 15S 05-MAR-2017 12:00 25.08 - 2 2000 50W 15S 08-MAR-2017 12:00 22.64 - - 3 3000 15W 15S 10-MAR-2017 12:00 23.41 - -! subset profile data in z, in z/ time, in lon/lat/z -use profile_dsg -list/z=5:20 sal, pot_temp_degc - DATA SET: ./data/profile_dsg.nc - SUBSET : DEPTH (m): 5 to 20 - PROFILE is Profile-id-id - SAL is sal - POT_TEMP_DEGC is pot_temp_degc - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME SAL POT_TEMP_DEGC - - 1 1 123.1W 41.3N 15.312 13-AUG-2009 00:00 33.50 9.05 - 1 1 123.1W 41.3N 10.1546 13-AUG-2009 00:00 33.47 9.46 - - 2 2 120.4W 44.11N 17.9293 13-AUG-2009 12:58 34.31 11.03 - 2 2 120.4W 44.11N 14.8822 13-AUG-2009 12:58 34.30 11.38 - 2 2 120.4W 44.11N 11.8737 13-AUG-2009 12:58 34.29 11.88 - 2 2 120.4W 44.11N 8.8551 13-AUG-2009 12:58 34.21 12.15 - 2 2 120.4W 44.11N 5.823 13-AUG-2009 12:58 34.11 12.68 - - 3 3 121W 38.8N 17.9293 12-AUG-2009 00:00 32.70 ... - 3 3 121W 38.8N 14.8822 12-AUG-2009 00:00 32.63 ... - 3 3 121W 38.8N 11.8737 12-AUG-2009 00:00 32.47 15.86 - 3 3 121W 38.8N 8.8551 12-AUG-2009 00:00 32.45 16.20 - 3 3 121W 38.8N 5.823 12-AUG-2009 00:00 32.41 16.47 -list/z=0:15/x=-121:-120 sal - DATA SET: ./data/profile_dsg.nc - SUBSET : LONGITUDE: 121W(-121) to 120.4W(-120.4) - DEPTH (m): 2.12 to 15 - PROFILE is Profile-id-id - SAL is sal - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME SAL - - 2 2 120.4W 44.11N 14.8822 13-AUG-2009 12:58 34.30 - 2 2 120.4W 44.11N 11.8737 13-AUG-2009 12:58 34.29 - 2 2 120.4W 44.11N 8.8551 13-AUG-2009 12:58 34.21 - 2 2 120.4W 44.11N 5.823 13-AUG-2009 12:58 34.11 - 2 2 120.4W 44.11N 3.7747 13-AUG-2009 12:58 32.94 - 2 2 120.4W 44.11N 2.12 13-AUG-2009 12:58 32.78 - - 3 3 121W 38.8N 14.8822 12-AUG-2009 00:00 32.63 - 3 3 121W 38.8N 11.8737 12-AUG-2009 00:00 32.47 - 3 3 121W 38.8N 8.8551 12-AUG-2009 00:00 32.45 - 3 3 121W 38.8N 5.823 12-AUG-2009 00:00 32.41 - 3 3 121W 38.8N 3.7747 12-AUG-2009 00:00 32.38 - 3 3 121W 38.8N 2.12 12-AUG-2009 00:00 32.38 - - -GO bn_reset bn_regrid_to_dsg_prof -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_to_dsg_prof -GO bn_regrid_to_dsg_prof -! bn_regrid_to_dsg_prof.jnl -! test regridding to a DSG profile grid -! -! Create gridded data file: values are based on z-values - -define axis/t=11-aug-2009:14-aug-2009:6/units=hours tfake -define axis/x=-124:-120:0.5/units=degrees_east/modulo xfake -define axis/y=35:45:0.5/units=degrees_north yfake -define axis/z=1:35:2/depth/unit=meters zfake -define grid/x=xfake/y=yfake/z=zfake/t=tfake gfake -let/title="z from the grid" zz =2 + z[g=gfake] + 0*(x[g=gfake]+y[g=gfake]+t[g=gfake]) -save/clobber/file=fake_model_temp.nc/outtype=float zz -cancel variables/all - -! ****** -! demonstrate regridding model data to DSG using file data - -! profile data where depths in each profile are listed -! from deepest to shallowest - -use profile_dsg_downup -USE fake_model_temp.nc -list /i=1/j=1/l=1 zz - VARIABLE : z from the grid - FILENAME : fake_model_temp.nc - SUBSET : 18 points (DEPTH (m)) - LONGITUDE: 124W(-124) - LATITUDE : 35N - TIME : 11-AUG-2009 00:00 - 124W - 1 - 1 / 1: 3.00 - 3 / 2: 5.00 - 5 / 3: 7.00 - 7 / 4: 9.00 - 9 / 5: 11.00 - 11 / 6: 13.00 - 13 / 7: 15.00 - 15 / 8: 17.00 - 17 / 9: 19.00 - 19 / 10: 21.00 - 21 / 11: 23.00 - 23 / 12: 25.00 - 25 / 13: 27.00 - 27 / 14: 29.00 - 29 / 15: 31.00 - 31 / 16: 33.00 - 33 / 17: 35.00 - 35 / 18: 37.00 - -! Regrid gridded data to grid of profile dataset -list zz[d=fake_model_temp,g=temp[d=1]] - DATA SET: ./data/profile_dsg_downup.nc - PROFILE is Profile-id-id - ZZ is z from the grid (regrid: to Profile DSG grid) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME ZZ - - 1 1 123.1W 41.3N 33.2111 13-AUG-2009 00:00 35.00 - 1 1 123.1W 41.3N 31.5953 13-AUG-2009 00:00 33.00 - 1 1 123.1W 41.3N 24.9692 13-AUG-2009 00:00 27.00 - 1 1 123.1W 41.3N 20.5466 13-AUG-2009 00:00 23.00 - 1 1 123.1W 41.3N 15.312 13-AUG-2009 00:00 17.00 - 1 1 123.1W 41.3N 10.1546 13-AUG-2009 00:00 13.00 - 1 1 123.1W 41.3N 4.9567 13-AUG-2009 00:00 7.00 - 1 1 123.1W 41.3N 2.12 13-AUG-2009 00:00 5.00 - - 2 2 120.4W 44.11N 33.2111 13-AUG-2009 12:58 35.00 - 2 2 120.4W 44.11N 32.2686 13-AUG-2009 12:58 35.00 - 2 2 120.4W 44.11N 30.491 13-AUG-2009 12:58 33.00 - 2 2 120.4W 44.11N 26.6257 13-AUG-2009 12:58 29.00 - 2 2 120.4W 44.11N 23.495 13-AUG-2009 12:58 25.00 - 2 2 120.4W 44.11N 20.9152 13-AUG-2009 12:58 23.00 - 2 2 120.4W 44.11N 17.9293 13-AUG-2009 12:58 19.00 - 2 2 120.4W 44.11N 14.8822 13-AUG-2009 12:58 17.00 - 2 2 120.4W 44.11N 11.8737 13-AUG-2009 12:58 13.00 - 2 2 120.4W 44.11N 8.8551 13-AUG-2009 12:58 11.00 - 2 2 120.4W 44.11N 5.823 13-AUG-2009 12:58 7.00 - 2 2 120.4W 44.11N 3.7747 13-AUG-2009 12:58 5.00 - 2 2 120.4W 44.11N 2.12 13-AUG-2009 12:58 5.00 - - 3 3 121W 38.8N 23.495 12-AUG-2009 00:00 25.00 - 3 3 121W 38.8N 20.9152 12-AUG-2009 00:00 23.00 - 3 3 121W 38.8N 17.9293 12-AUG-2009 00:00 19.00 - 3 3 121W 38.8N 14.8822 12-AUG-2009 00:00 17.00 - 3 3 121W 38.8N 11.8737 12-AUG-2009 00:00 13.00 - 3 3 121W 38.8N 8.8551 12-AUG-2009 00:00 11.00 - 3 3 121W 38.8N 5.823 12-AUG-2009 00:00 7.00 - 3 3 121W 38.8N 3.7747 12-AUG-2009 00:00 5.00 - 3 3 121W 38.8N 2.12 12-AUG-2009 00:00 5.00 - -cancel data/all - - -! profile data where depths in each profile are listed -! from shallowest to deepest - -use profile_dsg_updown -USE fake_model_temp.nc - -! Regrid gridded data to grid of profile dataset -list zz[d=fake_model_temp,g=temp[d=1]] - DATA SET: ./data/profile_dsg_updown.nc - PROFILE is Profile-id-id - ZZ is z from the grid (regrid: to Profile DSG grid) - FEATURE PROFILE LONGITUDE LATITUDE DEPTH TIME ZZ - - 1 1 123.1W 41.3N 2.12 13-AUG-2009 00:00 5.00 - 1 1 123.1W 41.3N 4.96 13-AUG-2009 00:00 7.00 - 1 1 123.1W 41.3N 10.15 13-AUG-2009 00:00 13.00 - 1 1 123.1W 41.3N 15.31 13-AUG-2009 00:00 17.00 - 1 1 123.1W 41.3N 20.55 13-AUG-2009 00:00 23.00 - 1 1 123.1W 41.3N 24.97 13-AUG-2009 00:00 27.00 - 1 1 123.1W 41.3N 31.6 13-AUG-2009 00:00 33.00 - 1 1 123.1W 41.3N 33.21 13-AUG-2009 00:00 35.00 - - 2 2 120.4W 44.11N 2.12 13-AUG-2009 12:58 5.00 - 2 2 120.4W 44.11N 3.77 13-AUG-2009 12:58 5.00 - 2 2 120.4W 44.11N 5.82 13-AUG-2009 12:58 7.00 - 2 2 120.4W 44.11N 8.86 13-AUG-2009 12:58 11.00 - 2 2 120.4W 44.11N 11.87 13-AUG-2009 12:58 13.00 - 2 2 120.4W 44.11N 14.88 13-AUG-2009 12:58 17.00 - 2 2 120.4W 44.11N 17.93 13-AUG-2009 12:58 19.00 - 2 2 120.4W 44.11N 20.92 13-AUG-2009 12:58 23.00 - 2 2 120.4W 44.11N 23.5 13-AUG-2009 12:58 25.00 - 2 2 120.4W 44.11N 26.63 13-AUG-2009 12:58 29.00 - 2 2 120.4W 44.11N 30.49 13-AUG-2009 12:58 33.00 - 2 2 120.4W 44.11N 32.27 13-AUG-2009 12:58 35.00 - 2 2 120.4W 44.11N 33.21 13-AUG-2009 12:58 35.00 - - 3 3 121W 38.8N 2.12 12-AUG-2009 00:00 5.00 - 3 3 121W 38.8N 3.77 12-AUG-2009 00:00 5.00 - 3 3 121W 38.8N 5.82 12-AUG-2009 00:00 7.00 - 3 3 121W 38.8N 8.86 12-AUG-2009 00:00 11.00 - 3 3 121W 38.8N 11.87 12-AUG-2009 00:00 13.00 - 3 3 121W 38.8N 14.88 12-AUG-2009 00:00 17.00 - 3 3 121W 38.8N 17.93 12-AUG-2009 00:00 19.00 - 3 3 121W 38.8N 20.92 12-AUG-2009 00:00 23.00 - 3 3 121W 38.8N 23.5 12-AUG-2009 00:00 25.00 - - -GO bn_reset bn_regrid_to_dsg_traj -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_regrid_to_dsg_traj -GO bn_regrid_to_dsg_traj -! bn_regrid_to_dsg_traj.jnl - -! Create gridded data file: values are based on latitude/longitudes -! test regridding to a DSG trajectory grid - -define axis/t=17-may-2019:20-may-2019:1/units=hours tfake -define axis/x=-168:-165:0.2/units=degrees_east xfake -define axis/y=54:57:0.2/units=degrees_north yfake -define grid/x=xfake/y=yfake/t=tfake gfake -let/title="Gridded Temperature"/Units="Degrees_C" temp = y[g=gfake] + 0.1*x[g=gfake] + 0*t[g=gfake] -save/clobber/file=fake_model_temp.nc/outtype=float temp -can var/all - -use sail_2019.nc -use fake_model_temp.nc - -set v ul -plot/thick temp[d=2,g=temp_ctd_rbr_mean[d=1]] -LET/title="Temp regridded from gridded to DSG" temp_from_grid = temp[d=2,g=temp_ctd_rbr_mean[d=1]] - -set v ur -plot/thick temp_from_grid - -! test modulo in X -define axis/t=17-may-2019:20-may-2019:1/units=hours tfake -define axis/x=192:195:0.2/units=degrees_east xfake -define axis/y=54:57:0.2/units=degrees_north yfake -define grid/x=xfake/y=yfake/t=tfake gfake -let/title="Gridded Temperature"/Units="Degrees_C" temp = y[g=gfake] + 0.1*x[g=gfake] + 0*t[g=gfake] -save/clobber/file=fake_model_temp.nc/outtype=float temp -can var/all - -use fake_model_temp.nc - -say `temp,r=size` - !-> MESSAGE/CONTINUE 18688 -18688 - -set v ll -plot/thick/title="Modulo Longitudes" temp[d=2,g=temp_ctd_rbr_mean[d=1]] - -set v lr -LET/title="Regrid to DSG w/ moduloing" temp_from_grid = temp[d=2,g=temp_ctd_rbr_mean[d=1]] -plot/thick temp_from_grid -frame/file=regrid_to_dsg_traj.gif - -! finer grid, do we get scatter/gather? -can dat/all -define symbol save_mem = ($ferret_memory) - !-> define symbol save_mem = 31.25 -set mem/siz=2mb - -use sail_2019.nc - -define axis/t=17-may-2019:20-may-2019:1/units=minutes tbig - -define axis/x=0:359:.5/unit=degrees/modulo xbig -define axis/y=54:57:0.2/units=degrees_north ybig -define grid/x=xbig/y=ybig/t=tbig gbig -let big_temp = y[g=gbig] + 0*(x[g=gbig]+t[g=gbig]) - -say `big_temp,r=size` - !-> MESSAGE/CONTINUE 49708784 -49708784 - -load big_temp[g=temp_ctd_rbr_mean[d=1]] -show mem/diag - Last gather - Variable Axis Xform Chunk Repeated - BIG_TEMP T 1385 1 - Total table slots: 500 - Free table slots: 496 - Un-cached variables: 0 - SET MEMORY/SIZE: 2 Mb (250000 words) - Peak demand: 233.66 Kb - Current cache: 493.55 Kb - -set mem/siz=($save_mem) - !-> set mem/siz=31.25 - - -! Finally, trajectory datasets can have depths. -! Synthesize a depth variable in a trajectory dataset. -sp cp data/sail_2019.nc sail_copy.nc -use sail_2019.nc - -! Good test of a dsg-variable made up of several expressions -let/units=meters/title="Depth synthesized" depth = 1 + 3*(if temp_ctd_rbr_mean then temp_ctd_rbr_mean-6 else .2) -define attribute/output depth.axis = "Z" -set attribute/output depth.axis -save/append/file=sail_copy.nc depth - -can dat/all; use sail_copy -show dat - currently SET data sets: - 1> ./sail_copy.nc (default) - DSG Feature type Trajectory - name title I J K L M N - trajectory - Trajectory/Drone ID ... ... ... ... 1:2 ... - rowSize Number of Observations for this ... ... ... ... 1:2 ... - longitude - longitude tot 116 ... ... ... 1:2 ... - latitude latitude tot 116 ... ... ... 1:2 ... - time time in seconds tot 116 ... ... ... 1:2 ... - temp_ctd_rbr_mean - Seawater temperature RBR tot 116 ... ... ... 1:2 ... - depth Depth synthesized tot 116 ... ... ... 1:2 ... - -show att depth - attributes for user-defined variables - depth.long_name = Depth synthesized - depth.units = meters - depth.missing_value = -1.E+34 - depth.axis = Z - - -! make a 4D grid on the region. -define axis/t=17-may-2019:20-may-2019:1/units=hours tfake -define axis/x=-168:-165:0.2/units=degrees_east xfake -define axis/y=54:57:0.2/units=degrees_north yfake -define axis/y=54:57:0.2/units=degrees_north yfake -define grid/x=xfake/y=yfake/t=tfake gfake -define axis/z=1:5:.5/units=meters zfake -define grid/x=xfake/y=yfake/t=tfake/z=zfake gfake -let/title="Gridded Temperature"/Units="Degrees_C" temp = y[g=gfake] + 0.1*x[g=gfake] + 0.2*z[gz=zfake] + 0*t[g=gfake] -save/clobber/file=fake_model_temp.nc/outtype=float temp -can var/all - -use sail_copy.nc - -use fake_model_temp -sh dat - currently SET data sets: - 1> ./sail_copy.nc - DSG Feature type Trajectory - name title I J K L M N - trajectory - Trajectory/Drone ID ... ... ... ... 1:2 ... - rowSize Number of Observations for this ... ... ... ... 1:2 ... - longitude - longitude tot 116 ... ... ... 1:2 ... - latitude latitude tot 116 ... ... ... 1:2 ... - time time in seconds tot 116 ... ... ... 1:2 ... - temp_ctd_rbr_mean - Seawater temperature RBR tot 116 ... ... ... 1:2 ... - depth Depth synthesized tot 116 ... ... ... 1:2 ... - - 2> ./fake_model_temp.nc (default) - - name title I J K L - temp Gridded Temperature 1:16 1:16 1:9 1:73 - -LET/title="Temp regridded from gridded to DSG" temp_from_grid = temp[d=2,g=temp_ctd_rbr_mean[d=1]] -save/clobber/file=sample_xyzt_to_traj.nc temp_from_grid - - -sp rm sail_copy.nc - -GO bn_reset bn_dsg_save_uvars -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_dsg_save_uvars -GO bn_dsg_save_uvars -! bn_dsg_save_uvars.jnl -! tests of SAVEing user-defined variables to netCDF -! 8/13/2019 ACM - -! Create gridded data file: values are based on latitude/longitudes -! test regridding to a DSG trajectory grid - -define axis/t=17-may-2019:20-may-2019:1/units=hours tfake -define axis/x=-168:-165:0.2/units=degrees_east xfake -define axis/y=54:57:0.2/units=degrees_north yfake -define grid/x=xfake/y=yfake/t=tfake gfake -let/title="Gridded Temperature"/Units="Degrees_C" temp = y[g=gfake] + 0.1*x[g=gfake] + 0*t[g=gfake] -save/clobber/file=fake_model_temp.nc/outtype=float temp -can var/all - -sp cp data/sail_2019.nc sail_copy.nc -use sail_2019.nc -use fake_model_temp.nc - - -LET/title="Temp regridded from gridded to DSG" temp_from_grid = temp[d=2,g=temp_ctd_rbr_mean[d=1]] -save/append/file=sail_copy.nc temp_from_grid -can data/all; can var/all - - -use sail_copy.nc -show data - currently SET data sets: - 1> ./sail_copy.nc (default) - DSG Feature type Trajectory - name title I J K L M N - trajectory - Trajectory/Drone ID ... ... ... ... 1:2 ... - rowSize Number of Observations for this ... ... ... ... 1:2 ... - longitude - longitude tot 116 ... ... ... 1:2 ... - latitude latitude tot 116 ... ... ... 1:2 ... - time time in seconds tot 116 ... ... ... 1:2 ... - temp_ctd_rbr_mean - Seawater temperature RBR tot 116 ... ... ... 1:2 ... - temp_from_grid - Temp regridded from gridded to tot 116 ... ... ... 1:2 ... - -plot/thick temp_ctd_rbr_mean - temp_from_grid - -can data/all; can var/all - - -! Write just a user-var defined on dsg grid to a file. - -use sail_2019.nc -use fake_model_temp.nc -LET/title="Temp regridded from gridded to DSG" temp_from_grid = temp[d=2,g=temp_ctd_rbr_mean[d=1]] -save/clobber/file=sail_copy.nc temp_from_grid -can data/all; can var/all - -use sail_copy -show data - currently SET data sets: - 1> ./sail_copy.nc (default) - DSG Feature type Trajectory - name title I J K L M N - trajectory - Trajectory/Drone ID ... ... ... ... 1:2 ... - rowSize Number of Observations for this ... ... ... ... 1:2 ... - longitude - longitude tot 116 ... ... ... 1:2 ... - latitude latitude tot 116 ... ... ... 1:2 ... - time time in seconds tot 116 ... ... ... 1:2 ... - temp_from_grid - Temp regridded from gridded to tot 116 ... ... ... 1:2 ... - - -can data/all; can var/all - - - -! Write subsets of our user-var regrid to dsg-grid - -use sail_2019.nc -use fake_model_temp.nc -LET/title="Temp regridded from gridded to DSG" temp_from_grid = temp[d=2,g=temp_ctd_rbr_mean[d=1]] -save/clobber/file=sail_copy.nc/e=2 temp_from_grid -can dat/all; can var/all - -use sail_copy -show data - currently SET data sets: - 1> ./sail_copy.nc (default) - DSG Feature type Trajectory - name title I J K L M N - trajectory - Trajectory/Drone ID ... ... ... ... 1:1 ... - rowSize Number of Observations for this ... ... ... ... 1:1 ... - longitude - longitude tot 58 ... ... ... 1:1 ... - latitude latitude tot 58 ... ... ... 1:1 ... - time time in seconds tot 58 ... ... ... 1:1 ... - temp_from_grid - Temp regridded from gridded to tot 58 ... ... ... 1:1 ... - - - -can data/all; can var/all - -! subset by masking - -use sail_2019.nc -use fake_model_temp.nc -LET temp_from_grid = temp[d=2,g=temp_ctd_rbr_mean[d=1]] -save/clobber/file=sail_copy.nc/y=55:56 temp_from_grid -can data/all; can var/all - -use sail_copy.nc - -show data - currently SET data sets: - 1> ./sail_copy.nc (default) - DSG Feature type Trajectory - name title I J K L M N - trajectory - Trajectory/Drone ID ... ... ... ... 1:2 ... - rowSize Number of Observations for this ... ... ... ... 1:2 ... - longitude - longitude tot 94 ... ... ... 1:2 ... - latitude latitude tot 94 ... ... ... 1:2 ... - time time in seconds tot 94 ... ... ... 1:2 ... - temp_from_grid - TEMP[D=2,G=TEMP_CTD_RBR_MEAN[D=tot 94 ... ... ... 1:2 ... - - -! Make a plot of the original data and the subset with fake-data values - -use sail_2019 -plot/thick/pal=rnb2 temp_ctd_rbr_mean -use sail_copy -plot/over/sym=19/siz=0.12/pal=grayscale/key=horiz temp_from_grid - -can data/all; can var/all - -! Treat the feature-data as a timeseries. SAVE writes timeseries data - -use/feature=time sail_2019.nc -save/clobber/file=a.nc/t="18-may-2019:12:00":"19-may-2019:00:00" temp_ctd_rbr_mean -can dat/all; can var/all - -use a.nc -show dat/att - currently SET data sets: - 1> ./a.nc (default) - Variable VarType(in dset) AttributeName AttType Size OutFlag AttValue ------------------------------------------------------------------------------------------- - - . history CHAR 32 T PyFerret V7.51 (debug) 20-Aug-19 - Conventions CHAR 6 F CF-1.6 - featureType CHAR 10 F Timeseries - - trajectory CHAR long_name CHAR 19 T Trajectory/Drone ID - cf_role CHAR 13 F trajectory_id - - rowSize INT long_name CHAR 42 T Number of Observations for this Timeseries - sample_dimension - CHAR 3 F obs - actual_range INT 2 F 12 13 - - longitude FLOAT axis CHAR 1 T X - history CHAR 166 T From /home/data/saildrone/saildrone_arctic_2019/daily_files/1041/saildrone-gen_5-Arctic-NOAA-2019-sd1041-20190806T140000-20190806T155959-1_minutes-v1.1565109042999.nc - long_name CHAR 9 T longitude - units CHAR 12 T degrees_east - actual_range FLOAT 2 F -166.848 -166.0383 - - latitude FLOAT axis CHAR 1 T Y - history CHAR 166 T From /home/data/saildrone/saildrone_arctic_2019/daily_files/1041/saildrone-gen_5-Arctic-NOAA-2019-sd1041-20190806T140000-20190806T155959-1_minutes-v1.1565109042999.nc - long_name CHAR 8 T latitude - units CHAR 13 T degrees_north - actual_range FLOAT 2 F 54.73905 55.70537 - - time DOUBLE axis CHAR 1 T T - calendar CHAR 9 T gregorian - history CHAR 166 T From /home/data/saildrone/saildrone_arctic_2019/daily_files/1041/saildrone-gen_5-Arctic-NOAA-2019-sd1041-20190806T140000-20190806T155959-1_minutes-v1.1565109042999.nc - long_name CHAR 15 T time in seconds - time_origin CHAR 20 T 01-JAN-1970 00:00:00 - units CHAR 34 T seconds since 1970-01-01T00:00:00Z - actual_range DOUBLE 2 F 1.558102E+09 1.558307E+09 - - temp_ctd_rbr_mean FLOAT _FillValue FLOAT 1 T -1.E+34 - history CHAR 166 T From /home/data/saildrone/saildrone_arctic_2019/daily_files/1041/saildrone-gen_5-Arctic-NOAA-2019-sd1041-20190806T140000-20190806T155959-1_minutes-v1.1565109042999.nc - long_name CHAR 24 T Seawater temperature RBR - units CHAR 8 T degree_C - -list temp_ctd_rbr_mean - DATA SET: ./a.nc - TRAJECTORY is Timeseries-id - TEMP_CTD_RBR_MEAN is Seawater temperature RBR (degree_C) - FEATURE TRAJECTORY LONGITUDE LATITUDE TIME TEMP_CTD_RBR_MEAN - - 1 1033.0 166.5W 55.2793N 18-MAY-2019 12:00 6.817 - 1 1033.0 166.5W 55.304N 18-MAY-2019 13:00 6.598 - 1 1033.0 166.5W 55.3451N 18-MAY-2019 14:00 6.549 - 1 1033.0 166.5W 55.3794N 18-MAY-2019 15:00 6.563 - 1 1033.0 166.6W 55.3818N 18-MAY-2019 16:00 6.540 - 1 1033.0 166.6W 55.4012N 18-MAY-2019 17:00 6.599 - 1 1033.0 166.6W 55.4185N 18-MAY-2019 18:00 6.507 - 1 1033.0 166.6W 55.4362N 18-MAY-2019 19:00 6.527 - 1 1033.0 166.6W 55.4507N 18-MAY-2019 20:00 6.549 - 1 1033.0 166.7W 55.4672N 18-MAY-2019 21:00 6.616 - 1 1033.0 166.7W 55.4907N 18-MAY-2019 22:00 6.599 - 1 1033.0 166.7W 55.5146N 18-MAY-2019 23:00 6.608 - 1 1033.0 166.7W 55.5377N 19-MAY-2019 00:00 6.586 - - 2 1034.0 166.5W 55.3343N 18-MAY-2019 12:59 6.582 - 2 1034.0 166.5W 55.3737N 18-MAY-2019 13:59 6.561 - 2 1034.0 166.5W 55.396N 18-MAY-2019 14:59 6.591 - 2 1034.0 166.6W 55.4094N 18-MAY-2019 15:59 6.581 - 2 1034.0 166.6W 55.435N 18-MAY-2019 16:59 6.491 - 2 1034.0 166.6W 55.4502N 18-MAY-2019 17:59 6.508 - 2 1034.0 166.6W 55.4686N 18-MAY-2019 18:59 6.592 - 2 1034.0 166.6W 55.4851N 18-MAY-2019 19:59 6.553 - 2 1034.0 166.7W 55.5022N 18-MAY-2019 20:59 6.512 - 2 1034.0 166.7W 55.5243N 18-MAY-2019 21:59 6.474 - 2 1034.0 166.7W 55.5518N 18-MAY-2019 22:59 6.501 - 2 1034.0 166.7W 55.577N 18-MAY-2019 23:59 ... - -! Intentional errors -set mode ignore - -! Save a subset and try to append to that - nfeatures or nobs don't match -! should be an error - -use sail_2019.nc -save/clobber/e=2/file=sail_copy.nc temp_ctd_rbr_mean -can data/all; can var/all - -! Now try appending data from the original set to the subset-dataset - -! nfeatures doesn't match - -use sail_2019.nc - -use fake_model_temp.nc -LET/title="Temp regridded from gridded to DSG" temp_from_grid = temp[d=2,g=temp_ctd_rbr_mean[d=1]] -save/append/file=sail_copy.nc temp_from_grid - -can data/all; can var/all - - -! Save a subset in the obs direction and try to append to that - nobs does't match - - -use sail_2019.nc -save/clobber/x=-166.8:-166.2/file=sail_copy.nc temp_ctd_rbr_mean -can data/all; can var/all - -use sail_2019.nc - -use fake_model_temp.nc -LET/title="Temp regridded from gridded to DSG" temp_from_grid = temp[d=2,g=temp_ctd_rbr_mean[d=1]] -save/append/file=sail_copy.nc temp_from_grid - - -can data/all; can var/all - -!Try to append a subset to the full data, again nobs/nfeatures mismatches - - -sp cp data/sail_2019.nc sail_copy.nc - -use sail_2019.nc - -use fake_model_temp.nc -LET/title="Temp regridded from gridded to DSG" temp_from_grid = temp[d=2,g=temp_ctd_rbr_mean[d=1]] -save/append/e=2/file=sail_copy.nc temp_from_grid - -can data/all; can var/all - -! Try to append timeseries data to a trajectory dataset - -sp cp data/sail_2019.nc sail_copy.nc - -! Write a dsg file of type timeseries - -use/feature=timeseries sail_2019 -set variable/name=my_temp_data temp_ctd_rbr_mean -save/clobber/file=a.nc my_temp_data - -cancel data/all - -! try to append timeseries data to trajectory dataset -use a.nc -save/append/file=sail_copy.nc my_temp_data - - -sp rm sail_copy.nc -set mode/last ignore - -! *********** PyFerret-specific scripts *********** - -IF ($program_name"0|PyFerret>1|*>0") THEN - !-> IF 1 THEN -GO bn_reset bn_color_wire -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_color_wire -GO bn_color_wire -set text /font=helvetica -set region /i=1:80 /j=1:80 -let bump = exp(-1.0*(((I-40)/20)^2 + ((J-40)/20)^2)) -wire /color=blue /viewpoint=-4,-10,2 bump -frame /file=bluewire.png -set window /color=blue 1 -set text /font=helvetica /color=(100,100,25) -wire /color=red /thick=3.5 /viewpoint=-4,-10,2 bump -frame /file=redwire.png -wire /color=(100,0,0,25) /thick=3.5 /viewpoint=-4,-10,2 bump -frame /file=red25wire.png -wire /color=(100,0,0) /opacity=10 /thick=3.5 /viewpoint=-4,-10,2 bump -frame /file=red10wire.png -GO bn_reset bn_inf2missing -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_inf2missing -GO bn_inf2missing -plot stats_ppf(x[gx=0:1.0:0.01], "norm", {0,1}) -frame /file=bn_inf2missing.pdf -GO bn_reset bn_pointplots -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_pointplots -GO bn_pointplots -def axis /X=1.0:8.0:1.0 xax -def axis /Y=1.0:8.0:1.0 yax -def grid /X=xax /Y=yax xygrid -set grid xygrid -set text /font=helvetica -set window /aspect=1.0:axis /thick=1.0 /xinch=10.0 /xpix=2000 1 -plot /hlim=0.75:8.75 /vlim=0.5:8.5 /symbol=dot /nokey /nolab /color=(0,0,0,0) /vs X + 0.0 * Y, 0.0 * X + Y -plot /over /nokey /size=0.15 /symbol=dot /vs {1.0},{8.0} -anno /xpos=1.15 /ypos=8.0 /valign=0 /size=0.08 "dot" -plot /over /nokey /size=0.15 /symbol=dotex /vs {2.0},{8.0} -anno /xpos=2.15 /ypos=8.0 /valign=0 /size=0.08 "dotex" -plot /over /nokey /size=0.15 /symbol=dotplus /vs {3.0},{8.0} -anno /xpos=3.15 /ypos=8.0 /valign=0 /size=0.08 "dotplus" -plot /over /nokey /size=0.15 /symbol=circle /vs {4.0},{8.0} -anno /xpos=4.15 /ypos=8.0 /valign=0 /size=0.08 "circle" -plot /over /nokey /size=0.15 /symbol=circfill /vs {5.0},{8.0} -anno /xpos=5.15 /ypos=8.0 /valign=0 /size=0.08 "circfill" -plot /over /nokey /size=0.15 /symbol=circex /vs {6.0},{8.0} -anno /xpos=6.15 /ypos=8.0 /valign=0 /size=0.08 "circex" -plot /over /nokey /size=0.15 /symbol=circplus /vs {7.0},{8.0} -anno /xpos=7.15 /ypos=8.0 /valign=0 /size=0.08 "circplus" -plot /over /nokey /size=0.15 /symbol=asterisk /vs {8.0},{8.0} -anno /xpos=8.15 /ypos=8.0 /valign=0 /size=0.08 "asterisk" -plot /over /nokey /size=0.15 /symbol=arrdown /vs {1.0},{7.0} -anno /xpos=1.15 /ypos=7.0 /valign=0 /size=0.08 "arrdown" -plot /over /nokey /size=0.15 /symbol=arrup /vs {2.0},{7.0} -anno /xpos=2.15 /ypos=7.0 /valign=0 /size=0.08 "arrup" -plot /over /nokey /size=0.15 /symbol=arrleft /vs {3.0},{7.0} -anno /xpos=3.15 /ypos=7.0 /valign=0 /size=0.08 "arrleft" -plot /over /nokey /size=0.15 /symbol=arrright /vs {4.0},{7.0} -anno /xpos=4.15 /ypos=7.0 /valign=0 /size=0.08 "arrright" -plot /over /nokey /size=0.15 /symbol=arrdl /vs {5.0},{7.0} -anno /xpos=5.15 /ypos=7.0 /valign=0 /size=0.08 "arrdl" -plot /over /nokey /size=0.15 /symbol=arrdr /vs {6.0},{7.0} -anno /xpos=6.15 /ypos=7.0 /valign=0 /size=0.08 "arrdr" -plot /over /nokey /size=0.15 /symbol=arrul /vs {7.0},{7.0} -anno /xpos=7.15 /ypos=7.0 /valign=0 /size=0.08 "arrul" -plot /over /nokey /size=0.15 /symbol=arrur /vs {8.0},{7.0} -anno /xpos=8.15 /ypos=7.0 /valign=0 /size=0.08 "arrur" -plot /over /nokey /size=0.15 /symbol=chevdown /vs {1.0},{6.0} -anno /xpos=1.15 /ypos=6.0 /valign=0 /size=0.08 "chevdown" -plot /over /nokey /size=0.15 /symbol=chevup /vs {2.0},{6.0} -anno /xpos=2.15 /ypos=6.0 /valign=0 /size=0.08 "chevup" -plot /over /nokey /size=0.15 /symbol=chevleft /vs {3.0},{6.0} -anno /xpos=3.15 /ypos=6.0 /valign=0 /size=0.08 "chevleft" -plot /over /nokey /size=0.15 /symbol=chevright /vs {4.0},{6.0} -anno /xpos=4.15 /ypos=6.0 /valign=0 /size=0.08 "chevright" -plot /over /nokey /size=0.15 /symbol=wyedown /vs {5.0},{6.0} -anno /xpos=5.15 /ypos=6.0 /valign=0 /size=0.08 "wyedown" -plot /over /nokey /size=0.15 /symbol=wyeup /vs {6.0},{6.0} -anno /xpos=6.15 /ypos=6.0 /valign=0 /size=0.08 "wyeup" -plot /over /nokey /size=0.15 /symbol=wyeleft /vs {7.0},{6.0} -anno /xpos=7.15 /ypos=6.0 /valign=0 /size=0.08 "wyeleft" -plot /over /nokey /size=0.15 /symbol=wyeright /vs {8.0},{6.0} -anno /xpos=8.15 /ypos=6.0 /valign=0 /size=0.08 "wyeright" -plot /over /nokey /size=0.15 /symbol=tridempty /vs {1.0},{5.0} -anno /xpos=1.15 /ypos=5.0 /valign=0 /size=0.08 "tridempty" -plot /over /nokey /size=0.15 /symbol=tridfill /vs {2.0},{5.0} -anno /xpos=2.15 /ypos=5.0 /valign=0 /size=0.08 "tridfill" -plot /over /nokey /size=0.15 /symbol=triuempty /vs {3.0},{5.0} -anno /xpos=3.15 /ypos=5.0 /valign=0 /size=0.08 "triuempty" -plot /over /nokey /size=0.15 /symbol=triufill /vs {4.0},{5.0} -anno /xpos=4.15 /ypos=5.0 /valign=0 /size=0.08 "triufill" -plot /over /nokey /size=0.15 /symbol=trilempty /vs {5.0},{5.0} -anno /xpos=5.15 /ypos=5.0 /valign=0 /size=0.08 "trilempty" -plot /over /nokey /size=0.15 /symbol=trilfill /vs {6.0},{5.0} -anno /xpos=6.15 /ypos=5.0 /valign=0 /size=0.08 "trilfill" -plot /over /nokey /size=0.15 /symbol=trirempty /vs {7.0},{5.0} -anno /xpos=7.15 /ypos=5.0 /valign=0 /size=0.08 "trirempty" -plot /over /nokey /size=0.15 /symbol=trirfill /vs {8.0},{5.0} -anno /xpos=8.15 /ypos=5.0 /valign=0 /size=0.08 "trirfill" -plot /over /nokey /size=0.15 /symbol=boxempty /vs {1.0},{4.0} -anno /xpos=1.15 /ypos=4.0 /valign=0 /size=0.08 "boxempty" -plot /over /nokey /size=0.15 /symbol=boxex /vs {2.0},{4.0} -anno /xpos=2.15 /ypos=4.0 /valign=0 /size=0.08 "boxex" -plot /over /nokey /size=0.15 /symbol=boxfill /vs {3.0},{4.0} -anno /xpos=3.15 /ypos=4.0 /valign=0 /size=0.08 "boxfill" -plot /over /nokey /size=0.15 /symbol=diamempty /vs {4.0},{4.0} -anno /xpos=4.15 /ypos=4.0 /valign=0 /size=0.08 "diamempty" -plot /over /nokey /size=0.15 /symbol=diamplus /vs {5.0},{4.0} -anno /xpos=5.15 /ypos=4.0 /valign=0 /size=0.08 "diamplus" -plot /over /nokey /size=0.15 /symbol=diamfill /vs {6.0},{4.0} -anno /xpos=6.15 /ypos=4.0 /valign=0 /size=0.08 "diamfill" -plot /over /nokey /size=0.15 /symbol=starempty /vs {7.0},{4.0} -anno /xpos=7.15 /ypos=4.0 /valign=0 /size=0.08 "starempty" -plot /over /nokey /size=0.15 /symbol=starfill /vs {8.0},{4.0} -anno /xpos=8.15 /ypos=4.0 /valign=0 /size=0.08 "starfill" -plot /over /nokey /size=0.15 /symbol=pentempty /vs {1.0},{3.0} -anno /xpos=1.15 /ypos=3.0 /valign=0 /size=0.08 "pentempty" -plot /over /nokey /size=0.15 /symbol=pentfill /vs {2.0},{3.0} -anno /xpos=2.15 /ypos=3.0 /valign=0 /size=0.08 "pentfill" -plot /over /nokey /size=0.15 /symbol=hexempty /vs {3.0},{3.0} -anno /xpos=3.15 /ypos=3.0 /valign=0 /size=0.08 "hexempty" -plot /over /nokey /size=0.15 /symbol=hexwye /vs {4.0},{3.0} -anno /xpos=4.15 /ypos=3.0 /valign=0 /size=0.08 "hexwye" -plot /over /nokey /size=0.15 /symbol=hexfill /vs {5.0},{3.0} -anno /xpos=5.15 /ypos=3.0 /valign=0 /size=0.08 "hexfill" -plot /over /nokey /size=0.15 /symbol=exnormal /vs {1.0},{2.0} -anno /xpos=1.15 /ypos=2.0 /valign=0 /size=0.08 "exnormal" -plot /over /nokey /size=0.15 /symbol=exshort /vs {2.0},{2.0} -anno /xpos=2.15 /ypos=2.0 /valign=0 /size=0.08 "exshort" -plot /over /nokey /size=0.15 /symbol=extall /vs {3.0},{2.0} -anno /xpos=3.15 /ypos=2.0 /valign=0 /size=0.08 "extall" -plot /over /nokey /size=0.15 /symbol=plusnorm /vs {4.0},{2.0} -anno /xpos=4.15 /ypos=2.0 /valign=0 /size=0.08 "plusnormal" -plot /over /nokey /size=0.15 /symbol=plusshort /vs {5.0},{2.0} -anno /xpos=5.15 /ypos=2.0 /valign=0 /size=0.08 "plusshort" -plot /over /nokey /size=0.15 /symbol=plustall /vs {6.0},{2.0} -anno /xpos=6.15 /ypos=2.0 /valign=0 /size=0.08 "plustall" -plot /over /nokey /size=0.15 /symbol=hline /vs {7.0},{2.0} -anno /xpos=7.15 /ypos=2.0 /valign=0 /size=0.08 "hline" -plot /over /nokey /size=0.15 /symbol=vline /vs {8.0},{2.0} -anno /xpos=8.15 /ypos=2.0 /valign=0 /size=0.08 "vline" -frame /file=pointplots.png -frame /file=pointplots.pdf -set mode ignore_error -plot /over /nokey /size=0.45 /symbol=12 /color=green /highlight /vs {8.0},{1.0} -can mode ignore_error -set grid abstract -can grid xygrid -can axis yax -can axis xax -GO bn_reset bn_symbolcolors -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_symbolcolors -GO bn_symbolcolors -set text /font=helvetica -set window /thick=1.0 /xinch=8 /yinch=10.5 /xpix=1600 1 -set view upper -def axis /X=1.0:8.0:1.0 xax -def axis /Y=1.0:4.0:1.0 yax -def grid /X=xax /Y=yax xygrid -set grid xygrid -plot /hlim=0:9 /vlim=0:5 /symbol=dot /nokey /nolab /color=(0,0,0,0) /vs X + 0.0 * Y, 0.0 * X + Y -plot /over /nokey /size=0.50 /symbol=hexf /color=green /vs {1.0},{3.0} -plot /over /nokey /size=0.50 /symbol=hexf /color=red /highlight=(0,0,100,50) /vs {3.0},{3.0} -plot /over /nokey /size=0.50 /symbol=hexf /color=green /highlight /vs {5.0},{3.0} -plot /over /nokey /size=0.50 /symbol=hexf /color=(0,75,100) /vs {7.0},{3.0} -plot /over /nokey /size=0.50 /symbol=plusn /color=(100,0,0,50) /vs {7.0},{3.0} -plot /over /nokey /size=0.50 /symbol=hexf /color=3 /highlight=4 /vs {2.0},{1.0} -plot /over /nokey /size=0.50 /symbol=pentempty /color=lightblue /highlight /vs {4.0},{1.0} -plot /over /nokey /size=0.50 /symbol=asterisk /color=lightblue /highlight /vs {6.0},{1.0} -set grid abstract -can grid xygrid -can axis yax -can axis xax -set view ll -plot /vs /nolab /nokey /sym=boxfill /high /siz=0.2 /line /ribbon /thick=3 /lev=(1,6,1) /hlim=0:9 /vlim=0:6 {1,2,3,4,5,6,7,8}, {3,2,5,1,4,2,5,1}, {1,2,3,3,3,3,4,5} -set view lr -plot /vs /nolab /nokey /hlim=0:9 /vlim=0:6 /line /color=red /thick=3 {1,2,3,4,5,6,7,8}, {3,2,5,1,4,2,5,1} -plot /vs /nolab /nokey /over /color=blue /sym=boxfill /high /siz=0.2 {1,2,3,4,5,6,7,8}, {3,2,5,1,4,2,5,1} -frame /file=symbolcolors.png -frame /file=symbolcolors.pdf -GO bn_reset bn_contourcolor -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_contourcolor -GO bn_contourcolor -set text /font=hershey -contour/i=1:20/j=1:20/lev=(0)(-10,10,2.125)/color=blue/title="Contour Hershey Blue" 10*sin(i/3)*cos(j/4) -frame /file=contourcolor_blue.pdf -set text /font=helvetica -contour/i=1:20/j=1:20/lev=(0)(-10,10,2.125)/color=green/title="Contour Helvetica Green" 10*sin(i/3)*cos(j/4) -frame /file=contourcolor_green.pdf -contour/i=1:20/j=1:20/lev=(0)(-10,10,2.125)/color=(60,20,30)/title="Contour Helvetica Puce (60,20,30)" 10*sin(i/3)*cos(j/4) -frame /file=contourcolor_puce.pdf -use gt4d011.cdf -set text/color=blue contour -contour/j=40/l=1/color=(30,60,30)/title="contour depth var with blue labels" temp -frame /file=contourcolor_depth.pdf -cancel text -use coads_climatology -set text/font=arial -set view left -contour/x=230:290/y=20s:20n/l=1/lev=1d sst -cont/ov/x=230:290/y=20s:20n/l=1/lev=(24) sst -set view right -contour/x=230:290/y=20s:20n/l=1/lev=1d sst -frame /file=contourcolor_restore.pdf -GO bn_reset bn_outline_poly -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_outline_poly -GO bn_outline_poly -set win /xinch=8 /thick=1 /asp=1 /outline=5 1 -let v = 2*3.14159*x[gx=0:1:.01] -poly/hl=-1:1/vl=-1:1/key/pal=red/thick=1/opac=50 sin(v), cos(v) -frame /file=outline_poly.pdf -GO bn_reset bn_stats_histogram -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_stats_histogram -GO bn_stats_histogram -define axis /Y=-1.0:1.0:0.2 yax -define axis /Z=0.0:100.0:1.0 zax -let pi = 4.0 * atan(1.0) -let midpts = Y[gy=yax] -list midpts - VARIABLE : Y[GY=YAX] - SUBSET : 11 points (Y) - -1 / 1: -1.000 - -0.8 / 2: -0.800 - -0.6 / 3: -0.600 - -0.4 / 4: -0.400 - -0.2 / 5: -0.200 - 0 / 6: 0.000 - 0.2 / 7: 0.200 - 0.4 / 8: 0.400 - 0.6 / 9: 0.600 - 0.8 / 10: 0.800 - 1 / 11: 1.000 -let data = cos(factor * Z[gz=zax]) -let factor = pi / 200.0 -list stats_histogram(data, midpts) - VARIABLE : STATS_HISTOGRAM(DATA, MIDPTS) - SUBSET : 11 points (Y) - -1 / 1: 0.00 - -0.8 / 2: 0.00 - -0.6 / 3: 0.00 - -0.4 / 4: 0.00 - -0.2 / 5: 0.00 - 0 / 6: 7.00 - 0.2 / 7: 13.00 - 0.4 / 8: 14.00 - 0.6 / 9: 16.00 - 0.8 / 10: 22.00 - 1 / 11: 29.00 -let factor = pi / 100.0 -list stats_histogram(data, midpts) - VARIABLE : STATS_HISTOGRAM(DATA, MIDPTS) - SUBSET : 11 points (Y) - -1 / 1: 15.00 - -0.8 / 2: 11.00 - -0.6 / 3: 8.00 - -0.4 / 4: 7.00 - -0.2 / 5: 6.00 - 0 / 6: 7.00 - 0.2 / 7: 6.00 - 0.4 / 8: 7.00 - 0.6 / 9: 8.00 - 0.8 / 10: 11.00 - 1 / 11: 15.00 -let factor = pi / 50.0 -list stats_histogram(data, midpts) - VARIABLE : STATS_HISTOGRAM(DATA, MIDPTS) - SUBSET : 11 points (Y) - -1 / 1: 15.00 - -0.8 / 2: 10.00 - -0.6 / 3: 8.00 - -0.4 / 4: 8.00 - -0.2 / 5: 6.00 - 0 / 6: 6.00 - 0.2 / 7: 6.00 - 0.4 / 8: 8.00 - 0.6 / 9: 8.00 - 0.8 / 10: 10.00 - 1 / 11: 16.00 -let factor = pi / 25.0 -list stats_histogram(data, midpts) - VARIABLE : STATS_HISTOGRAM(DATA, MIDPTS) - SUBSET : 11 points (Y) - -1 / 1: 14.00 - -0.8 / 2: 12.00 - -0.6 / 3: 8.00 - -0.4 / 4: 8.00 - -0.2 / 5: 4.00 - 0 / 6: 8.00 - 0.2 / 7: 4.00 - 0.4 / 8: 8.00 - 0.6 / 9: 8.00 - 0.8 / 10: 12.00 - 1 / 11: 15.00 -cancel var data -cancel var factor -cancel var midpts -cancel var pi -cancel axis zax -cancel axis yax -GO bn_reset bn_symbolpattern -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_symbolpattern -GO bn_symbolpattern -set text /font=helvetica -use coads_climatology -let sstteensx = if ( SST[L=1] ge 13.0 and SST[L=1] le 19.0 ) then X -let sstteensy = if ( SST[L=1] ge 13.0 and SST[L=1] le 19.0 ) then Y -let ptsx = xsequence(sstteensx) -let ptsy = xsequence(sstteensy) -shade /L=1 sst -plot /over /vs /sym=plustall /size=0.07 ptsx, ptsy -frame /file=symbolpattern.pdf -GO bn_reset bn_setting_text -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -Starting test: bn_setting_text -GO bn_setting_text -set text/font=helvetica -set view ul -define axis/x=0:20:1/units=degrees_east xaxis -define axis/y=0:20:1/units=degrees_north yaxis -let xx = x[gx=xaxis] -let yy = y[gy=yaxis] -contour/color=(20,70,70)/thick/title="contour" 10*sin(xx/3)*cos(yy/4) -set text/color=red contour -set text/isiz=3/bold title -set text/font=serif/bold/color=blue hlab -set text/font=serif/bold/color=purple vlab -set view ur -contour/color=(20,70,70)/thick/title="With SET TEXT customizing text groups" 10*sin(xx/3)*cos(yy/4) -cancel text -set view ll -set text/font=arial -let/title="Xpts title with many deltas: <&Delta> <&Delta> <&Delta> <&Delta> <&Delta> <&Delta>" xpts = {0,1} -let/title="Ypts title with degree sign <°> C" ypts = {0,1} -plot/x=0:3/y=0:3/vs/title= "K2 / (here are the denominator units)" xpts, ypts -set text/font=courier/bold -annotate/norm/xpos=0.5/ypos=0.5/halign=1/siz=0.12 "Left with3 sub" -annotate/norm/xpos=0.5/ypos=0.4/halign=-1/siz=0.12 "Right with2 super" -annotate/norm/xpos=0.5/ypos=0.6/halign=0/siz=0.12 "Centered with sub2 and super 0.5" -frame/file=set_text.png -set mode ignore -cancel text -set text/font -set text/font=hershey/color=green/bold -set text/isiz=3/bold title -set text/font=helvetica/isiz=6 -set text/color=indigo/font=helvetica -set text/font=helvetica -set text/bold nogroup -cancel text -set mode/last ignore -ENDIF ! pyferret - -! *********** Always do a bn_reset *********** -! *********** make sure things clean up well ** - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo - -! version 2.3 requires exit/command *sh* 3/92 -exit/command -yes? yes? yes? yes? yes? NOAA/PMEL TMAP - PyFerret v7.51 (debug) - Linux 2.6.32-754.17.1.el6.x86_64 - 08/20/19 - 20-Aug-19 12:26 - -SET MODE VERIFY -! bn_all_ef.jnl -! - run all the benchmark tests for externally-linked external functions. -! 12/16 vis5D functions have long been defunct. Remove that test - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO bn_ef_external_functions.jnl -! Tests of external functions that are distributed as shared object files. - -! Jon's benchmarks -go bench_examples -set mode ignore_error -show func/ext add_9 -ADD_9(A,B,C,D,E,F,G,H,I) - (demonstration function) adds 9 arguments -show func/ext ave* -AVE_SCAT2GRID_T(TPTS,VPTS,TAXIS) - Compute average of a variable in each cell of output time axis - TPTS: T coordinates of scattered input time coordinates - VPTS: Variable at times in TPTS - TAXIS: Output time axis -AVET(A) - (demonstration function) returns the time average - A: data to be averaged over the time axis -show func pass_thru -PASS_THRU(A) - (demonstration function) sets result equal to input - A: this arg is passed through -show func sto* -STORAGE(A) - sets result equal to input/10 - A: input - -go bench_add_9 -! Bench_add_9.jnl -! ACM 8/99 -! benchmark script for testing external function add_9. -! Note: bench_add_9_visual contains plots of similar computations - -set mode ignore_errors - - -can region -use coads_climatology -set region/x=151E:179E/y=0 - -let a1 = sst[d=1,l=1] -let a2 = sst[d=1,l=2] -let a3 = sst[d=1,l=3] - -let a = add_9(a1,a2,a3,a1,a2,a3,a1,a2,a3) - -list a - VARIABLE : ADD_9(A1,A2,A3,A1,A2,A3,A1,A2,A3) - SUBSET : 15 points (LONGITUDE) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 151E / 66: 263.6 - 153E / 67: 264.5 - 155E / 68: 264.2 - 157E / 69: 261.3 - 159E / 70: 260.9 - 161E / 71: 262.4 - 163E / 72: 264.0 - 165E / 73: 261.1 - 167E / 74: 260.9 - 169E / 75: 261.0 - 171E / 76: 259.3 - 173E / 77: 257.9 - 175E / 78: 257.0 - 177E / 79: 259.1 - 179E / 80: 254.8 -list a - 3 * sst[d=1,l=1:3@sum] - VARIABLE : A - 3 * SST[D=coads_climatology,L=1:3@SUM] - SUBSET : 15 points (LONGITUDE) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 151E / 66: 0.0000 - 153E / 67: 0.0000 - 155E / 68: 0.0000 - 157E / 69: 0.0000 - 159E / 70: 0.0000 - 161E / 71: 0.0000 - 163E / 72: 0.0000 - 165E / 73: 0.0000 - 167E / 74: 0.0000 - 169E / 75: 0.0000 - 171E / 76: 0.0000 - 173E / 77: 0.0000 - 175E / 78: 0.0000 - 177E / 79: 0.0000 - 179E / 80: 0.0000 -set mode/last ignore_errors -go bench_avet -! Bench_avet.jnl -! ACM 8/99 -! benchmark script for testing external function avet. -! Note: bench_avet_visual.jnl contains plots of similar computations - -set mode ignore_errors - -can region -use coads_climatology -set region/x=151E:179E/y=0 - -let a = avet(sst) -list a - VARIABLE : AVET(SST) - FILENAME : coads_climatology.cdf - SUBSET : 15 points (LONGITUDE) - LATITUDE : 1S - 1S - 45 - 151E / 66: 29.28 - 153E / 67: 29.39 - 155E / 68: 29.35 - 157E / 69: 29.03 - 159E / 70: 28.99 - 161E / 71: 29.15 - 163E / 72: 29.33 - 165E / 73: 29.01 - 167E / 74: 28.99 - 169E / 75: 29.00 - 171E / 76: 28.81 - 173E / 77: 28.66 - 175E / 78: 28.56 - 177E / 79: 28.79 - 179E / 80: 28.31 -list a - sst[l=@ave] - VARIABLE : A - SST[L=@AVE] - FILENAME : coads_climatology.cdf - SUBSET : 15 points (LONGITUDE) - LATITUDE : 1S - TIME : 01-JAN 00:45 to 01-APR 08:12 - 1S - 45 - 151E / 66: -3.553E-15 - 153E / 67: 0.000E+00 - 155E / 68: -3.553E-15 - 157E / 69: 0.000E+00 - 159E / 70: -3.553E-15 - 161E / 71: 0.000E+00 - 163E / 72: -3.553E-15 - 165E / 73: -3.553E-15 - 167E / 74: -3.553E-15 - 169E / 75: -3.553E-15 - 171E / 76: 0.000E+00 - 173E / 77: -3.553E-15 - 175E / 78: 3.553E-15 - 177E / 79: 0.000E+00 - 179E / 80: 0.000E+00 - -can region -let a = x[i=1:9,k=1:5] + t[l=1:5] -let b = x[i=1:9,k=1:5] -let c = avet(a) -list b, c - X: 0.5 to 9.5 - Column 1: B is X[I=1:9,K=1:5] - Column 2: C is AVET(A) - B C -1 / 1: 1.000 4.00 -2 / 2: 2.000 5.00 -3 / 3: 3.000 6.00 -4 / 4: 4.000 7.00 -5 / 5: 5.000 8.00 -6 / 6: 6.000 9.00 -7 / 7: 7.000 10.00 -8 / 8: 8.000 11.00 -9 / 9: 9.000 12.00 - -set mode/last ignore_errors -go bench_pass_thru -! Bench_pass_thru.jnl -! ACM 8/99 -! benchmark script for testing external function pass_thru. -! Note: bench_pass_thru_visual.jnl contains plots of similar computations - -set mode ignore_errors - -can region -let a = pass_thru(x) -list a[i=1:20] - VARIABLE : PASS_THRU(X) - SUBSET : 20 points (X) - 1 / 1: 1.00 - 2 / 2: 2.00 - 3 / 3: 3.00 - 4 / 4: 4.00 - 5 / 5: 5.00 - 6 / 6: 6.00 - 7 / 7: 7.00 - 8 / 8: 8.00 - 9 / 9: 9.00 - 10 / 10: 10.00 - 11 / 11: 11.00 - 12 / 12: 12.00 - 13 / 13: 13.00 - 14 / 14: 14.00 - 15 / 15: 15.00 - 16 / 16: 16.00 - 17 / 17: 17.00 - 18 / 18: 18.00 - 19 / 19: 19.00 - 20 / 20: 20.00 -set region/i=1:20 -list sin(a) - VARIABLE : SIN(A) - SUBSET : 20 points (X) - 1 / 1: 0.8415 - 2 / 2: 0.9093 - 3 / 3: 0.1411 - 4 / 4: -0.7568 - 5 / 5: -0.9589 - 6 / 6: -0.2794 - 7 / 7: 0.6570 - 8 / 8: 0.9894 - 9 / 9: 0.4121 - 10 / 10: -0.5440 - 11 / 11: -1.0000 - 12 / 12: -0.5366 - 13 / 13: 0.4202 - 14 / 14: 0.9906 - 15 / 15: 0.6503 - 16 / 16: -0.2879 - 17 / 17: -0.9614 - 18 / 18: -0.7510 - 19 / 19: 0.1499 - 20 / 20: 0.9129 -can var/all -can region - -use coads_climatology -let a = pass_thru(sst[l=@ave,y=@sbx:11]) -list/x=50 a - VARIABLE : PASS_THRU(SST[L=@AVE,Y=@SBX:11]) - FILENAME : coads_climatology.cdf - SUBSET : 90 points (LATITUDE) - LONGITUDE: 49E - TIME : 01-JAN 00:45 to 01-APR 08:12 - 49E - 15 - 89N / 90: .... - 87N / 89: .... - 85N / 88: .... - 83N / 87: .... - 81N / 86: .... - 79N / 85: .... - 77N / 84: .... - 75N / 83: .... - 73N / 82: .... - 71N / 81: .... - 69N / 80: .... - 67N / 79: .... - 65N / 78: .... - 63N / 77: .... - 61N / 76: .... - 59N / 75: .... - 57N / 74: .... - 55N / 73: .... - 53N / 72: .... - 51N / 71: .... - 49N / 70: .... - 47N / 69: .... - 45N / 68: .... - 43N / 67: .... - 41N / 66: .... - 39N / 65: .... - 37N / 64: .... - 35N / 63: .... - 33N / 62: .... - 31N / 61: .... - 29N / 60: .... - 27N / 59: .... - 25N / 58: .... - 23N / 57: .... - 21N / 56: .... - 19N / 55: .... - 17N / 54: .... - 15N / 53: .... - 13N / 52: .... - 11N / 51: .... - 9N / 50: .... - 7N / 49: .... - 5N / 48: 26.94 - 3N / 47: 27.22 - 1N / 46: 27.48 - 1S / 45: 27.67 - 3S / 44: 27.78 - 5S / 43: 27.92 - 7S / 42: 28.04 - 9S / 41: 28.12 - 11S / 40: 28.18 - 13S / 39: 28.14 - 15S / 38: 28.03 - 17S / 37: 27.82 - 19S / 36: 27.45 - 21S / 35: 27.04 - 23S / 34: 26.52 - 25S / 33: 25.86 - 27S / 32: 25.09 - 29S / 31: 24.17 - 31S / 30: 23.04 - 33S / 29: 21.37 - 35S / 28: 19.60 - 37S / 27: 17.68 - 39S / 26: 15.76 - 41S / 25: 13.87 - 43S / 24: 11.98 - 45S / 23: 10.18 - 47S / 22: 8.45 - 49S / 21: 6.82 - 51S / 20: 5.33 - 53S / 19: 4.03 - 55S / 18: 3.19 - 57S / 17: 2.42 - 59S / 16: .... - 61S / 15: .... - 63S / 14: .... - 65S / 13: .... - 67S / 12: .... - 69S / 11: .... - 71S / 10: .... - 73S / 9: .... - 75S / 8: .... - 77S / 7: .... - 79S / 6: .... - 81S / 5: .... - 83S / 4: .... - 85S / 3: .... - 87S / 2: .... - 89S / 1: .... -let a = pass_thru(sst) -set region/@w -list/x=50 a[l=1] - VARIABLE : PASS_THRU(SST) - FILENAME : coads_climatology.cdf - SUBSET : 90 points (LATITUDE) - LONGITUDE: 49E - TIME : 16-JAN 06:00 - 49E - 15 - 89N / 90: .... - 87N / 89: .... - 85N / 88: .... - 83N / 87: .... - 81N / 86: .... - 79N / 85: .... - 77N / 84: .... - 75N / 83: .... - 73N / 82: 0.59 - 71N / 81: 0.62 - 69N / 80: 0.45 - 67N / 79: .... - 65N / 78: .... - 63N / 77: .... - 61N / 76: .... - 59N / 75: .... - 57N / 74: .... - 55N / 73: .... - 53N / 72: .... - 51N / 71: .... - 49N / 70: .... - 47N / 69: .... - 45N / 68: 3.32 - 43N / 67: 4.72 - 41N / 66: 4.84 - 39N / 65: 8.63 - 37N / 64: 8.07 - 35N / 63: .... - 33N / 62: .... - 31N / 61: .... - 29N / 60: 18.91 - 27N / 59: 20.83 - 25N / 58: .... - 23N / 57: .... - 21N / 56: .... - 19N / 55: .... - 17N / 54: .... - 15N / 53: 25.41 - 13N / 52: 25.37 - 11N / 51: 25.82 - 9N / 50: 27.20 - 7N / 49: 26.11 - 5N / 48: 26.10 - 3N / 47: 26.25 - 1N / 46: 26.44 - 1S / 45: 27.01 - 3S / 44: 27.61 - 5S / 43: 28.24 - 7S / 42: 28.71 - 9S / 41: 28.46 - 11S / 40: 28.07 - 13S / 39: 28.15 - 15S / 38: 28.08 - 17S / 37: 28.29 - 19S / 36: 27.61 - 21S / 35: 27.59 - 23S / 34: 27.06 - 25S / 33: 26.70 - 27S / 32: 25.89 - 29S / 31: 24.65 - 31S / 30: 23.86 - 33S / 29: 22.16 - 35S / 28: 20.58 - 37S / 27: 19.20 - 39S / 26: 17.51 - 41S / 25: 14.44 - 43S / 24: 8.55 - 45S / 23: 7.51 - 47S / 22: 5.77 - 49S / 21: 4.21 - 51S / 20: 3.64 - 53S / 19: 2.87 - 55S / 18: 2.67 - 57S / 17: 2.05 - 59S / 16: 1.37 - 61S / 15: 1.33 - 63S / 14: 0.77 - 65S / 13: -0.04 - 67S / 12: -0.93 - 69S / 11: .... - 71S / 10: .... - 73S / 9: .... - 75S / 8: .... - 77S / 7: .... - 79S / 6: .... - 81S / 5: .... - 83S / 4: .... - 85S / 3: .... - 87S / 2: .... - 89S / 1: .... -list/x=50 a[l=@ave,y=@sbx:11] - VARIABLE : PASS_THRU(SST) - box smoothed by 11 pts on Y - FILENAME : coads_climatology.cdf - SUBSET : 90 points (LATITUDE) - LONGITUDE: 49E - TIME : 01-JAN 00:45 to 01-APR 08:12 (averaged) - 49E - 15 - 89N / 90: .... - 87N / 89: .... - 85N / 88: .... - 83N / 87: .... - 81N / 86: .... - 79N / 85: .... - 77N / 84: .... - 75N / 83: .... - 73N / 82: .... - 71N / 81: .... - 69N / 80: .... - 67N / 79: .... - 65N / 78: .... - 63N / 77: .... - 61N / 76: .... - 59N / 75: .... - 57N / 74: .... - 55N / 73: .... - 53N / 72: .... - 51N / 71: .... - 49N / 70: .... - 47N / 69: .... - 45N / 68: .... - 43N / 67: .... - 41N / 66: .... - 39N / 65: .... - 37N / 64: .... - 35N / 63: .... - 33N / 62: .... - 31N / 61: .... - 29N / 60: .... - 27N / 59: .... - 25N / 58: .... - 23N / 57: .... - 21N / 56: .... - 19N / 55: .... - 17N / 54: .... - 15N / 53: .... - 13N / 52: .... - 11N / 51: .... - 9N / 50: .... - 7N / 49: .... - 5N / 48: 26.94 - 3N / 47: 27.22 - 1N / 46: 27.48 - 1S / 45: 27.67 - 3S / 44: 27.78 - 5S / 43: 27.92 - 7S / 42: 28.04 - 9S / 41: 28.12 - 11S / 40: 28.18 - 13S / 39: 28.14 - 15S / 38: 28.03 - 17S / 37: 27.82 - 19S / 36: 27.45 - 21S / 35: 27.04 - 23S / 34: 26.52 - 25S / 33: 25.86 - 27S / 32: 25.09 - 29S / 31: 24.17 - 31S / 30: 23.04 - 33S / 29: 21.37 - 35S / 28: 19.60 - 37S / 27: 17.68 - 39S / 26: 15.76 - 41S / 25: 13.87 - 43S / 24: 11.98 - 45S / 23: 10.18 - 47S / 22: 8.45 - 49S / 21: 6.82 - 51S / 20: 5.33 - 53S / 19: 4.03 - 55S / 18: 3.19 - 57S / 17: 2.42 - 59S / 16: .... - 61S / 15: .... - 63S / 14: .... - 65S / 13: .... - 67S / 12: .... - 69S / 11: .... - 71S / 10: .... - 73S / 9: .... - 75S / 8: .... - 77S / 7: .... - 79S / 6: .... - 81S / 5: .... - 83S / 4: .... - 85S / 3: .... - 87S / 2: .... - 89S / 1: .... - -set mode/last ignore_errors -go bench_storage -! Bench_storage.jnl -! ACM 8/99 -! benchmark script for testing external function storage. -! Note: bench_storage_visual.jnl contains plots of similar computations - -set mode ignore_errors - -use gtsa056_1 -let a = storage(temp) -set region/k=1/l=5/i=1:2/j=44:50 -list a - VARIABLE : STORAGE(TEMP) - FILENAME : gtsa056_1.cdf - SUBSET : 2 by 7 points (LONGITUDE-LATITUDE) - DEPTH (m): 5 - TIME : 27-JAN-1982 18:00 - 130.5E 131.5E - 1 2 - 1.5N / 50: .... 2.955 - 1.17N / 49: .... 2.962 - 0.83N / 48: .... 2.966 - 0.5N / 47: .... 2.973 - 0.17N / 46: .... 2.985 - 0.17S / 45: .... 2.990 - 0.5S / 44: .... .... - -can region -set region/x=140w/y=10n/k=1 -list a - VARIABLE : STORAGE(TEMP) - FILENAME : gtsa056_1.cdf - SUBSET : 5 points (TIME) - LONGITUDE: 140.5W - LATITUDE : 9.833N - DEPTH (m): 5 - 140.5W - 90 - 15-JAN-1982 14 / 1: 2.656 - 18-JAN-1982 15 / 2: 2.654 - 21-JAN-1982 16 / 3: 2.652 - 24-JAN-1982 17 / 4: 2.649 - 27-JAN-1982 18 / 5: 2.646 - -can region - -let b = temp[x=140e:60w] -let c = storage(b) -list/i=11:20 c[k=1,l=5,j=44:50@ave] - VARIABLE : STORAGE(B) - FILENAME : gtsa056_1.cdf - SUBSET : 10 points (LONGITUDE) - LATITUDE : 0.667S to 1.667N (averaged) - DEPTH (m): 5 - TIME : 27-JAN-1982 18:00 - 140.5E / 11: 2.953 - 141.5E / 12: 2.956 - 142.5E / 13: 2.961 - 143.5E / 14: 2.966 - 144.5E / 15: 2.968 - 145.5E / 16: 2.968 - 146.5E / 17: 2.967 - 147.5E / 18: 2.970 - 148.5E / 19: 2.974 - 149.5E / 20: 2.979 - -set mode/last ignore_errors - -go bench_subtract -! Bench_subtract.jnl -! ACM 8/99 -! benchmark script for testing external function subtract. -! Note: bench_subtract_visual.jnl contains plots of similar computations -! V550 *sh* 11/02 - documentation note only reflecting subspan modulo - -set mode ignore_errors - -can region -use ocean_atlas_temp -use coads_climatology -let oatemp = temp[d=ocean_atlas_temp,g=sst[d=coads_climatology]] -set region/l=1 -let a = subtract(oatemp,sst) -list/x=150:160/y=0 a - VARIABLE : SUBTRACT(OATEMP,SST) - FILENAME : coads_climatology.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 1S - DEPTH (m): 0 - TIME : 16-JAN 06:00 - 1S - 45 - 151E / 66: 0.0233 - 153E / 67: 0.0346 - 155E / 68: 0.1315 - 157E / 69: 0.2809 - 159E / 70: 0.2610 -let b = oatemp- sst -list/x=150:160/y=0 a - b - VARIABLE : A - B - FILENAME : coads_climatology.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 1S - DEPTH (m): 0 - TIME : 16-JAN 06:00 - 1S - 45 - 151E / 66: 0.0000 - 153E / 67: 0.0000 - 155E / 68: 0.0000 - 157E / 69: 0.0000 - 159E / 70: 0.0000 - -can region -let a = oatemp[l=1] -let b = sst[l=1] -list/x=150:160/y=0 subtract(a,b) - VARIABLE : SUBTRACT(A,B) - FILENAME : coads_climatology.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 1S - DEPTH (m): 0 - TIME : 16-JAN 06:00 - 1S - 45 - 151E / 66: 0.0233 - 153E / 67: 0.0346 - 155E / 68: 0.1315 - 157E / 69: 0.2809 - 159E / 70: 0.2610 - -let a = oatemp[x=180] -let b = sst[x=180] -list/y=0 subtract(a,b) - VARIABLE : SUBTRACT(A,B) - FILENAME : coads_climatology.cdf - SUBSET : 3 points (TIME) - LONGITUDE: 179E - LATITUDE : 1S - DEPTH (m): 0 - 179E - 80 - 16-JAN / 1: 0.1934 - 15-FEB / 2: 0.1304 - 17-MAR / 3: .... - -can region -let a = x[i=1:30] -let b = y[j=1:30] -list/y=15 subtract(a,b) ! pre: V550 this gave a valid MARCH. Valid behavior chg in V550 - VARIABLE : SUBTRACT(A,B) - SUBSET : 30 points (X) - Y : 15 - 15 - 15 - 1 / 1: -14.00 - 2 / 2: -13.00 - 3 / 3: -12.00 - 4 / 4: -11.00 - 5 / 5: -10.00 - 6 / 6: -9.00 - 7 / 7: -8.00 - 8 / 8: -7.00 - 9 / 9: -6.00 - 10 / 10: -5.00 - 11 / 11: -4.00 - 12 / 12: -3.00 - 13 / 13: -2.00 - 14 / 14: -1.00 - 15 / 15: 0.00 - 16 / 16: 1.00 - 17 / 17: 2.00 - 18 / 18: 3.00 - 19 / 19: 4.00 - 20 / 20: 5.00 - 21 / 21: 6.00 - 22 / 22: 7.00 - 23 / 23: 8.00 - 24 / 24: 9.00 - 25 / 25: 10.00 - 26 / 26: 11.00 - 27 / 27: 12.00 - 28 / 28: 13.00 - 29 / 29: 14.00 - 30 / 30: 15.00 - -can region -let a = sst[l=1] -let b = 26 -list/x=150:160/y=0 subtract(a,b) - VARIABLE : SUBTRACT(A,B) - FILENAME : coads_climatology.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 151E / 66: 3.416 - 153E / 67: 3.431 - 155E / 68: 3.334 - 157E / 69: 3.190 - 159E / 70: 3.219 -list/x=150:160/y=0 subtract(a,26) - VARIABLE : SUBTRACT(A,26) - FILENAME : coads_climatology.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 1S - TIME : 16-JAN 06:00 - 1S - 45 - 151E / 66: 3.416 - 153E / 67: 3.431 - 155E / 68: 3.334 - 157E / 69: 3.190 - 159E / 70: 3.219 - -let b = sst[x=180,y=0,l=@ave] -list/x=150:160/y=0 subtract(a,b) - VARIABLE : SUBTRACT(A,B) - FILENAME : coads_climatology.cdf - SUBSET : 5 points (LONGITUDE) - LATITUDE : 1S - TIME : 01-JAN 00:45 to 01-APR 08:12 - 1S - 45 - 151E / 66: 1.109 - 153E / 67: 1.124 - 155E / 68: 1.027 - 157E / 69: 0.883 - 159E / 70: 0.912 - -set mode/last ignore_errors - - - -!!!!!!!!!!!!!!!!!!!!!! -! -! YAY!! End of bench_examples.jnl without crashing!!!! -! -!!!!!!!!!!!!!!!!!!!!!! - -! 12/16 No other external functions are distributed. Remove further references. - -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go bn_fcn_calls.jnl -! Simple tests of external functions -! these are not otherwise tested in the benchmarkd -! ACM 23-Aug-2006 -! 05/07 *acm* move tests of date1900, tax_* functions and -! fill_xy to bn_internal_external_functions.jnl - -exit - -exit/command - ------ -Appending ncdump output -err491_dp_time_write.jnl --- 1 original file -netcdf out { -dimensions: - T5 = UNLIMITED ; // (1 currently) -variables: - double T5(T5) ; - T5:units = "min since 1901-01-15" ; - T5:axis = "T" ; - T5:calendar = "GREGORIAN" ; - T5:time_origin = "15-JAN-1901" ; - T5:standard_name = "time" ; - double MY_VAR(T5) ; - MY_VAR:missing_value = -1.e+34 ; - MY_VAR:_FillValue = -1.e+34 ; - MY_VAR:long_name = "T[GT=T5]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - T5 = 50757969 ; - - MY_VAR = 50757969 ; -} -err491_dp_time_write.jnl --- 2 after append -netcdf out { -dimensions: - T5 = UNLIMITED ; // (2 currently) -variables: - double T5(T5) ; - T5:units = "min since 1901-01-15" ; - T5:axis = "T" ; - T5:calendar = "GREGORIAN" ; - T5:time_origin = "15-JAN-1901" ; - T5:standard_name = "time" ; - double MY_VAR(T5) ; - MY_VAR:missing_value = -1.e+34 ; - MY_VAR:_FillValue = -1.e+34 ; - MY_VAR:long_name = "T[GT=T5]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - T5 = 50757969, 50757974 ; - - MY_VAR = 50757969, 50757974 ; -} -bn_strings.jnl --- 1 original file -netcdf test_string { -dimensions: - XAX1_3 = 3 ; - STRING1_10 = 10 ; - STRING1_16 = 16 ; -variables: - double XAX1_3(XAX1_3) ; - XAX1_3:point_spacing = "even" ; - XAX1_3:axis = "X" ; - char A(XAX1_3, STRING1_10) ; - A:long_name = "{\"hello\",\"goodbye\", \"wave to me\"}" ; - char B(STRING1_16) ; - B:long_name = "\"one line of text\"" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX1_3 = 1, 2, 3 ; - - A = - "hello", - "goodbye", - "wave to me" ; - - B = "one line of text" ; -} -bn_strings.jnl --- 2 append to file -bn_strings.jnl --- 3 enhanced heading -netcdf test_string { -dimensions: - grid_definition = 1 ; - XAX1_19 = 19 ; - XAX1_192_5 = 4 ; - STRING1_17 = 17 ; -variables: - char GFP3(grid_definition) ; - GFP3:axes = "XAX1_19 NORMAL NORMAL NORMAL NORMAL NORMAL" ; - double XAX1_19(XAX1_19) ; - XAX1_19:point_spacing = "even" ; - XAX1_19:axis = "X" ; - double XAX1_192_5(XAX1_192_5) ; - XAX1_192_5:child_axis = " " ; - XAX1_192_5:point_spacing = "even" ; - XAX1_192_5:axis = "X" ; - char D(XAX1_192_5, STRING1_17) ; - D:parent_grid = "GFP3" ; - D:slab_min_index = 2, 1, 1, 1 ; - D:slab_max_index = 5, 1, 1, 1 ; - D:long_name = "partial filename list" ; - D:history = "From test_string" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - GFP3 = "" ; - - XAX1_19 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ; - - XAX1_192_5 = 2, 3, 4, 5 ; - - D = - "dummy1.str_test", - "dummy2.str_test", - "dummy3.str_test", - "dummy4.str_test" ; -} -bn_strings.jnl --- 4 sample and ysequence functions on string var -netcdf foo { -dimensions: - XAX1_4 = 4 ; - STRING1_1 = 1 ; - YAX1_3 = 3 ; -variables: - double XAX1_4(XAX1_4) ; - XAX1_4:point_spacing = "even" ; - XAX1_4:axis = "X" ; - char A(XAX1_4, STRING1_1) ; - A:long_name = "{\"a\",,\" \",\"\"}" ; - double YAX1_3(YAX1_3) ; - YAX1_3:point_spacing = "even" ; - YAX1_3:axis = "Y" ; - char B(YAX1_3, STRING1_1) ; - B:long_name = "SAMPLEJ(YSEQUENCE({\"a\",\"b\",,\"d\",\"e\",\"f\"}),{2,,1})" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX1_4 = 1, 2, 3, 4 ; - - A = - "a", - "", - " ", - "" ; - - YAX1_3 = 1, 2, 3 ; - - B = - "b", - "", - "a" ; -} -err550_nc_seconds.jnl --- seconds of time axis - TIME:time_origin = "10-JUN-1996 04:03:36" ; -bn_bounds.jnl --- 1 output of bounds on irreg axes. -netcdf a { -dimensions: - MONTH_IRREG = UNLIMITED ; // (12 currently) - bnds = 2 ; -variables: - double MONTH_IRREG(MONTH_IRREG) ; - MONTH_IRREG:units = "days since 0000-01-01 00:00:00" ; - MONTH_IRREG:time_origin = "01-JAN-0000 00:00:00" ; - MONTH_IRREG:modulo = " " ; - MONTH_IRREG:axis = "T" ; - MONTH_IRREG:standard_name = "time" ; - MONTH_IRREG:bounds = "MONTH_IRREG_bnds" ; - double MONTH_IRREG_bnds(MONTH_IRREG, bnds) ; - double V(MONTH_IRREG) ; - V:missing_value = -1.e+34 ; - V:_FillValue = -1.e+34 ; - V:long_name = "T[GT=MONTH_IRREG]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - MONTH_IRREG = 15.5, 45.12125, 74.7425, 105.2425, 135.7425, 166.2425, - 196.7425, 227.7425, 258.2425, 288.7425, 319.2425, 349.7425 ; - - MONTH_IRREG_bnds = - 0, 31, - 31, 59.2425, - 59.2425, 90.2425, - 90.2425, 120.2425, - 120.2425, 151.2425, - 151.2425, 181.2425, - 181.2425, 212.2425, - 212.2425, 243.2425, - 243.2425, 273.2425, - 273.2425, 304.2425, - 304.2425, 334.2425, - 334.2425, 365.2425 ; - - V = 15.5, 45.12125, 74.7425, 105.2425, 135.7425, 166.2425, 196.7425, - 227.7425, 258.2425, 288.7425, 319.2425, 349.7425 ; -} -bn_bounds.jnl --- 2 long irreg axes. -netcdf a { -dimensions: - COADSX90_90 = 1 ; - COADSY66_66 = 1 ; - TCOADS = UNLIMITED ; // (5 currently) - bnds = 2 ; -variables: - double COADSX90_90(COADSX90_90) ; - COADSX90_90:units = "degrees_east" ; - COADSX90_90:modulo = " " ; - COADSX90_90:point_spacing = "even" ; - COADSX90_90:axis = "X" ; - COADSX90_90:standard_name = "longitude" ; - double COADSY66_66(COADSY66_66) ; - COADSY66_66:units = "degrees_north" ; - COADSY66_66:point_spacing = "even" ; - COADSY66_66:axis = "Y" ; - COADSY66_66:standard_name = "latitude" ; - double TCOADS(TCOADS) ; - TCOADS:units = "days since 1700-01-01 00:00:00" ; - TCOADS:time_origin = "01-JAN-1700 00:00:00" ; - TCOADS:axis = "T" ; - TCOADS:standard_name = "time" ; - TCOADS:bounds = "TCOADS_bnds" ; - double TCOADS_bnds(TCOADS, bnds) ; - double V(TCOADS, COADSY66_66, COADSX90_90) ; - V:missing_value = -1.e+34 ; - V:_FillValue = -1.e+34 ; - V:long_name = "MISSING(VWND,28.5)" ; - V:history = "From coads_vwnd" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - COADSX90_90 = 199 ; - - COADSY66_66 = 41 ; - - TCOADS = 91050, 91080.5, 91111, 91141.5, 91172.5 ; - - TCOADS_bnds = - 91035, 91065, - 91065, 91096, - 91096, 91126, - 91126, 91157, - 91157, 91188 ; - - V = - 4, - 1.94999992847443, - 4.25, - 1.6599999666214, - -0.129999995231628 ; -} -bn_bounds.jnl --- 3 Append later time steps, adding a void point -netcdf a { -dimensions: - COADSX90_90 = 1 ; - COADSY66_66 = 1 ; - TCOADS = UNLIMITED ; // (10 currently) - bnds = 2 ; -variables: - double COADSX90_90(COADSX90_90) ; - COADSX90_90:units = "degrees_east" ; - COADSX90_90:modulo = " " ; - COADSX90_90:point_spacing = "even" ; - COADSX90_90:axis = "X" ; - COADSX90_90:standard_name = "longitude" ; - double COADSY66_66(COADSY66_66) ; - COADSY66_66:units = "degrees_north" ; - COADSY66_66:point_spacing = "even" ; - COADSY66_66:axis = "Y" ; - COADSY66_66:standard_name = "latitude" ; - double TCOADS(TCOADS) ; - TCOADS:units = "days since 1700-01-01 00:00:00" ; - TCOADS:time_origin = "01-JAN-1700 00:00:00" ; - TCOADS:axis = "T" ; - TCOADS:standard_name = "time" ; - TCOADS:bounds = "TCOADS_bnds" ; - double TCOADS_bnds(TCOADS, bnds) ; - double V(TCOADS, COADSY66_66, COADSX90_90) ; - V:missing_value = -1.e+34 ; - V:_FillValue = -1.e+34 ; - V:long_name = "MISSING(VWND,28.5)" ; - V:history = "From coads_vwnd" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - COADSX90_90 = 199 ; - - COADSY66_66 = 41 ; - - TCOADS = 91050, 91080.5, 91111, 91141.5, 91172.5, 91264.5, 91355, 91384.5, - 91415, 91445.5 ; - - TCOADS_bnds = - 91035, 91065, - 91065, 91096, - 91096, 91126, - 91126, 91157, - 91157, 91188, - 91188, 91341, - 91341, 91369, - 91369, 91400, - 91400, 91430, - 91430, 91461 ; - - V = - 4, - 1.94999992847443, - 4.25, - 1.6599999666214, - -0.129999995231628, - _, - -1.0699999332428, - 3.35999989509583, - -3.86999988555908, - 3.93999981880188 ; -} -bn_bounds.jnl --- 4 depth axis, bounds positive up -netcdf a { -dimensions: - ZIRR = 4 ; - bnds = 2 ; -variables: - double ZIRR(ZIRR) ; - ZIRR:units = "meters" ; - ZIRR:point_spacing = "uneven" ; - ZIRR:axis = "Z" ; - ZIRR:bounds = "ZIRR_bnds" ; - ZIRR:positive = "down" ; - ZIRR:standard_name = "depth" ; - double ZIRR_bnds(ZIRR, bnds) ; - double T2(ZIRR) ; - T2:missing_value = -1.e+34 ; - T2:_FillValue = -1.e+34 ; - T2:long_name = "Z[GZ=ZIRR]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - ZIRR = 0, 10, 40, 70 ; - - ZIRR_bnds = - -5, 5, - 5, 25, - 25, 55, - 55, 85 ; - - T2 = 0, 10, 40, 70 ; -} -bn_bounds.jnl --- 5 SAVE on irregular time axis, multi-dimensional save. -netcdf a { -dimensions: - COADSX81_83 = 3 ; - COADSY46_49 = 4 ; - MONTH_IRREG = UNLIMITED ; // (8 currently) - bnds = 2 ; -variables: - double COADSX81_83(COADSX81_83) ; - COADSX81_83:units = "degrees_east" ; - COADSX81_83:modulo = " " ; - COADSX81_83:point_spacing = "even" ; - COADSX81_83:axis = "X" ; - COADSX81_83:standard_name = "longitude" ; - double COADSY46_49(COADSY46_49) ; - COADSY46_49:units = "degrees_north" ; - COADSY46_49:point_spacing = "even" ; - COADSY46_49:axis = "Y" ; - COADSY46_49:standard_name = "latitude" ; - double MONTH_IRREG(MONTH_IRREG) ; - MONTH_IRREG:units = "days since 0000-01-01 00:00:00" ; - MONTH_IRREG:time_origin = "01-JAN-0000 00:00:00" ; - MONTH_IRREG:modulo = " " ; - MONTH_IRREG:axis = "T" ; - MONTH_IRREG:standard_name = "time" ; - MONTH_IRREG:bounds = "MONTH_IRREG_bnds" ; - double MONTH_IRREG_bnds(MONTH_IRREG, bnds) ; - double V(MONTH_IRREG, COADSY46_49, COADSX81_83) ; - V:missing_value = -1.e+34 ; - V:_FillValue = -1.e+34 ; - V:long_name = "MISSING(SST[GT=MONTH_IRREG], 28)" ; - V:history = "From coads_climatology" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - COADSX81_83 = 181, 183, 185 ; - - COADSY46_49 = 1, 3, 5, 7 ; - - MONTH_IRREG = 15.5, 45.12125, 74.7425, 105.2425, 135.7425, 181.7425, - 227.7425, 258.2425 ; - - MONTH_IRREG_bnds = - 0, 31, - 31, 59.2425, - 59.2425, 90.2425, - 90.2425, 120.2425, - 120.2425, 151.2425, - 151.2425, 212.2425, - 212.2425, 243.2425, - 243.2425, 273.2425 ; - - V = - 28.2849935840911, 28.414627680037, 27.9161884993111, - 27.9765395405733, 28.2538326818959, 28.2807402581306, - 28.2439206183922, 28.0639671835704, 28.4098884258851, - 27.8988069263938, 28.1024085497053, 27.7289905177585, - 28.4160049287061, 28.4018177891461, 28.0223225569069, - 28.3564239921735, 28.4116722185187, 27.9981931574269, - 27.9975107377818, 28.1639069786096, 28.1146483772156, - 27.9665335861598, 27.7497643747061, 27.8315865878107, - 28.0636671118728, 27.5906545051978, 27.7380534023442, - 27.9418187705116, 28.0035441744124, 27.7237886368008, - 27.8988417091574, 27.8729683348804, 27.9324667419545, - 27.8429933705147, 27.8182966108574, 27.9089173534895, - 28, 28, 28, - 28, 28, 28, - 28, 28, 28, - 28, 28, 28, - 28, 28, 28, - 28, 28, 28, - 28, 28, 28, - 28, 28, 28, - _, _, _, - _, _, _, - _, _, _, - _, _, _, - 28, 28, 28, - 28, 28, 28, - 28, 28, 28, - 28, 28, 28, - 28, 28, 28, - 28, 28, 28, - 28, 28, 28, - 28, 28, 28 ; -} -bn_bounds.jnl --- 6 SAVE on regular time axis with bounds attribute -netcdf a { -dimensions: - COADSX81_81 = 1 ; - bnds = 2 ; - COADSY46_46 = 1 ; - TIME7 = UNLIMITED ; // (3 currently) -variables: - double COADSX81_81(COADSX81_81) ; - COADSX81_81:units = "degrees_east" ; - COADSX81_81:modulo = " " ; - COADSX81_81:point_spacing = "even" ; - COADSX81_81:axis = "X" ; - COADSX81_81:standard_name = "longitude" ; - COADSX81_81:bounds = "COADSX81_81_bnds" ; - double COADSX81_81_bnds(COADSX81_81, bnds) ; - double COADSY46_46(COADSY46_46) ; - COADSY46_46:units = "degrees_north" ; - COADSY46_46:point_spacing = "even" ; - COADSY46_46:axis = "Y" ; - COADSY46_46:standard_name = "latitude" ; - COADSY46_46:bounds = "COADSY46_46_bnds" ; - double COADSY46_46_bnds(COADSY46_46, bnds) ; - double TIME7(TIME7) ; - TIME7:units = "hour since 0000-01-01 00:00:00" ; - TIME7:time_origin = "01-JAN-0000 00:00:00" ; - TIME7:modulo = " " ; - TIME7:axis = "T" ; - TIME7:standard_name = "time" ; - TIME7:bounds = "TIME7_bnds" ; - double TIME7_bnds(TIME7, bnds) ; - float SST(TIME7, COADSY46_46, COADSX81_81) ; - SST:missing_value = -1.e+34f ; - SST:_FillValue = -1.e+34f ; - SST:long_name = "SEA SURFACE TEMPERATURE" ; - SST:history = "From coads_climatology" ; - SST:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - COADSX81_81 = 181 ; - - COADSX81_81_bnds = - 180, 182 ; - - COADSY46_46 = 1 ; - - COADSY46_46_bnds = - 0, 2 ; - - TIME7 = 366, 1096.485, 1826.97 ; - - TIME7_bnds = - 0.757499999999993, 731.2425, - 731.2425, 1461.7275, - 1461.7275, 2192.2125 ; - - SST = - 28.28389, - 28.41851, - 28.0468 ; -} -bn_bounds.jnl --- 7 SAVE on regular time axis with edges attributes -netcdf a { -dimensions: - COADSX81_81 = 1 ; - COADSX81_81edges = 2 ; - COADSY46_46 = 1 ; - COADSY46_46edges = 2 ; - TIME7 = UNLIMITED ; // (3 currently) - TIME7edges = 4 ; -variables: - double COADSX81_81(COADSX81_81) ; - COADSX81_81:units = "degrees_east" ; - COADSX81_81:modulo = " " ; - COADSX81_81:point_spacing = "even" ; - COADSX81_81:axis = "X" ; - COADSX81_81:standard_name = "longitude" ; - COADSX81_81:edges = "COADSX81_81edges" ; - double COADSX81_81edges(COADSX81_81edges) ; - COADSX81_81edges:edges = " " ; - double COADSY46_46(COADSY46_46) ; - COADSY46_46:units = "degrees_north" ; - COADSY46_46:point_spacing = "even" ; - COADSY46_46:axis = "Y" ; - COADSY46_46:standard_name = "latitude" ; - COADSY46_46:edges = "COADSY46_46edges" ; - double COADSY46_46edges(COADSY46_46edges) ; - COADSY46_46edges:edges = " " ; - double TIME7(TIME7) ; - TIME7:units = "hour since 0000-01-01 00:00:00" ; - TIME7:time_origin = "01-JAN-0000 00:00:00" ; - TIME7:modulo = " " ; - TIME7:axis = "T" ; - TIME7:standard_name = "time" ; - TIME7:edges = "TIME7edges" ; - double TIME7edges(TIME7edges) ; - TIME7edges:edges = " " ; - float SST(TIME7, COADSY46_46, COADSX81_81) ; - SST:missing_value = -1.e+34f ; - SST:_FillValue = -1.e+34f ; - SST:long_name = "SEA SURFACE TEMPERATURE" ; - SST:history = "From coads_climatology" ; - SST:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - COADSX81_81 = 181 ; - - COADSX81_81edges = 180, 182 ; - - COADSY46_46 = 1 ; - - COADSY46_46edges = 0, 2 ; - - TIME7 = 366, 1096.485, 1826.97 ; - - TIME7edges = 0.757499999999993, 731.2425, 1461.7275, 2192.2125 ; - - SST = - 28.28389, - 28.41851, - 28.0468 ; -} -bn_bounds.jnl --- 8 outputting bounds on all irregular axes, depth axis -netcdf irrxzt { -dimensions: - XAX = 6 ; - bnds = 2 ; - ZAX = 5 ; - TAX = UNLIMITED ; // (5 currently) -variables: - double XAX(XAX) ; - XAX:point_spacing = "uneven" ; - XAX:axis = "X" ; - XAX:bounds = "XAX_bnds" ; - double XAX_bnds(XAX, bnds) ; - double ZAX(ZAX) ; - ZAX:point_spacing = "uneven" ; - ZAX:axis = "Z" ; - ZAX:positive = "down" ; - ZAX:standard_name = "depth" ; - ZAX:bounds = "ZAX_bnds" ; - double ZAX_bnds(ZAX, bnds) ; - double TAX(TAX) ; - TAX:axis = "T" ; - TAX:bounds = "TAX_bnds" ; - double TAX_bnds(TAX, bnds) ; - double V(TAX, ZAX, XAX) ; - V:missing_value = -1.e+34 ; - V:_FillValue = -1.e+34 ; - V:long_name = "X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX = 1, 2, 5, 6, 7, 8 ; - - XAX_bnds = - 0.5, 1.5, - 1.5, 3.5, - 3.5, 5.5, - 5.5, 6.5, - 6.5, 7.5, - 7.5, 8.5 ; - - ZAX = 0, 20, 50, 75, 120 ; - - ZAX_bnds = - 0, 10, - 10, 30, - 30, 60, - 60, 90, - 90, 150 ; - - TAX = 1, 2, 9, 10, 11 ; - - TAX_bnds = - 0.5, 1.5, - 1.5, 5.5, - 5.5, 9.5, - 9.5, 10.5, - 10.5, 11.5 ; - - V = - 2, 3, 6, 7, 8, 9, - 22, 23, 26, 27, 28, 29, - 52, 53, 56, 57, 58, 59, - 77, 78, 81, 82, 83, 84, - 122, 123, 126, 127, 128, 129, - 3, 4, 7, 8, 9, 10, - 23, 24, 27, 28, 29, 30, - 53, 54, 57, 58, 59, 60, - 78, 79, 82, 83, 84, 85, - 123, 124, 127, 128, 129, 130, - 10, 11, 14, 15, 16, 17, - 30, 31, 34, 35, 36, 37, - 60, 61, 64, 65, 66, 67, - 85, 86, 89, 90, 91, 92, - 130, 131, 134, 135, 136, 137, - 11, 12, 15, 16, 17, 18, - 31, 32, 35, 36, 37, 38, - 61, 62, 65, 66, 67, 68, - 86, 87, 90, 91, 92, 93, - 131, 132, 135, 136, 137, 138, - 12, 13, 16, 17, 18, 19, - 32, 33, 36, 37, 38, 39, - 62, 63, 66, 67, 68, 69, - 87, 88, 91, 92, 93, 94, - 132, 133, 136, 137, 138, 139 ; -} -err580_irreg_bounds.jnl --- -netcdf a { -dimensions: - TIME = UNLIMITED ; // (2 currently) - bnds = 2 ; -variables: - double TIME(TIME) ; - TIME:axis = "T" ; - TIME:bounds = "TIME_bnds" ; - double TIME_bnds(TIME, bnds) ; - double A(TIME) ; - A:missing_value = -1.e+34 ; - A:_FillValue = -1.e+34 ; - A:long_name = "T[GT=TIME]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - TIME = 0.5, 2 ; - - TIME_bnds = - 0, 1, - 1, 3 ; - - A = 0.5, 2 ; -} -err580_long_title.jnl --- -netcdf longtitle { -dimensions: - XAX1_10 = 10 ; -variables: - double XAX1_10(XAX1_10) ; - XAX1_10:point_spacing = "even" ; - XAX1_10:axis = "X" ; - double X_(XAX1_10) ; - X_:missing_value = -1.e+34 ; - X_:_FillValue = -1.e+34 ; - X_:long_name = "X" ; - X_:long_name_mod = "axis ABSTRACT" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; - :title = "a long title longer than 80 characters a123456789b123456789c123456789d123456789e123456789f123456789g123456789h123456789" ; -data: - - XAX1_10 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; - - X_ = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; -} -err580_long_dsettitle.jnl --- -netcdf longtitle { -dimensions: - XAX1_5 = 5 ; -variables: - double XAX1_5(XAX1_5) ; - XAX1_5:point_spacing = "even" ; - XAX1_5:axis = "X" ; - float A(XAX1_5) ; - A:missing_value = -1.e+34f ; - A:_FillValue = -1.e+34f ; - A:long_name = "A" ; - A:history = "From x" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; - :title = "a long title, longer than the previous limit of 80 characters. Previously various buffers were set to 80, and storage in ds_title was also too short." ; -data: - - XAX1_5 = 1, 2, 3, 4, 5 ; - - A = 1, 2, 3, 4, 5 ; -} -err580_cdc_timeaxis.jnl --- -netcdf my_cdc_timeaxis { -dimensions: - TCDC = UNLIMITED ; // (15 currently) -variables: - double TCDC(TCDC) ; - TCDC:units = "days since 0001-01-01 00:00:00" ; - TCDC:axis = "T" ; - TCDC:calendar = "GREGORIAN" ; - TCDC:time_origin = "01-JAN-0001 00:00:00" ; - TCDC:standard_name = "time" ; - double A(TCDC) ; - A:missing_value = -1.e+34 ; - A:_FillValue = -1.e+34 ; - A:long_name = "SIN(T[GT=TCDC]/10000)" ; - A:history = "From t0_cdc" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_long_revision_num.jnl --- history attribute - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; -bn_bounds_defineax.jnl --- N+1 def of bounds. -netcdf irrxzt { -dimensions: - XAX = 6 ; - bnds = 2 ; - ZAX = 5 ; - TAX = UNLIMITED ; // (5 currently) -variables: - double XAX(XAX) ; - XAX:point_spacing = "uneven" ; - XAX:axis = "X" ; - XAX:bounds = "XAX_bnds" ; - double XAX_bnds(XAX, bnds) ; - double ZAX(ZAX) ; - ZAX:point_spacing = "uneven" ; - ZAX:axis = "Z" ; - ZAX:positive = "down" ; - ZAX:standard_name = "depth" ; - ZAX:bounds = "ZAX_bnds" ; - double ZAX_bnds(ZAX, bnds) ; - double TAX(TAX) ; - TAX:axis = "T" ; - TAX:bounds = "TAX_bnds" ; - double TAX_bnds(TAX, bnds) ; - double V(TAX, ZAX, XAX) ; - V:missing_value = -1.e+34 ; - V:_FillValue = -1.e+34 ; - V:long_name = "X[GX=XAX] +Z[GZ=ZAX] + T[GT=TAX]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX = 1, 2, 5, 6, 7, 8 ; - - XAX_bnds = - 0.5, 1.5, - 1.5, 3.5, - 3.5, 5.5, - 5.5, 6.5, - 6.5, 7.5, - 7.5, 8.5 ; - - ZAX = 0, 20, 50, 75, 120 ; - - ZAX_bnds = - 0, 10, - 10, 30, - 30, 60, - 60, 90, - 90, 150 ; - - TAX = 1, 2, 9, 10, 11 ; - - TAX_bnds = - 0.5, 1.5, - 1.5, 5.5, - 5.5, 9.5, - 9.5, 10.5, - 10.5, 11.5 ; - - V = - 2, 3, 6, 7, 8, 9, - 22, 23, 26, 27, 28, 29, - 52, 53, 56, 57, 58, 59, - 77, 78, 81, 82, 83, 84, - 122, 123, 126, 127, 128, 129, - 3, 4, 7, 8, 9, 10, - 23, 24, 27, 28, 29, 30, - 53, 54, 57, 58, 59, 60, - 78, 79, 82, 83, 84, 85, - 123, 124, 127, 128, 129, 130, - 10, 11, 14, 15, 16, 17, - 30, 31, 34, 35, 36, 37, - 60, 61, 64, 65, 66, 67, - 85, 86, 89, 90, 91, 92, - 130, 131, 134, 135, 136, 137, - 11, 12, 15, 16, 17, 18, - 31, 32, 35, 36, 37, 38, - 61, 62, 65, 66, 67, 68, - 86, 87, 90, 91, 92, 93, - 131, 132, 135, 136, 137, 138, - 12, 13, 16, 17, 18, 19, - 32, 33, 36, 37, 38, 39, - 62, 63, 66, 67, 68, 69, - 87, 88, 91, 92, 93, 94, - 132, 133, 136, 137, 138, 139 ; -} -bn_attributes.jnl --- 1 attributes of string variables -netcdf a { -dimensions: - XAX1_3 = 3 ; - STRING1_10 = 10 ; -variables: - double XAX1_3(XAX1_3) ; - XAX1_3:point_spacing = "even" ; - XAX1_3:axis = "X" ; - char VAR_B(XAX1_3, STRING1_10) ; - VAR_B:long_name = "my strings" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX1_3 = 1, 2, 3 ; - - VAR_B = - "Seattle", - "Skykomish", - "Snoqualmie" ; -} -bn_attributes.jnl --- 2 access and edit attributes of coordinate variables. -netcdf a { -dimensions: - COADSX105_105 = 1 ; - COADSY45_45 = 1 ; - TIME7 = UNLIMITED ; // (3 currently) -variables: - double COADSX105_105(COADSX105_105) ; - COADSX105_105:units = "degrees_east" ; - COADSX105_105:modulo = " " ; - COADSX105_105:point_spacing = "even" ; - COADSX105_105:newatt = 3.f ; - COADSX105_105:axis = "X" ; - COADSX105_105:standard_name = "longitude" ; - double COADSY45_45(COADSY45_45) ; - COADSY45_45:units = "degrees_north" ; - COADSY45_45:point_spacing = "even" ; - COADSY45_45:axis = "Y" ; - COADSY45_45:standard_name = "latitude" ; - double TIME7(TIME7) ; - TIME7:units = "hour since 0000-01-01 00:00:00" ; - TIME7:time_origin = "01-JAN-0000 00:00:00" ; - TIME7:modulo = " " ; - TIME7:axis = "T" ; - TIME7:standard_name = "time" ; - float SST(TIME7, COADSY45_45, COADSX105_105) ; - SST:missing_value = -1.e+34f ; - SST:_FillValue = -1.e+34f ; - SST:long_name = "SEA SURFACE TEMPERATURE" ; - SST:history = "From coads_climatology" ; - SST:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - COADSX105_105 = 229 ; - - COADSY45_45 = -1 ; - - TIME7 = 366, 1096.485, 1826.97 ; -} -bn_attributes.jnl --- 3 modulo set to false -netcdf a { -dimensions: - COADSX81_81 = 1 ; - COADSY45_45 = 1 ; - TIME17 = UNLIMITED ; // (12 currently) -variables: - double COADSX81_81(COADSX81_81) ; - COADSX81_81:units = "degrees_east" ; - COADSX81_81:modulo = "false" ; - COADSX81_81:point_spacing = "even" ; - COADSX81_81:axis = "X" ; - COADSX81_81:standard_name = "longitude" ; - double COADSY45_45(COADSY45_45) ; - COADSY45_45:units = "degrees_north" ; - COADSY45_45:point_spacing = "even" ; - COADSY45_45:axis = "Y" ; - COADSY45_45:standard_name = "latitude" ; - double TIME17(TIME17) ; - TIME17:units = "hour since 0000-01-01 00:00:00" ; - TIME17:time_origin = "01-JAN-0000 00:00:00" ; - TIME17:modulo = " " ; - TIME17:axis = "T" ; - TIME17:standard_name = "time" ; - float SST(TIME17, COADSY45_45, COADSX81_81) ; - SST:missing_value = -1.e+34f ; - SST:_FillValue = -1.e+34f ; - SST:long_name = "SEA SURFACE TEMPERATURE" ; - SST:history = "From coads_climatology" ; - SST:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - COADSX81_81 = 181 ; - - COADSY45_45 = -1 ; - - TIME17 = 366, 1096.485, 1826.97, 2557.455, 3287.94, 4018.425, 4748.91, - 5479.395, 6209.88, 6940.365, 7670.85, 8401.335 ; -} -bn_attributes.jnl --- 4 CANCEL MODE upcase_output; original file: -netcdf err491_attval { -dimensions: - Ti = UNLIMITED ; // (1 currently) - Yc = 127 ; - Xc = 35 ; -variables: - double Ti(Ti) ; - Ti:long_name = "Time" ; - Ti:units = "day" ; - double Yc(Yc) ; - Yc:long_name = "Latitude" ; - Yc:units = "degrees_north" ; - double Xc(Xc) ; - Xc:long_name = "Longitude" ; - Xc:units = "degrees_east" ; - short Elev(Ti, Yc, Xc) ; - Elev:long_name = "Surface elevation" ; - Elev:units = "meter" ; - Elev:valid_range = -9., 9. ; - Elev:_FillValue = -32768s ; - Elev:missing_value = -32767s ; - Elev:scale_factor = 0.000274674967954587 ; - Elev:add_offset = 0. ; - -// global attributes: - :simulation = "K-Bay OAR3d model (200m)" ; - :start_date = "980105000000" ; - :history = "a\n", - "" ; - :option = 1 ; - :run_mode = 3 ; - :srfc_bndry = 3 ; - :rad_penet = 2 ; - :dt_external = 1. ; - :dt_internal = 15. ; - :horiz_diff = 0.2 ; - :inv_prandtl = 0.2 ; - :min_slope = 0.2 ; - :title = "K-Bay OAR3d model (200m) " ; - :command = " " ; - :remark = "Generated by oar3d " ; - :x_units = "degrees " ; - :y_units = "degrees " ; - :z_units = " " ; - :nx = 35 ; - :ny = 127 ; - :x_min = 0. ; - :x_max = 0. ; - :y_min = 0. ; - :y_max = 0. ; - :z_min = 0. ; - :z_max = 0. ; - :x_inc = 0. ; - :y_inc = 0. ; - :z_scale_factor = 0. ; - :z_add_offset = 0. ; - :node_offset = 0. ; -} -bn_attributes.jnl --- 5 before CANCEL MODE upcase_output -netcdf a { -dimensions: - XC3_3 = 1 ; - YC2_4 = 3 ; - bnds = 2 ; - TI = UNLIMITED ; // (1 currently) -variables: - double XC3_3(XC3_3) ; - XC3_3:long_name = "Longitude" ; - XC3_3:units = "degrees_east" ; - XC3_3:modulo = 360. ; - XC3_3:point_spacing = "even" ; - XC3_3:axis = "X" ; - XC3_3:standard_name = "longitude" ; - double YC2_4(YC2_4) ; - YC2_4:long_name = "Latitude" ; - YC2_4:units = "degrees_north" ; - YC2_4:point_spacing = "uneven" ; - YC2_4:axis = "Y" ; - YC2_4:standard_name = "latitude" ; - YC2_4:bounds = "YC2_4_bnds" ; - double YC2_4_bnds(YC2_4, bnds) ; - double TI(TI) ; - TI:long_name = "Time" ; - TI:units = "day" ; - TI:axis = "T" ; - TI:standard_name = "time" ; - short ELEV(TI, YC2_4, XC3_3) ; - ELEV:missing_value = -32767s ; - ELEV:long_name = "Surface elevation" ; - ELEV:units = "meter" ; - ELEV:scale_factor = 0.000274674967954587 ; - ELEV:add_offset = 0. ; - ELEV:history = "From err491_attval" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_attributes.jnl --- 6 after CANCEL MODE upcase_output -netcdf a { -dimensions: - Xc = 1 ; - Yc = 3 ; - bnds = 2 ; - Ti = UNLIMITED ; // (1 currently) -variables: - double Xc(Xc) ; - Xc:long_name = "Longitude" ; - Xc:units = "degrees_east" ; - Xc:modulo = 360. ; - Xc:point_spacing = "even" ; - Xc:axis = "X" ; - Xc:standard_name = "longitude" ; - double Yc(Yc) ; - Yc:long_name = "Latitude" ; - Yc:units = "degrees_north" ; - Yc:point_spacing = "uneven" ; - Yc:axis = "Y" ; - Yc:standard_name = "latitude" ; - Yc:bounds = "Yc_bnds" ; - double Yc_bnds(Yc, bnds) ; - double Ti(Ti) ; - Ti:long_name = "Time" ; - Ti:units = "day" ; - Ti:axis = "T" ; - Ti:standard_name = "time" ; - short Elev(Ti, Yc, Xc) ; - Elev:missing_value = -32767s ; - Elev:long_name = "Surface elevation" ; - Elev:units = "meter" ; - Elev:scale_factor = 0.000274674967954587 ; - Elev:add_offset = 0. ; - Elev:history = "From err491_attval" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_attributes.jnl --- 7 outtput flags to control attribute output -netcdf a { -dimensions: - XAX1_5 = 5 ; -variables: - double AA ; - AA:missing_value = -1.e+34 ; - AA:_FillValue = -1.e+34 ; - AA:long_name = "12" ; - double XAX1_5(XAX1_5) ; - XAX1_5:point_spacing = "even" ; - XAX1_5:axis = "X" ; - double BB(XAX1_5) ; - BB:missing_value = -1.e+34 ; - BB:_FillValue = -1.e+34 ; - BB:long_name = "{3,4.5,6,7,4}" ; - BB:my_title = "This is my new variable bb" ; - BB:another_attr = 6.f ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX1_5 = 1, 2, 3, 4, 5 ; -} -bn_attributes.jnl --- 8 outtput all flags -netcdf a { -dimensions: - XAX1_5 = 5 ; -variables: - double AA ; - AA:missing_value = -1.e+34 ; - AA:_FillValue = -1.e+34 ; - AA:long_name = "12" ; - double XAX1_5(XAX1_5) ; - XAX1_5:point_spacing = "even" ; - XAX1_5:axis = "X" ; - double BB(XAX1_5) ; - BB:missing_value = -1.e+34 ; - BB:_FillValue = -1.e+34 ; - BB:long_name = "{3,4.5,6,7,4}" ; - BB:my_title = "This is my new variable bb" ; - BB:another_attr = 6.f ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX1_5 = 1, 2, 3, 4, 5 ; -} -bn_attributes.jnl --- 9 Just output the default attributes -netcdf a { -dimensions: - XAX1_5 = 5 ; -variables: - double XAX1_5(XAX1_5) ; - XAX1_5:point_spacing = "even" ; - XAX1_5:axis = "X" ; - double BB(XAX1_5) ; - BB:missing_value = -1.e+34 ; - BB:_FillValue = -1.e+34 ; - BB:long_name = "{3,4.5,6,7,4}" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX1_5 = 1, 2, 3, 4, 5 ; -} -bn_attributes.jnl --- 10 Output none of the attributes for aa -netcdf a { -dimensions: - XAX1_5 = 5 ; -variables: - double AA ; - double XAX1_5(XAX1_5) ; - XAX1_5:point_spacing = "even" ; - XAX1_5:axis = "X" ; - double BB(XAX1_5) ; - BB:missing_value = -1.e+34 ; - BB:_FillValue = -1.e+34 ; - BB:long_name = "{3,4.5,6,7,4}" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX1_5 = 1, 2, 3, 4, 5 ; -} -bn_attributes.jnl --- 11 Surpress output of an attribute that Ferret would otherwise add. -netcdf a { -dimensions: - XAX_LEV9421_380 = 360 ; - YAX_LEV94 = 180 ; - ZAXLEVIT191_1 = 1 ; - TIME4 = UNLIMITED ; // (2 currently) -variables: - double XAX_LEV9421_380(XAX_LEV9421_380) ; - XAX_LEV9421_380:units = "degrees_east" ; - XAX_LEV9421_380:modulo = " " ; - XAX_LEV9421_380:standard_name = "longitude" ; - double YAX_LEV94(YAX_LEV94) ; - YAX_LEV94:units = "degrees_north" ; - YAX_LEV94:point_spacing = "even" ; - YAX_LEV94:axis = "Y" ; - YAX_LEV94:standard_name = "latitude" ; - double ZAXLEVIT191_1(ZAXLEVIT191_1) ; - ZAXLEVIT191_1:units = "meters" ; - ZAXLEVIT191_1:positive = "down" ; - ZAXLEVIT191_1:point_spacing = "even" ; - ZAXLEVIT191_1:axis = "Z" ; - ZAXLEVIT191_1:standard_name = "depth" ; - double TIME4(TIME4) ; - TIME4:units = "hour since 0000-01-01 00:00:00" ; - TIME4:time_origin = "01-JAN-0000 00:00:00" ; - TIME4:modulo = " " ; - TIME4:axis = "T" ; - TIME4:standard_name = "time" ; - float TEMP(TIME4, ZAXLEVIT191_1, YAX_LEV94, XAX_LEV9421_380) ; - TEMP:missing_value = -1.e+34f ; - TEMP:_FillValue = -1.e+34f ; - TEMP:long_name = "Temperature" ; - TEMP:history = "From ocean_atlas_monthly" ; - TEMP:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_attributes.jnl --- 12 Check that settings hold for child axis. -netcdf a { -dimensions: - XAX_LEV9421_380281_340 = 60 ; - YAX_LEV94121_135 = 15 ; - ZAXLEVIT191_1 = 1 ; - TIME4 = UNLIMITED ; // (2 currently) -variables: - double XAX_LEV9421_380281_340(XAX_LEV9421_380281_340) ; - XAX_LEV9421_380281_340:units = "degrees_east" ; - XAX_LEV9421_380281_340:modulo = " " ; - XAX_LEV9421_380281_340:standard_name = "longitude" ; - double YAX_LEV94121_135(YAX_LEV94121_135) ; - YAX_LEV94121_135:units = "degrees_north" ; - YAX_LEV94121_135:point_spacing = "even" ; - YAX_LEV94121_135:axis = "Y" ; - YAX_LEV94121_135:standard_name = "latitude" ; - double ZAXLEVIT191_1(ZAXLEVIT191_1) ; - ZAXLEVIT191_1:units = "meters" ; - ZAXLEVIT191_1:positive = "down" ; - ZAXLEVIT191_1:point_spacing = "even" ; - ZAXLEVIT191_1:axis = "Z" ; - ZAXLEVIT191_1:standard_name = "depth" ; - double TIME4(TIME4) ; - TIME4:units = "hour since 0000-01-01 00:00:00" ; - TIME4:time_origin = "01-JAN-0000 00:00:00" ; - TIME4:modulo = " " ; - TIME4:axis = "T" ; - TIME4:standard_name = "time" ; - float TEMP(TIME4, ZAXLEVIT191_1, YAX_LEV94121_135, XAX_LEV9421_380281_340) ; - TEMP:missing_value = -1.e+34f ; - TEMP:_FillValue = -1.e+34f ; - TEMP:long_name = "Temperature" ; - TEMP:history = "From ocean_atlas_monthly" ; - TEMP:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_attributes.jnl --- 13 cancel output of attributes of the variable. -netcdf a { -dimensions: - XAX_LEV9421_380 = 360 ; - YAX_LEV94 = 180 ; - ZAXLEVIT191_1 = 1 ; - TIME4 = UNLIMITED ; // (2 currently) -variables: - double XAX_LEV9421_380(XAX_LEV9421_380) ; - XAX_LEV9421_380:units = "degrees_east" ; - XAX_LEV9421_380:modulo = " " ; - XAX_LEV9421_380:standard_name = "longitude" ; - double YAX_LEV94(YAX_LEV94) ; - YAX_LEV94:units = "degrees_north" ; - YAX_LEV94:point_spacing = "even" ; - YAX_LEV94:axis = "Y" ; - YAX_LEV94:standard_name = "latitude" ; - double ZAXLEVIT191_1(ZAXLEVIT191_1) ; - ZAXLEVIT191_1:units = "meters" ; - ZAXLEVIT191_1:positive = "down" ; - ZAXLEVIT191_1:point_spacing = "even" ; - ZAXLEVIT191_1:axis = "Z" ; - ZAXLEVIT191_1:standard_name = "depth" ; - double TIME4(TIME4) ; - TIME4:units = "hour since 0000-01-01 00:00:00" ; - TIME4:time_origin = "01-JAN-0000 00:00:00" ; - TIME4:modulo = " " ; - TIME4:axis = "T" ; - TIME4:standard_name = "time" ; - float TEMP(TIME4, ZAXLEVIT191_1, YAX_LEV94, XAX_LEV9421_380) ; - TEMP:missing_value = -1.e+34f ; - TEMP:_FillValue = -1.e+34f ; - TEMP:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_attributes.jnl --- 14 attributes of data from ez data. -netcdf a { -dimensions: - AX046 = 5 ; -variables: - double AX046(AX046) ; - AX046:point_spacing = "even" ; - AX046:axis = "X" ; - double A1(AX046) ; - A1:missing_value = -1.e+34 ; - A1:_FillValue = -1.e+34 ; - A1:long_name = "a1" ; - A1:three = 1.f, 2.f, 3.f ; - A1:history = "From EZ.DAT" ; - double A2(AX046) ; - A2:missing_value = -1.e+34 ; - A2:_FillValue = -1.e+34 ; - A2:long_name = "a2" ; - A2:history = "From EZ.DAT" ; - double A3(AX046) ; - A3:missing_value = -1.e+34 ; - A3:_FillValue = -1.e+34 ; - A3:long_name = "a3" ; - A3:history = "From EZ.DAT" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - AX046 = 1, 2, 3, 4, 5 ; - - A1 = 0.006, 0.355, 0.41, 0.435, 0.478 ; - - A2 = 0.8865, 0.6643, 0.6071, 0.5535, 0.5337 ; - - A3 = 0.176, 0.379, 0.417, 0.444, 0.515 ; -} -bn_attributes.jnl --- 15 attributes of data from delimited data. -netcdf a { -dimensions: - AX048 = 5 ; -variables: - double AX048(AX048) ; - AX048:point_spacing = "even" ; - AX048:axis = "X" ; - double V1(AX048) ; - V1:missing_value = -1.e+34 ; - V1:_FillValue = -1.e+34 ; - V1:long_name = "V1" ; - V1:strval = "2" ; - V1:history = "From EZ.DAT" ; - double V4(AX048) ; - V4:missing_value = -1.e+34 ; - V4:_FillValue = -1.e+34 ; - V4:long_name = "V4" ; - V4:history = "From EZ.DAT" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - AX048 = 1, 2, 3, 4, 5 ; - - V1 = 0.006, 0.355, 0.41, 0.435, 0.478 ; - - V4 = 0.7597, 0.6455, 0.5935, 0.5458, 0.5147 ; -} -bn_attributes.jnl --- 16 attributes of user vars -netcdf a { -dimensions: - XAX1_3 = 3 ; -variables: - double XAX1_3(XAX1_3) ; - XAX1_3:point_spacing = "even" ; - XAX1_3:axis = "X" ; - double A(XAX1_3) ; - A:missing_value = -1.e+34 ; - A:_FillValue = -1.e+34 ; - A:long_name = "{12,14,15}" ; - A:three = 1.f, 2.f, 3.f ; - A:four = "theory" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX1_3 = 1, 2, 3 ; - - A = 12, 14, 15 ; -} -bn_attributes.jnl --- 17 global attrs. -netcdf a { -dimensions: - XC = 35 ; - YC = 127 ; - bnds = 2 ; - TI = UNLIMITED ; // (1 currently) -variables: - double XC(XC) ; - XC:long_name = "Longitude" ; - XC:units = "degrees_east" ; - XC:modulo = 360. ; - XC:point_spacing = "even" ; - XC:axis = "X" ; - XC:standard_name = "longitude" ; - double YC(YC) ; - YC:long_name = "Latitude" ; - YC:units = "degrees_north" ; - YC:point_spacing = "uneven" ; - YC:axis = "Y" ; - YC:standard_name = "latitude" ; - YC:bounds = "YC_bnds" ; - double YC_bnds(YC, bnds) ; - double TI(TI) ; - TI:long_name = "Time" ; - TI:units = "day" ; - TI:axis = "T" ; - TI:standard_name = "time" ; - short ELEV(TI, YC, XC) ; - ELEV:missing_value = -32767s ; - ELEV:long_name = "Surface elevation" ; - ELEV:units = "meter" ; - ELEV:scale_factor = 0.000274674967954587 ; - ELEV:add_offset = 0. ; - ELEV:history = "From err491_attval" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; - :simulation = "K-Bay OAR3d model (200m)" ; - :start_date = "980105000000" ; - :option = 0 ; - :run_mode = 0 ; - :srfc_bndry = 0 ; - :rad_penet = 0 ; - :dt_external = 1. ; - :dt_internal = 15. ; - :horiz_diff = 0.2 ; - :inv_prandtl = 0.2 ; - :min_slope = 0.2 ; - :command = " " ; - :remark = "Generated by oar3d" ; - :x_units = "degrees" ; - :y_units = "degrees" ; - :z_units = " " ; - :nx = 0 ; - :ny = 0 ; - :x_min = 0. ; - :x_max = 0. ; - :y_min = 0. ; - :y_max = 0. ; - :z_min = 0. ; - :z_max = 0. ; - :x_inc = 0. ; - :y_inc = 0. ; - :z_scale_factor = 0. ; - :z_add_offset = 0. ; - :node_offset = 0. ; -} -bn_attributes.jnl --- 18 choose global attr to write -netcdf a { -dimensions: - XC = 35 ; - YC = 127 ; - bnds = 2 ; - TI = UNLIMITED ; // (1 currently) - PSXT100_100 = 1 ; - PSYT135_56 = 22 ; - PSZT11_1 = 1 ; - TIME17 = 25 ; -variables: - double XC(XC) ; - XC:long_name = "Longitude" ; - XC:units = "degrees_east" ; - XC:modulo = 360. ; - XC:point_spacing = "even" ; - XC:axis = "X" ; - XC:standard_name = "longitude" ; - double YC(YC) ; - YC:long_name = "Latitude" ; - YC:units = "degrees_north" ; - YC:point_spacing = "uneven" ; - YC:axis = "Y" ; - YC:standard_name = "latitude" ; - YC:bounds = "YC_bnds" ; - double YC_bnds(YC, bnds) ; - double TI(TI) ; - TI:long_name = "Time" ; - TI:units = "day" ; - TI:axis = "T" ; - TI:standard_name = "time" ; - short ELEV(TI, YC, XC) ; - ELEV:missing_value = -32767s ; - ELEV:long_name = "Surface elevation" ; - ELEV:units = "meter" ; - ELEV:scale_factor = 0.000274674967954587 ; - ELEV:add_offset = 0. ; - ELEV:history = "From err491_attval" ; - double PSXT100_100(PSXT100_100) ; - PSXT100_100:units = "degrees_east" ; - PSXT100_100:point_spacing = "even" ; - PSXT100_100:modulo = 360. ; - PSXT100_100:axis = "X" ; - PSXT100_100:standard_name = "longitude" ; - double PSYT135_56(PSYT135_56) ; - PSYT135_56:units = "degrees_north" ; - PSYT135_56:point_spacing = "uneven" ; - PSYT135_56:axis = "Y" ; - PSYT135_56:standard_name = "latitude" ; - PSYT135_56:bounds = "PSYT135_56_bnds" ; - double PSYT135_56_bnds(PSYT135_56, bnds) ; - double PSZT11_1(PSZT11_1) ; - PSZT11_1:units = "meters" ; - PSZT11_1:positive = "down" ; - PSZT11_1:point_spacing = "uneven" ; - PSZT11_1:axis = "Z" ; - PSZT11_1:standard_name = "depth" ; - PSZT11_1:bounds = "PSZT11_1_bnds" ; - double PSZT11_1_bnds(PSZT11_1, bnds) ; - double TIME17(TIME17) ; - TIME17:units = "hour since 1980-01-14 14:00:00" ; - TIME17:time_origin = "14-JAN-1980 14:00:00" ; - TIME17:point_spacing = "even" ; - TIME17:axis = "T" ; - TIME17:standard_name = "time" ; - float TEMP(TIME17, PSZT11_1, PSYT135_56, PSXT100_100) ; - TEMP:missing_value = -1.e+34f ; - TEMP:_FillValue = -1.e+34f ; - TEMP:long_name = "TEMPERATURE" ; - TEMP:history = "From gt4d011" ; - TEMP:units = "deg. C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; - :dt_internal = 15. ; -} -bn_attributes.jnl --- 19 scale and offset attr. -netcdf a { -dimensions: - XC = 35 ; - YC1_1 = 1 ; - bnds = 2 ; - TI = UNLIMITED ; // (1 currently) -variables: - double XC(XC) ; - XC:long_name = "Longitude" ; - XC:units = "degrees_east" ; - XC:modulo = 360. ; - XC:point_spacing = "even" ; - XC:axis = "X" ; - XC:standard_name = "longitude" ; - double YC1_1(YC1_1) ; - YC1_1:long_name = "Latitude" ; - YC1_1:units = "degrees_north" ; - YC1_1:point_spacing = "uneven" ; - YC1_1:axis = "Y" ; - YC1_1:standard_name = "latitude" ; - YC1_1:bounds = "YC1_1_bnds" ; - double YC1_1_bnds(YC1_1, bnds) ; - double TI(TI) ; - TI:long_name = "Time" ; - TI:units = "day" ; - TI:axis = "T" ; - TI:standard_name = "time" ; - short ELEV(TI, YC1_1, XC) ; - ELEV:missing_value = -32767s ; - ELEV:long_name = "Surface elevation" ; - ELEV:units = "meter" ; - ELEV:scale_factor = 0.000274674967954587 ; - ELEV:add_offset = 0. ; - ELEV:history = "From err491_attval" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XC = -135.50957036625, -135.496120344706, -135.482670323162, - -135.469220301618, -135.455770280074, -135.44232025853, - -135.428870236985, -135.415420215441, -135.401970193897, - -135.388520172353, -135.375070150809, -135.361620129265, - -135.348170107721, -135.334720086177, -135.321270064633, - -135.307820043089, -135.294370021545, -135.28092, -135.267469978456, - -135.254019956912, -135.240569935368, -135.227119913824, - -135.21366989228, -135.200219870736, -135.186769849192, - -135.173319827648, -135.159869806104, -135.14641978456, - -135.132969763016, -135.119519741471, -135.106069719927, - -135.092619698383, -135.079169676839, -135.065719655295, -135.052269633751 ; - - YC1_1 = 58.5947143787844 ; - - YC1_1_bnds = - 58.5912104049205, 58.5982183526484 ; - - TI = 1.78368055555556 ; - - ELEV = - _, _, _, _, _, _, _, _, _, _, _, 10702, 10702, 10702, 10702, 10702, 10702, - 10702, 10702, 10702, 10702, 10702, 10702, 10702, 10702, _, _, _, _, _, _, - _, _, _, _ ; -} -bn_attributes.jnl --- 20 set data type on output int4 - int TEMP(TIME17, PSZT11_1, PSYT148_48, PSXT91_108) ; - TEMP:missing_value = -1000 ; - TEMP:_FillValue = -1000 ; - TEMP:long_name = "TEMPERATURE" ; - TEMP:history = "From gt4d011" ; - TEMP:units = "deg. C" ; - -// global attributes: --- - TEMP = - 26, 26, 26, 26, 26, 26, 26, 25, 25, 25, 26, 26, 26, 26, 26, 25, 25, 25 ; -} -bn_attributes.jnl --- 21 set data type on output double - double SALT(TIME17, PSZT11_1, PSYT148_48, PSXT91_108) ; - SALT:missing_value = 0.00999999977648258 ; - SALT:_FillValue = 0.00999999977648258 ; - SALT:long_name = "(SALINITY(ppt) - 35) /1000" ; - SALT:history = "From gt4d011" ; - SALT:units = "frac. by wt. less .035" ; - SALT:Ferret_Precision_Note = "This variable written using Ferret was converted from FLOAT to DOUBLE" ; - -// global attributes: --- - SALT = - 0.00016033259453252, 0.000142609584145248, 0.000126281287521124, - 0.000120904369396158, 0.000120412340038456, 0.000123045203508809, -bn_attributes.jnl --- 22 outtype=input -netcdf a { -dimensions: - J = 3 ; - I = 2 ; - l = 3 ; -variables: - float J(J) ; - J:point_spacing = "even" ; - J:axis = "X" ; - int I(I) ; - I:point_spacing = "even" ; - I:axis = "Y" ; - char BROILED(I, J, l) ; - BROILED:long_name = "BROILED" ; - BROILED:history = "From test0" ; - byte THE_BULLET(I, J) ; - THE_BULLET:long_name = "THE_BULLET" ; - THE_BULLET:history = "From test0" ; - short ORDER(I, J) ; - ORDER:long_name = "ORDER" ; - ORDER:history = "From test0" ; - int RIGUE(I, J) ; - RIGUE:long_name = "RIGUE" ; - RIGUE:history = "From test0" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - J = 2, 4, 6 ; - - I = 10, 20 ; - - BROILED = - "ind", - "ist", - "ing", - "uis", - "hab", - "le" ; - - THE_BULLET = - -127, 0, 127, - -128, -1, -127 ; - - ORDER = - 1, 2, 3, - 4, 5, 6 ; - - RIGUE = - 2, 3, 4, - 5, 6, 7 ; -} -bn_attributes.jnl --- 23 more user-defined vars -netcdf a { -variables: - double B ; - B:missing_value = -1.e+34 ; - B:_FillValue = -1.e+34 ; - B:long_name = "hello" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - B = 1 ; -} -bn_attributes.jnl --- 24 output redefined attr -netcdf a { -dimensions: - COADSX90_91 = 2 ; - COADSY65_66 = 2 ; - TCOADS = UNLIMITED ; // (1 currently) - bnds = 2 ; -variables: - double COADSX90_91(COADSX90_91) ; - COADSX90_91:units = "degrees_east" ; - COADSX90_91:modulo = " " ; - COADSX90_91:point_spacing = "uneven" ; - COADSX90_91:axis = "X" ; - COADSX90_91:standard_name = "longitude" ; - double COADSY65_66(COADSY65_66) ; - COADSY65_66:units = "degrees_north" ; - COADSY65_66:point_spacing = "uneven" ; - COADSY65_66:axis = "Y" ; - COADSY65_66:standard_name = "latitude" ; - double TCOADS(TCOADS) ; - TCOADS:units = "days since 1700-01-01 00:00:00" ; - TCOADS:time_origin = "01-JAN-1700 00:00:00" ; - TCOADS:axis = "T" ; - TCOADS:standard_name = "time" ; - TCOADS:bounds = "TCOADS_bnds" ; - double TCOADS_bnds(TCOADS, bnds) ; - float VWND(TCOADS, COADSY65_66, COADSX90_91) ; - VWND:missing_value = -1.e+34f ; - VWND:_FillValue = -1.e+34f ; - VWND:long_name = "MERIDIONAL WIND" ; - VWND:history = "From coads_vwnd" ; - VWND:units = "M/S" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - COADSX90_91 = 199, 201 ; - - COADSY65_66 = 39, 41 ; - - TCOADS = 89864.5 ; - - TCOADS_bnds = - 89849, 89880 ; - - VWND = - _, _, - _, _ ; -} -bn_attributes.jnl --- 25 output new attr on user-defined var -netcdf a { -dimensions: - COADSX90_91 = 2 ; - COADSY65_66 = 2 ; - TCOADS = UNLIMITED ; // (1 currently) - bnds = 2 ; -variables: - double COADSX90_91(COADSX90_91) ; - COADSX90_91:units = "degrees_east" ; - COADSX90_91:modulo = " " ; - COADSX90_91:point_spacing = "uneven" ; - COADSX90_91:axis = "X" ; - COADSX90_91:standard_name = "longitude" ; - double COADSY65_66(COADSY65_66) ; - COADSY65_66:units = "degrees_north" ; - COADSY65_66:point_spacing = "uneven" ; - COADSY65_66:new_att = "somthing" ; - COADSY65_66:axis = "Y" ; - COADSY65_66:standard_name = "latitude" ; - double TCOADS(TCOADS) ; - TCOADS:units = "days since 1700-01-01 00:00:00" ; - TCOADS:time_origin = "01-JAN-1700 00:00:00" ; - TCOADS:axis = "T" ; - TCOADS:standard_name = "time" ; - TCOADS:bounds = "TCOADS_bnds" ; - double TCOADS_bnds(TCOADS, bnds) ; - double T2(TCOADS, COADSY65_66, COADSX90_91) ; - T2:missing_value = -1.e+34 ; - T2:_FillValue = -1.e+34 ; - T2:long_name = "2*VWND" ; - T2:history = "From coads_vwnd" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - COADSX90_91 = 199, 201 ; - - COADSY65_66 = 39, 41 ; - - TCOADS = 89864.5 ; - - TCOADS_bnds = - 89849, 89880 ; - - T2 = - _, _, - _, _ ; -} -bn_attributes.jnl --- 26 attributes of axes -netcdf a { -dimensions: - PSXT91_108 = 18 ; - PSYT135_56 = 22 ; - bnds = 2 ; - PSZT11_10 = 10 ; - TIME17 = UNLIMITED ; // (1 currently) -variables: - double PSXT91_108(PSXT91_108) ; - PSXT91_108:units = "degrees" ; - PSXT91_108:point_spacing = "even" ; - PSXT91_108:modulo = 360. ; - PSXT91_108:axis = "X" ; - PSXT91_108:standard_name = "longitude" ; - double PSYT135_56(PSYT135_56) ; - PSYT135_56:units = "degrees_north" ; - PSYT135_56:point_spacing = "uneven" ; - PSYT135_56:axis = "Y" ; - PSYT135_56:standard_name = "latitude" ; - PSYT135_56:bounds = "PSYT135_56_bnds" ; - double PSYT135_56_bnds(PSYT135_56, bnds) ; - double PSZT11_10(PSZT11_10) ; - PSZT11_10:units = "meters" ; - PSZT11_10:positive = "down" ; - PSZT11_10:point_spacing = "uneven" ; - PSZT11_10:axis = "Z" ; - PSZT11_10:standard_name = "depth" ; - PSZT11_10:bounds = "PSZT11_10_bnds" ; - double PSZT11_10_bnds(PSZT11_10, bnds) ; - double TIME17(TIME17) ; - TIME17:units = "hour since 1980-01-14 14:00:00" ; - TIME17:time_origin = "14-JAN-1980 14:00:00" ; - TIME17:axis = "T" ; - TIME17:standard_name = "time" ; - double T2(TIME17, PSZT11_10, PSYT135_56, PSXT91_108) ; - T2:missing_value = -1.e+34 ; - T2:_FillValue = -1.e+34 ; - T2:long_name = "T*TEMP" ; - T2:history = "From gt4d011" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -netcdf a { -dimensions: - PSXT91_108 = 18 ; - PSYT135_56 = 22 ; - bnds = 2 ; - PSZT11_10 = 10 ; - TIME17 = UNLIMITED ; // (1 currently) -variables: - double PSXT91_108(PSXT91_108) ; - PSXT91_108:units = "degrees" ; - PSXT91_108:point_spacing = "even" ; - PSXT91_108:new_att = "something" ; - PSXT91_108:modulo = 360. ; - PSXT91_108:axis = "X" ; - PSXT91_108:standard_name = "longitude" ; - double PSYT135_56(PSYT135_56) ; - PSYT135_56:units = "degrees_north" ; - PSYT135_56:point_spacing = "uneven" ; - PSYT135_56:axis = "Y" ; - PSYT135_56:standard_name = "latitude" ; - PSYT135_56:bounds = "PSYT135_56_bnds" ; - double PSYT135_56_bnds(PSYT135_56, bnds) ; - double PSZT11_10(PSZT11_10) ; - PSZT11_10:units = "meters" ; - PSZT11_10:positive = "down" ; - PSZT11_10:point_spacing = "uneven" ; - PSZT11_10:axis = "Z" ; - PSZT11_10:standard_name = "depth" ; - PSZT11_10:bounds = "PSZT11_10_bnds" ; - double PSZT11_10_bnds(PSZT11_10, bnds) ; - double TIME17(TIME17) ; - TIME17:units = "hour since 1980-01-14 14:00:00" ; - TIME17:time_origin = "14-JAN-1980 14:00:00" ; - TIME17:axis = "T" ; - TIME17:standard_name = "time" ; - double T2(TIME17, PSZT11_10, PSYT135_56, PSXT91_108) ; - T2:missing_value = -1.e+34 ; - T2:_FillValue = -1.e+34 ; - T2:long_name = "T*TEMP" ; - T2:history = "From gt4d011" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -netcdf a { -dimensions: - PSXT91_108 = 18 ; - PSYT135_56 = 22 ; - bnds = 2 ; - PSZT11_10 = 10 ; - TIME17 = UNLIMITED ; // (1 currently) -variables: - double PSXT91_108(PSXT91_108) ; - PSXT91_108:units = "meters" ; - PSXT91_108:point_spacing = "even" ; - PSXT91_108:new_att = "something" ; - PSXT91_108:modulo = 360. ; - PSXT91_108:axis = "X" ; - double PSYT135_56(PSYT135_56) ; - PSYT135_56:units = "meters" ; - PSYT135_56:point_spacing = "uneven" ; - PSYT135_56:axis = "Y" ; - PSYT135_56:bounds = "PSYT135_56_bnds" ; - double PSYT135_56_bnds(PSYT135_56, bnds) ; - double PSZT11_10(PSZT11_10) ; - PSZT11_10:units = "meters" ; - PSZT11_10:positive = "down" ; - PSZT11_10:point_spacing = "uneven" ; - PSZT11_10:axis = "Z" ; - PSZT11_10:standard_name = "depth" ; - PSZT11_10:bounds = "PSZT11_10_bnds" ; - double PSZT11_10_bnds(PSZT11_10, bnds) ; - double TIME17(TIME17) ; - TIME17:units = "hour since 1980-01-14 14:00:00" ; - TIME17:time_origin = "14-JAN-1980 14:00:00" ; - TIME17:axis = "T" ; - TIME17:standard_name = "time" ; - double T2(TIME17, PSZT11_10, PSYT135_56, PSXT91_108) ; - T2:missing_value = -1.e+34 ; - T2:_FillValue = -1.e+34 ; - T2:long_name = "T*TEMP" ; - T2:history = "From gt4d011" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -netcdf a { -dimensions: - XAXLEVITR1_160 = 160 ; - YAXLEVITR1_9090_90 = 1 ; - ZAXLEVITR1_1 = 1 ; -variables: - double XAXLEVITR1_160(XAXLEVITR1_160) ; - XAXLEVITR1_160:units = "degrees_east" ; - XAXLEVITR1_160:modulo = " " ; - XAXLEVITR1_160:point_spacing = "even" ; - XAXLEVITR1_160:new_att = "something" ; - XAXLEVITR1_160:axis = "X" ; - XAXLEVITR1_160:standard_name = "longitude" ; - double YAXLEVITR1_9090_90(YAXLEVITR1_9090_90) ; - YAXLEVITR1_9090_90:units = "degrees_north" ; - YAXLEVITR1_9090_90:point_spacing = "even" ; - YAXLEVITR1_9090_90:axis = "Y" ; - YAXLEVITR1_9090_90:standard_name = "latitude" ; - double ZAXLEVITR1_1(ZAXLEVITR1_1) ; - ZAXLEVITR1_1:units = "meters" ; - ZAXLEVITR1_1:positive = "down" ; - ZAXLEVITR1_1:point_spacing = "even" ; - ZAXLEVITR1_1:axis = "Z" ; - ZAXLEVITR1_1:standard_name = "depth" ; - float TEMP(ZAXLEVITR1_1, YAXLEVITR1_9090_90, XAXLEVITR1_160) ; - TEMP:missing_value = -1.e+10f ; - TEMP:_FillValue = -1.e+10f ; - TEMP:long_name = "TEMPERATURE" ; - TEMP:history = "From levitus_climatology" ; - TEMP:units = "DEG C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -netcdf a { -dimensions: - XAXLEVITR1_160161_161 = 1 ; - YAXLEVITR1_9090_90 = 1 ; - ZAXLEVITR1_1 = 1 ; -variables: - double XAXLEVITR1_160161_161(XAXLEVITR1_160161_161) ; - XAXLEVITR1_160161_161:units = "degrees_east" ; - XAXLEVITR1_160161_161:modulo = " " ; - XAXLEVITR1_160161_161:point_spacing = "even" ; - XAXLEVITR1_160161_161:new_att = "something" ; - XAXLEVITR1_160161_161:axis = "X" ; - XAXLEVITR1_160161_161:standard_name = "longitude" ; - double YAXLEVITR1_9090_90(YAXLEVITR1_9090_90) ; - YAXLEVITR1_9090_90:units = "degrees_north" ; - YAXLEVITR1_9090_90:point_spacing = "even" ; - YAXLEVITR1_9090_90:axis = "Y" ; - YAXLEVITR1_9090_90:standard_name = "latitude" ; - double ZAXLEVITR1_1(ZAXLEVITR1_1) ; - ZAXLEVITR1_1:units = "meters" ; - ZAXLEVITR1_1:positive = "down" ; - ZAXLEVITR1_1:point_spacing = "even" ; - ZAXLEVITR1_1:axis = "Z" ; - ZAXLEVITR1_1:standard_name = "depth" ; - double TWO(ZAXLEVITR1_1, YAXLEVITR1_9090_90, XAXLEVITR1_160161_161) ; - TWO:missing_value = -1.e+34 ; - TWO:_FillValue = -1.e+34 ; - TWO:long_name = "2*TEMP[Y=0:15,X=180:200]" ; - TWO:history = "From levitus_climatology" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_attributes.jnl --- 27 attributes of user-defined axes -netcdf string4d { -dimensions: - X2AX = 2 ; - Y3AX = 3 ; - Z4AX = 4 ; - T2AX = UNLIMITED ; // (2 currently) - STRING1_5 = 5 ; -variables: - double X2AX(X2AX) ; - X2AX:point_spacing = "even" ; - X2AX:axis = "X" ; - X2AX:modulo = " " ; - double Y3AX(Y3AX) ; - Y3AX:point_spacing = "even" ; - Y3AX:axis = "Y" ; - double Z4AX(Z4AX) ; - Z4AX:point_spacing = "even" ; - Z4AX:axis = "Z" ; - Z4AX:positive = "up" ; - Z4AX:standard_name = "altitude" ; - double T2AX(T2AX) ; - T2AX:axis = "T" ; - char AXY(T2AX, Z4AX, Y3AX, X2AX, STRING1_5) ; - AXY:long_name = "RESHAPE (A,RVAR)" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_attributes.jnl --- 28 Define a new global attribute -bn_attributes.jnl --- 29 SET ATT/OUTPUT=all for global attrs and a var -netcdf a { -dimensions: - J = 3 ; - I = 2 ; - l = 3 ; -variables: - float J(J) ; - J:point_spacing = "even" ; - J:axis = "X" ; - int I(I) ; - I:point_spacing = "even" ; - I:axis = "Y" ; - char BROILED(I, J, l) ; - BROILED:act = "text string\n", - "\t123" ; - BROILED:acb = 10b ; - BROILED:acs = -200s ; - BROILED:acl = 17000 ; - BROILED:acf = -2.f, 1.f, 0.f ; - BROILED:acd = -1., 2.71828182845905 ; - BROILED:long_name = "BROILED" ; - BROILED:history = "From test0" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; - :glob = "Global attribute" ; - :FERRET_comment = "File written via LAS. Attributes are inherited from originating dataset" ; -data: - - J = 2, 4, 6 ; - - I = 10, 20 ; - - BROILED = - "ind", - "ist", - "ing", - "uis", - "hab", - "le" ; -} -bn_attributes.jnl --- 29 SET VAR/OUTTYPE for user variable -netcdf a { -dimensions: - PSXT91_108 = 18 ; - PSYT135_56 = 22 ; - bnds = 2 ; - PSZT11_10 = 10 ; - TIME18 = UNLIMITED ; // (25 currently) -variables: - double PSXT91_108(PSXT91_108) ; - PSXT91_108:units = "degrees_east" ; - PSXT91_108:point_spacing = "even" ; - PSXT91_108:modulo = 360. ; - PSXT91_108:axis = "X" ; - PSXT91_108:standard_name = "longitude" ; - double PSYT135_56(PSYT135_56) ; - PSYT135_56:units = "degrees_north" ; - PSYT135_56:point_spacing = "uneven" ; - PSYT135_56:axis = "Y" ; - PSYT135_56:standard_name = "latitude" ; - PSYT135_56:bounds = "PSYT135_56_bnds" ; - double PSYT135_56_bnds(PSYT135_56, bnds) ; - double PSZT11_10(PSZT11_10) ; - PSZT11_10:units = "meters" ; - PSZT11_10:positive = "down" ; - PSZT11_10:point_spacing = "uneven" ; - PSZT11_10:axis = "Z" ; - PSZT11_10:standard_name = "depth" ; - PSZT11_10:bounds = "PSZT11_10_bnds" ; - double PSZT11_10_bnds(PSZT11_10, bnds) ; - double TIME18(TIME18) ; - TIME18:units = "hour since 1980-01-14 14:00:00" ; - TIME18:time_origin = "14-JAN-1980 14:00:00" ; - TIME18:axis = "T" ; - TIME18:standard_name = "time" ; - double FAREN(TIME18, PSZT11_10, PSYT135_56, PSXT91_108) ; - FAREN:missing_value = -1.e+34 ; - FAREN:_FillValue = -1.e+34 ; - FAREN:long_name = "TEMP*9/5 + 32" ; - FAREN:units = "Deg F" ; - FAREN:history = "From gt4d011" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -netcdf a { -dimensions: - PSXT91_108 = 18 ; - PSYT135_56 = 22 ; - bnds = 2 ; - PSZT11_10 = 10 ; - TIME18 = UNLIMITED ; // (25 currently) -variables: - double PSXT91_108(PSXT91_108) ; - PSXT91_108:units = "degrees_east" ; - PSXT91_108:point_spacing = "even" ; - PSXT91_108:modulo = 360. ; - PSXT91_108:axis = "X" ; - PSXT91_108:standard_name = "longitude" ; - double PSYT135_56(PSYT135_56) ; - PSYT135_56:units = "degrees_north" ; - PSYT135_56:point_spacing = "uneven" ; - PSYT135_56:axis = "Y" ; - PSYT135_56:standard_name = "latitude" ; - PSYT135_56:bounds = "PSYT135_56_bnds" ; - double PSYT135_56_bnds(PSYT135_56, bnds) ; - double PSZT11_10(PSZT11_10) ; - PSZT11_10:units = "meters" ; - PSZT11_10:positive = "down" ; - PSZT11_10:point_spacing = "uneven" ; - PSZT11_10:axis = "Z" ; - PSZT11_10:standard_name = "depth" ; - PSZT11_10:bounds = "PSZT11_10_bnds" ; - double PSZT11_10_bnds(PSZT11_10, bnds) ; - double TIME18(TIME18) ; - TIME18:units = "hour since 1980-01-14 14:00:00" ; - TIME18:time_origin = "14-JAN-1980 14:00:00" ; - TIME18:axis = "T" ; - TIME18:standard_name = "time" ; - int FAREN(TIME18, PSZT11_10, PSYT135_56, PSXT91_108) ; - FAREN:missing_value = -999 ; - FAREN:_FillValue = -999 ; - FAREN:long_name = "TEMP*9/5 + 32" ; - FAREN:units = "Deg F" ; - FAREN:history = "From gt4d011" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -netcdf a { -dimensions: - XAX = 4 ; - bnds = 2 ; -variables: - double XAX(XAX) ; - XAX:point_spacing = "uneven" ; - XAX:axis = "X" ; - XAX:bounds = "XAX_bnds" ; - double XAX_bnds(XAX, bnds) ; - double A(XAX) ; - A:missing_value = -1.e+34 ; - A:_FillValue = -1.e+34 ; - A:long_name = "X[GX=XAX]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX = 1.5, 3, 6, 8.5 ; - - XAX_bnds = - 1, 2, - 2, 4, - 4, 8, - 8, 9 ; - - A = 1.5, 3, 6, 8.5 ; -} -netcdf a { -dimensions: - XAX = 4 ; - bnds = 2 ; -variables: - double XAX(XAX) ; - XAX:point_spacing = "uneven" ; - XAX:axis = "X" ; - XAX:bounds = "XAX_bnds" ; - double XAX_bnds(XAX, bnds) ; - double A(XAX) ; - A:missing_value = -1.e+34 ; - A:_FillValue = -1.e+34 ; - A:long_name = "X[GX=XAX]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX = 1.5, 3, 6, 8.5 ; - - XAX_bnds = - 1, 2, - 2, 4, - 4, 8, - 8, 9 ; - - A = 1.5, 3, 6, 8.5 ; -} -netcdf a { -dimensions: - XAX = 4 ; - bnds = 2 ; -variables: - double XAX(XAX) ; - XAX:point_spacing = "uneven" ; - XAX:axis = "X" ; - XAX:bounds = "XAX_bnds" ; - double XAX_bnds(XAX, bnds) ; - double A(XAX) ; - A:missing_value = -1.e+34 ; - A:_FillValue = -1.e+34 ; - A:long_name = "X[GX=XAX]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX = 1.5, 3, 6, 8.5 ; - - XAX_bnds = - 1, 2, - 2, 4, - 4, 8, - 8, 9 ; - - A = 1.5, 3, 6, 8.5 ; -} -netcdf a { -dimensions: - XAX_LEV9421_380 = 360 ; - YAX_LEV9450_50 = 1 ; - ZAXLEVIT191_1 = 1 ; - TIME4 = UNLIMITED ; // (1 currently) -variables: - double XAX_LEV9421_380(XAX_LEV9421_380) ; - XAX_LEV9421_380:units = "degrees_east" ; - XAX_LEV9421_380:modulo = " " ; - XAX_LEV9421_380:point_spacing = "even" ; - XAX_LEV9421_380:long_name = "Here is a long name for the x axis of TEMP" ; - XAX_LEV9421_380:axis = "X" ; - XAX_LEV9421_380:standard_name = "longitude" ; - double YAX_LEV9450_50(YAX_LEV9450_50) ; - YAX_LEV9450_50:units = "degrees_north" ; - YAX_LEV9450_50:point_spacing = "even" ; - YAX_LEV9450_50:axis = "Y" ; - YAX_LEV9450_50:standard_name = "latitude" ; - double ZAXLEVIT191_1(ZAXLEVIT191_1) ; - ZAXLEVIT191_1:units = "meters" ; - ZAXLEVIT191_1:positive = "down" ; - ZAXLEVIT191_1:point_spacing = "even" ; - ZAXLEVIT191_1:axis = "Z" ; - ZAXLEVIT191_1:standard_name = "depth" ; - double TIME4(TIME4) ; - TIME4:units = "hour since 0000-01-01 00:00:00" ; - TIME4:time_origin = "01-JAN-0000 00:00:00" ; - TIME4:modulo = " " ; - TIME4:axis = "T" ; - TIME4:standard_name = "time" ; - float TEMP(TIME4, ZAXLEVIT191_1, YAX_LEV9450_50, XAX_LEV9421_380) ; - TEMP:missing_value = -1.e+34f ; - TEMP:_FillValue = -1.e+34f ; - TEMP:long_name = "Temperature" ; - TEMP:history = "From ocean_atlas_monthly" ; - TEMP:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -netcdf a { -dimensions: - XAX_LEV9421_3801_12 = 12 ; - YAX_LEV9450_50 = 1 ; - ZAXLEVIT191_1 = 1 ; - TIME4 = UNLIMITED ; // (1 currently) -variables: - double XAX_LEV9421_3801_12(XAX_LEV9421_3801_12) ; - XAX_LEV9421_3801_12:units = "degrees_east" ; - XAX_LEV9421_3801_12:modulo = " " ; - XAX_LEV9421_3801_12:point_spacing = "even" ; - XAX_LEV9421_3801_12:long_name = "Here is a long name for the x axis of TEMP" ; - XAX_LEV9421_3801_12:axis = "X" ; - XAX_LEV9421_3801_12:standard_name = "longitude" ; - double YAX_LEV9450_50(YAX_LEV9450_50) ; - YAX_LEV9450_50:units = "degrees_north" ; - YAX_LEV9450_50:point_spacing = "even" ; - YAX_LEV9450_50:axis = "Y" ; - YAX_LEV9450_50:standard_name = "latitude" ; - double ZAXLEVIT191_1(ZAXLEVIT191_1) ; - ZAXLEVIT191_1:units = "meters" ; - ZAXLEVIT191_1:positive = "down" ; - ZAXLEVIT191_1:point_spacing = "even" ; - ZAXLEVIT191_1:axis = "Z" ; - ZAXLEVIT191_1:standard_name = "depth" ; - double TIME4(TIME4) ; - TIME4:units = "hour since 0000-01-01 00:00:00" ; - TIME4:time_origin = "01-JAN-0000 00:00:00" ; - TIME4:modulo = " " ; - TIME4:axis = "T" ; - TIME4:standard_name = "time" ; - float TEMP(TIME4, ZAXLEVIT191_1, YAX_LEV9450_50, XAX_LEV9421_3801_12) ; - TEMP:missing_value = -1.e+34f ; - TEMP:_FillValue = -1.e+34f ; - TEMP:long_name = "Temperature" ; - TEMP:history = "From ocean_atlas_monthly" ; - TEMP:units = "Deg C" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -netcdf a { -dimensions: - YAXIS = 61 ; -variables: - double YAXIS(YAXIS) ; - YAXIS:units = "degrees_north" ; - YAXIS:point_spacing = "even" ; - YAXIS:axis = "Y" ; - YAXIS:standard_name = "latitude" ; - double V(YAXIS) ; - V:missing_value = -1.e+34 ; - V:_FillValue = -1.e+34 ; - V:long_name = "Y[GY=YAXIS]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -err611_set_var_ez.jnl --- -netcdf a { -dimensions: - AX139 = 3 ; -variables: - double AX139(AX139) ; - AX139:point_spacing = "even" ; - AX139:axis = "X" ; - double MY_ASC(AX139) ; - MY_ASC:missing_value = 3. ; - MY_ASC:_FillValue = 3. ; - MY_ASC:long_name = "chlorophyll" ; - MY_ASC:units = "micrograms/L" ; - MY_ASC:history = "From dat.dat" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -netcdf a { -dimensions: - AX139 = 3 ; -variables: - double AX139(AX139) ; - AX139:point_spacing = "even" ; - AX139:axis = "X" ; - double MY_UNF(AX139) ; - MY_UNF:missing_value = 5. ; - MY_UNF:_FillValue = 5. ; - MY_UNF:long_name = "Some Unformatted input" ; - MY_UNF:units = "metres" ; - MY_UNF:history = "From unf.dat" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_attributes.jnl --- SET VAR/OUTTYPE for user variable -netcdf a { -dimensions: - XAX1_3 = 3 ; -variables: - double XAX1_3(XAX1_3) ; - XAX1_3:point_spacing = "even" ; - XAX1_3:axis = "X" ; - double A(XAX1_3) ; - A:missing_value = -1.e+34 ; - A:_FillValue = -1.e+34 ; - A:long_name = "{1.1,2.2,3.3}" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX1_3 = 1, 2, 3 ; - - A = 1.1, 2.2, 3.3 ; -} -netcdf a { -dimensions: - XAX1_12 = 12 ; -variables: - double XAX1_12(XAX1_12) ; - XAX1_12:point_spacing = "even" ; - XAX1_12:axis = "X" ; - int A(XAX1_12) ; - A:missing_value = 999 ; - A:_FillValue = 999 ; - A:long_name = "{ 3.77, 4.00, 4.10, 4.33, 4.38, 4.27, 4.31, 4.40, 4.75, 5.01, 5.27, 5.52}" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - XAX1_12 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ; - - A = 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5 ; -} -netcdf a { -dimensions: - XAX = 10 ; - tday = UNLIMITED ; // (31 currently) - lon1_5 = 5 ; - lat1_5 = 5 ; - bnds = 2 ; - zt = 10 ; - time1478 = 3 ; -variables: - double XAX(XAX) ; - XAX:point_spacing = "even" ; - XAX:axis = "X" ; - double tday(tday) ; - tday:units = "days since 1998-12-31" ; - tday:axis = "T" ; - tday:calendar = "GREGORIAN" ; - tday:time_origin = "31-DEC-1998" ; - tday:standard_name = "time" ; - double MyUpperLowerCaseVar(tday, XAX) ; - MyUpperLowerCaseVar:missing_value = -1.e+34 ; - MyUpperLowerCaseVar:_FillValue = -1.e+34 ; - MyUpperLowerCaseVar:long_name = "X[X=1:10] + T[GT=TDAY]" ; - double lon1_5(lon1_5) ; - lon1_5:point_spacing = "even" ; - lon1_5:axis = "X" ; - lon1_5:standard_name = "longitude" ; - double lat1_5(lat1_5) ; - lat1_5:point_spacing = "uneven" ; - lat1_5:axis = "Y" ; - lat1_5:standard_name = "latitude" ; - lat1_5:bounds = "lat1_5_bnds" ; - double lat1_5_bnds(lat1_5, bnds) ; - float zt(zt) ; - zt:long_name = "zt" ; - zt:units = "meters" ; - zt:positive = "down" ; - zt:point_spacing = "uneven" ; - zt:axis = "Z" ; - zt:standard_name = "depth" ; - zt:bounds = "zt_bnds" ; - float zt_bnds(zt, bnds) ; - double time1478(time1478) ; - time1478:calendar = "NOLEAP" ; - time1478:axis = "T" ; - time1478:point_spacing = "even" ; - time1478:standard_name = "time" ; - double newvar(time1478, zt, lat1_5, lon1_5) ; - newvar:missing_value = -1.e+34 ; - newvar:_FillValue = -1.e+34 ; - newvar:long_name = "outgoing longwave radiation" ; - newvar:units = "watts/m2" ; - newvar:history = "From a" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_keep_axisnames.jnl --- test SAVE/KEEP_AXISNAMES -netcdf a { -dimensions: - X100 = 11 ; - T31 = UNLIMITED ; // (14 currently) -variables: - double X100(X100) ; - X100:units = "degrees_east" ; - X100:point_spacing = "even" ; - X100:axis = "X" ; - X100:modulo = 360. ; - X100:standard_name = "longitude" ; - double T31(T31) ; - T31:units = "days since 1999-12-31" ; - T31:axis = "T" ; - T31:calendar = "GREGORIAN" ; - T31:time_origin = "31-DEC-1999" ; - T31:standard_name = "time" ; - double A(T31, X100) ; - A:missing_value = -1.e+34 ; - A:_FillValue = -1.e+34 ; - A:long_name = "X[GX=X100] + T[GT=T31]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_keep_axisnames.jnl --- without /KEEP_AXISNAMES -netcdf a { -dimensions: - X10030_40 = 11 ; - T31 = UNLIMITED ; // (14 currently) -variables: - double X10030_40(X10030_40) ; - X10030_40:units = "degrees_east" ; - X10030_40:point_spacing = "even" ; - X10030_40:axis = "X" ; - X10030_40:modulo = 360. ; - X10030_40:standard_name = "longitude" ; - double T31(T31) ; - T31:units = "days since 1999-12-31" ; - T31:axis = "T" ; - T31:calendar = "GREGORIAN" ; - T31:time_origin = "31-DEC-1999" ; - T31:standard_name = "time" ; - double A(T31, X10030_40) ; - A:missing_value = -1.e+34 ; - A:_FillValue = -1.e+34 ; - A:long_name = "X[GX=X100] + T[GT=T31]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_axis_cf.jnl, degrees_east, degrees_north, std names on axes: -netcdf a { -dimensions: - XAX = 11 ; - YAX = 6 ; - TAXIS = UNLIMITED ; // (5 currently) - ZAXDN = 4 ; - bnds = 2 ; - ZAXUP = 5 ; -variables: - double XAX(XAX) ; - XAX:point_spacing = "even" ; - XAX:axis = "X" ; - XAX:units = "deg" ; - XAX:modulo = 360. ; - XAX:standard_name = "longitude" ; - double XX(XAX) ; - XX:missing_value = -1.e+34 ; - XX:_FillValue = -1.e+34 ; - XX:long_name = "X[GX=XAX]" ; - double YAX(YAX) ; - YAX:point_spacing = "even" ; - YAX:axis = "Y" ; - YAX:units = "degrees" ; - YAX:standard_name = "latitude" ; - double YY(YAX) ; - YY:missing_value = -1.e+34 ; - YY:_FillValue = -1.e+34 ; - YY:long_name = "Y[GY=YAX]" ; - double TAXIS(TAXIS) ; - TAXIS:units = "days since 2000-01-01" ; - TAXIS:axis = "T" ; - TAXIS:time_origin = "01-JAN-2000" ; - TAXIS:standard_name = "time" ; - double TT(TAXIS) ; - TT:missing_value = -1.e+34 ; - TT:_FillValue = -1.e+34 ; - TT:long_name = "T[GT=TAXIS]" ; - double ZAXDN(ZAXDN) ; - ZAXDN:units = "meters" ; - ZAXDN:point_spacing = "uneven" ; - ZAXDN:axis = "Z" ; - ZAXDN:bounds = "ZAXDN_bnds" ; - ZAXDN:positive = "down" ; - ZAXDN:standard_name = "depth" ; - double ZAXDN_bnds(ZAXDN, bnds) ; - double ZDN(ZAXDN) ; - ZDN:missing_value = -1.e+34 ; - ZDN:_FillValue = -1.e+34 ; - ZDN:long_name = "Z[GZ=ZAXDN]" ; - double ZAXUP(ZAXUP) ; - ZAXUP:units = "meters" ; - ZAXUP:point_spacing = "uneven" ; - ZAXUP:axis = "Z" ; - ZAXUP:bounds = "ZAXUP_bnds" ; - ZAXUP:standard_name = "altitude" ; - double ZAXUP_bnds(ZAXUP, bnds) ; - double ZUP(ZAXUP) ; - ZUP:missing_value = -1.e+34 ; - ZUP:_FillValue = -1.e+34 ; - ZUP:long_name = "Z[GZ=ZAXUP]" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_axis_cf.jnl, Convert forms of DEG, degrees to degrees_east: -netcdf a { -dimensions: - XAXIS = 31 ; - YFIFTEEN = 13 ; -variables: - double XAXIS(XAXIS) ; - XAXIS:units = "degrees_east" ; - XAXIS:point_spacing = "even" ; - XAXIS:axis = "X" ; - XAXIS:modulo = 360. ; - XAXIS:standard_name = "longitude" ; - float VAR(XAXIS) ; - VAR:missing_value = -1.e+34f ; - VAR:_FillValue = -1.e+34f ; - VAR:long_name = "X[GX=XAXIS]" ; - VAR:history = "From degrees" ; - double YFIFTEEN(YFIFTEEN) ; - YFIFTEEN:units = "degrees_north" ; - YFIFTEEN:point_spacing = "even" ; - YFIFTEEN:axis = "Y" ; - YFIFTEEN:standard_name = "latitude" ; - double Y_(YFIFTEEN) ; - Y_:missing_value = -1.e+34 ; - Y_:_FillValue = -1.e+34 ; - Y_:long_name = "Y" ; - Y_:long_name_mod = "axis YFIFTEEN" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -bn_axis_cf.jnl, Downcase units, e.g. in time axis DAYS since -netcdf a { -dimensions: - XLON = 40 ; - YLAT = 30 ; - TTIME = UNLIMITED ; // (20 currently) -variables: - double XLON(XLON) ; - XLON:units = "degrees_east" ; - XLON:point_spacing = "even" ; - XLON:modulo = 360. ; - XLON:axis = "X" ; - XLON:standard_name = "longitude" ; - double YLAT(YLAT) ; - YLAT:units = "degrees_north" ; - YLAT:point_spacing = "even" ; - YLAT:axis = "Y" ; - YLAT:standard_name = "latitude" ; - double TTIME(TTIME) ; - TTIME:units = "days since 1901-01-15 00:00:00" ; - TTIME:time_origin = "15-JAN-1901 00:00:00" ; - TTIME:axis = "T" ; - TTIME:standard_name = "time" ; - float XYTVAR(TTIME, YLAT, XLON) ; - XYTVAR:missing_value = -1.e+34f ; - XYTVAR:_FillValue = -1.e+34f ; - XYTVAR:long_name = "L*1000 + J*10 + I" ; - XYTVAR:history = "From bn_strides" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -netcdf a { -dimensions: - TIME34 = 8 ; - REFTIME = 3 ; - bnds = 2 ; -variables: - double REFTIME(REFTIME) ; - REFTIME:units = "calendar month since 2014-11-01t00:00:00z" ; - REFTIME:long_name = "GRIB reference time" ; - REFTIME:calendar = "proleptic_gregorian" ; - REFTIME:point_spacing = "uneven" ; - REFTIME:axis = "F" ; - REFTIME:bounds = "REFTIME_bnds" ; - double REFTIME_bnds(REFTIME, bnds) ; - double TIME(REFTIME, TIME34) ; - TIME:units = "calendar Month since 2014-11-01T00:00:00Z" ; - TIME:long_name = "GRIB forecast or observation time" ; - TIME:calendar = "proleptic_gregorian" ; - TIME:bounds = "time_bounds" ; - TIME:history = "From http://tds.climatedatacloud.com/thredds/dodsC/ensembles/nmme_gfdl/TwoD" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - REFTIME = 0, 1, 2.03333333333333 ; - - REFTIME_bnds = - -0.5, 0.5, - 0.5, 1.51666666666667, - 1.51666666666667, 2.55 ; - - TIME = - 1, 2, 3, 4, 5, 6, 7, 8, - 2, 3, 4, 5, 6, 7, 8, 9, - 3, 4, 5, 6, 7, 8, 9, 10 ; -} -netcdf a { -dimensions: - time = 8 ; - reftime = 3 ; - bnds = 2 ; -variables: - double reftime(reftime) ; - reftime:units = "calendar month since 2014-11-01t00:00:00z" ; - reftime:long_name = "GRIB reference time" ; - reftime:calendar = "proleptic_gregorian" ; - reftime:point_spacing = "uneven" ; - reftime:axis = "F" ; - reftime:bounds = "reftime_bnds" ; - double reftime_bnds(reftime, bnds) ; - double time(reftime, time) ; - time:units = "calendar Month since 2014-11-01T00:00:00Z" ; - time:long_name = "GRIB forecast or observation time" ; - time:calendar = "proleptic_gregorian" ; - time:bounds = "time_bounds" ; - time:history = "From http://tds.climatedatacloud.com/thredds/dodsC/ensembles/nmme_gfdl/TwoD" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -data: - - reftime = 0, 1, 2.03333333333333 ; - - reftime_bnds = - -0.5, 0.5, - 0.5, 1.51666666666667, - 1.51666666666667, 2.55 ; - - time = - 1, 2, 3, 4, 5, 6, 7, 8, - 2, 3, 4, 5, 6, 7, 8, 9, - 3, 4, 5, 6, 7, 8, 9, 10 ; -} -netcdf a { -variables: - double MYVAR ; - MYVAR:missing_value = -1.e+34 ; - MYVAR:_FillValue = -1.e+34 ; - MYVAR:long_name = "coads myvar" ; - MYVAR:units = "feet" ; - MYVAR:history = "From coads_climatology" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} -netcdf a { -variables: - double MYVAR ; - MYVAR:missing_value = -1.e+34 ; - MYVAR:_FillValue = -1.e+34 ; - MYVAR:long_name = "Levitus myvar" ; - MYVAR:units = "meters" ; - MYVAR:standard_name = "None" ; - MYVAR:history = "From levitus_climatology" ; - -// global attributes: - :history = "PyFerret V7.51 (debug) 20-Aug-19" ; - :Conventions = "CF-1.6" ; -} ------ -end of ncdump output - -yes? yes? yes? yes? yes? yes? yes? NOAA/PMEL TMAP - PyFerret v7.51 (debug) - Linux 2.6.32-754.17.1.el6.x86_64 - 08/20/19 - 20-Aug-19 12:26 - -! bn_startupfile.jnl -! When a .ferret startup file is present, test memory and other settings. - -SHOW MEMORY - SET MEMORY/SIZE: 248 Mb (31 megawords) - Peak demand: 0 Kb - Current cache: 0 Kb -SH SYM/ALL -PPL$XPIXEL = "819" -PPL$YPIXEL = "707" -BYTEORDER = "LITTLE" -FERRET_VERSION = "7.51" -FERRET_PLATFORM = "Linux 2.6.32-754.17.1.el6.x86_64" -FERRET_PRECISION = "double" -NETCDF_VERSION = "4.6.3 of Mar 21 2019 12:26:12 $" -FERRET_MEMORY = "31" -FERRET_BYTES_MEM = "248Mb" -SESSION_DATE = "20-Aug-19" -SESSION_TIME = "12:26" -SESSION_PID = "5115" -DELTA_CPU = "0.900862" -CLOCK_SECS = "0.9" -CURRENT_DATE = "20-Aug-19" -CURRENT_TIME = "12:26:20" -N_OPEN_DSETS = "0" -PROGRAM_NAME = "PyFerret" -PEAK_MEMORY = "0" -SPAWN_OK = "1" -SPAWN_STATUS = "0" -GO_FILE = "./genjnls/bn_startupfile.jnl" -LAST_GO_FILE = "./genjnls/bn_startupfile.jnl" -PPL$FORMAT = "(3F10.2)" -PPL$PLTNME = "ferret.png" -PPL$TEKNME = "/dev/tt" -PPL$XLEN = "8.00000" -PPL$YLEN = "6.00000" -PPL$XORG = "1.20000" -PPL$YORG = "1.40000" -PPL$WIDTH = "10.2000" -PPL$HEIGHT = "8.80000" -PPL$LINE_COUNT = "0" -PPL$XFACT1 = "1.000000" -PPL$XOFF1 = "0.000000" -PPL$YFACT1 = "1.000000" -PPL$YOFF1 = "0.000000" -PPL$VIEW_X = "0.000" -PPL$VIEW_Y = "0.000" -PPL$VIEW_Z = "0.000" -PPL$COMMAND_FILE = "$$MEMBUF$$" -VP_WIDTH = "10.200" -VP_HEIGHT = "8.800" -PPL$SCALE = "1.0000" -WIN_TITLE = "20-Aug-19_12:26" -VP_SCALE = "1.000" -VP_RT_MARGIN = "1.000" -VP_TOP_MARGIN = "1.400" -VP_XLO = "0.000" -VP_XHI = "1.000" -VP_YLO = "0.000" -VP_YHI = "1.000" -SHOW MODE - MODE STATE ARGUMENT - DIAGNOSTIC CANCELED 99 - VERIFY SET DEFAULT - INTERPOLATE CANCELED - IGNORE_ERROR CANCELED - STUPID CANCELED - JOURNAL SET startup_tests.jnl - LONG_LABEL SET 4 - LATIT_LABEL CANCELED 3 - DEPTH_LABEL SET 4 - CALENDAR SET minutes - E_LABEL SET 4 - F_LABEL SET minutes - ASCII_FONT SET - SEGMENT SET - WAIT CANCELED - DESPERATE CANCELED 0 - GKS SET - REFRESH CANCELED - METAFILE CANCELED ferret.png - PPLLIST CANCELED ppllist.out - GUI CANCELED - LOGO CANCELED - LABELS SET - GRATICULE SET - LINECOLORS SET 7 - UPCASE_OUTPU SET - NLEVELS SET 100 - NODATA_LAB SET - SHRINK_YLAB CANCELED - CURVILINEAR CANCELED - LAYERZ CANCELED - 6D_LAB SET - FRUGAL SET 30 - DATE_FORMAT SET DEFAULT - -! SET - SHOW - CANCEL DATA -USE gtbc011 - -SHOW DATA - currently SET data sets: - 1> ./data/gtbc011.cdf (default) - name title I J K L - TEMP TEMPERATURE 70:72 1:100 1:27 1:3 - SALT (SALINITY(ppt) - 35) /1000 70:71 1:100 1:27 1:3 - U ZONAL VELOCITY 69:72 1:100 1:27 1:3 - V MERIDIONAL VELOCITY 69:72 1:100 1:27 1:3 - W VERTICAL VELOCITY 70:71 1:100 1:27 1:3 - TAUX ZONAL WIND STRESS 69:71 1:100 ... 1:3 - TAUY MERIDIONAL WIND STRESS 69:71 1:100 ... 1:3 - PSI STREAM FUNCTION 69:73 1:100 ... 1:3 - - -SHADE/I=71/L=1/TITLE="graticule on, latit labels off, 100 nlevels" temp - -SET MODE meta startup_tests2.plt -PLOT/THICK/LINE/i=1:100/TITLE="Seven colors" \ - cos(i/20), cos(i/24), cos(i/28), cos(i/32), cos(i/36), cos(i/40), cos(i/44) - -EXIT/COMMAND -yes? yes? yes? yes? yes? yes? yes? NOAA/PMEL TMAP - PyFerret v7.51 (debug) - Linux 2.6.32-754.17.1.el6.x86_64 - 08/20/19 - 20-Aug-19 12:26 - -! bn_gif.jnl -! do not use /text= in def view in PyFerret -! do not use ppl size in PyFerret -! -! NOTE the plots in bnplot_2.gif are different in PyFerret and Ferret, -! because of different treatment of /TEXT= for viewport definitions. - -can mode logo - -! define a 6 viewport window (modified definitions 11/92) -def view/xlim=0,.333/ylim=0,.5 ll6 -def view/xlim=0,.333/ylim=.5,1 ul6 -def view/xlim=.333,.666/ylim=0,.5 lm6 -def view/xlim=.333,.666/ylim=.5,1 um6 -def view/xlim=.666,1/ylim=0,.5 lr6 -def view/xlim=.666,1/ylim=.5,1 ur6 -show view - - name text xlimits ylimits mode - - UPPER 1.00 0.00,1.00 0.50,1.00 edges - LOWER 1.00 0.00,1.00 0.00,0.50 edges - RIGHT 1.00 0.50,1.00 0.00,1.00 edges - LEFT 1.00 0.00,0.50 0.00,1.00 edges - LL 0.50 0.00,0.50 0.00,0.50 edges - LR 0.50 0.50,1.00 0.00,0.50 edges - UL 0.50 0.00,0.50 0.50,1.00 edges - UR 0.50 0.50,1.00 0.50,1.00 edges - FULL 1.00 0.00,1.00 0.00,1.00 edges - LL6 0.41 0.00,0.33 0.00,0.50 edges - UL6 0.41 0.00,0.33 0.50,1.00 edges - LM6 0.41 0.33,0.67 0.00,0.50 edges - UM6 0.41 0.33,0.67 0.50,1.00 edges - LR6 0.41 0.67,1.00 0.00,0.50 edges - UR6 0.41 0.67,1.00 0.50,1.00 edges - current viewport is NONE - -! some variables for plotting -let a = 0.8*sin(l/10) -let b = 0.6*cos(l/10) -let c = sin(100/(l+k)) -let d = l/50 -let e = k-(l/25) -let f = -.5+(l/125) -let g = (l-25)/(k*35) -let h = 0.1 -let m = 0.2 - -! illegal plot commands -set mode ignore -plot/i=1:10/j=1:20/nolabel i+j ! not a line -plot/i=1:10/j=1:20/nolabel i,i+j ! not a line -plot/i=1:10/j=1:20/nolabel i+j,i ! not a line -plot/i=1:10/j=1:20/nolabel j,i ! differing axes -plot/i=1:10/j=1:20/vs/line/nolabel j,i ! unequal lengths -contour/i=1:10/j=1:20/nolabel i ! only 1 D -contour/i=1:10/j=1:20/nolabel i/j,j/i ! multiple fields -vector/i=1:10/j=1:20/nolabel i/j ! only 1 field -vector/i=1:10/j=1:20/nolabel i/j,j/i,i+j ! 3 fields -set mode/last ignore - -! notice the default window size is 10.2,width x 8.8,height -ppl list plot - WIDTH= 10.20 HEIGHT= 8.80 TKTYPE= 0 BAUD= 110 - WINDOW= ON BOX= OFF CROSS= 0 PLTYPE= 3 - PLOT MODE= A - PLOT FILE= ferret.png - -! enlarge it to accomodate an additional 50% width -! ppl size 15.3,8.8 -! PyFerret must use SET WINDOW -set win /xinch=15.3 /yinch=8.8 - -! turn on metafile (enabled 10/29/91) -! commented out 9/97 - instead set in bn450_all.jnl -! set mode metafile - -! draw a plot into a viewport - to be deleted (check hard copy) -set view ll6 -contour/i=1:50/j=1:50/nolabel i/(j+20) - -! 4 frames testing PLOT output -set view ul6 -plot/l=1:50/k=1/trans/nolabel a,b,c -plot/l=1:50/k=1/trans/over/line=6/nolabel d -plot/l=1:50/k=1/trans/over/symbol=88/nolabel e -plot/l=1:50/k=1/trans/over/symbol=47/line/nolabel f -def view/xlim=.333,1/ylim=0,.5 lm6 ! redefine longer in x (11/92) -set view lm6 -!ppl axlen 16 -set region/k=1 -plot/l=1:50/nolabel a,b,c,d,e,f,g[k=1],g[k=2],a+h,b+h,c+h,d+h,e+h,f+h,g[k=1]+h,g[k=2]+h,a+m,b+m,c+m -def view/xlim=.333,1/ylim=.5,1 um6 ! redefine it longer in x (11/92) -set view um6 -!ppl axlen 17,5 -plot/l=1:50/nolabel sin(100/(l+5)) -plot/l=1:50/over/nolabel a,b,c,d,e,f,g[k=1],g[k=2],a+h,b+h,c+h,d+h,e+h,f+h,g[k=1]+h,g[k=2]+h,a+m,b+m,c+m -set view ll6 -!ppl axlen 8,6 -plot/l=1:99000/nolabel sin(200000/(l+10000)) - -! reset to normal axis lengths and prepare for a new piccie -!ppl axlen 8 -frame/file=bnplot_1.gif -set wind/clear - -! draw six frames -set view ll6 -contour/i=1:50/j=1:50/levels=(0,2.5,.25)/nolabel i/(j+20) -plot/over/nolab/vs/line/i=1:50/j=1:50/nolabel 6*i/j,5*j/i -set view ul6 -vector/i=1:50/j=1:50/length=50/aspect/nolabel sin(i/20)*10+j-20,-1*cos(j/10)*10+i-20 -def view/xlim=.333,.666/ylim=0,.5 lm6 ! redefine it (11/92) -set view lm6 -shade/i=1:50/j=1:50/nolabel i/(j+20) -set view lr6 -ppl lev () (0,2.5,.1) -shade/i=1:50/j=1:50/line/level/nolabel i/(j+20) -set view ur6 -let icomp = (sin(i/20)*10+j-20) -let jcomp = (-1*cos(j/10)*10+i-20) -contour/i=1:50/j=1:50/nolabel icomp^2+jcomp^2 -contour/i=1:50/j=1:50/over/level/nolabel icomp^2+(-1*cos(i/10)*80)^2 -! note: "i-i" and "j-j" are needed to create 2D structures -vector/i=1:50/j=1:50/overlay/nolabel j-20+(i-i),i-20+(j-j) -vector/i=1:50/j=1:50/overlay/length/nolabel i-20+(j-j),40-j+(i-i) -def view/xlim=.333,.666/ylim=.5,1 um6 ! redefine it (11/92) -set view um6 -shade/i=1:50/j=1:50/nolabel i/(j+20) -contour/i=1:50/j=1:50/over/nolabel (sin(i/20)+j-20)^2+(-1*cos(j/10)+i-20)^2 -vector/i=1:50/j=1:50/overlay/nolabel j-20+(i-i),i-20+(j-j) -frame/file=bnplot_2.gif -! additions for version 3.01 "/TITLE=" controls -cancel viewports -set view ul6 -plot/title="My Custom Title"/i=1:100/nolabel sin(i/6) -plot/title="My Custom Key"/i=1:100/over/nolabel sin(i/5) -set view um6 -plot/title="My Custom Title"/i=1:100/nolabel sin(i/6),sin(i/9) -plot/title="My Custom Key"/i=1:100/over/nolabel sin(i/7),sin(i/10) -set view ur6 -plot/vs/line/title="My Custom Title"/i=1:100/nolabel sin(i/6),sin(i/9) -plot/vs/line/title="My Custom Key"/i=1:100/over/nolabel sin(i/7),sin(i/10) -set view ll6 -plot/vs/line/title="My Custom Title"/i=1:100/nolabel sin(i/6),sin(i/9),sin(i/12) -plot/vs/line/title="My Custom Key"/i=1:100/over/nolabel sin(i/7),sin(i/10) -set view lm6 -contour/i=1:20/j=1:20/title="My Contour Title"/nolabel sin(i/3)*cos(j/4) -contour/over/i=5:30/j=5:30/title="My Contour Overlay"/nolabel sin(i/2)*cos(j/3) -set view lr6 -wire/view=0,0,2/i=1:20/j=1:20/title="My Egg Carton"/nolabel sin(i/3)*cos(j/4) - -! addition for 3.20 showing changed default behavior of plot/vs -! return to window and redraw with symbols -set view ll6 -plot/vs/title="My Custom Title"/i=1:100/nolabel sin(i/6),sin(i/9),sin(i/12) -plot/vs/title="My Custom Key"/i=1:100/over/nolabel sin(i/7),sin(i/10) -frame/file=bnplot_3.gif - -! Prior to v5.8 could not get the window size in pixels when in gif mode -show symbol ppl$xpixel -PPL$XPIXEL = "1469" -show symbol ppl$ypixel -PPL$YPIXEL = "845" - -! V6.13 -! transparency with FRAME/TRANS -!! -! These gif images have the background color white or black -! replaced by transparent color. This can be tested by putting -! them into an HTML document with a colored background. -! e.g. a file called test_transparent.html containing only this line: -! - -can view -use coads_climatology -shade/nokey/lev=50 sst[L=1] -frame/trans/file=testbackground.gif - -! moved here from bn500_bug_fixes.jnl. The frame/ command it contains -! has trouble when running the benchmarks from remote desktop -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -go err491_long_gif_name -! err491_long_gif_name.jnl -! *sh* 4/99 - test 175 character gif name - -! name length extended with changes to save_frame.F and xeq_frame.F - -set wind/siz=0.03 -go ptest -! Description: create a simple test line plot - -! spirograph picture ... -PLOT/VS/LINE/I=1:314 i*cos(i/20),i*sin(i/20) - - -sp rm -f abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxy* - -frame/file="abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxy.gif" - -spawn ls abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxy* -abcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxyabcdefghijklmnopqrstuvwxy.png - - -! The fix for bug 1396 -set v ul; plot/dash x[gx=0:20:.5] -set v ur; plot/dash x[gx=0:20:.1] -set v ll; plot/dash x[gx=0:20:.05] -set v lr; plot/dash x[gx=0:20:.01] -frame/file=gif_dashbug.gif - -! Restore size -set win/siz=1/asp=1 - -! New benchmark gif outputs in v6.97 -go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO bn_hovmuller_overlays -! bn_hovmuller_overlays.jnl -! Previously a time series plot overlaid oon a Hovmuller plot did not -! work unless the time axis of the original data had units of hours. -! See ticket 2344 - -! 1/6/2016 ACM -! acm* 3/17 check the URL with TEST_OPENDAP befor trying to open it. - -! run this in the gif benchmarks. - - -def view/xlim=0,.333/ylim=.5,1 ul6 -def view/xlim=.333,.666/ylim=.5,1 um6 -def view/xlim=.666,1/ylim=.5,1 ur6 -def view/xlim=0,.333/ylim=0,.5 ll6 -def view/xlim=.333,1/ylim=0,.5 lr6 - -! The example from the FAQ, "Overlaying a time series on a 2D plot" -set view ul6 - -! Define a 2D field in YT with a time axis in units of DAYS -DEFINE AXIS/T="1-JAN-1980":"1-JAN-1990":5/UNITS=DAYS tdays -DEFINE AXIS/Y=0:40N:2/UNITS=DEGREES yax - -LET/TITLE=XY my_var = 10*cos(T[gt=tdays]/2000)*EXP((-1)*y[gy=yax]/20) - -! make a Hovmoller plot - -SHADE my_var - -! This did not work previously. Needed to re-define the axis in units of hours -PLOT/OVER my_var[Y=@loc:-4] - - -! XT variable -set view um6 - -DEFINE AXIS/X=0:40E:1/UNITS=DEGREES xax -LET/TITLE="XT" my_var = 10*cos(T[gt=tdays]/20)*EXP((-1)*x[gx=xax]/20) -SHADE/t=1-jan-1987:1-jan-1989 my_var -PLOT/OVER/TRANS/THICK my_var[x=@loc:-4] - - -! Irregular time axis -set view ur6 - -DEFINE AXIS/T0=1-jan-2001/UNITS=DAYS tdays = {1,2,4,5,6,8,9,10,12,30,35,41,42,44,45,46,48,49,50,58} -DEFINE AXIS/Y=0:40N:2/UNITS=DEGREES yax -LET my_var = 10*cos(T[gt=tdays])*EXP((-1)*y[gy=yax]/8) - -FILL/title="irregular t" my_var -PLOT/OVER/thick/y=8 my_var+10 - - -! Like the dataset example from the FAQ -set view ll6 - -IF `test_opendap("http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_sst.cdf") EQ 0` THEN - !-> IF 1 THEN - use "http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_sst.cdf" - set region/x=40w/y=10n:60n/t=15-jan-1982:15-dec-1983 - shade sst - plot/over/thick/TITLE="at 20" sst[y=@LOC:20] -ENDIF - -can data/all -can region - -! vector plots with a time series -set view lr6 - -IF `test_opendap("http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_uwnd.cdf") EQ 0 AND\ - test_opendap("http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_uwnd.cdf") EQ 0` THEN - !-> IF 1 THEN - use "http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_uwnd.cdf" - use "http://ferret.pmel.noaa.gov/pmel/thredds/dodsC/data/PMEL/COADS/coads_vwnd.cdf" - vec/x=0/y=-10:10/t=1-jan-1980:1-jan-1990 uwnd[d=1], vwnd[d=2] - let wspd = (uwnd[d=1]*uwnd[d=1] + vwnd[d=2]*vwnd[d=2])^0.5 - plot/over/color=red/thick/x=0/t=1-jan-1980:1-jan-1990 wspd[y=-10:10@ave] - FRAME/FILE=bn_hovmuller_overlays.gif -ENDIF - -Go bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO bn_labels_on_taxis -! bn_labels_on_taxis.jnl -! tests of labels and overlays on time axes - - -set v ul -DEFINE AXIS/T=1-JAN-1980:31-JAN-1985:30/T0=1-jan-1980/UNIT=days tax -LET tt = t[gt=tax] -LET tvar = cos(tt/200) -plot tvar - -LET xsqr = {-1,1,1,-1} ! coordinates of a unit square -LET ysqr = {-1,-1,1,1} -LET xcircle = COS(6.3*i[i=1:42]/40) ! coordinates of unit circle -LET ycircle = SIN(6.3*i[i=1:42]/40) - -! place an "X" at the value exactly at 7-aug-1982 -! "@ITP" causes interpolation to exact location - -let t0 = tt[t="7-aug-1982"@itp] -let val0 = tvar[t="7-aug-1982"@itp] -plot/vs/over/nolab/sym=2/thick/color=red t0,val0 - -! put a box around the "X" -polygon/over/thick/color=red/nolab t0+30*xsqr, 0.05*ysqr+val0 - -! place an "X" on the data point nearest to 15-may-1984 -! Note that @ITP is absent, so behavior is set by MODE INTERPOLATE -let t1 = tt[t="15-may-1984"] -let val1 = tvar[t="15-may-1984"] -plot/vs/over/nolab/sym=2/color=blue/thick t1,val1 - -! put a circle around the "X" -plot/vs/over/color=blue/thick/nolab t1+30*xcircle,0.05*ycircle+val1 - -set v ur -! Latitude/time plot -let ytvar = cos(tt/200) + sin(j/3) -shade/y=1:50/t=1-jan-1982:31-dec-1982 ytvar - -let tlo = tt[t="1-jul-1982"@itp] -let thi = tt[t="1-aug-1982"@itp] -polygon/over/nolab/thick/pal=gray {`tlo`, `thi`,` thi`, `tlo`}, {20, 20, 25, 25} - !-> polygon/over/nolab/thick/pal=gray {912, 943,943, 912}, {20, 20, 25, 25} - -set v ll -! Plot the time series. -!---------------------------------- - -LET tvar = cos(tt/200)* tt/100 -PLOT/vlim=-20:20 tvar - -!---------------------------------- -! Locate label position on time variable axis: the coordinate at the start of 1985. -LET datelabelpos=TT[T="01-JAN-1981"@ITP] - -! Do nothing but set $PPL$XFIRST1 symbol at the time axis plot units -PLOT/LINE/VS/OVER/NOLAB datelabelpos,-9 - -! Make the label; left-justified -! LABEL xpos, ypos, justify, rotate, height "text" -LABEL ($PPL$XFIRST1),-8,-1,0,0.12,@AC Year 81 starts - !-> PPL %LABEL 17905.00,-8,-1,0,0.12,@AC Year 81 starts - -! Draw a vertical red line at the year boundary -PLOT/VS/NOLAB/LINE/COLOR=RED/OVER {`datelabelpos`,`datelabelpos`},{-20,20} - !-> PLOT/VS/NOLAB/LINE/COLOR=RED/OVER {366,366},{-20,20} - -! Do the same for the start of 1984 -!---------------------------------- -! Locate label position on time var axis -LET datelabelpos=TT[T="01-JAN-1984"@ITP] - -! Do nothing but set $PPL$XFIRST1 symbol at the time axis plot units -plot/line/vs/over/nolab datelabelpos,-9 - -! LABEL xpos, ypos, justify, rotate, height "text" -LABEL ($PPL$XFIRST1),-8,-1,0,0.12,@AC Year 84 starts - !-> PPL %LABEL 44185.00,-8,-1,0,0.12,@AC Year 84 starts - -! Draw a vertical red line at the year boundary -PLOT/VS/NOLAB/LINE/COLOR=RED/OVER {`datelabelpos`,`datelabelpos`},{-20,20} - !-> PLOT/VS/NOLAB/LINE/COLOR=RED/OVER {1461,1461},{-20,20} - -!---------------------------------- -! Now lets locate and label the maximum of the variable -LET vmax = `tvar[T=@MAX]` - !-> DEFINE VARIABLE vmax = 12.72093076292341 -LET t_at_max = tvar[T=01-JAN-1980:31-DEC-1985@LOC:`vmax`] - !-> DEFINE VARIABLE t_at_max = tvar[T=01-JAN-1980:31-DEC-1985@LOC:12.72093076292341] - -! This will define $PPL$XFIRST1 and also make a mark at the maximum location -PLOT/VS/OVER/NOLAB/SYM=17/COLOR=red t_at_max, vmax - -! Use a centered label this time -! 1.02*vmax moves the label up a bit. -! LABEL xpos, ypos, justify, rotate, height "text" -LABEL ($PPL$XFIRST1),`1.02*vmax`,0,0,0.12,@AC MAX = `vmax,prec=3` - !-> PPL %LABEL 40081.00,12.97534937818188,0,0,0.12,@AC MAX = 12.7 - -set v lr - -! Define a dummy track line, position as a function of time. -DEFINE AXIS/T=1-JAN-1980:31-JAN-1985:30/UNIT=days tax -LET ypos = 40 *COS(L[GT=tax]/32) -LET xpos = 220 - 50 *SIN(L[GT=tax]/22) -! Make the basic track plot -use ocean_atlas_temp -shade/pal=blue_light/X=110E:40W/Y=20S:50N/L=1 temp - -PLOT/VS/NOLAB/OVER XPOS,YPOS -! Label every 5th date. The labels could be positioned differently, using -! the 3rd argument of the LABEL command to control centering. Or, to put the -! labels a bit above the corresponding point location, add a small amount to -! the y positions, for instance `ypos + 0.04` in the second argument to LABEL. -LET tt = t[gt=tax] -! Loop over L; at each L we evaluate TAX_DATESTRING for the time step, -! and compute the location for the label -REPEAT/L=5:60:10 (DEFINE SYMBOL tlab = "`TAX_DATESTRING(tt,tt,"day")`"; \ - LABEL `xpos` `ypos` 1 0 0.09 ($tlab) ) - !-> REPEAT/L=5:60:10 (DEFINE SYMBOL tlab = "`TAX_DATESTRING(tt,tt,"day")`"; LABEL `xpos` `ypos` 1 0 0.09 ($tlab) ) -!-> REPEAT: L=5 - !-> DEFINE SYMBOL tlab = "30-APR-1980" - !-> PPL %LABEL 208.7339387413628 39.51271135265888 1 0 0.09 "30-APR-1980" -!-> REPEAT: L=15 - !-> DEFINE SYMBOL tlab = "24-FEB-1981" - !-> PPL %LABEL 188.4897123753973 35.68534797467977 1 0 0.09 "24-FEB-1981" -!-> REPEAT: L=25 - !-> DEFINE SYMBOL tlab = "21-DEC-1981" - !-> PPL %LABEL 174.6445516747008 28.40135534264319 1 0 0.09 "21-DEC-1981" -!-> REPEAT: L=35 - !-> DEFINE SYMBOL tlab = "17-OCT-1982" - !-> PPL %LABEL 170.0101127410977 18.36629087569217 1 0 0.09 "17-OCT-1982" -!-> REPEAT: L=45 - !-> DEFINE SYMBOL tlab = "13-AUG-1983" - !-> PPL %LABEL 175.527551028677 6.552192101033334 1 0 0.09 "13-AUG-1983" -!-> REPEAT: L=55 - !-> DEFINE SYMBOL tlab = "08-JUN-1984" - !-> PPL %LABEL 190.0763927948022 -5.896578890096701 1 0 0.09 "08-JUN-1984" - -FRAME/FILE=bn_labels_on_taxis.gif - - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_contour_conset -! err696_contour_conset.jnl -! Ticket 2351. The PPL CONSET command had stopped working to set -! the # of digits in contour labels. See the setting in PPL LIST LEVELS - -contour/i=1:20/j=1:20/lev=(-10,10,2.125)/set/title="CONTOUR/SET with PPL CONSET,,4" 10*sin(i/3)*cos(j/4) -ppl conset,,4 -ppl contour - -! This should show NDIG=3 -ppl list levels - - - LEVEL TYPE NDIG PEN - -1.00E+01 DASH 3 0 - -7.88E+00 DASH 3 0 - -5.75E+00 DASH 3 0 - -3.63E+00 DASH 3 0 - -1.50E+00 DASH 3 0 - 6.25E-01 LINE 3 0 - 2.75E+00 LINE 3 0 - 4.88E+00 LINE 3 0 - 7.00E+00 LINE 3 0 - 9.13E+00 LINE 3 0 - 1.13E+01 LINE 3 0 - -! Now make the same setting with CONTOUR/SIGDIG= -contour/i=1:20/j=1:20/lev=(0)(-10,10,2.125)/sigdig=4/title="CONTOUR/SIGDIG=4" 10*sin(i/3)*cos(j/4) - -! This should show NDIG=3 -ppl list levels - - - LEVEL TYPE NDIG PEN - -1.00E+01 DASH 3 0 - -7.88E+00 DASH 3 0 - -5.75E+00 DASH 3 0 - -3.63E+00 DASH 3 0 - -1.50E+00 DASH 3 0 - 0.00E+00 DARK -1 0 - 6.25E-01 LINE 3 0 - 2.75E+00 LINE 3 0 - 4.88E+00 LINE 3 0 - 7.00E+00 LINE 3 0 - 9.13E+00 LINE 3 0 - 1.13E+01 LINE 3 0 - -! test CONTOUR/SET; CONSET; PPL CONTOUR settings -contour/i=1:20/j=1:20/lev=(-10,10,2.125)/set/title="CONTOUR/SET with PPL CONSET,,4" 10*sin(i/3)*cos(j/4) -ppl conset,0.07,4,,,,,,1 -ppl contour - -! test CONTOUR qualifiers that make CONSET settings. Should exactly overlay the previous plot. -contour/over/color=red/i=1:20/j=1:20/lev=(-10,10,2.125)\ -/sigdig=4/siz=0.07/spacing=1 10*sin(i/3)*cos(j/4) - -frame/file=bn_contour_conset.gif - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err696_subspan_mod_strides -! err696_subspan_mod_strides -! See ticket 513. Axis is subspan modulo, and strides -! on a plot with a larger region than the axis span caused the -! shade plot to smear out beyond the edges. - -define axis/x/units=degrees_e xax = {-82.96,-81.46,-79.96,-78.47,-76.97,-75.48,-73.98,-72.48,-70.99,-69.49} -let xx = x[gx=xax] -let yy = y[y=4:20:2] -let d10 = randu(xx) - randu(yy) - -! previously smeared out to the plot edges. -set view upper -shade/hlim=-95:-60/vlim=0:25 d10[i=1:10:2,j=1:10] - -! similar behavior with overlays -set view lower -use coads_climatology -shade/L=3/pal=white/nokey/x=-180:0/y=0:30/title="Overlay Test" sst -shade/over d10[i=1:10:2,j=1:10] - -frame/file=bn_subspan_mod_strides.gif - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_plotvs_mode_label -! err71_plotvs_mode_label.jnl -! *acm*3/17/17 Ticket 2517: -! MODE LONG_LABEL, MODE LATIT_LABEL need to apply -! to PLOT/VS plots. - -can mode logo - -set mode long_lab -set mode latit_lab - -let/title="|Roll|"/units="degree" abscissa_roll = {0, 20} -let/title="Wind Speed"/units="kn" ordinate_spd = {0, 0} - -! labeled lon/lat axes. Units of "degrees" is taken to be degrees -! east or north depending on which plot axis it is drawn on. - -set view ul -plot/vs/line/vlimits=-20:20 abscissa_roll, ordinate_spd -set view ur -plot/vs/line/hlimits=-20:20 ordinate_spd, abscissa_roll - -! These modes turn off lon/lat axis labeling - -cancel mode long_lab -cancel mode latit_lab - -set view ll -plot/vs/line/vlimits=-20:20 abscissa_roll, ordinate_spd -set view lr -plot/vs/line/hlimits=-20:20 ordinate_spd, abscissa_roll - -! Explicit units units of degrees_east and degrees_north: -! degrees_east draws longitude labeling on whichever plot axis -! the associated variable is drawn, and likewise for degrees_north. -! Setting or cancelling the label modes applies to the variable -! units not the plot-axis direction. - -cancel view -set mode long_lab -set mode latit_lab - -let/title="East"/units="degrees_east" lon = {10,20,30} -let/title="North"/units="degrees_north" lat = {-10,0,10} - -! longitude axis on the horizontal, latitude axis on the vertical - -set view ul; plot/vs/line/sym/hlim=0:40/vlim=-20:20 lon, lat -annotate/norm/x=0.1/y=0.9/siz=0.1 "long TRUE latit TRUE" - -! latitude axis on the horizontal, longitude axis on the vertical - -set view ur; plot/vs/line/sym/vlim=0:40/hlim=-20:20 lat,lon -annotate/norm/x=0.1/y=0.9/siz=0.1 "long vertical latit horizontal" - -! longitude axis on the horizontal, latitude axis on the vertical -! but with latitude labeling turned off - -set mode long_lab -cancel mode latit_lab -set view ll; plot/vs/line/sym/hlim=0:40/vlim=-20:20 lon, lat -annotate/norm/x=0.1/y=0.9/siz=0.1 "long TRUE latit FALSE" - -! latitude axis on the horizontal, longitude axis on the vertical -! but with longitude labeling turned off - -cancel mode long_lab -set mode latit_lab -set view lr; plot/vs/line/sym/vlim=0:40/hlim=-20:20 lat,lon -annotate/norm/x=0.1/y=0.9/siz=0.1 "long FALSE latit TRUE" - -frame/file=lon_lat_label_controls.gif - - -! Restore default settings -set mode long_lab -set mode latit_lab - -set mode/last logo - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err700_vs_plot_axes -! err700_vs_plot_axes.jnl -! See ticket 2477, in some cases the plot axes are not fully drawn -! 11/2016 ACM - - -USE err700_vs_data.nc - -! only with PLOT/VS plots, only with SYMBOLS not PLOT/VS/LINE -PLOT/VS/THICK/COLOR=red/SIZ=0.2 lon,lat -FRAME/FILE=bn_axis_vs.gif - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_vs_constant -! err71_vs_constant.jnl -! See ticket 2318, defining plot axes when data is constant -! 4/2017 acm - -! The axis ranges had been set as val-1, val+1 which -! worked poorly for large or small data values - - - - -def view/xlim= 0,.333/ylim=0,.5 ll6 ! ok -def view/xlim= 0,.333/ylim=.5,1 ul6 ! long tic labels -def view/xlim=.333,.666/ylim=0,.5 lm6 ! long tic labels, logo corrupted -def view/xlim=.333,.666/ylim=.5,1 um6 ! plot positioning and labels are corrupted -def view/xlim=.666, 1/ylim=0,.5 lr6 ! no plot at all -def view/xlim=.666, 1/ylim=.5,1 ur6 ! no vertical tic labels - - -set view ul6; plot/vs/color/thick/line/sym/siz=0.2 {1,2}, 1e4*{1,1} -set view um6; plot/vs/color/thick/line/sym/siz=0.2 {1,2}, 1e5*{1,1} -set view ur6; plot/vs/color/thick/line/sym/siz=0.2 {1,2}, 1e6*{1,1} -set view ll6; plot/vs/color/thick/line/sym/siz=0.2 {1,2}, 1e7*{1,1} -set view lm6; plot/vs/color/thick/line/sym/siz=0.2 {1,2}, 1e8*{1,1} -set view lr6; plot/vs/color/thick/line/sym/siz=0.2 {1,2}, 1e-2*{1,1} - -frame/file=bn_vs_const_value.gif - -! With constant data value as the first argument - -can view -set view ul6; plot/vs/color/thick/line/sym/siz=0.2 1e4*{1,1}, {1,2} -set view um6; plot/vs/color/thick/line/sym/siz=0.2 1e5*{1,1}, {1,2} -set view ur6; plot/vs/color/thick/line/sym/siz=0.2 1e6*{1,1}, {1,2} -set view ll6; plot/vs/color/thick/line/sym/siz=0.2 1e7*{1,1}, {1,2} -set view lm6; plot/vs/color/thick/line/sym/siz=0.2 1e8*{1,1}, {1,2} -set view lr6; plot/vs/color/thick/line/sym/siz=0.2 1e-2*{1,1}, {1,2} - -GO bn_reset -cancel mode verify -ooooooooooooooooooooooooooooooooooooooooooo -GO err71_vs_lon_over -! err71_vs_lon_over.jnl -! PLOT/VS/OVER does longitude moduloing if the xpts -! variable has units of degrees east. - -use coads_climatology -shade/l=1/x=0:360/nolab/nokey if sst then 1 -let/units=degrees_east xpts = {-170,-150,-100, 100, 150, 170} -let/units=degrees_north ypts = {-30, -20, -10, 0, 10, 20} - -plot/vs/over/thick/siz=0.2/sym=19 xpts,ypts -frame/file=vs_lon_over.gif - -exit/command -yes? yes? yes? yes? yes? yes? yes? yes? yes? yes? NOAA/PMEL TMAP - PyFerret v7.51 (debug) - Linux 2.6.32-754.17.1.el6.x86_64 - 08/20/19 - 20-Aug-19 12:26 - -! bn_ps.jnl -! do not use /text= in def view in PyFerret -! do not use ppl size in PyFerret - -! define a 6 viewport window (modified definitions 11/92) -def view/xlim=0,.333/ylim=0,.5 ll6 -def view/xlim=0,.333/ylim=.5,1 ul6 -def view/xlim=.333,.666/ylim=0,.5 lm6 -def view/xlim=.333,.666/ylim=.5,1 um6 -def view/xlim=.666,1/ylim=0,.5 lr6 -def view/xlim=.666,1/ylim=.5,1 ur6 -show view - - name text xlimits ylimits mode - - UPPER 1.00 0.00,1.00 0.50,1.00 edges - LOWER 1.00 0.00,1.00 0.00,0.50 edges - RIGHT 1.00 0.50,1.00 0.00,1.00 edges - LEFT 1.00 0.00,0.50 0.00,1.00 edges - LL 0.50 0.00,0.50 0.00,0.50 edges - LR 0.50 0.50,1.00 0.00,0.50 edges - UL 0.50 0.00,0.50 0.50,1.00 edges - UR 0.50 0.50,1.00 0.50,1.00 edges - FULL 1.00 0.00,1.00 0.00,1.00 edges - LL6 0.41 0.00,0.33 0.00,0.50 edges - UL6 0.41 0.00,0.33 0.50,1.00 edges - LM6 0.41 0.33,0.67 0.00,0.50 edges - UM6 0.41 0.33,0.67 0.50,1.00 edges - LR6 0.41 0.67,1.00 0.00,0.50 edges - UR6 0.41 0.67,1.00 0.50,1.00 edges - current viewport is NONE - -! some variables for plotting -let a = 0.8*sin(l/10) -let b = 0.6*cos(l/10) -let c = sin(100/(l+k)) -let d = l/50 -let e = k-(l/25) -let f = -.5+(l/125) -let g = (l-25)/(k*35) -let h = 0.1 -let m = 0.2 - -! illegal plot commands -set mode ignore -plot/i=1:10/j=1:20/nolabel i+j ! not a line -plot/i=1:10/j=1:20/nolabel i,i+j ! not a line -plot/i=1:10/j=1:20/nolabel i+j,i ! not a line -plot/i=1:10/j=1:20/nolabel j,i ! differing axes -plot/i=1:10/j=1:20/vs/line/nolabel j,i ! unequal lengths -contour/i=1:10/j=1:20/nolabel i ! only 1 D -contour/i=1:10/j=1:20/nolabel i/j,j/i ! multiple fields -vector/i=1:10/j=1:20/nolabel i/j ! only 1 field -vector/i=1:10/j=1:20/nolabel i/j,j/i,i+j ! 3 fields -set mode/last ignore - -! notice the default window size is 10.2,width x 8.8,height -ppl list plot - WIDTH= 10.20 HEIGHT= 8.80 TKTYPE= 0 BAUD= 110 - WINDOW= ON BOX= OFF CROSS= 0 PLTYPE= 3 - PLOT MODE= A - PLOT FILE= bnplot.ps - -! enlarge it to accomodate an additional 50% width -! ppl size 15.3,8.8 -! PyFerret must use SET WINDOW -set win /xinch=15.3 /yinch=8.8 - -! turn on metafile (enabled 10/29/91) -! commented out 9/97 - instead set in bn450_all.jnl -! set mode metafile - -! draw a plot into a viewport - to be deleted (check hard copy) -set view ll6 -contour/i=1:50/j=1:50/nolabel i/(j+20) - -! 4 frames testing PLOT output -set view ul6 -plot/l=1:50/k=1/trans/nolabel a,b,c -plot/l=1:50/k=1/trans/over/line=6/nolabel d -plot/l=1:50/k=1/trans/over/symbol=88/nolabel e -plot/l=1:50/k=1/trans/over/symbol=47/line/nolabel f -def view/xlim=.333,1/ylim=0,.5 lm6 ! redefine longer in x (11/92) -set view lm6 -!ppl axlen 16 -set region/k=1 -plot/l=1:50/nolabel a,b,c,d,e,f,g[k=1],g[k=2],a+h,b+h,c+h,d+h,e+h,f+h,g[k=1]+h,g[k=2]+h,a+m,b+m,c+m -def view/xlim=.333,1/ylim=.5,1 um6 ! redefine it longer in x (11/92) -set view um6 -!ppl axlen 17,5 -plot/l=1:50/nolabel sin(100/(l+5)) -plot/l=1:50/over/nolabel a,b,c,d,e,f,g[k=1],g[k=2],a+h,b+h,c+h,d+h,e+h,f+h,g[k=1]+h,g[k=2]+h,a+m,b+m,c+m -set view ll6 -!ppl axlen 8,6 -plot/l=1:99000/nolabel sin(200000/(l+10000)) - -! reset to normal axis lengths and prepare for a new piccie -!ppl axlen 8 - -frame/file=bnplot_4.pdf ! Not an error in PyFerret -frame/file=bnplot_4.ps ! Not an error in PyFerret -frame/file=bnplot_4.eps ! Not an error in PyFerret - -yes? yes? yes? yes? yes? yes? yes? NOAA/PMEL TMAP - PyFerret v7.51 (debug) - Linux 2.6.32-754.17.1.el6.x86_64 - 08/20/19 - 20-Aug-19 12:26 - -! bn_batch_metafile.jnl -! Run at the end of the benchmark scripts, starting ferret with the flags -! -batch bat.plt -! Produces nine metafiles. - -cancel mode logo - -! test viewports and set window/clear; cancel viewport -set view upper -plot/i=1:150 sin(i/12) -set view lower -plot/color=red/i=1:150 cos(i/10) - -set window/clear - -set view left -shade/i=1:15/j=1:15/lev=30 i*j -set view right -shade/i=1:15/j=1:15 cos(i)* sin(j) - -cancel viewports - -set view ur -plot/i=1:12 1./i -set view ll -shade/i=1:150/j=1:150 cos(i/10) - sin(j/12) - -! polygon command and palette - -cancel viewports -polygon/thick/color=red/palette=blue/axes=1,0,1,0 {1,2,1}, {2,1,0.5} - -! more viewports, with pplus/reset - -set view upper; shade/i=1:10/j=1:10 i*j -cancel viewports -pplus/reset - -! cancel viewports when viewport wasnt set -! and set window/clear after cancel viewports - -plot/vs/line/i=1:314 i*cos(i/20),i*sin(i/20) -plot/vs/line/over/i=1:314 i*cos(i/30),i*sin(i/20) - -cancel viewports -set window/clear - -! aspect ratio can be set - -set window/asp=3 -shade/i=1:15/j=1:15/lev=20 i*j - -set win/asp=1 -fill/i=1:15/j=1:15/lev=20 i*j - -pplus/reset - - -! Bug 1396 fixed - -set v ul; plot/dash x[gx=0:20:.5] -set v ur; plot/dash x[gx=0:20:.1] -set v ll; plot/dash x[gx=0:20:.05] -set v lr; plot/dash x[gx=0:20:.01] -cancel viewports - -! intentional errors and ignored commands -! set and cancel mode metafile are ignored - -set mode metafile new.plt - -cancel mode metafile - -plot/i=1:12/title="after cancel mode metafile in batch mode" 1./i - -! set window commands are ignored, except for set window/aspect -set window/new - -set window/location=0.1,0.1/title="another title" - -set mode/last logo -exit/command -Ended at Tue Aug 20 12:26:33 PDT 2019 diff --git a/bench/test_results/dsg_points_plot.png b/bench/test_results/dsg_points_plot.png index ffa3c52af8e5af2bdea79269602da7bb785d89a9..e95347b659ff44e24cde117542fb116e7a2b2dce 100644 GIT binary patch delta 32858 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 EFIw8k_5c6? diff --git a/bench/test_results/dsg_traj_1.png b/bench/test_results/dsg_traj_1.png index dfbcffc66db8a3effebf7b24e536975284bd5378..85801648eea85f206d151b1e2e2f796ca8c7de6b 100644 GIT binary patch literal 108279 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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

&BNv7x@Y=bIv)FCZ0@)2#^ebs*~nDO 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 z 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 CmuIX1 literal 86043 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 Y;ZD7G_gfwRDAMmM$*alb%UtsNU%yKtf&c&j diff --git a/bench/test_results/dsg_traj_3.png b/bench/test_results/dsg_traj_3.png index 01c0cc4c7c0cd23959f7f13e0957b5b22a0d9ee2..a7c05d9a74d4ec15696b03ecb1bc31aeeeea461b 100644 GIT binary patch literal 76690 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

R#uH?r|B_t*ntkxvy^kq$j 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 literal 75513 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

8@UwtGM4a~4R`yWWF>{O`_-;VR71 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%0A17>ek+bWgd^QwG++1a`kFcON;3K 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

buz5dU89>2qg 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%0DDGx#}rfaY8&OIOEqzv1O;0WaiA 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 AkpKVy diff --git a/bench/test_results/dsg_trajprof_traj.png b/bench/test_results/dsg_trajprof_traj.png index abc438b8c1b9ba9bd62171ce246c3a716b4a971f..7930bae4673a4f6543163005ef26c2ba288f3a04 100644 GIT binary patch literal 81266 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 literal 77455 zcmeGEcR1GXA3qLzR~jf;k&IME6tZWw%Fal3HrcXgL!vSw$zEASWkhyGA!N&zkd+yQ zjNjwxbARuD?&G+R-|_qB{^!2l9p%mCdY!NHe4fweV?57SsD|2wgCz7ML_|afFI|+^ zBqG|)Pein7 zAjm)Yr~cPg;z*g6YA#2mNnne_r08VjWV1lkq-d+`dl!b?xHb`y|ILd|`~H1Jv`ubd z^}p{C|Np-r^8dd%2_q4cttsTkgz~DZtAADOAtrVhu3T@r+hzIw{rkY}b!(>!|6x-7 z93tcV**Q5m2L}fg!x>JWJlVNkRasS4`{9GEoLr6JHM(FyK|%j3Tb>KUbG-$%U%rHM z*#3J>Prt?Q-#ovMuPEH8+$~fo^K%p7#dZ4h`r6vF%uEV{d*saAr%#{WF*zpeSjVfP zrlzK-7|g-IXK_(peowHeL8+qxD<2=9nVFe9F?a0j&z}s(jwzq_wXk@Woo#(jhTHIM zTX(m6XO?QpYKMx73b#phWx&?P*Hf~ZIy$VZtnQOv7+p=JrQh}B8w?Cs)&?KU zxDdf4=EiZE&v8(Ml=J})H4BE><{9$agJ^_ERaJHGom+(k{r&w74HtEFzt+{&$=um% zN@rzin)c!am$Q20`)jF;TU%R0gM++eV@qC*jg9~P_n({C(8x&Or-w)BfU*`eHa3TuMw7%nH8nL!NJz>TXMztgiurG>96TnJC>2;u zTHzV;{@UXD=En!L))p2ap`mHALJ6vwnge+|E7P4t)~#07)>Nz_;gjRz+B!PjU%v)k zd2k$qUu?P6oM-<1`*&?l9TO8~$v1_Cl(e)aZ?5YoDUk%5Qc_aV1ydL_;#Rb^wL?^c zgM;6^c~c+3oFd|qURfy-Y>MR-pwDmdmr~ZyXe+dAqNb)UFZsJrv*T!Qzxn+mDHT<; zqhd$$lP6DxDm-5ql)kKu$31UvZ|~i^SN@W#tLu#$MFj;*naZ)7o14`dK^T*?36Up% zh1tjZG~~?Z&v0^X3^Go;l}kro{ey7HeDE~%=r>h^SWxVpH6MnupC9C315z_>lnHng?1%?*@F1#TO9y$Rge z66WHv+uB$i|FF2YINh1u8pqErAyH{(O-K;cG;LNrG|S7&SFT*aSh~8qw-!fh|NdFv zF|G^|5)~ImK)xx{H8mX_t-Y765_e*}VRdztoJr#NACJK0af~4>(x|Yg2*XcKW-8-l zWu4gG`il?4zUk}hLpWX0(9qD;#dy6jhNJb_KYtOc@{{I7(O>Nu7wRNc|1;$F94dD=D6yCMbNf+wd3jDw4)(@%8=E}6 zq8}4Yv0E6fEbfKqo$!BrMci23$zSVq!7;J1HC{{Kamk#)hK7)aW)f1;z^&D)>63$+MB2-j=beTtu?QL28yg#lst@EZGBe+}j4AT)@T8B| zg;KGrB_1v$4IevkVyBGjEE^je7gvQ<3q8r*+on(7zI~gO_2WJbmqxZP$=&qybWH;T zuhMSnd^TuHEj~O zMMFo|J3K{5e%}oCZ8evt7ZECRrm6es^bEZia4h~`Sw&_0<3sX~%V>-#n$z4s2jg9s6;^O1=-3hNZd3k5T z$4VWCHac7gMYW2!zq#COwkMy7i3$6$igACi>C-oFRtHL*r2N*}lDar0C5JwJQuIn{ zZdSQ*c;A9TwL6E<&o8QRCKX7O|gjee*XULr<_C5)6KlR)({*ORD_b* zW-VjYQ&3(mcIe)njkOyhiCnrbCH&SRpNi>R+e2h#VX@L}rD(}Zmz9;J`^p$;%JFMB zwprxk$HiVtW-RVX%F6f1jv_le5wz=Zn>({VOi?^wbFD2+4oNfgL-z|^^_25N&CL%D zqnjp@MQ{8VZ;T$7m6DP|v_F5&si5$2K8P@>E2@!k?ms)T)#-xo1_fQCQ_R#%N=n+< z{H5;T;86Ugq~tdy+lI?@V`Un#fkiGXER+pD!_Lmm+wppp8<|s4QSrk`vi;X=#ZisY%R@)JU!O%wV_0sbob*M=xq*t0gHJpUaKrpuQg#cChSE z@3;4N7#SH~ym-;xiJdlF?#{)-qkgUa_U&E%{#z6$6(dOx9y};1A%WC(_W~(~?U%tJ z68^`7EVaT*A{l$5Rcfcwv^KbPsPx&hy5{CHVq*Ho_iczdGn5t;{aRk8d|FF}-- zWA!`fqO$Talmu+#3t{x#>s2!|GXWdZ>{?o#=JnzJWxYWn?lWCjN&FuE{>nv|CL(_l z3#*ZcUz4poM&$xhQZ>IGC~yBBa3W-_@Nh*t6@UMpo*t}WqL73Bt3<||PTGiyYX85@ zEiDQP3a6>>$HdU+FRG@h+1N}iPc-3s=g7Fu5MFh>c`skSEG~9?ck{oT_@W~I=Zjb? zWXPqldQUc@BM)NY;zGyXB2-*B$ZCJj4b)rkp_Dep(9qDlc>cW2m{}@7KtKQ$TVDQ| z-P{Uxy#OEI%(9uAY-)EHVLFHHdp`_Sdh-hky8rsok`xz|^XvJG7oDA*-CbQM)VFWn z-g}UKe022vgsYaOX2_p;@x{&c8-NW)Mnl7go~hq#{#o(CtUy0dhIDDVlbwR%(Xdhz zFWHOy{LId2$-fGF-+3;K)koaFe_u>YOq-LY#cXbJ(sQbfWw~uSC}bL{b>OK zx1H@Ry5NGop9sOTXU}S%<>DgUdVxwE85z0 z^z@3DtvD63T6qNp47u*($Ht0>NBMtXb?Aaoc!dQ7a&mJ`>DX9U9z{oY-u>!mW>y%u zv;FAg1rJk`(V5xVX*aP4A7?(0T@VQu7Z=aY%=F(}E7(_a8B_Ojex941UD&qcnO>0< zDu}nQFQF2@d>IaCQ5NJgV_0R^UuOG8xpy%CWOR%8rIq5eG*gscOk>J<{|_#S@2^={TbGtDAlW7+C5bO>1Wltt z8yXr4lXtKc_mkkJ`seXhpPg<0)?fk8`9XyTM<~?so{`?(kTH>X&PvoTYxS=Wvec4L zG`OIFE8&D?UUG89)l7UtX89izJY<$P&rK) z@7yUy#-yGaqa)mgHum-^-0KsuCWy2)bB1~&LqjujbK>9qWj7`}GL^->jgLHdW7B?O z_wL@Cd{P?ZEs3V;eT~gYHg!z%0g^7vG zmoMkX$KA#oC@OD+)h&$Fn3TCrAmsOa{`Kn@?OA;bdwY8a2S!2((V1`-0hUH}LpiJ2 zTqZ4ZAgad}i-@2*_u<0_Ghk6dH1IwJz;w@dzvaC2{Ug3a+~KOro6hn%B_$=ub@ua~(8Bb471DYTsCyDZe zkKH@ONH5}iJi4*Cw6w-!j^5i&R`vrbLU(t!k&zLxl~H4JGlSrD>gYynVEvi^$#u7d z;VOeN*Gw#8TwGtgpk3Qg=@)rQYHGqp5-QyWV%wFX_}|X<-&gOxen5r|&5vM`TwYoN zqF@%X@5O5Ax3;SA^74vcOoX3DASrjQ|C)?Fqvr}Z#T4;%lr%Iv9HUI;HNCw^a{>E0 zFONaUp040T;^W6%!&Sb>c&D8A6-BT41z2zI;U)XKGEH?ZH6gF8tgO5|zOsk+_L!Hu zyI?|#qpdAP^*hE7qt0z49|0`uC{N?ouuqyMuITDUlXtYW-JI#_>N*@7tCUGeo0gV# zt9H~`Byncu`mNar4+;^slvW-tu9G}1*kZ^~MTLb}zmPjCvtM6T9c9Ii^QmI2*8H!| zj%B~!!T|}^;Sgj+w?1zPrgFDkuV||T$9Enw9LmNAN2du12<$iE-|+28upKS^hGf6= z?`8M(r651QTm%&rl}m?usda1eWsb-A<|EJMrlt%H4wR-3E}NJjV3wtw7|g)Q(KND! zFG=F#%h-kGWo3X`_4V~BqBlM@H`^2PsT3i9V@F8ix}!J$+ugtlXbzTCr``;f@VT+E z%4hX{&f#OnxXzwUdi1Eh@fUE<)=H;(K|ui!N4&V_%O_8cY}^VNTYG6#;pXm+r^(d9}Q#lb657`Tm)I)YND1fmi{BoP44C3P9jfSC?DUld}#?EXR+(>*`toko)@5 zC_&P(nTGMkEb79;^5@W%Fgzr^YF#JSy);k(CC?&nJFmJ z($guKnAGfz-dv}ln0b6!3q?(A5YsPz7oZ%~T* zmz|pGJo=h@gk_4IiBXpXa?N@?}<@L&>k9mk@hK2LrB&Ud{l z=g=!T2Z#KW6y{*l7gzErd%Fe)85kH;(liW>jP5ev9&WG6?k6Y5v`Ts}pX%4f;Mmzq z?fVJ|Q!DACZD8Pw@zsUza#rZGAca_0mUAdKgu6yjX}O*m=&<8C5DJyBV#^qhzxFHd8$T?hv${c*r&9CI$-Qr9uqdTQ>?6SoJP(AP?6QP z317#gL`0B_twyrQwdv-(izt8&F(xwq*ld2VtnOG^Mg|r!Vr>V9L!$LnE@d zSRmLGOAU&Szy!3V3(n2WHL3|+xpJ&o{SDc=8l9)TTRH&h>g_WqNC}{TZ@bGv(NGeKyh3f=K_!!272$f{gR8tGb z=K+=q2nrJO0saWOUZFU01S>SWesZ9%FZBNXCowS;tatAc7>c8#qx>afHYL+ zufG8cZqMDtMJB?!C0@|_3xioFP~=gv;Ke|R)?~@($jGY&W_OX%rLB(8(_c3?m-CAm ztoHY<4`a$o*4O7`V*{<$;gZjI=#wRDgt{a>}w#R&k`>b%39p2JDZf&)DFWFNG@8yO^Cqtt! zJ_KYMxr4Iug9i_qf(}rLrBKXFPg67shmRrgoZ8-ykd$l`UR6sukB|&y!VV5&6o1mY z@}uP#&|d_z)OV49iO)2Ea4QS@>X(qf5$uQolF(bNlYbUQMu4L}1RcodFKUctPk8#2 zfP%cN6m4v6UEJIf#XY$%7h((JXH@DyoFJ}kjB=Gp&GrbL1R)362*^1ebNzS6)&TMR z{rwxe^{uU(MyfO0Z7eMEsrrax8va3M@pILpB4z&h)H4%I>nhIvltO5 z4oExgc8yb%r0;JiJC;^fGgDKkcZY)Pu3txxzvs<+{W@~3Kt4?a0|ytcGb^}mXIEx8 zkFfa^c1-u`)vLzF=L5I>NbW`@CJt_NBaNM-dnoQX|N3ekm=^E^)p|itkbF(R)|X_- z2jPvAzwSYG0swhdTf- zD=Thta&oSeBTVO07QTJsMV8`7@XpCaDp?VazwC)G$ z2Sg89uLhw9kc7xuYcCg*w(8OQz+VK#uid8j^Jk^v+{{b`5Qum0Qk&xX0L2kZL#Bd{ zC8npQ_FGtiS8HXf<>%zQbCKZTaY8CVd79tsOG-@Kdx(LKl2Z1ueedh{pFe-Dt-Zsc zhY|`>1ep_XE>xB~RvdSV`~TYAeUL#!BX#V7GZ@vl{Jqx6gt)l02hM+gJ0QWiPBb($ z0K}!$gIll(cWtdtrkqrKC>?Q-jI3eD1c2hsd#{a^+{KG+I^7)|lnu>n>d6e$)OBM^ zkeH6q(>EkQ_&9P_KghNE0WA+nu?Ulh^R<oat1}_~N4T35gS3NI4xHnxpl$ z4#*0?UxyAIlE0*=xHq2YZbLKEdB28hyr>Rx8SNknq47DVA$+)j8z4S85*D5zGgSHi zed1LPK?YTL3&c#qi zXBF^q$^{XKLabr+`}drIi_6mTvMWQqNtKU6Mtg&xfwk4GTesxDl$+M>y~P~o@O{Y( zjAZH0AKlBBfpu7h4;?rVilV&l->cLyWnNZ_-|a@_^XKAA|G|5gz^p z{G!cW`O+nsuh#Ex6O$e}b9^R6%w5UApn`w$`cNxb?Q3W`-)&Lluwm}i%BZjVRlj{J zLZ898IP-IEPT0Oz`X{0Ym7infsZ!?NJ$nu(XliLqjE{#T9;g!D4}6EJjp0fzJC3>O=bC=JGJHRv*%}NP$3zm z0whqmWz!&KBX@)|ikBc8I83;fWvizgA}22`Ej1}HQ}FO8!BPjCYICl3ET=p5E*fxhSH*wfYq+K%~(JMX`NgmrgsFP3-)axefI z^12WMtS1==<)|E4HCndJ9qwC67?pj32#yyM{E~#+ZX>#vZ0TSU7vi!C`J~Z4GrH zmFeE-=qQvy&;nM@pnLb!lf-mjI}8nNA^X%>G$_Y%tE#Jey13*%f9|uncFsHO{-H@0U5^tIxE4=CfcxCg z;Oy*dv+xW$P|o}1(vbiv8X87$HqLAf4%{b%MCSzG(VdE+hr^!Su>*1LUJCN^43O9u z8L>J)z9h{qEJO_Nq7M_Y{*rj8W<+cO$rK|R7sd4M-6$rA;h1i$!{^pkYrZ%nKjUgY zga;5?9Xmt!!iTHMWVIT?@{m%~$B}nx?~$`BCTns~U%uQfbioXmG>Rv+qT(-j(>XFZ zRg>|UKoCz{zOia$aA=5G(x+=(1j0psM~AHOy)1sM6flakCqn6UeSJs$pXF-LKz0NI z1i`tiYfGICnb7;ERFc|-QagaI%*;&ueYp${K(J|@A?MUa>KAKBk*F4R6wnzS$HZVm zH8gQ#u(j^qcjz!H$o zp6+g)YlRV*<-Dr}Snpl_rdaR&XCCL~QZk!6?gBx0}1&jfWYsceN#Jb;CqRpH!uhdw$X(Jpo+s36f%D0LEnC@ zKR9x>qq|$7Dnla&?63c|DS~NNY!k$-*$|48h!EI^dN3=JlZS`X2)g&~bLR>WSr_Ex zgMxwtgoRT8f>HvvS@`&c68uL$+=ZuTO7~-Ovh;fQbI{tPr>7=>P!Zw4l5FMC=5!uo zpTgjf390wPn7S3X4k?8nHwLNV!2{A@Q$YHTj*eYBrw9D%BY;p76II+MY`31A=HS@x z_F$d@c?>c*4c(fjX_0ZGPGdDkpf|nQJh(&}eSKjgm3)mnu)*4SbG38V-O01m9N=hK>Pu7N~T$GfQa%95SdJmsu z;h_EuarbM!fiCp0#KcPHQCWyu)6==o(NHj#WrE0(56jBR-j+>^tcid8_;DMf`mW(G zAtxT+f@)Xo|A0~uZVvyPYXPld(q9{jg3y81{oSdANKhz`a8Rs*xyXG)KGQi%PnwqNn^l85T&4Y$!cygE)QW6reKmk?N7VZnnKUxxWUR=SRNK5&O>38<< zNEWoa0uL5k3HIo~F{K~hzsvg7-VY5`O_mUqkQjXbo<%~!uP0A0M~bcR#-tj83R0Un zUDmT_E6C3P08}PDSRDvvn}HL^9=ntuL>;8#y}7yi2NowSEiFK>y1KgdZMLH)79c(o zMBkk|0NJQcAT6O;hk&X{?&2p6j{vJ%uP0Nyw(ZP<-(p4wt=0o-A+SDj7%&806g3o( zIrju7P_SoeaJaa*pqimvKv-hF^B%c$Ezb+wLoT}$JEa}2#d+jK08)>qK)eJsC>uV^ zvuBa)k;nKf8cG}n+QyJq>gwx9-ny8hB0@Ko9p*d1U(4Iv+UkUABqJlE`_d2;?3jcX zZvm9=Vw0Kx2!wbUa+f}TKJ)$KgJ?EYSp!Tez~~h4+{%pICO9DcJBsbL`cZmTDJIJw>#L{>b-Ry1@K#0SpjG5wf_xj6-6b#`==3-MCbz6NkO@3nXh`*%(UvEX?9x|r+u z{^wd(udX3d@Y8Sx(dDlufjXL+{RQUtz=0q#wI+%G8E>S*n!44 zS@b5moDgyX@3ypO$u`I2-JXNslaVO=}){raS@0L2sRu2YUVu_R+5TJ zO4mUafH9y!|Ni|u#a%hadI(~De}BB+S91)U>q=fjQ&UlK@hM>w(n-92{5V2K=Y>^( zeA4AhRQnqBD1Dtg^lyPF z2zdaM0}=IH+}v!fx5CqD8f<~eLO11%jJ8nM5xKy;ATAJK9JXuh)y>T_-VIig?ain? zec748q|l-f+&U^cy7A99__6Pv4L}x!W(=2i1@6}J@{Gzw2&Wi}u+y-->c{ck6DLnX za1Ch<#r}Xn9nzeqicK`#dSX|Sea0yc*^ZT$^k7kwBR zk%9);*B8f8Tv({2uATzf?lMRjTO?n=fn8d1TDjU?EhZ4$>+1Fl1+kVu%cN>*5)u|R zrz>%tP=c3y=pGcSS0E$(Y$s2g$Wl#EbX0y46$Le2W{Z?~R}MCs-}>^MedG;yAvhAC zAbbh#lYNN!3*ii*j_RE@#XtYOa&kC|-=O~U@@k|Wkig#x3Yjfjuff@nXH5duGpove zf?9w9ehO#wg;{TDIRQTfWHmLg11=5JBX6L~=*DJdcS%7nhyRw z>Lbm`%!wPi<^UgL2eKh7G}nUkugoG z{rX13yvS++*&t-1Nn;sE0!bFiI2NcKqB6J@rbyi5r!)AotE&$v^Rr9Qz&uFfJSNo= z*ntSc=Q%m4!m?hakv*8T?X5p1s1iuvCA7~UK5WKlfFO`HE@XEC&SPh8$z@v7VHY*E zwzfj`L53Xsm1}oCU=yBy&l{6DL{d%)+mfaBzb2o}GJY+fHV`A!=^kX)y1Jl-X0;?S zLANQ5%^v zH!)JEf)F3EG7?O$R;dk>WYRPwBqX3jw&iP*)k0WefqA`Y$j!+qJJODD`O?@3JaWA7 z7d|pozAQ7-virFX77!U4uWcX??2~}MbHbz9S?xA;l^4Rp!(SO!o!D?66$w~hwshlp zB`FflqhHK%?%X+1(W7DA>~KG=Fe;#-sUlcCu}_~)EiCNl=_<<0Tj2XJngB|~p#EJp z*474XFfcS!8LR+MD66XS2Q3p$$cRr!K&_L4CI+c`ISt4KCOjrOw6zfnkDj9tzxazy zdwPhWgcwx$z}``GkOIp=PCz~!I#4JHSwY6L3bLG}`KN~n3#zkzfI2YYE->5s`u?4o zvPrMi0K!#OJ-D=U$vdW%+9y*@$soC4rk54z#Rhps)xT;cOkrX z6gBM9w;itd^oN6n7qU`Q7vYjUeoXCFG=OB&*%`eiD&VtX0|t1@KUAQ-zhD2_Xa>xM zvoIppDCIDJ-rn92vFscjt6e8PBWBx+Ns(`%48vP-0^h^EN=iyzRwj#4k_4rNQi9t& zd*%!TIFE(lv*T+Pe}B&%6LYh1aXF{-2P($twhJu-0|Ol$e4L#3TPI%`mhp*-mbHjS zAXP$qmT@RxVPV1GldnbMCuP5fDv8AO7nnpyuL7~NgvTkpPW#b;-QK!oft03f;AXJ1rAc@#9;crU zHGP_qF^2D81GXPqn(5~1BA3z8iP@CXzjEb>>d`yN;GcW;?aOeY1Hnem2O347ee4f{ zl40>($;ZpVK{K5lnNcrEJybHeGfXTwN9x>!%0Y7?R6;^Gnz;ujXy)z%i6 zs|jjdo|u}t$TZ56_^!7Z005Q;~VDq$dp?TLYgYv{tNlvY;S9W&q_Lf3fnjkH1)um$$9ASA>sm83Y{* z7aJ3!ki-PYie!M|;5b})X_&&D&v$hu28}>yBSanmoykOUMkK0z>h!U|Ja^!T@A&tR=kZ3lHf= zr>FZ&Pl1sCUS1~f{PGXbQBe`w+uOl_VM%wjx3jc5ow!*)){-P1`~Dib`66GD(|3Oy zb%v`1ri}}HNs)3gH|Iz4`$DcUQe;g|PYrT(F;lZ$qz(zyoZyL}^!=QeV14}{EUX2S zs4Bt8d+i;fQOsK`sKqLRUQkI(i~scL(9Qd8Q$hkFD-lxLUYl!6;8du+p+`S_sI3K8 z#;r8^rkN%fa({(jgQiX-U%2(PwY48VW=0oz6^jZ{*-8ri0>eR)gt+n1C9!@?Pha21 z+Z&A`zaV?tR7;vkbHv|w0^vdj2|?9?Y?7c=d{gMrNCnV;%hPjXT!{iAB82Nt6#$%` ztEN00&Mc*t>~o-aUw^ZhG8E-hsuLjTH9I-loCRJ4wEOTO8GX#9?9TSN5`65UmxQOM z=kh!z8mMwE$#L=9`?)PEhp_k8A_Lu!v!HH*gxDd6K^)N3&{#wdPTpz*Vo75hh0GX< zh(1X^qa6}BS}1^hiT4)TUcV0U8XY}{->^U8xj0F4xEaEJ!tZau}lH_!l z@-198EFa_@0Ca0~gn$4@1Z;}52cVix{`{%3Qi2N6hx&!c);rS!LQE)W-?L4xUhM^y zv~GUN!p%L8z#5i3REQ;ps;~nS7+4Lu?EV7>kjGJ3z5V^G(6U5m>La6kron+J1Qkal zvc(eQ5*QhVh7#P|+#(`$?#j!ns|WY*Kkmsvtp+0Que7?d0uXpvIVL0|Br%cUt}LNt zlblom(-|EfuQVupYCA+MqJ9jSKtM={GHEUnx;T76eLX#tpm`)k{0&qsf0AG0E>=z~ z3ERfQt(9~gvN4k2rA$qvsTzC_jbt!_aI;YtIQO%I_PLC)e+mN$zK?AE!%Z~B&F49YuCV;JyPL9QtSCrG>fADnaE)4qZ)8Kk22$F#I=n+k=c!IiJQdl@+q29uCt7#(Yg8Tlf zRX%T|mEV7L!DzOZ4Li4AYM~_nzVmZY2 zCE-nr?$TDjiIGKwSy_qQ|FbIUgR54>*lrye6C()=5FzU$ei(23wh#7aJ@ONvTI$XT zo~)iM07j^NgXQkZ5ZK?oy{fD0i9S7}a8qoniHQlL;VROHVPU{z1^$13t9>~<;Ei49 zCbost`{BjJFbAjMH~J7qd{I_czfcqqsESMv)lk3MZyodMv-ld45wr^0 zr>vENLJ3LWBrP|Pxl|K`=8(J5j8mtN&O>G^k32q3wrKp~({rugt-y`?o4={mRv#^X79l1dD9o^9ZXlIFFcrFKV5SElP3|RhP zQhSv3zj=SC@u6!Z$NB%B0Op3DBcGhRjIs+i+NS$4;0}7#B{(^sKYJ#xr*~AfJ^VQY zZeyg3f`ZGium%PU4IEfI%YyL%q3~8N}9pgHzw& z*#pW#HDWkq4Hk>BOJBzNJECI(X|mFDfhnbxoP-2fld3~n=jg~rc|-*TV?<ScM-6bd$Tll0XlI9t_Ll7f>iH+Y5ap|9u2@>KE}>NSg4^-mBlI&@ zbG%LHI|r|rnD{R0uv_8zi27RIysB=Z_EYrx4lzh8Gr`hOx^xMI9<=O?ab<6J_bLPo zpk{bv0B^e<%(Ea|>FMd~KF0tGfmmUiNneNt#eQNYz{`s+dFcoc2x!6~w@A?_J?Sh$ z7Yq^_+%!RH^c{-0v|JJz?|l?x_X`{@34TH}QfR5HqCzI-q@wZ=ul)Rc=mCrVp=$s zRldm^^s}NDQ(uDN(7q}^c?i7kuc6V+ZO#V6lUBbKU?myx{@T>^G(8kU6IAFGD0o=zx^UDe^w51EKMxBTkwT@898Jh{+S|~R zVf;ed0^P;Cp+w#pya=(!(ZS*D<~Q`Ld>H746wtXn33x~s%*w`=m6?e)j*==PTnO~9 z%#fP`y`&6Fk84LEWoA&&qyRXA!!WUiTm*~24J}#{g2#m3!io`G>c^7T-5pjxhMP%A zMzmJkEuTN@7g}5b!vi6-xBrPHM}JBi8!c@tP(SUFBXBjaD7d6YSI%W5!!J!u2CuKl z`1?yHv>XXoB#4Yd6=>cqe*Jn8pbv`=CzLLDYx7qt^Lf9;U%!08e)aYH)upx`M@7jR zzdU~KTzgN?m9_Wi4{5k@XLUc4vbXm-iYdyDkf0zg^+Yj4HD2H}JNqOs10?6KJw5aN z+Qm4`glSZMa;CANf#b{>2=i!9q1xQq8mROnbcXxsR1LMy9dia!>iMdQebT^de&MvE0?;aP;zFs5AlT4bAujHZiQKEztM)5H z>+@Y%#L?HbwzoGX;T)?cOAvbAe*3J>(1a?=0ahmW(TNLO z3~n(rDv6Il%5klt!?lpW-uw&*3|S-e0;xY%W17F2#xMiLYy(!YdY{a z=9!<9%KJ{_jgTlCG)`{>tsAFKpSCqO@BDG4U@`(n!JN|ae#c}GA~s+Tib9gf zlm3e)gP#(6TKGFGeTrVuuJHdmBs;|g0BYaJ>ZEkt&PSYZn3u@!-Z#e|)&|jj(cN9+ zdHLe{BMnAhQ%h?JQUC7GZoZ;cp`O%0$$RGMIey&2zN$(L#2K3jDcLNw8jpW|9Y`a* z@7us$PkyOmT35EWvV%o`^u)5Mlu5cXscNst*oJO3o;=?^x!w3>Z85i?boalFsQ$U7 z1znWSVb2%acEYvoE8msUDg{mUwP`JmOsOS`$f#Vp^1mK7w0a@$0FkBgPu_0+Sv1}B znWjfOqn@76?b7A;q%ZTHSuMY=(bpdt7fmFQJKg{HQ}A#Y0bCLd!2_KeA3w#zvw*&+ zY{J1FW1Mr-m;}v)@5?9^P>DVj1SMpObA+>-z;NiK{=K@2Qp||e4Rf0sSx?OTH=i@;&I9BpwD;z{-C}OJWSsC^WTk)-rExCL7cLo0Wn;xY&ann{p4kJ zo>r%v3e7TlcMl z%dScKywV{L?Zf}l9a+-GmV#1S%ZpCed$2oC&UHt*{ko{?0R`d$;#Y^PBswe`!g0rfyh4#$ zYw2l(Eh4oaieWi}f^lv|Jw^6tKJCE7uXQkIl==y1F2q9ZHUhVFNI*(#ig#+L-@|A^ z+4RP0eL2HV9H*x{)znDa^IGiX9}}|pJxc8}B8hA1o6o+>wl-x8KASdw`sro43O{QM z4+ST#ws;36eB0qbtL;@!UF&$>G9~R5sRNYZV_3^-^l-Sk7QS;3AghJ>h5iR!Jv|up z4^4Z)&v2RtTRWm;ez@u{M7NNL2zI5QI|Xq@X*>fl%@3us+bhFV$-^09&-=F1`({U# z$2XpPq-MQ6?87sCNkNbN(*a!mrsD?}KiH)3Mqn2JI?H>5U((-!9)>)(vp&hJjXp?6 zCnp{jmRqL1z-gX8dnuTiM}}tx@?{eAba^c&NXs9^QJhlvIOrDVSl-OW{m0nW#a?Fk z=WOi6sZ&GlaZD;>GS}%J&!_y$F+UHj6oP7z&WJ70nkag5(+#Ht?=s2FYbh&F zWGhYtXiB7W zZDZqpNXRuhD<>zDt5@lmnbp%Y2k%SggW?FuF((VJb$2Z{1V|p)l6s4=7Xq|a_i#Yug2O=?HZbPL8E0} z9>?+cAK@Qx&{84iMO;;R53ShwN9jw>5@SZ*n8Mp{=@@Dg-?&LW{q&{Z$0peTpGM@T zjvk@(F|a>7Sek>Yr5M{JDLwm_Axn(8x~WB1CR)o?|eZ5VK7 zPi~ngpPBOI4NEF^`zU_y5hLL@HjZNkLQZp;=$kZ+y4ZFZR|KDUMtwH>IbT7}@hKU; z7ol@Gx#F@H0*k9JOPwnizE5C5YoB52PdrsWs-95cofuVWD3maClEwW$3oD~%oM%t6 zaOxWxn4jVip%~uXDF&YS5Y8G$goWU#HFE>POVi2(+cz(_ToN zCG(PIVMR2ZcI70n{mR9QMnrLXw3m5RVp(*rY7Noy@$;SZR=}SV3gVBKrv8X8$qBki zJXOqCIha{jCw`t#a25|n#m0`5FdpM8uGpE*Qn!3#Ed1*Q4$04!mnn9}vPGsdHu_a= zdu;NmGLmPtUzFT^bZMTOYcGEFCKGb)SN}Jm{N`OiZ`L(@)94 zTQn^H3({kloa~*j;1fre#p)SEkKdjRtBKpHn$WlN(NJOpG@N>;dgLb3|E22K~#=TSy@N zK&8{r)@G3KdQE4m6oj57XhCQX9I2~&#?OvSKD!Ybnyb`A-SxV9sQFY5V_GX7?!8rS`1_sz8oi3>jR2VNC?)TK+g zg@sXuX?WTJawnuX#W_>l8Tcel8kG6}ExCL5BQOmw8BQH1;0QIw3=!>a3eLMbw#UX) z=;{-|y59e{vNbhFL|A{aT3+thznglbDI-H;+PY&R;Z*8y+wp22!&466hlSA#-Z$Jq z(uGoqOh1(igZb&xURZQ!MTFxNdL0TGJjvO`pU51fT3610*Ruj%kKwhUdN?girTs{1;e@TE4Li8IAw=YO8bq z{%vI*Li-QgT^7Di;;pPTWhJ%9I>F(xM{N_zjQBml1upuZ$jLD3c z_sh{wD5%n&banFuHU#KKrJFgHs|XueQN{YcDi$d@?(}=L$(1r{zFdVoYw5UP*!;FV zVg5IWPMkHU^g35onU$pof3MNv_w3gN$Q}^Y=z>u<)geBjS?$v&HXMM<%p_J#clk4K zgz|T&6{w*!M1w<&tnb71o`^V9Q+b8U_dkugEL5KjKilx@K~;0=rH5UDH>r_E-wDrw z+Gi++EiW$e3JIxQy!eintmQiNg%YT(o0~Y)L1>x>K?fJV+dAn4&zF6+>u z)iCg1d~@>f=xS;bq)>?68jXlufN`8nL(|z|?LxHGGt`$l46vOz!3TR861W*18#i|V z94b6L0gZUGGc)Kust(-Q{@-;`bauXE3CvQ+-~Uv*^w4vnfY_V#yO}fDjh>FxYxLrF zv!VCj8T#PT)&D{F!7IP13JjpKvdtWwoA^+Imn{ZY9?`X(*NIAMwBfq^r>XiEGV&dz zwBF~o_+w8ub6d06z0}EN-H+Bm@?twakmx@|c`P!E%<3P}KKs_|N$L4D{x9O{aWZV- zy#Uk8{J(NxPK0dPzb8)5^PJ^`ov3QJs=ere#&Emcn)gdwa+EhJmJyZ*J-_!EzI+j0 zy|1(PlCo|h$!W+JH<_s|tcF-w*+YS}wKNY?8dlOE+ z;`bNAr0;v2`n9w%uv9DHjtY8mmCT~9qGAnY@aDopbVPMohGktDnlmgmpQz}0!S62! z(US-}nqO3%@cTy|rN?x2vr*F|Hnk|8j(@>@<8kt>N{gC*+gLi~I9$Y69M7}5hX#Wc zXIrKd30L1JT>j`TXn3AE>&HfV@$^Hm#~aQ0BR$=pXldjpChW@-uI1+acrWl<;ODFT z|EArE84WnnTES|WA(i>By3HF_Jg;*8?jTW#-uFn6D+If2Ve`Re=0`DagaM>Gt4hjhKEqZz!938G-@2~VO!XqTm8;KsCkY&^`GI{}I(I!0V z28C--O(kZpgO#M5$(3y&dpw9~Tgv;uB`0$&C-cr3HV;h~miVeG5iG*Nwm)rqO-!y- z|Kr(lmN_z9Q3>=@nF zs>wuaD4Lg)l=$#u1@y2MzlWxYBVIK-+rGD?dEuL)Q(@2Ey=bsT!6iKV0ct+%u@V12 zjQ48e1Z+Dd>u*~GA3UUWf#`yA_#FCUukglDvpXYn)zQPwlO!q@w4|_P$aI8&e)6$b39H8{`mIaksZgO@;4s~ zj>nnGJy7b-;OFD|Y(y5e^pdz(`hk*;qClGVvXik|`nT@4MHk$s9}=;3nOWPv9PplYo}GvzbQcPfb-ILh>ruBtkFw0wL(65xOZRxW|bHo zCUNp)ZC97JmR8ZnVO%)4rK2&2=%!Dm`pJIsM%@|9LY5;x4~HkEl(F8u_@P1(`z#4Pz%Q0A(1&ID z-BW3Vj|BgO+5fKe@wXL(S7`wCMXQT=c#eGf563sv%#^pTz5LkxFYGD=<%@NOxBrm- z!s1`aI&~nkgNW1vVg9vQGi(n90M6@El%b!S5+qF{8ZAmz?{3YLMIF`0V+hdi$~%3( z#lrG&?B4|Qj-ylaAz>%_i=zH~E!-nDRDGF^^3aUAXx;5C)`2H7Y2S=aLZ9CY=THQ_ z#Wy^0#>w5yr!~$uvbhb1P#`G8SF%!*sHzUUUf{4#Op6cMb33CtEu(tW%=6V(OV-c) zV!By|t9*jwqrH2J9J*Q3|09y#*Bmc6%YTDI#p;!hHgO{v9&Hd@qpDBnFTbRB6qRuQ|NUh|SaUM(hgtm@x3nhd1_SK{9yUvKdztSV-ws)9#7m+j% zON`R5BGw7Z3N52r5$xF zHJ^OzdSU&-$;e%Z_t0qX!P4m$`v^-U7W~mH%-F$ZA-DT|K#7WP`=Fhg5mD69Pmiqy zWcYTcnEtK_`Teqd#`VX5{QDONHxoXG9C38WZq=y&m!;p{vIssWB1u)8oSXH8FMZ;x zw$bM`DT=d?&FylA+vU8G>{dh~n|VK36(&>Djv5h9nW_k!moL5@KXXhp4$FOPy>aW{ zL);$=gF$Zv9ucO!?-c(-m#gL0!z_2vJ5dO9&|=$%^b5P1!UMvNAK0?3JvP70JpP=pbB)Sfm~hhakD?KSteIeFfx#tPq-A&n zHf~M_*!X7rCO}UW?oRw37z`_QOc&fe_g{V*mH+0wLRx&xEydG?+w#fUWd?KyERWyy z<)HghoxnOZ_Tx#V<5EMl&;5VwZhyop2XNJ->AU+p_W-dgYI|Q&!&`V`XiH6w*w8*!(1fhmXSH;0ubPxlYR>L~JfUuzLZ=;W!SY zr4Ok?T>=vRDntrEH!IMbBH%Mg#uF`X*=-+gDko1;+g|i#i}6hbZ7b{Zw-7H4m^5Bk zF6=);#LJcs4CkG;kTMwx3|A)=?X*fVeb=Ixde3BZzB2%dC(||D+6wK`x0Xbr3Z+Oz z<Ixq68Z0!r#+GOB73$*ZbYul@~{Icz2)g8~Gdq96ED z{1ZWgdM&}abAE<3`?E&2@`+vjGS=w`{32$}nq2wqm1SzFKb zBQTqUss%nb+e2!1gB8)vb2SA&zD<&!ayQ`G$|HpX=LIwc2(J-~Ahba*Pi(motXU2yU4^>3@qLVOC^O;spYC>`J#A|Y{YX>wvh{K`8j zGVeRIf59LGUkJirGb<}sct@P7-MMK$6dMfLG0AA8)g zXFq>eUx-WQbtx7(pu!tXZutC^x^kvO z$XC9Gh`yS~9yCjBP0Vum_g$behm@lCe-pY4yv=&~kmNQ8-z<~gl*n-BQJub0o4!&$ zN7{GS>lUX~BTBPQQ`C#c*==qL-9$<$Jc&CQGoTh^qOW`IN^WY9vkTS{vE$?SsnZNj~!2iyhtcx={!M(x#^rnzFJh6AnoJTrChuL+0%B zEZ1q0Y9j>h{BqM(ui&Ma!G{`8?#st`7K?Ur7q-4JpQhk%#Cv}-r67F}?(2LsD|WHG z>&{Si<72^^EQ2=vk@9KVi+iyu?Yj(ia-z<@23W;QvFFyR5T`#G_}3RTH7n#qW(0{v z@UUacZLY%g(?!lbdas@{e|IEi{R$)DArCj}>YQQj_-T`U=;~^6AY)^}QQf}RL>!xR#Y$kLi9C?WTVFv* zD)$L`cQ;U9Q^$kr;4kBti(Im0)!tfn4jlBmVv}0;cHO3nlO5IyQSMpnbKyc%J&C)~|S#(%r+GuC>>+Sws z{@10COwOPywL@v}*u4@5UZ(B&78bnD`Fe^)qv9U@YHS;?vZstNI{2cqmo6$+USxCj zy~XN4eLhCh7J6>V^K+ip>$MY^8w++6mK2&#jhXHTZn`yG8Qf*#u80r)8JQw3Jydtd z|F;nGJ93P(G6#7(BX+4;vdkJlPW54UX2e0O0^VRq$Qjr{DLF$J1z|?@%4|h1)fNZy zq`;PLSDo|0&bvvDhmCc!Z!)U$Mz1EuM)JBGo&Ba|D#i8MXV;qo2MO_ws&2_pRkabU zc+e?7;Q*hV{b%J1y8*P$f$)Kr1zgF-(()e5(d^OLY`q*a5rUCoEXv4Tc=oONv`MSG zFL5CqN09^V5xXoK=u|SYT>EjzT`)b-kk;W#WD&BPAvE#SP%s8qbMv`-W4l6l7O$7yoNM{=x8~CM0{~eXP1l+s&-`_LK zUm-gKw05ok#dw#}LnIQtK_Ap&l=+3SpB?cLlGtRqm4E7Upt$spsDK3H=h5njcRla@ zl?lZlwzip*#r9MYIsa0V=?Vk=+^y zJ@yDYpf$$C^y0bu$#cjDHjTrIk&pF3gBf^fj3GT^gXY-GOm`a^Gw(RGY?{pcf2wKj zSgXKnC@c&zh%ouoJt!K`RF#BQ3Id2#U@<6|6e*bD^r)mHz&cXyWCM`_zKTu3xuv$2 z);ja)*D>a#i^|L$y-QRoiS(|Ynkewluc}52?sKayi*Y%6M)PpwC^ng#o(a5SKnIR# z8s9>83BpNWAZ8-*u(JTib~_D?y>qFsMQ<6->U+UYoHI6)9Jl=NDzwb0TuY9wtd2Rb zH1#`FB>cMOz9y7qhx<#en+cIf=MW=NhubbKVSyetdf}(c&FKfP7=oLQDi_`sV$1gj z(0l3~dcwL7%c@LLEeXdWXI4~ixhd?~?M`#k0@+|&q-Lsct2!j0^{AsvWIQ`I%XK3t zR&y5;iGu&PXHES z&+b2Zc7GTJ)xo;cMAkd|^x68#Jv;01)%W3>PnlXx>uwxVj5x3zk(}QP7Ev}QIUX1n zG>-b3G8lH@V9dd~{Nt~#4%nAov>53yX%jXGU}Pg|_Y^BU)}))CsSp6=PP-oKzy1Bi zX^P!u3>it)UiNe2cA|f%C>(!MIs6KmZ||L(e5Hi2FN6?96TwXS=zU~R__CJr+q4I7 zn*Xdi{E7IdHhgrw@6~3zRhOZf&y_|20~;wh1r{jT-k8?KZ^U&-?ibCjrrfhU-CtMQ zHl%*`Q@v1#fudM-!Fee~HR6jD>40yos>Y{&=9%wWrI*op{eZzJN}LY$-p52qF^?TG(mc zqdFZjW4*{cEmTTQay+)#LHeqKK&ybdhI`zt(cyoYvfqcEm0im7burm>pMwZ#=*pd{ zy~RKH_9OD%RZ-cjI?*U81lO}lT#=#OM@9J?_s4H)Z<+ejLA@p=yfE{+F=Be*?KZyc ztFrq0jus#JJ$_>|4~pi8QEn6h2SA zj2`DhGRi8S_Vv4{GIy-juf+Aof5IA1>GLt`-7P6-N<@%H%4hzZQpn-UA5X51jd(3f z?=jFl@IJPl?L_b3(C`MfRYlERnD^TJh5dxtnCVth%9@zr^r7lag8#z>*vDynT4;T! zswm{oS62mQg z&d2`Ezrl zybEKDBnSa<%!H)V76>wn`POzf-eLBar-K3a*w_o`zj#=`jZ}~H^c)ouvV##lPG`gso%8$9 zs6w!T-95p%06(?YHj>=I+_XmdRHP!0g@N9O=f*TmKo0y>4SrEM<4+Eg3Ol#7>e)~E z6oV-Zo%1ZCvrV6+Tn6bVwp7||AvwMWA4ub&WQ}=Y;%ZnPNJThwAzAMj8M%;3L?4(b z*dxdwc0%C}zEw|0$4Lrm_7jqTzR<2o-nV0-xtweh#|}G2K{8T`vrf8}Omo_9_J`FD zx1C&D8s|fI34L{sI~`do$U>6tfe>&j*-6CRgi1F6bs&$x9>I^+TW-&h%WnxQLRxrh zE&&0HDxl(k{#AoB9JnhkLGci`a#~YStnIo)ncBaH>rw~2tM8ZUrE0$1c6{Z>%h?O% z58ex{f2Sf@3Z!br-8fLVv2*(!8eKR?8wI%^r7wPHQD4>;e${3xs02?NoFZb z(2b4Ne=grz@qiDY+Ut9oyn-4z++D%PKWLb$Bq?)Sd${pLmVtr=dnfj=*zoWhYk!?U z;Cn|6ir++Ave&l{1-*O!Zo#FV$4fPoJ-*Z8`hFn!rfDo;cL z1Ls5l!cF5pu^0rQygWTg@q2Dp8tUA(aM8%3a3Sapno$U;| zQKv*Ulic5S)--q4*ftKV^KuQ0QXh0~mi{F2IQekcjHvZ~Q{Mobo+Lk7Buy_03apkS zk-WjZhBG{n7V0dNxg+q*`26Jy!>(QF?t9>mzlV`AfVSLgz1IF0K9JCTlwLE>or%JcNA>?A*zH8`c-a1mKN29SPaSqPSR?OQ zE`f!}9rQU?nD_Y-cXPgHC=%2=j~-uQe6~NG_xtKv$hN$9itniZe*x^8>sA?3iUs1f zQ-I-u$GKZ%z@ACc5&y4o%n23QZjKIe96B`xvEvl-wOT?8bv!0-F(v z8V|kln6SS|CTnk0DU!Avy4ZQ-^2QN+YW^Mtnl9kVs{PaS_4cj-(STI~g#j_307mMv zf79esKmBk4-Q_lJNI8Rcl&a17+tNYE8ENc*(Q(6joSD2n0@M zb1jOQ>DA-AZ=SZY;v-<*M-9**IO6~ZT9${qbn6xk1%+jtES?MDmx)IFIvPu!e@{y# z9ST>DaY_XeC2C|jbLZLkT^*Msm^oktY0 z4U7!5Arj)_Asa)pVEwD?`bi25Rd9ftAXFjX$B2oFf=lrOYAFwQcOZr=@bG>5v~Ovx zki3zpBOzClm*Mi?U0mdK*=HlX?UHde(b-A2AR{@cvzo1%GiT!d0ExznA5mD5VSkPk z&P-e(xtAM`8~#$a?`-pG<}lP>{PRabSXho&tRQ;BZwM5bb&wHZI_!o5 z6X0j!>ScJVpkJu0{2r+R!ng;*2?$c~yax>xO|Am!7BDoipKfdbJv&>`??HipM+OhM zrOZ;GSpscplVpw}74j}mZQh~dF7$CH-Lof^F<$@9tCFoNFIef=a9v<`o;SSa;PzpO zWq}IqO8m5ZL@Y&co@%@;wR=;&^N`F>cxuaH3=FzTp!~yc32s8rRKWffH~IYe^JrMv zS}wOpjDR4Vbi!48*%A%|(KvJ~Knt;uVxriB#KXbSaj448dFBih$~v&CIdtfqwSJ-T z>Qci>{CV@KxCP*Fc6vHmO|s61zmKgUK@4F0`|89YiJ_Kv(V@p#cOz+TkSGLUxcx+H2?qQ}{{YT0s0 zQ5>H1|DAg;*F~ocTi@YV&^VZ5#H`iOZsFa%^SMp zJ)%P`qC@JH`Ts_H>haljr?QGU9jy$gz^0-ZzO|GWOO|pF44ai6j`aM z;nC6lM5glU?p>u*qQLZfzjbbH$jv#zyEj!#DfIyz#k>RyQUXiPw9~V(fd@99+P3uL zrG4$g2J893EuZpJQsm~VNWS+eGLbkgw!ric(Ag7>2<n3!FaK_(k8`?9Ldnd*437#Q-KO^z`tliok+ntnhytFL_Zjm(qInGpb~gBjcHE zqE}UQWF}9PEUVd?4c(DDc!9mo#;>AWd^122%P{m&(DDfggT~#s$TIwA8}j`A{(e}R zK-k`>6t9Yy3??xC9}GIgw`a^-3(fRROjgmYfMC=Q3jb)-9|8iJCmku3C>+d5q}}bb z9h4%$ovkC)E}yJXG1Z^^jmL9}XUTHLhQPP%QceU_9NR)xGc;7W*q7MVVWyAqA_$9d zad9wIfGaDwGRoW$00s#U12!o~L?<*K+4iRWxulspef5C0>w)+W9i|z0{+2xZqFn8?i~+;j2R;Aleo`>4D6dT#tCtT*@&5!%UJ8ykME++tV;iX zaE`_I3!9$9(F*wr%4EWb2q8W63bXwCfdL!@e-YFXeW5X?rFi~f`56;Fy&t{dqwOS3 zQv^%85c$j3*7mIbW|C!>IOZ)|bK>TY6uqa;+%XfepRopBT77+JWN$wUG6MXX(9xCc zYJUHI62dqbcflv_2V&Krgns_pl^d|wxNq@kQpHh; zW+&P(n>WitiPEG6neS@I2F&qH!SH=%RS822puNATyU!ir)z?eAiv|-&Qh}cPKDOs? zK2=SVE0}dwgGiRvuPkcmuwJ>qE^%>ezfR(P`)@S2tH82xE-+}gcmI%FZj-=aA)&g* zk8fG7yO}?`clEnvF6E@zt<<6^t{E^R>a1q0$kl)BNEkEFGxqqpkvxWnK8>Pl@v01q zPf}?zB}KzLAUq?+_-@~7uR(CswhLoqg{GqLk>10`<^hYRAcfBBN5Del=cml!xV?+K zPL;Podq4B0nz9Kr(!~C^d`SoC^T!>&HSJWaDLo@;zH1bPA=|f*5$Usd112b_J(TRI zum6gZ-BGG)w7lSmnv6uKqPWg}f5QX~uEbGO=tv!%Sp*l6lBLC9nGMvf{5p|FCA5Gr zW&biURDc!x={1#jLoVh`VKIP?V%@?qP2y14|6tOrP)Y?2N1XoB)Dw3DdGdD2R{rKb z=3U+GMcpMgDB9c;TmSuQ7ZcuMlGio@BfVIX&bBo+0wcTKI36$MC`;gKcUt$KdgGwX zVgHxMJJ7P0&bxQvqkf7==A%)2{2B9D+?g+PmVkRcrex)e9v%7^TkkYqQv1V-fyCx* zBytYsiTHjnJ-0VA^HWK#VrMH6!tJV!E{Q%N8WFbj+6{dbl#JDmW!MX zzK@lNl;jetm=Vi)uKj7=>{+K8zM;>WBr?9f?zZ@E&27hy9Uwskcu`|g&WGzC4lYsn zzB!bAjHp;i?Z+5I6wG%y(j4_Dyu3+UxqwYGRB@R%?HSd``}VXI1u7KKY?a?A6cF`J z!JXmT)YNiE?_X6U`Dk{`z<&Wwo?xgSREtY-|NamA35{c~^?%YKbu0h~;ExoN?#LV8 zKR8%lS9jDss%acp9pNkd@{M`zx%d{;F4GrVp^kpuOWW~9WZB{03~CmsVSRu3QTA`& z0JL~b$#d4GxwMO4E?7e2{U6eL2$%|p^nz7EQBej4WRjAG=w=U=2tkGb>Q#C9Kv$Q; z`v)8t(}IB}Zv*L&nJ|Oi{Iz~sQ>3e-V>=aX7nkEJ z0~GvPhQW_=Q=l(E4&W){!Bwh`o?Kl24eg+2uD5kz^-eo(ap>Sy>l^(iO(!rjn+FLA zi1q)F=lMM-E&T(c2c0~=D`F24In5G?zEEO*A2REeIu5nUlo*;h=v)v zba@&1sQ@ZS!IzP5Ulr*;T)mp+ZaoEul~m0qYVojQ`U%rMH1shc@o8Pb^JNPy{^&=N zH!hcOFpru2J*W$O|Id~rT%eE;vT?TZI zkKknKMH%hm9GbF*l(+6_S5ri?^YeXLw^YEK_$**-Ec8%7_}cIZq&tvj^D|JAd0*e4 zQo&6}R~@PF>R_Ff@Eyz2e|`XI17V+4&}SoiRknGjZOC=HPQ z3u00k(tmVTsAy;yDYn1_4UHUDaoZ*LYiz3KAmcaI#ztv~B1!F@7lTf>v!#W)m*0!s z_f1}&mk+UdQaT0Mn(^mJ?pl~g8r$&oo5-vVo%*}{^QBBWdFRoA>M54V%Mj_z2;`MV zUfs6RV7w;bTVv_5g48rimxYb(**$4E8lZM{fz>C7LV(hcE%?v^3hPIjj7NH0A|8R@ zKC>t}2R8#Hxo#z!uv-0Of-I4s%*7Rs9C+OkTffLYRnwkU zIRw((}wrjwUafaicRcgE-<)p+gLd+@Txtr57(m zjvTpxYF+47$hb8_7Q<(|&2G|C{U+XzIjuH@+6Hf2o-cUwNzv^73bbBXhy8nsbWSM< zyysOt?zKMVopYq{^WJU!ZUN;q@t@M4jl4NGni3ln82G%T#C}N zwwHBW?nDDN3sFb|kF(@MC*D7FfId4WTsxNXI1pY235H@ynnqG0MmziXHDi4%YS z%;i_kPEQXcxMVg)9o!^`6#EW)&HKjv|Fyo-zKso9%<>$Z{~S{%z?Cp!c$kfgXLzd* z`_96(W~|tUNl9>chqw}UJ~rb{ETQBL-+t|35C;Pb(Bu982c)fC=Tc-d=ILl_)AN{S zu}Jl2zx>TfbYF~OO5u4PovvZBM!@ALC`RiN;_k5T_vUsuh z&+!}E!WP9#@2*7%>tnBaEK7TLcL>Rkzxj))6Kbl~+nRgL|G~r!yK?c@uTvC@Q(a#H zt3hvjFD&d@OTje%{gVaRksE8{{2AYje;jFg-9Otto~dy0dZZMEhkQ7!iQ2jF#?{ZJ z7Z0amXw9*PyQ3dEEV^80KI5Yv;mcxsu0r5XC>0=eqBfuak2d{^mKGh)+8=vIA{{1~ zj$8FKvCgfVUJPy1*JEkkNvCdd(9`9+%1tt_taX+r-X$m}4~Gr5Jw1F#&)a@$;wkSv zQ~`jD5d>KBx_f(vU*1T+c46sm?p3PbXw8VAjq{UUaF54qtgNTe8smsaCRMh@%X8hS zTMq`)w1zHcmsgsfo(xd=R_4aI{!eW2fPUg@-$xXQ$3(%UMV|gCMVG4Wdg<-(FDEVjxz`nn?HR)7HVI#T8wgf9$}CX+fnUege|~0C7NNj-smJT^ zyOiht5o&%66gAbJ$fBm?LpL908g?;R9#UD^QE9Wh-fbC$J_LGfR6^w%Z{<+b)im9g z^BbY#-_&F(3hR7K&J(6Ou1n|m!rw&ea15h%!}CG#avi0}gV^mwzA3jdD=E2E+E~e- zQiyE&(zcwhL%%fRat^4G+w(#c?*B4&1W^^Te}qR@sNDYc?rvD$ABTUi(s#1-`H7@w5Elu6{2GRHEjP8Kpu|9v3YI%)02X;}{u#Pklt&L`hLm zHACB9{$zRwW*iai8$V6Z>~M_1plACQANVie*h7^iD@$wMAP6H*WN~naxmi{@dKuHH zb#)o^Pc2+_q&&yla*^ZkMjk!>Ct z$h=4DHS#dl2{nCR*O*o()TVHO0m1Lyy(fRP4Uv$+&qoY%vHax;CL+>Cqxfbd0hoEK z3!7Tba16WH4YUN=KwFr9%X%z&Xu#oNuZrhlSy?O?vQ??PB>3hTQKHLu=X{{TerD}O znJSsag{E_LR@ZVwLl=zWYA0pD5P$gnf^@|iKYE^5W;baieL%5*kH$8TET8eo^vWE@ zL$0C~G6(;bGIG=|$ODfZL;jqQRQ5CUhngN0l5Tjh7prcehh=t!b_pkRbSEt z@Kq^N+qesXif!Gt?b=|8`k~m6x-r;4arptnhvR7>=1jv67c)l?s|kO z;R5V@Nj3Gg>GR)vEXsW;qox=88rs^JzP~pA`WyXM@nQ{SW#J=7Fbd(m8qXl`cbF_e zFo>d(fzlr>eza20pC5)68EdL~?e}1tvp;I5a>ptB6+RcHs0OGc^ZTDHpjX-Pg_0v& zuAVr2HFqnJh4&p4lsSIs!K0@v1@*GqR(aFdf@G?$w0g#pl(0eF9&bC9^Jm=?*VAZ` zlr2A{q*1{?G+*)P{4R~xiNAnPp1Ml|v)wlsdc`3Ipc%7#09UDS)Bk6RZ)t6v5EqvV z8V{PXLOi0jtt6n5AK`I;F9C}+M;7FCyKtu7w&wN_(MmrX5$eo=EYkR8x%~h`OU|4Q zNC{^e-G2}M`f#B$-H!Zun4OI1JIi<3qa7+g8j7QxTnzeh-kXW|X<{q_h{z%_9DW#H z2?Z=lJUd%kf{>{f{j*$|8#6*|3N(;VY=m)G(YdVsEe6Y{*6GTX59DdZlMH84xlf&< zZY?Au-N`#8=Xb>8&1aE+3w?i{MBX0stqw3M^0}8*^y|-I_LnT8$6IeasIthMd9Yn( z;IFX@(}zO1_oCkV4$D!T#He~a@G&scL_Sp#*1s613^IFaM#gShT4DGW;|4$-mXC>a z(2yg;Qy1Z)4}w63f0RAUZS`#_Q8R98-HM4Fe^uPn-*scKZh+A7(armLnQ-U>(3Jsrd?$wGt=*L30&P@7T(b)-!3HCo=8>ioLacFJ+*HE$V z`Ze*pA@76ELAnn!*Ji$XBZ#|yu^Mmser@d5vGv@u=ATT@F!B9Q19g2oNun`u;?KUk z`!}42W~?{bE0!oSgi4AE3TmdM3r#~_CH_ygH!QlDtsY@S8zgZOY41YUtWBM8wdMmq zXAaZ)c6nK(c;BAwTW9$8`}2*+T}!(JCj{AxrWfwN?OeS-E44|AEW*gSCdIHvMTB;G zfe-vIQZmam_HaX&XWH8Scn|dvHIR0iKCp@P&(##yM}BZ%+G*@$+ZFGAl5V&si&L^K zwIW4FaQvoLRjy&E*&QOsPPv(TRIs|eNIKEWHMnk1rA^J<|2LqC)y1eXl)Y9yEW~`6B z%_BO@*{Nz@bG#E573I^j5e<)B$G{#YWpX+MOp#)`vYdkob9u&0&y=QQiX9kvX< zpzbQPzFLLa6s`Uzy^61ZB^C@%{C`azVL6Ue)QcbYAfl9 zxL=1-YP8pBJNT{9$jC6Qlx^c`Y?mL2tsf7l=zn?3QHWa~b~o0gYyN@I0A$kklrB2* zP!VsrhvAmhM<*g6kb17Fi7s?HX}qrxZoADgTte3rq$P@^H;gL3 z#wm}4%hhchgIa%eO}#wkcDXXe3@GB3?v%^O;o~x{QvSJrN(;%{=?~=UF#&xPC%BBm z0{RDlyg@LN`0ybbw!jizp}_;O1^+c5VC64gUOcLKSn&Y!gFr_P=x<1*mn=O8zi8DJ zmL4^7Vd{*`?BE6NrFEB)n}LlW9aUv|exDQq>FAr$>PlC4EakCpz5T{3#Q6Z0XxgnEo*H~-Pf%?`2rLxc*F1d=~LO*puEZ`v!?ExvwSny}(( zeG__jA|#ky??i3IgW*#fJ)q+Wtfl|dqIk|+0WPxo>yQ0jb@k(38k{koOfMF~g$J-4 z0RMZK(Rj3fKit@1kA#F0wv0=#9U#EUC3|qs;Q#^_gw4A*=B@YCc;MH36X!Ni3&=)j zDg9vt3~OfebK(|8vhW6dLqm_0yL;AM6`nr#7q&pg`;io?KrKNd73FmKQK-}=I$HVN zi+U8P_XgOXpUruamRFK;HthAAiU;OeQ`RRV*T@e3osDxQHSETNQz#zu^!-~-zOYZ^ z25pyI&W+C?l8;n-RhQ+VG}qv9p8eGdzw@scic(P_(f0{DC^V9ZA!+jOKYSqkSgA|# z6p0Dt7=epiAfZ5bMFp$e0X3?$bQLVtx%}QN=o-$_GbH~W1f=DRVM=1A2 zL~eo-Ark)$tm!ydxBV>FZu7O*mqHVdOHd=wCA*~>5FV}DS?~tzqy|f*!o%3=CsVU9w{V8wBH+;0{ zP1u#vLAMX{F#!@L%Z|oh(C8U1bFc_8#ZbuZhgJF>T+e(DsNCGq*tFhO^P7Qk{MQ8l zIv`Hh?k5swECMOeS zZSdU1AShsUgck=WCFqRuVsy`$GsiL60g(5(CBA__wO-aRK*V4SN*WqsY&u3E&yJ2B zF?;_2ti95oS^SoyjePmeEf5qQ++FJWYg{_CP&j-|wtbA-=n7CeOf06pw&wNcqcbi= zSg^ng68<*HZC`&a;|zeSFWfrgi;EY(_9&hYd>E6EkC$VbG5ZafC+I<4 z*E`<5dy<<=75Pt(()W$0fd|FLWl!Je7IN@kt{dy*nWGWiJ5)Tr;HkgXoIG?pJmU4W zpZ4G(U%p+Edv5kA9V=@E%xG-$!k9(h^_C>nFXOaE#{qi@ zUa$5@gDbVqpU0TsX!atSlofPV6(UZQr9D#Ctlfxq$8?0&eVw;wU+v@{{>loz9_-hXi#Gg zJjQ}wMootX3JhaVmB%)eckum?rm(fb@kq+#v3+FTIQ|nz4L%5FXC21$k(!I#JUoEv z&?!hedd~SySUaD-)5dX1D)QIl%{}9#n;hR)tQ~I429G|3_Zi`dn z*?5DwcrD&2(1z9Ggh!D{P^99?;ULa|5olu+AEKzwBtwZNWqtzjCfQrjzr@|+iERSu z2D}}VX)x>sK0W*-ec?Fc1h)N)m*eKSRx2kOz#=Akh z0+tu8yx5B)o5KA&O$h7+Key*Uc>~2pFiNb%z!Dkp#42>lFwJKVGxHkSXN@y3^#9hE zKLY3hhZW1-y+aAd1Z^XX&=SDJLO5bb?rjAqExx9KVbr+w+?+|5H|-Q7-h7CduTWpF z#2*a@pjQp#*aon=G(f{zUw;F#m>mkD#rTVJAXgb1C&=x84`Z^{R+*b$ltZpuDk0l{ z{J0yy8bHC=zxpym3KRwXwrYP3)Tx5?lDKu4=0u2Zu)BWzCOR&N^Iax5)qQcaN$~P2 zABr6*bEtp)n#2Jw3{g0;! z2-S?mvbhKH9W|a`jur>64+bIE`C9z~I?j{6+ zFR){5a{iXAQ;jD6_~h3E$CU+ z!~Yt*^~_Ow+!$DO9m7dNO*#MS<&815xpLW6d7z*P} z^s09D!%=41nTP(*DY^a`^ZSU= zFrXEqg$!dU>_l-4Q!X>{M9UB^qySiOEzAKCPm~6b0P@^^KZwXM`bKs{2%Y>_ug<$t z$$bvlOQXcR=h)s>m~;y>EBElmT3AEAif=J*4pahp*E~WR%(G}IwjhzklL7pymLRsB zLkxp(p|qAtI^`(7Q!V}r= za@?rQ1S8O{U@Q=h8Z;pEPO6g;4J{N0Y~jk>R+i!G&Z^oKbnh9|rqPER7R9c_K6xa3 zNggMlJTDF{%se5OROkmh_R>@QpW1?yN#1;`#qfn$kjbI2pdeVtCWVHoYihRR6C&{} zm|kBma2~m&ZaTO5wFWt}-xlRJ!vbk3?=|VR@sH^T`0OfbEk9kS_pGG1oT)_bVW!~? z?;T8mIlWtz>%2M7Jcy??C+BFG3oBY(;(S40cJI%xg{erlxw1J|tKH{krPFo7n=+YvV?D1 zaE1SHXnZ4By4|AwL5mG=@9$vwM1&SWFfNMif&AW$9#n;bbco%F=if9 z0ua)2vlWhu#t{uA(#0Gw0%9?!a3F0L%p%aofiDn-62?nhI}h`{F?VQ9K#u4`zQ1o@ zGN^e^93OX!;-?T5mw*g0 zCaV$SoiGk?CkH%VkD^}1wV|qjD8>8muuM?rCC5Uf%tg&x*ymx72Rw zon&VpxmPCu3d=t6#Am!swDNFe!f2*Nv>)L+>WaEB!5kEG=zv2Nb;fU-V_gUjU+`zY z+VAl_g5$~y91`m%8WWb&ACaGkBW!Dp&!L@y^=y!9h{o&%%p#lWI*6F<*AB5VZXcL2 z_+b<@q}{h~Zfr~&Jz1DUq8?SOEqN}oi_#xezz!N39(vZW2bdy?76qbm%wo^>aEfNn zCqJmg_J2BhJupRmD%N*E7I3vruXK`@9REyGa> zUIajL^c4KsVbO)G1iWJrQBhM9lUFNwKdjt^a+{Ho0yw~=Q&elrREnF0F5qs0-GR+e znw#EAsqxlEd_eiGxP0W;Pw!Hhf4_KXY<8USxGq5SAW4pA!CFOiar7<<&b8T!IfglD zjCAqw@qzo;4M`JJ>p+_r>@ei%s8#1R)k` z;D<-vGw$Av)ZFR1f&T>!C>ykccT}`^h`xPd!;_p=5gf@*VO>P7=F-+t; z_x%(aTmv)y7`w*%D6;30wRN^jQ@?`HJ_}6Fn*#yozh(l_fCrNplZeHIg&(M9K=SE^ z=mwk$ljgD62Ec@4{6m%?uTiTM*|{R^?BqUcdG0rjx@u(hP2zSJ9aU{1y&k=eg$MWA z0nkuj0(2AG5MH@t-WM?vbZqP<8Y$p#>m8tEQRHAbHksTiARB8UdG5j$pN!wub@r3Q z8(Avp3QI&PaAF8HAsuSGOV(J!+TIj3)^kCOlL53}t*o@u>! zPlZ^aQV~GIf7b78yl{Yz`Dym^l*&qz1AN6KU2`_Zq@mjWc~$cUZ$Fd6qR&qABovO) z@gW$~puwu_a>D9#M#K#>Jw2?I|MLoFcBO)Dn%*bB-P%lRnbtn~7l*2K*Gu6wq)&mh+Q`U3U{+)Qn4z?bMQzu?s$TxR#Y6O~rk7vhpWIZWnR>yf!#_wU>`} zo@H|Ag2KAo32IxlOq<6qQr6K|U$pZ#zXhSAfpvtx|jF(jRL?%ct%#VDH`VHwTc zYy-;V{T%)kJTlIXOuuglsqV`a-8i14*u&~C7rZ*L4$dz|`wdut!2|rKb@V!DazK_N zl9Th((?!wrhcHjkP0Q#iknR#73~sk?BXT)5L>vIq04cdA2Dc=gHPB;{^M9{!YTH_* z>-g96Oszc`p@rsowVyK$4-$N@A}x%{BSuAC|MVKPx@i;sje#@rEg*Qg|NIgZ78Ztd z1p`pS>I;jDh4}d~ZonLqwveZ@%qkzfCVGIr0RR^!?a5koa{JNJ+}*K#dq-E-ai{4h z)iK{|n=Ry$znIY)X)TI#^p#dlAMIVnRY`UoV5qsfyTek0UtorLD<-S%(Fs9|ACq^9 ztQPV&T=vl;c1TR3qQt?Vs)}ru&#fb8OA2p@vdFJDp zUgs~=9^|{GD&_Um2!aI>mW}V8d}9cfg?Ux6qFX65QDEgDu}P7T9CLaQcBpL)r9l5b<;5V z2|@oI^1l$*x4-CoEbkq0BU?ZK@$tK8akBJLTL{R}@%=trbzEK<=`PxN1a;A5y6b5e zN*r8KCw}zD5+=5wc>r8mo0kC`d`!wosvW(zPxjR)D=eWg;+`QHHeX=u*j#|_E-*AS zNz~$O)gK7Ih(Y!EtiLr&0NG{bnG{y!aLO${6~^UBK&3Hl84bk=+~!8f^fQqdK7m}6sIW4 z9wdPek2&xN3qK#-&!4!77*dW4q2>jj4ISb|=x?y%ty~8AWRhXo_~p~56iKrJLnr=1 zXg2X4Yk1@=a=8u4okW(DP8K2-JgF(F~h_(J}f*9A>#0s?gse0lQ-T@4SMrIAXijbNEDZ$Z$ zH2eMdO~w$6t4)lFdE)XcsQxp)tQ6QVyiE!6*ahc4{*rbUGPqv4W5s~}MHam zC&oh-S?O%1eynW;*EP`Vu^+r3-9{OFBwj6E4b$Z(zkmOTPkCEF6jXFfx2dy$1qrx6 z=g;4#l>+e+lyJ-^$0I|!0~7#|wjM$v)LcMZk4Z`Oo)h%M>?08E*K}Z&KG5Z76SHgwffsJ+SdjNoIbdVezkS>7_8Gea1A>k^OsM^b z2S9r+@UH?co3dX2DxWY%HmJcO;QoC);>wB&Hy{VF;mJfYc+ePgPAx4htJoUGe?IwF zI++saqG*ux@pQDrh(q6Q?R*Er#2^>-jr6#^46}%kh)&xW?4qYncv14|C#24LEA9At zwYBLJ$TNH|42uvl*DLknIZO{#gLiKDL?MjjoXS>OgTF#>vg8>9CF$nv9sixopIDF!>1@3Qwj|snNsGa+`iqaC2k*XOY@wu&vYK~H-oZ({EW2>vz;Uz_oVkAQ#?w!QT!!`eoKF zQb{sM%#ig)yH_RA2Blodcb3dw9h!NwTwYY5-|V#ILkm%~Y98IFm!5(0f+PDGpA~Qu z2PCHXRrhr#2a0Dv^jfdoDGPU2NTrb5@(rIx<{(fa53Pu{fkA#&Iqnylx_wxFAinL{ zW2mj2_Vj5f-Va7{aq;mU%(B3I#l#jslEVi4`ojfV5_3ki8u|u}MyVzvi?Y^`uWV1Q zckJj-Rmpq0pU9`>Lb7ZzIq!4*HfojyoH8!AZ%=&r@(|Mq02ETsU3m_e@95ED=$sLr zj~zb_Ek;lOM5JOmR7O2}(IMdDFTwU846Bvy??napdw!lU)twHl2B^oyl@2S%FJHex zae#AFY^{fXiG{M`!%5i_PZvJqtj^urvx(8T>AIw0H4|}Jny%oU(P&VT+dnMi>GKPP>2)l4U)0^(dc*t!J3TAQJ zV+@u9+-kF;<#S*CuDEt&=gj77Yawl1$8v=P7i<1Yor@k#Pg~cOd=g4YXjJ26!0qpq zxngEk1Vnjac5J&86}`7zzFTGr=QNvh*&(}o(Z7w!&a?d&Lm25Pw&2`LMv)WCDvv&X zJDOg<4(Y4#wuetzEm>;c zuKt=A+{R|tG@Pn3<^SI|DO`gs7Tz2UP$Ou!Ugb6eZ?L(h(Y?rW7&r>Wq?Ycxj9LJ5;Wrf!`F9*bN#+= zOB5wLg+#IvvdJbQ8IhHw$O8aJsA`fI) z%!jtK^M3zjVDP#|h8X{r&P*H=*XC_lZuQtXLFUM_b%T8RTI8QWH(rVnjrxQ(I|F3|FBi)rg}Ora7QiDUChlB!pA zeU{Xt@;7GrZ-axVfw@9t^})5SV@8JELjy^KJ{v2TknFFn|0*#PszhRoOmu#34*dh2 zdvasnzI9$E%jPd3B%XU$&aTyD0~>=Pr8bKFF@D0nA{!H=mJJ@FBj{PelX`){+xkIf|{C5^m^%H?@MQwTL1 ze_|t@3UYNfnbh~+Bu2>jM~6p;_qK!>iyf!t8umP8_gL7Htm={uo?M(djA0(^*>T=_ zxmiHxT6-}omI4bS<9(=NrO_F9H+UI`gtMKcr9RLNJ6c2{ygdA+_O*>|Bq|h9Stj;d zKaTBf5RzTWJNMv)4Ew}Qe60U>6ik>MoOjq8s2LU++WRK1wLLuv)q^-PvtSXDo_-Ek zOE_inj+1$!-{yZoiK9$`4i1KDKX2!jA%Tnf_;<_Q+WT1E|A=fk81?4gPGtrr;yheO zhkl{-C+JGhJw)wf|NOAupLJ-SklsRlk1w#n+w4s6z<~sA*YT1Iojle< zLDW$<9^$k=Jb6}3bE!hmlrv_IwUP)|Z>ms_*+PSvonT z-MzbtlOI?L$}oMtIAk{VDSbeRkc^j=9aaH_VXAQp-dDrBt*O@|S1$_|H*WnLf^vCJ z&mjSKnt!$JxXb0sIX)U3wDwWoii>jnyjiJ3Cjj(x5_u9@CWP(k&NNga6J`Jo1=CtX zhp5DZSpuvduBq#dG&BCRPgp(2`kjY#Z-^jjxw181@8g(m_A^!#iD3?oN zl*`R-f9j6MH}dC^O()*CcRm%QGLp7_6k7FG#h4lfr0}j7w9Ww8kXZAF(a6wjYp+w@ zh|B%H{CN8hZ-LJOvBnmubi{Xg#^p8bmAm=|#(Y|EvZN&9W%w_40EA%P`1_OW9HEri znX<{}cC4~h(u%cZ;T5%R)<^RM3Sb(h|EQQlP|@itO1u_(i#Yt0rBn3%%EC&BV@fr_1rzR(<0mUOe#a4f-OXz<)u&6s6pXOyallnr2=HG^JQn7Ar zf~*~FRbbKiCT}KTmyNwv{QSA`F>exDmAh89w$%qOtWV9BWeGkt1_Jf(v8P)C<^?4I zA}8pAM~8+orN907A%!Xt*)`r=?)~lfZnE+%p-+Ie42uZwN^T#GA*E3Go zS*xfsFLb671y4Va zhB<*700u<=94-YC_Z+%A9xp3*8GiO|J#$*)b*;rko*{`M9e6z`sVCgNjcNBsIB3UH zkfLFBT#nCo#BY=|*qV=w%CzzYtq{7Bo716uxI>@dzQo!_NP85Akg&r^B*D&H^%@T-JB7m&nPj# zVtRCeI8e|tp2fip8Jn-g1Yy#6W;-^<%&;KytJo~}*K?0z zAVz_;bP7w)F|2btdDK)3v)Spwr|YE+N7nQ5Hu^N)baj=6Edxav=& z$gyF9fj1*1Lh7hWArrab;p(D0xMkONb`R_6`!Pr)iT8OBGTTRAU)M6k6Y<{fbarvk_np|E{n-Y?v)({1?_dneRy3dD!f5<&&q(J;SjkpGO|p=+dpNK zpMO4;5$n^VzPY);#!gYi4)iuFQRb+P<$Z}J0_G6X^!{WMwbEdCNXKWGgi5^jowvJF z3Q`eF2eBU7oKCMb&apMfL4>)ey7l@+=Apw?4G(6$5JUYpcJA3@wnh-AfS(o~UWc6& z%Zn>u8? zl^bW4qcmo~(i$HR4Gyibe(>*HII+vXCf(H{KcAg#;`M_sZ@8al_SV!;+%4xLSRZZM z@H$gtoO&-kf1suNV^`Gr{BXplJ^w)9Kja6S19ckiyj|(+-56FpWNQ{iH97d=Q#Z6! z|DY#9OqM;<3=n6c&#nBLv#MYpY+s2_+_g7!t?=PVMTU}{B2wQ(JC~_h`?S?}{mp$! zX%ia@n!=Atr`&cP7G+LsG(4s$ND|LHIw>t+6t@xg#awPt-fzh((LBOynVawTa~7=G ziO$|$-n-XC7vh0&`Izw~HyaV(^{t6SNmb7G6#MfVvwwOO%9ks5$DFEq{}1C}G_WCA z&wp5|n(r@tUp4Z-ox4#p z+(mk!FOSXhhdNR=!Xast5t`Q`{svPSI&^(=wx+87ali3HGHNiHec|%&2KP%H-52^h-CfxAM&xO4IhD01@!K01G@#1TKgBw$T z+@Iq*HuOa(bE*fyDPj3MSH1-oDSlneP*JXSg7-?)&MTJ$D_t2pT%kwN83m;i%b#F7 z0&`6?200|cp${-F4E>RVf;r5qeYX^-A5JuM^{@j5@R#is#Em&)skEOYojceNnnvlh z#QgUYTe5R{IH;43MmFW4v-@q zT?@pG@`z-LwXCcjx;!Q}Z$GR{^V9HH_TNG&J>DBMO>jau=vmLEZNMiPR>0ubP-NhE zN3ndc1wfCwx;o~rm$p+pLAItHe8jHUC(1mewsHE?ZdPZ{=RY*O&dC1_+%u11$^Z6! z5I<#i@jw#JPe3uisMJ@!+`1F2VuA5P;1I1MQrOYr71`}|;1TQaYiLiL{j;l8`^sgr z_UG($G_Cg#RJ{PPYUGE$Oo+MdTx@>Esqd#2q(aC_P*~>s0HgNw@BckPk_(D%#l z%R1%@#e@F>sQK;|%Ob*(#am$mcMEk~n8jccGl`%&53TVs>sN~lWpgbBm1wUWc6*^5 zyYZ7aG#1y*!rg*(Up0S{kxTa zL_2AK5}(1JuFUyc=AG-E_{F;)WTOI`!!eJzwJf)|n@=7uf$r?6uAKxV(4w^=TsaF3)pBbzgBhRDP|%K;R#4 zJVl9jlJl95wPh+->^gn@sG_c7eSPiUYGR7mG~Ns^#run#E4F(rCb|Bed--Cwg@j`; zl8kg`;msu6piJGr-{o~ofa$r5X!?G=$?sjQ?;O>dnw{wey+Uq{|IIL!=CdC>Fo)fU zgE4yXj1jNquF6@w3@%NG7Vy7?jR~%=c^3 zMUS8oAx!pOCxV53>!`zsx6=Ep56u^zl#O8dP1{;evPpI%6a*2`zwHuSUy2SS>!5`u z=DucMR1iN|SS-LEH4svVW5M63Be*7VAx*BX$#OloTC&-dO-GJV*J)&uhq#3<9{gRj(`R#5~>qn_N)V2HxyhP z>*jgCoCy=idGzLQ?7K)x@L|L@H#a%yrWVb<9nkZ;*Dw0c^?Lk{zhQMH59K&`%K&V< z4yWC|U5xP8Z;N*JGA3;N{3%2qrjshO2z(HK?t{K9%9mS9q^(UPZ|H-xKFd0GeOErx zJ8XU@sU_QI*0aWJ-u=s(f#ANh~tei?tfS5hcRPlEFn8S{n{8TYP8RdTt_D+ zUR|BFgaa;0ETq2WejDaz&z{9FoV{`@Xk00-&m5`tc`F8Ic``Ql{`R8J`2$;o%67gM z5<1EeFpz?^SMUM(DKK*kZp#t`ZT<>=0%3*H20#=W(+|FtM3ZrTaS=CvEQ{_dcKO8{ zIGkVKylGVXiRIUi`ZM?Tdor_}C-!A2E4ql;r&^D1Q{-b-H>fYjSxE~!rNvW%#BkuH zgs^a1T^+@~IOOg`Ke7JvX9ADDb<`j6`dQ8O3}S`iP=9zf^7`M48$5)&j>ydoF&AjUTtQM~-^=j4p4D(daTxbgKV3(bEe$dwL{$_CBg9)fa8a zUpaqP=Z#}HY8#z9!f%nBhAn}#bPILB#*@e9J{RwsUL@9~WO%iu+Am#Zi;Lf`hzy;m zay{_3U3U>)q&1*lJ5Zx32#}==rQlsLoL;}-77XZxkORx{^EY&NKW%?<0uJ9Ebh9hg zKA&1vR#N@u`!_6AZ7BcY73&Tt1!1^_%GQ|}y+? z3g@w-)hgH&r+ZI+`C1$I=6~`9il`PWX$BNCCC{HfJ`Br3M8EgnHUzV&cI?36d-g{H zDW=X+8Hqmy#r2vW265# zv3b2zcw_w7hRT}HfB3Gxyz6s$?XIVn?WK@WKBFYwRa#6>%AE^hT>5=aW}duazVLVZ zDp?bU{~1fYZkniB(~qq_V^gd+W&geZ^Zw9nm7cFS^J-B-MwI6=+(7wG z{UX7fH)eI7*tuVK3fPGwVrnmSM*Wh!8PzSLPi2QChZZii#w@+`{0k};VCqejj%#m^ z5y%bq{US?D1mf>^krFRi`GfGOm_H{YD{d}VUcFRU(m3?lhf;H6h(am9uO*sJb%rxzIJ$6HA2Ij%H7if}@N4bVf1% zSvdi@uGL>8{*=T^+N%2Z6u#Wy<^67A_)TNtTtj0~3*N9&EY3Ei&=JdXZayylxevb2 zi1D^o_y!X>WZPS4+u>^2b;^1Fp+gW3T>(u_n+la630u;Zu!RZQ*65h5W%)I)x3}`W z_hDo7Z^|fLQ0eL5Pb$vW-;}O`nagO-5HlN0iTUuz$53&xu(E!6;e5n-4qHV^N@}{N zAQ`G2CPTLgGGd$||1}#L!&Zhp^qQpwqDtnyME_!C%gqQS9CH7n& zq}W86``|&($FJZy0U88F5IrD_j`{@zluiYK6t$w8iwoFV@KoiYrT9mbBYphl}`^ma39_HETGD=k6QdjUn{CYsI$bQYlC_bWfjNgUKxTLMx_0XkGv#gb`^) zUY*Y(9eb?WAtFbJ)d)G9}=j|sg5}6o1$&`DmtNE5rQGezabXw_r zZfQShq40ls&sjIQb9GeT@re#usUr5hnV}FP|EqJ+T1IDnG`(>CMympwsg-^~N=ixt zenU(U1Wg#8LTKkGQ}liK07BpZo@z&jC=vu*5_ri@rB{f1GNT&1*{R@5_xNmc1=C1( z_C!cPP|mwrztGL;?s3QFzQlh{a&)GhP*r*rmzc=Qc+dD4pHSk*M@!xcm2fc<744|2 zBk&Lf1qDE&D1*_!WWneSq^n@SpmZlDu%JMd+_MdvSB9Fw3 zrquBBzg&QyIKu5V3t5pHHgZ#B%%3{$kd|1V?|z_XH#d1d0}9S97f4Qa>eow$IaPmf z^eDNMTUZF6@n2Xc*KQaw=L0gJ`(x`>p-NbWhQ=4#- z7U~*06$CV35Z~{c2?53i`2?%x`bNc5Vn}pbMs2TF2%?OedH6s|CXddwl>@F-H8;co z!JktPwT#zivVADgp7OV zbunkP-1Cf1Ivm;Qe%)|DLNVW3^m?X9{SG&|H2!Z9?=GCbDQSVN`!CDu3R32g9UY^2 zUV7?^l+9qX12-q$qxV7G7rbZg#MTL~(ZjGFskr|Zx9;{b`HL@eUV5%1JxOMt`0{=i ziS_+>MWI;6g|4NyGIZdrUQMPXvAYo|Gc{_G7X3q)>2vu~wZC$SrwjnoQR!igKXG1p zQV!ebbZcdHwb3y$G1){24b3+6NDk$NXJ&H#=bRv6iFtb{^6Kw~-e(h3Th$-AZenX# zE0!*L^vT>oyeG_`S_QLjI3&B%NBNj}vu27SBa4+ysj%ggj_5~R>&z5d>F+Q2DMd12 zrWDGlUi{1k|5jzrm{JWUt(U>Kon0a}^o}VA5;e-#{5k#xUUM0#*P-7! z6nu(W$lb)9G%wZ1JUUp-Fri9fcN#}7N!Mc&zMI;*$=^OSzJK=dVMj-QqLmA?(W!t) zW&T9DAE`edi|vZqe=c=9$;Iu&BlDD7OJPV`JGDcXLRV*-ZlNtNi33lpPN3e$^x)ga z3u9(kByTDsS}P?J*N|Sgc8YnslNpi2su;@>cO9+D~5sYId!TH65LK zLsiO-!Wxe9DKhTkNGK;Rf`vT#^CyP&d;r@8aTcbn8qNxwoR&aeq2&bj3IGg_)I`8X zKK-Ur=wbQC%Zf{Fqt2VPnu%v@5>`GhP+Ug2qo;QBR6R5vkOxf+FLY-=gGogj#P%tSdu3r%ujUu%O3p}rQQRM)IAv-|A9kx31jkLl*hjVI6i>4&%E{F>VxA)L-nruv zcxJQ8wVzpHsW+EE8ivmBxB2di?=aE*C&WvQhbk|ZnL&>7mz%!g{Rf4|0Y=ReCun2q zsVFFfF>kN*5DpEJ(aS>-U(U+Oj!1m2e?yDUR$mHSei-9Pvzfn1VAB^>7~kuz2q!0} zTcx;IY)Wf=>=UAO$%@|-Cm+nFK@uq{n#J%X*zF@|c$_E{j6b#``! zN1vlK0d%=}gwo#&c8Z-oSSm6CXqUul-q(2K$WfMp zxvUe^Nm_&g3b-TZb(kQELTLk_x`A*`0j!VEN~Z$M01OWKD?iPuGlRhH*dw~v0k=c1d0Gxx-!A{{a}6RIsolKYd7iJcVH@irn0Q?>6AghOuk;+L^n z90afx2DpAz&K&xpzP?k=pW#3WO6RSRz_KI~H+`4ul8WVivjfT78F-XWZK-%Fddyez z!lV2aw?_<{l&oD}P|yH{mTJ$Al}%-1ZQb3J_Ie-t68e z8ft2fD_5RBe@^%fuCF+onB0MnsmdshPvla_gpjF`27E=ye=CH*_;l3y6CX#u{w=CF zU3LA~DvKMiQ#N+plqAzX!f)nw_k@w8$DxlVRm2slc5!C+pSxnc`8cWQ(x{~1r&)$`7?ryvBgp>`%ux4!36J^A#g zeI7HBNome5E*ALMox|76hF{(V@qRG;E6W?3ng|J$_B44dPV_K?W7*rC%v*&H%1Zfi z##yJkGlnZz8I@nQ(5@u{@Kz$1wcYn9q3N}+8dvV0&fX{;d#j6kNeo7&Grv*yo3p6i zu_jfDeS`fdLmr?iI$>`RZ@}_>WVVMadI61d0W9-zf> zZ-GVE;X9{13E#J4?UcL^(quM$-ym%>n2}`gr;g-hBvU;jp5D2!TOvWrzj7{p(aNya zwTAipEvfUV6r%#yRWdYYo*CSE=(y+D1^D)8>f3Kxk=&uAZp4+7!sK4GJ>s?P2Mx}> z_hN#2xcnOA$ExnCRspZ492I~?1o?=!TqL#^e{OnlvHm}PHHn)^*@*SYOd;uU*2z6G zqz$4c4&9S3DSo-)V7!=frf!9)W$?GjpBHBOU(-jrJGw~hB%x!_cDK}vKhw6N_L&?y zO5(WLZES-ExQ4E-vG;>^J9N5KD3H_xvC!nAuek<>I@A<0QrNQKT7a*3u#n%V9|SH~ zN+DUt1hn?9E>#LB$bo*^T3d@GHG$jIWqyUsKT`13BRBiu-~gNNiZpX?zFkJ`*3Vf~ zI^_7>njHKJ@skMx{H?D+(Q;GDM^}xtgVd@UZvujZ4IG?%n&Gxa^DJejp36K&A#|91C`s4cgI!5UbbhQ>yXA(D!3+qD{^mf%czbqV6qzxCHkn+`}abCxdf(L zSMt7)Ses3D0V|(c#U39Obe)ndc_`LX=I?P7 zBxe?p2sn)2)Hphr6Tg2Ix`-xGefjE`hoynDNJdt+b8JB-5xhpRb8kp$j%0^eoJu03 zUa*Z0Zv|I@4H*Jf9)4ee%|mZ#lK6$&F){6^EnnhjcP$3qw6w7qiekPD`~gOv=(*n0 z%*I&5*I@9XwE&s`nh;ek?L}q zT`wDs*VDY}#kccX%c`udw>?c^FB@8D7`N1x*vw$6%YCrq_^F~`&K;~Hfg~s1b)aa93RhHlj(6_;1`m zeSPi$AB$g!wnzt`PTVK989X}$1#eXkf{@Io11>OL(*ux~DKbDFuPG@)hg<&Y42(bz z_M?mfd2*z21$X5G_UMq<-Y9m=MGq4A zW0~H3B>i!Cc%NTgal*x(b)aQqlLw6(sy1*^K#uN-W2eZ#M!=8+IP!}Z9TG@O!XZxB zDWQ{$5l7H>)z{bKR-nWd7ZG7bXAYU|JIh(DULgO{d#F|FKoIWjB`C4rOIVfkVf+lf z5X^`yIgtUHTa}E- za-fp`)eHUz-WGmFA3oaGyNnV=yB6+PiJjT@K1AU}R7dbpE8osN4cwVxNq!e64rhPv zZYQxL$I|B*guW~Mo`KPoIN0fURX>LXMeY0d@Fv``4{Vbwf7Y*U2@0Skf&0+rg*^cN>$;tbL%nX5DBAR!1-HN^-9WSfjrh`NrpwxP6~ z^kMk^U(iQnW@f@Yke-#b(W+;j&Gvg!66_2B`h-VC*$VHjT%T)1)6sN(JK5LM5m$fP z&u6V=WW8QZzH5=X-OkWZbdzz4xj@TMnAmnT_HAnHv(kY~^>>a*ie(=zd%`nz`{Laf z4HK^eY0Z45b*~OlvBY#Q#Oc_|O;!oJS)7vi%|v1l(KuohXUm!GCl$T_8k7komkt~{ zgrAH}3k~s^O5fM;6GzBU<7`K~0v!i-AzvPZR)H37!}BSOuQmzfIoK$mI!Z5`8TNZ7 z?|aqi=9RPO8Sp1x%&a9ID=lQ0q}1d$5O0LZFO%-+DJxf=dacB&_UsSB^)}5uCfqTU zY4a`OZEx=46;)l(w7Arb|jnIUp(fgs zec6OdjCEDX$KKdIFyZ#=oWb1RZsTbiU1q!;Kg)y#aZ07$f}lb_mtr5rRKYx;rhabD zB}^5>D9D!3pkm|&Md%f)!+4(*3q1rhE-N)qonTxzPH zkm}hNNn<5*3~8Vw6AC_mwX(9F`E$ zNI*_SL2*aXPXPnjL`5;Nw-Ld1=jKwd9rNrkD6J2r$=&KL1dQs%sXjMRHn`JXmvcSg z%6a8eJ&^}K>-TlRN|5_<&3My96^F-4$KBnr`Q-%8-8BeUEw=0=};tkR4?*I(^ZpF5bQTOs6C zROiW%{3r@I4l|eNzDoYnBF_3nDR;EY3yz6)WM9_0pdtTNtqa^x^!LEyR1=lw`&f z<0E`J`dQs7ul7@?SNuEe0-im=Ep!~*_H$?XVMPv#2~~glx)F+~>fa((X0MHpm@Cxt zAG$CSC$kTQt=+`^x$(|ZYZ3X|c9}YLa6D_=WzH65VpPvyn`3pj$Ybi9{mtjc4jsvp zMD^3=OuWBjBf-R!hEK-)2kzOH-8*{!e5%e5L$Py}e>a?g0Pln2gHP(dZ@f-*Tyn9* z?8lDQ))%>nThLadBavYwe&(w@t09IYS#HsK?|k+HWc)p2Zk+B33=r6zEc<5_l+f_zf z7c2MeZIM=v++T0F3iRHdjjMGc(Oj`ST;#@iuZlD2X~f7o;h1-=-Y4(QA8$Q|Dmsok z=2)j@#K~XfG~A#3!sqg>T|UOH)sbaBWh#ky7MZ2vWlF^jMF0GVdi?bvmooma&cFQ& zCd%yi&`!T>y0OmYg#5t_juRq>Z^s|oc6F#JvItL}I=fcu>FDF!2a)ca>DThCi$66K z(|DWPQ$GLxMYQZwN=8k)&1un6_CZl6Pu=G|mV?ey)2)>d4TP1;2IWkKgin*V3V({H zBi?Vy+;~S@>DfD614{GOs$h|gxse%)Djzd!=}lm8wb1U^cRF`)(8u|typU&_x!#M9 z2MFMLKTBb?W2wmz?E?HR;cjAds(vhvE7HSjfd8%rR|loQ#mwT?UpMY3aD);K#B8l9 z8tsi5e@n?4w|#rn-^ipc<;@H5_N)$T_zr&?7)$smZuvgVyT3yGIrZj?48;20x1N_7 zbRqfT=n})tA8yaWd>e9JrQ8u#<2v||!QCN&0gW@g=^Kq<7MwyG+8H@+<;U0`F^o-C z=&|v{*VmdIHk{5@QO*v{jSuhGdX^le@kO;5>FIO*HnJflk7u>`8d)Bg=sY^H5P%KC zWXp6zpHiAL+3_t`@|C=iccy7tLbB^39tqvF+cteJd7gJ@;)#KR?y4G_O?C|@->lqC zZNrV<2OFFC7sSLJoG-Vj5;!;y;|&FN%`cOWuFYw*bRg6puxJwc5Fj6QK1WoFKv zG13KQ`gJEddoxUm>W#jan#(Xcgs?br^|M_1&J%Y3wsWnJ32(>Sr#fs)+;>?nl&bC8 zxrL12I+1)>6KJB+-pHnLt+NX{VDh7bN5jhSTBdGU)gv=Kn?m7(#w)p|=Gn(N7rRQO zG7cXW`TfD_xTx~x331s}`?3W)(@$~}8TMCqZ_3p)>9$Be1#?E^K#1NLMmTYC27wfH zmEivU)!p6h-Fb#k%~E85;S5Qs&&rJQ$&;=S1Q61{zipv6CeJvgG*)}|d43LZt3~Bx zbG@U%ThAj>SpIah9!EnxgAeCm{VL=6^Lg13OG@&a&oj6myz?Nu>|oz4*&g2)8Jl~; zN}bO3Sg;=t=N8Q+Kf*fxL~;TL7tu!#59f@nN3Q#;82(J((Rjt|*l8rCkmzIN7}SnN z#>O=8F>7wV2>v4KF(g({+&(WUad<(%Xm9jAM_!$0{-{2xyXVc`Fn6H>b)LjoZna;T zDSMPXaf#}8^mqovx=L^5GSwO!-zsSA6D|^ae|ykWe;og*#ju4n#t|;L@i>ZA3tEk`;2SIb}X(C>ArnrT0yn9G1{Jb zZBME5kCJ=BT{%IEEWa{Hw~_74U zsdzT-Bu7gNlhrUq=XSNU17z+sACDRLoH(BsEYwFq6J_2{6Hq$tR-1KefcK4ziF;RW z_2;>5`BwTzSgMaE*R)&e7P)`5D|%&Da*S+uQZEat(RngIy12c+IHD6~ua?^kpnjXh z(n5WPSLFaLEX?ju&-K7ELk)kpG#E4vy47vL(vmMO3QEY&eYrC=C)oXN`pBQAmBzSQm(D>z zT(#-c4&V3~!%Yvw1lnoV#&E{{L(d=;V-{OJAxZi9=k+phk# zY)pu+qU(pT#jp)IuLDlF493=r7t+U%H$J#daO8{@ukZ2_lv+|NYeE* zL9JH0`@3$q&Z!*^&TMs)5X8GusCgGJ;TBjFytiiemdPsyykdLZI>kL~B*#KEWw~P; z=dZ6XgjX$u2jbV(YwRy->^WoZWC(R+|wFM7ldpd8H@4ytO4J0545q=H1Ay;(P0#9hiE; za`d&?67=+<&Gqi!*Qrw`g0V>*9}-wzCa`#RHZ7*62zWlZnNGcVhqTLZ9f*AJ|Ge>@ z0K4H?b{TC|i;)@l|VF>dD1b z;{)$bOpUyAxjv>gWF~qqZ}*ewNAj0T-!l4yQ{s3!oT~BaOY+5wkF5jUIW-T^Ct4dY zJ}_pq`TP6*gpn}o?o|W9?RN{g&peiD?7v;;kei`iRo$xE7LCpYD+^1{oVUlIN&ade@O`Kp~n%AEt%cegEXgxEPtul+oC z6sNdFyo64BSLTJ#W11s*Ja(bV3cTsoTLRpe>~OUE!Mab4(JfQu{9M|%I4>~UgujlDyOGRti}-E|I22|#O!BML zt0#2&YvTW8RkJ-vh({2lmoxJI%SERX$EqEBg^v};YB&VZ@EU!%bMn)jhpNdlgYO>Q z@nEx@QRZl#dr&A`#LruPWrB6xN1DaMB;o%3qk50kJBut>O-pu!>|Xp+7@8*kp0VE| zI!ak6Q7UJ=a@H{6zgz$=_KP3+Xqm$^*)sKI{fXybV{V}M;*7_vk8QSQk;s7ey(v?c znArgGXS6zx(te)U|B{(_Bvg#{BZ0fr4-Q-IxR!0E!W~`Vv+9*IVjL?_X)o#2h_~6n zO+iMQ&%&_DawcYkD+{Bq~Lmy#JDI~uOYxt#Bn4mUtN%VeFlJFy~-3dPAL0Y2;m)|PfUklz6RoHhoS;sY{Mk>-@CLT7F@%Gt5&HhRp z*XFj4^hPi(eLC0hWZeEWNAxpinI9P%raUL5;_Js9-KbKpF?GAtQ%5;{mGPk<<6w$_ zkKbBLCg18%O$4xc5E4NDv7E#410t%lj0`x?iAr`p&&aTm>)sdN|MA#U{D`B+9Cjub zX|97|pi=)^uKa)_x6a&T-gtiIUDB1Pv)#kWB~+xFFp5@@gX0|9ix8-GDdZdF!wCSM zB~}+M{6cbqG0}iwX_cc5>4L7l^&%rx!8JHYant?%df8Lo|#A0TD~!7C?R=k){P~rZ$3@0h53(I)E#q#K~NP zyy0OhuubU4T+PqH;{rn|0)A~UcYgQ)q5IhQ_-X|iQ`WVHE$*|wKiIUs+@?*weF*YonwyLUJ(xg}V*^Zfg_Y&SFu zd~ScWyt%vR`RDRB5q=Lccm~pkz3b_DmcMh%48E?zE@d!@F+SK)27(1Ag{6&6kG*D@ z8GK3WXbzMB!Y2PjN_JsYV<4q&3CW+s$pjpE=ngF`xUsRNVnKvlzYaqbSY`vp7TA&8 z41SU0YXQa%I{z@jzl^vtOfgZXRV^^O@{}{R5!wF>vrEPf?PGF~L3eZ%=RX~FgFt8q z)4aM(-DJSlnps?&vKN#|MR#Q@Il22&rqmWBcQE(rCjJ4^0qCAC;1eW)cJ891Yo9y- zgAWLG1HNnv4s5nThs7RM2)b@2cZqIBo$I#VBrHc_HI;?}^_l^$E46?B=5;sVxQgRMXehzW%Ezq+a_$YW>l z#-Yc8sX4gIfPb})AAbb}F~0I^szm;~f_sXdJ_S4X4K>=%%(S#5MwwB&MTVdpJaFIu zmeQ6jy6Wg63x4GR-=rXc;Cv{#c!1dI$I z(aC9=c*(dE_#^z8T>b%vgPh#l3+`ztezIVLVe_=N7ZJ-1gpCLejby3971IB89h+Kg zRQ|o3|JRjnLPYx)3W(eCp@o=kbA*0=H=7~L{eqnCad1~6`3pcc$O;cE-Hh=~iH)*( z;vbUF!0;zXGkf(8{X0vMCDtXI-i`pjyLE}Z$!(%*8|i#6!6FA`c_&;`9UdF3G($bm$4 z|N0>`8zxJad`_Wc!GIoO80XbNgh!0x>2ve|u>$?ZE!ROr2fe~g2A+{FfUEn}GWf!$ z_hTP{Za}7tUMQ&lq1BsYdl9^hv!oD&KmXeCn-iMYWMPXcgkcfNtES|nn_}x178l_j zyoHGVSOPKiR$g9fh~0L(49(38^YbGX>6rX1;Bg_hSNH5$cDW}ga@$9nH`aeBrhaKV z6bNJ=oln?@pQnedU9;2|uv>Uyu`*BS>1`TDU>(DXh|yS>nR&CUke-`+EGz1T*-tcK zyX_ajG`J>r4?)A*TP~0T-YOj$Wf1A>_Iz$l200pjPoj#7?6Hval5g4KBE1K(|6;#* zlGc`CDBR&=xi3ZokT|Nyel<+3$HN+jR~8FPNN8w~Vh@4~2=;rUehd$jWjcOMJ4?8# zDjqwnxQ~xaO^=aiz2I;NQyqfstjHj+|0J#N_y}w_G&!!xnL9g+glA%h!qx;*X!u5f z)v*DAUFmjjG^Jj>l8w<=M@LLJ13VkpmP0Xv5ek@842}xoYQ8fDviSzq`Yu6NN?P9b zqbVtf5~7@%5jfDTP2;J7RYbVCXJl+r)5Fe(G7+~7I~&}wpLbPh{AnkTd)eF8t7#8mPG{R zAU=K(<`FpZ0@Z0+(SQq~V!j<0hZ0pDhKn=rS$6Imfv`O-O%Wf1*PO|Rw$)c`wXa?$ zg%bU$j{0q@J9ClQV^^G}H6Di~+Rm6?sdW`rrfAwi6uY0I7!KcrvgWlXI(-W;KSZAe zWHXAu_4WDI)6X2~wgp?wZJ0ITlB1((aVVFc5K06|Gx^RP#2id-gRg=rXIkq9qu}~& zY(x}&SFxRoS|!Mo!OD6H#0DmtWXirU;zdUnQ+MkyaZXl|UC$ta1E-EYOf_CJ+kjtNTN_0tMp<{+OC)LW#MVENl1+gz7997fseI3+z|9by z|8Z={zp)1FQ=}0)!&Di!adUD8Dsg=1>w~us;#kZ3_gmA7o;*3Bt2>Q0CgN^qCxcv# zOIeC4Co^t|l{IKg4-DySeG4ZKX~ZIIA4SN#%!#85GHcAO;h-SoIe1uXhh2toJi*By zo{ftL#a4LphGarpCY9Q&q#AN#g0lrz z2Vpn>!_dhae!(}`U%}cBNf8DlKSrN;2RPZ=w;!RkLT9|ay&d@&q`GfKG2Ni{-8(ck z(YnP2!LJFp=0zZyqDePvEP)onBNl!$WXc*`^s)8pTP1QSB{3vwiQU|5*9!?!RoY$^Pjo z9x4uxO`))GuBqV`5s9fDjMm^H4Imjd6I#Y!vSg!;3H=)E<#7MtRr-L;1DD@Ppsh+u z{=vcI0ZOnGQleGmj6u{5&_sBKUX#~uEb$GN8XXzlB?S*!rwp!xo$)h3hA6ygXI6AE8;>B}THlV*Q;Z{Hq4eW__z zE5;pOPiyY#>^!ce^^W>)>Nuv)sD@@Z9Od`Xhry5!vV-yA;e`rPSj&O$dCAF%edkVc zE?C*)S$|yyE#>VU=Cs!3+1ar;9-p^b$&yHO<217=0^x0AX-hC1;An-hweW*t_g&ei zsJMa04mT}aF3U*W$Q(9%;1@W5o;|yPYU=9~#HPHwZR<q?k#f;~3swu;QCx~dAKGAVfT;`E!cg*BRGP$w2T1CQ1Uq%i@HLz0r1 z6C7bU53@tOvJJ+mU&VA3WJu8Pg;BN|N=|o^l4@#e;m~ju>OwHDV2L&D)d|{5s)CQq zzI~exk}}bmMM(y%o&1IcQBxO!mlnI07h#|MASi0;(bm z&}O-&3;HhTDd4Bdq<(&=%ih$PpuyGu;lsIlGcz+Dq+8hkx@{?iq^ma1t|LkLa{;3s zFT1)Pp;hIHWdqCzhBO%O;3$=RQCpc;%94Vs@Zis%ksLSlbIZXd0!HoZT$Gr&i*~5* zxzkxhIS;-VjXPT3AGR}h2yoHYgPH@5*4Goc20XmHL6PT0lRzZ4ERvRz>V=Wrw?2dX zZWQZ~htzWE=Q1Kw1|uNz@#CmwS+E)t?AX!&`ao=bccV#Tr8J#&uwidICpBnny>LBx>D&!R?qpfWgJ^d1T(RhpHnqIQUHY z)uQ8uA?1mXupk{M_x=4cH}`<3XmMd7PC@koBZ$ivK;Lzfk>9s(5Ye5O$4aZ3txrx) zF7La(TR9pvD?%$q`DE~Uf+h}z1_lfi<)5C(n;ZZmsAIg&hYvS6>Y!eMnX)RL zn~Teg-=njfXXI1+U$>dqhGY^`w83u*YHWM< zz=O^_OcB;IJE1QyA5BskZCE>!TkhW;PI_?2M5yS%z%JRfgIp5 z<4{n7`2h636igzJM&VU3UZorzA4mO=)i?fTo#!4(7I&Mq3W1r4rW1^Y{P9RWNvYdm zPl>8P3G-8Y_eO_ryZ^4-6o0C&lRYl6aYqMJW z`nq?3QhHWar%C{XysDgfYdWMTIWTRc|J^&XSj?awmFm(nFgDKbwg(Hh`~-hI60E=* zns-iQ>yP~S5ybIk`d|Tg%>qox$;p*Y`-pQ-M~C{e-i^2C>^>cj_Q1~4$<`0(4%Rz; z`e2NP_+I8<6+NgfRCM=I=$o1%=-6S%!Ia?+%%3U9%d1i>gPki1X!c%;x{Xbi@i@oJ zpJZmLz+qQT6p<0@jfF;FFFxedsW86?`&iI9KYW0Xsz?}yE5AtOnBq}X{DRESd%-d; zA>p z$)4T2UjQU{^G0c^1Qs7GtOtBA)L9jej@msn-9b&zuiObMNo1VJ58vCg9#vN-ip(jY zbupOhUxK|lDub`c1cA;}W@Zj;uN0uwSPuQ<2`@p?UuRK#V5@%!c7BdUOO0>`Ix6N~ z8p^CsoD)sLy`>`S26lD&!%sXMH^IwI0H6bj*=!h=Q&3Q|9a$RY5ol&NG&c(#JlNTS z>2hSxMA4HcKQ9a|`!z&`GY1}26Y9vS+S0G1HS%>JLG91$i0g-CC5a!BA=U4>dd-5$i${9ujj z4x0(A#)kTOGg!7WHpc3sb#O@_bl_xg;}PWJdvp61tCSA1DPU!e zu?n;l!?7KPtR5;H(JdVC-tFrv>pKZde0csBMPS?50vMmzP8`dNi#up&rrWc&26DiW z1ZBEO0?dUV5f8i)92&YcRR<%!)b$nsDk7WW3r91V#VZM(a{&Srffz1)LgoDV{ec|k z-di%N;YB$;ao7uwqUGi3&WAKcy@)4o&99mX?V9BNLW-Ns+_gOJkhY4;0I#1^|jT71L2t{ zLA%@A;XLS+k>stQNMv4zy;q(T7XAb~@C4&6&`(SHP?~=2!ZBC=`ZaO`L;h}L&(eFa zCb`2i@u47yl1ug=;6vBs?;MtiVMl_gI*Rxh&1}-!NE@&#E4`L=at(fB*w_1SkQAl! zdH$O|>G$W?R<(AVjoZlrF~I_;11dlC&=KD<`R<}EVrhw1L5WEzao78N#6(7r{j38K#;E z6d!{cexbvTH6|)9j+t&i>x^>^un>qDih$ek=JfPpkkqz)!oq_iBR~xx9f%mfYcIRI zUtFYDJ9-qZJtcjUxCS0>ZjfsJPiyZQmgBxgeJ4rU2}wdV(@YXV5t2%iBxxrp5|Vb3 zO@y|0l2Q~ZX(k~_no2uFiU`>yMTH{!G%JxPdVcp@$NS;^_8iCit}p9Yi*DW5_1~Q5 z7~>oxiegq z&zJK>pjv7sI;-iSXiHS(+Y5D{87Of1RP*#{(dVrm>(?h9JGNg&mKZ7684jzQsnW)B z@#X{Oi;lh^t%{`<;$72S)?k5ZXfCjkDy#_BPTIquAyDuK7}t`@8&jNeJGN4 z4_&2LrVwys;VdVn9Bs%=@UGkIrj9&Qgas?kbq;xMF?L!!$bXTgQ@&$W>r}FW)(NG{ ziVLoTH2PT%;wy0BdrV)1+d6S@)X3@z`-Cp>>~L0VU0vPP^HDU|P03Iumq)c%4if#L zCLtq38rzn|i)93=JXlS6e0=_{XfBBTQ&qKzwi$S@e+2j=p10j)e}updgc@O9D-sc4 zm|D?Hzbk2smr_5Ilz#8afywv{iG2?{%qpe``^)<9{FAgLTtWSBoGB>@A}ohDH^Bvq%&?@#f=-y;GmFMd@5hN-!~i)fh3k@+5aISbV3J!`9tEmTOPw< zIAYROIJpl|g_BZK6YV@r;qn$9z*;^9MuOSlPKJ>B&+P6u+5;w3`sdyouK?Vr5EZ58 zeEAVDDN$;c=n?{K7+c69^e}ePNvWq7ja6f1$AMi|zTMM1`9I#xKvVN}X{oBZdil$j zFYD??YFo1Ao<98!*WfS+z==bs={uJ`_hjrJ^X4B=UYt=4jk;%}h6~ZW0ER&RlvkQj zjJP!3yQj?u)z&IR5A8Qtq`>hi7_Dr?wAI(em=UF_-nDC&mC548F;D|c86gWyN~+^B zYH4Y4a(COhH6NfLXh*S~*0;{iX)|UFCg-5AaQd`q$$$X*M0ohDS@W6%l%QUJh#R7y z`xS*zKmRdrkH}I2UjgY)Tc$`}(8o;t)~(lG@PX5&PbWWgvZgDjg3+WnGsrXs@W>pY zDa0ew3eT|uav*^-HSk9`CUx$pHPuM_M z$K0l5ZcGnMWPrt+nq0UDIjcTjz}7Lew%=1p8X767k57aL_KsF2b5Vc;Dko9B;oXsR7i&+IqfRC?U^^;v>ZVqUA+)k?^ zdSo-u{NH~+=fk1!`HO)h8>q&Zr(cH0$F*KYrhrBzs|Ik8c#oXILRo3)=d69g?tr;966#-&eFM9j&VRE%sB^&iRE8WFweFxzI^$?u{opWc0|;8aSXV- zJFHqYm(WaKbFFx2)56oInS{v*?)zQ892qQiDP=7bltA@1&;+jUu3ldI&fBTQ3FjE8 zsvjLUW`%W|KsaMB=>(CD;=p?yyio_1D%fd};Y|-dKcm{|!I~^~sL;5=Yz_EP@0&pOv+RPoZnvso;h2RCB5HJFK6GiEJoJR-j_n z6-q!t^LN{1svo)|A>bY&yZ3Z{zI;z}nc{sjniaNZQhI3#PJa4Cs`R_*aj!&1X#l+Zec-tG2eWk=NWa zao5;FBe1FE%j;NR_?{k1Nnt?jajv;1L!SYZEN)ANNbCl?OzS*rX>P7GH>j7N7Qa7L z;#9Iwnj`kb8I31V51UzS@#Y0YOUad`_2e*^E*fe@Dz#6gH-q+^JmBs5g@ya0quIS} z4l;V68)g<3-d%R<7hE7fV-Pz~N~-0FBaK=`|Mk=U_#dx(SxU!Kob^dlXtw?T&G!D^ zbcFx?Tfx)2Y$3;=Z<&27Bn%jl68*GS|AWGFf`lzj%)@u-tprk zz2IOsOJ84FN%zBzPEN)sQz-mzU*0YvBZMun{n)XIVJF(}1&ytvqg}2};E|Cntud>WS))8?v+5L9=H! zym*mP`F5L$ZM_AbL>gF9Z}9o4?fUxY*pn<&t+Q&-Scr+HwQTL3@khKli_nMdyl!0$ ziUSd01*xqa!03IY8)3VF^XH2TRGH6%e}uHN9pBw{626wAmG47urmM7gb|`l~#s~pd<)zuGk2iX?TpuGB+A3sMUPNa1uVPaD6EFW9R2h~M<#ds|HSLUY(T zvdb>^$5&W{C~;qXzA}-5i+4~FJb2%^!$4V}3Otf>YIP+q0siG41ZtT}`;P#Q3B%O6 zRP%VN(`5XngkO1LxX?R|x>_fmb}{uK{=}x%U%~KAlouV z(fJDJSs(sNW1jEndVDQ7m{7yM$xWL?#+1MBtn;2OP(=jrucuz09!ESTio(EVq!c3b z;!J2n$?Z>pc!iy@@~b8j_G+R9H<~i#JFO7!*X?4 z1c!5!G27nIvGdi4QMo}*2{D)p7E}-y#9ZFWG^^v9XYI3?m7ImKj$vvemjn;uXSG+2 zwt@12JFaK#w0!+PJc58JZ|=wu6Ut&JXDjTgUT9C_en!9i*%y@;zZmRsQ#+NvguuI@ zFneEq&-ad*%iR#lGTsFqs&XvcBu#PTNWWv|ea;~FWv)|!uKfMs;|3n&cHVSp1u_RZ z`hxVSXR*l;&_LHu>_ zxK>*pzE7EU_t%TX#hw0F(4P5ra~|+mCME7m1mN&X5u^wX9jflJ&Og{-)GSxUU3eZvdzQ=E6($^w=aNB}MG>PIcj}Ml$Z|U#omSTyQI)Fb#JWnq( zFu^k8z^ECr+9y0Qlx85r&?Z85yx7Bt#MAa!!zKS3X#Xp87C<5bloHzwXZM<^b17fo zI;+d0nxo%owY_kopZ$oO8&5pH@fFzWY^zuvvT#`3c7IZ!;2kVIrEf;K*s8#9H9g19 z7oMe*>hU=?eR#T+rlC$#^|+GY%Y#%JJqsKIF?P~8^zrT6n%o+{)s2KGQ$P-0Sa&_9 zUe->lhG#`P%`Ry47JR?jA0QpCFzot%?0@`5>O>a4#=#KL>8xV3F4N!MeemG-yX1`_ z@1;VGh-f0<%iq@a(6+k@wMoNAj6f|Jdvi^wiT1>axKz=vwR?b8=OnMD@8TZ@mUfvq zGu%WtW2<}j3N@Y3X=K^>P$NaclGvn2H<+MkF)|WS{7$OkvkU7MtyuBA;{3Elix*RN zi&8$xNpKy&*gSDqFxBsqUGEt3^sM9qe|$;5l`>eNH&B9As6KSzk|i4{0Dy5-4yNbl z3$yeLlm}a+le10o9*$=V#wIyt3l|UtffX-_S`dCH`1qQ7CZ}yR<#P^dPn$*@&Ya-i ze_LiigPhc)Qndw4IX(A4xLyo zvd?qGuKns7WiMc@o2SpB$=^1HX-F{ghV27%Ym@XA;gAZ|8ah`}pbAAtel0;?*N2{C zO2GCZic>?wAhs?A>hS~OGD^b4trPAH7vTp{cAO{o;YIOx6e4ISN+$L0eZlJ_cYKYD zONgpOyg7a8XI9YB8c=j$&^udCTDWWsbl_LvKT+hjm$LsE{`EJV#K8yJe5+v;ZS+$5HG4;f}jhC17Z(Qf< zx}td7{p#v!(yi{e21TzUNU_2#j~woH5H(@^?5!s5(OU*erW zj_+kiMV`Arv{khSlq4tOnZ zH_ya{DL}5h;yw`J!0v=`)zXq&g@CQiRILgUH_5_{GJte1UUWiS zT))f5OwxK8c~?@>ioZ+GDjB|J_3BL&7i=64`}uQc zoEf&b0@b~|eCO4%iqBS?rw^Tt7tcWDSql67=xb1KP!CWLg^ipw7gOqe8WOx zi~ip<_IUm9pKQLrk*fBpk`-fx9xj8#u7hq=KYk1oB`!Of6d8BjqcJfuUB|dJP~w2h zOwrMCfX6{NfzJWpZ(!%U#V&TxfNKX(C?uMs5r%ZmvEUP{hS~?+o_)p3G7cFzam^wKvuprjXNk|q?+90a?HFi&TSra59E_dw6L z7L1*F#)j=SP5lx^#+eD#j?O@xK9b?Do0>xU<{DW8j-4DWyWmD5j?zcwpDdW{Xc`ps z8@Uaa5#@5~LuRMwMB%fm&48S<8HG!;qOK4mj#F2ci!A53dll|Iy#dj~Nil?bvJusv zyFWxUy?y(asvM#_5Yz$U2BnV{F^a~gj+p3pD(*KGhJ?Vq`*miGCvXJ_p-UW_>3b}FrKEM9xk`RDEMM50*bN18Dsu(%DczC?r)$RZ+_LU zMZx(uura^Xe;Q;|XlO|29O>}=f3RvkZk?56QG0PX#FtQ1oRqZfDs>TB4hWo$w`uEW zl(gc{cC-t?uc+e7efL4(oS^6iKg$TddKF!mSs@fo|b5HBw+ z2ehJpqF_973Nf*&9Oz-OA+x7|Epf)q6KzmVkNT`x zN6ph6ot(U)R|j|ApJA%T?8)FmIH16f$wpw!8MTC7e4+YKu8)S#>D_Xr*KY8_8sfIY ztZ~x;9k%}StCFdh6icUx)6%RUDt6I%$Xud7oHB)2V5L3Qc?qN_^zfEy$@E!Sf)iZ0 zNmY&||7(JrM0bGU?`*U|ktz9=2H?t|uz_LD7~kT}CYan+iQR8d)SvdYly z-aX=)d!7K>IcO)`5;t!B%X z37=g3j^)}3k&%O(zo2jCC~E!_9)ymU%XRwn!ayb9O%UZ5sD>LGRZK4>>v<*Y-~Ry4 zwFF5e|K+)!lY{P}0NWd_>B*0`Gq6NNE4!fA{Zmuz|t@82)0c<+Wt0@8r8 z1Dc5m39koA*PB-+2(uM<1`M(u4`h9P`&>6{@+H>kfr?RcgRaasZ}O`BoQ-@SQn$!d zEWqC5z-W=?!F{G?={8C+r!z7#Htf^>Pon5yU|%{ldG_{68oXUxY5p|4Po=>fygL!; z8Md$oh{4p~WO6dW^1{6jTQARNkVf7+VX?*`)CaN=VX1=#oO8Z<^uAk>o_Qreesq8r6k40rTuXYmzo0=Hxh+HYmD2b*v}xlnZ2=ECry(S zTOV#+rIf{>K|O(GAj^(2;uGMu!dqiEwDhuwm2KLJjI6{xn3FO<@Y3XTboX*XSD|1nm*!=6KUxA~rg5_#+SGP1X z6UmawmrA8QDp8XeHyE!@w618V;WW=)xzYrPK;ixVp+CLCh$2TPU_jL zO&gJ$pVW+6HuUkY(1hg~Ydt*fxaffH#blRm=yz$wvDDN?W{tgPPFLpJ%>CUxmc?JQ znS)~<)88=~Tv~r7Ru)LnT-7UADYB#(0jOwRoqIut3H3vVhIJjSeE1MgW0wIASv$8$ zFfY%YRX_13G7aJl3fET1x+JZ<=xdA{A(KR7Y{o~Lg4&a6w3j>?YSY|G(RVY}O-w7z3;CA_+zyz!ScGQ1p+RWl1$EXmPm{mHPrB>2N|~Lkf>a6V>ot-S z({GVc)M*M_dR%iBDalM6T4g?=z!WN7(VLf*y`rkB=vlpWI$GB@?^DJopX1Hf=_uA` zizl85JTUR+v6X4`7I2S>KHl;7?pbiAkWZKG#9R@2b9ReP?||-fx1a z9+k9kP;NmD3kDIX5SiD<*@*GH$4{S5MlNB740817(F&8DpF7TL+=s~6CNqHLJo}4a zh^nG(PPS3yxoT|U4FBiO+TM59pM^DW^f(0RG%AS38peo-Up3CDPDr!Kq-Y=!uC4Xi zqeno{`BJO%>h71!&Jl(7A>RteuSU-rkR{uo6A-h9?zpxpBpo?|XLo7EL`4Azf9>d~GQ>onh)2b!m&;J!GESP9K3SgxZ1I2sMt46Cd?S0-|L>HP z;gUDmf+0m>0#%0T_{RT}5I-(aVN%YPR6l<5`=#=tK~};>FK5F9r#%)LB!6@^xBM~! z&WSXw=k{E%|HU>Q8zX{if029^qB7dycB58PPeyppd#FnOMptKNF~3g4m07a}F<}re zIC;Q1UxFzenFNfmqrm>_WEG24PkQ;e%OE2(B7*}Gu}&jdnnv1w*!NF0`|h|hVB-%e z;bNyZVL}TvM_E}J6+-<-RINdtCdHoAnM@&i*06nyRB5Jy_8#2uC%SWHcnCoTKwgwL z2tPG0hiwLiOvYr}dx?G7oi7=^zV>4PI-3B)K1%EQRntP?QdU!cG*L%Da54=+?oN&6 z$YH~5fqVZ*J@EVYZ>$7>s_Qe*E10Xr)&GZKj{p=H zw_xeg8iozv?Q>dh04Bgtay2Yix``%pXyjMqE8EhR*J?o=XJ=+Y5SuR;{^8Xt4o0RZ zlIOIvwFxVu_UY|kzSv~dpm#7&zfe<7b6!|bz}iPI212kZ-<|oaV!B=$@%mb{wQ{F` z=b4D}mVCO|d{QDBx}zy6*>f&;b?|D0$%BaEH~{Wz?2V2NXguM`MX_jLfbsFfm6z=r&M`K%+S~h_m1em*g3~oqlj=7eLLU1MSpS;blAoWl>?bgh zLOKtU7$xH&=*auJn+Ipw%|d5Cy+Cl|RY+0Bt<3{VF)a(p8xA9W_~sgq;H&JEO4kd6 zqpP23bDk*;k%ve|@MULf8@9?b>=l8r)LwLILNJ}$q4i}3wcK>N%{p7QzJIlry1Hqa z6;o556}z!LMNwAad_lE6zN_yoTZ?+XLM-a*moF$hwrt;Cu?V5W(O+klX4SZyQh2a` zez}N<%(I22#&(nKH09|6&9+$Y2$c!#+g!Tjn&4eqUEYG8jr?AG_g7;SMe@dotS`NN z+pIOYo$7?&>vyTyu?@_DFuditWa@2K9z$99pPxs9R1Hg;dC9O^oHSDwy1J?-R^HrIlUehL+E0-61~A-kgSGq%fSr9euMgZq zRuN-0k9;5XXNGal9oN^*Qt-Hd_z%js}L~F*fb1O%jG)7T}Y4lSXC2JEA}ew-Tr}sf<_`AOk|JO zbO-Gk6PK5KCL^ToyU#{OMR6OtXf2=pB_|_e93!Vo@*T64d5+y@%iFuUY9+dGkrY*4&%F8t{3D##>#rwfJ?-U)e-yaXN|ROgMTwquMvja^ z{$*ocVIg=+oOwF;p@P)*b2gdu4`pt7de_Glgkg6BQbH^G`d0za5J(Vy)6cvUcwh(3 zP6-*bv01-yKdBpMGAS|4A&$0RRn-N{Z{{qq{Cc5Jl!*4UWy_wTp&O~FsJ;AxD}y-j6SK_|#7kT5H#8J4u6fn*_3MfP z&*2gS-oJX4yXGc^wIZ1h-~$;MBZdt-8Rwj7hv+%pNR=uM1&p@ym1i$sqQ4~T%W2*e zIS&g68#qJiK=e-KAWnJUOwx;K3!Al4bts`BXDOPMq); zAD$m_M9?ejv5lOaN#mW_Ui5VD55!OoYH`o51@~c+&kPkurk8GC^2U;W_rEi{bxa0q zY~$&6s!NL-USpdh^E4(eZ5d8vr9{p-`ioq9Sh6sx#In&)9v!9zZAWTuF)Y6VVmn7*I@- zmlQT0D-WZdZ@e}aFst)N(}k~XjjI?LMPot-Ja#B}_x|ACj)8`id|&dgxsjO!Wnhld zp01{S5EX=?wD_|w7w9B-*#4Vx%JP2?p4+P`FIhHwHJ`!vaFC{67$F%xQLJCdj!uo_ z`?q}lYTq!ErgYnpb(&Ee5zJ0p+bG2jqK}AvAr6(kI@f^_cCdJ+u~s-W)kxgFcTacP zw6Ss$6ltZ_dn(`7*VTChWbg3zM-{(iODA-RL|-L!Tt{eyl|11@`Bs{vr@DfADbLz^ z#!B{g}Rv~$@z{xt`B1Re29lMqp8OrG=|A+(w72ZT}Ju)%_f@2Y7PX->} zc4OuAPBGDnCtn=qKiA>h5c7H33QwOrp?qQ7_pIGnkm_Ff{^2Hso(G^E zqMzW~o2S=b*+C9gt;2_jac1yRpm9hFBTdg{W>zVmzx9D9iy8|Qgj4m;p^+&myqgtl zlfo9HhgHD97&f4Nq+Z&IeOyw~O!UX-!VyjK@5v4Scq6UK9Xdb-l@G9r@J?anBvz89 zxnV;qA`7S6JUfP-gJvHt+{|=On$<7Q>bJ+B*J_Au0E96owr4hMQiCg_WH-e}1F4H!2ziDuyTyl#!CkLcHhcd40XG-ekO- zVqYsBoB>fr^!!d}ENgpvq1YZ~$4ax7&^Bx9&{fY7&Tz>8UbXA{(1Rb8DmGmSd*QzH z)Yh~U_mafb+-)aCX`V3iTw7)_<(}K|8Vlo*#)<1jc#aw{$<(_lTw35cY}z1`DP?w} z`e!VT)qix;dEx}EsyzRhe`IFNT>b6X&meoj-OiGi-9HQ;cJ}oIlt9wJZihUar`e$w z{nhW{a21ugbLY1C>K{!`o}+xAu}uZvY6Ao5mq&p4#!Fy>L2YlgaN!U!*q@#-Fz28DX*52}Ta=iK5ZN==&px?b7d3D$A2jTJt zZzCQCTwK=jjq;+twF}y{!DbA>Poq&7FW>{-D{uSbu!V*bvoZDcl;y8)@N&Akx?o-5 zFz&f+2?)6Iv_&T9F1PScVwe&N;Kvw-mpCT0~FM^379MDL07%QfzJCK4WW3pt<>7 zy2J+$gd;2stw`Qb3USQioUyA^N)h>pgPd53<#vkBprDtvwcC7sb!N>{@@PqSKEDJR zaJESJu3y71ZZw|Jer>wG{zar$oRZH63Z7;$8ogsj-I`pnWj;67(g}=GR(|>XxpeXM zsh^-CDYGg2IO@;Yx3u<+%zYn!-;I4LIq}qY8@el@0t$f5a_rjPK?g@VU*P$2w=%G^ zAS-%gyNG(;dUC{Q1Sk!z`}iHW%n%JVMYjE@u9xWDnd+ID@?f0)(D7W{n=kb)IlEC! zJ}=4NgVDZ?8&^3wZMn1p0Em}RKDB9hR7?zZ1Jjf5yH1@`=8K(D& ztys}}_@>{gnKARLk-Kn2@nmp`SuiH++BH(qp7<1b71TGKcJArvam%aoDcZMhLF!XZ zBDJNpSH_MXpUG3~H}4+rg)p4xXe;gJvLpA)7d3CbWElKg`(HnIP5_@V%bMm^x$AO# zSY}i=cWB1nEiX4su^f>(MnXBV%q7P$dx`H`Bnn6FzvIg^b*;j40?l}VBdz$efxhR_ zq2&y}J&(36BHQ^#TW?S>L@Gy8e&Luamg>TU?98UkqNFO?#R`*6PYGPb(OVDy-=CH&G(8Lz11WtdJEdNy;pH zkN5C>zwaOM`+1fJ-LC6%o#Qx;^EmGy4K;-W`|0+RkdPd>q9~_DLb6+!gk)DO`7V4V zkGDw${~@zbR*)mv-udf!Wkxg!2{XwRxr;g;Pp7`Q8&fw9lFXFua$gY7a*6n)`QM)U z`&_T|U-QsWH0)Z+t2?5qV*iS3>G9)lUwABPcCiMEjMt~ShdI5mTi+^Z+Vmi8J3KBm zBt6$pPq0ol5tL~C^odH4@)CY43CVMMW;fUW`HbX;V+4_O=TjG&|DS!5Ha%G4?n*iR zyCqJ*UR0cqFZacZ7jNG_X&Kei)s0kSr>u=vNq_R>$*bS%%m2=bi0r4Jh>ngfHRexj zBNX-P>gtNnP2bt|DnGxyt*zc@WPVjhNNC$@KV#OLHzK}XT3TAqq6ComeWSFfZyqc~If$`cnSAhk=2UV`JW_VKU5* z9zCM^X71k+c!)_yN9UuZkSv#^qzSe4&6_uEZEde#XG?5L*UCI{APUO39RxrqkWYU=1v&qvMA&-3u`B>GM!n%daf;{M*G zrKP=kos*OE`nAT!62imfNDht75|8uGx}eRq#d7CApX!5Y_U(~1F<~&xef^q>Wnp$i zK|mlsebGk5FtP0D{)ftO{EM@*hhsgwydE2_ul{*fZ)4e&uB!Zmw|3}NYw+@2|y1r`*nORw< zWfe_KHb-0HP6W()RO~y-K@}u-BuK<(&E=j?@9cr9?BY2`&PdCUGDyGZE-S=NDT6`Px!#c$l zSmkp8=_;n3-`slZdPB$sx2Y4pA=U&YXbXDa(@z91zJAKztiVtjmeU*B~L zOTwQ|N!JBW96NRl*R;95EPd<8T@9|O!IFQ;l6T%2{|!3IsiUh)Pe&(6IX^S=TnlHN z#YbQ2v;Hf*9zS4||FLTg(a1qH?Y+#Dq(<)^0?x(ee&tq8mBz3=ZQD!s%3i}DHZ z^XqA9vQUu^NinE*xK9r}^s8{2rX#8xJanj0koVlVtFp4P%E}b#Ow0dno;cNO`X?Q}5s0*f2IW7Nj&Pu&DnS$%Z62dgRCr5xT8QPQN}LJ{_yX z5zWTRnsD}hxNqg1`*geX zwuJcye|(K2nwy7*o`E5WNaW_@+x%G{TvjIL==cvI?z1kBoElS+Zk7-}9s4*umD!)) zq>Ozl$kf!7M!?kGK#e0B_vAYK;Xh3zE-x>y@mqUhP*Bsx>O4+mfSM(^e*d9E&n`Hp zbE)}9;OYIV-sb-_jtXGcm-n)3+{wx5@#Dvfi;F}e5fv$0FE=V8LjTQ;!{Lp}ii$Gi z4qsjm&yFoY`na@Zrm8dg{?1)r)Fl3Pfs(@(GBDTALUd#i9`O~mU!^s zLGqN1jSchK02@0y0mCVOasw3jIRM zp!@glKYaKwBZJd-noU0BQE+gr!tum?l$7`}S2wqttEY^N22no4PF~Q`x$ifL@V-3c z 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∾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 diff --git a/bench/test_results/dsg_use_feature.png b/bench/test_results/dsg_use_feature.png index a1c029957521ebe037f783a89be9c9f213198041..fefb150d0f69ac25bd9cb71667f38537753463cb 100644 GIT binary patch literal 89493 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

C?;4@Q~n4 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%0DypUV(GV}l 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�}dY^FqJD_`<=gC1mIBh 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 if 0 then EXIT/SCRIPT +if `status NE 0` then + !-> if 0 then +endif + use "https://data.pmel.noaa.gov/nvods/thredds/dodsC/las/woa05_annual/data_https___data.pmel.noaa.gov_pmel_thredds_dodsC_data_PMEL_WOA05nc_annual_t00an1.nc.jnl" let/D=1/remote myvar = t00an1[k=1:5@sum] let/D=1/remote ave_z = t00an1[z=0:20@ave] @@ -112925,7 +112927,7 @@ LIST /PREC=6 /X=12E /Y=12S /Z=5.0 value 02-MAY-2021 / 245: 5.63651 02-JUN-2021 / 246: 4.96113 02-JUL-2021 / 247: 4.30451 - DD-MON-YYYY / 248: 3.74505 + 01-AUG-2021 / 248: 3.74505 01-SEP-2021 / 249: 3.41025 01-OCT-2021 / 250: 3.36147 01-NOV-2021 / 251: 3.60787 @@ -132079,7 +132081,9 @@ GO bn_reset cancel mode verify ooooooooooooooooooooooooooooooooooooooooooo GO err763_din.jnl - +! err763_din +! See pyferret issue # 91 +! ! Tests of @DIN when the region requested lies inside one grid cell ! the results prevoiusly retuned 1.0 times the units for those steps @@ -132245,7 +132249,7 @@ set view lower plot/vs/line/thick/hlim=50:160/vlim=-90:0/noax xs, ys plot/vs/over/nolab/line/thick/color=blue/axes xs, ys-20 - +frame/file=plot_vs_over_axes.png *** Running ferret script: bn_gif.jnl ! bn_gif.jnl ! do not use /text= in def view in PyFerret @@ -137899,7 +137903,7 @@ FerVar(varname='sstcopy', dsetname='', title = '', defn='sstcopy') >>> print repr(pyferret.anondset.sstcopy._isfilevar) False >>> print repr(pyferret.anondset.sstcopy._requires) -{'SSTCOPY', 'SST'} +{'SST', 'SSTCOPY'} >>> print repr(coads.sst) FerVar(varname='SST', dsetname='coads_climatology.cdf', title = '', defn='SST[d=coads_climatology.cdf]') >>> print repr(coads.sst._isfilevar) diff --git a/bench/test_results/regrid_to_dsg_traj.png b/bench/test_results/regrid_to_dsg_traj.png index 5a1059d77a926de217f3e81a27db78ec6e5fcd5b..9f1e9273e6c3ac6ecbbeea4cc6f14b8f7327fd3f 100644 GIT binary patch literal 170239 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�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 literal 165213 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 i@Bjbt|Kn=>+#yO(O40P+k%_Wv(t3cH5@ literal 67788 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 Mx}I90%EjRS0TxYpga7~l diff --git a/bench/test_results/symbolcolors.pdf b/bench/test_results/symbolcolors.pdf index 366196e39002f2756fa790dad3b20d812d696382..edb34bece2df9a1e6ab9e7ac38a321e528671306 100644 GIT binary patch delta 650 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

jKzd+G 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 MR#(cpgnRry0PdBk-2eap diff --git a/bench/test_results_noremote/dsg_traj_1.png b/bench/test_results_noremote/dsg_traj_1.png index a54912db16ba299f59a920951dc75b1f923f9242..85801648eea85f206d151b1e2e2f796ca8c7de6b 100644 GIT binary patch literal 108279 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 VH{i{A{y(gF?`Qx3 delta 33452 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 K5oxudk)0g*Nc%)0w~Xeiu|_h`#}XV+6{}4;?y$ zlFZW5(y1SkQi+x?=4ID*b#|VrczqfarA@o?2Ytz!X1xY+0`(@i$Ln}Scv1%IyrryD zU+&*7Xi=4*9_ef~l=_0M_=9VicWPH6ZJkB~r;hp#;XX<#iDYdIoQAiN2 z5&P~)*MRI|Q_IvudnhNTRjEtY`$v}mk8-_nHRY;{tE;!S_xSiYJ|ZK7?(Qy`_#!?{ z75@$ZuNQ+cJFS{0`pe1OKMJZ!N=s1&b7$}ckyt)t4N!s}X%WQsP%riDlt>%x&=O8v z#O5?T)RXt-#cjL0Vv`@jav0V~qI;*^yVs-Uze;l)Ydt^zBp5&_Tt`71m<~NReU~m- zB0pEPQ%dSQDi7AJ5iIEw_jgQg*1fHVZpXepi_?RsWCKz{US1xl_WdG)gonph)JOpU zg(4j^387U3ARZKL;rXH3S`n;|t*b#g@xdcRSv#6;5Y-78KWCvq4i9H|WF#{s<-_OC zDh|(AS9qv>H!q1x8Y)j(bI{!_&AeD_SK`lrYvFE(c5%`pGoGIP$Xx9`l*5qwazVPz zFv91#R4`F*hm@ov7#yfUc2oR~FXQ>{venQMqq~1JuBOx$nJzoSW^L+DJ?P$D#4B!s z>R&uJY~ZyC2?;PY{m7LE2Olyv?m|V1o~|y+(blY6=YS`fmBr7?YmCb9!ND$6q@m~s zT~ZmV<6o7dip2BlTa^@pkx!q9C-j`Bs+(K6Z37ORc)2F*5c{f_Ja_T84__ylTL&vs zk~_@G+|1FqgSJZ~ze{Clclxe{`Fj^|zFtHrD8nt8neiHuMalT&S>!b<{H8NdPo0w^ z&V%Z3PasoJaF0^9_mgL7aR~`NXb3_XdjG=0v#d1?{;+y-{TCG7r7)~2)R>AqJb5;H zYeh@GsHnI#J`8PI`jm6F)9*LqK;lO<*`dvDLM-`@O@}y}DfL6wKj?825J*pSa(15k z^{ecDWPbh^qz2PXN7R0spkBA#|5;90S!9oug?2GL+CcNqueR>IytkZThotho#=oxD zSN32sUK751S*u&?8wYRF*SB?F3LcG*PW&-u!>`Nauj*|J+OxltEK1ZR)Dn zJ9biw&e!=S#%-dpJBcMZQ#|d$k__H+t|`ojt7J6U$+&=X+ZT$edxn{{*Sp1j6@IbZ z1+W8U;TJFU|2;pdSlq&7EGoI$TKJ=D&&Ixf#%<>8$G<_jBNEc zZ=U%|l;?!L-Tc%p+D!MdGKFH3xx$j~0sTx@uRn_YjVuo?^^0R@^Jf`F=`8h=-aO!N z#8`yK*~Hk%#CU|BQEL@xU|QGm{6W&YyarY(k>oM;@j~I)`2Pc=Z#lYwI|xN=Vl)( zlFxsyRIoKsTpV(V?N4xp7U}qt1)1{YIOw1Y~UK53AOTDVe<=zj1lp z(dd~bv)XFj|FGSIy2M-J%ZX-f;Y`o;` z3qzm89}S{>)5dq5`u2C>$0|+d%zMN23!k4gc%8J5Da-Y8aZ9_hZ0Ga47pv)0ijv&? zOnJS&8&`HwSK1Zs8M<3~$?SE54SzhZ(GeQWL44Tx{vzQhMk&V`&mdY-p%agYNOZo` zp+nJ;hy8Ub&NKK9Z%c^^uWFkn>^@EzRs1qJ{fe5RhyIA0y(da`JDk)SN*I_t(r#j_ z;RnPSzM42|d*O|ZW44Tv(+?buca=owd6pXW_PrJt68~J!#w_FJS(10LFFcBIz%n?b zBU*??dv{(3jR)m%+pmkc33heGgo*!gmCU>GW>ng7ai%QykNSwk(m6Rq`uyt!QTLed zWi#t`u3yd5)l;+g?X#7vt?ttITzw)Pj%B{mN28+em)5>gn)_IMG((-{a7^=xo<|NP zYCZ1hvg@1M#=2;fkBEw`mMhNBpJkIWH36s4 z=;*;3|BhArOMLxB4#^9Ja!fscu<1~ekk0seUy4`6CaQ?79DVQQ7Ja$5&tBN<(zMjk zV$Pi1(!MLoqQCx4wTSt6DQ}^ADsZ2c3Mq)kUL#lTNdBpeJiui&0&DkG$KVEL=P9UOo0Z zIv{``D!s$jta<*XrkCKgy_b^2r<)q$tEm(AeT&f71JVgphWYxcn^_|j!^vmHS*46^ zcR1$;KK2E)cc(?-X=!JlxU-i$~fCbGt&P-{&{(8LN|) z?O2@J%t^7JKlkvdzODnl!}H1*S?|)YsogKblrFBZIlU;SFgjE|XXi}EPO*rQFA77} z0jUH}+h0ZQ_JrF9E^ni%7Ged4yeheAcQ-Ut@k?@J@xpMrg;nzs3PVO{+@xB*NXk;U zGh6IaT!Lnd;-)oa#EB?HQR|NGz&5UyzI>s5yk5rS4bwQ|`a*J{`TB~qskqjmYWuaH z-|5jxTvQ|j%13ipT`ZrLs@|@wPn(w)xjyUqcG#TRHeP#KovV3|Q0yL|wOZ|Tp}8B9 zob4u28Z=3+cE$OKA$I5D(q~Q^LCy0|7R+>|`=9~`i7#SQq}=13iHS^W%);f4$YvUi z%Gb(ndDHwtBTHscP8QmG3m7r%{QaRmPFHwjB2+g%|JujQW;HV?V?$))cxOxv{WD`-0kcHYo7M?okL4v z)3tl%#Mn&+fDh8*;yUN9f)pep<1}Y&UD5AdwcmR@q|51wfo3%O)lhZ4H0e5z^KlDO ze(XUTQNZ|nEWLNhJ0LC{=u@8Plf$p?zKpSM^%iu*S6PdfsdaP-4euLxeQ$KiqpUq~ zOKjDyyoIUwOC`o}NBzuy+g;-RhCGUCGdr z%1^7`R`-x@Be{dT9nGoTBHhXBP=<@bFB6}21u6Lq{!A{FK#O-J^@GF=@jdzNW&vI< zimJbPZ&ZAEZSn?tiadw zM-~+PsA{#+ziUelOj%Q#P4Au=Z{e`rSF*~bI5F$1>bBc#wex(*Skri&@qd3NhmQnU zcGtaYT6D6HgTYUfaOFEMRvixN;}izh!EA;Wd!_uZWCSff{>?fbPB|+6>PR~p0e`u+ z&6WvU5M78#g$^z0;H4J#v@8iaDrTVYYI}-#X0z(&V|M~1;T7U1d1vKGdbe92P{%=D zn~k`>YdQ7id|y4Glgw0Fxgt3(6j8cc)u_xSS;(pzhuIScd(wEmvQ@_ypDZ12ua`c)y@6 zd;`4DfcN=-9}wK0Prp`g#}}5KoA<<3tAS6$((Bo-&QGqU(vqF@%n_pt#Ek9=>-pzn zKhLlG+1GzS$(@d-xSZPB^9K*I@qqQ!+16G_Ed0gu6HR@&?>7s8gwvyE_Rt%u@+5(sS}xtRK0hkH0Ne#kD;5)q0kHs6F{F#55FYQ2#$_}P#aJ&`~bbB zkSfq8_Ugq8R}|`E-K*Sr`3~3-Xa{vDuZ+B27B+r!`yR*MYC0+YdO-E-OEpuq5-VbyJz@HuM?Z}1z zy@6(Y2!#+iEDa2TN;oMt>33a2(1k6zXU{qG$=Ve@02Wt86DsV|KT<3kv%C|3-TWZamq7h(Jw7<{O>|YAsM7e`y&P7`o9?ClLMU)!Kk+ zA`&PXbhri8wT&MX(cACH-esgw&bSSjH}FG1V9*erRl9U$18Xouq~o99qk{dAu_7XL z{?8xa^1kB3(D_C7J3}vujhlw#BKxLOxCK?bn>W8Tyu-F9rA+bni^4pcc;=tH++4_N zuN_j*Hh<)z;SO|=W#{HPxD*51BWYbJziXGN@ET_)CkIDIb2GD%(NQ!Eg_!qtcYj9| zN#Kia37l!G`#W2J#%S%PUI0|K-w6=3_QYBSV@~5d--v?&v!)3Z%jmgEOB@*++bMp- zbaaFT$k0cW*4FxdwQ+KC0*nD^YQ%_uOY9UE2a$Oh*G6IUY4kGTjk#B?+9e~?+SP?r zM7-3qzP?JW#((+GlZz;o8?Yd>o+xTEcX`-oYA)x&Wm?soE5#ZD5B4<#sh~w{kz4lv zMZ~Vv4YASF*B9NZ{-|r6ote4WNk@UY-o{3(M&*IE6fY(8=}Hf;%Feh;r2NNT|qr4xk(k&6LT8l-OD}m2g>=c1%uih$K`jSnpM5`C&==l0 zJ(cq@l$MIFJd~JEpWQ21iB2}?xFHwNVAv%Ol@K~_&$iuQT(~!0fB*~9YQHy*X zh3IJ3CV2Y(HPr(+RfNRE#Ds+haCd2OF)?z$wVydN4SkHAojt7nBUWz3x)}tO3((3B;!8 zssR$kE(sRb6J^98KIIbm`FO-A2aiPSuby6MVIja402r-Vz67iGZKby>lwP#0k=O(* z^8cNs+-QmhYBJ;Q-6wnXw6&+cecLJsF+xM*8TehJ%m;KLeAeUK_hVxg zmX^%hxAp#aKrIOj`~xXzsE~lqqo9z72Ks`6;ZwV@8-M-!1)#fm3IvcC0Tu)AydK6UtD}wQ~^wIfo)xFQPC8h z2wD)JlFP}+{6t&fvvB@1W1U%OevgZfuYdX!^7{Mocjt*Spl-{`Zgcqe;a>xBvj~R> zT0j&O70-j|v258g+@@RTd|@^NfMSlr&f5A7-kgh*GgM4YF2--Y4xsM}ZWXXT=n9&K zz85dBJX5Uq_bZ=A9Zet&u)s4=QL*m5;3bJG!d^8tHja6_lhSU$EWJdSNzjXX(Ln(M zvUJ@>JW2b8xbZiA2JdZWOG3W_JTO0{gNIgBTH4jqb0TS<|995&=b4t}>(dkC<536v zeXI+xARa?>4}zALmnV5-8yLpD@ zP1N}c;2I+1={bN$rL8N4Ytr)b51T)tc%8(o2Iuy`GZ3&z=xfnO=Y&dhBb+>mPVjaesGg`< zkLO+G#jSTz!eh!sS&HEDx_Gh-MDqUrszx;wjHEB=*wNeDYiweoEuEE}eJvuw*ko_3 zbBWA|`fn*OpNkyL;NMhUU(eIq-!Be3Y}mtcgEslEe!7*)7Nvaf;1g)XJC(1ski=pz z!=i1DSXs?ubiz*Y%|VAr6m#=iX4a8T1uC0C3BlLGZK*V7zkPSzlAyzsQpUMQ0;C!E z|JZ>bMSu4v`z-!0Qk6_rJbK{&I$2KC*j1y4}DCe*Jd8Z&N-g z_Fm0~N~%k1vN>Yx4LS0fms|J5bCohA{(CmbJEIt+rGb1`uc3ww-|9&d*NOVyAPk9h`cVwULxj!uy%rC`mnPle;H^$-|e8A>cigJ^}I$AjdP#5 zGcKk4&kx5_!X+B;Lgn)8AW%^c=1ikaWE#(J(jZu?6sLJQP&^J*U*Gf;geftkwCp5fjCA_Zkl@=1Z5)s1I3-O#-Z!{?YZG&~Gv@?L7H z+KLN{gMN*SuqMF20P_O9Ii)2f^T45mI^n>CrhCfE%c{^W*i3?KN&~?b^FhGdy}~Up zh99W$5S@YD@jaDEp-7TQD!`4=U4|24wnh2t>b70)0zOSl5PL!P!>`4)wSNJhdlen5he5AC zUfkAfn*JgA=<0yNg041(IjD*NS0J;PkeIlhhvzhUZh%h#9*id%EOod{1mFztW7yHt zi(ryi`27wy`nG~=H@sswEom>{xFR)^J`;m^9Dr)h4^TYg7>pgOmt%keQ{o3Gah{$> zv^BHsak|3T0yS0zm?7x(0Rh#KkuB&v3dONHg3Q_Rb_S~@50}`Fm>xo> z@@8cp-O5|Y4yNC`rz3q_Dv0Eb>*(aL?O&}r?2Gdn9_pwFOtfy*%QLcvddgBVH8{rU z_=de80U*x>QjQlIs&U?d2;KVdVUS#*|o)Nm)qC4r>UTB#GvF$JVKsh-%A6R`sfXD|{DnEY(d_xd7(f+2>q!jqe zEB2a>*gClvj(fj>--PdPgU9c<<8ml~MP?EvIO-fEG^9#XHH9mQh1$f#M7+1eAkJ(| z4nfSJk)ReTh7PX6Lc{NM;czc*FqzYH0p=Xhrg>rob)0@(*F5K59Q$t!ho&_4(@((a z<^pOj-1F_Y`NcaUa-)d9X7g%a3HVmXSQFRkKLSLl$OMOW5ZG+KutS2;K+}OIGD3!}2LcM78aKc?^&!Y}et z8_2t_u_ds?p>a*`3pm##8Z10m=0`AcZMf6q%mxCWLJ7dkje%0A2uc&B(aCYnJ(E5*ChaGr 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 Fe*kFD6f*z- diff --git a/bench/test_results_noremote/dsg_traj_3.png b/bench/test_results_noremote/dsg_traj_3.png index 7ab31c04c6c70be60c2d1e3153466e9125d46ea2..a7c05d9a74d4ec15696b03ecb1bc31aeeeea461b 100644 GIT binary patch literal 76690 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

    R#uH?r|B_t*ntkxvy^kq$j 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 literal 75715 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%0At|49~W8vs1)92|doEB*rNIo;p}@o~EB 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 PN;%(pfmOPt$F6?@1~kV2 diff --git a/bench/test_results_noremote/dsg_trajprof_traj.png b/bench/test_results_noremote/dsg_trajprof_traj.png index abc438b8c1b9ba9bd62171ce246c3a716b4a971f..7930bae4673a4f6543163005ef26c2ba288f3a04 100644 GIT binary patch literal 81266 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 literal 77455 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%0DypUV(GV}l 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�}dY^FqJD_`<=gC1mIBh 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%0A%UDSw-PUP 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 z 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 IXdd{#0J`Tnng9R* delta 52483 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 V=sc|MWlsK$mWG~snW|0r{{V_U$z=cl diff --git a/bench/test_results_noremote/symbolcolors.png b/bench/test_results_noremote/symbolcolors.png index 83937aa300a84c2f393d21997a6d815c48b6d5f3..298c1d4a1ffa74186965c83700861fc823207e3e 100644 GIT binary patch delta 59388 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

    jKzd+G zpdYs1z38{XN*iCiX7_qQA7?}sSZ|Qqmjd%!bAet)l26K=Pw{rB=QzQ`ry;a zUS+#?aX05^rKRB9mvE$r@2zlFRv}U6M9S%MB?N>PSJWIO9SG?zFkp*3#_M|GJ$BY)<)P6$JPR7@|CtII*2 zo{HKNDXkCa_0@z%z-vQb)Z2h&u%Vf3AEp(1|CCEMLreFq~KWueT}@w-9y1P{i_-ys7<^0)>dNxiTx|MWkcbDn%1MZH2-Gu;-bvt74r-{0A9HyU{x_U)m`W!t zf@AS(KiPYa9e5ghRByWQU{D`I+lt=bTY>|D;u1Yry@zta&z=biJ?qv*E8zZGUg{O5 zyr%i!=qf!D^OgZZ9ey*S;DSHva3leehE0*VtBj8!MkVVz8tyb3c<~rU778PGs6)aX zt)4bjm1U(i9vp3~JVZodoF8*(jS%iP%iq;kiFXXbtllzess1F`XskHGJ8Brk z(6sb@Nm=^oXci3C8m#N*(#)i#bAxZbh)?2qH0m0xL8cLQZvlcQ+3(Ba^Cp4!IbtS zn0ipcU4wz4L-hwNFHiM>Y9}LgHq_*d8@i7el{EMZX`ls%Cp{of{i#H%dhzYsnV>4i zob(czLn^+xd42^0Qao5!8WHkG7GDoRzJ_x6l}d9}u1D>zr7mMdIx27sHo=wZL{u@tz+T4WxBAUI_uY5BBl;F4WJ_Lqc@{9J#1H z&HUV>?YHmV=+a#T@ia~u%6p$$^z1hG=L>|-3Few@K4V`6lwDZUImJ=1~7!@i2Ok9{C~UL$P8P+gawEb6T*?Nx ze`)m9_-{v#Rgvx9pr`UZa>0$C5c~!Wyq_F!^@kCx{-IBOc~}_dS@vzKE0X{R!c-LR zXuDERJl7x$n z`|i6sD%U$yv&*P^!CGYwck=WTq#;2B+Lc4l!&AS81p!`60uOIqTU)4}ATfE&WwLmJ z{H_l-t2oO+LdLaa?<+eJK1rZQDm;gUfca#5(**>*;9>w#WoUi+S~k)pOf9?im!_dj zZ5)ieI)wB0{jV)xVpP}%z4-Z?t?mj@lkNntcVY%+KSy}@__FJ@jBV@V>iM8q{>xE0 z+}pjqun;l?9SKI8d@9scVHFP!Ub3(zFlk1%*4}m#eG6?F>)O&>l-k7aTZKWqrtXr&2i;TxsZ01ag@J$j@}*c-IGRNy-@#O$Nx zD|F7}sUE~JfuXofhcq0P)Y)i{Do~uO>5KdAZ!Tune#%Y9KeIZJSG$3NQI~Mr`^~;;^iN4BkZ{(^0d1_!NUuZ$m zQn8ce_a{Iez_kJaqx>Br0NRG-_Ht-10Q}E@oc9Ruzws|_qm@i__rwuzDdS^fL~U`o z;Datjm0eO)Y|2quOlGh$)bR470ZoMY>ToG%`a&LWVO5&JGWQ!7Qq0(&nJec9gd{r* z#ly<8zgF@ct(O3rTFMt9L0+2vX>?tSjTBieLB~{ppI4Vw_s#8jlD&tDhnjWgi~fxz zHsi}sxv#U*R1hcV&INJyHk>gw91!6#poHb*puZhiMy}5jCPCjjRGY~VeAuVN3{J6{ zVm86oh$yebYGLdoq;`2%jY%5?5WYoo z8m`s{bbw;7dPMS}|23&K2O$Kb(>=nak(|a~aU0$Ntmgfl29K|)y_tLxqCrKfo{HaI zP!D=kZ@x|o3#}%x002%bdO;+zKU&Y#&rqjqV=+%Q_z6~OnK@#Jv}|>BSW$O=)jYp8w1o~GWk3Y zYpZvzeWuU3k1B|XJMIv?3!iB**Uot;W|0Fgu?V{y;SR^PwV9spnl|hf*sGl%-Q<(^ z&%|v-U&`6bBgXZS@(@`2v!kdBYqkR-yL0rarly)YY#YbdvT_d^t>@4tS1&#zpPByk z$}y+336ge5)sLT%1M=iPX*}7Q$#@dV>%t$0RjvS%0um*h(L+aBm*8pNsRUF zPl5R+e4y+2X6OQ@WGmdQcIFL>9oG)O0}rTBdf>dVKR*8y7Mg89r0+(8teL2)n| zh%NsaNMmzpiI3yL2dD7ZKP}{Lo0$dxggX*zjn+Vav`0$3axjOK5+@hL_zN`f5z|){ zVDfmYlLC=}9^6VoR{?(hq=T~7&t1GUJijpDXn-CCDQm4yOqN|ePO2ajM2!m%J@Pdn zvbFIYEefO|crWX%ZY=G56#wAAH0v`b&4S4}RZ%9PihPA&N?)vnL*!TT-F2DBkM4#ov2HdyN+(uV=ZH54F)U`ujioyiy=ycyUXD`)*rk4;?*{ z8y^Ac0vX6tK1ZSVXM=@xwMBIjobmp`tomf?9%fp<{+o>1^J&}7nR{e?jx$hNSR*rz zN^5W#paE$6y`5v4xogWN!!zx$1|=%oZY#Wu$x(^&B?tI{7{@0;Y+utA>oH1D4)!UaBcE>lb{wwku8oou z{A5oa(}$nm^(aToP5XrA((sfE*uZwhr^VO$9yezuXJyfu0-)5ZYy8aUX}DBLx|)Nj zW<6YkR(Ug^6Qn~ve;E3exVwe|$F|lV9MC$Mf9!Sv^Dc8G7*EOGY7Vd#AX*#E|D07s zu!}+bnT1%|x)6|?&FumvZHk6tg^dqX;kHCQu?58=vRw91#hGErrH~b3?oJXbUk*!TH zUb=erocz$Qzz4XMjuP-HI)70YtC@S{cQ*(@*+>QSRI#bH>;*Z;zm{s{iXLaxGN<&p zW~@`iTJdoF=iV4nD=<1Zg4GX+bdB{3M6cTjH?g|G>`yup%4zr`H9NW7AFE@F9$ z`ne!f?}Jd~@5?4Zw)+-{67a?-vnC~VS{ri7ju5(~9E|YlW}O+N93&9T3z1lH5W;2+ z;T%PE7A6K2)~Y)&8wZWFo)x!%-x=mPyt>LE9{!6dJqf3sE{%Oi zh?ZFE08u-esJjhc$|MH4mCNf+meZ02M9*w6?Fa%a(dzW|dlT{}*me7yTv2{azkr8C z(F{%IoHz{PJO)a|->bEBZ!Qn=ozIPr|9i^YglASJ)7+QcrU{?a+ z2(h`f{(W0pNw=T#RXFkDou39mnCZ4#X%-6#@J*qf_<#e2Jt^ofis)=V+NHg9MPiGQ zhbN<;vsMv|yE4l8pj4@l9!W>g^!EuRK53(Ng+-#R8jg-tM=m3HFz+H$e>y01SV{|c z5kAo>#g(CF1&md zJN^(ZeJN@%p>J4sV|(9Jg|u3k2`9<`{LKc^R%fd`DF#Ken*QtORW@rG)69fc*I8u- zDSXxdK&Zpq;f@Y~lml88HLq3%v$3+cnS6_}AEs&zh(pwXUaW4W^IO2rbBg+_zFh`Q zpfd`pkS*`%JLt?z;vHL#YkTw%0gj%daicXZEor>Ok-RuNB3(V>y3O71$dvP)GE555guwi4!d1Qh!!q$O-Sm(0v60pE0QHdN^8l?_|6%wc2G(zP&wV_zME zohXd_L)tWNWJs!H_D*6=dGuYc!moH&^o=9d{T@V}Z-4E{FjI82XNt z=obYV1EZ*V*=?;OyqHM=W8?W7pfz;`1TFIjEFV4D@E|A8;DJC9v^jWA8AM3Sj~ue5#QQz6!C$|YVBT#O!Z>l9V0y8mz>l+XX zZ|g7YE*!EKm>H+)pop?91xGIh>u6lS2qpjmrskJLn{rshVXG_+gX#9d2~yM_$;p%& zf)i`>ZKikB#-t?ovc`dM(=J$Qx1ZrxcVeURt*ts1bq&z;!TjNG6`0m3lx`*jvYU$A z89{$Ox8~!wuWyS*#Z&#v09EoGl|i4bTV?;Cg)1+B9lw8a^dx^3x`@#&pk4Lm1Y0h%-i z<8pS8V_znkUOH(wRet3V3FjP8_C#Gh+Hr6u^Pi=zt6Wp;xXS+0MzAg2Kd zQ6CIO9@^Ed&Skv0ELeo4jij^d}x?ty(l+gj^IN2=;il+jj zTV&$%#ssSKKeBMV3xoAWKmDTt;zr>)`o#^}=VaXskrS8~=O00q8t?v%f zd5<0nG?GCNtUX-H?d410$&_#%8>T6Xc&Z=2vt#D`bs+Eif>4C}@_K9tf7^UAngCa_ zKXqc;?7;TF92l@s1sS!^P}j`OkdcXn<;zwZFX+$%>xk?6gl$Vw5>R4qX+X3;yDk~& zs(u>2jMDTYf?;}2Y7=;Ih-arH_J>M*!h6r%rFJ3U+qLQ29w;9&Ic~ic@ypTjKFDF7 zo{AEZ-b~TaB~JrFLode!-+UCn3DWK(u{w-{w{KUKnFmo!AO*vHbhP$qvvcmG*_{1$ z^Z7O>!$hZFzRaszIhnQ4;nY}aW>JJv9PZ|wHbp8%5^JK%Fx5N|7H7U5Us+0O3yx1d zw2t!CCUx&~kgv}x#xN2DxBeL*L~gKyYPPf&mM7P|FDz>A);$lrfW0LeFCCY(G}#o9 zgM$XUN2Q3`>Hf#(w$tORR^s`DNPRU2^Gf8=w))hn3Wu9cP&6 zTG&3KDi~zH6IbS0Uc2*t+QkCZ*agcFvMQ?so7`uZf|J5l=3RoJmFbsrbwO zs;F_o{frp&;nk+%fMWkR3o+21kOHx17c)4BSRWp|867=;qs`=#gr|0M=Yq%_9m@J* zfj8YWWC4y^AE=iV1O4-Yw#LhF){i%_uZ94VL zOP)u21ogw1r2wKWB9V6bCOyXHK!A@Rmj;%d8#ivqrWB>7a-<7*gJxx6{n4Mn!NK6* z;N9h+NnqCd@Zp1~E$y25A((KNB*ceJXq&6pxMd5AnKkgs^nD*cLrEu;T!az;^*^>% zey1N@&u3Kz%gay{wd**m7`cC&HRf4MNdupT1|hQA0Es;K#wi=wD&1VaUVqGAJ^LPK zLShcXnHqpi9A|2fSonB}f_U{8=UARPH%}MfbUYX<4*z?g6VMOojTj``RtCrts4CvW z-5QwVP({j$l&rS|=6cI+fCB1l5L4q?FcO&%-hXKr<_6gBU&H#u#KeB>f((<-0O(Mb z*p61XOVFRP0a_t7QDpg>8dknN zx5gm0%UU<9it>$?_RY^LRWch&YRcNG6p0u#%G~Q;)p>f|U=|S=*7j2}gN3PmM;pZO zcr#BwB}7UbuG&LhEo^SJz#VYjdSCW^595UI@oF*h1#lKujyb7XTjvCV{-?~*V!EIF z6zIYF94%$94hxKB+j~DeUUd$qM;bpMg1`ak?3i`3bRT%91u|=-&pAq~RJKK?MT)@T z8dwVuMAW1B`H?j7iS0{W8$43Y#X-u(Nmi#r!eve6zpTL z?tkXmpdsJCpa-;3GaQ0u{vjC;WAdiShny{Mq6>B&Sw&T5*n2GI%vmxg8n3MlMRB{vfK#(Cdvx|3bHBd zX(9ZQ=1cEY`Dr2qi~Xc5jkS$UUQUjLc}{jVr^g+J$EwpRqHLf^;G0rZmo->L2aZ)!PTAQVnx$45 z99Uunl$c8pk~ZZ~e*xNBk>Qlwyg~v!l>wO`v3K7mV!%1+MQMY+$(?+a16F2W%P4wy z%=UNK7wg87wJ=zumr6{qq7A_!O9$OEKL-wOt+hzMe{iN20V0#0pwQq(`TV4?r93&N zRcqP+nB>vCz+318dhBCBJOYmNl<%=`zdoV4K!~pz3k(?V&#B1*a`W;YkIl-gdvve7 zsF52|Q;WP`)vJKWHCK_Tz6ey%W>k+tVCI`9(3Bb68q_i^grb3t3Wo%1Zs|Vue14ng z5$=tavo*H{;0gg9`E6jAsIZrlA0#{T77-KM2VY2?uDkCn_E7ATT8cZ!;~E*&BuIFP zXF02+nR^lr_T$CexS~`L;NYs;-29Dhf5snYmjKpbbs#jJ??a~5PMJQ(cWCi+n_o3f zb&5@n^*}wFa{`dW7pdzhY4FI_-ptw3*g$Q5v57@sfQgTbYqcYA2mwvt+nK|uEx`>= zlF?*9RY7E`J9L*r8aqr#xF7?Q;o}0TZvm~5*Y1b2N&vUzOq-d^Ck!xa(}M={*>;NM z{`mCGJy4jxO>tzX+i;Zes1EGxUqWRLjzYkPJ(_s7oBGZ}7m=?-{-oIs7}s)ga_qfl zSX|nu&fA~ActJOJKk(nI<~*@#O)Q}K6n9L4=;6iOo1cdlBiHud###wsoaA06~HX4d~%9 znKMM+z>5hKCP{b&Wre-~%%vUo{t|d)qpzV}bU&UMeG%t$*VBvD4EmiOA?rErGL#9) zd{iLEJd!hxB1jPG11gV?I}%QF+od{9d3Bt3gz9AsA(D?z%b3sE`OOXd{5kK#cGIp! z^@F1$&wmU?B`;Tg6=wUZfBt-T zrwSXv%kP3}I!Ql%b94LK@(LF&4ITkNrZc>0xH3G4V&$~~RWRe(;OZvxpq zdT{|0^H^X1$96P9k3wAW*SA!hF*xJ>bvQ8M{y0AbuYm}BX9KR-|7eN7D#5ijVpCMU zJqasJEvGgRgsCb@KDRk-TTf$p9q@rD`ofy*X1Sh$P+1AY(h}B2C9|XoG~9gL`kJ<~lYHW8=m0s8 z?#rXZVq>EWxA^{McncJsIDNNX>%{ce`EZ_Ms1V;~fTx^3vLD9TSEFBW#1+hra=dwS zEC@_xW@hH}^t2JR5jE5eHVasY5*w{m;GwbiohWQuIji_yU|#NRM>xIn)S!Yz#Xg0?SY*Eo@7K-&+V#1YXBB{dfV; zAn4$`ljG?&z8J4@S?EgAGj@sYURYjVUte20>#&q9wd_tVEG$&8zZm{A_7AB-2tYIv zYlL8YUB3ZqV|00%QPN5?P#KnH4$0a<0h7nJEoo;EBXz~|ec2Hdn6jW3Gc&-6Fzkl6 z6~M7J=njlhwvhCt4V(c9xRA<=M*i_2t&TAoJ!C=a=;#g>MyZ*ns$Rg+7?<8_vV*T2Lr(*KQA~%+VAPNZTkFd9hB`DSLWcUS(!!H%80ppQa#_t zjX!y`A@Q+WKNYy(r>9PX`Y}G&t_pm{;JmS`Wamf>FikQ2(JsME59=5B(R^=q z7e~Dh;PVIVa`PMJf3pb;@!>7#?%|VL|C9}W-vVed3qZfApgFiZco9o0gAM*ZbIrMw z!S`BKEKZYTi;mF&=87S@Tl>x7N`QaC7;p{Hz{w&MJRL&)^^or*+^&iu~K+T#wt{ z5t7@O0CLN~Xs&!(P8}QqtO4`!y1tAl>SY(uz(K2`j zrE`z2-)XGkD3g+kM4g@2q!8#$D|}QS6_0c!d{W&|mRC42vOb`%C&rLqdUP~Zwr@zv zdA@A<;e1yp#C~KcXL}0({LR4X#Pal}-(>j~fd6_r-lUBne1JdbD+QD9>A}x;Swvx058suxwI+Bl!N1c0R1C(RPhLPRUzokj7Uv)j(-fj+A_!u{*3 zSDQX%^J4xiFR$0_Ph=LgTnZ|!-|c+=c}uFeVRrv`{j6Uu=D6;J#9AYMieIz?+sgwy z2rr%h0}t$7UacA%ZR9{6cqxLS$V(C{xmwm2+N}pU?R@q=9$lI+chn3O+oa{g=H_Tx z7Fq(o4ebS{%kM6-AkJLTNq`-SKT?>*`h&)4`CkN&QyZHTuO(?Qe@vzXFIogCUuO_v zDDnsrh2<6I7gm%tgMFm4+Bxokcy9yd{w^<)hDqm4w77O&X>s&Om76R)M)IXH6wX>~ z%iHzIJjXIQ=aG7Qf+&G%@NOTe7*N|-Ev+m(O_qWyuVMe-8k*$Ai;E{8=O(+RkD`{I zC5$)TNp$^9efNnoQOq1@{%HN?wWbhej>XX!SgWRNV#SF|(${}^39g%?=XxHSYW?5> z#MUyU-116zY8{6wnKV6NVk$lxmH4RZkg@5CrVsgX zb~=AU3O~PBYiUJT01*625N@p5_G4pmpodbDl?pX(*=KiR-~Sd5+@J#zRFac;Py5}w zA;ob?Qal;o4}Lplx^-{iAyqotSogu(crchmuV9pjO-9Ygkv&LuDw;8MW(Iz{9YT96 zUzsRb-#PrMHER(UO--er04*T#@R-zmTPp-#@ma%gg1o${Wvvf&s%DCy&q~=nXB$H< zsOI2!Cizt6kHdkL^b^_Yk#GhD8f(q@Dqul_wMH|bhBde0+ywdXhZoDlOhYL5S3f-2 zz05SEsu^L?m#vvcf@ng}^Mgi=csTgm+b~|0WjLY&#>?R(&kcF?Jt&{Da&y2|u+hhX zoaj-6O)&ZxdPCZ9i5S*OQb5|81tr8DdG?Skgz#aRSw1{#=}^6LfIiY;UxW9{2Gi5$ z5Em|_eHlIREcT(B_Wip%eEzN!08iJDhS(Ah_Qc1>x4v>*0!A=h?%R_g6KtEe z8~jwhVKQd@vk%?dH;NJxWDYk$-qZ&OGmD|acvD7AP1NTxnB~X#k|in0$CLge*@M7G zV`3TWxRjZS>PT<7K=ieZ(9Nr@ND-&Crnd?6!(cJ{Z{vj)w`sG|qV1oQLXZsWSGC0XWN#>QIq zs*h_)`TU{xHB(mG7TeF^91Ta&#)dqf&V1vO0F7rvxwwV6(rOp~+s#X@@Swrmqc_35 zT8Z^JgP=OU?o;Yl`mBSxVKZ5?ygX`S6UJC8KHCUewmLup4TgVsNP&x+68={wEVY#tCegF+K?nLhbo5x3_2F+Bs+eg6cM&E!N zd!lu;Nod&Pel|l3=bN3A{ZH25-nYds?~h$Z0C2kk6knfkDIsv$hE!=m(EEfRbK%;iEB{!3ehk7?6a8*{ zk7BMp%C%~kmC|&`2x~lAwKsR_jWMQwH`rP8K zj@7S|!#46?3eriHl_|TFd*rxly{2Px=Ip&|OQ9>h)_5CffHq&guL&$@xXvVH3G}dA zBVqL-rtCKIwa|A#0@XxWU7RF*(DEuBc!3JqJ}j<%+R8H?VkV2{#jGSwC1;dVH`5mX z`2O@z7$24&_2|vh4{LVY(DL^W%vK(qZP89oWt#&SgGHAHyo~)pFVnY918)%6KM#pG zj9vr$@lMv9_=Eba@M!qehd@81c*Lkmp1L>hHZY(Qb5@;p+{u>I-0n(6>1j<0%#DBT zN3JBu&NgZ{8m4E!AAFVE;7u>^9?jRgv|ITY5+XSlL_|cOt!A+Vf$d+c`zVc@H#<~a zEptGdBB&K3xku-KbAR0_gMSJik+i)Rts_|u%d@gT?Q+lA%Rmx7E7IoS$4INQceH-h zJ<12}*MUXNMfaC@qwx+I4zj_nN)br_SY2NrJn3B!vN0EH-h6ikQ6{cVrU!O+$J!tC z$RIq*w6G^7F0Z`a4=RW=QFhUQ4>J0rlbh*CvDB!TiIFXe-<`5OpC?O$5hAF=4ZT6 zs_qB%Q?Cso7j_vp3YKCbf$eEdB9z^fXUha1EBadw{dxnNd@66a5(sG2$ zxMa>}%)X(XUWlk>EE%GT1hft4N+Vl~hxKQ)B2Izy=CV7|i=rWfkjKpfy~&T;CcTd? z=bL(Q{d{|q1KtJNwx>Y zV9#(obnP*_#7%+Af_kXoak;pD;LWro23z-xJByMYgRdH#Zm;UKotT(eu-ea9&fmmn z8g=Nw>!t%7!O?Fc(r!gwG{GJE0MXYfTfGX4m#m8lMEL2y-th+_fUQV*x!=}fld%j! zBz)`lJH}uP?fc8R2BfR9uWqR%&d4$_sX~FVlwO3eU+V1|%*+|%XAS)$qXUDOr^*)v z+iU<~j0~(jNHYg1v`3Rk=fT+p40;EgzelMTvCj(%3k52xc})~|ZX>@tP=m9;(z4KC zr(|P%n3JR1yVi)uTd8vu=z9)`7e*z=q)i#PHV9ly2`ju^Q6z4H6e_IX-{xa607;a)l~f?}v`0xl>8rLmV^@@(SGv z@=xPy4}DYC)mG6;7dG zvH2>SD@rNqqIOV63o*!{Tp2NM@F?%%R&r1w?k&JO21J8XW%uVLt>+mT-$uWCWHZrU zLmKf=&133k^Cw#17d@*89+Z9|4@?=6Gog+6unc=gO`K{?FOA(gp~&|+z7CXQYohxG zjML--txc~)zVKWvV7J|Uo|E&Vg;f3RX_ML8glmzuc(gl-8RB~a7(QekKTsz+!LMXvj;P@B%q%vh=Cdu;h?Mv z+p5s$p)xN6!Sis0bzejIYym?2(t2XvuVMX`?mn6OS>Ipp3+puYz}?7NcHO$n2l{*P zS$5BdE5HR6CvpZ0W1?yuGbK8QSN&kBAZ5t`%f`Prrr@W6+W!7lp7OYn zrv}5Sa1H_!@nfaTx9y#9{{_o467=G)A&Z7g7W8Xz z265fQ`^uhm_`Hc?rsNpKS!hg}m=_o^JZw2A;;8;X4}PxzdQjGbVxxF2U6)}6-j)*k z6c26}lk`rA5|MkR0 z48v2+)wu8deJx%3!zOEDauI9nPL7PJqK)I6^}uB1G5QAhcj(AFl@_)uF2c|u=1Hl@ zyfSUcs7aWIxCjK4Tp6)jyNTx&l{u<~0QLss0YXxI8yfwDPmTlDbQ4bzgK{F)Ms1cv zF^kS)Bz2<-?kI2Rtgvo%2_MANeoCoRrla-#r;z&wKv6EB=f%I_S8ID0Jh<84Gx(BK zGUJg-H|}b40rp21OW0Eyo<}p6RC$Jf*@NE93aQe|U=xyKRJN(Eq0>RI1h_dk!5Jc0 zVznZklo(kSNMN@d$e#dI8tbzy#%=6>+WA0g4 zra$;L?`p7ZVeD}jocpKW)XOCM5SH%Ws#?hQI?rP`d6+dZj;YXjG}n zt;nk3LYFgNe6VBI2RV+jVi|djAvi??YNK4Zuy&4+{bRZ2CAl-tbfCwtxjUzcAAT6bY$W7PK-HJ34LrBL^0)ik70!nvCDhl{J^L)PV z>z{LZao0I}@3Zz=Yu8Z{?i@&pY$%{KM9+s(>_k-K2LbJ#|4TbhKfTb#K8q?K4yMyO zKJ8rpVe_pt34_=TE|1MR>H~a@e7}iDM?{PmX06~5BgPYdFdOB~B$`A(HU(l`UBwkn zeP<&pLqwGT!2IS?BT<^*y1V~p=3jgB**T2k_~hr;g_(7qK9$js0(MbJVq+oh#>S0~^y%h=2a;W_ElrnDuyqjdoHTGl?JbVi}xVDn&n-Yu<64e*!-%48+ub}%wS=%nswADYKtotd%zx)UM zV4#23!2AKY_^i6Vc%Ad+FXp1Ny}dm^WdSi*D49cX2)fd@6c&8)8M%{5ty_ZkE$23Y zny#)Xn(Bra6d&{DMF|XcMbX0j>gey{H!Zzd0ET4gH|L;LVV<)!$sR*_C+uNx2jKHk zCPAkOJ)W}ZcTTYjCXwlR6o}U;dDoB2KFVRjHZF&Hu;! z4&(FmLl<%aXW55p4;iRwx+#pv^Dd*~QG3HtvN2TjbU2Tc%vDqwptT4#>>f6f5Q1b3 z_B&0U0*5Mn=*!G-z>HL z!4Dfq!^xYly;!_AL5|GbK~e6pRc+9e4{SAEVz=Sp{-gLo&zu>rLLAVk_2jvfVm%dW zjW4aio4~3e1bb(AVpK$7Z{TDphsLlvZ=Uze)91xEe`JLj=z=N-wob1n6|N0;YmTxn#sxaWAd-hcc;s{I?D$48{+nHu+lABKxfntI-aRAV~4A2{`$=q z-Iv@`G`m)Z;@lCj$E^&jXw8c9$?5q>F06S6!#V!r4QkBlwcX9JlGvpw1pWAfx9Kc= zIVXzDP-Bj5ZSTWU^#+8&Lf_Sj<*Zww1PL2QH-|?+v@HDL31$%0;P5aI-v*}t**j`G zk|%(ja2QY09#;f&{%vfg2y=A3i6FJX{7{oX#{AB1SnO#gx7zdKJX10wJQc1{U8tzBK+GFgg2Ji5iYm=_}^f_q200tm0LCbm+RNAu%d@ zZKM_BUTf`xzKci=wO@UMQ{HZ3{J-0B^;>$b&iRT`|MvZ3k4OYL0plUlXt3S%mY0s? z_D(_Sme_o#UQ{N<*p6$b3Q2lLD?y7{ZF8p3vC`~xEsv7w9|$wJJ_wr_;8qn*qdB#^ zQ5CKHmhbvb`15N%o$%|wlX#M5TE|rlK5>Cm@Awd}p`Q%lBx|Ef!G{{1*VZQN(*%z> zJX`q4*;WD`5WpV#FQc$f8h`M4?Kwp`3@F$0^iKayuPPcH^B8~p@K$<-S~IbPATa&&4kf#;mXrNu!FQkNEt zVuNGCxh)=Dc=;Nl7{@d_XU)1=As$IIJc=sL$H|9$dVjy7VTyin1+ z?yhSL6_Pn?5HA-OM+l=bj0)M#+SK(eoAxmWk$Wfs%O;AE=0%{UpI__KbJrXHL;P=w z4;-t98GDZDdG#98pB5HV9-$Z$wEL1*gP~}&g#AN-#67ChJ9#VA)a1Xy6MK!YS=LTv zFcJIW2xMU>$9tq%2sUw$R!|UbP?|fINod!|LF4{g-dSaO?@VmxOi||In%UH?jXQRM zPHozri?`xqxr~nqdKxIZ&+MXW41CSGUvhnZ6$ES!24C4SJ(5;UFT-2hd=8hEg$^VH z1Sm81lh>+2PqY9Vaf*F$UhBz(;fa9>R^`q3;YqqFyg@I02QoG;A7HJ*W^)ckKO8ezv~g%jP#RYHTPh?EZyzlS)5Lul zQI^&c+jDIz-n0Z4vmJcOip*$Xf#Vm#w$y;jQ zC$+TcuZb&E67DX=dYf=8vzG7m#vIbVVZcWWNn8bsmVA%*M zdf^nrVnMVrWe8;GxU-z_6GKOy<4a>)+&J#l+YQPjw58j31e=7q-^6Q_Ajknehk?(eSSC@8i!*{{4iS#YrJOMEHeX?xh^hbmh0vTKf?0}8&%|hwBZC(I zd%9)}p{506D>M5On|N+L^PaTkM=u)-L&qWKY|UZ0EZNo;`bw5J1-@cg^Dw`BVTZJ$8`nWIgDPFyr zAen4~S1}|?TnAyOk)R*4FvkOa`9ZV8^3#knQNN6gawoGj|28u|t$2t#g+D1>C?v@e zcgP@{eC(+G&dWujTg|1aP8J!lf&y!mO=*-OtcXEwoqie>^<~Qjd9iQZJIeLwo14k! zc<|k#|9i65kX2zRXKdtV*|W~~B(ej++~2Q8u#lU}Amn_bP4zEA97e-sdq_E$!$LIxXB-*Ym1x(achn zilxTT!NH=%NFS%6{D3!u2mjLjl0udf+ZpJR<-`Pq?tF4LvNAUq=!*^PoQ@I)kBEwobO(=~ zL2{e4s*l;be8G>ATn8MnyeWClRxRa*sTQLL_fBYE_q)a_{+B4E$#fLUt1K!b-V=|~ zB4agguh}4z)%}nA`|}ssLLRLq-?Jr0GBT=J2V9IcGX*Q6BaNiDC?|n)MGSQ6+0G+k zFOMl~J4Im;W=_1aN~-#$*lrp(yeGKlDZ-ReGgOU@S1Flc4{iQ?*4!X&MGV?w z2H1L(@MBIDa@LJlSr3TB8i| z5xraDUVg_Bg*}gD&y74BPdCvI*K9VvRxo4YmC>`juOzjs_uq9aw1^A1uuPOK1LaS( zGnQCjh4m{dKVy+a2+PS$x&e4xSTBBYtmE>PgCA=R6hSejC6LAJ(?AY(oG-q(`2O=3 z4B3rphN!wWr=K%ssai3bt!0tsBs0!6qBy-<1WMnpl!!faFk?i1oAcM+x z27k^qAi1K0l$Ab)uPzsm&yKyI0#S#<)WrH7_;KO2-9E=YJO}`cdvFcsA(O^kt z2FOHR#|$`mVF=E(&B93Sj*X1<13Q~-ebD(=trWfMS3SP98b_Y)#jh__uAlvXkBJ%S zKeyxf<-CpnW=>ZCo)Vv)DfMxKw+AP|7R*HdX%cUslS?RLj?bijnR~YNbIY_590IAvKsF>^{(~Q_7C{l_1+si7*-Q8|4GrDz0E9wU&j8$&Se+NnZG8T<42E(_;_S|g z637Gv0b>l(^e%{;m7ysl0s?dGPNyCf2jPadbmjElo@S(eg@$+$nm{r5>(}Jn(*}{~ zbd4*uV70J6f3+GEJAxU?npL)@1cYcRIYxZH1F15d^fc;_Oo(drv_-gw<-UUo^9v^i zm3v0JA)ye}e2^DEJ(z=sXnp~e{ODRmUJe*=p7Q{oO zoT@!hev!1^>P0Mv+cR2U+@7eIQqM`TyHB0ry%-=o@PM({b-}wWM%caS z{jlQkhN9@l_GSc$%>OHX}mw{Z|Y}=*U%`d))^!A z=w;B&0y*(NV*-n?g~svy%6vLguEuQ;$=w?Mf{<#C-u_ac2IllhvErCU74v-z2T|+| z3oLh~tm54}F5V{t#8p*P#4x3X2hd_CnbqHx-H8dv@;vOzmrxaS4{-wsN!c0YhV#(deuvh0eg?AtiYNMeEH>sBJ;V151iZL{lh}{xoLx=dg;2g(24NAHzt@t)= zaU{BU?_emHtvpAx5!@e8!7nMkOX}g7zp&vXY*#V?>!aiWhs+4_P_R(gSWB_-`?%+` z8wWkGW`eP)DVSPG^>2aAS7pXeJNeI(0d+Z!g}M4Xzzhogq=uREJr1>lUY$noYkhw# zHzTLGCc%}Z@xk^s;_4>(lav|C$*Inx(DhO4-(cy>SP)O|uSa#SGQ;Ayi{*K`eh3iB z;kLMWs4?IH7!>1ODE?E@eif{AaNp7$5wY_D)d+W|7|S=t|Ay^?97)pUKjn4}||5Y!RJK~=67G2u^u{vx&olEAj2$R~iuPS@@p2LHX zOo)ve{aVv>;wZvSK9b}4zV&i9*oQb%vf}lRH#0Uijn_B!0%d9zI!a1ZU``pF19=PN z^XO~Ywh}~+1I-e~Lq)}LhvYh<(Tij)g9K__f}H|uX-|fq*5c&wdwLOQ)Rjo=hoOc8 z9+!=>3OJ@}{O{>vgN$K`hWe)P6C2v1M&#fZlEd0Hw#So{iwV%gCvOT?dRA7lF?#QD zYR~|Ujp*$$aL!7_qD@&N!$&V36UC=36Xc|JNzy{TQHHnTCY_r>BhK=jQcoG8WYFvd z1r?0FJZJ+6Qj_=k-*B>^!X2WRoW}H-dWLD*RgabmBI0oF`(zyJzR6eI$td*SJn(p$(r8GUtp2Ub%3MsRX2o-HU|=Wi zUTmvFjDvUmV-yyA+_%yaV^CNH{QJ%PzF*JK&~Q-gjzM=ETPhNACxi4oeyp!wtu<01 zZK9Pxia^@tV(&F%%f4M;p?Sm5{D9hDcUUa68pT-p?DeN&wvHIL3@&2Ly@i5mq!c7}7MRl193L&xrIZl{QNH~#@%a3FwHz1`Mwc%b42#|lp6xPEpf zoBS<03{4Prgy8&n%O><|-haZTci31a_FN(;_nG2&`xrHzJyaPZK9)ITZzF`|S}Ll5 zQ};%@EV_QeE-^(ox$ki=-N!`m?VaQh>Gdxm(LK%jvW;tG)Wu-NpbJXN*sH2YoO-wSoEZj1+j_$NKd<)-;mLP*JeGT| z&pTRq+QyJo^Po@bsZ@Tnnr-4vfz>er*Nqi`n^ zsxza5*q=*_nbr*b^4B#t;1&WXnigvHRVbGmJ69)yoD7Ts8FZ?g(4)oXh4-&bEjS+< z&<0mbeD7FI9*-zY6D)5vHLo*4ttMW$8Btf%&}D!Jy$lLUBLs%dXTbV490+58=5Kv- zla`hiEr}ww`rWhA8#yUEb~>g24RJ#mz`Su|b5q!?aeo;2fy`z4YB0Lvfg0Z0@S)|< zyXvyc$r%@ksJr=Eui~QDPR-(uGM!HmYgw;I$+T2)Nj-SpWfAZ=f^q_lo2i1!FB1SO zO0hlxQae$HU#|1v@WkdC@wo2+$^~9yG#OGaq%I~H0fzLHL9l5E0}rCW`ip@nNQE9u z&;|rtz~Og)XXn_z1B`cQ^8r5`w&}_p_bL3l9OKVl2i~SKfGd6TGg6^%?fBEDPk@k( zCQqjt>JWzG_>G}3xl){N-3!sP!4#ZbD<2%AO9%J<^XG3^s)u*ZSJ44NShVfQbf9ym z-3Cr&c25rn^wzHBgt$i*`5q((cP!w(nng}B@w>U1t0ky^{>Zh65hfP$laEO%Dgl(p zH`ftX76eV~y!j4?vJ+v$9!*KKsTpZkD?omYd4%r2s!tA8Aqo=0z%t=k^j(YlZ~n@YDpTNas|pBz zGC(S|0%mcjC;=JEd~VN+5nx}>oup zA3FZ{>C*pKP6a7;p8``pVT=#O{Ul&fOSAb#Q6WdhovFiTz=jj@fFJzO72Pb*@x(+- z8W^Wd#IoU_9N6GHpMtURL3T73o-HrUueko4ci$(X*IHSBG>`6qFYx837}pf(fNZ~V z1c#%~J{g}LwhVLckv!($IH5z}R(>CfE~?0G&l~|TTM2G@jhzk1qv{_E}f|@B|;@E{>d4FfP(@ zl2+#Z3xE!3Ap%xC7hn6A)lWi2lFa=jOO;AfUs35`_YVDpbzm$MR_p>XQ={9`pR}5Q z@F*~zN92x0tI=Q8i=!X9N?_0f5EKujnVOkxS%UEwHZh_&nJT=KkLQGZ{;^Tu(&L** zB++MQl?(9Q^?R_BY&5M{2udLPiA~T=B1+Pe`o>C>PXjNZW9kittOIcho-!pf2=~AA zI%gvNPLbhxWqBB9Mmc;a?K7QLryob>}61_<(Bs1xE zrWRc$!~oh>+4Gnvs%tPc{9%wBYYd{!-*p`yXC9LomgNQL;sP%T?bWyJGgKE~w)W=@JqdTkkJI45x`(b#QR#PPlL~VW8MR0GxokCq_i{6{iV) zvC#PA{>ChcAnR~+6h}vviwd{WP?!5qboxs8F{ppe!>DXCIG5Z^Z0eJ4liT9E!|ime zt*xH{!-K5-qoag=8!(rp4Gf+@yYK(`gF8YE%!-xPPcJt!JiWZOZpg_Zi6!Fh+*@>4 z+`VOujg8IUNlD*_`l{q>QduB@TjchQLmn*U5URD(nW^lSOp>qkj~q0fRK2KF#`cYxIG#a$!ipk=K}|QfgD;t<@*se{F9&L}=od zJo^D4Fr($uwDt9PRr{?Bmlf15{EYE`XZdepGk>su9s0kyfsW^Wuj0CI#GS57sz4{j zbl7&*AewKdn){pNKi?!Vw;LNSbj)shMR*am_U!gwdK@7(aawsR<-&0wF62Ee#y%bY zs+TSTYJi=>JMb#A=c@){AzpCFdxn9Xe#3LfM?!EGIkg858WMk2F-7AXJf9%p0$@-t zX0(fc{Ywa#7n?Pe-24Hq-V|8rgzv)j@Ik}?I?EeivR!5Rv7)Bt=&0%n&H=ly>PY9Y4rMQ zyKs*h2P-q3^Mm9Bw%pzW+857i1u1nSv@J=%{4qVST4^ID^|G_o{>17C2=nNqd<=JD zi(YZ)#cKr0xXn9jU)i&10%kRBZ{w$v+kzMogspk6-SP-u;deJMS#Adc!f!RXe|Ouu zx*#W~-R9hJ8IeCH8^d&3^k6{JbE;^i80Xh(arflU%XN!?+rV)wVuNVP?wmHezT<@c zA`m{e8FHaTS~8&-ciU=9Lu0+KFw<`jq@=nUI_~|3%D&{v6#WruJ4&Q?1M zC`**3n77Jr`gBI~bPSAzI0hEN?B}y089&l6P@3QDEnUGo8ja0)43wk8E4$7&zDcJU50Ex+0GP26hSnS~uj7k}3=5j9_Yi76uv_2f; zS+qDQMjF)q_UkR1u~UOGUZ76oK5pgi?k<>OwzO-E0cR_DVAZm8*l;6xu+SuOPKT|y zOzGsZ;>Z3z0?+?IvfJYl;H`x&6YWDeN9Pl*FV9BALz1&ZVT)CnIm1qh2Hi41*FuE% zC4Y+#AIJ-Rq0VG-CYZv0&(zdZ?=1x_rP6%=iVHz7r|AbMXeh?f&VSDmex04kUCcdG zI!j6j=tJ6JId79iOHyBgrU&S9fGb`brljcC203?H);H?Nt=RFk{K?vM>nyM)cyMabp6(>A7F0$1<}1K)hBG~q=@ZNg>mvDjx7gN=2Eq= zee}#cAQ>{Xw6uiu^z=+k(JlsPPjkQw5D^r7y`H3+9e*io2j(iYwcV#CV)01^(~GXa z954fFyU7x5kbnhEDjnS1+yLFj!J+xz&0p>7zZh#Pl#9`2Lz{QPl&Dh|!uoe4-7-Fu zPwoG{`u3i~jaQo*S)_(zMk2%dX&_(v=H49)l*%%6NmNA2%aFJus>RSt2m=7ri2MT$ z%;(ZXI8m1~lMiRA3Kz{ihH`};8*^6|%n4(qkEu#Zu2O<1NQM3&vErk@r)vUV0&l@; z(~qCGPPKJ)Gcq#X0=E!gLNE**5ro@+_E3*`0XIc?Fg*r6h=y8u=kUg+12ETd+ z;_br{{!e&rbmDCD^S21<2*aA8Qf+JN6)E=PB6cHa6_8Du}SkgU~+u>%0TUq`4@Kb%aN)oV!3wJpK-^w5_K=O2MIMR zNILvy=U}nwkE9ePRHkB`IDg{8pErT=cyh*87dp$`m$nsh9MvYL{;SN30+{6`$A zpRTr$kkg{UQ#g0b#B}ur!#O|>B#h_8CLY9LhGEc?-3$3Dd>!ib8xa#WVCMsm^JMXw z*_Lz-oWVkN%(`DIS12K4^RF_P|c`gxuwX*2KvC49mpd!%tUQ85a=%ZnjUlb1=CQ_Z~Dr2ePop@KS?q~ zf0){T*}MmIopjVhng@&Z?*iRP(=IJvu-x|IVaW|r_Rz?b7@@$x2F-PuvN)iWHU0dVCRC(~w=(EI zIB<~hVn0boafsypH%kfG&B||AR{@P{6Jg9g_?ei|bVwV~-92$1eheh~Az{*gX&?&8 zh01Wf{jW(f*oeJMFaFOHVmknOanGd6JPTP!v{QMmxQ%FwkD^%ok6!aMBn*7LIZ>G$ zapvhM`h2P4?oV;6Yc(AzYipk@{f{hu6V6X0Df>R$T~6#i zLtJKiCiM=z-RdbK=CsPo+ZpPEe~cvA=g_Kf+L|jv+8Qg`MezBp+kEojLHD48_Jbz% zDn69gO)M4*k?BY#g1a=lRW?mybTV&BV|e&PO$bOjX}31Ml?vt$T8-F4T<1DE)n$XCUZVV- ziQ>#p8DZZ|E%lQ!6qsox(%o+1*2p@>J(@jWxcxQ`@vnA{ulw3{F;IhON?mf?xzth( z&}0&9J-=-@X|LfMrMY$+QX5bk=dJG=u$4w6W99-zkOmc1pTe7`(YdF$XKQ$y%yMTM z?1(MAlk{g_ej<1baeN*t{j9;rNSSJzZulr26O%YoLsN4Y?J_Zw(Dy9*fyjX-S8_dN4C z)KK9xwi_Ggyb&tqfRb64o;BA~Kg3rEZpItt3T)d?uvX*ixV$cS`ID zE#|8|hOZ=v<2iFsGUVpdrVDAgzb(8&PEG_1ot(6IR;XR91ud>FueUQd@#=BtY-i93 z53sNUZ9%0iNCn_vuJLz3xGgsD-|KD<^H0&OFy=KB$5Y(O2e0R{ zywg8KGTn>8t<110*>MDCv-S76=}@aT|HdYxr}CPE)B7iu6wHx9xJ8%@Fce&{4O<=K&B(25}g0XzsVBYAZ1nh zqT!mupBH1kFdk9+Sj*#-)lhZRJ%@kd1UD)nd)5*m0R19$^4^o z_a{|<$Lc8xtEG2cu%A+9d4|XJI-VNiDQNM)u|HR63jaB4YuUYSQn1;ynRs9SJZd-r znHQuC$|*GsOwDKS-)@jqrlo0WWR)7P;RwCLDVX-O zz7P8;4!DzB)y>C>@;oQ)*O1jxQ(^D=c@aUzvW`+*AVM;gWEqd*^ZesMLYQQ@va&pa zbIT&e)4vK9GH(}#T;KOCd*u3-qr%UIX%(xbB>*xLrJ4SBTr8-Krq}wShA^lF1hR{F z?T!0AknQA;qkoM>Je7ywSWqS;A|%jY_C)UO8f&TnYL#lSIFW4O3NR=-htxTlUEico zO^%l#xuBtlqR5c* z7NoNCrvG`ygRV>Dg&HOX7Y1m-lRjDe&7Pnu_X@sOc%Q6;eeK1xjy+Dn0cf5qGs8Gn zvfSkW?}s)F5s+N;ES?IGdLEQ@;dlkjlh#4y*qZ!Y%DIDh=vGJ3z-;HI^qVz>vYN5J z;-c6T(7`extAxdpu~KJnQ6Qz%kb@4;uvrCs22aVfL0Jw9rV@l+KXBy5P(!@j+qO8O%&>pH^Y_O+A4z_4gg$-> z3wv}#vT*K!oqM9ay_UsL$UYhcy057|)f>k&Uk&2~R70s#YiM@39e451uh<{~XoK;vbumEP?9XvR@o=Y%d(gC=ivZlC zk}V3@>c za#$kIR-WoszM!zS?&K}V;n0cpaUdzTg~XpmTSHRmUVUqJ+~2+$DJ!i6O>W#gwo;*NbRUI!p z+{o(1p@BCCIa`ACrg7^syADcr1*g$t3^ez4@_|8iNJ0b zzZ!PBXWpm-)8I+&YEyjg5oV5IqONc0=+QZZ7$>eq=rukHGhd&qBZ@xDmNb?Gd=}(X z^@kuy=?4!!X??G)3F;@~Fe>GjaXSR58Fgds%bv$6)iT+K0|w@7R;y6yC_+y^YH*Np z-&u4!5pT4acM)ma&Rk=L75UJu94_@qm<@hpcf`b}O=JRVJJ9^)=|+s^RnW;uhuNR| z_}Z4YK<9IQDo|4O9V~aB&kT=N5I$5i>$`Ml=?Ld=DAfNf8o%>Yfu|-ilnR->F9fe86Us6r;EeWlH{b7eypzJw zea&Z1XFV|Z(;e2-t;o^~Hdiqppf>qi^mlRlMPU5LC4e3oxipgq{YN-rIKKHc$?!Z% zlaupo?RHKZBVL;W-;NFO!f=6NAAM`FA-aQ&?t4CN`rvNrWWka)e{uO)CEA5e5Zs!} zknuf>lDopkz%OGy*lllMqt7P#J0{pr>rM4R#zM4c6BQd-d2*q6#lk|uPvc7*Su0V{ zu*Z|=#z=2NYgv_k!ozcJ?iTayh^yw$>ej0x$%DWLJ1F+|EM%wo<62mIM-I+KMaJ^p z9cG@at*B0HMgWL#obywPATZj5ygHmZ5Qvw+2HjClK%ALNPB+Z{_8rPbQYUb;w(s5I zsd+BH)WI38WB~Il!WJyAcq1k^3sF-1P*6L0Ig)2;ma|5ysV4ghy`IM&ej>4MB`}r- zTrW0p;f_=t`KRWLtR=4xMSUbWq=$mmC-o*m3`zZ8^V5QQRxURvEob;5?Ff zz%_{gOi4C2(qj{TguT-M|CRT*AEs1<1a6c9rMAEfB}r5Cwgzcoal|R4aKD z#u963n44nQ-@$FB6u;nQ@bV*aigkBoYlOPkE`3 z1!j9sEV_Wb6;6dl7Bs{yG7N7$spe{002OQBMDf&DHsPJLHFK0!}}MozqMe(&BZks-RAOwcZjp6)f_#}xt;qw4`7FhC2|GJ2c2j1WG*qp%ThoDr6kHK^#L;CA94UtAx_@W^2c=a&qYR{U#+ z$3&Qd=%yT~EMx5WGt|?1L!WYba>UBcm^PT2kuM7sb>` z_tc~F>grV+BndUr2@wOtBmHlGXk?Q6aJ= zBvKm^%_YA^jb(V9KB;{7&D29ZgW2b`q)`d3k02T8c#-7WDhvQm2*F?I$Ux`nTQOZ; zIeGC{V+r}7+u()scfdvzYn_~J< zE0ZI%Onb!iA6*shVg8aPCpz%=-KEzxEgvog$pCV0DVfOS8?_KnlVNH)VxjT5(n>@g zbivDaZFEQZ{mD9MqRUj9C=@Yl(PirE>Z{qVEscb$pV8%_#In(?nKzH>F8?FanEaTs zwK>+sMnnJ_!7u;4-xM)36QBCv+)(n+lRvb3T&uW33qNAkE4ac%lfae*N9g5qCvNMd zS4{nDJk^^u?r5?@Rn?|&KSuMq%Mc4}I3r~ibb}2d5Z#Q-wx{g|T$EsFVjp*#PkpjB z=<>PXg2L><^Y*P&sxeD;A?<`Q@P=+2PW+?FQq9|A5|q&=oEdE_HLf3rY0t1L|uN2V41<+~?ONO3g6e6^392EEyYl6Bw2NZK&V zsR5ot%LjH2OU0*+T9#lnH7_0Ru=6l=8|}}DmQsX%925rQGhw7pHc8c!zL~BX@Ngv= zKB5I7QaU&RTKdgiefIO#jgP&U%cf0KSq=q~5qm?}Y>bTy%{}!5I6(xb<6r#fvcZh{ zI)mI_Eozt_p4n!K_kUDtXLm%sq~Jg^S7@VWHLb2V%)n$}4IXWCQi^#)MRgV(U`ho_ z$;IL*)v z*x*#!|NV7~GO4RMN)Wed)I%4X(le#y0S#*R%ZpRQZEDNg`?m(3F}yVqq|iDfRi^<* zGjz`$CinJ|WLmV#{?}nK{%r{#$#}q|{j$tHY#jRCl95KiO8pL;KgNV)#s&gp>s1>m zneUcr@&*|Hg&@V|kbBk-d}nX>7}l3mag|p@zV1IdCL;hs7P*8bIT2kL(bEIeE;y0f zF)t;n{*Q(IEV|G6Itx1b9LH8Ez{mIH%a`8`C-0j3|Kj}@li2P(84f%D@*>-*XLql@ zI3ihAj2LziH?{@YAVVHW^$E~4lgb<`)j{>R6ad;20g+HqdP~tcBVXvo_`bZvW!JB( z`G&MJ(%3PTzI2A?1h76I3iPSZkv<;KxxZbVo4?+%X(gCfy8C>tCdvoS9jO+V*+vb7 z7#y?aihzeaVfJFYFd@5%l9aTc0n6kO=E9M^pQjYmbm?~Qjuj}7CX_hwoJDzro`VH^ zCNBEF1%jijU;SI)e*DkwBY8$b)h|y8XBE`QD3MtGHkiXFB$a6D)>iX_U`oKk;Y!`y z^eo>!Ku{nvNgb=)2df6{;Yk|mgp|P38Fje6HA#98IsGCqMT_a7ixpU>MISrdAr>#q zjO6u*LrLed1|##&(s+WbrSW7QLky+@$4xen!k6sXSu9il2z^_~U6QK0-OGE^ z*qmC6{Q-z@Vuu$*v1ok+D+JEZGFvGzz7ygIEi+SRoQ#WDeKx-Rd-Pvl=BWG|K>d9Qm`&<}t4YGS1~EB9+>G`yVC zi-T#{kd!Tk5`8h9ftDpdOBBdt^rOk* zW2P0W@9PSD!!p0e{1J*28@G|oTw;4~7Z2#L_gX%L)*f*4gi#rRg3pG zJIFv)5hYe->?PmZ>%AV;Y)gEu$B75*NX2E?dEpydhKhtse~)VWfqB09n^q8zVNh>70{7&zSGpbDKaGD zAbf`^U2NDxVet3(XU|iClM`|2f+BaB!)QydS&&Ibi;KeKf5|ldIj>>r3|g^f1Ruer zprD8Vt&6D)v&8}-nA^jcHFP(S~_PZ+-i z>7W3cXWI3?=A+9i1#_!$X_pFcm0>%m`7U+Hoe!lneNSRK?Hxe)_8g=K&!4XCD zA4@tYFg0WHuDLlS$@o^g@|m7 zhQGY)uWjg9p5eTf5&P0q6t;62{eP6h^}Cpw*0`0J9M8-mz%BbcDEBRt_Kd!a`vn;iurMNT>3-;Ow$};|Q{{yfJ)Ic>IGGhm4v6bC)k?^P~K}Idi zc|SwS4yaIR%@)K-ad89uhcXrDUhx1@4i(oW%bzkd`tMcYS$>-_{5kRX@iYpP#mm(- zHAhgmm?^YaG~}yFjHQ5klMSDeN5CTjA#Ct!c#i&#;L^N=yyU*9KdEQZQJYFt3CREV z`{o~`w}l&ybxPW8!lY~JxFHazw2@25h|JgV*}@0Pf_+lNGS|G zeDIx!)s5K3Mzp5x1LcJ#rk553FcU%;6_ra$UffxBF0+#}RmK@5($mvnXW~qUTV}C} zKEY6BvKI3zE;yKG{r2q0SaKHyx3X24n^GNba{Ff3EmRA(^r)7wZ2l3N!-SP?OjZdD z;ei8=^^hgjjA>Uh!d;9Jn!lg=35P=mC2)3GL7YWxnX`I9#gFbU0c1HNoAJ+7>D(?D zc{Qk<2VQQJ%g}tA57n>htPV8H(m(JcAO)O1q;GAhn$?ELxBzcV z9S_hiZR>vr2;*rQPa?WKA9BEAB&3piK!j#5RC*-XN^n1-Kj+9Gb<^N}|JJ?q)EP0a&rPMz z<~BJF4!F09W6Tzn%j_eA&O46Yh@3ZJE9>8!WOTtgY%#d(0s`c!AZ;)nZJ^4sj%I3h zQsD~Q?E0eVyvydIh>SwvkE>0H3Z$xSF~po3Wc)nXg)&ZD-LZ@bpbobx?L2gnPj4)QPPX6?*~c!4P`W!l|r{$q zN$TrNRmfURm(H_iMy3LMERhimU(0=-y>46feMJBRz2CALx-k>VvRXP@8Lqw_D^i6^xuHAiUr*HIRFJ>w6CCugQ{F zw3E5< zLf3D8EoBs2ged__fA6CX>I7nqTk>jF|75FR1q&ag@zXiELn{OX_}=X}J{k&`hTBJw z-KNa|xa3kGcnXe3W=#`+zc>Aa82;0cnJmfcsfD?4;*M;9>ELZQfA*>@aiv)!6=tyY zES@x$L|m(E+)LP&IcgE)W3^c|0-KgYqAT3pTS|^OpCTO`G-eGfEwkQ=2z`tUDbEcC z>Pf$L^FN&(9)J4>rs=sS8Sa1<0GqO@>2~35nhZ+9)&r>}VF~eGi0Iy{DLsQ=@i&KG0tFAU`)n2SIHKVOL zSgaAKR`|?X2_Q@i6qb}L2i>XuYExG+HvU;lOs_<$QR2YGDl)$1Jx3$Hct7*6%3XVI zd2B&OFha!e2^PuU>&x&O-mlemetZK*Bcg*KjsR1 zRTlvz31vX-bavkmMMRxJkdQDMQCg@k{-kF|@}qJ;?qVia3p&L*-4b4A(5l#FhwOQt zAxN(s_zTuk5IfWnL7-9e>G)$!El;J@Khw7f&5Vp1#%W|*8RVe(sfv<4R`QxHxQ(Xc z4y-k}E?_C#zx&YqlLIXgY(8m?j0>n_2Z=OdPUU^Ohs@8PbXje)2;#OfU^=TS>p$we zBbkZ|)OgW+sh^u*f4Y_B@6qK(he=*o|mq+No zT9keO%!b5Q;1lk*Im!kb~$r;ga_ophQ}T9I17{v5qU$=GOVx z+utG&*>I;hD5(DcZ{AOlHe!$CfAj{7L9v^IA5of5u4?|h5C2|I8(~PA3(#5Z1&{gp82v zSwcb?5wcg=qZG-=%K9p|T_j~oWK(Wr&qRn)W_Gf&lfB>btKah+&-=d5I^O4a{o^S2 zxW3nQUg!Lr=ZB37!vRibQE*u2W6J8CGw-(Bg6R`+O(j$pkRE9Rv1~q`KNZ6bI!;zY z?{BH2eQ>{o&loS{_r2e0QV7}3I_rJDY~ys7){I-#Db*jLNu|w#y*oUGzdJMlVQ^k@ zO|SAdhcoYqROuy??$$Tj#CANS4Yw?!Dn2OeZ0KGR66zmtYHYG_7}XfV_foo$zr23E zku1`k@GtZ=BmN<$Egt3n%2n(0lCk^(T{^_54^DTHIg}W|yF!aBy% z6(g}O!0w9Wi)GMDd$a@8{%!}y#BH$)&?hH3SiPrhf;Q**EA0-}6=rxZrj97>vW}E> z#509mC@E>=@=Unv{rz`bafw$;6Hslv_pR!syjXywiqTCl@?tR5kO;V;q<`zX(sVct zjowSY6&3GKwu|$OI*im!IndOJg{Dh@&;Y97X4}2$EpCAvzQ2=LwS@%2m=z{I-N*Lq zdLLiV8h65${8lhNW$N^({JgZ9$7u3ae6fgINQjA0?#U|rb$zrJ;w&o4OT2CY&H2cT zepUFhK`P?WFdV)7X%;H{W%p%DHnVBxaL1kL(gnF6GB5h?RzM%C9odf`N8g_|Av3ts zpiUfP^vdYDxmH4={eYNj^IM**zA!eblaQN~NbmXT_dXCVSp!qkY9GCIVclxVp_3|g#F&KvSe%s>j@?Bl4drP*SH_1D~--^FLh@wpDi=-hJ zswS*`o=@mj7PRjxlhosg@}aWWa&aGG?x82g=i=Y)P;A`pbZC^qGqDWIsZ<}CYgu(Y z^8sh@`+9S>=ZZ1^y}B)M{%fpg=(zz}EwO$R7%W^FwGOE@6yn;|<&@7jq<0yn9ox*q}#yvWaQ*(i(}H$w~H; z{*&$%FyO$|I6g@v0IQFN*A|3JeiCmX^>khR8|dG-_2c8t7o9GfxcCR9k)w@lUGw>X zRQmlo8P!Q)jhu-hAyh_$M+Kfe-TioL&g99; zZjPYi+UnCxx6(TTBZwkkf43b9Qt#04+#W5KGQDO_0pkbacYTQ8Q+b)ZJFE{ulJ@~( zAx;~+IrNJ<>Fc984jig}r~VWie2xJxiRqNu(mi6zi#HU$2Ngr!8uAW>7>xpU<$Hb( zf+g=m)J!70dlLvkvs175FjELvfKPb&LMLtZkMjHR_!sKAb$e`I7%NwPlSG_}wjys@ zrhtwM`7*U#`^F>~=}C=SKZy?kc&G3y1=l;SHg|5{-d{eV9vSp;hj<$H9fRq0`L5(T z75}SqQ*v*DdnWlhryGwwi;+!?UA=>!pDe%a4=BO?2|URoMDpS1g~sJFj%61<$it%R zh;dm{?wC?HLU!90Yd|w1NNuE2DtGU_TW!%Tpp4WI_6+jmV4OW^&-3&KhXq}@ zF_t*!#&~~jVHB^4_rsb9Es|nSRfNimp-PXQYC~q=5_r`qJYV4d%XiyqK z786eXm*~TbNP~l)28E!h-F(Iu+yjg6)k5;k+>h_-nqGhS@Ye~Kp+{(6aQ|01Ge3Gm zug%tEYZ}rs;;xVvDozjl)**>+*%Xq8IO*GTo)9hfgZ`*XksfQ$`7Cqxk_lmcOo?Q6 zstW;VDnS3#FZ7C84*N+fy&(nv9QyYnI)m5*`1iK>v(grPy|Wr5bW#e~TC5wwpS zbe>C({`-6JK>n#vx4%Xx_w_Chzk#Hx!uQK>9NX^noc6vr^;O2u$EPi(?kUSq6$B8= zZAFUp9BQX-5_ochKmAS2Qf9R=FIu;lNp6siHqk#}j=zFBn1Zu;A*WrKD&}$Yr--vs zB1wWQ5A64>o{FbJ<*-KZiw$y3A>%?=_!ghI^KRo+xY?h6xp&p=lA?k7$=?BOe=`L+ z?Czae)b9NDlU+Zf#=D7YdPW?~WfUhec+|D{dB!=>e=B%>PV@eyhZ#T0MOh+bH*qn? z^Y|stTzbVtV1zc11zp4gZWe_YPNah}NxCuZaZa;P*&4yaj0~4wL3o(8FoDhCwK)c; zq;F9$meJj>KUKkX)OVip_RFA#s6;jWUl;;w2jLH=pPngj2KKU1}M&_Z-@u+}qS>vzt>^;-aCnA)9zgpVf%Nz1laDNotmHm42zDy3}VwOCPh@JuGug6Yng zBCwU^6d2G`e+*@}#@tM1_T{RXUp@UIH`00rdbS?;X2`Y`9ZB*B|63~l64Rp`36lxk zSIuow4fnnr=IAxgn$In9`6(1}Lo;lPsZt|ur{PdiqoWnfw@(y!Yqk?1P|8HctBYfV9jMCo zpFa6=X?@zXnFU(q6K9iiQl0L+pJ${Ec&XPD@CI6=n^FnsVQ$83U^5)f;DZV5hVIw! z_vRRbdU;ataE%%dw&dO`-gC+7GtX*fmEN}~z01SQ&{Ek-OVVp-h`&#z^M44+_NQYx?IaDGRWtSeRMfgP=OBc?!O-Pxzy)%H zj+IN~7GRvHC%LZCE)sE{_*4X%g1^JDtn&wt*F(Wk-20m2Mo{_>g^{Hge8^+M?P=t8 z-st8hX?3F;*{M!(Y?odnFKt*;CE^^%Gy5sgP zsW}x-k3B;&6N$1y0J6DhS-9d=2p!3~G?UY(T$C6k(UEkjOUlduc7nD-=mYvi zDsRCGN?!66sYH^NF_#7x8$*Jp-O6BxezFXBw&U(w_RM*yPVga4E<+)0pvfNGjc=Zu zFt@kg1IXo#%v7;9=xU%Il~++@fZ6pJdY6yn_inD2Iv}g_#f}Fz6cl)QL~Ja@tcw=7 zq{mleSTD}yulgOO$bWMtnzk{C*@9JLKb`pUZO@^1n!7TIxV5}dM}S2ucC*lW6!!GJ z^d7pgA>3vzus_9jp56VJ;PWF-{3ka7=3oD-MU@~gqD2q|0%0(uyu7LQ1-J6bhW@Uz z73nIBAwQoNU;kR~Qf>ATG_cLsaLaHQ4*U?l8yljh{PjE!sto!BsExzCh(D$HSqf9T z9cw!N=1V_RVHF>76xs?hN5VL#O7n=edKaJOp~~~%NIHgKDJz4#GqYqPq zmMG&=s#}FY9F6T0^M#_bwq6S?bz2CNsL@L6mmZx5Nvbe*!ju9aS7#x&x(H=$o%V4b8~N+z4Kcy{*}egv4$9r>L@Gs z?E5*pO@6-Tqda~zf99^cf%T{PkuNdKwvre3FI-$v7ne(^IX68TCS=$<{8X0hKa=f3 z(GeIJm*uHM$5*bM*GOyUAF&|`{0_cxvU{Q*mcxZAe}{6vGHM^N32KAl{m;h6Yx+GG z&BD=S|XyHIdU=kLy~`3Z=RCLJ8WqLSJ?<6iuqlE@rA0j!P;?E+wXY`~1?&ti>)N zF|mriYpwJF_q0-2^Z0#Y<(YvXk%CubZH!h z`6Q7DG64$?xLZ_Oj7GYHMP|)35tJewM=8?YWqTgr>%Xujd^4`MB7{*Asz4Lc+h%H{ zxBR^g7Q2~p@XM1x4HCR(_Z8)|A3ybkac5Ps z1Sqw`=SIcFj7MxmUOu&GKz58bO2mWrv^Ur<%(q|+O+ZG~k#IVEk@GKBst+VakR63L zNVHSqGc&WZlucZqg!GKVM8RI*YE4}95p_anzjt+Y1=guizYU~n)D#9Vta1b(*h#_J{4_BtXBuX4WGnVJyR&F&lHC-vR)fnyAIvd?uR8$0W7J$!o_~CT&!QSY> z-mh@s?Y(MW4CcnzF=~ygoYCJ^qJ))W^PJH6ecu^Oj~0<|#hOgMpdIFebA3h!oqnew zUAYPkaxlM)`NCr=8x3nt-Y}!z^NX3tn%5`dBlQHt1_O;&h1J#79X?a%IxelWudc36 zOiZ-2v@Dd3F0O113=Ya|RCHvxJcm|XQ;%V{R-3=ZquaedfBu9Xvy0Nw(4#vzJnRd7 zXiR&Cn0hSK^;{vbdK89gy?+6^4+)&%(2K^GA34nnJ$skQxGkPO{a)^eh`up-?CmD5 zZ!qglXJP+$r9Y7%0Q>01<$Be`47FHyclQzK=3MgXtAZxaknH^Yd4BV)&k}W8*Ezg? zJ|h04>nU6@8Dk7It!QiF-LA8d%?gUZx0@Qw3M7!mrS~3A#oIpFH^#h{eq`m|SQKFj zI7|OYVZN^$UTc*kctmFL;_|ZRw;?wSMu(`w5EC-?I9R2xR`5)DfS!m0m_agVv&)2y zsjT$cUxvoTq>x|Bp0>7G>x|HIIvy#fq1b2Uy-?UZH#Y}L!s>8YuEs)`+uBhnDRa~w zT)}6_PvUQWm%~Ohu~4xE16t|^Of<2m5=9dZwnPMn;|{ zIVB}-i$r`9#78lqfNWp2V^0cEJeHY-16;~a7Bm5Jl}E}3#Zre8b{L)>)IJ<}vZ_PA zzL=pXZvs9TcvAHjed3a>j{Cp6T;CZS5fK4hF*rFnsYv_u zs_kv$_No~tCTLvvLhmD}v^z1P3r#u_4yhvy#@iomQpl6CnmbQULuxD{5be5PVuoQ| zr`4#5d;Q-toI17hlUNR_jcdTtxip(sVD@M2|J|NXLULZ?FAzanEMCg_MsCP0LNxLy zqvHj$5GEW65qV5ieMAU4^iQz=eJAS78&quF93j0}&I!$+fY~G`Cx?c6OpVCF7T<|b zpM#xIP2WJE;#J>k!q`xpyp-Pey9}bj=C;q-nO9TPFt)Enbs*uOC>69m2^6-+gFoif z?I+m31|M%y6-X00nnGo6p~4hy^bW<^a|Jm=E8zP$n< zpB-gjVY!afU>H>Voza<%P!|1_b(EEvj@Y7ymY#lkLg4R2y*5wa>cK$O29I>!w%_hf zyI_2)+u3J08?kFG6NEfhlsHJD2uVI2)xsGp{4Jt7f5#zKK-)0A@@SNutNucyfgc}Y zUUK=0Umz2o8TJ@WsLJ=#dFJHDk5`Z#j~(JZ7hRD&%9fQWD%BDHK&~U{Va>kk*Om6K z!NJk-$s7GU#rB_qKe(zL9J~10?E2lepcobgO8Q5k!*Cjl52*`lFYxm6lHHrpoYoh9 zp_5@?ao4}eS&WSre@B~9jkf|OaVyIq+utLL>JH%K=q+A862uWn`E34q&ZX8{U|#1m z)_`_$jdSj=`6W$FP5sFVTx`Bp^W)pMZ{6K`LprHsH#rR~0;$X-U9dlcWRDZM5b!G>q z)XXo*jXyc3YDh-=?(s? zygnm*<55%S?XP4z8(9x)W(o5t{r&_vdJhg3)ggZ;S~K{A-W)Z02yN=_Qi~6d zd-4oZz$@xU78(LcPn|kdRaFIF;W3jD%j$jiOM*B%4iu{g(sD(pZujr}K_g6XG4WSo zRA-egeV3VuIQ?l<3*2yCnw|4zw|ds_Ml@GTk8LB@{+F!dNOj)3%G^%<%g%c4e)>R0 z+%=k6TU$Ht7_@uq$3~5>cd96K#<9;P-y@>uPLMixY0ovGFHfi*eCp!%0;?AK1|P64 zChq;W>Nb%k;i<35RnQN}E47|yZ)bP2$mSY$Y< zi_UDsy=PGvep?u;Q}HW|-=M(EcQz+W7KquqG7%-VUe<=UWg{2ud-K(RzP`NA5p>nS zzyJ&m8U|Dl5a7bGMns^GTvoOLM6p$yzrxiv*)SRBWzux7jS*8{6|W~D6zB{i!9O>( z#7j0?5h~gE5k=YAe_Rb=vkS~RrcKcMqtNox6M5pSZABuZri(N*Vkayn=b`NxY1Krw zyQms~zu6P!_9weO4rcS){QbpyV{y3D!C1L@S^d2+DN-U|dS(Kc=aDmdzj+;|k&z~+APfo8#u)^PR zCYRh`jKDyTc%w^$^hVNtYX}XpW^l=sXMWJISCt`Zwf^%Bu`Rj5I0`mdxQ1gij*>1D zDi_8D%xibiM)S{xwMBk=+YW=JB_$=Mpd0}Sp^}_>qZx`Ak{EMpE?xhU zbKQgV1j|-_MDZ`~kH&CfTd#E+i{k$5u6*#gsjBY(vX~#(lz%hZBP#rc?@TIOZguxG zg`X5Qt1ee@yCR^-qPPh-$C@KY$V*BdMl!n{O~r(-+9fEY@t)~Q7B+M99ZDsMGrw|{ ziv)k{SVM6~W*tx;cYda_a2TXFTS*X$X;85tW!F;I=Eon4ZZ%B~{>!@Fa`_|1> zD=Eo9;G1TEGs`OB!hI75#kP)Q;uT7K+B)SietgSmDE#fq@ z%*FOs$p?5n31Vs;DMEqQakF-I8WBc@L)w@9>3Tl+?q+N2etPo7+bGwV!-XgY8o$W+ z&)vo)gdpW~Me|&CM7@uRQvGW)^eQ@&Lys#^TM#JGmxSY=3F2TY1nM}VvoZF6E~{ip zjgw)la#PunBp20fwZQaa@aK89GXaP1awcI+X*((&D#u;(+Kma8ZIkmCmMdz!C={aWN`;so^Nh> z-@ElPPU@U%y784H54&gTK~GP0ndk0f<~-O@GZ*V@^BKE?tMI%BG7sKvoSem zIEHjz9RNK~7|+RL*%gyopT`z$);Go^7GN|v3WLTA3tOp>ci&^ z9}sWk=w@joig7UuO&Nz) zRgD#CSE`{?zye1Ho`+Wk@6TcX)aa48h~(zqF`rVM`w>6n7_QdS%acT7#dW*PR7mg` z2D7x7n)x9{4%z8b@^I6)x4(_N>hOO;rJEI`{if60g^Hc)Y&~I^fE|$m)^Zw2^>L@Z zAMyL=h>;=k*=TUSwFU5qdcoP4yaJe~A}@R7Dv{BH=^*M(JOAD8Zd`Bg;gx8FD-m^_ zO+q%8;Bxba5Cc+1hmpkEB~NcPwJ+Ei@yjE?O{*77_B8mf8hKhNmBHHnm9RIzPu*mf z2AOWT+SdaLDx>E8xdJ2rE1{HMpSyU>h*pV1tp4-dM>|aRiyOuA-P7({8K_tuH6r8X z)1b4^wu1L=rnytQPq12$pN)o#sOFthbHl$$%PuPe@%{7i**vc!FGkD%(-%;C`x|q4pi}U~R8Jh8A_2@H=Gb!?4|C=qW&iZ%BR7$0IwNhC zp#actS8e<=$mua3uT!6*R3b7eDX|=>PJ%J3pTWkc+Iq!zh=9RB?5I&IvmA%(QTD() z4&-ibGr}|D8oXQ6Y+63rGI;sLD(st5ssT9_q%>{2+!z$tpA&QzYpb|ev(FAZ%2YZ) zmm(r)<;PW@_5zN2`PPr2*sd$MR;pKnv3^7`6pJ?ex#TezQvWfo+-0p6QJA;LE%vAL zL$Uy!vjV@(bzqqq{Sg$j{N^fp%CU4tRg^5V^9$F#TS)|pZV}OAde{~GU+RvhB4o-` zHyFzq9N#k19?u@7f?V@gYQ@5H-T_5GS7e4;bLkuNl^MP( zTvGOa;s!mZt|Hq;I?T%>6V^^Hreq=U?n350stXl&BsbU;S@`U|~(Ecx9whTXEX?vPY{Xvd&JpJk1j*jtW9bMsfIZ?u@^>4vC@fR-a zU2A6{ro6Q>*#TERLDWy)+7$8Kza{$j3`Z$d&<9g?vY0Y@3{QP4cd)2+r#YWUeG&4^ z>GU%o zwK-qN#o^oFj0vVtM z8PLmw)9lZ$zvz@c{qo(r_p$l)9JbomhXO9ZzDfkn4{ndMamIeaqVJ4hVpdeifvwRA z9gr`t%bIp_bet*}e%}m2qM0Vzt*#D7hHi_B|I0C~yfL;_e@vO=a>U{Kh>Q^Sa3v${ z9by{x_PeEl&xVu)8dU#jah(7e?}pUWudSi8KV|Rg#9gX*oy+j(Qv`W5hpZvJg*K4G zzSaZX8bswzL1*DGQYEo4r`!DW)ZjNQts76&wS9+(&3GJHFj{eBZDys8Y`^T?oU+Pc zu@BMBjK6eyK6{|@Jre8A%FI_kfZpo8fC=8*$f`r(2|UjV8^%@7Ax9|iSk0@k|v0JsB{K< zJ)vs0+Ys)3f$id>o}Ruk>9kOVs$)hI+j>_H@1!6RhD1x3=61UZe1w0Av-R&K zO$0Q>Uuz=zNiOvL;%VdtQyBZM5gBbYtARH+mE>=WQxkvzv#@2H!}vd*jAc>;Q6&`k zOIMOwlE+`Y>vDtN(uT@{fQ#0R$`VF0!5*V(+E|Zf<8`Do=xM)0M;KWi|M>oQ%JXMe zf}jZ5kaiT#oRg)|AKqQ5WD|eb`dVvmN@I@ zZy#i$c<>xoc?kZkl*f+LQVeIBJX2*7_?ymXK`_Q#+do9f=o#O? zS$1Wjc7itTt>E6AfrU09hypJ238S%b^!|>z-l=@fBYWDhQ&>EYqJ#Z*-`jdZ3(r>T z(cT9gft<>n=AfqK72gumqHjdto#0|-MldF>>vUhiC2lOTsAS6FzL5x!MBxcZ{b#=o zFwM?(nun>9qkby^ePAn0DQW=+jpuE)DNdU6NPY_^mdJ=U-Q8=uFFM&$q^mFvLnZ9y z7BzkBDj0Bh>-0NmL1AVNLRQ>Y5B@r3MN-6nJB^JfrYGp0Ee@7=Igc;Ctg4%>j>%-oyxNaX_vE(x?O)0x+vA!|t)@SPI`SFyhAtjl4 zFa--5S{BvSLF&h~sh;ZgSM||FK0fgf5{t}J8mL3z_Dh~H?f@5^_DLG&OwtMm;a6pPUUb!j5n##jaH z5th{ZS0HPoHDDOt`ZE*<++lLP{H9JU!f9t5t+;j?CEkSSkwdk`GMLziuv?H!fPA@R_ z<-qQZB<_8Ql-u7-99hlmq&vb0t6)+&>*2Pu5;|o#?TB}NFk4(b%xE3%UVQ>V?L?|`5JR)Lbz_Apb&R1 z%ZN_YWfIE5B&R_I<)xNhm|d->q2zc1?t`AWoZC=2hvBD|=n#1KVdep~MDmTqxVsb_ zPcA-o8mZRG${-`6vCtNR>p1~_YvzqdCBj7kJAWLs6`yn~=GQX~#Uiy8(wN4sY;DWW zFIHoV%pYYC&?`~XStQ40$XkLgYAuP-L~zZaGWZKi!-?w}JH)&ZkZJlLB##M7g!{*R z3?O#a+tT9oX*{ThTF3m*3p1ev3fm+GV&CVjZ+F%+YKkEa)wUtQ&vP8LFlu!f?fsez zcVX4z<|9N&Tk$Z$D2pwm$W4J;T`@D>MQkMO%F3jEHgey+`O%*8vF)yryF~O&+R{>I zX1mObKrM`MwfP!rlj9#_!Z}*0Ebay5+Z*(Md!laTr7ut+57jjbplt@ z612{VF9c519}kW=aydyU zsAGcEhKumkGwB`@|hfml`xwWbhlXO~ILkL=aefgdhztHB_i`&&u$L{D!J8lix0 ze2G2^>dNDii4V$n6(AH^kBJ$`4oG7+Ea~d36FO9ic*Jq;hbb=NbUGPW#v7=IW1m~# zc>kWd_skDEqeRFr&ivF6z43_XvRg~hvQ{^V0Nf?T{*=(;M4+%IzcIN{jeR&cj(^U6 zsZ7{~$ROvl)x@>#s{+n!K2m2QUmUtKko(bT4E9mh4Tv=(DX4zF&kAS!VlqBXi-7>4 z*P_s_!bZNUpOy5)L(H`x0}5Ro)iq*dixK5VF@@)C?5H3n{2{NR4Z)zt0tsx9%6C|* zOC0O>X5Z-)0}GIJr+07?VFU6E=oyzY!dmtG^>t~cI)s&!o@i-1HhuVje_;DiEj0no z$)yEP$j>Mra^D}(H`G1%prP@3Pg9Gow<@+|Mwq->YeWb0T14RjD|pJ{4{kG@%cP|f zm4`16FvZbE!^Q^phR_+w?Cp71Rmr;^$=6LxoU`-EN(-5lUueB6eCD6Q!3T=Old)e! zeYjrvRJ=rJ@5nbTvHBmf^xFZmS)UhEK-Oo{gk4g2$j0 zW9GFu$*#l!ueb41^zZ2(+{s5U;V!CAC?M(({O6&>)Z81OEp)!+Mk7N`h&9< z1xFwT9xj9YkG|pLbvL*Ld=NrMQ-HL2-nCad@G>-1Ig9FsaGg8%$hcFI_I31PNTeWQ zz17LYVxe@mj4=EJxbTPfF7)Q3myhU-UZ?~ia8}^9y;i@;l*lwUTU;kc-H>z}Yy$b= z=_-t;zCWu;!JVv^pu@17HuAKTO6Lsv@)PXnDedfJMY4_Rr6~L)>Q_^|$4(X?jH4(f-=Xt!+c1h}QG-v%ujKhV2c!0nBE{KOz7)U!R6cGq50n<$t`c;XCBOp6)7UljBaUgFdE@%f%3UT^;)=Pdia16&!LKwJrtL4F9`^>tX32aU;2ezgzzGykz$ z1MjuWQ+kp?p1Sk@B?oTYdPrpn4*iRpdj2oxNdi!D#?Zblz3~2O$~$iXILnf3j2h*? zkJX>s40$uUpCpKTVWLR0L4^o35L%SCI&BXY!pC((@cs2G-op{}6iJVMCFV7WFO=!` zf4wb(QaFt;%O#fyt)(b-nk(fn&?BD_VTRDAXyq zed`C2a_PO;9uwLV3Q6oD-s?$F5;1aatil^T2Y%!#otNYwhI zBeHW)^E)k^MCe(RRa=bUNmEzn%6LC)O-+xT~MfFUSOutR|%7 z%du;sR;%mlvIo1pR8v9UViva_ubP+Ihgi~tnlB89cVB;U4}?rl!)wXBM^m=K=*`;V zz+Qs`f4Ddk=Vv;{Q!8u6Ve1BD>?WSKn!m<|NwQ)Po24~x z;0}{C0Sy-NM*HO|ih#kK?uD!r{4^$D_}N%kSVp0cCA(f2DR}e!oz>spLlu9`7k7NM zP684IGrz6LXl_kb8L!o$iU*F>%b)gkl7}fUPZXyNF_({dSxkk*nU-1N_4VGP^^0R#A)S=1SJ`n06+#{#(It+4A)<(JJ?@eUk6r>*gV66 zS`dpc10l@i`S^cp(I*%l9;TF8)xuhC{he&Cm9_r#1R{Vys>Pa(kNo^@nZ_sGbr zO7?hlgV$mh|FPCx5=?F)CXaA^aTs27{%&U|OvSk=55idk1^h`NQjEn9u{uKk+00OH zBB-$8sF;|TG^)>gt^V#7hOcja!WeD&>|itU;P=A9m%o}r<<8bfggBwdrAs^W#d5o2 zl*P~~>*%*K(HgC0NU5hfwvq=S0x_G9$d24HK&e^^uVR9N$xmIFIA4d>>86l6U0T9? z5|uA$ou4#wDh#oyg@vLkr`dLY5^pRF8mkA$bM0 z5aJSuAk{;FYeDO&>l=>!MYkYA%E$|*HOBJ4uBedOy_>q@tRsBk{Q2|HP+TQ|@waR{ z+yy!#IuT@lm#SfLxC%m^$hmWskc6jdsD8L|B2;neiY#DNSoS2Hq08T4XBt|ktHX#+ z_kNW-*e$EuTj(E^v;CR`F%F#`vbk#q5)35e#_Py0I3{TG+ZQabA_ysI6RMhrf~@uW zMplBLjvYLwQMnV!3*h0g0rTO}`S{ktZ*LTz#W^ijOjAg;jKX_wA8^a=Z;lfR_~))} z_tov|rflnF&{Nvzc37qyXc=?zbl>e-9^UP3S8-!JLnro?)>+QpRW&K zQjC_Auy2L-r3pM zy=G`=IA9p`-e>DCEK$I;@_dvE=(D$P-!255y8i=jsbCLu;%&s35SGLDT_0LO3ZYbO zBNqQ9`Tto5^mHS@kQp8-4Fd}RkYcFpAu9<#R*+qWUzZ`>i~ci2984|z6i(5~zt&qn zn6MRp`m~A3;g6F6arVd1-b*8U-!s(E!y|*CqO`P>_M^_*tC6h3eSL;uQ80d=H;Ble2LQkl z`^#(xg|wV7L@}C(l>WsXKYc`Z{D{05lss&RmAtkLH_xF`ewi%!cXD<$9MmqzZv;I`)UKj8N!w>>5=7# zuV23kILbQxynHR3;I+;osP55&{f++7I+w}MAk8uFSQ%>3vUU@lp$&2XYD3MC3`6IN z>@1WO0LEZv2l*4grk;GU#C7c%M?KR!R`2;j-<@^+N)im;JzxMCEOYGG->>oBhvK_f2NP9$7l-u|>VS!X74)2rQkhsSyW1Wo3b`PE61#i%&ew&p8)MOv z|F5^>e{jOc|4Kmq&yV|K1Y;+_^t$?LJ0KkL`pgP=KU0*mH z#rWF+9s;9C4K5HM!zw@sh=~zmR1jj#yzYVs8JFFcnNE68>M*ztB7_@;s znLUX@uOYela?+51%2>Is&~dm@Jj-z&P_w7t^4tx3yxU~yCoUp_zHQ!qq|(iP_N27? zJXpMJLiFWB<)ZNN0X+EI)v5QR-{>th;wk5FFvQ-6dK6vvxL+3l0a^2v-m;=eS(Tl%)P)BUz7$)+{P z?a9wC!G^VulM;kv4Fba)!zIY(X%JL0Z65pBw5%wng0Fz z_vMs>EhL2<*H=9yUV!Y)@tbOR9c&jI4D|Gf-ybRm7KY)M@3?A!!cK0b{Tw?Ez^^`l zK6)v{{nXIx;UqwjM-{MHDSq4F!5PlDbnc8%A}E_03{s=?`FR9=FG}X1DZ6EZ9RnT( z2YdTGSE;+MfawJvh#d!qx`qInS=RH6tQE15Gr1h3zqZQbh6{xhxGdB-Ob^IndllD8^ij3fSv|$9KE~|gm90ENcl`Pm=GXr8ihTQ$7UtDe1^@0|MZdrwmV(# zl6}~Vi?3S$!j(8EPT3Q{;qQD;16yJMA78sOytKZtQTG0Q^_=NauB+h89^Ap*akc{n zdC$J8k(YML3=#l{yjfzWkF^|Y2n?qe1oa=QW6Ctu9v|KH;u;bpcJ28apR&R>j z?w^m%rj-x?DqsOl?2x0(^9>#FvR#MTujl($0<#MWDA}tQ-3szt*`p%%rFVhEL?Ofe znlPPi5S2l`k@n0@j_b)6#c?74WK%tPVumJVQ*l;wf7Y<>aCHE1yslpko|$Uji5b{E zO7?NosxhcEsTyoQ$1b` z0*wA*Te;;%8V3glC}wmNdVt^H0ZuZ6zz-u~xWkFVuoR2``#*Pi`~Rz2rp=<7a$Np} zLfyXlbb!J@0R48O1s;Smc#976EC!0N@B?x7|DOBy-?ef#O*2Se6MlvI3yLho;Q>dB z9y*XWGBPvYyMO;3NDvw>bE(DP5UNbg6tkI|o!)DC=E>V^z5{o&^ebajfSgSk>QQl` z)_kTa=}^D%MaymS0JrEUfV2McN=AB3&g*NE6neaUwd*AT#FV|@?^ZrjL1kkWS)Mc7 zs8sEHK5~sa`NcMy3ZRslXLCN2^wyV_BDH%PgD(&$nLmD?MiZ2mL?lS zj=Wh(f2W}BA;$Rr3>v(*$$Uh6LR{JeZBu;LH6sAJUBFOxn_a z)LszwbvO6&lp&E=U7FZ)y(n};Ah=-1f%6E41?d4YK`59eRlvP2dMc9d@B=^g+x)2_ zhp7Afk2iIu@9%tv29F|UTb$e{>$TO@_7pj}H8O7XxMy8`UQfV=F8MBbN7fz((J1+mJQl)H z)V9O4UhrKIbMw(pPftP9c>$PQiml04mSXX!`cuF{7RztGuvw?T)y>U!yDLTGOChV@ z<`}#39|lX@IdskX-{Z~c8g_G?rVRDMFnL}kZaw;jY4-iF2PTpqyV13EX!r~{i zE9B(m?ZhHmu_krB)@1BH3-;!u>^`%)DG8$1S6R&$8H1=G1k(K?0N`!!p^WaY;gBe5 z=k$Cc(g0f$xTQ}Gzgqt7%ri`$>b)O$D3nV_sU#u$TVUwGRhGxj^%V#sYgm1OD3x?S zQSdn0J-nVM`+_1u@!4q02n|w7-fBHRJG%{p&a8)qwdDSAB`|gEO@lfE1+fXdQ7+&u z^gsCtYl3|=g9>yo&A#={_BJXhR1IlL;bM{h*(RMS!-pVk|JkN1g!z2PGGs1;s6gGj z+%s=~0qMSO@>ZLobWXj(?qJM0+pm`f-im}Z$Dv(Xz$v|gx{9~-BI#J^hIz^jG04VdfeRHBu0H!8}NGk{m7K(hC@UJPviR!ND=PWinPKOMS9b>> zO75i2?SvRgxN06Lg1{XN5egnq7+DexqFO8;kAUov&jcr%6d2u=Qy;A7=jX}TS2s2^ zlP|8JXaIYFc!QG(hXsz|+#2|%^MhqeBi>7UD4>3#&kH$}*q0$&`mCUl;3h$uS`P;jo4%i$H88`%y++P~dv;MU z&6QIxrMr3-wJG56`vT~md7=B+qvjvrN9Snz+6}zFoAV~{@3<)I-q;@M2_;;UP zK0aJs7-$-!_JV9$0)v;pJx77ueEKk{I~*F6n*9=mny~s)f5tw7n{=bjZx32NpsgS! zf=x~~vEVNQ>{%q6q|?t+qnlS_GzA1BMc0mk$D8avfH=p}L%jqQqw9hJ9hVwZ{DRnV zpbYju%I$(Sg{|`KN*sCNRhXJOh7v15P}Da#xD(&ub9M#G%J~FzpOUTLOSYA~G`LwL zEBt&a{`y=x$}x*0HPR(w>qcM$DcIW+C4^UqO#&meu7mCy0ruAdu$$0RfOrDgo=#$6 z@tCOWTDR^$wWb@n{DIO>1n2bU=Z9`b-RY^@KSeWdYqJmkntfA1Mn-1C@ZlU8d%pSM zXh(1h{6IZ{7DD|QD)iE~3(CtJnwYS*T|P%xprxNaEu1T=i3Ci_@sOmBSAS<*wpgx) zfVX^{ovgyR_78RLRYSwR&I~m+Nc}*1E+6Q+)1x&$?}I&laq?gY1XckH$(*&pH}(N< zJfDDaNRsvS+U(L?wnk-+9S2<_x*AekAF;12v12e0ZY<7vAo68`A(%}v3X0ndAFOfI zV2wlmN!n?2%aFRX=g;-R`3tJWaQJ)uMb_p+wZ7i7D>$f7P2XZjC2<8(YVaS}abQE; zU0o+cA2)lZp@sq{0vMqAx<+gDH7g^$1?u+{76?Pm73Tz$_monPZ8v|viOlrt-0MU3 z`kZ5Bfq6IZUjx(W|C}3a3qtZwC4vE_I|Byz)P;N5Z{L!$`z(i>&(F=NosEWGHfgBl)~3BBe=R1Ls&>9eZg*o5$a3sG#_LBamMtgOJeOlZvtG6SC$>P;~=O@y!iZD;AO7BQ6Kl&F?-(T=35s%IdRe2 z)=i-c+_v&M@<+=a*n%z7{POoE`#oze?U#C3-@h@!<`{6}Q3`Mf2Gl+Q&ghus-U^A1-VIC*zzNIs z5gV0G1KU%s-C}>g*Z=7BNE zl1J>RW;NJmQ20~U+oY(gI;)Yx?SJv_1B5x`Ff7WxIgZX`?LBF1P2iW=v!%!E7MJF{e|;$ zfq0X<2bOm3(TN#c%6jCK&c*K@8ByJ*T>R>dKbV*-RC#}-Fa%;p8&c?}Pv#N31sTvV z=l$IqCm}c0jvGC_|8=ghu#N*kX%Rh zd~pWuOX+b2M}MTr%B!iBHasSe?^o~kvKuYwSSyA-*xE@xA3F@(9X3yP z0ly0f2zXEBeY#@k>cJITbJ)O57xG>%6})~7I$MC~;GQR2P2&b3w?|le6J4V?B*tV)SBmDbnLwizht?7@XZmXDJ7kc8b7Kgu>dRqO%#Vo*A0yp;JZDdF>HMq1jJ9=Br+y!H?? z)}Im*9Kl?rQlN-}Urt@(gKNb|_xX79Fb0uA_dP4{p3KV1(L=f?Po7}s8WeQ-h5yPx zt`k^N5_E>qHuNg4shL>wM~>7&wOaz-XFJJYx%14C?+SipWZW$s#I5`7i%0k#l9xOv z?*gaf#K*_iNK8*hH)ar$K6$$C`ta3i#0Pm62>iRerbc4Mx@tbb8v73!W}}=3)FIfD zg-&LeLS;MK+snWJetv$9#N6ex*RV?xs>O8d?(XVMY*SGqHf2>F4P95&WC!cQ=D4dH=Si=MMhkgFV@^WNfgENvm{7F_)T1x2m zb6{W~@+U)*j^R65Hw1P^n%J-*{=Y2lim1euoMMllLRedG2{UIvMNSt1OhB zlvjA|Y9N!>u9|{giB0_Z5qN`;{RHRIPl%AI=tVsEJN%2iiy*+!8p!zeE!lHhL4oP$ zPhgVAdbx`CcJ#t$*NIACH}rO8DV3EEqv5L~#c+nJ$DTDL+*O-t(lmyi1!)V((8M|d z4+e9i>C%S5Zi(v>{n+1b<8GSSs;HYe9|0*Pv*Fx z*S#6awdbcB=4NIUm6ej)k>S6M3&0t@TIl?|luu6V&mtfsl*Z0wv?Ccc~a6FnGPEdq5)t>F;f2);Z zxfV%Dbm^J6rjCx~3HjB)H3MOAj886%gE~Sc_NLnu&P?|4vUaVNJ3Bd%409yE_5-sI zz~17&-E^P!r+FWu^6XiLq1=lXsd@)jU|$?gj|OX@&h0MoTTE4(o&utx%L9@hVLoq4 z>?dnh&ljZ!z+!bdL_}xa^F0%FK3e*w6fBo2N9%b6zu~{m#$#~h5^jHge@PCA&vnOc zHNd@=cz%mpH)?!nx9Zc#|2?zCuRVk|@=Lq(B<$(4XG#3#Mc=+X={ee4q51T{y<3)s zwqYNNzd=v$0m3`+&U}j$W}9!o$PE&@g%H z0srJgwFfKa^bEK&zqT;&2!96?2Q{u|DU1(a$%}4O?NC2&q&xQMQhxOItudKt%#$GH+dTes(OmUl6V^QsJ_) zH)xoQp~rzud^n;x1~H zafbJo@+#L8&W}>018=^brBE1r?i9LaO#p*!@+RfOV2|i7AlzfDjoZKaLn|2HgavWw8@x9 z!OP1_+Ys_{;is#fdP7pkVMqvrvEyEtIX@BFvA`3voqW1#9upJeI_Y&#Xxi2(w$q-j z6gL4}Its)V!CEVEO5#1R>w9~jo&A4wNgRWWlhn0PiJ4D~<2I}@st*vb9;n*l zwp-y|5{CBn_U7gbG&P(4`jxL-oSlU$9KnG0e=)=`7}DsS$GV`+ki$mxL5AeQ{-}NJ z>HcVLnB7Q`C2-MK`6Mvd7u5?_dHSyz;UfP3Yf1p4g6Cf{!v745fFZF@lAO=~e}?(z zYya7B|CWCMw)yWF@1M8**N21ttI+HJ()6JJgYDA=aOY9jdeu&+JWJGcOLcX1*nI-n zR4f)PB~G50%`ZT+cbJw|SDo#|A5AC3$74EOYoalj%2#WSc04c`jrd+4q%rLvyt9Kv zDFXcb!lgHF5TS|t2W$3=BO@tFwQ*n$!&t)xN#D%-tTB}SG8(24DL>0}zQr_dfDfzl zB9p{sZ^=&>3~*CY9Icywq=^1G1eH|WY}Ii9J-aRV>!V#aCcN6XN`)(K!hGO)Roks9 zo`0{$CqocGU81EozI;JwYoD*0OSYYyEP#*za$TO&3J$Dnt~dE?_ZY;d_AWz^I-Nou z6XR&5R4iv@^Gd!3X$Bx>)ei&thR|NWc4am3mm8XznkIWHy{oG^P9fm$7e6_5PGegA zEN)-AnAZPb>;Kr_e`cNkyVmr-Z%oktiSzt7Ob_~>)*1f|#*Q^kSVS@5O*fQs6YQx*>*X!kW~3{Mvg7-3d|>y>12wq+oEs3jll0GKoJA` zZC~G2gYd~+bNKbTcFk;*Qm63D74Y3zLL6#UH;|{#zDb_81i`UDnXOK09*fOa@@pr+ zPv+o;w*lgv?WL)8tDl{HyB3$5oejRDb<<ezd-JB5ml&-~iid1sx1Vt9X~STKgzASG)Rl zyywIK$yetSIjfQlE9irS-DE$^l^lhG-=eKXVPRdo_2w*rjy^viN_|jmu&kszFWWyb zW37S`2Gg;Mn1E~!@O{TV-OojDSViya6FZPfkNtzr|HUQ&n8dUh?&}=3sCY+VT#~%@ zhqLo4tcD9sL3#p(NhL^!pjKhj69AaV^&-&spa`_qv%r&`t>Ru#SjbynItfxez@G{% z*Fr->v$b+ZO6{RZ+tTs2A2^?45A& zePn?BSh2OXFvC8^lg7YpS|RX$&7rYEm*ja>wGwu9ME|Vr%FC{C2o%3oCl4MxKzkgl zgGloYYl8qNpP?RnJPY;MUyUpRH~@?vebvRqg_eyaS|Pb>p)L!|xGLnIRRW~%{OXn6 zWX&lk%0*wTB3Z6s>Y2_Q)`|xej}D;o1L!aiLT;|5sLHE5IqhTyCL|=V$fkBLEm>A- zL!=
      bB!Yv8%9cU!zPVg$+1EikeAG2@yce8&0?zc(}0-8hvc>tbA z^tUgdpf!CME|)`=c>ZVkdS^Bm7C#wo>gu`xDIFKpA`6u*m@Zjab1(R^fOr6JJhP|K zjDYgeF|?;>41!m@aCw2Qeexm1SCldgi{}Enh06XU`fmW8mGmez2T!2mxGs;Sm$m_X z-1gEwG_H$i1#sw@DgDQFA`T(Kdkcz+;N~xPW?NQN0srT0Pc9FMnq%ZGkw`pd|0x$H zq(GV=8O=;Q3S?N6K$ayK7E?7mt>y+wt2Z9D3UhC5ZHYGXGr@7MO=@ZhfUTO~{9@+! z02T!~(Ug6yo?zt%TiZf-0o7GO3^5Y+VB@JLX+jXJmo*Yq9saJsMBFG>#S(EXNtE-P zgv12C-HdIe8+;`N(q=0f-_S+ukA>Ftbat+eaFQgsf9=fe#$QlV2$gPp0IYnSKp2H! zA}#9|u|R)7^n)BjoEFnaJuo8$pak2MGXx&jK;f2XYjVps4uY)iLF2?liY|dKP z<#;)F6y~rE_Q4FmuaU(7ERb&6z&GaITHRr5<$=OR0U)xQDhqUCzldwaD0`X#m_YcQ zVv_UPOfLv4@N9-^gO1^$j!kas&->_QyQKw|+p%JJgqL$U-832-6uYUN3d<}2%M1|9 z)7+xh=UaqblkY)g5iIcQ10W6H`;~EvzDt zn|Q9_!Oacy-3jQr)-%*Di#2V`SSq-;Uzb>2U6q3%BE;Mbi|ynbM(ZP?6cD9GPD{@^ znpgd}j(P;9Bo&3-@4I_U!yy3J$z6GrXV-nOYWnLwNbWQ~l)B7f1~z1wRc9J-DLZT~ zje)65pMrogsJC0jOmK2um|7Pe+8;MY)kPJb<>h2@mc;(1M|@zduHQZvx`C zNTA~}tqW#{V~en&LF`IS!WYh6FJ%K5CQ-t~67ZMA5;oO{{}6uHS_oFIaLvIBg4_O) zo2-lFl~mqCSoP>|BsT@ro}m)Ie%=X^P|0QaD!m_Yg@au_nL)h}6v3cEF|;?(m^x$; z@-c2o9xLxT-a9Qd2{a?NY0SzTic zhAI}t5@^Wxc6Ymg(Mb9=zw?VVQYX`ZkwHUY2YE(S9*wXY9g7X9lSGIF@L6iU%@3!z12YtNVo}i=_z~X_vB#Dy3@X8F&)b9VDHz`| z>1=No6Bd4HxhI67R%$u@kSP8rd@zXOdG{^zrJZfoTLi*HK5iW-BHRjqU{eD@eyC1? z_<-^<3k5jwC_|>d-Y3@w?(W;da2v3*{ewhjCAB!|!Uc^*7O~GP;M#Nz4kBCAs0FHo zpv^H+c_WWr%lU_-Z3u0P3GQqrz*@tmnAiV9|DwCc)|CD9%U}Hqo7j^JUK;pI{u{&0 zcvr&4;zQ}r?(1`md^$=s;8j1`ibIR)CR!6ns99CbaXVvbauOvi%3UU+4`xcz5TURiQKaJUJzhD8M|5}P3_;zGs*#6Aaf?iqM{-}{k#tq74qC@VN9*j zP=ui!^4y9jPP!D0K|GKN;8ftbg z0;=e&+9<5mz!N}##OYWzoFgsXLa04}75xch*PsFItgX|*!ZO%0FaH8ry}8y?q%UQ@ zwVP)Aj3H=$A_$c)qZSHCb&!GZzfjrv2+Ehxh>s7C>r+0Rj15#Pdw^W=0N)9LGC;^H z!a)E>*mGKeP_2NbT#)R!p*P{XVx*Hg8hi3Z-CZwnhjCpkRo=LDZ`91id=%u%K|lY~ z_U=E^f&aUQk^kQCGY0u@i+ukLd?WuILHB;KhOL;U;yEK%`a zKlJX%$p7uc|BL30K)U>YcR&7DYxaLLGzpP$-c1V$*AG5ADnkP?R*c?ZJvjduOvb+5 z|I)Q*H%(?uz8jGj_d!>t^386}40nAuIh1p1cdqDj|5cCi{M+FS9&va(`3$C%q61u2 MR#(cpgnRry0PdBk-2eap diff --git a/fer/xeq/xeq_plot.F b/fer/xeq/xeq_plot.F index 620cf147c..c57f0d512 100644 --- a/fer/xeq/xeq_plot.F +++ b/fer/xeq/xeq_plot.F @@ -136,6 +136,7 @@ SUBROUTINE XEQ_PLOT * V76 1/20 *acm* working with Point-type dsg data * V76 4/20 *acm* New flag ribbon_on so that RIBBON/SET; PPL PLOT works correctly * v763 *acm* 9/20 Ribbon plots of id-variables in trajectory-profile, timeseries-profile data +* v764+ *acm* 9/21 Fix implementation of /THICK for ribbon plots. IMPLICIT NONE include 'tmap_dims.parm' @@ -498,7 +499,7 @@ SUBROUTINE XEQ_PLOT IF ( ribbon_plot ) THEN CALL RIBBON_PLOT_SET_UP (versus, num_uvars_in_cmnd, addgaps, . dsg_as_traj, idir, thick, overlay, spectrum, status) - color = thick + ipen = thick IF (dsg_as_traj .AND. idir.EQ.x_dim .AND. . qual_given(slash_plot_line).EQ.0 ) use_line = .TRUE. From 4acd1689acc4428d4c8f642c2b21996b372f2839 Mon Sep 17 00:00:00 2001 From: Ansley Manke Date: Wed, 15 Sep 2021 16:08:15 -0700 Subject: [PATCH 3/3] Fix: RIBBON/THICK was not changing the thickness of the lines --- bench/test_results_noremote/symbolcolors.pdf | Bin 11252 -> 13190 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bench/test_results_noremote/symbolcolors.pdf b/bench/test_results_noremote/symbolcolors.pdf index 26e98965dbfacadef57a78a7d06bd46c56aaa6ca..edb34bece2df9a1e6ab9e7ac38a321e528671306 100644 GIT binary patch delta 8225 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�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