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)
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
c c zjulian c cym CALL iim cym klev iim