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 |
20 |
use temps |
use temps |
21 |
use iniprint |
use iniprint |
22 |
use inigrads_m, only: inigrads |
use inigrads_m, only: inigrads |
23 |
|
use nr_util, only: pi |
24 |
|
|
25 |
IMPLICIT NONE |
IMPLICIT NONE |
26 |
|
|
143 |
c Initialisation du fichier contenant les moyennes zonales. |
c Initialisation du fichier contenant les moyennes zonales. |
144 |
c --------------------------------------------------------- |
c --------------------------------------------------------- |
145 |
|
|
|
character*10 infile |
|
|
|
|
146 |
integer fileid |
integer fileid |
147 |
integer thoriid, zvertiid |
integer thoriid, zvertiid |
148 |
save fileid |
save fileid |
151 |
|
|
152 |
C Variables locales |
C Variables locales |
153 |
C |
C |
|
integer tau0 |
|
154 |
real zjulian |
real zjulian |
155 |
character*3 str |
character*3 str |
156 |
character*10 ctrac |
character*10 ctrac |
186 |
|
|
187 |
if (i_sortie.eq.1) then |
if (i_sortie.eq.1) then |
188 |
file='dynzon' |
file='dynzon' |
189 |
call inigrads(ifile |
call inigrads(ifile ,(/0./),180./pi,0.,0.,rlatv,-90.,90., |
190 |
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 ') |
|
191 |
endif |
endif |
192 |
|
|
193 |
nom(itemp)='T' |
nom(itemp)='T' |
210 |
c Initialisation du fichier contenant les moyennes zonales. |
c Initialisation du fichier contenant les moyennes zonales. |
211 |
c --------------------------------------------------------- |
c --------------------------------------------------------- |
212 |
|
|
|
infile='dynzon' |
|
|
|
|
213 |
zan = annee_ref |
zan = annee_ref |
214 |
dayref = day_ref |
dayref = day_ref |
215 |
CALL ymds2ju(zan, 1, dayref, 0.0, zjulian) |
CALL ymds2ju(zan, 1, dayref, 0.0, zjulian) |
|
tau0 = itau_dyn |
|
216 |
|
|
217 |
rlong=0. |
rlong=0. |
218 |
rlatg=rlatv*180./pi |
rlatg=rlatv*180./pi |
219 |
|
|
220 |
call histbeg_totreg(infile, 1, rlong(:1), jjm, rlatg, |
call histbeg_totreg('dynzon', rlong(:1), rlatg, |
221 |
. 1, 1, 1, jjm, |
. 1, 1, 1, jjm, |
222 |
. tau0, zjulian, dt_cum, thoriid, fileid) |
. itau_dyn, zjulian, dt_cum, thoriid, fileid) |
223 |
|
|
224 |
C |
C |
225 |
C Appel a histvert pour la grille verticale |
C Appel a histvert pour la grille verticale |
251 |
. ,znom(itr,iQ),znoml(itr,iQ),zunites(itr,iQ) |
. ,znom(itr,iQ),znoml(itr,iQ),zunites(itr,iQ) |
252 |
call histdef(fileid,znom(itr,iQ),znoml(itr,iQ), |
call histdef(fileid,znom(itr,iQ),znoml(itr,iQ), |
253 |
. zunites(itr,iQ),1,jjm,thoriid,llm,1,llm,zvertiid, |
. zunites(itr,iQ),1,jjm,thoriid,llm,1,llm,zvertiid, |
254 |
. 32,'ave(X)',dt_cum,dt_cum) |
. 'ave(X)',dt_cum,dt_cum) |
255 |
enddo |
enddo |
256 |
c Declarations pour les fonctions de courant |
c Declarations pour les fonctions de courant |
257 |
c print*,'2HISTDEF' |
c print*,'2HISTDEF' |
258 |
call histdef(fileid,'psi'//nom(iQ) |
call histdef(fileid,'psi'//nom(iQ) |
259 |
. ,'stream fn. '//znoml(itot,iQ), |
. ,'stream fn. '//znoml(itot,iQ), |
260 |
. zunites(itot,iQ),1,jjm,thoriid,llm,1,llm,zvertiid, |
. zunites(itot,iQ),1,jjm,thoriid,llm,1,llm,zvertiid, |
261 |
. 32,'ave(X)',dt_cum,dt_cum) |
. 'ave(X)',dt_cum,dt_cum) |
262 |
enddo |
enddo |
263 |
|
|
264 |
|
|
266 |
c print*,'3HISTDEF' |
c print*,'3HISTDEF' |
267 |
call histdef(fileid, 'masse', 'masse', |
call histdef(fileid, 'masse', 'masse', |
268 |
. 'kg', 1, jjm, thoriid, llm, 1, llm, zvertiid, |
. 'kg', 1, jjm, thoriid, llm, 1, llm, zvertiid, |
269 |
. 32, 'ave(X)', dt_cum, dt_cum) |
. 'ave(X)', dt_cum, dt_cum) |
270 |
call histdef(fileid, 'v', 'v', |
call histdef(fileid, 'v', 'v', |
271 |
. 'm/s', 1, jjm, thoriid, llm, 1, llm, zvertiid, |
. 'm/s', 1, jjm, thoriid, llm, 1, llm, zvertiid, |
272 |
. 32, 'ave(X)', dt_cum, dt_cum) |
. 'ave(X)', dt_cum, dt_cum) |
273 |
c Declarations pour les fonctions de courant |
c Declarations pour les fonctions de courant |
274 |
c print*,'4HISTDEF' |
c print*,'4HISTDEF' |
275 |
call histdef(fileid,'psi','stream fn. MMC ','mega t/s', |
call histdef(fileid,'psi','stream fn. MMC ','mega t/s', |
276 |
. 1,jjm,thoriid,llm,1,llm,zvertiid, |
. 1,jjm,thoriid,llm,1,llm,zvertiid, |
277 |
. 32,'ave(X)',dt_cum,dt_cum) |
. 'ave(X)',dt_cum,dt_cum) |
278 |
|
|
279 |
|
|
280 |
c Declaration des champs 1D de transport en latitude |
c Declaration des champs 1D de transport en latitude |
283 |
do itr=2,ntr |
do itr=2,ntr |
284 |
call histdef(fileid,'a'//znom(itr,iQ),znoml(itr,iQ), |
call histdef(fileid,'a'//znom(itr,iQ),znoml(itr,iQ), |
285 |
. zunites(itr,iQ),1,jjm,thoriid,1,1,1,-99, |
. zunites(itr,iQ),1,jjm,thoriid,1,1,1,-99, |
286 |
. 32,'ave(X)',dt_cum,dt_cum) |
. 'ave(X)',dt_cum,dt_cum) |
287 |
enddo |
enddo |
288 |
enddo |
enddo |
289 |
|
|
528 |
if (i_sortie.eq.1) then |
if (i_sortie.eq.1) then |
529 |
do iQ=1,nQ |
do iQ=1,nQ |
530 |
do itr=1,ntr |
do itr=1,ntr |
531 |
call histwrite(fileid,znom(itr,iQ),itau,zvQ(:,:,itr,iQ) |
call histwrite(fileid,znom(itr,iQ),itau,zvQ(:,:,itr,iQ)) |
|
s ,jjm*llm,ndex3d) |
|
532 |
enddo |
enddo |
533 |
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) |
|
534 |
enddo |
enddo |
535 |
|
|
536 |
call histwrite(fileid,'masse',itau,zmasse |
call histwrite(fileid,'masse',itau,zmasse) |
537 |
s ,jjm*llm,ndex3d) |
call histwrite(fileid,'v',itau,zv) |
|
call histwrite(fileid,'v',itau,zv |
|
|
s ,jjm*llm,ndex3d) |
|
538 |
psi=psi*1.e-9 |
psi=psi*1.e-9 |
539 |
call histwrite(fileid,'psi',itau,psi(:,1:llm),jjm*llm,ndex3d) |
call histwrite(fileid,'psi',itau,psi(:,1:llm)) |
540 |
|
|
541 |
endif |
endif |
542 |
|
|
556 |
zavQ(:,itr,iQ)=zavQ(:,itr,iQ)+zvQ(:,l,itr,iQ)*zmasse(:,l) |
zavQ(:,itr,iQ)=zavQ(:,itr,iQ)+zvQ(:,l,itr,iQ)*zmasse(:,l) |
557 |
enddo |
enddo |
558 |
zavQ(:,itr,iQ)=zavQ(:,itr,iQ)/zamasse(:) |
zavQ(:,itr,iQ)=zavQ(:,itr,iQ)/zamasse(:) |
559 |
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) |
|
560 |
enddo |
enddo |
561 |
enddo |
enddo |
562 |
|
|