18 LOGICAL,
INTENT(IN) :: offline_dyn
19 INTEGER,
INTENT(IN) :: istphy_dyn
26 SUBROUTINE phystokenc (nlon,nlev,pdtphys,rlon,rlat, &
27 pt,pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, &
28 pfm_therm,pentr_therm, &
29 cdragh, pcoefh,yu1,yv1,ftsol,pctsrf, &
30 frac_impa,frac_nucl, &
31 pphis,paire,dtime,
itap, &
32 psh, pda, pphi, pmp, pupwd, pdnwd)
52 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: psh
53 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pda
54 REAL,
DIMENSION(klon,klev,klev),
INTENT(IN):: pphi
55 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pmp
56 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pupwd
57 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pdnwd
69 INTEGER,
SAVE :: physid
82 REAL,
ALLOCATABLE,
SAVE :: t(:,:)
99 REAL,
INTENT(IN) :: pfm_therm(
klon,
klev+1)
102 REAL,
ALLOCATABLE,
SAVE :: entr_therm(:,:)
103 REAL,
ALLOCATABLE,
SAVE :: fm_therm(:,:)
120 REAL,
ALLOCATABLE,
SAVE :: mfu(:,:)
121 REAL,
ALLOCATABLE,
SAVE :: mfd(:,:)
122 REAL,
ALLOCATABLE,
SAVE :: en_u(:,:)
123 REAL,
ALLOCATABLE,
SAVE :: de_u(:,:)
124 REAL,
ALLOCATABLE,
SAVE :: en_d(:,:)
125 REAL,
ALLOCATABLE,
SAVE :: de_d(:,:)
126 REAL,
ALLOCATABLE,
SAVE :: coefh(:,:)
128 REAL,
ALLOCATABLE,
SAVE :: pyu1(:)
129 REAL,
ALLOCATABLE,
SAVE :: pyv1(:)
130 REAL,
ALLOCATABLE,
SAVE :: pftsol(:,:)
131 REAL,
ALLOCATABLE,
SAVE :: ppsrf(:,:)
136 REAL,
DIMENSION(:,:),
ALLOCATABLE,
SAVE :: sh
137 REAL,
DIMENSION(:,:),
ALLOCATABLE,
SAVE :: da
138 REAL,
DIMENSION(:,:,:),
ALLOCATABLE,
SAVE :: phi
139 REAL,
DIMENSION(:,:),
ALLOCATABLE,
SAVE :: mp
140 REAL,
DIMENSION(:,:),
ALLOCATABLE,
SAVE :: upwd
141 REAL,
DIMENSION(:,:),
ALLOCATABLE,
SAVE :: dnwd
144 INTEGER,
SAVE:: iadvtr=0
148 CHARACTER(len=12) :: nvar
149 logical,
parameter :: lstokenc=.
false.
156 pcoefh_buf(:,1) = cdragh(:)
157 pcoefh_buf(:,2:
klev) = pcoefh(:,2:
klev)
174 ALLOCATE( pyu1(
klon))
175 ALLOCATE( pyv1(
klon))
200 WRITE(
lunout,*)
'reinitialisation des champs cumules a iadvtr=',iadvtr
229 mfu(i,k)=mfu(i,k)+pmfu(i,k)*pdtphys
230 mfd(i,k)=mfd(i,k)+pmfd(i,k)*pdtphys
231 en_u(i,k)=en_u(i,k)+pen_u(i,k)*pdtphys
232 de_u(i,k)=de_u(i,k)+pde_u(i,k)*pdtphys
233 en_d(i,k)=en_d(i,k)+pen_d(i,k)*pdtphys
234 de_d(i,k)=de_d(i,k)+pde_d(i,k)*pdtphys
235 coefh(i,k)=coefh(i,k)+pcoefh_buf(i,k)*pdtphys
236 t(i,k)=t(i,k)+pt(i,k)*pdtphys
237 fm_therm(i,k)=fm_therm(i,k)+pfm_therm(i,k)*pdtphys
238 entr_therm(i,k)=entr_therm(i,k)+pentr_therm(i,k)*pdtphys
239 sh(i,k) = sh(i,k) + psh(i,k)*pdtphys
240 da(i,k) = da(i,k) + pda(i,k)*pdtphys
241 mp(i,k) = mp(i,k) + pmp(i,k)*pdtphys
242 upwd(i,k) = upwd(i,k) + pupwd(i,k)*pdtphys
243 dnwd(i,k) = dnwd(i,k) + pdnwd(i,k)*pdtphys
250 phi(i,k,kk) = phi(i,k,kk) + pphi(i,k,kk)*pdtphys
256 pyv1(i)=pyv1(i)+yv1(i)*pdtphys
257 pyu1(i)=pyu1(i)+yu1(i)*pdtphys
261 pftsol(i,k)=pftsol(i,k)+ftsol(i,k)*pdtphys
262 ppsrf(i,k)=ppsrf(i,k)+pctsrf(i,k)*pdtphys
272 IF(mod(iadvtr,
istphy)==0)
THEN
277 mfu(i,k)=mfu(i,k)/dtcum
278 mfd(i,k)=mfd(i,k)/dtcum
279 en_u(i,k)=en_u(i,k)/dtcum
280 de_u(i,k)=de_u(i,k)/dtcum
281 en_d(i,k)=en_d(i,k)/dtcum
282 de_d(i,k)=de_d(i,k)/dtcum
283 coefh(i,k)=coefh(i,k)/dtcum
285 fm_therm(i,k)=fm_therm(i,k)/dtcum
286 entr_therm(i,k)=entr_therm(i,k)/dtcum
287 sh(i,k)=sh(i,k)/dtcum
288 da(i,k)=da(i,k)/dtcum
289 mp(i,k)=mp(i,k)/dtcum
290 upwd(i,k)=upwd(i,k)/dtcum
291 dnwd(i,k)=dnwd(i,k)/dtcum
297 phi(i,k,kk) = phi(i,k,kk)/dtcum
302 pyv1(i)=pyv1(i)/dtcum
303 pyu1(i)=pyu1(i)/dtcum
307 pftsol(i,k)=pftsol(i,k)/dtcum
308 ppsrf(i,k)=ppsrf(i,k)/dtcum
323 CALL histwrite_phy(physid,lstokenc,
"frac_impa",itap,frac_impa)
324 CALL histwrite_phy(physid,lstokenc,
"frac_nucl",itap,frac_nucl)
327 CALL histwrite_phy(physid,lstokenc,
"ftsol1",itap,pftsol(:,1))
328 CALL histwrite_phy(physid,lstokenc,
"ftsol2",itap,pftsol(:,2))
329 CALL histwrite_phy(physid,lstokenc,
"ftsol3",itap,pftsol(:,3))
330 CALL histwrite_phy(physid,lstokenc,
"ftsol4",itap,pftsol(:,4))
351 nvar=
'phi_lev'//trim(nvar)
358 IF (ok_sync)
CALL histsync(physid)
367 zmax=max(zmax,frac_nucl(i,k))
368 zmin=min(zmin,frac_nucl(i,k))
371 WRITE(
lunout,*)
'------ coefs de lessivage (min et max) --------'
372 WRITE(
lunout,*)
'facteur de nucleation ',zmin,zmax
377 zmax=max(zmax,frac_impa(i,k))
378 zmin=min(zmin,frac_impa(i,k))
381 WRITE(
lunout,*)
'facteur d impaction ',zmin,zmax
!$Id klon initialisation mois suivants day_rain itap
!$Header!common tracstoke istphy
!$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 false
subroutine initphysto(infile, tstep, t_ops, t_wrt, fileid)
subroutine phystokenc(nlon, nlev, pdtphys, rlon, rlat, pt, pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, pfm_therm, pentr_therm, cdragh, pcoefh, yu1, yv1, ftsol, pctsrf, frac_impa, frac_nucl, pphis, paire, dtime, itap, psh, pda, pphi, pmp, pupwd, pdnwd)
!$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
INTERFACE SUBROUTINE RRTM_ECRT_140GP pt
subroutine init_phystokenc(offline_dyn, istphy_dyn)
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout