10#include "scaleFElib.h"
19 use scale_tracer,
only: qa
22 use scale_const,
only: &
25 cpdry => const_cpdry, &
26 cvdry => const_cvdry, &
98 subroutine atm_phy_tb_final()
100 end subroutine atm_phy_tb_final
104 subroutine atm_phy_tb_cal_grad( &
105 T11, T12, T13, T21, T22, T23, T31, T32, T33, & ! (out)
108 ddens_, momx_, momy_, momz_, drhot_, dens_hyd, pres_hyd, &
110 dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, &
120 class(LocalMesh3D),
intent(in) :: lmesh
121 class(ElementBase3D),
intent(in) :: elem
122 class(LocalMesh2D),
intent(in) :: lmesh2D
123 class(ElementBase2D),
intent(in) :: elem2D
124 real(RP),
intent(out) :: T11(elem%Np,lmesh%NeA), T12(elem%Np,lmesh%NeA), T13(elem%Np,lmesh%NeA)
125 real(RP),
intent(out) :: T21(elem%Np,lmesh%NeA), T22(elem%Np,lmesh%NeA), T23(elem%Np,lmesh%NeA)
126 real(RP),
intent(out) :: T31(elem%Np,lmesh%NeA), T32(elem%Np,lmesh%NeA), T33(elem%Np,lmesh%NeA)
127 real(RP),
intent(out) :: DF1(elem%Np,lmesh%NeA)
128 real(RP),
intent(out) :: DF2(elem%Np,lmesh%NeA)
129 real(RP),
intent(out) :: DF3(elem%Np,lmesh%NeA)
130 real(RP),
intent(out) :: TKE(elem%Np,lmesh%NeA)
131 real(RP),
intent(out) :: Nu(elem%Np,lmesh%NeA)
132 real(RP),
intent(out) :: Kh(elem%Np,lmesh%NeA)
133 real(RP),
intent(in) :: DDENS_(elem%Np,lmesh%NeA)
134 real(RP),
intent(in) :: MOMX_(elem%Np,lmesh%NeA)
135 real(RP),
intent(in) :: MOMY_(elem%Np,lmesh%NeA)
136 real(RP),
intent(in) :: MOMZ_(elem%Np,lmesh%NeA)
137 real(RP),
intent(in) :: DRHOT_(elem%Np,lmesh%NeA)
138 real(RP),
intent(in) :: DENS_hyd(elem%Np,lmesh%NeA)
139 real(RP),
intent(in) :: PRES_hyd(elem%Np,lmesh%NeA)
140 real(RP),
intent(in) :: PRES(elem%Np,lmesh%NeA)
141 real(RP),
intent(in) :: PT(elem%Np,lmesh%NeA)
142 type(SparseMat),
intent(in) :: Dx, Dy, Dz
143 type(SparseMat),
intent(in) :: Sx, Sy, Sz
144 type(SparseMat),
intent(in) :: Lift
145 logical,
intent(in) :: is_bound(elem%NfpTot,lmesh%Ne)
146 end subroutine atm_phy_tb_cal_grad
150 subroutine atm_phy_tb_cal_grad_qtrc( &
151 DFQ1, DFQ2, DFQ3, & ! (out)
153 kh, qtrc, ddens, dens_hyd, &
154 dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, &
155 is_bound, cal_grad_dens )
164 class(LocalMesh3D),
intent(in) :: lmesh
165 class(ElementBase3D),
intent(in) :: elem
166 class(LocalMesh2D),
intent(in) :: lmesh2D
167 class(ElementBase2D),
intent(in) :: elem2D
168 real(RP),
intent(out) :: DFQ1(elem%Np,lmesh%NeA)
169 real(RP),
intent(out) :: DFQ2(elem%Np,lmesh%NeA)
170 real(RP),
intent(out) :: DFQ3(elem%Np,lmesh%NeA)
171 real(RP),
intent(inout) :: dRdx(elem%Np,lmesh%NeA)
172 real(RP),
intent(inout) :: dRdy(elem%Np,lmesh%NeA)
173 real(RP),
intent(inout) :: dRdz(elem%Np,lmesh%NeA)
174 real(RP),
intent(in) :: Kh(elem%Np,lmesh%NeA)
175 real(RP),
intent(in) :: QTRC(elem%Np,lmesh%NeA)
176 real(RP),
intent(in) :: DDENS(elem%Np,lmesh%NeA)
177 real(RP),
intent(in) :: DENS_hyd(elem%Np,lmesh%NeA)
178 type(SparseMat),
intent(in) :: Dx, Dy, Dz
179 type(SparseMat),
intent(in) :: Sx, Sy, Sz
180 type(SparseMat),
intent(in) :: Lift
181 logical,
intent(in) :: is_bound(elem%NfpTot,lmesh%Ne)
182 logical,
intent(in) :: cal_grad_dens
183 end subroutine atm_phy_tb_cal_grad_qtrc
187 subroutine atm_phy_tb_cal_tend( &
188 MOMX_t, MOMY_t, MOMZ_t, RHOT_t, & ! (out)
189 t11, t12, t13, t21, t22, t23, t31, t32, t33, &
192 ddens_, momx_, momy_, momz_, drhot_, &
193 dens_hyd, pres_hyd, pres_, pt_, &
194 dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, &
205 class(LocalMesh3D),
intent(in) :: lmesh
206 class(ElementBase3D),
intent(in) :: elem
207 class(LocalMesh2D),
intent(in) :: lmesh2D
208 class(ElementBase2D),
intent(in) :: elem2D
209 real(RP),
intent(out) :: MOMX_t(elem%Np,lmesh%NeA)
210 real(RP),
intent(out) :: MOMY_t(elem%Np,lmesh%NeA)
211 real(RP),
intent(out) :: MOMZ_t(elem%Np,lmesh%NeA)
212 real(RP),
intent(out) :: RHOT_t(elem%Np,lmesh%NeA)
213 real(RP),
intent(in) :: T11(elem%Np,lmesh%NeA), T12(elem%Np,lmesh%NeA), T13(elem%Np,lmesh%NeA)
214 real(RP),
intent(in) :: T21(elem%Np,lmesh%NeA), T22(elem%Np,lmesh%NeA), T23(elem%Np,lmesh%NeA)
215 real(RP),
intent(in) :: T31(elem%Np,lmesh%NeA), T32(elem%Np,lmesh%NeA), T33(elem%Np,lmesh%NeA)
216 real(RP),
intent(in) :: DF1(elem%Np,lmesh%NeA)
217 real(RP),
intent(in) :: DF2(elem%Np,lmesh%NeA)
218 real(RP),
intent(in) :: DF3(elem%Np,lmesh%NeA)
219 real(RP),
intent(in) :: Nu (elem%Np,lmesh%NeA)
220 real(RP),
intent(in) :: Kh (elem%Np,lmesh%NeA)
221 real(RP),
intent(in) :: DDENS_(elem%Np,lmesh%NeA)
222 real(RP),
intent(in) :: MOMX_ (elem%Np,lmesh%NeA)
223 real(RP),
intent(in) :: MOMY_ (elem%Np,lmesh%NeA)
224 real(RP),
intent(in) :: MOMZ_ (elem%Np,lmesh%NeA)
225 real(RP),
intent(in) :: DRHOT_(elem%Np,lmesh%NeA)
226 real(RP),
intent(in) :: DENS_hyd(elem%Np,lmesh%NeA)
227 real(RP),
intent(in) :: PRES_hyd(elem%Np,lmesh%NeA)
228 real(RP),
intent(in) :: PRES_(elem%Np,lmesh%NeA)
229 real(RP),
intent(in) :: PT_ (elem%Np,lmesh%NeA)
230 type(SparseMat),
intent(in) :: Dx, Dy, Dz
231 type(SparseMat),
intent(in) :: Sx, Sy, Sz
232 type(SparseMat),
intent(in) :: Lift
233 logical,
intent(in) :: is_bound(elem%NfpTot,lmesh%Ne)
235 end subroutine atm_phy_tb_cal_tend
239 subroutine atm_phy_tb_cal_tend_qtrc( &
242 kh, ddens_,dens_hyd, &
243 dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, &
254 class(LocalMesh3D),
intent(in) :: lmesh
255 class(ElementBase3D),
intent(in) :: elem
256 class(LocalMesh2D),
intent(in) :: lmesh2D
257 class(ElementBase2D),
intent(in) :: elem2D
258 real(RP),
intent(out) :: RHOQ_t(elem%Np,lmesh%NeA)
259 real(RP),
intent(in) :: DFQ1(elem%Np,lmesh%NeA)
260 real(RP),
intent(in) :: DFQ2(elem%Np,lmesh%NeA)
261 real(RP),
intent(in) :: DFQ3(elem%Np,lmesh%NeA)
262 real(RP),
intent(in) :: Kh (elem%Np,lmesh%NeA)
263 real(RP),
intent(in) :: DDENS_(elem%Np,lmesh%NeA)
264 real(RP),
intent(in) :: DENS_hyd(elem%Np,lmesh%NeA)
265 type(SparseMat),
intent(in) :: Dx, Dy, Dz
266 type(SparseMat),
intent(in) :: Sx, Sy, Sz
267 type(SparseMat),
intent(in) :: Lift
268 logical,
intent(in) :: is_bound(elem%NfpTot,lmesh%Ne)
269 end subroutine atm_phy_tb_cal_tend_qtrc
279 integer :: auxtrcvars_commid
283 procedure(atm_phy_tb_cal_grad),
pointer,
nopass :: tbsolver_cal_grad => null()
284 procedure(atm_phy_tb_cal_grad_qtrc),
pointer,
nopass :: tbsolver_cal_grad_qtrc => null()
285 procedure(atm_phy_tb_final),
pointer,
nopass :: tbsolver_final => null()
286 procedure(atm_phy_tb_cal_tend),
pointer,
nopass :: tbsolver_cal_tend => null()
287 procedure(atm_phy_tb_cal_tend_qtrc),
pointer,
nopass :: tbsolver_cal_tend_qtrc => null()
289 procedure :: init => atmphytbdgmdriver_init
290 procedure :: final => atmphytbdgmdriver_final
291 procedure :: tendency => atmphytbdgmdriver_tendency
308 integer,
parameter :: tb_typeid_smagorinsky = 2
309 integer,
parameter :: tb_typeid_smagorinsky_global = 3
320 'm2/s.kg/kg.m-1', 3,
'XYZ',
'' ), &
322 'm2/s.kg/kg.m-1', 3,
'XYZ',
'' ), &
324 'm2/s.kg/kg.m-1', 3,
'XYZ',
'' ) /
328 subroutine atmphytbdgmdriver_init( this, &
329 tb_type_name, dtsec, &
335 character(len=*),
intent(in) :: tb_type_name
336 real(dp),
intent(in) :: dtsec
337 class(
modelmesh3d),
intent(inout),
target :: model_mesh3d
343 logical :: reg_file_hist
348 mesh3d => model_mesh3d%ptr_mesh
352 select case(tb_type_name)
363 this%TB_TYPEID = tb_typeid_smagorinsky
371 case (
'SMAGORINSKY_GLOBAL')
372 this%TB_TYPEID = tb_typeid_smagorinsky_global
385 log_error(
"AtmPhyTbDGMDriver_Init",*)
'Invalid TB_TYPE in namelist PARAM_ATMOS_TB. Check!'
393 call this%auxtrcvars_manager%Init()
396 reg_file_hist = .true.
398 call this%auxtrcvars_manager%Regist( &
400 this%auxtrcvars(iv), &
401 reg_file_hist, fill_zero=.true. )
406 call model_mesh3d%Create_communicator( &
408 this%auxtrcvars_manager, &
409 this%auxtrcvars(:), &
410 this%auxtrcvars_commid )
413 call this%GRAD_DENS(idim)%Init(
"Grad_DENS",
"kg/m4", mesh3d )
418 end subroutine atmphytbdgmdriver_init
421 subroutine atmphytbdgmdriver_tendency( this, &
422 TB_TENDS, PROG_VARS, TRC_VARS, AUX_VARS, &
423 AUX_TB_VARS, DIAG_TB_VARS, &
425 Dx, Dy, Dz, Sx, Sy, Sz, Lift, mesh3D, &
426 gfilter_flag, gfilter, diag_nu_kh, &
427 modal_filter_flag, modal_filter )
429 use scale_tracer,
only: &
430 qa, tracer_advc, tracer_name
440 class(
meshbase3d),
intent(in),
target :: mesh3d
447 type(
atmdynbnd),
intent(in) :: boundary_cond
448 type(
sparsemat),
intent(in) :: dx, dy, dz
449 type(
sparsemat),
intent(in) :: sx, sy, sz
451 logical,
intent(in) :: gfilter_flag
454 logical,
intent(in) :: modal_filter_flag
461 class(
meshfield3d),
pointer :: ddens, momx, momy, momz, therm
462 class(
meshfield3d),
pointer :: pres_hyd, dens_hyd, pres, pt, rtot, cptot
463 class(
meshfield3d),
pointer :: t11, t12, t13, t21, t22, t23, t31, t32, t33
467 class(
meshfield3d),
pointer :: tb_momx_t, tb_momy_t, tb_momz_t, tb_rhot_t
472 logical,
allocatable :: is_bound(:,:)
474 type(dyn_bndinfo),
allocatable :: bnd_info(:)
477 logical :: cal_grad_flag
481 call prof_rapstart(
'ATM_TB_tendency_pre', 2)
482 call prog_vars%Get3D(dens_vid , ddens)
483 call prog_vars%Get3D(therm_vid, therm)
484 call prog_vars%Get3D(momz_vid , momz )
485 call prog_vars%Get3D(momx_vid , momx )
486 call prog_vars%Get3D(momy_vid , momy )
488 call aux_vars%Get3D( preshyd_vid, pres_hyd )
489 call aux_vars%Get3D( denshyd_vid, dens_hyd )
490 call aux_vars%Get3D( pres_vid, pres )
491 call aux_vars%Get3D( pt_vid, pt )
492 call aux_vars%Get3D( rtot_vid, rtot )
493 call aux_vars%Get3D( cptot_vid, cptot )
495 call aux_tb_vars%Get3D( t11_vid, t11 )
496 call aux_tb_vars%Get3D( t12_vid, t12 )
497 call aux_tb_vars%Get3D( t13_vid, t13 )
498 call aux_tb_vars%Get3D( t21_vid, t21 )
499 call aux_tb_vars%Get3D( t22_vid, t22 )
500 call aux_tb_vars%Get3D( t23_vid, t23 )
501 call aux_tb_vars%Get3D( t31_vid, t31 )
502 call aux_tb_vars%Get3D( t32_vid, t32 )
503 call aux_tb_vars%Get3D( t33_vid, t33 )
504 call aux_tb_vars%Get3D( df1_vid, df1 )
505 call aux_tb_vars%Get3D( df2_vid, df2 )
506 call aux_tb_vars%Get3D( df3_vid, df3 )
508 call diag_tb_vars%Get3D( tke_vid, tke )
509 call diag_tb_vars%Get3D( nu_vid, nu )
510 call diag_tb_vars%Get3D( kh_vid, kh )
512 call tb_tends%Get3D( tb_momx_t_vid, tb_momx_t )
513 call tb_tends%Get3D( tb_momy_t_vid, tb_momy_t )
514 call tb_tends%Get3D( tb_momz_t_vid, tb_momz_t )
515 call tb_tends%Get3D( tb_rhot_t_vid, tb_rhot_t )
523 allocate( bnd_info(mesh3d%LOCAL_MESH_NUM) )
524 call prof_rapend(
'ATM_TB_tendency_pre', 2)
526 do n=1, mesh3d%LOCAL_MESH_NUM
527 lcmesh3d => mesh3d%lcmesh_list(n)
530 call prof_rapstart(
'ATM_PHY_TB_bnd', 2)
531 allocate( bnd_info(n)%is_bound(lcmesh3d%refElem3D%NfpTot,lcmesh3d%Ne) )
532 call boundary_cond%Inquire_bound_flag( bnd_info(n)%is_bound, &
533 n, lcmesh3d%VMapM, lcmesh3d%VMapP, lcmesh3d%VMapB, &
534 lcmesh3d, lcmesh3d%refElem3D )
536 call boundary_cond%ApplyBC_Grad_TBVARS_lc( n, &
537 ddens%local(n)%val, momx%local(n)%val, momy%local(n)%val, momz%local(n)%val, pt%local(n)%val, pres%local(n)%val, &
538 dens_hyd%local(n)%val, pres_hyd%local(n)%val, rtot%local(n)%val, cptot%local(n)%val, &
539 lcmesh3d%Gsqrt(:,:), lcmesh3d%GsqrtH(:,:), lcmesh3d%GIJ(:,:,1,1), lcmesh3d%GIJ(:,:,1,2), lcmesh3d%GIJ(:,:,2,2), &
540 lcmesh3d%GI3(:,:,1), lcmesh3d%GI3(:,:,2), &
541 lcmesh3d%normal_fn(:,:,1), lcmesh3d%normal_fn(:,:,2), lcmesh3d%normal_fn(:,:,3), &
542 lcmesh3d%vmapM, lcmesh3d%vmapP, lcmesh3d%vmapB, &
543 lcmesh3d, lcmesh3d%refElem3D, lcmesh3d%lcmesh2D, lcmesh3d%lcmesh2D%refElem2D )
544 call prof_rapend(
'ATM_PHY_TB_bnd', 2)
546 call prof_rapstart(
'ATM_PHY_TB_cal_grad', 2)
547 call this%tbsolver_cal_grad( &
548 t11%local(n)%val, t12%local(n)%val, t13%local(n)%val, &
549 t21%local(n)%val, t22%local(n)%val, t23%local(n)%val, &
550 t31%local(n)%val, t32%local(n)%val, t33%local(n)%val, &
551 df1%local(n)%val, df2%local(n)%val, df3%local(n)%val, &
552 tke%local(n)%val, nu%local(n)%val, kh%local(n)%val, &
553 ddens%local(n)%val, momx%local(n)%val, momy%local(n)%val, momz%local(n)%val, therm%local(n)%val, &
554 dens_hyd%local(n)%val, pres_hyd%local(n)%val, pres%local(n)%val, pt%local(n)%val, &
555 dx, dy, dz, sx, sy, sz, lift, lcmesh3d, lcmesh3d%refElem3D, lcmesh3d%lcmesh2D, lcmesh3d%lcmesh2D%refElem2D, &
556 bnd_info(n)%is_bound )
557 call prof_rapend(
'ATM_PHY_TB_cal_grad', 2)
561 call prof_rapstart(
'ATM_PHY_TB_exchange_prgv', 2)
562 call aux_tb_vars%MeshFieldComm_Exchange()
563 call prof_rapend(
'ATM_PHY_TB_exchange_prgv', 2)
565 if ( gfilter_flag )
then
566 call prof_rapstart(
'ATM_PHY_TB_filter_NU_KH', 2)
567 call gfilter%Apply( diag_nu_kh, mesh3d )
568 call prof_rapend(
'ATM_PHY_TB_filter_NU_KH', 2)
570 if ( modal_filter_flag )
then
571 call prof_rapstart(
'ATM_PHY_TB_filter_NU_KH', 2)
572 do n=1, mesh3d%LOCAL_MESH_NUM
573 lcmesh3d => mesh3d%lcmesh_list(n)
575 do ke=lcmesh3d%NeS, lcmesh3d%NeE
576 nu%local(n)%val(:,ke) = matmul( modal_filter%FilterMat, nu%local(n)%val(:,ke) )
577 kh%local(n)%val(:,ke) = matmul( modal_filter%FilterMat, kh%local(n)%val(:,ke) )
580 call prof_rapend(
'ATM_PHY_TB_filter_NU_KH', 2)
583 do n=1, mesh3d%LOCAL_MESH_NUM
584 lcmesh3d => mesh3d%lcmesh_list(n)
587 call prof_rapstart(
'ATM_PHY_TB_bnd', 2)
588 call boundary_cond%ApplyBC_Grad_TBStress_lc( n, &
589 t11%local(n)%val, t12%local(n)%val, t13%local(n)%val, &
590 t21%local(n)%val, t22%local(n)%val, t23%local(n)%val, &
591 t31%local(n)%val, t32%local(n)%val, t33%local(n)%val, &
592 df1%local(n)%val, df2%local(n)%val, df3%local(n)%val, &
593 lcmesh3d%Gsqrt(:,:), lcmesh3d%GsqrtH(:,:), lcmesh3d%GIJ(:,:,1,1), lcmesh3d%GIJ(:,:,1,2), lcmesh3d%GIJ(:,:,2,2), &
594 lcmesh3d%GI3(:,:,1), lcmesh3d%GI3(:,:,2), &
595 lcmesh3d%normal_fn(:,:,1), lcmesh3d%normal_fn(:,:,2), lcmesh3d%normal_fn(:,:,3), &
596 lcmesh3d%vmapM, lcmesh3d%vmapP, lcmesh3d%vmapB, &
597 lcmesh3d, lcmesh3d%refElem3D, lcmesh3d%lcmesh2D, lcmesh3d%lcmesh2D%refElem2D )
598 call prof_rapend(
'ATM_PHY_TB_bnd', 2)
600 call prof_rapstart(
'ATM_PHY_TB_cal_tend', 2)
601 call this%tbsolver_cal_tend( &
602 tb_momx_t%local(n)%val, tb_momy_t%local(n)%val, tb_momz_t%local(n)%val, tb_rhot_t%local(n)%val, &
603 t11%local(n)%val, t12%local(n)%val, t13%local(n)%val, &
604 t21%local(n)%val, t22%local(n)%val, t23%local(n)%val, &
605 t31%local(n)%val, t32%local(n)%val, t33%local(n)%val, &
606 df1%local(n)%val, df2%local(n)%val, df3%local(n)%val, nu%local(n)%val, kh%local(n)%val, &
607 ddens%local(n)%val, momx%local(n)%val, momy%local(n)%val, momz%local(n)%val, therm%local(n)%val, &
608 dens_hyd%local(n)%val, pres_hyd%local(n)%val, pres%local(n)%val, pt%local(n)%val, &
609 dx, dy, dz, sx, sy, sz, lift, lcmesh3d, lcmesh3d%refElem3D, lcmesh3d%lcmesh2D, lcmesh3d%lcmesh2D%refElem2D, &
610 bnd_info(n)%is_bound )
611 call prof_rapend(
'ATM_PHY_TB_cal_tend', 2)
614 cal_grad_flag = .true.
616 if ( .not. tracer_advc(iq) ) cycle
618 call trc_vars%Get3D( iq, qtrc )
621 do n=1, mesh3d%LOCAL_MESH_NUM
622 lcmesh3d => mesh3d%lcmesh_list(n)
624 call prof_rapstart(
'ATM_PHY_TB_cal_grad_qtrc', 2)
625 call this%tbsolver_cal_grad_qtrc( &
626 dfq1%local(n)%val, dfq2%local(n)%val, dfq3%local(n)%val, &
627 this%GRAD_DENS(1)%local(n)%val, this%GRAD_DENS(2)%local(n)%val, &
628 this%GRAD_DENS(3)%local(n)%val, &
629 kh%local(n)%val, qtrc%local(n)%val, ddens%local(n)%val, dens_hyd%local(n)%val, &
630 dx, dy, dz, sx, sy, sz, lift, lcmesh3d, lcmesh3d%refElem3D, &
631 lcmesh3d%lcmesh2D, lcmesh3d%lcmesh2D%refElem2D, &
632 bnd_info(n)%is_bound, cal_grad_flag )
633 call prof_rapend(
'ATM_PHY_TB_cal_grad_qtrc', 2)
635 cal_grad_flag = .false.
637 call this%auxtrcvars_manager%MeshFieldComm_Exchange()
639 do n=1, mesh3d%LOCAL_MESH_NUM
640 lcmesh3d => mesh3d%lcmesh_list(n)
642 call prof_rapstart(
'ATM_PHY_TB_cal_tend_qtrc', 2)
643 call this%tbsolver_cal_tend_qtrc( tb_rhoq_t%local(n)%val, &
644 dfq1%local(n)%val, dfq2%local(n)%val, dfq3%local(n)%val, &
645 kh%local(n)%val, ddens%local(n)%val, dens_hyd%local(n)%val, &
646 dx, dy, dz, sx, sy, sz, lift, lcmesh3d, lcmesh3d%refElem3D, &
647 lcmesh3d%lcmesh2D, lcmesh3d%lcmesh2D%refElem2D, &
648 bnd_info(n)%is_bound )
649 call prof_rapend(
'ATM_PHY_TB_cal_tend_qtrc', 2)
653 do n = 1, mesh3d%LOCAL_MESH_NUM
654 deallocate( bnd_info(n)%is_bound )
658 end subroutine atmphytbdgmdriver_tendency
661 subroutine atmphytbdgmdriver_final( this )
669 call this%tbsolver_final()
673 call this%GRAD_DENS(idim)%Final()
676 call this%auxtrcvars_manager%Final()
680 end subroutine atmphytbdgmdriver_final
module FElib / Fluid dyn solver / Atmosphere / Boundary
module FElib / Fluid dyn solver / Atmosphere / Nonhydrostatic model / Common
integer, parameter, public prgvar_momy_id
integer, parameter, public auxvar_cptot_id
integer, parameter, public prgvar_therm_id
integer, parameter, public prgvar_ddens_id
integer, parameter, public prgvar_momz_id
integer, parameter, public prgvar_momx_id
integer, parameter, public auxvar_num
integer, parameter, public auxvar_pt_id
integer, parameter, public prgvar_num
integer, parameter, public auxvar_preshydro_id
integer, parameter, public auxvar_denshydro_id
integer, parameter, public auxvar_rtot_id
integer, parameter, public auxvar_pres_id
module FElib / Fluid dyn solver / Atmosphere / Physics turbulence / Common
integer, parameter, public atmos_phy_tb_aux_t21_id
integer, parameter, public atmos_phy_tb_aux_diffflx3_id
subroutine, public atm_phy_tb_dgm_common_cal_tend(momx_t, momy_t, momz_t, rhot_t, t11, t12, t13, t21, t22, t23, t31, t32, t33, df1, df2, df3, nu, kh, ddens_, momx_, momy_, momz_, drhot_, dens_hyd, pres_hyd, pres_, pt_, dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, is_bound)
Calculate tendecies with turbulent model.
integer, parameter, public atmos_phy_tb_aux_t33_id
integer, parameter, public atmos_phy_tb_tends_num1
integer, parameter, public atmos_phy_tb_diag_kh_id
integer, parameter, public atmos_phy_tb_momy_t_id
subroutine, public atm_phy_tb_dgm_common_cal_grad_qtrc(dfq1, dfq2, dfq3, drdx, drdy, drdz, kh, qtrc, ddens, dens_hyd, dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, is_bound, cal_grad_dens)
Calculate parameterized diffusive mass flux of tracer with turbulent model.
integer, parameter, public atmos_phy_tb_aux_t12_id
subroutine, public atm_phy_tb_dgm_common_cal_tend_qtrc(rhoq_t, dfq1, dfq2, dfq3, kh, ddens_, dens_hyd, dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, is_bound)
Calculate tendecies of tracer density with turbulent model.
integer, parameter, public atmos_phy_tb_diag_nu_id
integer, parameter, public atmos_phy_tb_aux_num
integer, parameter, public atmos_phy_tb_momz_t_id
integer, parameter, public atmos_phy_tb_aux_t23_id
integer, parameter, public atmos_phy_tb_diag_tke_id
integer, parameter, public atmos_phy_tb_aux_t31_id
integer, parameter, public atmos_phy_tb_aux_t11_id
integer, parameter, public atmos_phy_tb_aux_t22_id
integer, parameter, public atmos_phy_tb_aux_t13_id
integer, parameter, public atmos_phy_tb_rhot_t_id
integer, parameter, public atmos_phy_tb_momx_t_id
integer, parameter, public atmos_phy_tb_aux_t32_id
integer, parameter, public atmos_phy_tb_aux_diffflx1_id
integer, parameter, public atmos_phy_tb_aux_diffflx2_id
module FElib / Atmosphere / Physics turbulence
subroutine, public atm_phy_tb_dgm_dns_init(mesh)
subroutine, public atm_phy_tb_dgm_dns_cal_grad(t11, t12, t13, t21, t22, t23, t31, t32, t33, df1, df2, df3, tke, nu, kh, ddens_, momx_, momy_, momz_, drhot_, dens_hyd, pres_hyd, pres, pt, dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, is_bound)
Calculate parameterized stress tensor and eddy heat flux with turbulent model.
subroutine, public atm_phy_tb_dgm_dns_final()
module FElib / Physics turbulence / Atmosphere / driver
type(variableinfo), dimension(atmos_phy_tb_auxtrc_num), public atmos_phy_tb_auxtrc_vinfo
integer, parameter, public atmos_phy_tb_auxtrc_dfq2_id
integer, parameter, public atmos_phy_tb_auxtrc_dfq1_id
integer, parameter, public atmos_phy_tb_auxtrc_hvec_num
integer, parameter, public atmos_phy_tb_auxtrc_num
integer, parameter, public atmos_phy_tb_auxtrc_scalar_num
integer, parameter, public atmos_phy_tb_auxtrc_dfq3_id
integer, parameter tb_typeid_dns
module FElib / Atmosphere / Physics turbulence
subroutine, public atm_phy_tb_dgm_globalsmg_cal_tend(momx_t, momy_t, momz_t, rhot_t, t11, t12, t13, t21, t22, t23, t31, t32, t33, df1, df2, df3, nu, kh, ddens_, momx_, momy_, momz_, drhot_, dens_hyd, pres_hyd, pres_, pt_, dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, is_bound)
Calculate tendecies with turbulent model.
subroutine, public atm_phy_tb_dgm_globalsmg_cal_tend_qtrc(rhoq_t, dfq1, dfq2, dfq3, kh, ddens_, dens_hyd, dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, is_bound)
Calculate tendecies of tracer density with turbulent model.
subroutine, public atm_phy_tb_dgm_globalsmg_cal_grad(t11, t12, t13, t21, t22, t23, t31, t32, t33, df1, df2, df3, tke, nu, kh, ddens_, momx_, momy_, momz_, drhot_, dens_hyd, pres_hyd, pres, pt, dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, is_bound)
Calculate parameterized stress tensor and eddy heat flux with turbulent model.
subroutine, public atm_phy_tb_dgm_globalsmg_cal_grad_qtrc(dfq1, dfq2, dfq3, drdx, drdy, drdz, kh, qtrc, ddens, dens_hyd, dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, is_bound, cal_grad_dens)
Calculate parameterized diffusive mass flux of tracer with turbulent model.
subroutine, public atm_phy_tb_dgm_globalsmg_final()
subroutine, public atm_phy_tb_dgm_globalsmg_init(mesh, shallow_atm_approx)
module FElib / Atmosphere / Physics turbulence
subroutine, public atm_phy_tb_dgm_smg_cal_grad(t11, t12, t13, t21, t22, t23, t31, t32, t33, df1, df2, df3, tke, nu, kh, ddens_, momx_, momy_, momz_, drhot_, dens_hyd, pres_hyd, pres, pt, dx, dy, dz, sx, sy, sz, lift, lmesh, elem, lmesh2d, elem2d, is_bound)
Calculate parameterized stress tensor and eddy heat flux with turbulent model.
subroutine, public atm_phy_tb_dgm_smg_final()
subroutine, public atm_phy_tb_dgm_smg_init(mesh)
module FElib / Element / Base
module FElib / Element / hexahedron
module FElib / Element/ ModalFilter
module FElib / Mesh / Local 2D
module FElib / Mesh / Local 3D
module FElib / Mesh / Local, Base
module FElib / Mesh / Base 3D
module FElib / Mesh / Cubed-sphere 3D domain
module FElib / Data / base
module FElib / Data / Filter operation
FElib / model framework / mesh manager.
FElib / model framework / variable manager.
Module common / sparsemat.
A derived type useful for apply boundary conditions.
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 hexahedral element.
Derived type representing a modal filter.
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 to manage a computational mesh (base type for 3D domain)
Derived type to manage a cubed-sphere 3D computational domain.
Derived type representing a field with 2D mesh.
Derived type representing a field with 3D mesh.
Derived type representing a field (base type)
Derived type to represent filter operation for 3D mesh field.
Derived type to manage a sparse matrix.