udf with z and t

Henrique Barbosa hmjbarbosa at GMAIL.COM
Mon Oct 30 19:00:26 EST 2006


Mathias,

The problem is a bit more complicated because the calculation
I want to do requires that I have, at the same time (i.e. at the same
call to the udf func), all Z and T values of the field.

What tloop and define do is (from grads help):

"When time is a varying dimension in the dimension environment, the
tloop function evaluates the expr at fixed times, then reconstructs
the time series to obtain a final result that is time varying."

Futher more, the grads help goes on and says:

"The tloop function is provided as a way to obtain time series from
functions that themselves are not implemented to be able to operate
when time is a varying dimension."

That's exactly my point! I want to create an UDF function that
IS implemented to operate when time is a varying dimension.

As I said on my previous email, it seems it should work, since
the header of the transfer file used to communicate between
grads and the external executable has a field to tell
which variables is inside the archive. From grads help:

"Format of the function data transfer file
(...)
Argument records:
(...)
1st record: This record contains 20 values,
(...)
2 -- An index to identify the i dimension (idim). Options for the index are:
      -1    None
      0    X dimension (lon)
      1    Y dimension (lat)
      2    Z dimension (lev)
      3    T dimension (time)
"

But when a call my function with fixed (x,y) and varying (z,t),
I get idim=-1 and jdim=-1 when I read the transfer file
inside the fortran code.

Thank you,

Henrique

On 10/30/06, Matthias Munnich <munnich at atmos.ucla.edu> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi Henrique,
>
> ga-> d  tloop(myudf(expr))
>
> should work.   You may like to read the discussion on "tloop"
> http://grads.iges.org/grads/gadoc/gradfunctloop.html
> and "set loopdim" in the docs to understand why this is necessary.
>
> It also explains why "define allundef=myudf(expr)" should also work.
>
> ... Matt
>
> Henrique Barbosa wrote:
> > Hi all,
> >
> > I want to write a UDF that deals with field values varying in Z and
> > T dimensions. From the grads help files, it seems that it should
> > work:
> >
> > http://www.iges.org/grads/gadoc/udf.html
> >
> > ... At least there are fields in the header of the transfer file
> > that tell if the first and second varying dimensions are either x,
> > y, z or t.
> >
> > My function is very simple,  it only reads the transfer file and
> > print the header info, and returns a undefined field. But when I
> > call it with fixed (x,y) and varying (Z,T), grads call the function
> >  many times.
> >
> > I mean, instead of calling the function only once with the 2D
> > subset:
> >
> > x=cte, y=cte, z=z_min...z_max,t=t_min...t_max
> >
> > Grads calls the udf one time for each pair (z,t), always passing
> > only a single value.
> >
> > Does anyone know how to pass a varying (Z,T) to a UDF function?
> >
> > Or is that feature that will only be implemented in the future?
> >
> > I am using grads-1.9b4, precompiled binaries (rh9), on a Suse 10.1
> > intel platform (i386).
> >
> > Thank you,
> >
> > Henrique
>
>
> - --
> - --------------------------------
> Matthias Munnich
> Univ. of California, Los Angeles
> Inst. of Geophysics and Planetary Physics
> 3845 Slichter Hall
> Los Angeles, CA 90095-1567
> Phone: +1-310-794 5899
> Fax: +1-310-206 3051
> Email: munnich at atmos.ucla.edu
> - --------------------------------
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.2.2 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFFRkeZidaDTh/cfhYRAr2lAKC55E0brI9nSDkYi2q/Bh+1BLhlDQCg0c6u
> eGAkpQAc9rr5/XGVodDRktA=
> =vte2
> -----END PGP SIGNATURE-----
>



More information about the gradsusr mailing list