No subject

Mike Fiorino fiorino at LLNL.GOV
Tue Jun 21 17:28:14 EDT 2005


"word size" is compiler dependent, e.g., in

      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')

      read(10,rec=1) slp

some need recl=idim*jdim not recl=idim*jdim*4.  also some .f compilers
support byteswapping. /R Mike

> -----Original Message-----
> From: GRADSUSR at LIST.CINECA.IT
> [mailto:GRADSUSR at LIST.CINECA.IT] On Behalf Of Diane Stokes
> Sent: Tuesday, June 21, 2005 9:01 AM
> To: GRADSUSR at LIST.CINECA.IT
> Subject:
>
> 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