15 #include "dimensions.h"
19 integer,
parameter :: iip1=
iim+1
20 integer,
parameter ::
jjp1=jjm+1
21 integer :: ierr,nid,nbvar,
i,ndims,lt,nvarid
22 integer,
dimension(4) :: id,varid,start,size
23 integer,
dimension(5) :: dimids
24 character (len=50) :: name,nameout,units,
title
25 real,
dimension(iip1,jjp1,llm) :: sum3d,square3d,mean3d,sd3d
26 real,
dimension(iip1,jjp1) :: sum2d,square2d,mean2d,sd2d
27 real,
dimension(istime) ::
time
28 real,
dimension(jjp1) :: lat
29 real,
dimension(iip1) ::
lon
30 real,
dimension(llm) :: alt
31 logical :: lcopy=.true.
33 integer :: meanid,sdid
37 count(istime)=count(istime)+1
39 ierr = nf_open(
"stats.nc",nf_write,nid)
43 ierr= nf_inq_dimid(nid,
"latitude",id(1))
44 ierr= nf_inq_dimid(nid,
"longitude",id(2))
45 ierr= nf_inq_dimid(nid,
"altitude",id(3))
46 ierr= nf_inq_dimid(nid,
"Time",id(4))
48 ierr= nf_inq_varid(nid,
"latitude",varid(1))
49 ierr= nf_inq_varid(nid,
"longitude",varid(2))
50 ierr= nf_inq_varid(nid,
"altitude",varid(3))
51 ierr= nf_inq_varid(nid,
"Time",varid(4))
58 ierr= nf_put_vara_double(nid,varid(4),
i,1,
time(
i))
60 ierr= nf_put_vara_real(nid,varid(4),
i,1,
time(
i))
67 ierr = nf_get_var_double(nid,varid(1),lat)
68 ierr = nf_get_var_double(nid,varid(2),
lon)
69 ierr = nf_get_var_double(nid,varid(3),alt)
71 ierr = nf_get_var_real(nid,varid(1),lat)
72 ierr = nf_get_var_real(nid,varid(2),
lon)
73 ierr = nf_get_var_real(nid,varid(3),alt)
77 ierr = nf_inq_nvars(nid,nbvar)
86 ierr=nf_inq_varname(nid,varid,name)
87 write(*,*)
"OK variable ",name
90 ierr=nf_get_att_text(nid,varid,
"units",units)
93 ierr=nf_get_att_text(nid,varid,
"title",
title)
95 ierr=nf_inq_varndims(nid,varid,ndims)
105 size=(/iip1,
jjp1,llm,1/)
110 ierr = nf_get_vara_double(nid,varid,start,
size,sum3d)
111 ierr = nf_get_vara_double(nid,varid+1,start,
size,square3d)
113 ierr = nf_get_vara_real(nid,varid,start,
size,sum3d)
114 ierr = nf_get_vara_real(nid,varid+1,start,
size,square3d)
117 mean3d=sum3d/count(lt)
118 sd3d=sqrt(max(0.,square3d/count(lt)-mean3d**2))
121 ierr = nf_put_vara_double(nid,varid,start,
size,mean3d)
122 ierr = nf_put_vara_double(nid,varid+1,start,
size,sd3d)
124 ierr = nf_put_vara_real(nid,varid,start,
size,mean3d)
125 ierr = nf_put_vara_real(nid,varid+1,start,
size,sd3d)
129 else if (ndims.eq.3)
then
135 size=(/iip1,
jjp1,1,0/)
140 ierr = nf_get_vara_double(nid,varid,start,
size,sum2d)
141 ierr = nf_get_vara_double(nid,varid+1,start,
size,square2d)
143 ierr = nf_get_vara_real(nid,varid,start,
size,sum2d)
144 ierr = nf_get_vara_real(nid,varid+1,start,
size,square2d)
147 mean2d=sum2d/count(lt)
148 sd2d=sqrt(max(0.,square2d/count(lt)-mean2d**2))
151 ierr = nf_put_vara_double(nid,varid,start,
size,mean2d)
152 ierr = nf_put_vara_double(nid,varid+1,start,
size,sd2d)
154 ierr = nf_put_vara_real(nid,varid,start,
size,mean2d)
155 ierr = nf_put_vara_real(nid,varid+1,start,
size,sd2d)