source: LMDZ6/branches/Amaury_dev/libf/phylmd/calcul_STDlev.h @ 5185

Last change on this file since 5185 was 5117, checked in by abarral, 5 months ago

rename modules properly lmdz_*
move some unused files to obsolete/
(lint) uppercase fortran keywords

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.6 KB
RevLine 
[5099]1
[1862]2! $Header$
[5099]3
[1862]4!IM on initialise les variables
[5099]5
[2271]6!       missing_val=nf90_fill_real
[5099]7
[5117]8       IF (.NOT. ok_all_xml) THEN
[1912]9        CALL ini_undefSTD(itap,itapm1)
[2312]10       ENDIF
[5099]11
[1862]12!IM on interpole les champs sur les niveaux STD de pression
13!IM a chaque pas de temps de la physique
[5099]14
[1862]15!-------------------------------------------------------c
[5103]16! positionnement de l'argument logique a .FALSE.        c
[1862]17! pour ne pas recalculer deux fois la meme chose !      c
18! a cet effet un appel a plevel_new a ete deplace       c
19! a la fin de la serie d'appels                         c
20! la boucle 'DO k=1, nlevSTD' a ete internalisee        c
21! dans plevel_new, d'ou la creation de cette routine... c
22!-------------------------------------------------------c
[5099]23
[5103]24        CALL plevel_new(klon,klev,nlevSTD,.TRUE.,pplay,rlevSTD, &
[1862]25                    t_seri,tlevSTD)
[5103]26        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]27                   u_seri,ulevSTD)
[5103]28        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]29                   v_seri,vlevSTD)
[1146]30
[5103]31        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]32                   zphi/RG,philevSTD)
[5103]33        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]34                   qx(:,:,ivap),qlevSTD)
[5103]35        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]36                   zx_rh*100.,rhlevSTD)
[5099]37
[644]38        DO l=1, klev
39         DO i=1, klon
40          zx_tmp_fi3d(i,l)=u_seri(i,l)*v_seri(i,l)
41         ENDDO !i
42        ENDDO !l
[5103]43        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]44                   zx_tmp_fi3d,uvSTD)
[5099]45
[644]46        DO l=1, klev
47         DO i=1, klon
48          zx_tmp_fi3d(i,l)=v_seri(i,l)*q_seri(i,l)
49         ENDDO !i
50        ENDDO !l
[5103]51        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]52                   zx_tmp_fi3d,vqSTD)
[5099]53
[644]54        DO l=1, klev
55         DO i=1, klon
56          zx_tmp_fi3d(i,l)=v_seri(i,l)*t_seri(i,l)
57         ENDDO !i
58        ENDDO !l
[5103]59        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]60                   zx_tmp_fi3d,vTSTD)
[5099]61
[644]62        DO l=1, klev
63         DO i=1, klon
64          zx_tmp_fi3d(i,l)=omega(i,l)*qx(i,l,ivap)
65         ENDDO !i
66        ENDDO !l
[5103]67        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]68                   zx_tmp_fi3d,wqSTD)
[5099]69
[644]70        DO l=1, klev
71         DO i=1, klon
72          zx_tmp_fi3d(i,l)=v_seri(i,l)*zphi(i,l)/RG
73         ENDDO !i
74        ENDDO !l
[5103]75        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]76                   zx_tmp_fi3d,vphiSTD)
[5099]77
[644]78        DO l=1, klev
79         DO i=1, klon
80          zx_tmp_fi3d(i,l)=omega(i,l)*t_seri(i,l)
81         ENDDO !i
82        ENDDO !l
[5103]83        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]84                   zx_tmp_fi3d,wTSTD)
[5099]85
[644]86        DO l=1, klev
87         DO i=1, klon
88          zx_tmp_fi3d(i,l)=u_seri(i,l)*u_seri(i,l)
89         ENDDO !i
90        ENDDO !l
[5103]91        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]92                   zx_tmp_fi3d,u2STD)
[5099]93
[644]94        DO l=1, klev
95         DO i=1, klon
96          zx_tmp_fi3d(i,l)=v_seri(i,l)*v_seri(i,l)
97         ENDDO !i
98        ENDDO !l
[5103]99        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]100                   zx_tmp_fi3d,v2STD)
[5099]101
[644]102        DO l=1, klev
103         DO i=1, klon
104          zx_tmp_fi3d(i,l)=t_seri(i,l)*t_seri(i,l)
105         ENDDO !i
106        ENDDO !l
[5103]107        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]108                   zx_tmp_fi3d,T2STD)
[1146]109
[1398]110      zx_tmp_fi3d(:,:)=wo(:,:,1) * dobson_u * 1e3 / zmasse / rmo3 * rmd
[5103]111        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]112                   zx_tmp_fi3d,O3STD)
[5099]113
[5117]114      IF (read_climoz == 2) THEN
[1398]115      zx_tmp_fi3d(:,:)=wo(:,:,2) * dobson_u * 1e3 / zmasse / rmo3 * rmd
[5103]116        CALL plevel_new(klon,klev,nlevSTD,.FALSE.,pplay,rlevSTD, &
[1862]117                   zx_tmp_fi3d,O3daySTD)
[1398]118      endif
[5099]119
[1146]120        DO l=1, klev
121        DO i=1, klon
122         zx_tmp_fi3d(i,l)=paprs(i,l)
123        ENDDO !i
124        ENDDO !l
[5103]125        CALL plevel_new(klon,klev,nlevSTD,.TRUE.,zx_tmp_fi3d,rlevSTD, &
[1862]126                   omega,wlevSTD)
[5099]127
[1862]128!IM on somme les valeurs toutes les freq_calNMC secondes
[1912]129!IM on moyenne a la fin du mois, du jour ou toutes les 6h
[5099]130
[5117]131       IF (.NOT. ok_all_xml) THEN
[2312]132        CALL undefSTD(itap, read_climoz)
133        CALL moy_undefSTD(itap,itapm1)
134       ENDIF
[5099]135
[5103]136       CALL plevel(klon,klev,.TRUE.,pplay,50000., &
[1862]137                    zphi/RG,geo500)
[1352]138
[1862]139!IM on interpole a chaque pas de temps le SWup(clr) et SWdn(clr) a 200 hPa
[5099]140
[5103]141      CALL plevel(klon,klevp1,.TRUE.,paprs,20000., &
[1862]142           swdn0,SWdn200clr)
[5103]143      CALL plevel(klon,klevp1,.FALSE.,paprs,20000., &
[1862]144           swdn,SWdn200)
[5103]145      CALL plevel(klon,klevp1,.FALSE.,paprs,20000., &
[1862]146           swup0,SWup200clr)
[5103]147      CALL plevel(klon,klevp1,.FALSE.,paprs,20000., &
[1862]148           swup,SWup200)
[5099]149
[5103]150      CALL plevel(klon,klevp1,.FALSE.,paprs,20000., &
[1862]151           lwdn0,LWdn200clr)
[5103]152      CALL plevel(klon,klevp1,.FALSE.,paprs,20000., &
[1862]153           lwdn,LWdn200)
[5103]154      CALL plevel(klon,klevp1,.FALSE.,paprs,20000., &
[1862]155           lwup0,LWup200clr)
[5103]156      CALL plevel(klon,klevp1,.FALSE.,paprs,20000., &
[1862]157           lwup,LWup200)
[5099]158
[1694]159      twriteSTD(:,:,1)=tsumSTD(:,:,1)
160      qwriteSTD(:,:,1)=qsumSTD(:,:,1)
161      rhwriteSTD(:,:,1)=rhsumSTD(:,:,1)
162      phiwriteSTD(:,:,1)=phisumSTD(:,:,1)
163      uwriteSTD(:,:,1)=usumSTD(:,:,1)
164      vwriteSTD(:,:,1)=vsumSTD(:,:,1)
165      wwriteSTD(:,:,1)=wsumSTD(:,:,1)
166
167      twriteSTD(:,:,2)=tsumSTD(:,:,2)
168      qwriteSTD(:,:,2)=qsumSTD(:,:,2)
169      rhwriteSTD(:,:,2)=rhsumSTD(:,:,2)
170      phiwriteSTD(:,:,2)=phisumSTD(:,:,2)
171      uwriteSTD(:,:,2)=usumSTD(:,:,2)
172      vwriteSTD(:,:,2)=vsumSTD(:,:,2)
173      wwriteSTD(:,:,2)=wsumSTD(:,:,2)
174
175      twriteSTD(:,:,3)=tlevSTD(:,:)
176      qwriteSTD(:,:,3)=qlevSTD(:,:)
177      rhwriteSTD(:,:,3)=rhlevSTD(:,:)
178      phiwriteSTD(:,:,3)=philevSTD(:,:)
179      uwriteSTD(:,:,3)=ulevSTD(:,:)
180      vwriteSTD(:,:,3)=vlevSTD(:,:)
181      wwriteSTD(:,:,3)=wlevSTD(:,:)
182
183      twriteSTD(:,:,4)=tlevSTD(:,:)
184      qwriteSTD(:,:,4)=qlevSTD(:,:)
185      rhwriteSTD(:,:,4)=rhlevSTD(:,:)
186      phiwriteSTD(:,:,4)=philevSTD(:,:)
187      uwriteSTD(:,:,4)=ulevSTD(:,:)
188      vwriteSTD(:,:,4)=vlevSTD(:,:)
189      wwriteSTD(:,:,4)=wlevSTD(:,:)
[5099]190
[1862]191!IM initialisation 5eme fichier de sortie
[1694]192      twriteSTD(:,:,5)=tlevSTD(:,:)
193      qwriteSTD(:,:,5)=qlevSTD(:,:)
194      rhwriteSTD(:,:,5)=rhlevSTD(:,:)
195      phiwriteSTD(:,:,5)=philevSTD(:,:)
196      uwriteSTD(:,:,5)=ulevSTD(:,:)
197      vwriteSTD(:,:,5)=vlevSTD(:,:)
198      wwriteSTD(:,:,5)=wlevSTD(:,:)
[5099]199
[1862]200!IM initialisation 6eme fichier de sortie
[1694]201      twriteSTD(:,:,6)=tlevSTD(:,:)
202      qwriteSTD(:,:,6)=qlevSTD(:,:)
203      rhwriteSTD(:,:,6)=rhlevSTD(:,:)
204      phiwriteSTD(:,:,6)=philevSTD(:,:)
205      uwriteSTD(:,:,6)=ulevSTD(:,:)
206      vwriteSTD(:,:,6)=vlevSTD(:,:)
207      wwriteSTD(:,:,6)=wlevSTD(:,:)
[1862]208!IM for NMC files
[1694]209      DO n=1, nlevSTD3
210       DO k=1, nlevSTD
[5116]211        IF(rlevSTD3(n).EQ.rlevSTD(k)) THEN
[1694]212         twriteSTD3(:,n)=tlevSTD(:,k)
213         qwriteSTD3(:,n)=qlevSTD(:,k)
214         rhwriteSTD3(:,n)=rhlevSTD(:,k)
215         phiwriteSTD3(:,n)=philevSTD(:,k)
216         uwriteSTD3(:,n)=ulevSTD(:,k)
217         vwriteSTD3(:,n)=vlevSTD(:,k)
218         wwriteSTD3(:,n)=wlevSTD(:,k)
219        endif !rlevSTD3(n).EQ.rlevSTD(k)
220       ENDDO
221      ENDDO
[5099]222
[1694]223      DO n=1, nlevSTD8
224       DO k=1, nlevSTD
[5116]225        IF(rlevSTD8(n).EQ.rlevSTD(k)) THEN
[1694]226         tnondefSTD8(:,n)=tnondef(:,k,2)
227         twriteSTD8(:,n)=tsumSTD(:,k,2)
228         qwriteSTD8(:,n)=qsumSTD(:,k,2)
229         rhwriteSTD8(:,n)=rhsumSTD(:,k,2)
230         phiwriteSTD8(:,n)=phisumSTD(:,k,2)
231         uwriteSTD8(:,n)=usumSTD(:,k,2)
232         vwriteSTD8(:,n)=vsumSTD(:,k,2)
233         wwriteSTD8(:,n)=wsumSTD(:,k,2)
234        endif !rlevSTD8(n).EQ.rlevSTD(k)
235       ENDDO
236      ENDDO
Note: See TracBrowser for help on using the repository browser.