Skip to content
84 changes: 46 additions & 38 deletions phys/module_pbl_driver.F
Original file line number Diff line number Diff line change
Expand Up @@ -99,15 +99,15 @@ SUBROUTINE pbl_driver( &
,f_qv,f_qc,f_qr &
,f_qi,f_qs,f_qg &
! variables added for BEP
,frc_urb2d &
,a_u_bep,a_v_bep,a_t_bep,a_q_bep &
,b_u_bep,b_v_bep,b_t_bep,b_q_bep &
,sf_bep,vl_bep &
,sf_sfclay_physics,sf_urban_physics &
,tke_pbl,diss_pbl,tpe_pbl &
,tke_adv,diss_adv,tpe_adv &
,pr_pbl,el_pbl &
,wu_tur,wv_tur,wt_tur,wq_tur &
,frc_urb2d &
,a_u_bep,a_v_bep,a_t_bep,a_q_bep &
,b_u_bep,b_v_bep,b_t_bep,b_q_bep &
,sf_bep,vl_bep &
,sf_sfclay_physics,sf_urban_physics &
,tke_pbl,diss_pbl,tpe_pbl &
,tke_adv,diss_adv,tpe_adv &
,pr_pbl,el_pbl &
,wu_tur,wv_tur,wt_tur,wq_tur &
! variables added for AHE
, gmt, xtime, julday, julyr, ahe &
, distributed_ahe_opt &
Expand Down Expand Up @@ -1702,7 +1702,7 @@ SUBROUTINE pbl_driver( &
&RQSBLTEN=rqsblten, &
&RQNWFABLTEN=rqnwfablten,RQNIFABLTEN=rqnifablten, &
&RQNBCABLTEN=rqnbcablten, &
! &Ro3BLTEN=ro3blten, &
! &Ro3BLTEN=ro3blten, &
&EXCH_H=exch_h,EXCH_M=exch_m, &
&pblh=pblh,KPBL=KPBL, &
&el_pbl=el_pbl, &
Expand Down Expand Up @@ -1741,7 +1741,15 @@ SUBROUTINE pbl_driver( &
&FLAG_QNBCA=flag_qnbca, &
&IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde, &
&IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme, &
&ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte )
&ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte &
&,sf_urban_physics=sf_urban_physics,FRC_URB2D=frc_urb2d & ! BEP Changes JC 11/25
&,A_U_BEP=a_u_bep,A_V_BEP=a_v_bep,A_T_BEP=a_t_bep &
&,A_Q_BEP=a_q_bep,A_E_BEP=a_e_bep &
&,B_U_BEP=b_u_bep,B_V_BEP=b_v_bep,B_T_BEP=b_t_bep &
&,B_Q_BEP=b_q_bep,B_E_BEP=b_e_bep &
&,DLG_BEP=dlg_bep,DL_U_BEP=dl_u_bep &
&,SF_BEP=sf_bep,VL_BEP=vl_bep ) ! End BEP Changes


if (pert_mynn .and. multi_perturb == 1) then
call Remove_multi_perturb_pbl_perturbations ( &
Expand Down Expand Up @@ -2404,9 +2412,9 @@ SUBROUTINE pbl_driver( &
ENDIF
!JOE-END
#endif

IF (idiff.eq.1) THEN

IF (idiff.eq.1) THEN
!Alberto: here we call the general routine to solve the diffusion
! + all the source/sink terms.
! the only thing that should be passed from the PBL schemes is the value of the exch_h, and exch_m
Expand All @@ -2416,8 +2424,8 @@ SUBROUTINE pbl_driver( &
! As I explain below, in the routine, here we could extract the vertical turbulent
! fluxes (something that will be general for all the routines).
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


CALL diff3d (DT=dtbl,CP=cp,DZ=dz8w,TH=th_phy,QV=qv_curr,QC=qc_curr,T=t_phy &
,U=u_phy,V=v_phy,RHO=rho,EXCH_H=exch_h &
,EXCH_M=exch_m &
Expand All @@ -2442,28 +2450,28 @@ SUBROUTINE pbl_driver( &
DEALLOCATE (sf ) ! surfaces
DEALLOCATE (vl ) ! volumes
ENDIF !idiff

IF(scalar_pblmix .GT. 0)THEN
CALL diff4d (DT=dtbl,DZ=dz8w, SCALAR=scalar, is_scalar=.true. &
,RHO=rho,EXCH_H=exch_h &
,EXCH_M=exch_m &
,SCALAR_TEND=scalar_tend &
,NUM_SCALAR=num_scalar, PARAM_FIRST_SCALAR=param_first_scalar &
,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde &
,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme &
,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte)
CALL diff4d (DT=dtbl,DZ=dz8w, SCALAR=scalar, is_scalar=.true. &
,RHO=rho,EXCH_H=exch_h &
,EXCH_M=exch_m &
,SCALAR_TEND=scalar_tend &
,NUM_SCALAR=num_scalar, PARAM_FIRST_SCALAR=param_first_scalar &
,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde &
,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme &
,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte)
ENDIF
IF(tracer_pblmix .GT. 0)THEN
CALL diff4d (DT=dtbl,DZ=dz8w, SCALAR=tracer, is_scalar=.false. &
,RHO=rho,EXCH_H=exch_h &
,EXCH_M=exch_m &
,SCALAR_TEND=tracer_tend &
,NUM_SCALAR=num_tracer, PARAM_FIRST_SCALAR=param_first_scalar &
,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde &
,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme &
,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte)
ENDIF

CALL diff4d (DT=dtbl,DZ=dz8w, SCALAR=tracer, is_scalar=.false. &
,RHO=rho,EXCH_H=exch_h &
,EXCH_M=exch_m &
,SCALAR_TEND=tracer_tend &
,NUM_SCALAR=num_tracer, PARAM_FIRST_SCALAR=param_first_scalar &
,IDS=ids,IDE=ide,JDS=jds,JDE=jde,KDS=kds,KDE=kde &
,IMS=ims,IME=ime,JMS=jms,JME=jme,KMS=kms,KME=kme &
,ITS=its,ITE=ite,JTS=jts,JTE=jte,KTS=kts,KTE=kte)
ENDIF
IF (distributed_ahe_opt == 1) THEN
call cal_mon_day(julday, julyr, jmonth, jday)
ihour = (jmonth - 1) * 24 + MOD(INT(gmt + xtime / 60.0), 24)
Expand Down Expand Up @@ -2752,7 +2760,7 @@ SUBROUTINE diff3d(DT,CP,DZ,TH ,QV,QC,T,U,V,RHO &
call diff(kms,kme,kts,kte,dt,v1d,rho1d,rhoz1d,exch_m1d,a_v1d,b_v1d,sf1d, &
& vl1d,dz1d,wv1d)

! solve the diffusion for equivalent potential temperature
! solve the diffusion for equivalent potential temperature

call diff(kms,kme,kts,kte,dt,the1d,rho1d,rhoz1d,exch_h1d,a_t1d,b_t1d,sf1d, &
& vl1d,dz1d,wt1d)
Expand All @@ -2771,7 +2779,7 @@ SUBROUTINE diff3d(DT,CP,DZ,TH ,QV,QC,T,U,V,RHO &
! compute the tendencies

do k=kts,kte
rublten(i,k,j)=(u1d(k)-u(i,k,j))/dt
rublten(i,k,j)=(u1d(k)-u(i,k,j))/dt
rvblten(i,k,j)=(v1d(k)-v(i,k,j))/dt
thnew=the1d(k)/(QC(i,k,j)*(-ELOCP/T(i,k,j))+1)
rthblten(i,k,j)=(thnew-th(i,k,j))/dt
Expand Down Expand Up @@ -2967,7 +2975,7 @@ subroutine diff(kms,kme,kts,kte,dt,co,da,daz,cd,aa,bb,sf,vl,dz,fc)
izf=1

do iz=iz1,kte-1

dzv=vl(iz)*dz(iz)
a(iz,1)=-cddz(iz)*dt/dzv/da(iz)
a(iz,2)=1+dt*(cddz(iz)+cddz(iz+1))/dzv/da(iz)-aa(iz)*dt
Expand Down
5 changes: 3 additions & 2 deletions phys/module_physics_init.F
Original file line number Diff line number Diff line change
Expand Up @@ -3839,8 +3839,9 @@ SUBROUTINE bl_init(STEPBL,BLDT,DT,RUBLTEN,RVBLTEN,RTHBLTEN, &
CASE (MYNNPBLSCHEME)
IF(isfc .NE. 5 .AND. isfc .NE. 1 .AND. isfc .NE. 2) CALL wrf_error_fatal &
( 'module_physics_init: use mynnsfc or sfclay or myjsfc scheme for this pbl option')
IF ((SF_URBAN_PHYSICS.eq.2).OR.(SF_URBAN_PHYSICS.EQ.3)) CALL wrf_error_fatal &
( 'module_physics_init: use ysu (option1), myj (option 2), or boulac (option 8) with BEP/BEM urban scheme' )
! BEP LINKAGE - JC 01/2026
! IF ((SF_URBAN_PHYSICS.eq.2).OR.(SF_URBAN_PHYSICS.EQ.3)) CALL wrf_error_fatal &
! ( 'module_physics_init: use ysu (option1), myj (option 2), or boulac (option 8) with BEP/BEM urban scheme' )
CALL mynnedmf_init( &
&RUBLTEN,RVBLTEN,RTHBLTEN,RQVBLTEN,RQCBLTEN, &
Expand Down