source: LMDZ4/trunk/libf/phylmd/calcul_STDlev.h @ 3269

Last change on this file since 3269 was 1418, checked in by jghattas, 14 years ago

Following bug corrections are already done at branch LMDZ4_AR5 rev
1417,1416 :

Bug corrections for nudged run (pres2lev.F90, guide_p_mod.F90) :

  • now the results are the same for sequentiel and parallel mode(if adjust=n and compiled with vsafe at mercure).
  • the results are the same as the sequential mode in previous revision.
  • test done only with guide_u=y,guide_v=y
  • copied optimized version of pres2lev.F90 from dyn3dpar to dyn3d


Added condition read_climoz for the variable O3daySTD(calcul_STDlev.h,
undefSTD.F)

Corrected bug in calculation of the diagnostic variable ec550aer
"Extinction at 550nm" (aeropt_5wv.F90) (Maria Raffaella Vuolo, LSCE)

Added stop if use_filtre_fft=y with dyn3d (conf_gcm.F) : this option is
not implemented in dyn3d.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.9 KB
Line 
1c
2c $Header$
3c
4c
5cIM on initialise les variables
6c
7        CALL ini_undefSTD(itap,freq_outNMC)
8c
9cIM on interpole les champs sur les niveaux STD de pression
10cIM a chaque pas de temps de la physique
11c
12c-------------------------------------------------------c
13c positionnement de l'argument logique a .false.        c
14c pour ne pas recalculer deux fois la meme chose !      c
15c a cet effet un appel a plevel_new a ete deplace       c
16c a la fin de la serie d'appels                         c
17c la boucle 'DO k=1, nlevSTD' a ete internalisee        c
18c dans plevel_new, d'ou la creation de cette routine... c
19c-------------------------------------------------------c
20c
21        CALL plevel_new(klon,klev,nlevSTD,.true.,pplay,rlevSTD,
22     &              t_seri,tlevSTD)
23        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
24     &             u_seri,ulevSTD)
25        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
26     &             v_seri,vlevSTD)
27c
28
29c
30        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
31     &             zphi/RG,philevSTD)
32        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
33     &             qx(:,:,ivap),qlevSTD)
34        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
35     &             zx_rh*100.,rhlevSTD)
36c
37        DO l=1, klev
38         DO i=1, klon
39          zx_tmp_fi3d(i,l)=u_seri(i,l)*v_seri(i,l)
40         ENDDO !i
41        ENDDO !l
42        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
43     &             zx_tmp_fi3d,uvSTD)
44c
45        DO l=1, klev
46         DO i=1, klon
47          zx_tmp_fi3d(i,l)=v_seri(i,l)*q_seri(i,l)
48         ENDDO !i
49        ENDDO !l
50        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
51     &             zx_tmp_fi3d,vqSTD)
52c
53        DO l=1, klev
54         DO i=1, klon
55          zx_tmp_fi3d(i,l)=v_seri(i,l)*t_seri(i,l)
56         ENDDO !i
57        ENDDO !l
58        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
59     &             zx_tmp_fi3d,vTSTD)
60c
61        DO l=1, klev
62         DO i=1, klon
63          zx_tmp_fi3d(i,l)=omega(i,l)*qx(i,l,ivap)
64         ENDDO !i
65        ENDDO !l
66        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
67     &             zx_tmp_fi3d,wqSTD)
68c
69        DO l=1, klev
70         DO i=1, klon
71          zx_tmp_fi3d(i,l)=v_seri(i,l)*zphi(i,l)/RG
72         ENDDO !i
73        ENDDO !l
74        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
75     &             zx_tmp_fi3d,vphiSTD)
76c
77        DO l=1, klev
78         DO i=1, klon
79          zx_tmp_fi3d(i,l)=omega(i,l)*t_seri(i,l)
80         ENDDO !i
81        ENDDO !l
82        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
83     &             zx_tmp_fi3d,wTSTD)
84c
85        DO l=1, klev
86         DO i=1, klon
87          zx_tmp_fi3d(i,l)=u_seri(i,l)*u_seri(i,l)
88         ENDDO !i
89        ENDDO !l
90        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
91     &             zx_tmp_fi3d,u2STD)
92c
93        DO l=1, klev
94         DO i=1, klon
95          zx_tmp_fi3d(i,l)=v_seri(i,l)*v_seri(i,l)
96         ENDDO !i
97        ENDDO !l
98        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
99     &             zx_tmp_fi3d,v2STD)
100c
101        DO l=1, klev
102         DO i=1, klon
103          zx_tmp_fi3d(i,l)=t_seri(i,l)*t_seri(i,l)
104         ENDDO !i
105        ENDDO !l
106        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
107     &             zx_tmp_fi3d,T2STD)
108
109c
110      zx_tmp_fi3d(:,:)=wo(:,:,1) * dobson_u * 1e3 / zmasse / rmo3 * rmd
111        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
112     &             zx_tmp_fi3d,O3STD)
113c
114      if (read_climoz == 2) THEN
115      zx_tmp_fi3d(:,:)=wo(:,:,2) * dobson_u * 1e3 / zmasse / rmo3 * rmd
116        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
117     &             zx_tmp_fi3d,O3daySTD)
118      endif
119c
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
125        CALL plevel_new(klon,klev,nlevSTD,.true.,zx_tmp_fi3d,rlevSTD,
126     &             omega,wlevSTD)
127c
128cIM on somme les valeurs toutes les freq_calNMC secondes
129c
130       CALL undefSTD(itap,freq_calNMC, read_climoz)
131c
132cIM on moyenne a la fin du mois ou du jour (toutes les freq_outNMC secondes)
133c
134       CALL moy_undefSTD(itap,freq_outNMC,freq_moyNMC)
135c
136       CALL plevel(klon,klev,.true.,pplay,50000.,
137     &              zphi/RG,geo500)
138
139cIM on interpole a chaque pas de temps le SWup(clr) et SWdn(clr) a 200 hPa
140c
141      CALL plevel(klon,klevp1,.true.,paprs,20000.,
142     $     swdn0,SWdn200clr)
143      CALL plevel(klon,klevp1,.false.,paprs,20000.,
144     $     swdn,SWdn200)
145      CALL plevel(klon,klevp1,.false.,paprs,20000.,
146     $     swup0,SWup200clr)
147      CALL plevel(klon,klevp1,.false.,paprs,20000.,
148     $     swup,SWup200)
149c
150      CALL plevel(klon,klevp1,.false.,paprs,20000.,
151     $     lwdn0,LWdn200clr)
152      CALL plevel(klon,klevp1,.false.,paprs,20000.,
153     $     lwdn,LWdn200)
154      CALL plevel(klon,klevp1,.false.,paprs,20000.,
155     $     lwup0,LWup200clr)
156      CALL plevel(klon,klevp1,.false.,paprs,20000.,
157     $     lwup,LWup200)
158c
Note: See TracBrowser for help on using the repository browser.