diff --git a/phys/MYNN-EDMF b/phys/MYNN-EDMF index 809bcaec90..b25bd6b2ee 160000 --- a/phys/MYNN-EDMF +++ b/phys/MYNN-EDMF @@ -1 +1 @@ -Subproject commit 809bcaec9033525b3deb58bc125ab8c37e9b0025 +Subproject commit b25bd6b2ee71415ace77428ae52a6f69fe35182f diff --git a/phys/module_pbl_driver.F b/phys/module_pbl_driver.F index 5c53524a03..bf4845f3d0 100644 --- a/phys/module_pbl_driver.F +++ b/phys/module_pbl_driver.F @@ -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 & @@ -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, & @@ -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 ( & @@ -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 @@ -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 & @@ -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) @@ -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) @@ -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 @@ -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 diff --git a/phys/module_physics_init.F b/phys/module_physics_init.F index 67b1b61537..88a0e2fa50 100644 --- a/phys/module_physics_init.F +++ b/phys/module_physics_init.F @@ -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, &