11#include "scaleFElib.h"
20 use scale_tracer,
only: qa
67 integer :: tends_num_tot
69 procedure :: init => atmosphyblvars_init
70 procedure :: final => atmosphyblvars_final
71 procedure :: setup => atmosphyblvars_setup
72 procedure :: history => atmosphyblvars_history
89 'kg/m2/s2', 3,
'XYZ',
'' ), &
91 'kg/m2/s2', 3,
'XYZ',
'' ), &
93 'kg/m3.K/s', 3,
'XYZ',
'' ) /
101 DATA atmos_phy_bl_diag_vinfo / &
103 'm2/s2', 3,
'XYZ',
'' ), &
105 'm2/s', 3,
'XYZ',
'' ), &
107 'm2/s', 3,
'XYZ',
'' ) /
116 subroutine atmosphyblvars_init( this, model_mesh, &
117 QS_BL, QE_BL, QA_BL )
120 class(modelmeshbase),
target,
intent(in) :: model_mesh
121 integer,
intent(in) :: qs_bl
122 integer,
intent(in) :: qe_bl
123 integer,
intent(in) :: qa_bl
126 log_info(
'AtmosPhyBlVars_Init',*)
132 end subroutine atmosphyblvars_init
136 subroutine atmosphyblvars_setup( this, model_mesh )
137 use scale_tracer,
only: &
138 tracer_name, tracer_desc, tracer_unit, &
140 use scale_file_history,
only: &
144 class(modelmeshbase),
target,
intent(in) :: model_mesh
149 logical :: reg_file_hist
155 type(variableinfo) :: qtrc_tp_vinfo_tmp
156 type(variableinfo) :: qtrc_vterm_vinfo_tmp
164 select type(model_mesh)
166 atm_mesh => model_mesh
168 mesh3d => atm_mesh%ptr_mesh
170 call mesh3d%GetMesh2D( mesh2d )
174 call this%tends_manager%Init()
175 allocate( this%tends(this%TENDS_NUM_TOT) )
177 reg_file_hist = .true.
179 call this%tends_manager%Regist( &
181 this%tends(iv), reg_file_hist, fill_zero=.true. )
184 qtrc_tp_vinfo_tmp%ndims = 3
185 qtrc_tp_vinfo_tmp%dim_type =
'XYZ'
186 qtrc_tp_vinfo_tmp%STDNAME =
''
190 qtrc_tp_vinfo_tmp%keyID = iv
191 qtrc_tp_vinfo_tmp%NAME =
'BL_'//trim(tracer_name(iq))//
'_t'
192 qtrc_tp_vinfo_tmp%DESC =
'tendency of rho*'//trim(tracer_name(iq))//
' in BL process'
193 qtrc_tp_vinfo_tmp%UNIT =
'kg/m3/s'
195 reg_file_hist = .true.
196 call this%tends_manager%Regist( &
197 qtrc_tp_vinfo_tmp, mesh3d, &
198 this%tends(iv), reg_file_hist, fill_zero=.true. )
203 call this%diagvars_manager%Init()
206 reg_file_hist = .true.
208 call this%diagvars_manager%Regist( &
209 atmos_phy_bl_diag_vinfo(iv), mesh3d, &
210 this%diagvars(iv), reg_file_hist, fill_zero=.true. )
214 end subroutine atmosphyblvars_setup
218 subroutine atmosphyblvars_final( this )
223 log_info(
'AtmosPhyBlVars_Final',*)
225 call this%tends_manager%Final()
226 deallocate( this%tends )
228 call this%diagvars_manager%Final()
229 deallocate( this%diagvars )
231 end subroutine atmosphyblvars_final
235 bl_RHOU_t, bl_RHOV_t, bl_RHOT_t, bl_RHOQ_t, &
243 integer,
intent(in) :: domid
250 class(
localmesh3d),
pointer,
intent(out),
optional :: lcmesh3d
260 call field%GetLocalMeshField(domid, bl_rhou_t)
263 call field%GetLocalMeshField(domid, bl_rhov_t)
266 call field%GetLocalMeshField(domid, bl_rhot_t)
269 if (
present(bl_rhoq_t) )
then
270 do iq = 1,
size(bl_rhoq_t)
272 call field%GetLocalMeshField(domid, bl_rhoq_t(iq)%ptr)
276 if (
present(lcmesh3d))
then
277 call mesh%GetLocalMesh( domid, lcmesh )
282 if (
present(lcmesh3d)) lcmesh3d => lcmesh
291 subroutine atmosphyblvars_history( this )
300 do v=1, this%TENDS_NUM_TOT
301 hst_id = this%tends(v)%hist_id
306 hst_id = this%diagvars(v)%hist_id
311 end subroutine atmosphyblvars_history
module Atmosphere / Physics / Planetary Boundary Layer Turbulence
integer, parameter, public atmos_phy_bl_rhot_t_id
integer, parameter, public atmos_phy_bl_rhov_t_id
integer, parameter, public atmos_phy_bl_rhou_t_id
integer, parameter, public atmos_phy_bl_tends_num1
integer, parameter, public atmos_phy_bl_diag_num
integer, parameter, public atmos_phy_bl_diag_kh_id
type(variableinfo), dimension(atmos_phy_bl_tends_num1), public atmos_phy_bl_tend_vinfo
subroutine, public atmosphyblvars_getlocalmeshfields_tend(domid, mesh, bl_tends_list, bl_rhou_t, bl_rhov_t, bl_rhot_t, bl_rhoq_t, lcmesh3d)
integer, parameter, public atmos_phy_bl_diag_tke_id
integer, parameter, public atmos_phy_bl_diag_nu_id
module FElib / Element / Base
module FElib / File / History
module FElib / File / Restart
module FElib / Mesh / Local 3D
module FElib / Mesh / Local, Base
module FElib / Data / base
module FElib / Mesh / Base 2D
module FElib / Mesh / Base 3D
integer, public meshbase3d_dimtypeid_xyz
module FElib / Mesh / Base
module FElib / Data / base
module FElib / Data / Communication base
FElib / model framework / mesh manager.
FElib / model framework / variable manager.
Derived type to manage a computational mesh (base class)
Derived type to manage variables with planetary boundary layer (PBL) turbulence parameterization comp...
Derived type representing a 3D reference element.
Derived type to manage restart file with each component.
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)
Container to save a pointer of MeshField(1D, 2D, 3D) object.