9 |
c en faisant Qzon=Cv T + L * ... |
c en faisant Qzon=Cv T + L * ... |
10 |
c vQ..A=Cp T + L * ... |
c vQ..A=Cp T + L * ... |
11 |
|
|
12 |
USE IOIPSL |
USE histcom |
13 |
|
use calendar |
14 |
|
use histwrite_m |
15 |
use dimens_m |
use dimens_m |
16 |
use paramet_m |
use paramet_m |
17 |
use comconst |
use comconst |
142 |
c Initialisation du fichier contenant les moyennes zonales. |
c Initialisation du fichier contenant les moyennes zonales. |
143 |
c --------------------------------------------------------- |
c --------------------------------------------------------- |
144 |
|
|
|
character*10 infile |
|
|
|
|
145 |
integer fileid |
integer fileid |
146 |
integer thoriid, zvertiid |
integer thoriid, zvertiid |
147 |
save fileid |
save fileid |
150 |
|
|
151 |
C Variables locales |
C Variables locales |
152 |
C |
C |
|
integer tau0 |
|
153 |
real zjulian |
real zjulian |
154 |
character*3 str |
character*3 str |
155 |
character*10 ctrac |
character*10 ctrac |
176 |
c ncum est la frequence de stokage en pas de temps |
c ncum est la frequence de stokage en pas de temps |
177 |
ncum=dt_cum/dt_app |
ncum=dt_cum/dt_app |
178 |
if (abs(ncum*dt_app-dt_cum).gt.1.e-5*dt_app) then |
if (abs(ncum*dt_app-dt_cum).gt.1.e-5*dt_app) then |
179 |
WRITE(lunout,*) |
print *, |
180 |
. 'Pb : le pas de cumule doit etre multiple du pas' |
. 'Pb : le pas de cumule doit etre multiple du pas' |
181 |
WRITE(lunout,*)'dt_app=',dt_app |
print *,'dt_app=',dt_app |
182 |
WRITE(lunout,*)'dt_cum=',dt_cum |
print *,'dt_cum=',dt_cum |
183 |
stop |
stop |
184 |
endif |
endif |
185 |
|
|
186 |
if (i_sortie.eq.1) then |
if (i_sortie.eq.1) then |
187 |
file='dynzon' |
file='dynzon' |
188 |
call inigrads(ifile |
call inigrads(ifile ,(/0./),180./pi,0.,0.,rlatv,-90.,90., |
189 |
s ,(/0./),180./pi,0.,0.,rlatv,-90.,90.,180./pi |
$ 180./pi ,presnivs,1. ,dt_cum,file,'dyn_zon ') |
|
s ,presnivs,1. |
|
|
s ,dt_cum,file,'dyn_zon ') |
|
190 |
endif |
endif |
191 |
|
|
192 |
nom(itemp)='T' |
nom(itemp)='T' |
209 |
c Initialisation du fichier contenant les moyennes zonales. |
c Initialisation du fichier contenant les moyennes zonales. |
210 |
c --------------------------------------------------------- |
c --------------------------------------------------------- |
211 |
|
|
|
infile='dynzon' |
|
|
|
|
212 |
zan = annee_ref |
zan = annee_ref |
213 |
dayref = day_ref |
dayref = day_ref |
214 |
CALL ymds2ju(zan, 1, dayref, 0.0, zjulian) |
CALL ymds2ju(zan, 1, dayref, 0.0, zjulian) |
|
tau0 = itau_dyn |
|
215 |
|
|
216 |
rlong=0. |
rlong=0. |
217 |
rlatg=rlatv*180./pi |
rlatg=rlatv*180./pi |
218 |
|
|
219 |
call histbeg_totreg(infile, 1, rlong(:1), jjm, rlatg, |
call histbeg_totreg('dynzon', rlong(:1), rlatg, |
220 |
. 1, 1, 1, jjm, |
. 1, 1, 1, jjm, |
221 |
. tau0, zjulian, dt_cum, thoriid, fileid) |
. itau_dyn, zjulian, dt_cum, thoriid, fileid) |
222 |
|
|
223 |
C |
C |
224 |
C Appel a histvert pour la grille verticale |
C Appel a histvert pour la grille verticale |
246 |
do iQ=1,nQ |
do iQ=1,nQ |
247 |
do itr=1,ntr |
do itr=1,ntr |
248 |
IF (prt_level > 5) |
IF (prt_level > 5) |
249 |
. WRITE(lunout,*)'var ',itr,iQ |
. print *,'var ',itr,iQ |
250 |
. ,znom(itr,iQ),znoml(itr,iQ),zunites(itr,iQ) |
. ,znom(itr,iQ),znoml(itr,iQ),zunites(itr,iQ) |
251 |
call histdef(fileid,znom(itr,iQ),znoml(itr,iQ), |
call histdef(fileid,znom(itr,iQ),znoml(itr,iQ), |
252 |
. zunites(itr,iQ),1,jjm,thoriid,llm,1,llm,zvertiid, |
. zunites(itr,iQ),1,jjm,thoriid,llm,1,llm,zvertiid, |
253 |
. 32,'ave(X)',dt_cum,dt_cum) |
. 'ave(X)',dt_cum,dt_cum) |
254 |
enddo |
enddo |
255 |
c Declarations pour les fonctions de courant |
c Declarations pour les fonctions de courant |
256 |
c print*,'2HISTDEF' |
c print*,'2HISTDEF' |
257 |
call histdef(fileid,'psi'//nom(iQ) |
call histdef(fileid,'psi'//nom(iQ) |
258 |
. ,'stream fn. '//znoml(itot,iQ), |
. ,'stream fn. '//znoml(itot,iQ), |
259 |
. zunites(itot,iQ),1,jjm,thoriid,llm,1,llm,zvertiid, |
. zunites(itot,iQ),1,jjm,thoriid,llm,1,llm,zvertiid, |
260 |
. 32,'ave(X)',dt_cum,dt_cum) |
. 'ave(X)',dt_cum,dt_cum) |
261 |
enddo |
enddo |
262 |
|
|
263 |
|
|
265 |
c print*,'3HISTDEF' |
c print*,'3HISTDEF' |
266 |
call histdef(fileid, 'masse', 'masse', |
call histdef(fileid, 'masse', 'masse', |
267 |
. 'kg', 1, jjm, thoriid, llm, 1, llm, zvertiid, |
. 'kg', 1, jjm, thoriid, llm, 1, llm, zvertiid, |
268 |
. 32, 'ave(X)', dt_cum, dt_cum) |
. 'ave(X)', dt_cum, dt_cum) |
269 |
call histdef(fileid, 'v', 'v', |
call histdef(fileid, 'v', 'v', |
270 |
. 'm/s', 1, jjm, thoriid, llm, 1, llm, zvertiid, |
. 'm/s', 1, jjm, thoriid, llm, 1, llm, zvertiid, |
271 |
. 32, 'ave(X)', dt_cum, dt_cum) |
. 'ave(X)', dt_cum, dt_cum) |
272 |
c Declarations pour les fonctions de courant |
c Declarations pour les fonctions de courant |
273 |
c print*,'4HISTDEF' |
c print*,'4HISTDEF' |
274 |
call histdef(fileid,'psi','stream fn. MMC ','mega t/s', |
call histdef(fileid,'psi','stream fn. MMC ','mega t/s', |
275 |
. 1,jjm,thoriid,llm,1,llm,zvertiid, |
. 1,jjm,thoriid,llm,1,llm,zvertiid, |
276 |
. 32,'ave(X)',dt_cum,dt_cum) |
. 'ave(X)',dt_cum,dt_cum) |
277 |
|
|
278 |
|
|
279 |
c Declaration des champs 1D de transport en latitude |
c Declaration des champs 1D de transport en latitude |
282 |
do itr=2,ntr |
do itr=2,ntr |
283 |
call histdef(fileid,'a'//znom(itr,iQ),znoml(itr,iQ), |
call histdef(fileid,'a'//znom(itr,iQ),znoml(itr,iQ), |
284 |
. zunites(itr,iQ),1,jjm,thoriid,1,1,1,-99, |
. zunites(itr,iQ),1,jjm,thoriid,1,1,1,-99, |
285 |
. 32,'ave(X)',dt_cum,dt_cum) |
. 'ave(X)',dt_cum,dt_cum) |
286 |
enddo |
enddo |
287 |
enddo |
enddo |
288 |
|
|
333 |
endif |
endif |
334 |
|
|
335 |
IF (prt_level > 5) |
IF (prt_level > 5) |
336 |
. WRITE(lunout,*)'dans bilan_dyn ',icum,'->',icum+1 |
. print *,'dans bilan_dyn ',icum,'->',icum+1 |
337 |
icum=icum+1 |
icum=icum+1 |
338 |
|
|
339 |
c accumulation des flux de masse horizontaux |
c accumulation des flux de masse horizontaux |
399 |
enddo |
enddo |
400 |
enddo |
enddo |
401 |
IF (prt_level > 5) |
IF (prt_level > 5) |
402 |
. WRITE(lunout,*)'Apres les calculs fait a chaque pas' |
. print *,'Apres les calculs fait a chaque pas' |
403 |
c===================================================================== |
c===================================================================== |
404 |
c PAS DE TEMPS D'ECRITURE |
c PAS DE TEMPS D'ECRITURE |
405 |
c===================================================================== |
c===================================================================== |
407 |
c===================================================================== |
c===================================================================== |
408 |
|
|
409 |
IF (prt_level > 5) |
IF (prt_level > 5) |
410 |
. WRITE(lunout,*)'Pas d ecriture' |
. print *,'Pas d ecriture' |
411 |
|
|
412 |
c Normalisation |
c Normalisation |
413 |
do iQ=1,nQ |
do iQ=1,nQ |
527 |
if (i_sortie.eq.1) then |
if (i_sortie.eq.1) then |
528 |
do iQ=1,nQ |
do iQ=1,nQ |
529 |
do itr=1,ntr |
do itr=1,ntr |
530 |
call histwrite(fileid,znom(itr,iQ),itau,zvQ(:,:,itr,iQ) |
call histwrite(fileid,znom(itr,iQ),itau,zvQ(:,:,itr,iQ)) |
|
s ,jjm*llm,ndex3d) |
|
531 |
enddo |
enddo |
532 |
call histwrite(fileid,'psi'//nom(iQ),itau,psiQ(:,1:llm,iQ) |
call histwrite(fileid,'psi'//nom(iQ),itau,psiQ(:,1:llm,iQ)) |
|
s ,jjm*llm,ndex3d) |
|
533 |
enddo |
enddo |
534 |
|
|
535 |
call histwrite(fileid,'masse',itau,zmasse |
call histwrite(fileid,'masse',itau,zmasse) |
536 |
s ,jjm*llm,ndex3d) |
call histwrite(fileid,'v',itau,zv) |
|
call histwrite(fileid,'v',itau,zv |
|
|
s ,jjm*llm,ndex3d) |
|
537 |
psi=psi*1.e-9 |
psi=psi*1.e-9 |
538 |
call histwrite(fileid,'psi',itau,psi(:,1:llm),jjm*llm,ndex3d) |
call histwrite(fileid,'psi',itau,psi(:,1:llm)) |
539 |
|
|
540 |
endif |
endif |
541 |
|
|
555 |
zavQ(:,itr,iQ)=zavQ(:,itr,iQ)+zvQ(:,l,itr,iQ)*zmasse(:,l) |
zavQ(:,itr,iQ)=zavQ(:,itr,iQ)+zvQ(:,l,itr,iQ)*zmasse(:,l) |
556 |
enddo |
enddo |
557 |
zavQ(:,itr,iQ)=zavQ(:,itr,iQ)/zamasse(:) |
zavQ(:,itr,iQ)=zavQ(:,itr,iQ)/zamasse(:) |
558 |
call histwrite(fileid,'a'//znom(itr,iQ),itau,zavQ(:,itr,iQ) |
call histwrite(fileid,'a'//znom(itr,iQ),itau,zavQ(:,itr,iQ)) |
|
s ,jjm*llm,ndex3d) |
|
559 |
enddo |
enddo |
560 |
enddo |
enddo |
561 |
|
|