/[lmdze]/trunk/Sources/dyn3d/bilan_dyn.f
ViewVC logotype

Diff of /trunk/Sources/dyn3d/bilan_dyn.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3 by guez, Wed Feb 27 13:16:39 2008 UTC revision 39 by guez, Tue Jan 25 15:11:05 2011 UTC
# Line 9  c   Prevoir en champ nq+1 le diagnostiqu Line 9  c   Prevoir en champ nq+1 le diagnostiqu
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
# Line 19  c             vQ..A=Cp T + L * ... Line 20  c             vQ..A=Cp T + L * ...
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    
# Line 141  cym      character*10 zunites(ntr,nQ) Line 143  cym      character*10 zunites(ntr,nQ)
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
# Line 151  c   ------------------------------------ Line 151  c   ------------------------------------
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
# Line 178  c       initialisation des fichiers Line 177  c       initialisation des fichiers
177  c   ncum est la frequence de stokage en pas de temps  c   ncum est la frequence de stokage en pas de temps
178          ncum=dt_cum/dt_app          ncum=dt_cum/dt_app
179          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
180             WRITE(lunout,*)             print *,
181       .            'Pb : le pas de cumule doit etre multiple du pas'       .            'Pb : le pas de cumule doit etre multiple du pas'
182             WRITE(lunout,*)'dt_app=',dt_app             print *,'dt_app=',dt_app
183             WRITE(lunout,*)'dt_cum=',dt_cum             print *,'dt_cum=',dt_cum
184             stop             stop
185          endif          endif
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'
# Line 213  c   ncum est la frequence de stokage en Line 210  c   ncum est la frequence de stokage en
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
# Line 253  c      print*,'1HISTDEF' Line 247  c      print*,'1HISTDEF'
247        do iQ=1,nQ        do iQ=1,nQ
248           do itr=1,ntr           do itr=1,ntr
249        IF (prt_level > 5)        IF (prt_level > 5)
250       . WRITE(lunout,*)'var ',itr,iQ       . print *,'var ',itr,iQ
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    
# Line 272  c   Declarations pour les champs de tran Line 266  c   Declarations pour les champs de tran
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
# Line 289  c      print*,'5HISTDEF' Line 283  c      print*,'5HISTDEF'
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    
# Line 340  c Line 334  c
334        endif        endif
335    
336        IF (prt_level > 5)        IF (prt_level > 5)
337       . WRITE(lunout,*)'dans bilan_dyn ',icum,'->',icum+1       . print *,'dans bilan_dyn ',icum,'->',icum+1
338        icum=icum+1        icum=icum+1
339    
340  c   accumulation des flux de masse horizontaux  c   accumulation des flux de masse horizontaux
# Line 406  c   calcul de la vitesse verticale Line 400  c   calcul de la vitesse verticale
400           enddo           enddo
401        enddo        enddo
402        IF (prt_level > 5)        IF (prt_level > 5)
403       . WRITE(lunout,*)'Apres les calculs fait a chaque pas'       . print *,'Apres les calculs fait a chaque pas'
404  c=====================================================================  c=====================================================================
405  c   PAS DE TEMPS D'ECRITURE  c   PAS DE TEMPS D'ECRITURE
406  c=====================================================================  c=====================================================================
# Line 414  c======================================= Line 408  c=======================================
408  c=====================================================================  c=====================================================================
409    
410        IF (prt_level > 5)        IF (prt_level > 5)
411       . WRITE(lunout,*)'Pas d ecriture'       . print *,'Pas d ecriture'
412    
413  c   Normalisation  c   Normalisation
414        do iQ=1,nQ        do iQ=1,nQ
# Line 534  c   sorties proprement dites Line 528  c   sorties proprement dites
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    
# Line 566  c   ----------------- Line 556  c   -----------------
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    

Legend:
Removed from v.3  
changed lines
  Added in v.39

  ViewVC Help
Powered by ViewVC 1.1.21