[Thread Prev][Thread Next][Index]
Re: [ferret_users] hand-editing a variable
Hi Emilie,
Though it is easy to find a logic to do that, it is bit
tricky to get it done in Ferret. Here is the logic and an example.
1. List the "L" values of 12 time points (where all the variable to be
set to zero) to a text file. Read this 12 values to a new variable
and define a time axis (abstract one, NOT calendar) based on these
values.
2. Use the "L" values of original variable to define an abstract time axis.
Regrid the above time axis to this one using @XACT transformation.
3. Use IF condition to get 0 value at propoer time step (define a mask).
4. Multiply original variable with this mask .... done !!!
Please have a look at the example below. You may change the dataset
numbers accordingly (d=1, d=2 stuff). Let me know if you face any problems.
Hope this helps
Regards
Jaison
!--------Example------------------------------------------------------
\ cancel mode verify
!
! 3D variable (lon,lat,time), dt = 30 minutes, time size = 1 year
!
! to do : set var=0 at each time when the time step equals the first of every
! month
!-------------------------------------------------------------------------
! let us create a dummy variable
define axis/x=30:120:2/units=longitudes xlon
define axis/y=-30:30:2/units=latitudes ylat
define axis/t="01-JAN-2003:00":"31-DEC-2003:00":30/units=minutes\
/T0="31-DEC-2002:00" tmin
let var = SIN(X[gx=xlon]/20) + COS(y[gy=ylat]/20) + TAN(t[gt=tmin]/15)
fill/l=1 var
! Extract the time points where var is to be set to zero
cancel reg/all ! very important...keep it here itself
let l_start = `var,r=lstart` ! let l_start = `var[d=1],r=lstart`
let l_end = `var,r=lend` ! let l_end = `var[d=1],r=lend`
let months = TSEQUENCE({"JAN","FEB","MAR","APR","MAY","JUN","JUL",\
"AUG","SEP","OCT","NOV","DEC"})
sp rm -f dummy_L.dat
REPEAT/RANGE=1:12:1/NAME=mm ( ;\
define symbol mon = `mm` ;\
LIST/nohead/file=dummy_L.dat/quiet/append \
L[gt=var,t="01-`months[l=($mon)]`-2003:00"] ;\
)
! Read in the extracted time points
define axis/t=1:12:1 tax
define grid/t=tax gfile
FILE/grid=gfile/var=lindex dummy_L.dat ! the default dataset now
! do it !!
define axis/t=`l_start`:`l_end`:1 tabs
define axis/t/from_data tabs_12=lindex[d=1] ! in ur case, lindex[d=2]
let t_mask_0 = t[gt=tabs_12]*0 + 100
let t_mask_1 = t_mask_0[gt=tabs@XACT]
let t_mask_2 = IF t_mask_1 THEN 0 ELSE 1
let t_mask = t_mask_2[gt=var@ASN]
let var_masked = var * t_mask
pause ; shade/l=2 var_masked
! remove intermediate files
sp rm -f dummy_L.dat
!----------end of example---------------------------------------------------
On Wed, 26 Apr 2006, Emilie Vanvyve wrote:
Hi everyone,
Isearched in the online help and the mail archives and couldn't find a solution
to my problem, so here I am.
I have a 3D variable (lon,lat,time), with a 30-minutes time step over a whole
year. I'd like to replace my variable value by 0 each time the time step equals
the first of every month, i.e.:
if "we are on the 1st of January 0:00" then "reset variable to zero" else "keep it
as it is"
if "we are on the 1st of February 0:00" then "reset variable to zero" else "keep
it as it is"
etc.
How can I achieve this? I tried with a simple if, it didn't work (here after, let's
say the time step at which the variable "var" must be reset to 0 is the time
step 100):
if `L eq 100` then let new_var = 0*var else let new_var = var
or
let new_var = if `L eq 100` then 0*var else var
It doesn't work. I always get something like:
**ERROR: invalid command: grave accent doesnt evaluate to scalar
L eq 100
I don't mind if the solution takes time to be implemented, as long as it works.
I've only 12 changes to make in the variable.
Thanks in advance for any suggestion!
Emilie V.
------------------------------------------------------
Emilie VANVYVE
Physicist, PhD student
Université catholique de Louvain (UCL)
Institut d'astronomie et de géophysique G. Lemaître (ASTR)
Chemin du Cyclotron, 2, B-1348 Louvain-la-Neuve, Belgium
Phone: +32-(0)10-473300 Fax: +32-(0)10-474722
E-mail: vanvyve@astr.ucl.ac.be Web : www.astr.ucl.ac.be/u/vanvyve
[Thread Prev][Thread Next][Index]
Dept of Commerce /
NOAA /
OAR /
PMEL /
TMAP
Contact Us | Privacy Policy | Disclaimer | Accessibility Statement