90 #include "dimensions.h"
100 #include "iniprint.h"
107 REAL pvcov(iip1,jjm,llm)
108 REAL pucov(iip1,
jjp1,llm)
109 REAL pteta(iip1,
jjp1,llm)
110 REAL pmasse(iip1,
jjp1,llm)
111 REAL pq(iip1,
jjp1,llm,nqtot)
112 REAL pphis(iip1,
jjp1)
113 REAL pphi(iip1,
jjp1,llm)
115 REAL pdvcov(iip1,jjm,llm)
116 REAL pducov(iip1,
jjp1,llm)
117 REAL pdteta(iip1,
jjp1,llm)
118 REAL pdq(iip1,
jjp1,llm,nqtot)
122 REAL ppk(iip1,
jjp1,llm)
124 REAL pdvfi(iip1,jjm,llm)
125 REAL pdufi(iip1,
jjp1,llm)
126 REAL pdhfi(iip1,
jjp1,llm)
127 REAL pdqfi(iip1,
jjp1,llm,nqtot)
128 REAL pdpsfi(iip1,
jjp1)
132 REAL clesphy0( longcles )
138 INTEGER i,
j,
l,ig0,ig,iq,iiq
140 REAL zplev(ngridmx,llm+1),zplay(ngridmx,llm)
141 REAL zphi(ngridmx,llm),zphis(ngridmx)
143 REAL zufi(ngridmx,llm), zvfi(ngridmx,llm)
144 REAL ztfi(ngridmx,llm),zqfi(ngridmx,llm,nqtot)
146 REAL pcvgu(ngridmx,llm), pcvgv(ngridmx,llm)
147 REAL pcvgt(ngridmx,llm), pcvgq(ngridmx,llm,2)
149 REAL zdufi(ngridmx,llm),zdvfi(ngridmx,llm)
150 REAL zdtfi(ngridmx,llm),zdqfi(ngridmx,llm,nqtot)
153 REAL zdufic(ngridmx,llm),zdvfic(ngridmx,llm)
154 REAL zdtfic(ngridmx,llm),zdqfic(ngridmx,llm,nqtot)
155 REAL jh_cur_split,zdt_split
156 LOGICAL debut_split,lafin_split
160 REAL zsinbis(
iim),zcosbis(
iim),z1bis(
iim)
166 REAL rtetastd(ntetastd)
167 DATA rtetastd/350., 380., 405./
168 REAL pvteta(ngridmx,ntetastd)
170 REAL flxw(iip1,
jjp1,llm)
171 REAL flxwfi(ngridmx,llm)
176 LOGICAL firstcal, debut
177 DATA firstcal/.true./
180 REAL,
intent(in):: jd_cur, jh_cur
193 IF (ngridmx.NE.2+(jjm-1)*
iim)
THEN
194 write(
lunout,*)
'STOP dans calfis'
196 &
'La dimension ngridmx doit etre egale a 2 + (jjm-1)*iim'
197 write(
lunout,*)
' ngridmx jjm iim '
219 CALL
scopy(
iim,pps(1,
j),1,zpsrf(ig0), 1 )
223 zpsrf(ngridmx) = pps(1,
jjp1)
238 zplev( 1,
l ) = pp(1,1,
l)
242 zplev( ig0,
l ) = pp(
i,
j,
l)
246 zplev( ngridmx,
l ) = pp(1,
jjp1,
l)
256 pksurcp = ppk(1,1,
l) /
cpp
257 zplay(1,
l) =
preff * pksurcp ** unskap
258 ztfi(1,
l) = pteta(1,1,
l) * pksurcp
259 pcvgt(1,
l) = pdteta(1,1,
l) * pksurcp / pmasse(1,1,
l)
264 pksurcp = ppk(
i,
j,
l) /
cpp
265 zplay(ig0,
l) =
preff * pksurcp ** unskap
266 ztfi(ig0,
l) = pteta(
i,
j,
l) * pksurcp
267 pcvgt(ig0,
l) = pdteta(
i,
j,
l) * pksurcp / pmasse(
i,
j,
l)
273 zplay(ig0,
l) =
preff * pksurcp ** unskap
274 ztfi(ig0,
l) = pteta(1,
jjp1,
l) * pksurcp
275 pcvgt(ig0,
l) = pdteta(1,
jjp1,
l) * pksurcp/ pmasse(1,
jjp1,
l)
285 zqfi(1,
l,iq) = pq(1,1,
l,iiq)
289 zqfi(ig0,
l,iq) = pq(
i,
j,
l,iiq)
293 zqfi(ig0,
l,iq) = pq(1,
jjp1,
l,iiq)
299 if (planet_type==
"earth")
then
302 pcvgq(1,
l,iq)= pdq(1,1,
l,iq) / pmasse(1,1,
l)
306 pcvgq(ig0,
l,iq) = pdq(
i,
j,
l,iq) / pmasse(
i,
j,
l)
310 pcvgq(ig0,
l,iq)= pdq(1,
jjp1,
l,iq) / pmasse(1,
jjp1,
l)
323 zphi(ig,
l)=zphi(ig,
l)-zphis(ig)
352 pcvgu(ig0+1,
l)= 0.5 *
357 pcvgu(ig0+
i,
l)= 0.5 *
374 pcvgv(ig0+
i,
l)= 0.5 *
438 if (planet_type==
"earth")
then
442 CALL
pvtheta(ngridmx,llm,pucov,pvcov,pteta,
444 $ ntetastd,rtetastd,pvteta)
458 zdt_split=
dtphys/nsplit_phys
466 do isplit=1,nsplit_phys
468 jh_cur_split=jh_cur+(isplit-1) *
dtvr / (
daysec *nsplit_phys)
469 debut_split=debut.and.isplit==1
470 lafin_split=lafin.and.isplit==nsplit_phys
472 if (planet_type==
"earth")
then
501 else if ( planet_type==
"generic" )
then
529 zufi(:,:)=zufi(:,:)+zdufi(:,:)*zdt_split
530 zvfi(:,:)=zvfi(:,:)+zdvfi(:,:)*zdt_split
531 ztfi(:,:)=ztfi(:,:)+zdtfi(:,:)*zdt_split
532 zqfi(:,:,:)=zqfi(:,:,:)+zdqfi(:,:,:)*zdt_split
534 zdufic(:,:)=zdufic(:,:)+zdufi(:,:)
535 zdvfic(:,:)=zdvfic(:,:)+zdvfi(:,:)
536 zdtfic(:,:)=zdtfic(:,:)+zdtfi(:,:)
537 zdqfic(:,:,:)=zdqfic(:,:,:)+zdqfi(:,:,:)
544 zdufi(:,:)=zdufic(:,:)/nsplit_phys
545 zdvfi(:,:)=zdvfic(:,:)/nsplit_phys
546 zdtfi(:,:)=zdtfic(:,:)/nsplit_phys
547 zdqfi(:,:,:)=zdqfic(:,:,:)/nsplit_phys
567 pdhfi(
i,1,
l) =
cpp * zdtfi(1,
l) / ppk(
i, 1 ,
l)
576 pdhfi(iip1,
j,
l) = pdhfi(1,
j,
l)
610 pdqfi(
i,1,
l,iiq) = zdqfi(1,
l,iq)
611 pdqfi(
i,
jjp1,
l,iiq) = zdqfi(ngridmx,
l,iq)
616 pdqfi(
i,
j,
l,iiq) = zdqfi(ig0+
i,
l,iq)
618 pdqfi(iip1,
j,
l,iiq) = pdqfi(1,
j,
l,iq)
637 $ 0.5*(zdufi(ig0+
i,
l)+zdufi(ig0+
i+1,
l))*
cu(
i,
j)
641 pdufi(iip1,
j,
l)=pdufi(1,
j,
l)
658 pdvfi(iip1,
j,
l) = pdvfi(1,
j,
l)
672 pdvfi(
i,jjm,
l)=zdufi(ngridmx,
l)*cos(
rlonv(
i))
673 $ +zdvfi(ngridmx,
l)*sin(
rlonv(
i))
675 $ 0.5*(pdvfi(
i,1,
l)+zdvfi(
i+1,
l))*
cv(
i,1)
677 $ 0.5*(pdvfi(
i,jjm,
l)+zdvfi(ngridmx-iip1+
i,
l))*
cv(
i,jjm)
680 pdvfi(iip1,1,
l) = pdvfi(1,1,
l)
681 pdvfi(iip1,jjm,
l)= pdvfi(1,jjm,
l)