[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[netCDF #DBL-115183]: ncdump and fortran 90 code giving different results



Hi Somnath Baidya Roy,

> I am trying to read 2m temperature from MERRA. The data is 3d: nlat =
> 21, nlon=17, time=24 corresponding to a 24 hr timeseries over a small
> domain in Central Asia.
> 
> I have used the pres_temp_4D_rd.f90 as a template to read the data. My
> fortran code is test_4D_rd.f90. I am using Intel 11.0 compilers. I am
> comparing the output from the write statement in line 99 of the Fortran
> code with the output from ncdump -f.
> 
> The outputs match for the first timestep but start diverging from the
> second timestep. Please compare line 367 of StdoutFromFortan.out with
> line 456 of DumpFromNcdump.out. this line corresponds to the first
> read value at time = 2. All values prior to this line are identical
> between the 2 files. However values starting from this line and beyond
> are different. At the end of the file the difference is several degrees
> Celsius. Please help me find the error.

The error was treating a 3D array on disk as if it were a 4D array.  When
you call the nf90_get_var function, it "knows" the disk array is only 
3-dimensional,
so it only looks at the first 3 indices of the start and count arrays, which
don't change, so it just keeps getting the same slice of data over and over.
That's why the (1,1,1) value for temperature is the same as the (1,1,2) value 
and
(1,1,3) value and so on.

I've attached a corrected program that reads the 3D array one lat-lon slice at 
a 
time, and prints out the values, which agree with the ncdump output.  I also
included in comments after the slice-at-a-time loop, how you could also read
the whole 3D array at once, if you have a big enough memory array.  This
is just to show another way of doing it, to show how the counter argument to
nf90_get_var is used.

I hope this helps ...

--Russ



Russ Rew                                         UCAR Unidata Program
address@hidden                      http://www.unidata.ucar.edu



Ticket Details
===================
Ticket ID: DBL-115183
Department: Support netCDF
Priority: Normal
Status: Closed

Attachment: test_3D_rd.f90
Description: Binary data