diff --git a/CMakeLists.txt b/CMakeLists.txt index 62b2d06df..c169d371b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -143,6 +143,7 @@ SET_PROPERTY(SOURCE ${SCHEMES} ${CAPS} if(CMAKE_BUILD_TYPE STREQUAL "Release" AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel" OR ${CMAKE_Fortran_COMPILER_ID} STREQUAL "IntelLLVM")) # Define a list of schemes that need lower optimization with Intel in Release mode set(SCHEME_NAMES_LOWER_OPTIMIZATION module_sf_mynn.F90 + module_mp_nssl_2mom.F90 mynnedmf_wrapper.F90 gcycle.F90 module_mp_nssl_2mom.F90) diff --git a/physics/CONV/Grell_Freitas/cu_gf_deep.F90 b/physics/CONV/Grell_Freitas/cu_gf_deep.F90 index 34960f037..5780272c6 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_deep.F90 +++ b/physics/CONV/Grell_Freitas/cu_gf_deep.F90 @@ -426,9 +426,9 @@ subroutine cu_gf_deep_run( & integer :: turn,pmin_lev(its:ite),start_level(its:ite),ktopkeep(its:ite) real(kind=kind_phys), dimension (its:ite,kts:kte) :: dtempdz integer, dimension (its:ite,kts:kte) :: k_inv_layers - real(kind=kind_phys), dimension (its:ite) :: c0 ! HCB + real(kind=kind_phys), dimension (its:ite) :: c0, rrfs_factor ! HCB real(kind=kind_phys), dimension (its:ite,kts:kte) :: c0t3d ! hli for smoke/dust wet scavenging -!$acc declare create(pmin_lev,start_level,ktopkeep,dtempdz,k_inv_layers,c0,c0t3d) +!$acc declare create(pmin_lev,start_level,ktopkeep,dtempdz,k_inv_layers,c0,rrfs_factor,c0t3d) ! rainevap from sas real(kind=kind_phys) zuh2(40) @@ -487,6 +487,7 @@ subroutine cu_gf_deep_run( & ! Set cloud water to rain water conversion rate (c0) !$acc kernels c0(:)=0.004 + rrfs_factor(:)=1. do i=its,itf xland1(i)=int(xland(i)+.0001) ! 1. if(xland(i).gt.1.5 .or. xland(i).lt.0.5)then @@ -496,6 +497,7 @@ subroutine cu_gf_deep_run( & if(imid.eq.1)then c0(i)=0.002 endif + if(kdt.le.(4500./dtime))rrfs_factor(i)=1.-(float(kdt)/(4500./dtime)-1.)**2 enddo !$acc end kernels @@ -592,7 +594,6 @@ subroutine cu_gf_deep_run( & sig(i)=(1.-frh)**2 !frh_out(i) = frh if(forcing(i,7).eq.0.)sig(i)=1. - if(kdt.le.(3600./dtime))sig(i)=1. frh_out(i) = frh*sig(i) enddo !$acc end kernels @@ -2030,7 +2031,7 @@ subroutine cu_gf_deep_run( & zuo,pre,pwo_ens,xmb,ktop, & edto,pwdo,'deep',ierr2,ierr3, & po_cup,pr_ens,maxens3, & - sig,closure_n,xland1,xmbm_in,xmbs_in, & + sig,closure_n,xland1,xmbm_in,xmbs_in,rrfs_factor, & ichoice,imid,ipr,itf,ktf, & its,ite, kts,kte, & dicycle,xf_dicycle ) @@ -4057,7 +4058,7 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & zu,pre,pw,xmb,ktop, & edt,pwd,name,ierr2,ierr3,p_cup,pr_ens, & maxens3, & - sig,closure_n,xland1,xmbm_in,xmbs_in, & + sig,closure_n,xland1,xmbm_in,xmbs_in,rrfs_factor, & ichoice,imid,ipr,itf,ktf, & its,ite, kts,kte, & dicycle,xf_dicycle ) @@ -4119,7 +4120,7 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & ,intent (inout) :: & ierr,ierr2,ierr3 integer, intent(in) :: dicycle - real(kind=kind_phys), intent(in), dimension (its:ite) :: xf_dicycle + real(kind=kind_phys), intent(in), dimension (its:ite) :: xf_dicycle, rrfs_factor !$acc declare copyin(zu,pwd,p_cup,sig,xmbm_in,xmbs_in,edt,xff_mid,dellat,dellaqc,dellaq,pw,ktop,xland1,xf_dicycle) !$acc declare copy(xf_ens,pr_ens,outtem,outq,outqc,pre,xmb,closure_n,ierr,ierr2,ierr3) ! @@ -4199,6 +4200,7 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & clos_wei=16./max(1.,closure_n(i)) xmb_ave(i)=min(xmb_ave(i),100.) xmb(i)=clos_wei*sig(i)*xmb_ave(i) + if(dx(i) 0 + maxupmf(i)=0. + if(forcing2(i,6).gt.0.)then + maxupmf(i)=maxval(xmb(i)*zu(i,kts:ktf)/forcing2(i,6)) + endif + if (xland(i)==0)then ! cu precip rate (mm/h) + if((maxupmf(i).lt.0.1) .or. (pret(i)*3600.lt.0.05)) pret(i)=0. + endif if(pret(i).gt.0.)then cuten(i)=1. cutenm(i)=0. @@ -999,10 +1006,6 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& gdc(i,15,10)=qfx(i) gdc(i,16,10)=pret(i)*3600. - maxupmf(i)=0. - if(forcing2(i,6).gt.0.)then - maxupmf(i)=maxval(xmb(i)*zu(i,kts:ktf)/forcing2(i,6)) - endif if(ktop(i).gt.2 .and.pret(i).gt.0.)dt_mf(i,ktop(i)-1)=ud_mf(i,ktop(i)) endif diff --git a/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 b/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 index aa81e0999..7971ddc35 100644 --- a/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 +++ b/physics/PBL/MYNN_EDMF/module_bl_mynn.F90 @@ -2002,7 +2002,7 @@ SUBROUTINE mym_length ( & ugrid = sqrt(u1(kts)**2 + v1(kts)**2) uonset= 15. wt_u = (1.0 - min(max(ugrid - uonset, 0.0)/30.0, 0.5)) - cns = 2.7 !was 3.5 + cns = 3.5 alp1 = 0.23 alp2 = 0.3 alp3 = 2.5 * wt_u !taper off bouyancy enhancement in shear-driven pbls @@ -2036,7 +2036,7 @@ SUBROUTINE mym_length ( & zwk = zw(k) DO WHILE (zwk .LE. zi2+h1) dzk = 0.5*( dz(k)+dz(k-1) ) - qdz = min(max( qkw(k)-qmin, 0.03 ), 30.0)*dzk + qdz = min(max( qkw(k)-qmin, 0.02 ), 30.0)*dzk elt = elt +qdz*zwk vsc = vsc +qdz k = k+1 @@ -5033,7 +5033,7 @@ SUBROUTINE mynn_tendencies(kts,kte,i, & IF (FLAG_QI) THEN DO k=kts,kte Dth(k)=(thl(k) + xlvcp/exner(k)*sqc2(k) & - & + xlscp/exner(k)*(sqi2(k)+sqs(k)) & + & + xlscp/exner(k)*(sqi2(k)) & !+sqs(k)) & & - th(k))/delt !Use form from Tripoli and Cotton (1981) with their !suggested min temperature to improve accuracy: @@ -6054,7 +6054,7 @@ SUBROUTINE DMP_mf( & if ((landsea-1.5).LT.0) then !land acfac = .5*tanh((fltv2 - 0.02)/0.05) + .5 else !water - acfac = .5*tanh((fltv2 - 0.01)/0.03) + .5 + acfac = .5*tanh((fltv2 - 0.015)/0.04) + .5 endif !add a windspeed-dependent adjustment to acfac that tapers off !the mass-flux scheme linearly above sfc wind speeds of 10 m/s. diff --git a/physics/SFC_Models/Land/RUC/lsm_ruc.F90 b/physics/SFC_Models/Land/RUC/lsm_ruc.F90 index 9a41b066b..98f890e9d 100644 --- a/physics/SFC_Models/Land/RUC/lsm_ruc.F90 +++ b/physics/SFC_Models/Land/RUC/lsm_ruc.F90 @@ -1313,8 +1313,7 @@ subroutine lsm_ruc_run & ! inputs ! --- ... accumulated total runoff and surface runoff runoff(i) = runoff(i) + (drain(i)+runof(i)) * delt ! accum total kg m-2 - !srunoff(i) = srunoff(i) + runof(i) * delt ! accum surface kg m-2 - srunoff(i) = acrunoff(i,j) ! accum surface kg m-2 + srunoff(i) = srunoff(i) + runof(i) * delt ! accum surface kg m-2 ! --- ... accumulated frozen precipitation (accumulation in lsmruc) snowfallac_lnd(i) = snfallac_lnd(i,j) ! accum kg m-2 diff --git a/physics/SFC_Models/Land/RUC/module_sf_ruclsm.F90 b/physics/SFC_Models/Land/RUC/module_sf_ruclsm.F90 index 66e5d7d1f..59837037c 100644 --- a/physics/SFC_Models/Land/RUC/module_sf_ruclsm.F90 +++ b/physics/SFC_Models/Land/RUC/module_sf_ruclsm.F90 @@ -1740,7 +1740,7 @@ SUBROUTINE SFCTMP (debug_print, delt,ktau,conflx,i,j, & !--- input varia !-- will reduce warm bias in western Canada !-- and US West coast, where max snow albedo is low (0.3-0.5). !print *,'ALB increase to 0.7',alb_snow,snhei,snhei_crit,albsn,i,j - !ALBsn = 0.7_kind_phys + ALBsn = 0.7_kind_phys endif Emiss= emissn @@ -1753,7 +1753,7 @@ SUBROUTINE SFCTMP (debug_print, delt,ktau,conflx,i,j, & !--- input varia !-- will reduce warm bias in western Canada !-- and US West coast, where max snow albedo is low (0.3-0.5). !print *,'ALB increase to 0.7',alb_snow,snhei,snhei_crit,albsn,i,j - !ALBsn = 0.7_kind_phys + ALBsn = 0.7_kind_phys !print *,'NO mosaic ALB increase to 0.7',alb_snow,snhei,snhei_crit,alb,i,j endif diff --git a/physics/smoke_dust/module_smoke_plumerise.F90 b/physics/smoke_dust/module_smoke_plumerise.F90 index aa45890f4..13016d929 100755 --- a/physics/smoke_dust/module_smoke_plumerise.F90 +++ b/physics/smoke_dust/module_smoke_plumerise.F90 @@ -109,12 +109,6 @@ subroutine plumerise(m1,m2,m3,ia,iz,ja,jz, & ! print *,' Plumerise_scalar 1',ncall coms => get_thread_coms() -IF (frp_inst