[Thread Prev][Thread Next][Index]

[ferret_users] Nested loops and variable filename output



Dear Ferret users,

 

I’m trying to loop over some ocean data to calculate the thermocline and then output the results whilst retaining the original filename formatting. I’m using the following code:

 

define axis/f=1:103:1 ffile

define grid/f=ffile gfile

file/grid=gfile/format=DELIMITED/var="filenames" filenames.txt

file/grid=gfile/format=DELIMITED/var="output" output.txt

repeat/range=1:103:1/name=nf ( ;\

define symbol ff=`nf` ;\

set data `filenames[n=($ff),d=1]` ;\

let dtdz = thetao[z=@ddc] ;\

let dtdz_min = dtdz[z=@min] ;\

let zero_at_min = dtdz - dtdz_min ;\

let zt = zero_at_min[z=@loc:0] ;\

save/i=1/j=1/clob/ilimits=1:360/jlimits=1:181/ncformat=netcdf4/file=`output[n=($ff),d=2]` zt ;\

repeat/j=1:181 ( save/ncformat=netcdf4/app/file=`output[n=($ff),d=2]` zt ;\ ) ;\

cancel data 3 ;\

)

 

When running this script in Ferret 6.95 I get a signal = 11 crash

 

yes? go calculate_zt.jnl

define axis/f=1:103:1 ffile

define grid/f=ffile gfile

file/grid=gfile/format=DELIMITED/var="filenames" filenames.txt

file/grid=gfile/format=DELIMITED/var="output" output.txt

repeat/range=1:103:1/name=nf ( ;\

define symbol ff=`nf` ;\

set data `filenames[n=($ff),d=1]` ;\

let dtdz = thetao[z=@ddc] ;\

let dtdz_min = dtdz[z=@min] ;\

let zero_at_min = dtdz - dtdz_min ;\

let zt = zero_at_min[z=@loc:0] ;\

save/i=1/j=1/clob/ilimits=1:360/jlimits=1:181/ncformat=netcdf4/file=`output[n=($ff),d=2]` zt ;\

repeat/j=1:181 ( save/ncformat=netcdf4/app/file=`output[n=($ff),d=2]` zt ;\ ) ;\

cancel data 3 ;\

)

!-> repeat/range=1:103:1/name=nf ( ;define symbol ff=`nf` ;set data `filenames[n=($ff),d=1]` ;let dtdz = thetao[z=@ddc] ;let dtdz_min = dtdz[z=@min] ;let zero_at_min = dtdz - dtdz_min ;let zt = zero_at_min[z=@loc:0] ;save/i=1/j=1/clob/ilimits=1:360/jlimits=1:181/ncformat=netcdf4/file=`output[n=($ff),d=2]` zt ;repeat/j=1:181 ( save/ncformat=netcdf4/app/file=`output[n=($ff),d=2]` zt ;\ ) ;cancel data 3 ;)

!-> REPEAT: NF:1

!-> define symbol ff=1

!-> set data thetao_Omon_FIO-ESM_historical_r1i1p1_185001-185512_r360x181.nc

!-> LIST/FORMAT=CDF/i=1/j=1/clob/ilimits=1:360/jlimits=1:181/ncformat=netcdf4/file=zt_Omon_FIO-ESM_historical_r1i1p1_185001-185512_r360x181.nc zt

LISTing to file zt_Omon_FIO-ESM_historical_r1i1p1_185001-185512_r360x181.nc

!-> repeat/j=1:181 ( save/ncformat=netcdf4/app/file=`output[n=($ff),d=2]` zt ;\ )

!-> REPEAT: J=1

!-> LIST/FORMAT=CDF/ncformat=netcdf4/app/file=zt_Omon_FIO-ESM_historical_r1i1p1_185001-185512_r360x181.nc zt

LISTing to file zt_Omon_FIO-ESM_historical_r1i1p1_185001-185512_r360x181.nc

!-> REPEAT: J=2

**ERROR Ferret crash; signal = 11

 

I can avoid this crash by changing the last couple of lines to use a static filename and the loop counter but this is not ideal. E.g.:

 

save/i=1/j=1/clob/ilimits=1:360/jlimits=1:181/ncformat=netcdf4/file=zt_00($ff).nc zt ;\

repeat/j=1:181 ( save/ncformat=netcdf4/app/file=zt_00($ff).nc zt ) ;\

 

Cheers,

Ben


[Thread Prev][Thread Next][Index]
Contact Us
Dept of Commerce / NOAA / OAR / PMEL / Ferret

Privacy Policy | Disclaimer | Accessibility Statement