/[lmdze]/trunk/phylmd/ini_histins.f90
ViewVC logotype

Contents of /trunk/phylmd/ini_histins.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 335 - (show annotations)
Thu Sep 12 21:22:46 2019 UTC (4 years, 8 months ago) by guez
File size: 14106 byte(s)
Julian dates be in double precision

`ConfigureCompilerFlags.cmake` and `TAGS.cmake` are now copied into
LMDZE, to avoid dependency on the environment.

Julian dates must be in double precision, to get time step precision.

Add optional attribute to argument sec of procedure ju2ymds. We do
not need sec in procedure dynredem0.

In procedure ju2ymds, by construction, sec cannot be > `un_jour`.

Remove useless intermediary variables in procedure ymds2ju.

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

  ViewVC Help
Powered by ViewVC 1.1.21