[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
20031221: netCDF array dimension limitations on PCs (cont.)
- Subject: 20031221: netCDF array dimension limitations on PCs (cont.)
- Date: Mon, 22 Dec 2003 13:12:06 -0700
>From: "linx" <address@hidden>
>Organization: ?
>Keywords: 200312201636.hBKGavp2008288 netCDF Fortran PC
Jordan (:-)
>Hi,very glad to receive your reply and be thankful for your advice.
>
>Watching or Playing a basketball game is one of my hobbies and M.Jordan
>is no doubt one of the greatest basketball player in my eye.So I use
>his name, then add my surname to register this email box.
>
>Although I just start to use netcdf a short time before,I have the
>basic knowledge of it.So I certainly know its ablity to "hyperslab"
>the data and do some basic program in fortran,but I'm not familiar
>with some other cases.
OK.
>In fact,I use a ordinary PC with a OS of windows2000 and do some data
>analysis in climatology. When I deal with a nc file only containing
>one level's data,I defined a array of 3 dimension, hgt(144,73,671) for
>example,and use the following fortran code to read it.
>
> real*4 hgt(144,73,671)
> .......
> start(1)=1;start(2)=1;start(3)=1
> count(1)=144;count(2)=73;count(3)=671
> .........
> STATUS = NF_GET_VARA_real(NCID, varid,start,count,hgt)
> if ( status/=nf_noerr ) write (*,*) nf_strerror(status)
> .....
>
>and these code work well .
OK. This means that you should be able to define your array similarly
and read a single level at a time.
>When I meet one nc file containing all 17 levels' data,I make the
>similar codes.But this time it can't be compiled,maybe because of the
>limit of my memory size(396MB)
>
> real*4 hgt(144,73,17,671)
> .......
> start(1)=1;start(2)=1;start(3)=5;star(4)=1
> count(1)=144;count(2)=73;count(3)=1;count(4)=671
> .........
> STATUS = NF_GET_VARA_real(NCID, varid,start,count,hgt)
> if ( status/=nf_noerr ) write (*,*) nf_strerror(status)
>
>Can you tell me how to modify the codes or other methods to resolve
>such problem.
If you want to read a single level, change your declaration for 'hgt' to:
real*4 hgt(144,73,1,671)
and then read in a single level.
If you want to read all levels for a single month, change your declaration
for 'hgt' to:
real*4 hgt(144,73,17,1)
and then read in a single level.
And so on.
>Thanks a lot!
No worries. Best of luck.
Tom Yoksas
>From address@hidden Wed Dec 24 14:54:39 2003
Thank you for your help.I've already resolve this problem.
Now I have a better understanding for the 'superslab' ability of Netcdf.
Merry Christmas!
J.L