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

Last change on this file since 1408 was 1398, checked in by musat, 15 years ago

Last corrections for CMIP5:

  • Add O3 at standard level files histmthNMC.nc
  • Add positive attribute "down" for vertical axes for all output files
  • Replace "inst" by "ave" for hist*NMC.nc files to have time_counter and bounds for time axis (Marie-Alice's hint)
  • Correct units for vertical axes : mb instead of hPa
  • Add mass flux at the bottom of clouds
  • Comment non initialized variables (s_capCL, s_oliqCL, s_cteiCL, s_trmb1, s_trmb2, s_trmb3) for the output files
  • Geopotential field phy850, phi700, phi500, etc are modified to "geopotential height and are called z850, z700, z500, etc
  • Meaning of specific humidity outputs - ovapinit and ovap - were interchanged
  • Fields albs, albslw become alb1, alb2 in output files
  • Correct title for rugs_* fields
  • Correct units for pbase and ptop are Pa (not mb)
  • Correct ndayrain field

FH/JLD/JYG/MAF/IM

  • 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)
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.