10 integer,
parameter:: double=selected_real_kind(p=13,r=200)
11 type(nemsio_gfile) :: gfile,gfilem2,gfilem3,gfiled2
15 character(8) gdatatype,modelname
17 real,
allocatable :: tmp(:)
20 real isecond,stime,etime,dummy
21 integer nrec,im,jm,lm,l,idate(7),version, im2,jm2, nframe, &
22 ntrac,irealf,nrec1,version1,nmeta1,nfhour,nfminute,nfsecond, &
23 nfsecondn,nfsecondd,nmeta,tlmeta
24 integer nsoil,jcap,ncld,idsl,idvc,idvm,idrt,rlon_min,rlon_max, &
26 integer nmetavari,nmetavarr,nmetavarl,nmetavarc,nmetavarr8, &
27 nmetaaryi,nmetaaryr,nmetaaryl,nmetaaryc,nmetaaryr8
28 integer ihrst,idat(3),mp_physics,sf_surface_physics,icycle,fieldsize
29 logical global, run,extrameta
30 character(16),
allocatable :: recname(:),reclevtyp(:)
31 integer,
allocatable :: reclev(:)
32 real,
allocatable :: cpi(:),ri(:)
38 integer i,ii,j,jj,jrec,krec,vlev,iret,lev,ista,iend,jsta,jend
41 character(16),
allocatable :: variname(:),varrname(:),varlname(:),varcname(:),varr8name(:), &
42 aryiname(:),aryrname(:),arylname(:),arycname(:),aryr8name(:)
43 integer,
allocatable :: varival(:),aryilen(:),aryrlen(:),aryllen(:),aryclen(:),aryr8len(:)
44 integer,
allocatable :: aryival(:,:)
45 real,
allocatable :: varrval(:),aryrval(:,:)
46 real(8),
allocatable :: varr8val(:),aryr8val(:,:)
47 logical,
allocatable :: varlval(:),arylval(:,:)
48 character(16),
allocatable :: varcval(:),arycval(:,:)
53 call nemsio_init(iret=iret)
54 print *,
'nemsio_init, iret=',iret
60 print *,
'3b:: start reading nemsio file '
63 call nemsio_open(gfile,trim(cin),
'read',iret=iret)
64 if(iret/=0) print *,
'3b:: after open read, ',trim(cin),
' iret=',iret
67 im=0;jm=0;lm=0;nframe=0;nrec=0
68 call nemsio_getfilehead(gfile,dimx=im,dimy=jm,dimz=lm,nframe=nframe,nrec=nrec,&
69 gdatatype=gdatatype,modelname=modelname,nmeta=nmeta,ntrac=ntrac,tlmeta=tlmeta,iret=iret)
70 print *,
'3b:: gfilem2,im=',im,
'jm=',jm,
'lm=',lm,
'nframe=',nframe,
'nrec=',nrec, &
71 'gdatatype=',gdatatype,
' modelname=',modelname,
' nmeta=',nmeta,
'ntrac=',ntrac, &
72 'tlmeta=',tlmeta,
'iret=',iret
74 call nemsio_getfilehead(gfile,nfhour=nfhour,nfminute=nfminute,nsoil=nsoil,ncldt=ncld,&
75 idsl=idsl,idvc=idvc,idvm=idvm,idrt=idrt,iret=iret)
76 print *,
'3b:: gfilem2,nfhour=',nfhour,
'jcap=',jcap,
'ncld=',ncld,
'idvc=',idvc,
'idrt=',idrt
83 call nemsio_getfilehead(gfile,nmetavari=nmetavari,nmetavarr=nmetavarr,nmetavarl=nmetavarl, &
84 nmetavarc=nmetavarc,nmetavarr8=nmetavarr8,nmetaaryi=nmetaaryi,nmetaaryr=nmetaaryr, &
85 nmetaaryr8=nmetaaryr8,nmetaaryl=nmetaaryl, nmetaaryc=nmetaaryc)
86 print *,
'nmetavari=',nmetavari,
'nmetavarr=',nmetavarr,
'nmetavarl=',nmetavarl, &
87 'nmetavarc=',nmetavarc,
'nmetavarr8=',nmetavarr8
88 print *,
'nmetaaryi=',nmetaaryi,
'nmetaaryr=',nmetaaryr,
'nmetaaryl=',nmetaaryl, &
89 'nmetaaryc=',nmetaaryc,
'nmetaaryr8=',nmetaaryr8
91 allocate(variname(nmetavari),varival(nmetavari))
92 call nemsio_getfilehead(gfile,variname=variname,varival=varival)
93 print *,
'variname=',variname,
'varival=',varival
96 allocate(varrname(nmetavarr),varrval(nmetavarr))
97 call nemsio_getfilehead(gfile,varrname=varrname,varrval=varrval)
98 print *,
'varrname=',varrname,
'varrval=',varrval
100 if(nmetavarr8>0)
then
101 allocate(varr8name(nmetavarr8),varr8val(nmetavarr8))
102 call nemsio_getfilehead(gfile,varr8name=varr8name,varr8val=varr8val)
103 print *,
'varr8name=',varr8name,
'varr8val=',varr8val
106 allocate(varlname(nmetavarl),varlval(nmetavarl))
107 call nemsio_getfilehead(gfile,varlname=varlname,varlval=varlval)
108 print *,
'varlname=',varlname,
'varlval=',varlval
111 allocate(varcname(nmetavarc),varcval(nmetavarc))
112 call nemsio_getfilehead(gfile,varcname=varcname,varcval=varcval)
113 print *,
'varcname=',varcname,
'varcval=',varcval
117 allocate(aryiname(nmetaaryi),aryilen(nmetaaryi))
118 call nemsio_getfilehead(gfile,aryiname=aryiname,aryilen=aryilen)
119 print *,
'aryiname=',aryiname,
'aryilen=',aryilen
120 allocate(aryival(maxval(aryilen),nmetaaryi))
121 call nemsio_getfilehead(gfile,aryival=aryival)
123 print *,
'aryiname=',aryiname(i),aryilen(i),aryival(1:aryilen(i),i)
127 allocate(aryrname(nmetaaryr),aryrlen(nmetaaryr))
128 call nemsio_getfilehead(gfile,aryrname=aryrname,aryrlen=aryrlen)
129 print *,
'aryrname=',aryrname,
'aryrlen=',aryrlen
130 allocate(aryrval(maxval(aryrlen),nmetaaryr))
131 call nemsio_getfilehead(gfile,aryrval=aryrval)
133 print *,
'aryrname=',aryrname(i),aryrlen(i),aryrval(1:aryrlen(i),i)
136 if(nmetaaryr8>0)
then
137 allocate(aryr8name(nmetaaryr8),aryr8len(nmetaaryr8))
138 call nemsio_getfilehead(gfile,aryr8name=aryr8name,aryr8len=aryr8len)
139 print *,
'aryr8name=',aryr8name,
'aryr8len=',aryr8len
140 allocate(aryr8val(maxval(aryr8len),nmetaaryr8))
141 call nemsio_getfilehead(gfile,aryr8val=aryr8val)
143 print *,
'aryr8name=',aryr8name(i),aryr8len(i),aryr8val(1:aryr8len(i),i)
147 allocate(arylname(nmetaaryl),aryllen(nmetaaryl))
148 call nemsio_getfilehead(gfile,arylname=arylname,aryllen=aryllen)
149 print *,
'arylname=',arylname,
'aryllen=',aryllen
150 allocate(arylval(maxval(aryllen),nmetaaryl))
151 call nemsio_getfilehead(gfile,arylval=arylval)
153 print *,
'arylname=',arylname(i),aryllen(i),arylval(1:aryllen(i),i)
157 allocate(arycname(nmetaaryc),aryclen(nmetaaryc))
158 call nemsio_getfilehead(gfile,arycname=arycname,aryclen=aryclen)
159 print *,
'arycname=',arycname,
'aryclen=',aryclen
160 allocate(arycval(maxval(aryclen),nmetaaryc))
161 call nemsio_getfilehead(gfile,arycval=arycval)
163 print *,
'arycname=',arycname(i),aryclen(i),arycval(1:aryclen(i),i)
171 fieldsize=(im+2*nframe)*(jm+2*nframe)
172 allocate(tmp(fieldsize))
174 call nemsio_getrechead(gfile,jrec,vname,vlevtyp,vlev,iret)
175 call nemsio_readrec(gfile,jrec,tmp,iret=iret)
176 print *,
'3b:: read,jrec=',jrec,
'iret=',iret,
' vname=',trim(vname), &
177 ' vlevtyp=',trim(vlevtyp),
' vlev=',vlev,
'data=',maxval(tmp),minval(tmp)
181 call nemsio_close(gfile,iret=iret)
182 if ( iret .ne.0) print *,
'iret=',iret
189 call nemsio_finalize()