[Thread Prev][Thread Next][Index]

Re: Three ferret questions

Hi Stefan,

My answers are embedded below. I will refer to the on-line Ferret Users Guide
available through the Ferret Web home page (http://www.ferret.noaa.gov). As
always, if I've misunderstood your answer please feel free to follow up.

	- steve


On Mar 23,  7:41pm, Stefan Rahmstorf wrote:
> Subject: Three ferret questions
> Dear Ferrets,
> there are 3 issues that I sometimes encounter when writing ferret go
> files which I have not found good solutions for yet.
> 1. I want to plot temp[k=kmax] say, where kmax is not a constant but a
> field kmax(i,j), e.g. to plot temperature along the sea bottom. More
> generally I sometimes would like to use within the [] a variable that I
> can define or calculate earlier in a go file.

The "@WEQ" transformation will do what you are after. See
		2.4.27 @WEQ

Combine the examples 3 and 4 for your problem defining a variable
"zero_at_deepest" analagous to zero_at_warmest in example 4.

If you have "kmax" as a variable (a 2-d field in lat-long) you can use it:

	let zero_at_deepest = k[g=temp] - kmax

If, instead, you have only the field "temp", itself, with missing values below
the max depth then you can define

	let kmax3D = k[g=temp] + 0*temp	! an XYZ field of K masked by bottom
	let kmax   = kmax3D[k=1:33@max]	! if 33 is number of vertical levels

> 2. If statements. I use models of different resolutions etc. but don't
> want to keep seperate go files for each model although certain plots
> need to be handled differently for each model (e.g. they use a different
> mask for the Atlantic etc). What I would like is something like setting
> 'let model=2' at the beginning of a ferret session and then select
> certain options in each go file by something like
> 'if model eq 2 ....'
> I don't feel the $1 etc parameters can quite do what I want.

Check out the IF-THEN-ELSE logic that is in version 4.4 of Ferret:
              5.3.5 Flow Control in GO tools

Use this in conjunction with "symbols" for the behavior that you are after

As in
	IF ($model"|my_model_1>1|") THEN
	    do these lines only for for my_model_1
	    more lines

> 3. How can I e.g. subtract a 2-d field from a 3-d field, e.g. if I
> wanted to subtract the temperature at level 1 (at each i,j) from the
> temperatures at every level (for the same i,j)? (There are useful
> applications for this e.g. to define a mixed layer depth.)

Ferret will subtract a 2D field from a 3D field as in

	LET temp_anomaly = temp - sst		! temp is 3D, sst is 2D
	LET temp_anomaly = temp - temp[z=0]	! temp[Z=0] is a 2D field

> Hope for some ideas!

I hope this has helped.  -- steve

> Cheers,
> Stefan
> --
> Dr Stefan Rahmstorf
> Potsdam Institute for Climate Impact Research (PIK)
> PO Box 60 12 03
> 14412 Potsdam
> Germany
> --
> E-mail:  rahmstorf@pik-potsdam.de
> Tel:     +49 331 2781 160  (home: +49 331 715429)
> Fax:     +49 331 2781 204  (home: +49 331 715429)
>-- End of excerpt from Stefan Rahmstorf


		|  NOAA/PMEL               |  ph. (206) 526-6080  
Steve Hankin	|  7600 Sand Point Way NE  |  FAX (206) 526-6744
		|  Seattle, WA 98115-0070  |  hankin@pmel.noaa.gov

[Thread Prev][Thread Next][Index]

Dept of Commerce / NOAA / OAR / PMEL / TMAP

Contact Us | Privacy Policy | Disclaimer | Accessibility Statement