Hi Lina, I'm not sure I understand how the data depends on L. It sounds
as if each variable has non-zero values at the L=1:10 at the same
x,y,z locations, is that correct? It's a problem that uses several of Ferret's grid-handling
capabilities, so kind of an interesting example. -Use transformations to squash each variable down to the non-zero entry in the I,J,K directions. The data will remain where it is in L. Any of the "compressing transformations such as @SUM or @MAX will get rid of the dependence on the original grid. -Put the data onto a new x axis, X=1:55, using Ferret's concept
of "conformability". -Write a netCDF file using the ideas of "appending a slab to a netCDF file" (See APPEND in the Users' Guide index), so you can list the data from each new variable into the next slot. Here's a short example, using some simplified variables.
yes? let a_2 = {0,0,0,0,0,0,6,0} yes? let a_3 = {4,0,0,0} ... ! The @sum gets rid of the dependence on the original grid in i,j,k. yes? let var1 = a_1[i=@sum] ! you'll use a_1[i=@sum,j=@sum,k=@sum] yes? list var1 VARIABLE : A_1[I=@SUM] X : 0.5 to 7.5 3.000 ! Define the output axis - length is the of the number of variables we're going to append. yes? define axis/x=1:5:1 xax5 ! We'll list i=1 of this variable to the output file. var1 does not depend on x, so adding ! a zero-valued _expression_ on xax5 puts it at every location of xax5 (conformability). yes? let outvar = var1 + 0*x[gx=xax5] yes? list outvar VARIABLE : VAR1[I=@MAX] + 0*X[GX=XAX5] SUBSET : 5 points (X) Y : 1 Z : 1 1 1 1 / 1: 3.000 2 / 2: 3.000 3 / 3: 3.000 4 / 4: 3.000 5 / 5: 3.000 ! Write out /i=1 of this variable and also use /ILIMITS to set up the file ! with the full length of the axis in the x direction. yes? save/clobber/file=output_file.nc/ilimits=1:5/i=1 outvar ! Put the second variable onto the same x axis, and write its ! value into the /i=2 slot of the output file. yes? let var2 = a_2[i=@sum] yes? let outvar = var2 + 0*x[gx=xax5] yes? list outvar VARIABLE : VAR2 + 0*X[GX=XAX5] SUBSET : 5 points (X) 1 / 1: 6.000 2 / 2: 6.000 3 / 3: 6.000 4 / 4: 6.000 5 / 5: 6.000 yes? save/append/file=output_file.nc/i=2 outvar
So far now the file contains outvar = 3, 6, and the rest are
missing-values. Continue defining variables and appending with
/i=3, /i=4,...
I think you'll see that all of the same commands work, and you
have an x-t file.
On 1/30/2018 8:28 AM, Lina Krisztian
wrote:
Hello, I have a variable ‚a_‘ which is everywhere zero except for one position with x,y,z. The grid is: x=1:100, y=1:100, z=1:5,l=1:10 I have several variables like this (so everywhere zero except one position) which are named a_1, a_2,..,a_55 Now I wanna have a new variable ‚n‘ which include all these values which aren’t zero. The grid should be like: x=1:55,l=1:10 So for example the non zero values are: a_1 = 10, a_2 = 15, a_3 = 50. I wanna have a variable n which first value is 10, second 15 and third 50. And the grid should be like: x=1:3,l=1:10 When I’m trying this, I got a problem with the different dimensions. Can someone please help me with this problem. Thanks a lot. |