No subject
Diane Stokes
diane.stokes at NOAA.GOV
Tue Jun 21 12:01:22 EDT 2005
Dear Arpita,
You sent a couple of near repeat msgs with a slightly modified version
of your code. I'm responding to this msg because the version of the
code you have here looks more complete. Here are a couple problems I
see in this version of your fortran code:
1) When you read the level fields, you keep reading the same record for
each level for a variable:
do l=1,lyr
read(10,rec=7) ((z(i,j,l),i=1,idim),j=1,jdim)
enddo
do l=1,lyr
read(10,rec=8)((u(i,j,l),i=1,idim),j=1,jdim)
enddo
So, you are storing the 1st level of z data in every level of your z
array and the 2nd level of z data in every level of your u array.
You have already started incrementing variable "rec" with each single
layer variable. Use that variable in your read statement and continue
to incremement the record number for each level. Then continue
incrementing from that point when you get to the next variable. Eg:
do l=1,lyr
read(10,rec=rec) ((z(i,j,l),i=1,idim),j=1,jdim)
rec=rec+1
enddo
do l=1,lyr
read(10,rec=rec) ((u(i,j,l),i=1,idim),j=1,jdim)
rec=rec+1
enddo
2) Similarly, on output, you are not incrementing the the record number:
do l=1,lyr
write(13,rec=1)u
enddo
That file should have only one record in it the way your code is
written. Since you are able to change levels at all, I suspect earlier
versions of your code wrote out multiple records. Since this is a
direct access file, you are only overwriting the first record and the
old data remains. It would be a good idea to delete your old file so
you can start fresh. Otherwise, you really don't know what is in there.
Best regards,
Diane Stokes
Arpita Mandal wrote:
>
> Dear sir
> I hope you are fine. i could solve the earlier problem send to you. i am
> using the program anal2.f to read the different variables of the file
> anal.1998040100.288 .from GAME reanalysis site. sp, slp i could read
> correctly and plot in grads. i
> am having problem with the u, v,z variables. i can read the data for u,v
> wind in binary form and wrote ctl file to plot them. in grads the contours
> are coming from 300 to 1000 interval 100. but when i am using the
> origininal ctl file anal_125.ctl given in GAME site and plotting u,v, the
> values are coming from -20 to 20, -30 to 30.
> also i could not set the level.
> when i am giving set lev 500
> d u
> i am getting contours from 300 to 1000,
> the same is for all the levels.
> kindly help me out
> with regards
> arpita
>
>
>
>
>
>
> ------------------------------------------------------------------------
>
>
> C Last change: AM 5 May 2005 2:32 pm
> C----------------------------------------------------------------------------------
> C This is a sample fortran program to read 1.25 degree version of GAME-reanalysis
> C Ver.1.5 global objective analysis.
> C
> C Variables:
> C slp : Sea Level Pressure
> C sp : Surface Pressure
> C su : Surface U-comp
> C sv : Surface V-comp
> C st : Surface Temperature
> C ssh : Surface Specific Humidity
> C z : heights (17 layers)
> C u : U-comp (17 layers)
> C v : V-comp (17 layers)
> C t : Temperature (17 layers)
> C sh : Specific Humidity (1000-300 hPa)
> C
> C 17 layers are as follows. Unit is hPa.
> C 1000 925 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10
> C
> C You should notice that these data were produced on the big_endian machine.
> C
> C by K.Takahashi, MRI/JMA on June 2002
> C---------------------------------------------------------------------------------
> C (idim,jdim)=(1,1) and (288,145) correspond to (0E,90N) and (358.75E,90S) respectively.
> C
> parameter (idim=288,jdim=145,lyr=17,lytd=8,nt=856)
> real *4 a(lyr)
> integer l
>
> real*4 slp(idim,jdim),sp(idim,jdim),su(idim,jdim),
> # sv(idim,jdim),st(idim,jdim),ssh(idim,jdim),
> # z(idim,jdim,lyr),u(idim,jdim,lyr),v(idim,jdim,lyr),
> # t(idim,jdim,lyr),sh(idim,jdim,lytd)
>
> real*4 dum(idim,jdim)
> open(10,file='@anal.1998040100.288',recl=idim*jdim*4,
> # form='unformatted', access='direct')
> open (11,FILE='sp.dat',recl=idim*jdim*4,access='direct')
> open(12,file='slp.dat',recl=idim*jdim*4,access='direct')
> open(13,file='u.dat',recl=idim*jdim*4,access='direct')
> open(14,file='v.dat',recl=idim*jdim*4,access='direct')
>
> rec=1
> read(10,rec=1) slp
> rec=rec+1
> read(10,rec=2) sp
> rec=rec+1
> read(10,rec=3) su
> rec=rec+1
> read(10,rec=4) sv
> rec=rec+1
> read(10,rec=5) st
> rec=rec+1
> read(10,rec=6) ssh
> C
> do l=1,lyr
> read(10,rec=7) ((z(i,j,l),i=1,idim),j=1,jdim)
> enddo
> write(6,*) 'read z'
> C
> do l=1,lyr
> read(10,rec=8)((u(i,j,l),i=1,idim),j=1,jdim)
> enddo
> write(6,*) 'read u'
> C
> do l=1,lyr
> read(10,rec=9) ((v(i,j,l),i=1,idim),j=1,jdim)
> enddo
> write(6,*) 'read v'
> C
> do l=1,lyr
> read(10,rec=10) ((t(i,j,l),i=1,idim),j=1,jdim)
> enddo
> write(6,*) 'read t'
> C
> do l=1,lytd
> read(10,rec=11) ((sh(i,j,l),i=1,idim),j=1,jdim)
> enddo
> write(6,*) 'read sh'
>
> WRITE(11,rec=1) sp
> write (12,rec=1)slp
>
>
> do l=1,lyr
> write(13,rec=1)u
> enddo
> do l=1,lyr
> write(14,rec=1)v
> enddo
> end
>
>
>
>
>
>
> ------------------------------------------------------------------------
>
> dset ^u.dat
> title sample data set
> undef -9.99E33
> options byteswapped
> options yrev
> xdef 288 linear 0.0 1.25
> ydef 145 linear -90 1.25
> tdef 856 linear 00z01apr1998 6hr
> zdef 17 levels 1000 925 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10
> VARS 1
> u 17 99 u-comp
> endvars
--
Diane Stokes
Environmental Modeling Center
National Weather Service/NOAA
More information about the gradsusr
mailing list