FE-Project
Loading...
Searching...
No Matches
mod_atmos_phy_rd.F90
Go to the documentation of this file.
1!-------------------------------------------------------------------------------
2!> module Atmosphere / Physics / Radiation
3!!
4!! @par Description
5!! Module for radiation component in atmospheric model
6!!
7!! @author Yuta Kawai, Team SCALE
8!!
9!<
10!-------------------------------------------------------------------------------
11#include "scaleFElib.h"
13 !-----------------------------------------------------------------------------
14 !
15 !++ used modules
16 !
17 use scale_precision
18 use scale_prc
19 use scale_io
20 use scale_prof
21 use scale_const, only: &
22 undef8 => const_undef8
23
24 use scale_mesh_base, only: meshbase
27
33
34 use scale_meshfield_base, only: &
36 use scale_localmeshfield_base, only: &
38
39 use scale_model_mesh_manager, only: modelmeshbase
42
44 use mod_atmos_vars_container, only: &
46
48
49 !-----------------------------------------------------------------------------
50 implicit none
51 private
52 !-----------------------------------------------------------------------------
53 !
54 !++ Public type & procedure
55 !
56
57 !> Derived type to manage a component of radiation in atmospheric model
58 !!
59 type, extends(modelcomponentproc), public :: atmosphyrd
60 integer :: rd_typeid !< Type id of radiation scheme
61 integer :: rd_solarins_typeid !< Type id of solar insolation scheme
62
63 type(atmosphyrdvars) :: vars !< Object to manage variables with radiation
64 type(meshfield2d), pointer :: sfc_temp_ptr !< Pointer to an object with surface temperature field
65 type(meshfield2d), pointer :: sfc_alb_ptr !< Pointer to an object with surface albedo field
66
67 integer :: atm_var_container_typeid !< Type ID of variable container for radiation
68
69 !-
70 type(atmphyradsimple) :: simple_rad !< Object to manage a simplified-radiation scheme
71
72 ! type(MeshField3D) :: radflux_LW_dn_save
73 ! type(MeshField3D) :: radflux_LW_up_save
74 contains
75 procedure, public :: setup => atmosphyrd_setup
76 procedure, public :: calc_tendency => atmosphyrd_calc_tendency
77 procedure, public :: update => atmosphyrd_update
78 procedure, public :: finalize => atmosphyrd_finalize
79 procedure, public :: setsfcvars => atmosphyrd_set_sfcvars
80 procedure, private :: calc_tendency_core => atmosphyrd_calc_tendency_core
81 end type atmosphyrd
82
83 !-----------------------------------------------------------------------------
84 !++ Public parameters & variables
85 !
86 !-----------------------------------------------------------------------------
87 !
88 !++ Private procedure
89 !
90 !-----------------------------------------------------------------------------
91 !
92 !++ Private parameters & variables
93 !
94 integer, parameter :: rd_typeid_simple = 1 !< Type ID of a simple radiation scheme
95
96 integer, parameter :: rd_insolation_typeid_none = 0 !< Type ID of no solar insolation
97 integer, parameter :: rd_insolation_typeid_simple = 1 !< Type ID of a simple solar insolation scheme
98contains
99
100 !> Setup a component of radiation in atmospheric model
101 !!
102 !! @param model_mesh Object to manage computational mesh of atmospheric model
103 !! @param tm_parent_comp Object to mange a temporal scheme in a parent component
104 !!
105 subroutine atmosphyrd_setup( this, model_mesh, tm_parent_comp )
106 use mod_atmos_mesh, only: atmosmesh
111 implicit none
112 class(atmosphyrd), intent(inout) :: this
113 class(modelmeshbase), target, intent(in) :: model_mesh
114 class(time_manager_component), intent(inout) :: tm_parent_comp
115
116 real(dp) :: time_dt = undef8 !< Timestep for radiation
117 character(len=H_SHORT) :: time_dt_unit = 'SEC' !< Unit of timestep
118
119 character(len=H_MID) :: rd_type = 'NONE' !< Type of a radiation scheme [NONE, GRAYRAD]
120 character(len=H_MID) :: rd_solarins_type = 'SIMPLE' !< Type of solar insolation scheme [NONE, SIMPLE, REAL]
121 integer :: atm_var_container_typeid
122
123 namelist /param_atmos_phy_rd/ &
124 time_dt, &
125 time_dt_unit, &
126 rd_type, &
127 rd_solarins_type, &
128 atm_var_container_typeid
129
130 class(atmosmesh), pointer :: atm_mesh
131 class(meshbase), pointer :: ptr_mesh
132 class(localmesh3d), pointer :: lcmesh3d
133 class(elementbase3d), pointer :: elem3d
134
135 class(meshbase3d), pointer :: mesh3d
136
137 integer :: ierr
138 !-----------------------------------------------------
139
140 if (.not. this%IsActivated()) return
141
142 log_newline
143 log_info("ATMOS_PHY_RD_setup",*) 'Setup'
144
145 atm_var_container_typeid = atm_vars_container_primary_id
146
147 !--- read namelist
148 rewind(io_fid_conf)
149 read(io_fid_conf,nml=param_atmos_phy_rd,iostat=ierr)
150 if( ierr < 0 ) then !--- missing
151 log_info("ATMOS_PHY_RD_setup",*) 'Not found namelist. Default used.'
152 elseif( ierr > 0 ) then !--- fatal error
153 log_error("ATMOS_PHY_RD_setup",*) 'Not appropriate names in namelist PARAM_ATMOS_PHY_RD. Check!'
154 call prc_abort
155 endif
156 log_nml(param_atmos_phy_rd)
157
158 this%atm_var_container_typeid = atm_var_container_typeid
159
160 !--- Register this component in the time manager
161
162 call tm_parent_comp%Regist_process( 'ATMOS_PHY_RD', time_dt, time_dt_unit, & ! (in)
163 this%tm_process_id ) ! (out)
164
165 !--- Set the type of radiation scheme
166
167 select case ( rd_type )
168 case ("SIMPLE")
169 this%RD_TYPEID = rd_typeid_simple
170 call this%simple_rad%Init()
171 case default
172 log_error("ATMOS_PHY_RD_setup",*) 'Not appropriate RD_TYPE. Check!'
173 call prc_abort
174 end select
175
176 select case ( rd_solarins_type )
177 case ("SIMPLE")
178 this%RD_SOLARINS_TYPEID = rd_insolation_typeid_simple
180 case ("NONE")
181 this%RD_SOLARINS_TYPEID = rd_insolation_typeid_none
182 case default
183 log_error("ATMOS_PHY_RD_setup",*) 'Not appropriate RD_SOLARINS_TYPE. Check!'
184 call prc_abort
185 end select
186
187
188 !- Initialize the variables
189 call this%vars%Init( model_mesh )
190
191 select type(model_mesh)
192 class is (atmosmesh)
193 atm_mesh => model_mesh
194 end select
195 mesh3d => atm_mesh%ptr_mesh
196 ! call this%radflux_LW_dn_save%Init( "RADFLUX_LW_dn", "W/m2", mesh3D )
197 ! call this%radflux_LW_up_save%Init( "RADFLUX_LW_up", "W/m2", mesh3D )
198
199 return
200 end subroutine atmosphyrd_setup
201
202!OCL SERIAL
203 subroutine atmosphyrd_set_sfcvars( this, sfc_temp, sfc_alb )
204 implicit none
205 class(atmosphyrd), intent(inout) :: this
206 type(meshfield2d), target, intent(in) :: sfc_temp
207 type(meshfield2d), target, intent(in) :: sfc_alb
208 !-----------------------------------------------------
209 this%SFC_TEMP_ptr => sfc_temp
210 this%SFC_ALB_ptr => sfc_alb
211 return
212 end subroutine atmosphyrd_set_sfcvars
213
214 !> Calculate tendencies associated with radiation in atmospheric model
215 !!
216 !!
217 !! @param model_mesh Object to manage computational mesh of atmospheric model
218 !! @param prgvars_list Object to manage prognostic variables with atmospheric dynamical core
219 !! @param trcvars_list Object to manage auxiliary variables
220 !! @param forcing_list Object to manage forcing terms
221 !! @param is_update Flag to speicfy whether the tendencies are updated in this call
222 !!
223!OCL SERIAL
224 subroutine atmosphyrd_calc_tendency( &
225 this, model_mesh, prgvars_list, trcvars_list, &
226 auxvars_list, forcing_list, is_update )
229 use mod_atmos_vars, only: &
234 use mod_atmos_phy_rd_vars, only: &
235 rd_rhoh_id => atmos_phy_rd_rhoh_id, &
236 solins_id => atmos_phy_rd_aux2d_solins_id, &
237 cos_sza_id => atmos_phy_rd_aux2d_cossza_id, &
238 sflx_sw_up_id => atmos_phy_rd_aux2d_sflx_sw_up_id, &
239 sflx_sw_dn_id => atmos_phy_rd_aux2d_sflx_sw_dn_id, &
240 sflx_lw_up_id => atmos_phy_rd_aux2d_sflx_lw_up_id, &
241 sflx_lw_dn_id => atmos_phy_rd_aux2d_sflx_lw_dn_id, &
242 tomflx_lw_up_id => atmos_phy_rd_aux2d_tomflx_lw_up_id
243 implicit none
244 class(atmosphyrd), intent(inout) :: this
245 class(modelmeshbase), intent(in) :: model_mesh
246 class(modelvarmanager), intent(inout) :: prgvars_list
247 class(modelvarmanager), intent(inout) :: trcvars_list
248 class(modelvarmanager), intent(inout) :: auxvars_list
249 class(modelvarmanager), intent(inout) :: forcing_list
250 logical, intent(in) :: is_update
251
252 class(meshbase), pointer :: mesh
253 class(localmesh3d), pointer :: lcmesh
254 class(localmesh2d), pointer :: lcmesh2d
255
256 class(localmeshfieldbase), pointer :: ddens, momx, momy, momz, drhot
257 class(localmeshfieldbase), pointer :: rtot, cvtot, cptot
258 class(localmeshfieldbase), pointer :: dens_hyd, pres_hyd
259 class(localmeshfieldbase), pointer :: pres, pt
260 class(localmeshfieldbase), pointer :: qv, qv_tp
261 class(localmeshfieldbase), pointer :: rd_rhoh
262 class(localmeshfieldbase), pointer :: dens_tp, momx_tp, momy_tp, momz_tp, rhot_tp, rhoh_p
263
264 integer :: n
265 integer :: ke
266 !------------------------------------------------------------------------
267
268 if (.not. this%IsActivated()) return
269
270 log_progress(*) 'atmosphere / physics / radiation'
271
272 call model_mesh%GetModelMesh( mesh )
273
274 if (is_update) then
275
276 do n=1, mesh%LOCAL_MESH_NUM
277 call prof_rapstart('ATM_PHY_RD_get_localmesh_ptr', 2)
278
279 !- Get pointers to the fields in the variable container for cloud microphysics
281 mesh, prgvars_list, auxvars_list, &
282 ddens, momx, momy, momz, drhot, &
283 dens_hyd, pres_hyd, rtot, cvtot, cptot, &
284 lcmesh )
285
287 mesh, auxvars_list, &
288 pres, pt )
289
291 mesh, trcvars_list, forcing_list, &
292 qv, qv_tp )
293 call prof_rapend('ATM_PHY_RD_get_localmesh_ptr', 2)
294
295 !- Calculate tendencies associated with radiation
296
297 call prof_rapstart('ATM_PHY_RD_cal_tend', 2)
298
299 lcmesh2d => lcmesh%lcmesh2D
300
301 select case ( this%RD_SOLARINS_TYPEID )
302 case ( rd_insolation_typeid_simple )
304 this%vars%auxvars2D(solins_id)%local(n)%val(:,lcmesh2d%NeS:lcmesh2d%NeE), & ! (out)
305 this%vars%auxvars2D(cos_sza_id)%local(n)%val(:,lcmesh2d%NeS:lcmesh2d%NeE), & ! (out)
306 lcmesh2d%lat, lcmesh2d%Ne * lcmesh2d%refElem2D%Np )
307 end select
308
309 call this%vars%tends(rd_rhoh_id)%GetLocalMeshField( n, rd_rhoh )
310 call this%calc_tendency_core( rd_rhoh%val, & ! (out)
311 this%vars%auxvars2D(sflx_sw_up_id)%local(n)%val, & ! (out)
312 this%vars%auxvars2D(sflx_sw_dn_id)%local(n)%val, & ! (out)
313 this%vars%auxvars2D(sflx_lw_up_id)%local(n)%val, & ! (out)
314 this%vars%auxvars2D(sflx_lw_dn_id)%local(n)%val, & ! (out)
315 this%vars%auxvars2D(tomflx_lw_up_id)%local(n)%val, & ! (out)
316 this%vars%auxvars2D(solins_id)%local(n)%val, & ! (in)
317 this%vars%auxvars2D(cos_sza_id)%local(n)%val, & ! (in)
318 ddens%val, pres%val, qv%val, & ! (in)
319 this%SFC_TEMP_ptr%local(n)%val, & ! (in)
320 this%SFC_ALB_ptr%local(n)%val, & ! (in)
321 dens_hyd%val, rtot%val, cvtot%val, & ! (in)
322 lcmesh, lcmesh%refElem3D, lcmesh2d, lcmesh2d%refElem2D, & ! (in)
323 model_mesh%element3D_operation ) ! (in)
324 call prof_rapend('ATM_PHY_RD_cal_tend', 2)
325 end do
326
327 end if
328
329 !- Add tendencies calculated in this component to the total tendencies
330
331 do n=1, mesh%LOCAL_MESH_NUM
333 mesh, forcing_list, &
334 dens_tp, momx_tp, momy_tp, momz_tp, rhot_tp, &
335 rhoh_p, lcmesh3d=lcmesh )
336
337 call this%vars%tends(rd_rhoh_id)%GetLocalMeshField( n, rd_rhoh )
338 !$omp parallel private(ke)
339 !$omp do
340 do ke=lcmesh%NeS, lcmesh%NeE
341 rhoh_p %val(:,ke) = rhoh_p %val(:,ke) + rd_rhoh%val(:,ke)
342 end do
343 !$omp end parallel
344 end do
345
346 return
347 end subroutine atmosphyrd_calc_tendency
348
349 !> Update variables in a component of radiation in atmospheric model
350 !!
351 !! @param model_mesh Object to manage computational mesh of atmospheric model
352 !! @param prgvars_list Object to manage prognostic variables with atmospheric dynamical core
353 !! @param trcvars_list Object to manage auxiliary variables
354 !! @param forcing_list Object to manage forcing terms
355 !! @param is_update Flag to speicfy whether the tendencies are updated in this call
356 !!
357!OCL SERIAL
358 subroutine atmosphyrd_update( this, model_mesh, &
359 prgvars_list, trcvars_list, &
360 auxvars_list, forcing_list, is_update )
361
362 implicit none
363 class(atmosphyrd), intent(inout) :: this
364 class(modelmeshbase), intent(in) :: model_mesh
365 class(modelvarmanager), intent(inout) :: prgvars_list
366 class(modelvarmanager), intent(inout) :: trcvars_list
367 class(modelvarmanager), intent(inout) :: auxvars_list
368 class(modelvarmanager), intent(inout) :: forcing_list
369 logical, intent(in) :: is_update
370 !--------------------------------------------------
371 return
372 end subroutine atmosphyrd_update
373
374 !> Finalize a component of radiation in atmospheric model
375 !!
376!OCL SERIAL
377 subroutine atmosphyrd_finalize( this )
378 implicit none
379 class(atmosphyrd), intent(inout) :: this
380
381 !--------------------------------------------------
382 if (.not. this%IsActivated()) return
383
384 select case ( this%RD_TYPEID )
385 case( rd_typeid_simple )
386 call this%simple_rad%Final()
387 end select
388
389 call this%vars%Final()
390 return
391 end subroutine atmosphyrd_finalize
392
393!- private ------------------------------------------------
394!OCL SERIAL
395 subroutine atmosphyrd_calc_tendency_core( this, &
396 RHOH, & ! (out)
397 sflx_sw_up, sflx_sw_dn, sflx_lw_up, sflx_lw_dn, & ! (out)
398 tomflx_lw_up, & ! (out)
399 solins, cos_sza, & ! (in)
400 ddens, pres, qv, sfc_temp, sfc_alb, & ! (in)
401 dens_hyd, rtot, cvtot, & ! (in)
402 lcmesh, elem3d, lcmesh2d, elem2d, & ! (in)
403 elem3d_operation ) ! (in)
404 use scale_atmos_phy_rd_common, only: &
405 i_up, i_dn, i_lw, i_sw
408
411 implicit none
412 class(atmosphyrd), intent(inout) :: this
413 class(localmesh3d), intent(in) :: lcmesh
414 class(elementbase3d), intent(in) :: elem3d
415 class(localmesh2d), intent(in) :: lcmesh2d
416 class(elementbase2d), intent(in) :: elem2d
417 real(rp), intent(out) :: rhoh(elem3d%np,lcmesh%nea)
418 real(rp), intent(out) :: sflx_sw_up(elem2d%np,lcmesh2d%nea)
419 real(rp), intent(out) :: sflx_sw_dn(elem2d%np,lcmesh2d%nea)
420 real(rp), intent(out) :: sflx_lw_up(elem2d%np,lcmesh2d%nea)
421 real(rp), intent(out) :: sflx_lw_dn(elem2d%np,lcmesh2d%nea)
422 real(rp), intent(out) :: tomflx_lw_up(elem2d%np,lcmesh2d%nea)
423 real(rp), intent(in) :: solins(elem2d%np,lcmesh2d%nea)
424 real(rp), intent(in) :: cos_sza(elem2d%np,lcmesh2d%nea)
425 real(rp), intent(in) :: ddens(elem3d%np,lcmesh%nea)
426 real(rp), intent(in) :: pres(elem3d%np,lcmesh%nea)
427 real(rp), intent(in) :: qv(elem3d%np,lcmesh%nea)
428 real(rp), intent(in) :: sfc_temp(elem2d%np,lcmesh2d%nea)
429 real(rp), intent(in) :: sfc_alb(elem2d%np,lcmesh2d%nea)
430 real(rp), intent(in) :: dens_hyd(elem3d%np,lcmesh%nea)
431 real(rp), intent(in) :: rtot(elem3d%np,lcmesh%nea)
432 real(rp), intent(in) :: cvtot(elem3d%np,lcmesh%nea)
433 class(elementoperationbase3d), intent(in) :: elem3d_operation
434
435 real(rp) :: flux_rad(elem3d%np,lcmesh%ne,2,2,2)
436 real(rp) :: flux_rad_top(elem3d%nnode_h1d**2,lcmesh%ne2d,2,2,2)
437 real(rp) :: sflux_rad_up(elem3d%nnode_h1d**2,lcmesh%ne2d,2,2)
438 real(rp) :: sflux_rad_dn(elem3d%nnode_h1d**2,lcmesh%ne2d,2,2)
439 real(rp) :: temp_(elem3d%nnode_v,lcmesh%nez,elem3d%nnode_h1d**2,lcmesh%ne2d)
440 real(rp) :: dens_(elem3d%nnode_v,lcmesh%nez,elem3d%nnode_h1d**2,lcmesh%ne2d)
441 real(rp) :: pres_(elem3d%nnode_v,lcmesh%nez,elem3d%nnode_h1d**2,lcmesh%ne2d)
442 real(rp) :: qv_(elem3d%nnode_v,lcmesh%nez,elem3d%nnode_h1d**2,lcmesh%ne2d)
443
444 ! real(RP) :: flux_up(elem3D%Nnode_v,lcmesh%NeZ,elem3D%Nnode_h1D**2,lcmesh%Ne2D)
445 ! real(RP) :: flux_dn(elem3D%Nnode_v,lcmesh%NeZ,elem3D%Nnode_h1D**2,lcmesh%Ne2D)
446 ! real(RP) :: flux_net(elem3D%Nnode_v,lcmesh%NeZ,elem3D%Nnode_h1D**2,lcmesh%Ne2D)
447 ! real(RP) :: flux_net_sfc(elem3D%Nnode_h1D**2,lcmesh%Ne2D)
448 ! real(RP) :: flux_net_toa(elem3D%Nnode_h1D**2,lcmesh%Ne2D)
449 ! real(RP) :: flux_net_tom(elem3D%Nnode_h1D**2,lcmesh%Ne2D)
450
451 integer :: ke, ke_h, ke_z
452 integer :: p, ph, pz
453
454 real(rp) :: dens_tmp
455 !--------------------------------------------------
456
457 !$omp parallel do private(ke,p, dens_tmp) collapse(2)
458 do ke_z=1, lcmesh%NeZ
459 do ke_h=1, lcmesh%Ne2D
460 ke = ke_h + (ke_z-1)*lcmesh%Ne2D
461 do pz=1, elem3d%Nnode_v
462 do ph=1, elem3d%Nnode_h1D**2
463 p = ph + (pz-1)*elem3d%Nnode_h1D**2
464 dens_tmp = dens_hyd(p,ke) + ddens(p,ke)
465
466 pres_(pz,ke_z,ph,ke_h) = pres(p,ke)
467 temp_(pz,ke_z,ph,ke_h) = pres(p,ke) / ( rtot(p,ke) * dens_tmp )
468 dens_(pz,ke_z,ph,ke_h) = dens_tmp
469 qv_(pz,ke_z,ph,ke_h) = qv(p,ke)
470 end do
471 end do
472 end do
473 end do
474
475 select case( this%RD_TYPEID )
476 case ( rd_typeid_simple )
477 call this%simple_rad%calculate_rad_flux( flux_rad(:,:,:,:,1), & ! (out)
478 flux_rad_top(:,:,:,:,1), sflux_rad_up(:,:,:,1), sflux_rad_dn(:,:,:,1), & ! (out)
479 solins, pres_, temp_, dens_, qv_, sfc_temp, sfc_alb, & ! (in)
480 lcmesh, elem3d, lcmesh2d, elem2d ) ! (in)
481
482 !$omp parallel do
483 do ke=lcmesh2d%NeS, lcmesh2d%NeE
484 sflx_sw_dn(:,ke) = sflux_rad_dn(:,ke,i_sw,1)
485 sflx_lw_dn(:,ke) = sflux_rad_dn(:,ke,i_lw,1)
486 sflx_sw_up(:,ke) = sflux_rad_up(:,ke,i_sw,1)
487 sflx_lw_up(:,ke) = sflux_rad_up(:,ke,i_lw,1)
488
489 tomflx_lw_up(:,ke) = flux_rad_top(:,ke,i_lw,1,1)
490 end do
491
492! !$omp parallel do
493! do ke=lcmesh%NeS, lcmesh%NeE
494! this%radflux_LW_dn_save%local(1)%val(:,ke) = flux_rad(:,ke,I_LW,I_dn,1)
495! this%radflux_LW_up_save%local(1)%val(:,ke) = flux_rad(:,ke,I_LW,I_up,1)
496! end do
497 end select
498
499 call atm_phy_rd_dgm_calc_heating( rhoh, &
500 flux_rad(:,:,:,:,1), ddens, dens_hyd, cvtot, &
501 lcmesh, elem3d, elem2d, &
502 elem3d_operation )
503
504! call FILE_HISTORY_meshfield_in( this%radflux_LW_dn_save, 'RADFLUX_LW_dn' )
505! call FILE_HISTORY_meshfield_in( this%radflux_LW_up_save, 'RADFLUX_LW_up' )
506 return
507 end subroutine atmosphyrd_calc_tendency_core
508end module mod_atmos_phy_rd
module Atmosphere / Mesh
module Atmosphere / Physics / Radiation
integer, parameter, public atmos_phy_rd_aux2d_solins_id
ID of solar insolation flux at the top of the model.
integer, parameter, public atmos_phy_rd_aux2d_tomflx_lw_up_id
ID of upward longwave flux at the top of the model.
integer, parameter, public atmos_phy_rd_aux2d_cossza_id
ID of cosine of solar zenith angle.
integer, parameter, public atmos_phy_rd_aux2d_sflx_sw_dn_id
ID of downward shortwave surface flux.
integer, parameter, public atmos_phy_rd_rhoh_id
ID of diabatic heating rate in RD process.
integer, parameter, public atmos_phy_rd_aux2d_sflx_lw_dn_id
ID of downward longwave surface flux.
integer, parameter, public atmos_phy_rd_aux2d_sflx_sw_up_id
ID of upward shortwave surface flux.
integer, parameter, public atmos_phy_rd_aux2d_sflx_lw_up_id
ID of upward longwave surface flux.
module Atmosphere / Physics / Radiation
integer, parameter rd_typeid_simple
Type ID of a simple radiation scheme.
module Atmosphere / Variables
subroutine, public atmosvars_getlocalmeshphytends(domid, mesh, phytends_list, dens_tp, momx_tp, momy_tp, momz_tp, rhot_tp, rhoh_p, rhoq_tp, lcmesh3d)
subroutine, public atmosvars_getlocalmeshqtrc_qv(domid, mesh, trcvars_list, forcing_list, var, var_tp, lcmesh3d)
integer, parameter, public atm_vars_container_primary_id
subroutine, public atmosvars_getlocalmeshphyauxvars(domid, mesh, phyauxvars_list, pres, pt, lcmesh3d)
subroutine, public atmosvars_getlocalmeshprgvars(domid, mesh, prgvars_list, auxvars_list, ddens, momx, momy, momz, therm, dens_hyd, pres_hyd, rtot, cvtot, cptot, lcmesh3d)
module Atmosphere / Variables
module FElib / Atmosphere / Physics radiation
subroutine, public atm_phy_rd_dgm_calc_heating(rhoh, flux_rad, ddens, dens_hyd, cvtot, lcmesh, elem3d, elem2d, element3d_operation, temp_t)
module FElib / Atmosphere / Physics radiation
module FElib / Atmosphere / Physics radiation / Solar insolation / Simple gray-radiation scheme
subroutine, public atm_phy_rd_solarins_simple_get(solins, cossza, lat, np)
Get solar insolation and cosine of the solar zenith angle for the given latitude array.
subroutine, public atm_phy_rd_solarins_simple_setup()
Setup the simplified solar insolation module.
module FElib / Element / Base
module FElib / Element / Operation / Base
module FElib / Mesh / Local 2D
module FElib / Mesh / Local 3D
module FElib / Mesh / Local, Base
module FElib / Mesh / Base 2D
module FElib / Mesh / Base 3D
module FElib / Mesh / Base
module FElib / Data / base
FElib / model framework / physics process.
FElib / model framework / mesh manager.
FElib / model framework / variable manager.
Module common / time.
Derived type to manage a computational mesh (base class)
Derived type to manage a component of radiation in atmospheric model.
Derived type to manage variables with radiation component in atmospheric model.
Derived type to manage a set of variables (prognostic variables, tracer variables,...
Derived type to represent a simplified radiation scheme based on Vallis et al. (2018)
Derived type representing a 1D reference element.
Derived type representing a 2D reference element.
Derived type representing a 3D reference element.
Derived type representing an arbitrary finite element.
Derived type representing a local mesh for 2D domain.
Derived type to manage a local 3D computational domain.
Derived type to manage a local computational domain (base type)
Derived type representing a field with local mesh (base type)
Derived type to manage a computational mesh (base type for 2D domain)
Derived type to manage a computational mesh (base type for 3D domain)
Base type to manage a computational mesh.
Derived type representing a field with 2D mesh.
Derived type representing a field with 3D mesh.
Derived type representing a field (base type)