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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 227 - (show 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 module ini_histins_m
2
3 implicit none
4
5 integer, save:: nid_ins
6
7 contains
8
9 subroutine ini_histins(dtime, ok_newmicro)
10
11 ! From phylmd/ini_histins.h, version 1.2, 2005/05/25 13:10:09
12
13 use clesphys, only: ecrit_ins, ok_instan
14 use clesphys2, only: conv_emanuel
15 use dimens_m, only: iim, jjm, llm, nqmx
16 use disvert_m, only: presnivs
17 use dynetat0_m, only: day_ref, annee_ref, rlatu, rlonv
18 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 use indicesol, only: nbsrf, clnsurf
23 use iniadvtrac_m, only: tname, ttext
24 use nr_util, only: pi
25 use phyetat0_m, only: itau_phy
26 USE ymds2ju_m, only: ymds2ju
27
28 REAL, intent(in):: dtime ! pas temporel de la physique (s)
29 logical, intent(in):: ok_newmicro
30
31 ! Local:
32 real zjulian, zsto, zout
33 integer nhori, nvert, nsrf, iq, it
34
35 !-------------------------------------------------------------------
36
37 print *, 'Call sequence information: ini_histins'
38
39 test_ok_instan: IF (ok_instan) THEN
40 zsto = dtime * ecrit_ins
41 zout = dtime * ecrit_ins
42 CALL ymds2ju(annee_ref, 1, day_ref, 0.0, zjulian)
43 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 print *, 'itau_phy = ', itau_phy
47 print *, "zjulian = ", zjulian
48 CALL histvert(nid_ins, "presnivs", "Vertical levels", "mb", &
49 presnivs/100., nvert)
50
51 CALL histdef(nid_ins, "phis", "surface geopotential", "m2 s-2", &
52 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 CALL histdef(nid_ins, "msnow", "surface snow amount", "kg/m2", &
134 iim, jjm + 1, nhori, 1, 1, 1, -99, "inst(X)", zsto, zout)
135
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 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 END DO
182
183 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 CALL histdef(nid_ins, "qsurf", "Surface Air humidity", "", &
221 iim, (jjm + 1), nhori, 1, 1, 1, -99, &
222 "inst(X)", zsto, zout)
223
224 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
232 ! Champs 3D:
233
234 CALL histdef(nid_ins, "tro3", "ozone mole fraction", "-", &
235 iim, jjm + 1, nhori, llm, 1, llm, nvert, "inst(X)", zsto, zout)
236 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 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 CALL histdef(nid_ins, "rhum", "Relative humidity", &
261 "", iim, jjm + 1, nhori, llm, 1, llm, nvert, "inst(X)", &
262 zsto, zout)
263 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
273 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
282 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 CALL histend(nid_ins)
305 ENDIF test_ok_instan
306
307 end subroutine ini_histins
308
309 end module ini_histins_m

  ViewVC Help
Powered by ViewVC 1.1.21