1 SUBROUTINE phystokenc (nlon,nlev,pdtphys,rlon,rlat, &
2 pt,pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, &
3 pfm_therm,pentr_therm, &
4 cdragh, pcoefh,yu1,yv1,ftsol,pctsrf, &
6 pphis,paire,
dtime,itap, &
7 psh, pda, pphi, pmp, pupwd, pdnwd)
22 include
"dimensions.h"
30 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: psh
31 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pda
32 REAL,
DIMENSION(klon,klev,klev),
INTENT(IN):: pphi
33 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pmp
34 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pupwd
35 REAL,
DIMENSION(klon,klev),
INTENT(IN) :: pdnwd
47 INTEGER,
SAVE :: physid
60 REAL,
ALLOCATABLE,
SAVE :: t(:,:)
70 REAL pcoefh(klon,
klev)
71 REAL pcoefh_buf(klon,
klev)
73 REAL yu1(klon),pphis(klon),paire(klon)
77 REAL,
INTENT(IN) :: pfm_therm(klon,
klev+1)
78 REAL pentr_therm(klon,
klev)
80 REAL,
ALLOCATABLE,
SAVE :: entr_therm(:,:)
81 REAL,
ALLOCATABLE,
SAVE :: fm_therm(:,:)
88 REAL frac_impa(klon,
klev)
89 REAL frac_nucl(klon,
klev)
93 REAL ftsol(klon,nbsrf)
94 REAL pctsrf(klon,nbsrf)
98 REAL,
ALLOCATABLE,
SAVE :: mfu(:,:)
99 REAL,
ALLOCATABLE,
SAVE :: mfd(:,:)
100 REAL,
ALLOCATABLE,
SAVE :: en_u(:,:)
101 REAL,
ALLOCATABLE,
SAVE :: de_u(:,:)
102 REAL,
ALLOCATABLE,
SAVE :: en_d(:,:)
103 REAL,
ALLOCATABLE,
SAVE :: de_d(:,:)
104 REAL,
ALLOCATABLE,
SAVE :: coefh(:,:)
106 REAL,
ALLOCATABLE,
SAVE :: pyu1(:)
107 REAL,
ALLOCATABLE,
SAVE :: pyv1(:)
108 REAL,
ALLOCATABLE,
SAVE :: pftsol(:,:)
109 REAL,
ALLOCATABLE,
SAVE :: ppsrf(:,:)
114 REAL,
DIMENSION(:,:),
ALLOCATABLE,
SAVE :: sh
115 REAL,
DIMENSION(:,:),
ALLOCATABLE,
SAVE :: da
116 REAL,
DIMENSION(:,:,:),
ALLOCATABLE,
SAVE :: phi
117 REAL,
DIMENSION(:,:),
ALLOCATABLE,
SAVE :: mp
118 REAL,
DIMENSION(:,:),
ALLOCATABLE,
SAVE :: upwd
119 REAL,
DIMENSION(:,:),
ALLOCATABLE,
SAVE :: dnwd
122 INTEGER,
SAVE:: iadvtr=0
126 CHARACTER(len=12) ::
nvar
127 logical,
parameter :: lstokenc=.false.
134 pcoefh_buf(:,1) = cdragh(:)
135 pcoefh_buf(:,2:
klev) = pcoefh(:,2:
klev)
142 ALLOCATE( t(klon,
klev))
143 ALLOCATE( mfu(klon,
klev))
144 ALLOCATE( mfd(klon,
klev))
145 ALLOCATE( en_u(klon,
klev))
146 ALLOCATE( de_u(klon,
klev))
147 ALLOCATE( en_d(klon,
klev))
148 ALLOCATE( de_d(klon,
klev))
149 ALLOCATE( coefh(klon,
klev))
150 ALLOCATE( entr_therm(klon,
klev))
151 ALLOCATE( fm_therm(klon,
klev))
152 ALLOCATE( pyu1(klon))
153 ALLOCATE( pyv1(klon))
154 ALLOCATE( pftsol(klon,nbsrf))
155 ALLOCATE( ppsrf(klon,nbsrf))
157 ALLOCATE(sh(klon,
klev))
158 ALLOCATE(da(klon,
klev))
160 ALLOCATE(mp(klon,
klev))
161 ALLOCATE(upwd(klon,
klev))
162 ALLOCATE(dnwd(klon,
klev))
178 WRITE(
lunout,*)
'reinitialisation des champs cumules a iadvtr=',iadvtr
250 IF(mod(iadvtr,
istphy)==0)
THEN
255 mfu(
i,
k)=mfu(
i,
k)/dtcum
256 mfd(
i,
k)=mfd(
i,
k)/dtcum
257 en_u(
i,
k)=en_u(
i,
k)/dtcum
258 de_u(
i,
k)=de_u(
i,
k)/dtcum
259 en_d(
i,
k)=en_d(
i,
k)/dtcum
260 de_d(
i,
k)=de_d(
i,
k)/dtcum
261 coefh(
i,
k)=coefh(
i,
k)/dtcum
263 fm_therm(
i,
k)=fm_therm(
i,
k)/dtcum
264 entr_therm(
i,
k)=entr_therm(
i,
k)/dtcum
265 sh(
i,
k)=sh(
i,
k)/dtcum
266 da(
i,
k)=da(
i,
k)/dtcum
267 mp(
i,
k)=mp(
i,
k)/dtcum
268 upwd(
i,
k)=upwd(
i,
k)/dtcum
269 dnwd(
i,
k)=dnwd(
i,
k)/dtcum
275 phi(
i,
k,kk) = phi(
i,
k,kk)/dtcum
280 pyv1(
i)=pyv1(
i)/dtcum
281 pyu1(
i)=pyu1(
i)/dtcum
285 pftsol(
i,
k)=pftsol(
i,
k)/dtcum
286 ppsrf(
i,
k)=ppsrf(
i,
k)/dtcum
301 CALL
histwrite_phy(physid,lstokenc,
"frac_impa",itap,frac_impa)
302 CALL
histwrite_phy(physid,lstokenc,
"frac_nucl",itap,frac_nucl)
305 CALL
histwrite_phy(physid,lstokenc,
"ftsol1",itap,pftsol(:,1))
306 CALL
histwrite_phy(physid,lstokenc,
"ftsol2",itap,pftsol(:,2))
307 CALL
histwrite_phy(physid,lstokenc,
"ftsol3",itap,pftsol(:,3))
308 CALL
histwrite_phy(physid,lstokenc,
"ftsol4",itap,pftsol(:,4))
336 IF (ok_sync) CALL histsync(physid)
346 zmin=min(zmin,frac_nucl(
i,
k))
349 WRITE(
lunout,*)
'------ coefs de lessivage (min et max) --------'
350 WRITE(
lunout,*)
'facteur de nucleation ',zmin,
zmax
356 zmin=min(zmin,frac_impa(
i,
k))
359 WRITE(
lunout,*)
'facteur d impaction ',zmin,
zmax