/[lmdze]/trunk/libf/dyn3d/bilan_dyn.f90
ViewVC logotype

Diff of /trunk/libf/dyn3d/bilan_dyn.f90

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

revision 3 by guez, Wed Feb 27 13:16:39 2008 UTC revision 30 by guez, Thu Apr 1 09:07:28 2010 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 141  cym      character*10 zunites(ntr,nQ) Line 142  cym      character*10 zunites(ntr,nQ)
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
# Line 151  c   ------------------------------------ Line 150  c   ------------------------------------
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
# Line 178  c       initialisation des fichiers Line 176  c       initialisation des fichiers
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'
# Line 213  c   ncum est la frequence de stokage en Line 209  c   ncum est la frequence de stokage en
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
# Line 253  c      print*,'1HISTDEF' Line 246  c      print*,'1HISTDEF'
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    
# Line 272  c   Declarations pour les champs de tran Line 265  c   Declarations pour les champs de tran
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
# Line 289  c      print*,'5HISTDEF' Line 282  c      print*,'5HISTDEF'
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    
# Line 340  c Line 333  c
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
# Line 406  c   calcul de la vitesse verticale Line 399  c   calcul de la vitesse verticale
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=====================================================================
# Line 414  c======================================= Line 407  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
# Line 534  c   sorties proprement dites Line 527  c   sorties proprement dites
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    
# Line 566  c   ----------------- Line 555  c   -----------------
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    

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

  ViewVC Help
Powered by ViewVC 1.1.21