/[lmdze]/trunk/Sources/phylmd/ini_histins.f
ViewVC logotype

Annotation of /trunk/Sources/phylmd/ini_histins.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 227 - (hide annotations)
Thu Nov 2 15:47:03 2017 UTC (6 years, 6 months ago) by guez
File size: 14177 byte(s)
Rename phisinit to phis in restart.nc: clearer, same name as Fortran variable.

In aaam_bud, use rlat and rlon from phyetat0_m instead of having these
module variables associated to actual arguments in physiq.

In clmain, too many wind variables make the procedure hard to
understand. Use yu(:knon, 1) and yv(:knon, 1) instead of u1lay(:knon)
and v1lay(:knon). Note that when yu(:knon, 1) and yv(:knon, 1) are
used as actual arguments, they are probably copied to new arrays since
the elements are not contiguous. Rename yu10m to wind10m because this
is the norm of wind vector, not its zonal component. Rename yustar to
ustar. Rename uzon and vmer to u1 and v1 since these are wind
components at first layer and u1 and v1 are the names of corresponding
dummy arguments in stdlevvar.

In clmain, rename yzlev to zlev.

In clmain, screenc, stdlevvar and coefcdrag, remove the code
corresponding to zxli true (not used in LMDZ either).

Subroutine ustarhb becomes a function. Simplifications using the fact
that zx_alf2 = 0 and zx_alf1 = 1 (discarding the possibility to change
this).

In procedure vdif_kcay, remove unused dummy argument plev. Remove
useless computations of sss and sssq.

In clouds_gno, exp(100.) would overflow in single precision. Set
maximum to exp(80.) instead.

In physiq, use u(:, 1) and v(:, 1) as arguments to phytrac instead of
creating ad hoc variables yu1 and yv1.

In stdlevvar, rename dummy argument u_10m to wind10m, following the
corresponding modification in clmain. Simplifications using the fact
that ok_pred = 0 and ok_corr = 1 (discarding the possibility to change
this).

