11#include "scaleFElib.h"
58 integer :: sfcflx_num_tot
60 procedure :: init => atmosphysfcvars_init
61 procedure :: final => atmosphysfcvars_final
62 procedure :: history => atmosphysfcvars_history
83 'm/s*kg/m2/s', 2,
'XY',
'' ), &
85 'm/s*kg/m2/s', 2,
'XY',
'' ), &
87 'm/s*kg/m2/s', 2,
'XY',
'' ), &
89 'J/m2/s', 2,
'XY',
'' ), &
91 'J/m2/s', 2,
'XY',
'' ), &
93 'kg/m2/s', 2,
'XY',
'' ) /
105 real(rp),
private :: atmos_phy_sfc_default_sfc_temp = 300.0_rp
108 subroutine atmosphysfcvars_init( this, model_mesh )
111 class(modelmeshbase),
target,
intent(in) :: model_mesh
115 logical :: reg_file_hist
121 namelist / param_atmos_phy_sfc_vars / &
122 atmos_phy_sfc_default_sfc_temp
127 log_info(
'AtmosPhySfcVars_Init',*)
133 read(io_fid_conf,nml=param_atmos_phy_sfc_vars,iostat=ierr)
135 log_info(
"ATMOS_PHY_SFC_vars_setup",*)
'Not found namelist. Default used.'
136 elseif( ierr > 0 )
then
137 log_error(
"ATMOS_PHY_SFC_vars_setup",*)
'Not appropriate names in namelist PARAM_ATMOS_PHY_SFC_VARS. Check!'
140 log_nml(param_atmos_phy_sfc_vars)
145 select type(model_mesh)
147 atm_mesh => model_mesh
149 mesh3d => atm_mesh%ptr_mesh
151 call mesh3d%GetMesh2D( mesh2d )
154 call this%SFCVARS_manager%Init()
157 reg_file_hist = .true.
159 call this%SFCVARS_manager%Regist( &
161 this%SFC_VARS(v), reg_file_hist, fill_zero=.true. )
164 do n=1, mesh2d%LOCAL_MESH_NUM
169 call this%SFCFLX_manager%Init()
170 allocate( this%SFC_FLX(this%SFCFLX_NUM_TOT) )
172 reg_file_hist = .true.
173 do v = 1, this%SFCFLX_NUM_TOT
174 call this%SFCFLX_manager%Regist( &
176 this%SFC_FLX(v), reg_file_hist, fill_zero=.true. )
180 end subroutine atmosphysfcvars_init
182 subroutine atmosphysfcvars_final( this )
188 log_info(
'AtmosPhySfcVars_Final',*)
190 call this%SFCVARS_manager%Final()
191 deallocate( this%SFC_VARS )
193 call this%SFCFLX_manager%Final()
194 deallocate( this%SFC_FLX )
197 end subroutine atmosphysfcvars_final
200 subroutine atmosphysfcvars_history( this )
211 hst_id = this%SFC_VARS(v)%hist_id
215 do v = 1, this%SFCFLX_NUM_TOT
216 hst_id = this%SFC_FLX(v)%hist_id
221 end subroutine atmosphysfcvars_history
224 SFC_TEMP, SFLX_MU, SFLX_MV, SFLX_MW, SFLX_SH, SFLX_LH, SFLX_QV, &
232 integer,
intent(in) :: domid
243 class(
localmesh3d),
pointer,
intent(out),
optional :: lcmesh3d
251 call field%GetLocalMeshField(domid, sfc_temp)
254 call field%GetLocalMeshField(domid, sflx_mu)
257 call field%GetLocalMeshField(domid, sflx_mv)
260 call field%GetLocalMeshField(domid, sflx_mw)
263 call field%GetLocalMeshField(domid, sflx_sh)
266 call field%GetLocalMeshField(domid, sflx_lh)
269 call field%GetLocalMeshField(domid, sflx_qv)
272 if (
present(lcmesh3d))
then
273 call mesh%GetLocalMesh( domid, lcmesh )
278 if (
present(lcmesh3d)) lcmesh3d => lcmesh
module ATMOSPHERE physics / surface process
type(variableinfo), dimension(atmos_phy_sf_sflx_num1), public atmos_phy_sf_sflx_vinfo
subroutine, public atmosphysfcvars_getlocalmeshfields(domid, mesh, svars_list, sflx_list, sfc_temp, sflx_mu, sflx_mv, sflx_mw, sflx_sh, sflx_lh, sflx_qv, lcmesh3d)
integer, parameter, public atmos_phy_sf_sflx_mv_id
type(variableinfo), dimension(atmos_phy_sf_svar_num), public atmos_phy_sf_svar_vinfo
integer, parameter, public atmos_phy_sf_sflx_qv_id
integer, parameter, public atmos_phy_sf_sflx_mu_id
integer, parameter, public atmos_phy_sf_sflx_num1
integer, parameter, public atmos_phy_sf_sflx_sh_id
integer, parameter, public atmos_phy_sf_svar_num
integer, parameter, public atmos_phy_sf_sflx_lh_id
integer, parameter, public atmos_phy_sf_svar_temp_id
integer, parameter, public atmos_phy_sf_sflx_mw_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
FElib / model framework / mesh manager.
FElib / model framework / variable manager.