source: LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/calcul_STDlev.h @ 5186

Last change on this file since 5186 was 1350, checked in by musat, 15 years ago

Add 3 output files for standard pressure levels AR5 exercice and flags
to manage their computation and output frequencies
histhfNMC.nc with 3 standard pressure levels
histdayNMC.nc with 8 (or may have 17) standard pressure levels
histmthNMC.nc with 17 standard pressure levels
Add 3 flags in the physiq.def file: freq_calNMC(3), freq_outNMC(3) and lev_histdayNMC
freq_calNMC(3) : computation frequency of variables on standard pressure levels

and by default has fallowing values (in fact physics' time step dtime)

freq_calNMC(1)=900.
freq_calNMC(2)=900.
freq_calNMC(3)=900.
freq_outNMC(3) : output frequency of variables on standard pressure levels

with following default values

freq_out(1) = 2592000. (30 days)
freq_out(2) = 86400. (1 day)
freq_out(3) = 21600. (6 hours)
lev_histdayNMC is 8 by default but may be switched to 17 (if we need more levels for a particular run)
IM

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.5 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
109
110        DO l=1, klev
111        DO i=1, klon
112         zx_tmp_fi3d(i,l)=paprs(i,l)
113        ENDDO !i
114        ENDDO !l
115        CALL plevel_new(klon,klev,nlevSTD,.true.,zx_tmp_fi3d,rlevSTD,
116     &             omega,wlevSTD)
117
118c
119cIM on somme les valeurs toutes les freq_calNMC secondes
120c
121       CALL undefSTD(itap,freq_calNMC)
122c
123cIM on moyenne a la fin du mois ou du jour (toutes les freq_outNMC secondes)
124c
125       CALL moy_undefSTD(itap,freq_outNMC,freq_moyNMC)
126c
127       CALL plevel(klon,klev,.true.,pplay,50000.,
128     &              zphi/RG,geo500)
129
130cIM on interpole a chaque pas de temps le SWup(clr) et SWdn(clr) a 200 hPa
131c
132      CALL plevel(klon,klevp1,.true.,paprs,20000.,
133     $     swdn0,SWdn200clr)
134      CALL plevel(klon,klevp1,.false.,paprs,20000.,
135     $     swdn,SWdn200)
136      CALL plevel(klon,klevp1,.false.,paprs,20000.,
137     $     swup0,SWup200clr)
138      CALL plevel(klon,klevp1,.false.,paprs,20000.,
139     $     swup,SWup200)
140c
141      CALL plevel(klon,klevp1,.false.,paprs,20000.,
142     $     lwdn0,LWdn200clr)
143      CALL plevel(klon,klevp1,.false.,paprs,20000.,
144     $     lwdn,LWdn200)
145      CALL plevel(klon,klevp1,.false.,paprs,20000.,
146     $     lwup0,LWup200clr)
147      CALL plevel(klon,klevp1,.false.,paprs,20000.,
148     $     lwup,LWup200)
149c
Note: See TracBrowser for help on using the repository browser.