1 guez 34 module ini_histins_m
2    
3     implicit none
4    
5 guez 191 integer, save:: nid_ins
6    
7 guez 34 contains
8    
9 guez 217 subroutine ini_histins(dtime, ok_newmicro)
10 guez 34
11 guez 213 ! From phylmd/ini_histins.h, version 1.2, 2005/05/25 13:10:09
12 guez 34
13 guez 191 use clesphys, only: ecrit_ins, ok_instan
14 guez 183 use clesphys2, only: conv_emanuel
15 guez 159 use dimens_m, only: iim, jjm, llm, nqmx
16 guez 92 use disvert_m, only: presnivs
17 guez 190 use dynetat0_m, only: day_ref, annee_ref, rlatu, rlonv
18 guez 61 USE histbeg_totreg_m, ONLY : histbeg_totreg
19     USE histdef_m, ONLY : histdef
20     USE histend_m, ONLY : histend
21     USE histvert_m, ONLY : histvert
22 guez 92 use indicesol, only: nbsrf, clnsurf
23 guez 159 use iniadvtrac_m, only: tname, ttext
24 guez 190 use nr_util, only: pi
25 guez 191 use phyetat0_m, only: itau_phy
26 guez 92 USE ymds2ju_m, only: ymds2ju
27 guez 34
28     REAL, intent(in):: dtime ! pas temporel de la physique (s)
29 guez 217 logical, intent(in):: ok_newmicro
30    
31 guez 175 ! Local:
32 guez 34 real zjulian, zsto, zout
33 guez 190 integer nhori, nvert, nsrf, iq, it
34 guez 34
35     !-------------------------------------------------------------------
36    
37 guez 213 print *, 'Call sequence information: ini_histins'
38    
39 guez 215 test_ok_instan: IF (ok_instan) THEN
40 guez 34 zsto = dtime * ecrit_ins
41     zout = dtime * ecrit_ins
42 guez 129 CALL ymds2ju(annee_ref, 1, day_ref, 0.0, zjulian)
43 guez 190 CALL histbeg_totreg("histins", rlonv(:iim) / pi * 180., &
44     rlatu / pi * 180., 1, iim, &
45     1, jjm + 1, itau_phy, zjulian, dtime, nhori, nid_ins)
46 guez 213 print *, 'itau_phy = ', itau_phy
47     print *, "zjulian = ", zjulian
48 guez 34 CALL histvert(nid_ins, "presnivs", "Vertical levels", "mb", &
49 guez 67 presnivs/100., nvert)
50 guez 213
51 guez 227 CALL histdef(nid_ins, "phis", "surface geopotential", "m2 s-2", &
52 guez 34 iim, (jjm + 1), nhori, 1, 1, 1, -99, &
53     "once", zsto, zout)
54     CALL histdef(nid_ins, "aire", "Grid area", "-", &
55     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
56     "once", zsto, zout)
57    
58     ! Champs 2D:
59    
60     CALL histdef(nid_ins, "tsol", "Surface Temperature", "K", &
61     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
62     "inst(X)", zsto, zout)
63     CALL histdef(nid_ins, "t2m", "Temperature 2m", "K", &
64     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
65     "inst(X)", zsto, zout)
66     CALL histdef(nid_ins, "q2m", "Specific humidity 2m", "Kg/Kg", &
67     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
68     "inst(X)", zsto, zout)
69     CALL histdef(nid_ins, "u10m", "Vent zonal 10m", "m/s", &
70     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
71     "inst(X)", zsto, zout)
72     CALL histdef(nid_ins, "v10m", "Vent meridien 10m", "m/s", &
73     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
74     "inst(X)", zsto, zout)
75     CALL histdef(nid_ins, "psol", "Surface Pressure", "Pa", &
76     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
77     "inst(X)", zsto, zout)
78     CALL histdef(nid_ins, "plul", "Large-scale Precip.", "mm/day", &
79     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
80     "inst(X)", zsto, zout)
81     CALL histdef(nid_ins, "pluc", "Convective Precip.", "mm/day", &
82     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
83     "inst(X)", zsto, zout)
84     CALL histdef(nid_ins, "cdrm", "Momentum drag coef.", "-", &
85     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
86     "inst(X)", zsto, zout)
87     CALL histdef(nid_ins, "cdrh", "Heat drag coef.", "-", &
88     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
89     "inst(X)", zsto, zout)
90     CALL histdef(nid_ins, "precip", "Precipitation Totale liq+sol", &
91     "kg/(s*m2)", &
92     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
93     "inst(X)", zsto, zout)
94     CALL histdef(nid_ins, "snow", "Snow fall", "kg/(s*m2)", &
95     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
96     "inst(X)", zsto, zout)
97     CALL histdef(nid_ins, "topl", "OLR", "W/m2", &
98     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
99     "inst(X)", zsto, zout)
100     CALL histdef(nid_ins, "evap", "Evaporation", "kg/(s*m2)", &
101     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
102     "inst(X)", zsto, zout)
103     CALL histdef(nid_ins, "sols", "Solar rad. at surf.", "W/m2", &
104     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
105     "inst(X)", zsto, zout)
106     CALL histdef(nid_ins, "soll", "IR rad. at surface", "W/m2", &
107     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
108     "inst(X)", zsto, zout)
109     CALL histdef(nid_ins, "solldown", "Down. IR rad. at surface", &
110     "W/m2", iim, (jjm + 1), nhori, 1, 1, 1, -99, &
111     "inst(X)", zsto, zout)
112     CALL histdef(nid_ins, "bils", "Surf. total heat flux", "W/m2", &
113     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
114     "inst(X)", zsto, zout)
115     CALL histdef(nid_ins, "sens", "Sensible heat flux", "W/m2", &
116     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
117     "inst(X)", zsto, zout)
118     CALL histdef(nid_ins, "fder", "Heat flux derivation", "W/m2", &
119     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
120     "inst(X)", zsto, zout)
121     CALL histdef(nid_ins, "dtsvdfo", "Boundary-layer dTs(o)", "K/s", &
122     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
123     "inst(X)", zsto, zout)
124     CALL histdef(nid_ins, "dtsvdft", "Boundary-layer dTs(t)", "K/s", &
125     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
126     "inst(X)", zsto, zout)
127     CALL histdef(nid_ins, "dtsvdfg", "Boundary-layer dTs(g)", "K/s", &
128     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
129     "inst(X)", zsto, zout)
130     CALL histdef(nid_ins, "dtsvdfi", "Boundary-layer dTs(g)", "K/s", &
131     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
132     "inst(X)", zsto, zout)
133 guez 215 CALL histdef(nid_ins, "msnow", "surface snow amount", "kg/m2", &
134     iim, jjm + 1, nhori, 1, 1, 1, -99, "inst(X)", zsto, zout)
135 guez 34
136     DO nsrf = 1, nbsrf
137     call histdef(nid_ins, "pourc_"//clnsurf(nsrf), &
138     "% "//clnsurf(nsrf), "%", &
139     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
140     "inst(X)", zsto, zout)
141     call histdef(nid_ins, "fract_"//clnsurf(nsrf), &
142     "Fraction "//clnsurf(nsrf), "1", &
143     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
144     "inst(X)", zsto, zout)
145     call histdef(nid_ins, "sens_"//clnsurf(nsrf), &
146     "Sensible heat flux "//clnsurf(nsrf), "W/m2", &
147     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
148     "inst(X)", zsto, zout)
149     call histdef(nid_ins, "tsol_"//clnsurf(nsrf), &
150     "Surface Temperature"//clnsurf(nsrf), "W/m2", &
151     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
152     "inst(X)", zsto, zout)
153     call histdef(nid_ins, "lat_"//clnsurf(nsrf), &
154     "Latent heat flux "//clnsurf(nsrf), "W/m2", &
155     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
156     "inst(X)", zsto, zout)
157     call histdef(nid_ins, "taux_"//clnsurf(nsrf), &
158     "Zonal wind stress"//clnsurf(nsrf), "Pa", &
159     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
160     "inst(X)", zsto, zout)
161     call histdef(nid_ins, "tauy_"//clnsurf(nsrf), &
162     "Meridional xind stress "//clnsurf(nsrf), "Pa", &
163     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
164     "inst(X)", zsto, zout)
165     call histdef(nid_ins, "albe_"//clnsurf(nsrf), &
166     "Albedo "//clnsurf(nsrf), "-", &
167     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
168     "inst(X)", zsto, zout)
169     call histdef(nid_ins, "rugs_"//clnsurf(nsrf), &
170     "rugosite "//clnsurf(nsrf), "-", &
171     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
172     "inst(X)", zsto, zout)
173 guez 225 call histdef(nid_ins, "u10m_"//clnsurf(nsrf), &
174     "zonal wind 10 m "//clnsurf(nsrf), "m s-1", &
175     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
176     "inst(X)", zsto, zout)
177     call histdef(nid_ins, "v10m_"//clnsurf(nsrf), &
178     "meridional wind 10 m "//clnsurf(nsrf), "m s-1", &
179     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
180     "inst(X)", zsto, zout)
181 guez 34 END DO
182 guez 206
183 guez 34 CALL histdef(nid_ins, "rugs", "rugosity", "-", &
184     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
185     "inst(X)", zsto, zout)
186     CALL histdef(nid_ins, "albs", "Surface albedo", "-", &
187     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
188     "inst(X)", zsto, zout)
189     CALL histdef(nid_ins, "s_pblh", "Boundary Layer Height", "m", &
190     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
191     "inst(X)", zsto, zout)
192     CALL histdef(nid_ins, "s_pblt", "T at Boundary Layer Height", &
193     "K", &
194     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
195     "inst(X)", zsto, zout)
196     CALL histdef(nid_ins, "s_lcl", "Condensation level", "m", &
197     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
198     "inst(X)", zsto, zout)
199     CALL histdef(nid_ins, "s_capCL", "Conv avlbl pot ener for ABL", "J/m2", &
200     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
201     "inst(X)", zsto, zout)
202     CALL histdef(nid_ins, "s_oliqCL", "Liq Water in BL", "kg/m2", &
203     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
204     "inst(X)", zsto, zout)
205     CALL histdef(nid_ins, "s_cteiCL", "Instability criteria (ABL)", "K", &
206     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
207     "inst(X)", zsto, zout)
208     CALL histdef(nid_ins, "s_therm", "Exces du thermique", "K", &
209     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
210     "inst(X)", zsto, zout)
211     CALL histdef(nid_ins, "s_trmb1", "deep_cape(HBTM2)", "J/m2", &
212     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
213     "inst(X)", zsto, zout)
214     CALL histdef(nid_ins, "s_trmb2", "inhibition (HBTM2)", "J/m2", &
215     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
216     "inst(X)", zsto, zout)
217     CALL histdef(nid_ins, "s_trmb3", "Point Omega (HBTM2)", "m", &
218     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
219     "inst(X)", zsto, zout)
220 guez 221 CALL histdef(nid_ins, "qsurf", "Surface Air humidity", "", &
221     iim, (jjm + 1), nhori, 1, 1, 1, -99, &
222     "inst(X)", zsto, zout)
223 guez 34
224 guez 206 if (conv_emanuel) then
225     CALL histdef(nid_ins, "ptop", "cloud top pressure", &
226     "Pa", iim, jjm + 1, nhori, 1, 1, 1, -99, "inst(X)", zsto, zout)
227     CALL histdef(nid_ins, "dnwd0", "unsaturated downdraft", &
228     "kg/m2/s", iim, jjm + 1, nhori, llm, 1, llm, nvert, "inst(X)", &
229     zsto, zout)
230     end if
231 guez 34
232     ! Champs 3D:
233    
234 guez 212 CALL histdef(nid_ins, "tro3", "ozone mole fraction", "-", &
235     iim, jjm + 1, nhori, llm, 1, llm, nvert, "inst(X)", zsto, zout)
236 guez 34 CALL histdef(nid_ins, "temp", "Temperature", "K", &
237     iim, (jjm + 1), nhori, llm, 1, llm, nvert, &
238     "inst(X)", zsto, zout)
239     CALL histdef(nid_ins, "vitu", "Zonal wind", "m/s", &
240     iim, (jjm + 1), nhori, llm, 1, llm, nvert, &
241     "inst(X)", zsto, zout)
242     CALL histdef(nid_ins, "vitv", "Merid wind", "m/s", &
243     iim, (jjm + 1), nhori, llm, 1, llm, nvert, &
244     "inst(X)", zsto, zout)
245     CALL histdef(nid_ins, "geop", "Geopotential height", "m", &
246     iim, (jjm + 1), nhori, llm, 1, llm, nvert, &
247     "inst(X)", zsto, zout)
248     CALL histdef(nid_ins, "pres", "Air pressure", "Pa", &
249     iim, (jjm + 1), nhori, llm, 1, llm, nvert, &
250     "inst(X)", zsto, zout)
251     CALL histdef(nid_ins, "dtvdf", "Boundary-layer dT", "K/s", &
252     iim, (jjm + 1), nhori, llm, 1, llm, nvert, &
253     "inst(X)", zsto, zout)
254     CALL histdef(nid_ins, "dqvdf", "Boundary-layer dQ", "Kg/Kg/s", &
255     iim, (jjm + 1), nhori, llm, 1, llm, nvert, &
256     "inst(X)", zsto, zout)
257 guez 159 CALL histdef(nid_ins, "zmasse", "column density of air in cell", &
258     "kg m-2", iim, jjm + 1, nhori, llm, 1, llm, nvert, "inst(X)", &
259     zsto, zout)
260 guez 178 CALL histdef(nid_ins, "rhum", "Relative humidity", &
261     "", iim, jjm + 1, nhori, llm, 1, llm, nvert, "inst(X)", &
262     zsto, zout)
263 guez 213 CALL histdef(nid_ins, "d_t_ec", "kinetic dissipation dT", &
264     "K/s", iim, jjm + 1, nhori, llm, 1, llm, nvert, "inst(X)", &
265     zsto, zout)
266     CALL histdef(nid_ins, "dtsw0", "CS SW radiation dT", &
267     "K/s", iim, jjm + 1, nhori, llm, 1, llm, nvert, "inst(X)", &
268     zsto, zout)
269     CALL histdef(nid_ins, "dtlw0", "CS LW radiation dT", &
270     "K/s", iim, jjm + 1, nhori, llm, 1, llm, nvert, "inst(X)", &
271     zsto, zout)
272 guez 221
273 guez 217 if (ok_newmicro) then
274     CALL histdef(nid_ins, "re", "cloud droplet effective radius", &
275     "micrometer", iim, jjm + 1, nhori, llm, 1, llm, nvert, &
276     "inst(X)", zsto, zout)
277     CALL histdef(nid_ins, "fl", &
278     "denominator of Cloud droplet effective radius", "", iim, &
279     jjm + 1, nhori, llm, 1, llm, nvert, "inst(X)", zsto, zout)
280     end if
281 guez 178
282 guez 159 DO it = 1, nqmx - 2
283     ! champ 2D
284     iq=it+2
285     CALL histdef(nid_ins, tname(iq), ttext(iq), "U/kga", iim, jjm+1, &
286     nhori, llm, 1, llm, nvert, "inst(X)", zsto, zout)
287     CALL histdef(nid_ins, "fl"//tname(iq), "Flux "//ttext(iq), &
288     "U/m2/s", iim, jjm+1, nhori, llm, 1, llm, nvert, &
289     "inst(X)", zsto, zout)
290     CALL histdef(nid_ins, "d_tr_th_"//tname(iq), &
291     "tendance thermique"// ttext(iq), "?", &
292     iim, jjm+1, nhori, llm, 1, llm, nvert, &
293     "inst(X)", zsto, zout)
294     CALL histdef(nid_ins, "d_tr_cv_"//tname(iq), &
295     "tendance convection"// ttext(iq), "?", &
296     iim, jjm+1, nhori, llm, 1, llm, nvert, &
297     "inst(X)", zsto, zout)
298     CALL histdef(nid_ins, "d_tr_cl_"//tname(iq), &
299     "tendance couche limite"// ttext(iq), "?", &
300     iim, jjm+1, nhori, llm, 1, llm, nvert, &
301     "inst(X)", zsto, zout)
302     ENDDO
303    
304 guez 34 CALL histend(nid_ins)
305 guez 215 ENDIF test_ok_instan
306 guez 34
307     end subroutine ini_histins
308    
309     end module ini_histins_m

  ViewVC Help
Powered by ViewVC 1.1.21