Go to the documentation of this file.
40 public :: atmos_vars_get_diagnostic
50 interface atmos_vars_get_diagnostic
51 procedure ATMOS_vars_get_diagnostic_3D
52 procedure ATMOS_vars_get_diagnostic_2D
53 procedure ATMOS_vars_get_diagnostic_1D
54 end interface atmos_vars_get_diagnostic
76 real(
rp),
public,
target,
allocatable ::
dens(:,:,:)
77 real(
rp),
public,
target,
allocatable ::
momz(:,:,:)
78 real(
rp),
public,
target,
allocatable ::
momx(:,:,:)
79 real(
rp),
public,
target,
allocatable ::
momy(:,:,:)
80 real(
rp),
public,
target,
allocatable ::
rhot(:,:,:)
81 real(
rp),
public,
target,
allocatable ::
qtrc(:,:,:,:)
88 real(
rp),
public,
target,
allocatable ::
qtrc_avw(:,:,:,:)
97 real(
rp),
public,
pointer ::
qv(:,:,:)
98 real(
rp),
public,
pointer ::
qc(:,:,:)
99 real(
rp),
public,
pointer ::
qr(:,:,:)
100 real(
rp),
public,
pointer ::
qi(:,:,:)
101 real(
rp),
public,
pointer ::
qs(:,:,:)
102 real(
rp),
public,
pointer ::
qg(:,:,:)
103 real(
rp),
public,
pointer ::
qh(:,:,:)
105 real(
rp),
public,
target,
allocatable ::
qe(:,:,:,:)
129 real(
rp),
public,
allocatable,
target ::
w (:,:,:)
130 real(
rp),
public,
allocatable,
target ::
u (:,:,:)
131 real(
rp),
public,
allocatable,
target ::
v (:,:,:)
133 real(
rp),
public,
allocatable,
target ::
pott (:,:,:)
134 real(
rp),
public,
allocatable,
target ::
temp (:,:,:)
135 real(
rp),
public,
allocatable,
target ::
pres (:,:,:)
136 real(
rp),
public,
allocatable,
target ::
exner(:,:,:)
137 real(
rp),
public,
allocatable,
target ::
phyd (:,:,:)
138 real(
rp),
public,
allocatable,
target ::
phydh(:,:,:)
140 real(
rp),
public,
allocatable,
target ::
qdry (:,:,:)
141 real(
rp),
public,
allocatable,
target ::
rtot (:,:,:)
142 real(
rp),
public,
allocatable,
target ::
cvtot(:,:,:)
143 real(
rp),
public,
allocatable,
target ::
cptot(:,:,:)
145 real(
rp),
public,
allocatable,
target ::
prec (:,:)
155 logical,
private :: atmos_vars_checkrange = .false.
156 real(
rp),
private :: atmos_vars_checkcfl_soft = 1.0_rp
157 real(
rp),
private :: atmos_vars_checkcfl_hard = 2.0_rp
160 character(len=H_SHORT) ::
name
161 character(len=H_MID) :: desc
162 character(len=H_SHORT) ::
unit
164 character(len=H_SHORT) :: dim_type
165 character(len=H_MID) :: stdname
169 integer,
private,
parameter :: pv_nmax = 5
170 type(vinfo),
private :: pv_info(pv_nmax)
171 integer,
private,
allocatable :: pv_id(:)
174 vinfo(
'DENS',
'density',
'kg/m3', 3,
'ZXY',
'air_density' ), &
175 vinfo(
'MOMZ',
'momentum z',
'kg/m2/s', 3,
'ZHXY',
'upward_mass_flux_of_air' ), &
176 vinfo(
'MOMX',
'momentum x',
'kg/m2/s', 3,
'ZXHY',
'eastward_mass_flux_of_air' ), &
177 vinfo(
'MOMY',
'momentum y',
'kg/m2/s', 3,
'ZXYH',
'northward_mass_flux_of_air' ), &
178 vinfo(
'RHOT',
'rho * theta',
'kg/m3*K', 3,
'ZXY',
'' ) /
182 real(
rp),
allocatable,
target :: lhv (:,:,:)
183 real(
rp),
allocatable,
target :: lhs (:,:,:)
184 real(
rp),
allocatable,
target :: lhf (:,:,:)
186 real(
rp),
allocatable,
target :: potv (:,:,:)
187 real(
rp),
allocatable,
target :: teml (:,:,:)
188 real(
rp),
allocatable,
target :: potl (:,:,:)
189 real(
rp),
allocatable,
target :: pote (:,:,:)
191 real(
rp),
allocatable,
target :: qtot (:,:,:)
192 real(
rp),
allocatable,
target :: qhyd (:,:,:)
193 real(
rp),
allocatable,
target :: qliq (:,:,:)
194 real(
rp),
allocatable,
target :: qice (:,:,:)
196 real(
rp),
allocatable,
target :: lwp (:,:)
197 real(
rp),
allocatable,
target :: iwp (:,:)
198 real(
rp),
allocatable,
target :: pw (:,:)
200 real(
rp),
allocatable,
target :: rain (:,:)
201 real(
rp),
allocatable,
target :: snow (:,:)
203 real(
rp),
allocatable,
target :: qsat (:,:,:)
204 real(
rp),
allocatable,
target :: rha (:,:,:)
205 real(
rp),
allocatable,
target :: rhl (:,:,:)
206 real(
rp),
allocatable,
target :: rhi (:,:,:)
208 real(
rp),
allocatable,
target :: vor (:,:,:)
209 real(
rp),
allocatable,
target :: div (:,:,:)
210 real(
rp),
allocatable,
target :: hdiv (:,:,:)
211 real(
rp),
allocatable,
target :: uabs (:,:,:)
213 real(
rp),
allocatable,
target :: n2 (:,:,:)
214 real(
rp),
allocatable,
target :: pblh (:,:)
216 real(
rp),
allocatable,
target :: mse (:,:,:)
217 real(
rp),
allocatable,
target :: tdew (:,:,:)
219 real(
rp),
allocatable,
target :: cape (:,:)
220 real(
rp),
allocatable,
target :: cin (:,:)
221 real(
rp),
allocatable,
target :: lcl (:,:)
222 real(
rp),
allocatable,
target :: lfc (:,:)
223 real(
rp),
allocatable,
target :: lnb (:,:)
225 real(
rp),
allocatable,
target :: engt (:,:,:)
226 real(
rp),
allocatable,
target :: engp (:,:,:)
227 real(
rp),
allocatable,
target :: engk (:,:,:)
228 real(
rp),
allocatable,
target :: engi (:,:,:)
230 real(
rp),
allocatable,
target :: dens_mean(:)
231 real(
rp),
allocatable,
target :: w_mean (:)
232 real(
rp),
allocatable,
target :: u_mean (:)
233 real(
rp),
allocatable,
target :: v_mean (:)
234 real(
rp),
allocatable,
target :: pt_mean (:)
235 real(
rp),
allocatable,
target :: t_mean (:)
236 real(
rp),
allocatable,
target :: qv_mean (:)
237 real(
rp),
allocatable,
target :: qhyd_mean(:)
238 real(
rp),
allocatable,
target :: qliq_mean(:)
239 real(
rp),
allocatable,
target :: qice_mean(:)
241 real(
rp),
allocatable,
target :: dens_prim(:,:,:)
242 real(
rp),
allocatable,
target :: w_prim (:,:,:)
243 real(
rp),
allocatable,
target :: u_prim (:,:,:)
244 real(
rp),
allocatable,
target :: v_prim (:,:,:)
245 real(
rp),
allocatable,
target :: pt_prim (:,:,:)
246 real(
rp),
allocatable,
target :: w_prim2 (:,:,:)
247 real(
rp),
allocatable,
target :: pt_w_prim(:,:,:)
248 real(
rp),
allocatable,
target :: w_prim3 (:,:,:)
249 real(
rp),
allocatable,
target :: tke_rs (:,:,:)
251 real(
rp),
allocatable,
target :: velz (:,:,:)
252 real(
rp),
allocatable,
target :: velx (:,:,:)
253 real(
rp),
allocatable,
target :: vely (:,:,:)
254 real(
rp),
allocatable,
target :: umet (:,:,:)
255 real(
rp),
allocatable,
target :: vmet (:,:,:)
259 integer,
private,
parameter :: i_w = 1
260 integer,
private,
parameter :: i_u = 2
261 integer,
private,
parameter :: i_v = 3
262 integer,
private,
parameter :: i_pott = 4
263 integer,
private,
parameter :: i_temp = 5
264 integer,
private,
parameter :: i_pres = 6
265 integer,
private,
parameter :: i_exner = 7
266 integer,
private,
parameter :: i_phyd = 8
267 integer,
private,
parameter :: i_qdry = 9
268 integer,
private,
parameter :: i_rtot = 10
269 integer,
private,
parameter :: i_cvtot = 11
270 integer,
private,
parameter :: i_cptot = 12
272 integer,
private,
parameter :: i_lhv = 13
273 integer,
private,
parameter :: i_lhs = 14
274 integer,
private,
parameter :: i_lhf = 15
275 integer,
private,
parameter :: i_potv = 16
276 integer,
private,
parameter :: i_teml = 17
277 integer,
private,
parameter :: i_potl = 18
278 integer,
private,
parameter :: i_pote = 19
279 integer,
private,
parameter :: i_qtot = 20
280 integer,
private,
parameter :: i_qhyd = 21
281 integer,
private,
parameter :: i_qliq = 22
282 integer,
private,
parameter :: i_qice = 23
283 integer,
private,
parameter :: i_lwp = 24
284 integer,
private,
parameter :: i_iwp = 25
285 integer,
private,
parameter :: i_pw = 26
286 integer,
private,
parameter :: i_prec = 27
287 integer,
private,
parameter :: i_rain = 28
288 integer,
private,
parameter :: i_snow = 29
289 integer,
private,
parameter :: i_qsat = 30
290 integer,
private,
parameter :: i_rha = 31
291 integer,
private,
parameter :: i_rhl = 32
292 integer,
private,
parameter :: i_rhi = 33
293 integer,
private,
parameter :: i_vor = 34
294 integer,
private,
parameter :: i_div = 35
295 integer,
private,
parameter :: i_hdiv = 36
296 integer,
private,
parameter :: i_uabs = 37
297 integer,
private,
parameter :: i_n2 = 38
298 integer,
private,
parameter :: i_pblh = 39
299 integer,
private,
parameter :: i_mse = 40
300 integer,
private,
parameter :: i_tdew = 41
301 integer,
private,
parameter :: i_cape = 42
302 integer,
private,
parameter :: i_cin = 43
303 integer,
private,
parameter :: i_lcl = 44
304 integer,
private,
parameter :: i_lfc = 45
305 integer,
private,
parameter :: i_lnb = 46
306 integer,
private,
parameter :: i_engt = 47
307 integer,
private,
parameter :: i_engp = 48
308 integer,
private,
parameter :: i_engk = 49
309 integer,
private,
parameter :: i_engi = 50
310 integer,
private,
parameter :: i_dens_mean = 51
311 integer,
private,
parameter :: i_w_mean = 52
312 integer,
private,
parameter :: i_u_mean = 53
313 integer,
private,
parameter :: i_v_mean = 54
314 integer,
private,
parameter :: i_pt_mean = 55
315 integer,
private,
parameter :: i_t_mean = 56
316 integer,
private,
parameter :: i_qv_mean = 57
317 integer,
private,
parameter :: i_qhyd_mean = 58
318 integer,
private,
parameter :: i_qliq_mean = 59
319 integer,
private,
parameter :: i_qice_mean = 60
320 integer,
private,
parameter :: i_dens_prim = 61
321 integer,
private,
parameter :: i_w_prim = 62
322 integer,
private,
parameter :: i_u_prim = 63
323 integer,
private,
parameter :: i_v_prim = 64
324 integer,
private,
parameter :: i_pt_prim = 65
325 integer,
private,
parameter :: i_w_prim2 = 66
326 integer,
private,
parameter :: i_pt_w_prim = 67
327 integer,
private,
parameter :: i_w_prim3 = 68
328 integer,
private,
parameter :: i_tke_rs = 69
329 integer,
private,
parameter :: i_velz = 70
330 integer,
private,
parameter :: i_velx = 71
331 integer,
private,
parameter :: i_vely = 72
332 integer,
private,
parameter :: i_umet = 73
333 integer,
private,
parameter :: i_vmet = 74
335 integer,
private,
parameter :: dv_nmax = 74
336 type(vinfo),
private :: dv_info(dv_nmax)
337 logical,
private :: dv_calculated(dv_nmax)
340 vinfo(
'W',
'velocity w',
'm/s', 3,
'ZXY',
'upward_air_velocity' ), &
341 vinfo(
'U',
'velocity u',
'm/s', 3,
'ZXY',
'x_wind' ), &
342 vinfo(
'V',
'velocity v',
'm/s', 3,
'ZXY',
'y_wind' ), &
343 vinfo(
'PT',
'potential temp.',
'K', 3,
'ZXY',
'air_potential_temperature' ), &
344 vinfo(
'T',
'temperature',
'K', 3,
'ZXY',
'air_temperature' ), &
345 vinfo(
'PRES',
'pressure',
'Pa', 3,
'ZXY',
'air_pressure' ), &
346 vinfo(
'EXNER',
'Exner function',
'1', 3,
'ZXY',
'dimensionless_exner_function' ), &
347 vinfo(
'PHYD',
'hydrostatic pressure',
'Pa', 3,
'ZXY',
'' ), &
348 vinfo(
'QDRY',
'dry air',
'kg/kg', 3,
'ZXY',
'' ), &
349 vinfo(
'RTOT',
'Total gas constant',
'J/kg/K', 3,
'ZXY',
'' ), &
350 vinfo(
'CVTOT',
'Total heat capacity',
'J/kg/K', 3,
'ZXY',
'' ), &
351 vinfo(
'CPTOT',
'Total heat capacity',
'J/kg/K', 3,
'ZXY',
'' ), &
352 vinfo(
'LHV',
'latent heat for vaporization',
'J/kg', 3,
'ZXY',
'' ), &
353 vinfo(
'LHS',
'latent heat for sublimation',
'J/kg', 3,
'ZXY',
'' ), &
354 vinfo(
'LHF',
'latent heat for fusion',
'J/kg', 3,
'ZXY',
'' ), &
355 vinfo(
'POTV',
'virtual potential temp.',
'K', 3,
'ZXY',
'' ), &
356 vinfo(
'TEML',
'liquid water temperature',
'K', 3,
'ZXY',
'' ), &
357 vinfo(
'POTL',
'liquid water potential temp.',
'K', 3,
'ZXY',
'' ), &
358 vinfo(
'POTE',
'equivalent potential temp.',
'K', 3,
'ZXY',
'pseudo_equivalent_potential_temperature' ), &
359 vinfo(
'QTOT',
'total water',
'kg/kg', 3,
'ZXY',
'mass_fraction_of_water_in_air' ), &
360 vinfo(
'QHYD',
'total hydrometeors',
'kg/kg', 3,
'ZXY',
'mass_fraction_of_cloud_condensed_water_in_air' ), &
361 vinfo(
'QLIQ',
'total liquid water',
'kg/kg', 3,
'ZXY',
'' ), &
362 vinfo(
'QICE',
'total ice water',
'kg/kg', 3,
'ZXY',
'' ), &
363 vinfo(
'LWP',
'liquid water path',
'g/m2', 2,
'XY',
'atmosphere_mass_content_of_cloud_liquid_water' ), &
364 vinfo(
'IWP',
'ice water path',
'g/m2', 2,
'XY',
'' ), &
365 vinfo(
'PW',
'precipitable water',
'g/m2', 2,
'XY',
'atmosphere_mass_content_of_vapor' ), &
366 vinfo(
'PREC',
'surface precipitation flux',
'kg/m2/s', 2,
'XY',
'precipitation_flux' ), &
367 vinfo(
'RAIN',
'surface rain flux',
'kg/m2/s', 2,
'XY',
'rainfall_flux' ), &
368 vinfo(
'SNOW',
'surface snow flux',
'kg/m2/s', 2,
'XY',
'snowfall_flux' ), &
369 vinfo(
'QSAT',
'saturation specific humidity',
'kg/kg', 3,
'ZXY',
'' ), &
370 vinfo(
'RHA',
'relative humidity(liq+ice)',
'%', 3,
'ZXY',
'' ), &
371 vinfo(
'RH',
'relative humidity(liq)',
'%', 3,
'ZXY',
'relative_humidity' ), &
372 vinfo(
'RHI',
'relative humidity(ice)',
'%', 3,
'ZXY',
'' ), &
373 vinfo(
'VOR',
'vertical vorticity',
'1/s', 3,
'ZXY',
'atmosphere_relative_vorticity' ), &
374 vinfo(
'DIV',
'divergence',
'1/s', 3,
'ZXY',
'divergence_of_wind' ), &
375 vinfo(
'HDIV',
'horizontal divergence',
'1/s', 3,
'ZXY',
'' ), &
376 vinfo(
'Uabs',
'absolute velocity',
'm/s', 3,
'ZXY',
'wind_speed' ), &
377 vinfo(
'N2',
'squared Brunt-Vaisala frequency',
'1/s2', 3,
'ZXY',
'square_of_brunt_vaisala_frequency_in_air' ), &
378 vinfo(
'PBLH',
'PBL height',
'm', 2,
'XY',
'atmosphere_boundary_layer_thickness' ), &
379 vinfo(
'MSE',
'moist static energy',
'm2/s2', 3,
'ZXY',
'' ), &
380 vinfo(
'TDEW',
'dew point',
'K', 3,
'ZXY',
'dew_point_temperature' ), &
381 vinfo(
'CAPE',
'convective avail. pot. energy',
'm2/s2', 2,
'XY',
'atmosphere_specific_convective_available_potential_energy' ), &
382 vinfo(
'CIN',
'convection inhibition',
'm2/s2', 2,
'XY',
'' ), &
383 vinfo(
'LCL',
'lifted condensation level',
'm', 2,
'XY',
'atmosphere_lifting_condensation_level' ), &
384 vinfo(
'LFC',
'level of free convection',
'm', 2,
'XY',
'atmosphere_level_of_free_convection' ), &
385 vinfo(
'LNB',
'level of neutral buoyancy',
'm', 2,
'XY',
'' ), &
386 vinfo(
'ENGT',
'total energy',
'J/m3', 3,
'ZXY',
'' ), &
387 vinfo(
'ENGP',
'potential energy',
'J/m3', 3,
'ZXY',
'' ), &
388 vinfo(
'ENGK',
'kinetic energy',
'J/m3', 3,
'ZXY',
'' ), &
389 vinfo(
'ENGI',
'internal energy',
'J/m3', 3,
'ZXY',
'' ), &
390 vinfo(
'DENS_MEAN',
'horiz. mean of density',
'kg/m3', 1,
'Z',
'' ), &
391 vinfo(
'W_MEAN',
'horiz. mean of w',
'm/s', 1,
'Z',
'' ), &
392 vinfo(
'U_MEAN',
'horiz. mean of u',
'm/s', 1,
'Z',
'' ), &
393 vinfo(
'V_MEAN',
'horiz. mean of v',
'm/s', 1,
'Z',
'' ), &
394 vinfo(
'PT_MEAN',
'horiz. mean of pot.',
'K', 1,
'Z',
'' ), &
395 vinfo(
'T_MEAN',
'horiz. mean of t',
'K', 1,
'Z',
'' ), &
396 vinfo(
'QV_MEAN',
'horiz. mean of QV',
'1', 1,
'Z',
'' ), &
397 vinfo(
'QHYD_MEAN',
'horiz. mean of QHYD',
'1', 1,
'Z',
'' ), &
398 vinfo(
'QLIQ_MEAN',
'horiz. mean of QLIQ',
'1', 1,
'Z',
'' ), &
399 vinfo(
'QICE_MEAN',
'horiz. mean of QICE',
'1', 1,
'Z',
'' ), &
400 vinfo(
'DENS_PRIM',
'horiz. deviation of density',
'kg/m3', 3,
'ZXY',
'' ), &
401 vinfo(
'W_PRIM',
'horiz. deviation of w',
'm/s', 3,
'ZXY',
'' ), &
402 vinfo(
'U_PRIM',
'horiz. deviation of u',
'm/s', 3,
'ZXY',
'' ), &
403 vinfo(
'V_PRIM',
'horiz. deviation of v',
'm/s', 3,
'ZXY',
'' ), &
404 vinfo(
'PT_PRIM',
'horiz. deviation of pot. temp.',
'K', 3,
'ZXY',
'' ), &
405 vinfo(
'W_PRIM2',
'variance of w',
'm2/s2', 3,
'ZXY',
'' ), &
406 vinfo(
'PT_W_PRIM',
'resolved scale heat flux',
'W/s', 3,
'ZXY',
'' ), &
407 vinfo(
'W_PRIM3',
'skewness of w',
'm3/s3', 3,
'ZXY',
'' ), &
408 vinfo(
'TKE_RS',
'resolved scale TKE',
'm2/s2', 3,
'ZXY',
'' ), &
409 vinfo(
'VELZ',
'velocity w at the half level',
'm/s', 3,
'ZHXY',
'' ), &
410 vinfo(
'VELX',
'velocity u at the half level',
'm/s', 3,
'ZXHY',
'' ), &
411 vinfo(
'VELY',
'velocity v at the half level',
'm/s', 3,
'ZXYH',
'' ), &
412 vinfo(
'Umet',
'eastward velocity',
'm/s', 3,
'ZXY',
'eastward_wind' ), &
413 vinfo(
'Vmet',
'northward velocity',
'm/s', 3,
'ZXY',
'northward_wind' ) /
416 integer,
private :: pv_hist_id (pv_nmax)
417 integer,
private :: pv_monit_id(pv_nmax)
418 integer,
private,
allocatable :: qp_hist_id (:)
419 integer,
private,
allocatable :: qp_monit_id(:)
420 integer,
private :: dv_hist_id (dv_nmax)
421 integer,
private :: hist_id_gph
423 integer,
private,
parameter :: im_qdry = 1
424 integer,
private,
parameter :: im_qtot = 2
425 integer,
private,
parameter :: im_evap = 3
426 integer,
private,
parameter :: im_prec = 4
427 integer,
private,
parameter :: im_engt = 5
428 integer,
private,
parameter :: im_engp = 6
429 integer,
private,
parameter :: im_engk = 7
430 integer,
private,
parameter :: im_engi = 8
431 integer,
private,
parameter :: im_engflxt = 9
432 integer,
private,
parameter :: im_engsfc_sh = 10
433 integer,
private,
parameter :: im_engsfc_lh = 11
434 integer,
private,
parameter :: im_engsfc_evap = 12
435 integer,
private,
parameter :: im_engsfc_prec = 13
436 integer,
private,
parameter :: im_engsfc_rd = 14
437 integer,
private,
parameter :: im_engtom_rd = 15
438 integer,
private,
parameter :: im_engsfc_lw_up = 16
439 integer,
private,
parameter :: im_engsfc_lw_dn = 17
440 integer,
private,
parameter :: im_engsfc_sw_up = 18
441 integer,
private,
parameter :: im_engsfc_sw_dn = 19
442 integer,
private,
parameter :: im_engtom_lw_up = 20
443 integer,
private,
parameter :: im_engtom_lw_dn = 21
444 integer,
private,
parameter :: im_engtom_sw_up = 22
445 integer,
private,
parameter :: im_engtom_sw_dn = 23
446 integer,
private,
parameter :: dvm_nmax = 23
447 integer,
private :: dv_monit_id(dvm_nmax)
450 logical,
private :: moist
451 real(
rp),
private,
target,
allocatable :: zero(:,:,:)
455 integer,
private :: restart_fid = -1
456 logical,
private :: atmos_restart_in_check_coordinates = .true.
459 real(
rp),
private,
allocatable :: work3d(:,:,:)
460 real(
rp),
private,
allocatable :: work2d(:,:)
461 real(
rp),
private,
allocatable :: work1d(:)
510 namelist / param_atmos_vars / &
514 atmos_restart_in_check_coordinates, &
524 atmos_vars_checkrange, &
525 atmos_vars_checkcfl_soft, &
526 atmos_vars_checkcfl_hard
533 log_info(
"ATMOS_vars_setup",*)
'Setup'
637 allocate( work3d(
ka,
ia,
ja) )
638 allocate( work2d(
ia,
ja) )
639 allocate( work1d(
ka ) )
647 log_info(
"ATMOS_vars_setup",*)
'Not found namelist. Default used.'
648 elseif( ierr > 0 )
then
649 log_error(
"ATMOS_vars_setup",*)
'Not appropriate names in namelist PARAM_ATMOS_VARS. Check!'
652 log_nml(param_atmos_vars)
655 log_info(
"ATMOS_vars_setup",*)
'List of prognostic variables (ATMOS) '
656 log_info_cont(
'(1x,A,A24,A,A48,A,A12,A)') &
657 ' |',
'VARNAME ',
'|', &
658 'DESCRIPTION ',
'[',
'UNIT ',
']'
660 log_info_cont(
'(1x,A,I3,A,A24,A,A48,A,A12,A)') &
661 'NO.',iv,
'|',pv_info(iv)%NAME,
'|', pv_info(iv)%DESC,
'[', pv_info(iv)%UNIT,
']'
664 log_info_cont(
'(1x,A,I3,A,A24,A,A48,A,A12,A)') &
673 log_info(
"ATMOS_vars_setup",*)
'Restart input? : NO'
680 log_info(
"ATMOS_vars_setup",*)
'Restart output? : NO'
688 if ( atmos_vars_checkcfl_hard > 0.0_rp )
then
689 atmos_vars_checkcfl_soft = min( atmos_vars_checkcfl_soft, atmos_vars_checkcfl_hard )
694 log_info(
"ATMOS_vars_setup",*)
'Check value range of variables? : ', atmos_vars_checkrange
695 if ( atmos_vars_checkcfl_soft > 0.0_rp )
then
696 log_info(
"ATMOS_vars_setup",*)
'Threshold of Courant number to warn : ', atmos_vars_checkcfl_soft
698 log_info(
"ATMOS_vars_setup",*)
'Threshold of Courant number to warn : disabled'
700 if ( atmos_vars_checkcfl_hard > 0.0_rp )
then
701 log_info(
"ATMOS_vars_setup",*)
'Threshold of Courant number to stop : ', atmos_vars_checkcfl_hard
703 log_info(
"ATMOS_vars_setup",*)
'Threshold of Courant number to stop : disabled'
720 allocate( zero(
ka,
ia,
ja) )
758 dv_calculated(dv_nmax) = .false.
761 allocate( qp_hist_id( max(
qa,1) ) )
762 allocate( qp_monit_id( max(
qa,1) ) )
772 call file_history_reg( pv_info(iv)%NAME, pv_info(iv)%DESC, pv_info(iv)%UNIT, pv_hist_id(iv), dim_type=pv_info(iv)%dim_type, standard_name=pv_info(iv)%STDNAME )
780 call file_history_reg( dv_info(iv)%NAME, dv_info(iv)%DESC, dv_info(iv)%UNIT, dv_hist_id(iv), dim_type=dv_info(iv)%dim_type, standard_name=dv_info(iv)%STDNAME )
783 call file_history_reg(
"GPH",
"geopotential height",
"m", hist_id_gph, dim_type=
'ZXY', standard_name=
"geopotential_height" )
788 call monitor_reg( pv_info(iv)%NAME, pv_info(iv)%DESC, trim(pv_info(iv)%UNIT)//
"*m3", &
790 dim_type=pv_info(iv)%dim_type, is_tendency=.false. )
795 dim_type=
'ZXY', is_tendency=.false. )
799 dv_monit_id(im_qdry), &
800 dim_type=
'ZXY', is_tendency=.false. )
802 dv_monit_id(im_qtot), &
803 dim_type=
'ZXY', is_tendency=.false. )
804 call monitor_reg(
'EVAP',
'evaporation at the surface',
'kg', &
805 dv_monit_id(im_evap), &
806 dim_type=
'XY', is_tendency=.true. )
808 dv_monit_id(im_prec), &
809 dim_type=
'XY', is_tendency=.true. )
812 dv_monit_id(im_engt), &
813 dim_type=
'ZXY', is_tendency=.false. )
814 call monitor_reg(
'ENGP',
'potential energy',
'J', &
815 dv_monit_id(im_engp), &
816 dim_type=
'ZXY', is_tendency=.false. )
818 dv_monit_id(im_engk), &
819 dim_type=
'ZXY', is_tendency=.false. )
820 call monitor_reg(
'ENGI',
'internal energy',
'J', &
821 dv_monit_id(im_engi), &
822 dim_type=
'ZXY', is_tendency=.false. )
824 call monitor_reg(
'ENGFLXT',
'total energy flux convergence',
'J', &
825 dv_monit_id(im_engflxt), &
826 dim_type=
'XY', is_tendency=.true. )
827 call monitor_reg(
'ENGSFC_SH',
'SFC sensible heat flux',
'J', &
828 dv_monit_id(im_engsfc_sh), &
829 dim_type=
'XY', is_tendency=.true. )
830 call monitor_reg(
'ENGSFC_LH',
'SFC latent heat flux',
'J', &
831 dv_monit_id(im_engsfc_lh), &
832 dim_type=
'XY', is_tendency=.true. )
833 call monitor_reg(
'ENGSFC_EVAP',
'SFC internal energy flux of the evapolation',
'J', &
834 dv_monit_id(im_engsfc_evap), &
835 dim_type=
'XY', is_tendency=.true. )
836 call monitor_reg(
'ENGSFC_PREC',
'SFC internal energy flux of the precipitation',
'J', &
837 dv_monit_id(im_engsfc_prec), &
838 dim_type=
'XY', is_tendency=.true. )
839 call monitor_reg(
'ENGSFC_RD',
'SFC net radiation flux',
'J', &
840 dv_monit_id(im_engsfc_rd), &
841 dim_type=
'XY', is_tendency=.true. )
842 call monitor_reg(
'ENGTOM_RD',
'TOM net radiation flux',
'J', &
843 dv_monit_id(im_engtom_rd), &
844 dim_type=
'XY', is_tendency=.true. )
846 call monitor_reg(
'ENGSFC_LW_up',
'SFC LW upward flux',
'J', &
847 dv_monit_id(im_engsfc_lw_up), &
848 dim_type=
'XY', is_tendency=.true. )
849 call monitor_reg(
'ENGSFC_LW_dn',
'SFC LW downward flux',
'J', &
850 dv_monit_id(im_engsfc_lw_dn), &
851 dim_type=
'XY', is_tendency=.true. )
852 call monitor_reg(
'ENGSFC_SW_up',
'SFC SW upward flux',
'J', &
853 dv_monit_id(im_engsfc_sw_up), &
854 dim_type=
'XY', is_tendency=.true. )
855 call monitor_reg(
'ENGSFC_SW_dn',
'SFC SW downward flux',
'J', &
856 dv_monit_id(im_engsfc_sw_dn), &
857 dim_type=
'XY', is_tendency=.true. )
859 call monitor_reg(
'ENGTOM_LW_up',
'TOM LW upward flux',
'J', &
860 dv_monit_id(im_engtom_lw_up), &
861 dim_type=
'XY', is_tendency=.true. )
862 call monitor_reg(
'ENGTOM_LW_dn',
'TOM LW downward flux',
'J', &
863 dv_monit_id(im_engtom_lw_dn), &
864 dim_type=
'XY', is_tendency=.true. )
865 call monitor_reg(
'ENGTOM_SW_up',
'TOM SW upward flux',
'J', &
866 dv_monit_id(im_engtom_sw_up), &
867 dim_type=
'XY', is_tendency=.true. )
868 call monitor_reg(
'ENGTOM_SW_dn',
'TOM SW downward flux',
'J', &
869 dv_monit_id(im_engtom_sw_dn), &
870 dim_type=
'XY', is_tendency=.true. )
884 logical,
intent(in),
optional :: fill_bnd
891 if (
present(fill_bnd) ) fill_bnd_ = fill_bnd
925 call comm_vars8(
dens(:,:,:), 1 )
926 call comm_vars8(
momz(:,:,:), 2 )
927 call comm_vars8(
momx(:,:,:), 3 )
928 call comm_vars8(
momy(:,:,:), 4 )
929 call comm_vars8(
rhot(:,:,:), 5 )
930 call comm_wait (
dens(:,:,:), 1, fill_bnd_ )
931 call comm_wait (
momz(:,:,:), 2, fill_bnd_ )
932 call comm_wait (
momx(:,:,:), 3, fill_bnd_ )
933 call comm_wait (
momy(:,:,:), 4, fill_bnd_ )
934 call comm_wait (
rhot(:,:,:), 5, fill_bnd_ )
937 call comm_vars8(
qtrc(:,:,:,iq), iq )
940 call comm_wait (
qtrc(:,:,:,iq), iq, fill_bnd_ )
957 file_cartesc_check_coordinates
994 character(len=19) :: timelabel
995 character(len=H_LONG) :: basename
999 log_info(
"ATMOS_vars_restart_open",*)
'Open restart file (ATMOS) '
1012 log_info(
"ATMOS_vars_restart_open",*)
'basename: ', trim(basename)
1016 if ( atmos_restart_in_check_coordinates )
then
1017 call file_cartesc_check_coordinates( restart_fid, atmos=.true. )
1021 log_error(
"ATMOS_vars_restart_open",*)
'restart file for atmosphere is not specified. STOP!'
1072 file_cartesc_read, &
1115 if ( restart_fid /= -1 )
then
1117 log_info(
"ATMOS_vars_restart_read",*)
'Read from restart file (ATMOS) '
1119 call file_cartesc_read( restart_fid, pv_info(
i_dens)%NAME,
'ZXY', &
1121 call file_cartesc_read( restart_fid, pv_info(
i_momz)%NAME,
'ZHXY', &
1123 call file_cartesc_read( restart_fid, pv_info(
i_momx)%NAME,
'ZXHY', &
1125 call file_cartesc_read( restart_fid, pv_info(
i_momy)%NAME,
'ZXYH', &
1127 call file_cartesc_read( restart_fid, pv_info(
i_rhot)%NAME,
'ZXY', &
1131 call file_cartesc_read( restart_fid,
tracer_name(iq),
'ZXY', &
1168 log_error(
"ATMOS_vars_restart_read",*)
'invalid restart file ID for atmosphere. STOP!'
1224 real(
rp) :: sfc_dens(
ia,
ja)
1225 real(
rp) :: sfc_pres(
ia,
ja)
1235 sfc_dens(:,:), sfc_pres(:,:) )
1257 file_cartesc_read, &
1269 character(len=H_LONG) :: basename
1271 logical :: datacheck
1272 integer ::
k, i,
j, iq
1286 call file_cartesc_read( fid,
'DENS',
'ZXY' , dens_check(:,:,:) )
1287 call file_cartesc_read( fid,
'MOMZ',
'ZHXY', momz_check(:,:,:) )
1288 call file_cartesc_read( fid,
'MOMX',
'ZXHY', momx_check(:,:,:) )
1289 call file_cartesc_read( fid,
'MOMY',
'ZXYH', momy_check(:,:,:) )
1290 call file_cartesc_read( fid,
'RHOT',
'ZXY' , rhot_check(:,:,:) )
1292 call file_cartesc_read( fid,
tracer_name(iq),
'ZXY', qtrc_check(:,:,:,iq) )
1303 log_error(
"ATMOS_vars_restart_check",*)
'there is the difference : ',
dens(
k,i,
j)-dens_check(
k,i,
j)
1304 log_error_cont(*)
'at (PE-id,k,i,j,varname) : ',
prc_myrank,
k, i,
j,
'DENS'
1316 log_error(
"ATMOS_vars_restart_check",*)
'there is the difference : ',
momz(
k,i,
j)-momz_check(
k,i,
j)
1317 log_error_cont(*)
'at (PE-id,k,i,j,varname) : ',
prc_myrank,
k, i,
j,
'MOMZ'
1329 log_error(
"ATMOS_vars_restart_check",*)
'there is the difference : ',
momx(
k,i,
j)-momx_check(
k,i,
j)
1330 log_error_cont(*)
'at (PE-id,k,i,j,varname) : ',
prc_myrank,
k, i,
j,
'MOMX'
1342 log_error(
"ATMOS_vars_restart_check",*)
'there is the difference : ',
momy(
k,i,
j)-momy_check(
k,i,
j)
1343 log_error_cont(*)
'at (PE-id,k,i,j,varname) : ',
prc_myrank,
k, i,
j,
'MOMY'
1355 log_error(
"ATMOS_vars_restart_check",*)
'there is the difference : ',
rhot(
k,i,
j)-rhot_check(
k,i,
j)
1356 log_error_cont(*)
'at (PE-id,k,i,j,varname) : ',
prc_myrank,
k, i,
j,
'RHOT'
1369 log_error(
"ATMOS_vars_restart_check",*)
'there is the difference : ',
qtrc(
k,i,
j,iq)-qtrc_check(
k,i,
j,iq)
1379 log_info(
"ATMOS_vars_restart_check",*)
'Data Check Clear.'
1381 log_info(
"ATMOS_vars_restart_check",*)
'Data Check Failed. See std. output.'
1382 log_error(
"ATMOS_vars_restart_check",*)
'Data Check Failed.'
1394 file_history_query, &
1411 call file_history_put ( pv_hist_id(
i_dens),
dens(:,:,:) )
1412 call file_history_put ( pv_hist_id(
i_momz),
momz(:,:,:) )
1413 call file_history_put ( pv_hist_id(
i_momx),
momx(:,:,:) )
1414 call file_history_put ( pv_hist_id(
i_momy),
momy(:,:,:) )
1415 call file_history_put ( pv_hist_id(
i_rhot),
rhot(:,:,:) )
1417 call file_history_put ( qp_hist_id(iq),
qtrc(:,:,:,iq) )
1422 call file_history_put ( dv_hist_id(i_w ),
w(:,:,:) )
1423 call file_history_put ( dv_hist_id(i_u ),
u(:,:,:) )
1424 call file_history_put ( dv_hist_id(i_v ),
v(:,:,:) )
1425 call file_history_put ( dv_hist_id(i_pott ),
pott(:,:,:) )
1426 call file_history_put ( dv_hist_id(i_temp ),
temp(:,:,:) )
1427 call file_history_put ( dv_hist_id(i_pres ),
pres(:,:,:) )
1429 call file_history_put ( dv_hist_id(i_exner),
exner(:,:,:) )
1430 call file_history_put ( dv_hist_id(i_phyd ),
phyd(:,:,:) )
1432 call file_history_put ( dv_hist_id(i_qdry ),
qdry(:,:,:) )
1433 call file_history_put ( dv_hist_id(i_rtot ),
rtot(:,:,:) )
1434 call file_history_put ( dv_hist_id(i_cvtot),
cvtot(:,:,:) )
1435 call file_history_put ( dv_hist_id(i_cptot),
cptot(:,:,:) )
1437 do iv = i_cptot+1, dv_nmax
1438 if ( dv_hist_id(iv) > 0 )
then
1439 call file_history_query( dv_hist_id(iv), do_put )
1442 select case( dv_info(iv)%ndims )
1444 call atmos_vars_get_diagnostic( dv_info(iv)%NAME, work3d(:,:,:) )
1445 call file_history_put( dv_hist_id(iv), work3d(:,:,:) )
1447 call atmos_vars_get_diagnostic( dv_info(iv)%NAME, work2d(:,:) )
1448 call file_history_put( dv_hist_id(iv), work2d(:,:) )
1450 call atmos_vars_get_diagnostic( dv_info(iv)%NAME, work1d(:) )
1451 call file_history_put( dv_hist_id(iv), work1d(:) )
1457 call file_history_put( hist_id_gph, real_cz(:,:,:) )
1508 logical,
intent(in),
optional :: force
1513 character(len=H_SHORT) :: wname(3)
1516 integer ::
k, i,
j, iq
1522 if (
present(force) )
then
1525 check = atmos_vars_checkrange
1531 dens(:,:,:), 0.0_rp, 2.0_rp, pv_info(
i_dens)%NAME, __file__, __line__ )
1533 momz(:,:,:), -200.0_rp, 200.0_rp, pv_info(
i_momz)%NAME, __file__, __line__ )
1535 momx(:,:,:), -200.0_rp, 200.0_rp, pv_info(
i_momx)%NAME, __file__, __line__ )
1537 momy(:,:,:), -200.0_rp, 200.0_rp, pv_info(
i_momy)%NAME, __file__, __line__ )
1539 rhot(:,:,:), 0.0_rp, 1000.0_rp, pv_info(
i_rhot)%NAME, __file__, __line__ )
1544 work(:,:,:,1) =
w(:,:,:)
1548 work(:,:,:,2) =
u(:,:,:)
1552 work(:,:,:,3) =
v(:,:,:)
1560 call statistics_detail(
ka,
ks,
ke,
ia,
is,
ie,
ja,
js,
je, 3, &
1561 wname(:), work(:,:,:,:) )
1564 if (
present(force) )
then
1574 atmos_grid_cartesc_real_vol(:,:,:), &
1575 atmos_grid_cartesc_real_totvol )
1578 atmos_grid_cartesc_real_volwxy(:,:,:), &
1579 atmos_grid_cartesc_real_totvolwxy )
1582 atmos_grid_cartesc_real_volzuy(:,:,:), &
1583 atmos_grid_cartesc_real_totvolzuy )
1586 atmos_grid_cartesc_real_volzxv(:,:,:), &
1587 atmos_grid_cartesc_real_totvolzxv )
1590 atmos_grid_cartesc_real_vol(:,:,:), &
1591 atmos_grid_cartesc_real_totvol )
1600 atmos_grid_cartesc_real_vol(:,:,:), &
1601 atmos_grid_cartesc_real_totvol )
1611 rhoq(:,:,:),
'QDRY', &
1612 atmos_grid_cartesc_real_vol(:,:,:), &
1613 atmos_grid_cartesc_real_totvol )
1619 rhoq(:,:,:),
'QTOT', &
1620 atmos_grid_cartesc_real_vol(:,:,:), &
1621 atmos_grid_cartesc_real_totvol )
1624 call atmos_vars_get_diagnostic(
'ENGT', work3d(:,:,:) )
1626 work3d(:,:,:),
'ENGT', &
1627 atmos_grid_cartesc_real_vol(:,:,:), &
1628 atmos_grid_cartesc_real_totvol )
1629 call atmos_vars_get_diagnostic(
'ENGP', work3d(:,:,:) )
1631 work3d(:,:,:),
'ENGP', &
1632 atmos_grid_cartesc_real_vol(:,:,:), &
1633 atmos_grid_cartesc_real_totvol )
1634 call atmos_vars_get_diagnostic(
'ENGK', work3d(:,:,:) )
1636 work3d(:,:,:),
'ENGK', &
1637 atmos_grid_cartesc_real_vol(:,:,:), &
1638 atmos_grid_cartesc_real_totvol )
1639 call atmos_vars_get_diagnostic(
'ENGI', work3d(:,:,:) )
1641 work3d(:,:,:),
'ENGI', &
1642 atmos_grid_cartesc_real_vol(:,:,:), &
1643 atmos_grid_cartesc_real_totvol )
1650 .AND. ( atmos_vars_checkcfl_soft > 0.0_rp .OR. atmos_vars_checkcfl_hard > 0.0_rp ) )
then
1654 work(:,:,:,:) = 0.0_rp
1676 work(
k,
is,
j,2) = 0.0_rp
1701 cflmax = max( cflmax, work(
k,i,
j,iq) )
1708 if ( atmos_vars_checkcfl_hard > 0.0_rp .AND. cflmax > atmos_vars_checkcfl_hard )
then
1709 log_info(
"ATMOS_vars_check",*)
"Courant number =", cflmax,
" exceeded the hard limit =", atmos_vars_checkcfl_hard
1710 log_error(
"ATMOS_vars_check",*)
"Courant number =", cflmax,
" exceeded the hard limit =", atmos_vars_checkcfl_hard
1712 log_error_cont(*)
"Please set ATMOS_VARS_CHECKCFL_HARD in the namelist PARAM_ATMOS_VARS when you want to change the limit."
1714 wname(1) =
"Courant num. Z"
1715 wname(2) =
"Courant num. X"
1716 wname(3) =
"Courant num. Y"
1717 call statistics_detail(
ka,
ks,
ke,
ia,
is,
ie,
ja,
js,
je, 3, &
1718 wname(:), work(:,:,:,:), &
1724 if ( atmos_vars_checkcfl_soft > 0.0_rp .AND. cflmax > atmos_vars_checkcfl_soft )
then
1725 log_info(
"ATMOS_vars_check",*)
"Courant number =", cflmax,
" exceeded the soft limit =", atmos_vars_checkcfl_soft
1726 log_error(
"ATMOS_vars_check",*)
"Courant number =", cflmax,
" exceeded the soft limit =", atmos_vars_checkcfl_soft
1729 wname(1) =
"Courant num. Z"
1730 wname(2) =
"Courant num. X"
1731 wname(3) =
"Courant num. Y"
1732 call statistics_detail(
ka,
ks,
ke,
ia,
is,
ie,
ja,
js,
je, 3, &
1733 wname(:), work(:,:,:,:), &
1751 atmos_thermodyn_specific_heat
1773 call atmos_thermodyn_specific_heat( &
1774 ka,
ks,
ke,
ia, 1,
ia,
ja, 1,
ja,
qa, &
1777 qdry(:,:,:),
rtot(:,:,:),
cvtot(:,:,:),
cptot(:,:,:) )
1781 dens_av(:,:,:),
momz_av(:,:,:),
momx_av(:,:,:),
momy_av(:,:,:), &
1782 w(:,:,:),
u(:,:,:),
v(:,:,:) )
1788 pott(:,:,:),
temp(:,:,:),
pres(:,:,:),
exner(:,:,:) )
1793 real_cz(:,:,:), real_fz(:,:,:), &
1801 dens_av(:,:,:),
temp(:,:,:),
qtrc_av(:,:,:,:), &
1804 call comm_vars8(
qe(:,:,:,iq), iq)
1807 call comm_wait (
qe(:,:,:,iq), iq)
1812 dv_calculated(:) = .false.
1848 atmos_hydrometeor_lhv, &
1849 atmos_hydrometeor_lhf, &
1850 atmos_hydrometeor_lhs
1852 atmos_saturation_dens2qsat_all, &
1853 atmos_saturation_psat_all, &
1854 atmos_saturation_psat_liq, &
1855 atmos_saturation_psat_ice, &
1856 atmos_saturation_tdew_liq, &
1857 atmos_saturation_pote
1863 character(len=*),
intent(in) :: vname
1864 real(
rp),
intent(out) :: var(:,:,:)
1871 integer ::
k, i,
j, iq
1875 select case ( vname )
1879 var(:,:,:) =
w(:,:,:)
1886 var(:,:,:) =
u(:,:,:)
1893 var(:,:,:) =
v(:,:,:)
1900 var(:,:,:) =
pott(:,:,:)
1907 var(:,:,:) =
temp(:,:,:)
1914 var(:,:,:) =
exner(:,:,:)
1921 var(:,:,:) =
phyd(:,:,:)
1928 var(:,:,:) =
qdry(:,:,:)
1935 var(:,:,:) =
rtot(:,:,:)
1942 var(:,:,:) =
cvtot(:,:,:)
1949 var(:,:,:) =
cptot(:,:,:)
1954 if ( .not. dv_calculated(i_lhv) )
then
1956 call atmos_hydrometeor_lhv( &
1960 dv_calculated(i_lhv) = .true.
1969 if ( .not. dv_calculated(i_lhs) )
then
1971 call atmos_hydrometeor_lhs( &
1975 dv_calculated(i_lhs) = .true.
1984 if ( .not. dv_calculated(i_lhf) )
then
1986 call atmos_hydrometeor_lhf( &
1990 dv_calculated(i_lhf) = .true.
1999 if ( .not. dv_calculated(i_potv) )
then
2005 dv_calculated(i_potv) = .true.
2014 if ( .not. dv_calculated(i_teml) )
then
2016 call atmos_vars_get_diagnostic(
'LHV', work3d(:,:,:) )
2017 call atmos_vars_get_diagnostic(
'LHS', work3d(:,:,:) )
2018 call atmos_vars_get_diagnostic(
'QLIQ', work3d(:,:,:) )
2019 call atmos_vars_get_diagnostic(
'QICE', work3d(:,:,:) )
2022 temp(:,:,:),
lhv(:,:,:), lhs(:,:,:), &
2025 dv_calculated(i_teml) = .true.
2035 if ( .not. dv_calculated(i_potl) )
then
2037 call atmos_vars_get_diagnostic(
'TEML', work3d(:,:,:) )
2053 dv_calculated(i_potl) = .true.
2062 if ( .not. dv_calculated(i_pote) )
then
2064 call atmos_saturation_pote( &
2066 dens(:,:,:),
pott(:,:,:),
temp(:,:,:),
qv(:,:,:), &
2076 if ( .not. dv_calculated(i_qtot) )
then
2079 call atmos_vars_get_diagnostic(
'QHYD', work3d(:,:,:) )
2090 qtot(
k,i,
j) =
qv(
k,i,
j) + qhyd(
k,i,
j)
2105 qtot(
k,i,
j) = 0.0_rp
2111 dv_calculated(i_qtot) = .true.
2120 if ( .not. dv_calculated(i_qhyd) )
then
2123 call atmos_vars_get_diagnostic(
'QLIQ', work3d(:,:,:) )
2124 call atmos_vars_get_diagnostic(
'QICE', work3d(:,:,:) )
2135 qhyd(
k,i,
j) = qliq(
k,i,
j) + qice(
k,i,
j)
2150 qhyd(
k,i,
j) = 0.0_rp
2156 dv_calculated(i_qhyd) = .true.
2165 if ( .not. dv_calculated(i_qliq) )
then
2182 dv_calculated(i_qliq) = .true.
2191 if ( .not. dv_calculated(i_qice) )
then
2203 qice(
k,i,
j) =
qi(
k,i,
j) +
qs(
k,i,
j) +
qg(
k,i,
j) +
qh(
k,i,
j)
2208 dv_calculated(i_qice) = .true.
2217 if ( .not. dv_calculated(i_qsat) )
then
2219 call atmos_saturation_dens2qsat_all( &
2223 dv_calculated(i_qsat) = .true.
2232 if ( .not. dv_calculated(i_rha) )
then
2235 call atmos_saturation_psat_all( &
2250 / work(
k,i,
j) * rvap *
temp(
k,i,
j) &
2272 dv_calculated(i_rha) = .true.
2280 case (
'RHL',
'RH' )
2281 if ( .not. dv_calculated(i_rhl) )
then
2284 call atmos_saturation_psat_liq( &
2299 / work(
k,i,
j) * rvap *
temp(
k,i,
j) &
2321 dv_calculated(i_rhl) = .true.
2330 if ( .not. dv_calculated(i_rhi) )
then
2333 call atmos_saturation_psat_ice( &
2348 / work(
k,i,
j) * rvap *
temp(
k,i,
j) &
2370 dv_calculated(i_rhi) = .true.
2379 if ( .not. dv_calculated(i_vor) )
then
2407 vor(
k,
is,1 ) = vor(
k,
is,2 )
2444 vor(
k,i,
j) = ( vh(
k,i,
j ) - vh(
k,i-1,
j ) ) * rcdx(i) &
2445 - ( uh(
k,i ,
j) - uh(
k,i ,
j-1) ) * rcdy(
j)
2454 vor(
k,1 ,
j) = vor(
k,2 ,
j)
2463 vor(
k,i,1 ) = vor(
k,i,2 )
2464 vor(
k,i,
ja) = vor(
k,i,
ja-1)
2469 dv_calculated(i_vor) = .true.
2471 call comm_vars8( vor(:,:,:), 1 )
2472 call comm_wait ( vor(:,:,:), 1, .false. )
2480 if ( .not. dv_calculated(i_div) )
then
2482 call atmos_vars_get_diagnostic(
'HDIV', work3d(:,:,:) )
2491 div(
k,i,
j) = (
momz_av(
k,i,
j) -
momz_av(
k-1,i ,
j ) ) / ( real_fz(
k,i,
j)-real_fz(
k-1,i,
j) ) &
2497 dv_calculated(i_div) = .true.
2506 if ( .not. dv_calculated(i_hdiv) )
then
2523 hdiv(
k,
is,1) = hdiv(
k,
is,2)
2544 hdiv(
k,i,1) = hdiv(
k,i,2)
2552 hdiv(
k,1,
j) = hdiv(
k,2,
j)
2557 call comm_vars8( hdiv(:,:,:), 1 )
2558 call comm_wait ( hdiv(:,:,:), 1, .false. )
2559 dv_calculated(i_hdiv) = .true.
2568 if ( .not. dv_calculated(i_uabs) )
then
2577 uabs(
k,i,
j) = sqrt(
w(
k,i,
j)**2 +
u(
k,i,
j)**2 +
v(
k,i,
j)**2 )
2582 dv_calculated(i_uabs) = .true.
2591 if ( .not. dv_calculated(i_n2) )
then
2596 real_cz(:,:,:), real_fz(:,:,:), &
2599 dv_calculated(i_n2) = .true.
2608 if ( .not. dv_calculated(i_mse) )
then
2610 call atmos_vars_get_diagnostic(
'LHV', work3d(:,:,:) )
2619 + grav * ( real_cz(
k,i,
j) - real_fz(
ks-1,i,
j) ) &
2625 dv_calculated(i_mse) = .true.
2634 if ( .not. dv_calculated(i_tdew) )
then
2636 call atmos_saturation_tdew_liq(
ka,
ks,
ke,
ia, 1,
ia,
ja, 1,
ja, &
2639 dv_calculated(i_tdew) = .true.
2648 if ( .not. dv_calculated(i_engp) )
then
2661 dv_calculated(i_engp) = .true.
2670 if ( .not. dv_calculated(i_engk) )
then
2679 * (
w(
k,i,
j)**2 +
u(
k,i,
j)**2 +
v(
k,i,
j)**2 )
2684 dv_calculated(i_engk) = .true.
2693 if ( .not. dv_calculated(i_engi) )
then
2704 engi(
k,i,
j) = engi(
k,i,
j) &
2711 dv_calculated(i_engi) = .true.
2720 if ( .not. dv_calculated(i_engt) )
then
2722 call atmos_vars_get_diagnostic(
'ENGP', work3d(:,:,:) )
2723 call atmos_vars_get_diagnostic(
'ENGK', work3d(:,:,:) )
2724 call atmos_vars_get_diagnostic(
'ENGI', work3d(:,:,:) )
2731 engt(
k,i,
j) = engp(
k,i,
j) + engk(
k,i,
j) + engi(
k,i,
j)
2736 dv_calculated(i_engt) = .true.
2744 case (
'DENS_PRIM' )
2745 if ( .not. dv_calculated(i_dens_prim) )
then
2747 call atmos_vars_get_diagnostic(
'DENS_MEAN', work1d(:) )
2760 dv_calculated(i_dens_prim) = .true.
2764 var(
ks:
ke,:,:) = dens_prim(
ks:
ke,:,:)
2769 if ( .not. dv_calculated(i_w_prim) )
then
2771 call atmos_vars_get_diagnostic(
'W_MEAN', work1d(:) )
2779 w_prim(
k,i,
j) =
w(
k,i,
j) - w_mean(
k)
2784 dv_calculated(i_w_prim) = .true.
2793 if ( .not. dv_calculated(i_u_prim) )
then
2795 call atmos_vars_get_diagnostic(
'U_MEAN', work1d(:) )
2803 u_prim(
k,i,
j) =
u(
k,i,
j) - u_mean(
k)
2808 dv_calculated(i_u_prim) = .true.
2817 if ( .not. dv_calculated(i_v_prim) )
then
2819 call atmos_vars_get_diagnostic(
'V_MEAN', work1d(:) )
2827 v_prim(
k,i,
j) =
v(
k,i,
j) - v_mean(
k)
2832 dv_calculated(i_v_prim) = .true.
2841 if ( .not. dv_calculated(i_pt_prim) )
then
2843 call atmos_vars_get_diagnostic(
'PT_MEAN', work1d(:) )
2851 pt_prim(
k,i,
j) =
pott(
k,i,
j) - pt_mean(
k)
2856 dv_calculated(i_pt_prim) = .true.
2860 var(
ks:
ke,:,:) = pt_prim(
ks:
ke,:,:)
2865 if ( .not. dv_calculated(i_w_prim2) )
then
2867 call atmos_vars_get_diagnostic(
'W_PRIM', work3d(:,:,:) )
2875 w_prim2(
k,i,
j) = w_prim(
k,i,
j)**2
2880 dv_calculated(i_w_prim2) = .true.
2884 var(
ks:
ke,:,:) = w_prim2(
ks:
ke,:,:)
2888 case (
'PT_W_PRIM' )
2889 if ( .not. dv_calculated(i_pt_w_prim) )
then
2891 call atmos_vars_get_diagnostic(
'W_PRIM', work3d(:,:,:) )
2892 call atmos_vars_get_diagnostic(
'PT_PRIM', work3d(:,:,:) )
2899 pt_w_prim(
k,i,
j) = w_prim(
k,i,
j) * pt_prim(
k,i,
j) *
dens_av(
k,i,
j) * cpdry
2904 dv_calculated(i_pt_w_prim) = .true.
2908 var(
ks:
ke,:,:) = pt_w_prim(
ks:
ke,:,:)
2913 if ( .not. dv_calculated(i_w_prim3) )
then
2915 call atmos_vars_get_diagnostic(
'W_PRIM', work3d(:,:,:) )
2923 w_prim3(
k,i,
j) = w_prim(
k,i,
j)**3
2928 dv_calculated(i_w_prim3) = .true.
2932 var(
ks:
ke,:,:) = w_prim3(
ks:
ke,:,:)
2937 if ( .not. dv_calculated(i_tke_rs) )
then
2939 call atmos_vars_get_diagnostic(
'W_PRIM', work3d(:,:,:) )
2940 call atmos_vars_get_diagnostic(
'U_PRIM', work3d(:,:,:) )
2941 call atmos_vars_get_diagnostic(
'V_PRIM', work3d(:,:,:) )
2949 tke_rs(
k,i,
j) = 0.5_rp * ( w_prim(
k,i,
j)**2 + u_prim(
k,i,
j)**2 + v_prim(
k,i,
j)**2 )
2954 dv_calculated(i_tke_rs) = .true.
2963 if ( .not. dv_calculated(i_velz) )
then
2971 velz(
ks-1,i,
j) = 0.0_rp
2976 velz(
ke,i,
j) = 0.0_rp
2980 dv_calculated(i_velz) = .true.
2984 var(
ks-1:
ke,:,:) = velz(
ks-1:
ke,:,:)
2989 if ( .not. dv_calculated(i_velx) )
then
3025 call comm_vars8( velx(:,:,:), 1 )
3026 call comm_wait ( velx(:,:,:), 1, .false. )
3028 dv_calculated(i_velx) = .true.
3037 if ( .not. dv_calculated(i_vely) )
then
3061 call comm_vars8( vely(:,:,:), 1 )
3062 call comm_wait ( vely(:,:,:), 1, .false. )
3063 dv_calculated(i_vely) = .true.
3072 if ( .not. dv_calculated(i_umet) )
then
3081 umet(
k,i,
j) =
u(
k,i,
j) * rotc(i,
j,1) -
v(
k,i,
j) * rotc(i,
j,2)
3086 dv_calculated(i_umet) = .true.
3095 if ( .not. dv_calculated(i_vmet) )
then
3104 vmet(
k,i,
j) =
u(
k,i,
j) * rotc(i,
j,2) +
v(
k,i,
j) * rotc(i,
j,1)
3109 dv_calculated(i_vmet) = .true.
3118 log_error(
"ATMOS_vars_calc_diagnostics",*)
'name is invalid for ATMOS_vars_get_diagnostic_3D: ', trim(vname)
3147 character(len=*),
intent(in) :: vname
3148 real(
rp),
intent(out) :: var(:,:)
3150 real(
rp) :: fact, sum
3156 select case ( vname )
3158 if ( .not. dv_calculated(i_lwp) )
then
3160 call atmos_vars_get_diagnostic(
'QLIQ', work3d(:,:,:) )
3172 + qliq(
k,i,
j) *
dens_av(
k,i,
j) * ( real_fz(
k,i,
j)-real_fz(
k-1,i,
j) ) * 1.e3_rp
3178 dv_calculated(i_lwp) = .true.
3187 if ( .not. dv_calculated(i_iwp) )
then
3189 call atmos_vars_get_diagnostic(
'QICE', work3d(:,:,:) )
3202 + qice(
k,i,
j) *
dens_av(
k,i,
j) * ( real_fz(
k,i,
j)-real_fz(
k-1,i,
j) ) * 1.e3_rp
3208 dv_calculated(i_iwp) = .true.
3217 if ( .not. dv_calculated(i_pw) )
then
3237 dv_calculated(i_pw) = .true.
3246 if ( .not. dv_calculated(i_pblh) )
then
3248 call atmos_vars_get_diagnostic(
'POTV', work3d(:,:,:) )
3259 pblh(i,
j) = real_cz(
ks,i,
j) - real_fz(
ks-1,i,
j)
3261 if ( potv(
k,i,
j) > potv(
ks,i,
j) )
then
3262 fact = ( potv(
ks,i,
j) - potv(
k-1,i,
j) ) &
3263 / ( potv(
k,i,
j) - potv(
k-1,i,
j) )
3264 pblh(i,
j) = real_cz(
k-1,i,
j) - real_fz(
ks-1,i,
j) &
3265 + fact * ( real_cz(
k,i,
j) - real_cz(
k-1,i,
j) )
3273 dv_calculated(i_pblh) = .true.
3277 var(:,:) = pblh(:,:)
3281 case (
'CAPE',
'CIN',
'LCL',
'LFC',
'LNB' )
3282 if ( .not. dv_calculated(i_cape) )
then
3288 call atmos_adiabat_cape( &
3292 qv(:,:,:),
qc(:,:,:),
qdry(:,:,:), &
3294 real_cz(:,:,:), real_fz(:,:,:), &
3295 cape(:,:), cin(:,:), lcl(:,:), lfc(:,:), lnb(:,:) )
3296 dv_calculated(i_cape) = .true.
3298 select case ( vname )
3304 var(i,
j) = cape(i,
j)
3356 case (
'RAIN',
'SNOW' )
3357 if ( .not. dv_calculated(i_rain) )
then
3365 rain(i,
j) = sflx_rain_mp(i,
j) + sflx_rain_cp(i,
j)
3366 snow(i,
j) = sflx_snow_mp(i,
j) + sflx_snow_cp(i,
j)
3370 dv_calculated(i_rain) = .true.
3378 var(i,
j) = rain(i,
j)
3387 var(i,
j) = snow(i,
j)
3394 log_error(
"ATMOS_vars_calc_diagnostics",*)
'name is invalid for ATMOS_vars_get_diagnostic_2D: ', trim(vname)
3413 statistics_horizontal_mean
3418 character(len=*),
intent(in) :: vname
3419 real(
rp),
intent(out) :: var(:)
3427 select case ( vname )
3428 case (
'DENS_MEAN' )
3429 if ( .not. dv_calculated(i_dens_mean) )
then
3432 dens(:,:,:), area(:,:), dens_mean(:) )
3433 dv_calculated(i_dens_mean) = .true.
3436 var(:) = dens_mean(:)
3440 if ( .not. dv_calculated(i_w_mean) )
then
3442 call atmos_vars_get_diagnostic(
'DENS_MEAN', work1d(:) )
3455 work(:,:,:), area(:,:), w_mean(:) )
3459 w_mean(
k) = w_mean(
k) / dens_mean(
k)
3462 dv_calculated(i_w_mean) = .true.
3469 if ( .not. dv_calculated(i_u_mean) )
then
3471 call atmos_vars_get_diagnostic(
'DENS_MEAN', work1d(:) )
3484 work(:,:,:), area(:,:), u_mean(:) )
3488 u_mean(
k) = u_mean(
k) / dens_mean(
k)
3491 dv_calculated(i_u_mean) = .true.
3498 if ( .not. dv_calculated(i_v_mean) )
then
3500 call atmos_vars_get_diagnostic(
'DENS_MEAN', work1d(:) )
3513 work(:,:,:), area(:,:), v_mean(:) )
3517 v_mean(
k) = v_mean(
k) / dens_mean(
k)
3520 dv_calculated(i_v_mean) = .true.
3527 if ( .not. dv_calculated(i_pt_mean) )
then
3529 call atmos_vars_get_diagnostic(
'DENS_MEAN', work1d(:) )
3531 rhot(:,:,:), area(:,:), pt_mean(:) )
3535 pt_mean(
k) = pt_mean(
k) / dens_mean(
k)
3538 dv_calculated(i_pt_mean) = .true.
3545 if ( .not. dv_calculated(i_t_mean) )
then
3547 call atmos_vars_get_diagnostic(
'DENS_MEAN', work1d(:) )
3560 work(:,:,:), area(:,:), t_mean(:) )
3564 t_mean(
k) = t_mean(
k) / dens_mean(
k)
3567 dv_calculated(i_t_mean) = .true.
3574 if ( .not. dv_calculated(i_qv_mean) )
then
3577 call atmos_vars_get_diagnostic(
'DENS_MEAN', work1d(:) )
3590 work(:,:,:), area(:,:), qv_mean(:) )
3594 qv_mean(
k) = qv_mean(
k) / dens_mean(
k)
3605 dv_calculated(i_qv_mean) = .true.
3611 case (
'QHYD_MEAN' )
3612 if ( .not. dv_calculated(i_qhyd_mean) )
then
3614 call atmos_vars_get_diagnostic(
'DENS_MEAN', work1d(:) )
3615 call atmos_vars_get_diagnostic(
'QHYD', work3d(:,:,:) )
3628 work(:,:,:), area(:,:), qhyd_mean(:) )
3632 qhyd_mean(
k) = qhyd_mean(
k) / dens_mean(
k)
3635 dv_calculated(i_qhyd_mean) = .true.
3638 var(:) = qhyd_mean(:)
3641 case (
'QLIQ_MEAN' )
3642 if ( .not. dv_calculated(i_qliq_mean) )
then
3644 call atmos_vars_get_diagnostic(
'DENS_MEAN', work1d(:) )
3645 call atmos_vars_get_diagnostic(
'QLIQ', work3d(:,:,:) )
3658 work(:,:,:), area(:,:), qliq_mean(:) )
3662 qliq_mean(
k) = qliq_mean(
k) / dens_mean(
k)
3665 dv_calculated(i_qliq_mean) = .true.
3668 var(:) = qliq_mean(:)
3671 case (
'QICE_MEAN' )
3672 if ( .not. dv_calculated(i_qice_mean) )
then
3674 call atmos_vars_get_diagnostic(
'DENS_MEAN', work1d(:) )
3675 call atmos_vars_get_diagnostic(
'QICE', work3d(:,:,:) )
3688 work(:,:,:), area(:,:), qice_mean(:) )
3692 qice_mean(
k) = qice_mean(
k) / dens_mean(
k)
3695 dv_calculated(i_qice_mean) = .true.
3698 var(:) = qice_mean(:)
3702 log_error(
"ATMOS_vars_calc_diagnostics",*)
'name is invalid for ATMOS_vars_get_diagnostic_1D: ', trim(vname)
3736 real(
rp) :: engflxt (
ia,
ja)
3737 real(
rp) :: sflx_rd_net(
ia,
ja)
3738 real(
rp) :: tflx_rd_net(
ia,
ja)
3740 integer ::
k, i,
j, iq
3745 call monitor_put( pv_monit_id(
i_dens),
dens(:,:,:) )
3746 call monitor_put( pv_monit_id(
i_momz),
momz(:,:,:) )
3747 call monitor_put( pv_monit_id(
i_momx),
momx(:,:,:) )
3748 call monitor_put( pv_monit_id(
i_momy),
momy(:,:,:) )
3749 call monitor_put( pv_monit_id(
i_rhot),
rhot(:,:,:) )
3766 call monitor_put( qp_monit_id(iq), rhoq(:,:,:) )
3770 if ( dv_monit_id(im_qdry) > 0 )
then
3782 call monitor_put( dv_monit_id(im_qdry), rhoq(:,:,:) )
3786 if ( dv_monit_id(im_qtot) > 0 )
then
3787 call atmos_vars_get_diagnostic(
'QTOT', work3d(:,:,:) )
3799 call monitor_put( dv_monit_id(im_qtot), rhoq(:,:,:) )
3803 if ( moist )
call monitor_put( dv_monit_id(im_evap), sflx_qtrc(:,:,
i_qv) )
3806 if ( dv_monit_id(im_prec) > 0 )
then
3807 call monitor_put( dv_monit_id(im_prec),
prec(:,:) )
3813 if ( dv_monit_id(im_engt) > 0 )
then
3814 call atmos_vars_get_diagnostic(
'ENGT', work3d(:,:,:) )
3815 call monitor_put( dv_monit_id(im_engt), work3d(:,:,:) )
3817 if ( dv_monit_id(im_engp) > 0 )
then
3818 call atmos_vars_get_diagnostic(
'ENGP', work3d(:,:,:) )
3819 call monitor_put( dv_monit_id(im_engp), work3d(:,:,:) )
3821 if ( dv_monit_id(im_engk) > 0 )
then
3822 call atmos_vars_get_diagnostic(
'ENGK', work3d(:,:,:) )
3823 call monitor_put( dv_monit_id(im_engk), work3d(:,:,:) )
3825 if ( dv_monit_id(im_engi) > 0 )
then
3826 call atmos_vars_get_diagnostic(
'ENGI', work3d(:,:,:) )
3827 call monitor_put( dv_monit_id(im_engi), work3d(:,:,:) )
3836 sflx_rd_net(i,
j) = ( sflx_lw_up(i,
j) - sflx_lw_dn(i,
j) ) &
3837 + ( sflx_sw_up(i,
j) - sflx_sw_dn(i,
j) )
3839 tflx_rd_net(i,
j) = ( tomflx_lw_up(i,
j) - tomflx_lw_dn(i,
j) ) &
3840 + ( tomflx_sw_up(i,
j) - tomflx_sw_dn(i,
j) )
3842 engflxt(i,
j) = sflx_sh(i,
j) &
3844 + sflx_rd_net(i,
j) - tflx_rd_net(i,
j)
3849 call monitor_put( dv_monit_id(im_engflxt), engflxt(:,:) )
3851 call monitor_put( dv_monit_id(im_engsfc_sh), sflx_sh(:,:) )
3852 call monitor_put( dv_monit_id(im_engsfc_lh), sflx_lh(:,:) )
3853 call monitor_put( dv_monit_id(im_engsfc_evap), sflx_engi(:,:) )
3854 call monitor_put( dv_monit_id(im_engsfc_prec),
prec_engi(:,:) )
3855 call monitor_put( dv_monit_id(im_engsfc_rd), sflx_rd_net(:,:) )
3856 call monitor_put( dv_monit_id(im_engtom_rd), tflx_rd_net(:,:) )
3858 call monitor_put( dv_monit_id(im_engsfc_lw_up), sflx_lw_up(:,:) )
3859 call monitor_put( dv_monit_id(im_engsfc_lw_dn), sflx_lw_dn(:,:) )
3860 call monitor_put( dv_monit_id(im_engsfc_sw_up), sflx_sw_up(:,:) )
3861 call monitor_put( dv_monit_id(im_engsfc_sw_dn), sflx_sw_dn(:,:) )
3863 call monitor_put( dv_monit_id(im_engtom_lw_up), tomflx_lw_up(:,:) )
3864 call monitor_put( dv_monit_id(im_engtom_lw_dn), tomflx_lw_dn(:,:) )
3865 call monitor_put( dv_monit_id(im_engtom_sw_up), tomflx_sw_up(:,:) )
3866 call monitor_put( dv_monit_id(im_engtom_sw_dn), tomflx_sw_dn(:,:) )
3904 log_info(
"ATMOS_vars_finalize",*)
'Finalize'
3962 deallocate( work3d )
3963 deallocate( work2d )
3964 deallocate( work1d )
3989 deallocate( qp_hist_id )
3990 deallocate( qp_monit_id )
4036 use scale_atmos_phy_mp_sdm,
only: &
4038 atmos_phy_mp_sdm_restart_create
4044 character(len=19) :: timelabel
4045 character(len=H_LONG) :: basename
4051 if( sd_rest_flg_out )
then
4052 log_info(
"ATMOS_vars_restart_create",*)
'Output random number for SDM '
4053 call atmos_phy_mp_sdm_restart_create(nowdaysec)
4060 log_info(
"ATMOS_vars_restart_create",*)
'Create restart file (ATMOS) '
4063 call time_gettimelabel( timelabel )
4069 log_info(
"ATMOS_vars_restart_create",*)
'basename: ', trim(basename)
4076 allocate( pv_id(pv_nmax+
qa) )
4134 use scale_atmos_phy_mp_sdm,
only: &
4136 atmos_phy_mp_sdm_restart_enddef
4145 if( sd_rest_flg_out )
then
4146 call atmos_phy_mp_sdm_restart_enddef
4150 if ( restart_fid /= -1 )
then
4209 use scale_atmos_phy_mp_sdm,
only: &
4211 atmos_phy_mp_sdm_restart_close
4219 if( sd_rest_flg_out )
then
4220 call atmos_phy_mp_sdm_restart_close
4224 if ( restart_fid /= -1 )
then
4226 log_info(
"ATMOS_vars_restart_close",*)
'Close restart file (ATMOS) '
4232 if (
allocated(pv_id) )
deallocate( pv_id )
4290 use scale_atmos_phy_mp_sdm,
only: &
4292 atmos_phy_mp_sdm_restart_def_var
4302 if( sd_rest_flg_out )
then
4303 call atmos_phy_mp_sdm_restart_def_var
4307 if ( restart_fid /= -1 )
then
4311 standard_name=pv_info(
i_dens)%STDNAME )
4314 standard_name=pv_info(
i_momz)%STDNAME )
4317 standard_name=pv_info(
i_momx)%STDNAME )
4320 standard_name=pv_info(
i_momy)%STDNAME )
4323 standard_name=pv_info(
i_rhot)%STDNAME )
4351 file_cartesc_write_var
4386 use scale_atmos_phy_mp_sdm,
only: &
4388 atmos_phy_mp_sdm_restart_write
4398 if( sd_rest_flg_out )
then
4399 call atmos_phy_mp_sdm_restart_write
4403 if ( restart_fid /= -1 )
then
4409 call file_cartesc_write_var( restart_fid, pv_id(
i_dens),
dens(:,:,:), pv_info(
i_dens)%NAME,
'ZXY' )
4410 call file_cartesc_write_var( restart_fid, pv_id(
i_momz),
momz(:,:,:), pv_info(
i_momz)%NAME,
'ZHXY' )
4411 call file_cartesc_write_var( restart_fid, pv_id(
i_momx),
momx(:,:,:), pv_info(
i_momx)%NAME,
'ZXHY' )
4412 call file_cartesc_write_var( restart_fid, pv_id(
i_momy),
momy(:,:,:), pv_info(
i_momy)%NAME,
'ZXYH' )
4413 call file_cartesc_write_var( restart_fid, pv_id(
i_rhot),
rhot(:,:,:), pv_info(
i_rhot)%NAME,
'ZXY' )
4416 call file_cartesc_write_var( restart_fid, pv_id(pv_nmax+iq),
qtrc(:,:,:,iq),
tracer_name(iq),
'ZXY' )
4442 real(RP),
intent(inout),
allocatable :: ary(:,:,:)
4444 if ( .not.
allocated(ary) )
then
4445 allocate( ary(
ka,
ia,
ja) )
4456 real(RP),
intent(inout),
allocatable :: ary(:,:)
4458 if ( .not.
allocated(ary) )
then
4459 allocate( ary(
ia,
ja) )
4470 real(RP),
intent(inout),
allocatable :: ary(:)
4472 if ( .not.
allocated(ary) )
then
real(rp), public const_grav
standard acceleration of gravity [m/s2]
subroutine, public atmos_phy_cp_vars_restart_write
Write restart.
real(rp), dimension(:,:,:), pointer, public momz_av
subroutine, public atmos_phy_tb_vars_restart_close
Close restart file.
subroutine, public atmos_phy_ch_vars_restart_create
Create restart file.
module Atmosphere / Physics Cloud Microphysics
subroutine, public atmos_vars_restart_write
Write restart of atmospheric variables.
subroutine, public atmos_phy_rd_vars_restart_create
Create restart file.
subroutine, public atmos_phy_ae_vars_restart_close
Close restart file.
real(rp), dimension(:,:,:,:), allocatable, target, public qe
subroutine, public atmos_phy_ch_vars_restart_close
Close restart file.
integer, public ke
end point of inner domain: z, local
real(rp), dimension(:,:,:), allocatable, target, public rhot_avw
subroutine, public atmos_diagnostic_get_teml(KA, KS, KE, IA, IS, IE, JA, JS, JE, TEMP, LHV, LHS, QC, QI, CPtot, TEML)
ATMOS_DIAGNOSTIC_get_teml liqued water temperature.
real(dp), public time_nowdaysec
second of current time [sec]
subroutine, public atmos_phy_ch_vars_restart_open
Open restart file for read.
subroutine, public atmos_phy_lt_vars_restart_write
Write restart.
subroutine, public prc_abort
Abort Process.
module Atmosphere / Dynamics
integer, parameter, public i_hr
liquid water rain
integer, parameter, public i_momz
logical, public atmos_sw_phy_tb
subroutine, public atmos_phy_sf_vars_restart_open
Open restart file for read.
subroutine, public atmos_phy_ch_vars_restart_enddef
Exit netCDF define mode.
subroutine, public atmos_phy_mp_vars_get_diagnostic(DENS, TEMP, QTRC, CLDFRAC, Re, Qe, Ne)
real(rp), dimension(:,:,:), pointer, public qr
real(rp), dimension(:,:,:), pointer, public momx_av
integer, parameter, public i_momx
real(rp), public atmos_grid_cartesc_real_totvolzxv
total volume (zxv, local) [m3]
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_cz
geopotential height [m] (zxy)
real(rp), dimension(:,:,:,:), allocatable, public rhoq_tp
subroutine, public atmos_phy_lt_vars_restart_enddef
Exit netCDF define mode.
character(len=h_mid), dimension(qa_max), public tracer_desc
character(len=h_short), dimension(qa_max), public tracer_unit
real(rp), dimension(:,:,:), allocatable, target, public pott
subroutine, public atmos_phy_rd_vars_restart_close
Close restart file.
subroutine, public atmos_dyn_vars_finalize
Finalize.
subroutine, public atmos_phy_tb_vars_restart_enddef
Exit netCDF define mode.
integer, parameter, public i_hs
snow
real(rp), dimension(qa_max), public tracer_mass
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rfdx
reciprocal of face-dx
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_volwxy
control volume (wxy) [m3]
subroutine, public atmos_vars_fillhalo(FILL_BND)
HALO Communication.
subroutine, public file_cartesc_enddef(fid)
Exit netCDF file define mode.
logical, public atmos_use_average
subroutine, public file_cartesc_def_var(fid, varname, desc, unit, dim_type, datatype, vid, standard_name, timeintv, nsteps, cell_measures)
Define a variable to file.
subroutine, public atmos_phy_ae_vars_reset_diagnostics
real(rp), dimension(:,:,:,:), pointer, public qtrc_av
subroutine, public atmos_diagnostic_get_potv(KA, KS, KE, IA, IS, IE, JA, JS, JE, POTT, Rtot, POTV)
ATMOS_DIAGNOSTIC_get_potv virtual potential temperature.
subroutine allocate_1d(ary)
subroutine, public atmos_phy_bl_vars_restart_def_var
Write restart.
real(rp), dimension(:,:,:), allocatable, public rhov_tp
subroutine, public atmos_phy_sf_vars_restart_def_var
Write restart.
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_tomflx_lw_dn
subroutine, public atmos_vars_restart_def_var
Define atmospheric variables in restart file.
subroutine, public file_history_cartesc_set_pres(PRES, PRESH, SFC_PRES)
set hydrostatic pressure for pressure coordinate
subroutine, public atmos_phy_ch_vars_restart_def_var
Write restart.
real(rp), dimension(:,:,:), allocatable, target, public qdry
module Atmosphere / Physics Chemistry
real(rp), dimension(:,:,:), allocatable, target, public momx_avw
subroutine, public atmos_phy_ae_vars_restart_create
Create restart file.
real(rp), parameter, public const_rvap
specific gas constant (water vapor) [J/kg/K]
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rcdx
reciprocal of center-dx
real(rp), dimension(:,:,:), allocatable, target, public cptot
logical, public atmos_sw_dyn
subroutine, public atmos_phy_cp_vars_restart_open
Open restart file for read.
subroutine, public atmos_phy_cp_vars_restart_create
Create restart file.
subroutine, public atmos_phy_tb_vars_restart_read
Read restart.
real(rp), public atmos_grid_cartesc_real_totvolwxy
total volume (wxy, local) [m3]
subroutine, public prof_rapstart(rapname_base, level, disable_barrier)
Start raptime.
module Atmosphere Grid CartesianC metirc
logical, public atmos_sw_phy_mp
subroutine, public atmos_phy_rd_vars_restart_open
Open restart file for read.
subroutine, public atmos_phy_tb_vars_finalize
Finalize.
subroutine, public atmos_phy_lt_vars_setup
Setup.
real(rp), dimension(:,:,:), pointer, public rhot_av
module atmosphere / hydrometeor
subroutine, public atmos_phy_ch_vars_setup
Setup.
real(rp), dimension(:,:,:), pointer, public qh
module atmosphere / diagnostic
real(rp), dimension(:,:,:), allocatable, target, public phyd
module Atmosphere / Physics Radiation
integer, public prc_myrank
process num in local communicator
subroutine, public atmos_diagnostic_get_phyd(KA, KS, KE, IA, IS, IE, JA, JS, JE, DENS, PRES, CZ, FZ, PHYD, PHYDH)
ATMOS_DIAGNOSTIC_get_phyd hydrostatic pressure.
subroutine, public atmos_vars_restart_enddef
Exit netCDF define mode.
subroutine, public atmos_dyn_vars_restart_read
Read restart.
module ATMOSPHERIC Surface Variables
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_rain
subroutine, public atmos_phy_cp_vars_restart_enddef
Exit netCDF define mode.
integer, parameter, public i_hh
hail
subroutine, public atmos_phy_lt_vars_restart_create
Create restart file.
real(rp), dimension(:,:), allocatable, public prec_engi
integer, parameter, public i_dens
logical, public atmos_hydrometeor_dry
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_tomflx_sw_up
subroutine, public atmos_phy_mp_vars_restart_def_var
Define variables in restart file.
real(rp), dimension(:,:,:), allocatable, target, public rhot
real(rp), public atmos_restart_check_criterion
subroutine, public atmos_vars_check(force)
Check variables for atmosphere.
subroutine, public atmos_phy_tb_vars_restart_create
Create restart file.
subroutine, public atmos_phy_mp_vars_finalize
Finalize.
module Atmosphere GRID CartesC Real(real space)
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sfc_temp
subroutine, public atmos_phy_rd_vars_finalize
Finalize.
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc
real(rp), dimension(qa_max), public tracer_engi0
subroutine, public atmos_phy_tb_vars_restart_write
Write restart.
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_volzuy
control volume (zuy) [m3]
real(rp), dimension(:,:,:), allocatable, public qv_ref
subroutine, public atmos_phy_mp_vars_restart_create
Create restart file.
character(len=h_short), public unit
logical, public atmos_restart_check
Check value consistency?
integer, parameter, public i_momy
real(rp), allocatable, target, public j
recursive subroutine atmos_vars_get_diagnostic_1d(vname, var)
get diagnostic variable 1D
character(len=h_long), public atmos_restart_out_basename
Basename of the output file.
real(rp), dimension(:,:), allocatable, public atmos_phy_cp_sflx_rain
logical, public atmos_sw_phy_ae
subroutine, public atmos_dyn_vars_restart_open
Open restart file for read.
subroutine, public atmos_vars_monitor
monitor output
subroutine, public atmos_phy_ae_vars_history(QTRC, RH)
real(rp), dimension(:,:,:), allocatable, public rhou_tp
real(rp), dimension(:,:,:,:), allocatable, public atmos_grid_cartesc_metric_mapf
map factor
recursive subroutine atmos_vars_get_diagnostic_2d(vname, var)
get diagnostic variable 2D
integer, parameter, public rp
subroutine, public atmos_diagnostic_cartesc_get_vel(KA, KS, KE, IA, IS, IE, JA, JS, JE, DENS, MOMZ, MOMX, MOMY, W, U, V)
ATMOS_DIAGNOSTIC_CARTESC_get_vel W, U, V.
integer, parameter, public i_hi
ice water cloud
integer, public ie
end point of inner domain: x, local
real(rp), dimension(:,:), allocatable, public atmos_phy_cp_sflx_snow
real(rp), dimension(:,:), allocatable, target, public prec
subroutine, public atmos_phy_tb_vars_setup
Setup.
character(len=h_mid), public atmos_restart_out_title
Title of the output file.
subroutine, public atmos_vars_restart_read
Read restart of atmospheric variables.
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_lw_dn
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rcdy
reciprocal of center-dy
logical, public atmos_restart_out_aggregate
Switch to use aggregate file.
module atmosphere / physics / PBL
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_dn
real(rp), dimension(:,:,:), allocatable, target, public dens
subroutine, public atmos_dyn_vars_restart_create
Create restart file.
subroutine, public atmos_phy_mp_vars_reset_diagnostics
subroutine, public atmos_phy_sf_vars_restart_write
Write variables to restart file.
subroutine, public atmos_phy_sf_vars_restart_close
Close restart file.
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_volzxv
control volume (zxv) [m3]
subroutine allocate_2d(ary)
module atmosphere / grid / cartesC index
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_vol
control volume (zxy) [m3]
subroutine, public atmos_phy_sf_vars_restart_enddef
Exit netCDF define mode.
subroutine, public atmos_phy_sf_vars_finalize
Finalize.
subroutine, public atmos_vars_setup
Setup.
subroutine, public atmos_vars_history_setpres
Set pressure for history output.
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_sw_up
subroutine, public atmos_vars_restart_check
Check and compare between last data and sample data.
subroutine, public check(current_line, v)
Undefined value checker.
subroutine, public atmos_phy_lt_vars_restart_read
Read restart.
real(rp), dimension(:,:,:), allocatable, public temp_ref
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_sflx_lw_up
real(rp), dimension(:,:,:), allocatable, target, public momz
subroutine, public atmos_phy_sf_vars_setup
Setup.
real(rp), public lhv
latent heat of vaporization for use [J/kg]
subroutine, public atmos_phy_rd_vars_restart_def_var
Define variables in restart file.
logical, public atmos_sw_phy_lt
module atmosphere / adiabat
module Atmosphere / Physics Turbulence
real(rp), dimension(:,:,:), allocatable, public pres_ref
real(rp), public const_cvdry
specific heat (dry air,constant volume) [J/kg/K]
character(len=h_short), public atmos_restart_out_dtype
REAL4 or REAL8.
subroutine, public atmos_phy_cp_vars_restart_close
Close restart file.
real(rp), dimension(:,:,:), pointer, public momy_av
subroutine, public atmos_phy_ae_vars_finalize
Finalize.
real(rp), dimension(qa_max), public tracer_cv
subroutine, public atmos_phy_rd_vars_restart_write
Write variables to restart file.
subroutine, public file_cartesc_close(fid)
Close a netCDF file.
real(rp), public const_cpdry
specific heat (dry air,constant pressure) [J/kg/K]
subroutine, public atmos_phy_ae_vars_restart_read
Read restart.
subroutine, public atmos_phy_lt_vars_restart_def_var
Write restart.
subroutine, public atmos_phy_bl_vars_finalize
Finalize.
real(rp), dimension(:,:,:), allocatable, target, public v
subroutine, public atmos_phy_bl_vars_restart_create
Create restart file.
subroutine, public atmos_phy_cp_vars_setup
Setup.
character(len=h_short), dimension(qa_max), public tracer_name
real(rp), dimension(:,:,:), allocatable, target, public w
real(rp), dimension(:,:,:,:), allocatable, target, public qtrc_avw
real(rp), dimension(:,:), allocatable, public atmos_grid_cartesc_real_area
horizontal area ( xy, normal z) [m2]
module Atmosphere / Physics Chemistry
real(rp), dimension(:,:,:), allocatable, target, public momy_avw
real(rp), dimension(:,:,:), allocatable, public momz_tp
integer, parameter, public i_rhot
real(rp), dimension(:,:,:), allocatable, target, public momx
real(rp), dimension(:,:,:), allocatable, target, public exner
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_tomflx_sw_dn
integer, public is
start point of inner domain: x, local
subroutine, public atmos_phy_sf_vars_restart_create
Create restart file.
logical, public atmos_sw_phy_cp
logical, public atmos_sw_phy_ch
subroutine, public monitor_reg(name, desc, unit, itemid, ndims, dim_type, is_tendency)
Search existing item, or matching check between requested and registered item.
real(rp), dimension(:,:,:), allocatable, target, public temp
real(dp), public time_dtsec_atmos_dyn
time interval of dynamics [sec]
real(rp), dimension(:,:,:), allocatable, public dens_tp
subroutine, public atmos_phy_ch_vars_finalize
Finalize.
real(rp), public atmos_grid_cartesc_real_totvolzuy
total volume (zuy, local) [m3]
subroutine, public atmos_phy_mp_vars_restart_write
Write restart.
real(rp), dimension(:,:,:), allocatable, target, public momy
real(rp), dimension(:,:,:), allocatable, pointer, target, public qv
subroutine, public atmos_dyn_vars_restart_write
Write variables to restart file.
real(rp), dimension(:,:,:), allocatable, target, public atmos_phy_sf_sflx_qtrc
integer, parameter, public i_hc
liquid water cloud
subroutine, public atmos_phy_bl_vars_restart_open
Open restart file for read.
real(rp), dimension(:,:,:), allocatable, target, public phydh
subroutine, public atmos_phy_tb_vars_restart_def_var
Write restart.
subroutine, public atmos_vars_restart_open
Open restart file for reading atmospheric variables.
subroutine, public atmos_phy_rd_vars_setup
Setup.
module atmosphere / diagnostic / CartesianC
subroutine, public atmos_diagnostic_get_therm_rhot(KA, KS, KE, IA, IS, IE, JA, JS, JE, DENS, RHOT, Rtot, CVtot, CPtot, POTT, TEMP, PRES, EXNER)
ATMOS_DIAGNOSTIC_get_therm_rhot potential temperature, temperature, pressure.
subroutine, public atmos_phy_ae_vars_restart_write
Write restart.
real(rp), dimension(:,:,:), allocatable, target, public pres
subroutine, public atmos_phy_ae_vars_restart_def_var
Write restart.
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_engi
logical, public atmos_sw_phy_rd
real(rp), dimension(:,:,:), pointer, public dens_av
subroutine, public atmos_dyn_vars_restart_enddef
Exit netCDF define mode.
real(rp), dimension(:,:,:), allocatable, target, public rtot
real(rp), dimension(:,:), allocatable, public atmos_phy_rd_tomflx_lw_up
subroutine, public atmos_phy_rd_vars_restart_read
Read restart.
real(rp), dimension(:,:,:), allocatable, target, public u
integer, public ks
start point of inner domain: z, local
real(rp), dimension(:,:,:,:), allocatable, public atmos_grid_cartesc_real_f2h
coefficient for interpolation from full to half levels
subroutine, public atmos_phy_ch_vars_restart_write
Write restart.
logical, public atmos_restart_out_postfix_timelabel
Add timelabel to the basename of output file?
subroutine, public atmos_phy_mp_vars_setup
Setup.
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_lh
real(rp), dimension(qa_max), public tracer_cp
subroutine, public atmos_phy_mp_vars_restart_read
Read restart.
subroutine, public atmos_dyn_vars_restart_close
Close restart file.
module file / history_cartesC
subroutine, public atmos_vars_restart_close
Close restart file.
logical, public atmos_restart_in_postfix_timelabel
Add timelabel to the basename of input file?
subroutine, public file_cartesc_create(basename, title, datatype, fid, date, subsec, haszcoord, append, aggregate, single)
Create/open a netCDF file.
real(rp), dimension(:,:,:), allocatable, public rhoh_p
subroutine, public atmos_dyn_vars_restart_def_var
Define variables in restart file.
character(len=h_short), public atmos_dyn_type
logical, public statistics_checktotal
calc&report variable totals to logfile?
subroutine, public file_cartesc_flush(fid)
Flush all pending requests to a netCDF file (PnetCDF only)
subroutine, public atmos_phy_ae_vars_setup
Setup.
subroutine, public time_gettimelabel(timelabel)
generate time label
subroutine, public atmos_vars_finalize
finalize
module ATMOSPHERIC Variables
subroutine, public atmos_phy_bl_vars_restart_read
Read restart.
module atmosphere / bottom boundary extrapolation
real(rp), dimension(:,:,:), pointer, public qi
subroutine, public atmos_vars_history
History output set for atmospheric variables.
real(rp), dimension(qa_max), public tracer_r
real(rp), dimension(:,:,:), allocatable, public rhot_tp
integer, public js
start point of inner domain: y, local
subroutine, public atmos_vars_restart_create
Create atmospheric restart file.
subroutine, public atmos_phy_ae_vars_restart_enddef
Exit netCDF define mode.
logical, public atmos_restart_in_aggregate
Switch to use aggregate file.
real(rp), dimension(:,:), allocatable, public atmos_phy_mp_sflx_snow
logical, public atmos_restart_output
Output restart file?
real(rp), dimension(:,:,:), allocatable, public momy_tp
real(rp), dimension(:,:), allocatable, public atmos_phy_sf_sflx_sh
logical, public atmos_sw_phy_bl
subroutine, public atmos_phy_tb_vars_restart_open
Open restart file for read.
subroutine, public atmos_diagnostic_get_n2(KA, KS, KE, IA, IS, IE, JA, JS, JE, POTT, Rtot, CZ, FZ, F2H, N2)
ATMOS_DIAGNOSTIC_get_n2 N^2.
real(rp), public lhf
latent heat of fusion for use [J/kg]
logical function, public file_get_aggregate(fid)
module ATMOSPHERE / Physics Aerosol Microphysics
subroutine, public file_cartesc_open(basename, fid, single, aggregate)
open a netCDF file for read
subroutine, public atmos_phy_cp_vars_finalize
Setup.
real(rp), dimension(:,:,:), allocatable, public momx_tp
module atmosphere / thermodyn
subroutine, public atmos_vars_calc_diagnostics
Calc diagnostic variables.
subroutine, public file_history_reg(name, desc, unit, itemid, standard_name, ndims, dim_type, cell_measures, fill_halo)
Register/Append variable to history file.
recursive subroutine atmos_vars_get_diagnostic_3d(vname, var)
get diagnostic variable 3D
subroutine, public atmos_phy_ae_vars_restart_open
Open restart file for read.
subroutine, public prof_rapend(rapname_base, level, disable_barrier)
Save raptime.
subroutine allocate_3d(ary)
real(rp), dimension(:,:,:), pointer, public qc
subroutine, public atmos_phy_bl_vars_restart_write
Write restart.
character(len=h_long), public atmos_restart_check_basename
subroutine, public atmos_phy_rd_vars_restart_enddef
Exit netCDF define mode.
subroutine, public atmos_phy_bl_vars_restart_close
Close restart file.
subroutine, public atmos_phy_mp_vars_restart_open
Open restart file for read.
subroutine, public atmos_phy_lt_vars_finalize
Finalize.
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_real_fz
geopotential height [m] (wxy)
subroutine, public atmos_phy_bl_vars_setup
Setup.
real(rp), public atmos_grid_cartesc_real_totvol
total volume (zxy, local) [m3]
module atmosphere / grid / cartesC
real(rp), dimension(:,:,:), allocatable, public pott_ref
subroutine, public atmos_phy_lt_vars_restart_open
Open restart file for read.
real(rp), dimension(:,:,:), allocatable, target, public dens_avw
real(rp), dimension(:,:,:), allocatable, target, public momz_avw
real(rp), public const_undef
real(rp), dimension(:), allocatable, public atmos_grid_cartesc_rfdy
reciprocal of face-dy
subroutine, public atmos_phy_sf_vars_restart_read
Read restart.
subroutine, public atmos_phy_mp_vars_restart_close
Close restart file.
module atmosphere / saturation
subroutine, public atmos_phy_lt_vars_restart_close
Close restart file.
subroutine, public atmos_phy_mp_vars_history(DENS, TEMP, QTRC)
module Atmosphere / Physics Cumulus
integer, public io_fid_conf
Config file ID.
integer, public je
end point of inner domain: y, local
logical, public prc_twod
2D experiment
character(len=h_short), public name
integer, parameter, public n_hyd
character(len=h_long), public atmos_restart_in_basename
Basename of the input file.
real(rp), dimension(:,:,:), allocatable, public dens_ref
real(rp), dimension(:,:,:), allocatable, target, public cvtot
subroutine, public atmos_bottom_estimate(KA, KS, KE, IA, IS, IE, JA, JS, JE, DENS, PRES, QV, SFC_TEMP, FZ, SFC_DENS, SFC_PRES)
Calc bottom boundary of atmosphere (just above surface)
real(rp), dimension(:,:,:), pointer, public qg
subroutine, public atmos_phy_ch_vars_restart_read
Read restart.
subroutine, public atmos_phy_bl_vars_restart_enddef
Exit netCDF define mode.
subroutine, public atmos_phy_mp_vars_restart_enddef
Exit netCDF define mode.
subroutine, public atmos_phy_cp_vars_restart_def_var
Write restart.
subroutine, public atmos_dyn_vars_setup
Setup.
real(rp), dimension(:,:,:), pointer, public qs
integer, parameter, public i_hg
graupel
real(rp), dimension(:,:,:), allocatable, public atmos_grid_cartesc_metric_rotc
rotation coefficient
subroutine, public atmos_phy_cp_vars_restart_read
Read restart.
logical, public atmos_sw_phy_sf