diff --git a/.gitmodules b/.gitmodules index 4f2c7fd5e8..201b4949de 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,6 +7,9 @@ [submodule "phys/MYNN-EDMF"] path = phys/MYNN-EDMF url = https://github.com/NCAR/MYNN-EDMF +[submodule "phys/TEMPO"] + path = phys/TEMPO + url = https://github.com/NCAR/TEMPO.git [submodule "phys/MYNN-SFC"] path = phys/MYNN-SFC url = https://github.com/NCAR/MYNN-SFC.git diff --git a/Makefile b/Makefile index bd34368f0b..8373a325fe 100644 --- a/Makefile +++ b/Makefile @@ -138,6 +138,13 @@ wrf : framework_only echo "MYNN-EDMF submodule files populating WRF directories" ; \ echo "------------------------------------------------------------------------------" ; \ fi + @if [ \( ! -f phys/module_mp_tempo_driver.F90 \) -o \( ! -f phys/module_mp_tempo_main.F90 \) -o \ + \( ! -f phys/module_mp_tempo_cfgs.F90 \) -o \( ! -f phys/module_mp_tempo_aerosols.F90 \) -o \ + \( ! -f phys/module_mp_tempo_ml.F90 \) -o \( ! -f phys/module_mp_tempo_diags.F90 \) -o \ + \( ! -f phys/module_mp_tempo_utils.F90 \) -o \( ! -f phys/module_mp_tempo_params.F90 \) ] ; then \ + echo " " ; \ + echo "------------------------------------------------------------------------------" ; \ + echo "Error Error Error TEMPO submodule files not populating WRF directories" ; \ @if [ \( ! -f phys/module_sf_mynnsfc_driver.F \) -o \ \( ! -f phys/module_sf_mynnsfc_land.F \) -o \ \( ! -f phys/module_sf_mynnsfc_water.F \) -o \ @@ -151,6 +158,7 @@ wrf : framework_only exit 31 ; \ else \ echo "------------------------------------------------------------------------------" ; \ + echo "TEMPO submodule files populating WRF directories" ; \ echo "MYNN-SFC submodule files populating WRF directories" ; \ echo "------------------------------------------------------------------------------" ; \ fi diff --git a/Registry/Registry.EM_COMMON b/Registry/Registry.EM_COMMON index 8d2a74fd9f..d978d6ed1c 100644 --- a/Registry/Registry.EM_COMMON +++ b/Registry/Registry.EM_COMMON @@ -2425,7 +2425,8 @@ rconfig integer nssl_3moment namelist,physics 1 0 rconfig integer nssl_density_on namelist,physics 1 -1 rh "NSSL graupel/hail density flag" "" "" rconfig integer nssl_ssat_output namelist,physics 1 0 rh "NSSL ssat output flag" "" "" - +rconfig integer tempo_aerosolaware namelist,physics 1 1 rh "TEMPO aerosol-aware flag" "" "" +rconfig integer tempo_hailaware namelist,physics 1 1 rh "TEMPO hail-aware flag" "" "" rconfig integer CCNTY namelist,physics 1 2 rh "Aerosol background type for NTU microphysics" "" "" @@ -3044,6 +3045,7 @@ package wdm7scheme mp_physics==26 - moist:qv,qc package udmscheme mp_physics==27 - moist:qv,qc,qr,qi,qs,qg,qh;scalar:qnn,qnc,qnr;state:re_cloud,re_ice,re_snow package thompsonaero mp_physics==28 - moist:qv,qc,qr,qi,qs,qg;scalar:qni,qnr,qnc,qnwfa,qnifa,qnbca;state:re_cloud,re_ice,re_snow,qnwfa2d,qnifa2d,taod5503d,taod5502d package thompsongh mp_physics==38 - moist:qv,qc,qr,qi,qs,qg;scalar:qni,qnr,qnc,qng,qvolg,qnwfa,qnifa,qnbca;state:re_cloud,re_ice,re_snow,qnwfa2d,qnifa2d,taod5503d,taod5502d +package tempo mp_physics==88 - moist:qv,qc,qr,qi,qs,qg;scalar:qni,qnr;state:re_cloud,re_ice,re_snow package p3_1category mp_physics==50 - moist:qv,qc,qr,qi;scalar:qni,qnr,qir,qib;state:re_cloud,re_ice,vmi3d,rhopo3d,di3d,refl_10cm,th_old,qv_old package p3_1category_nc mp_physics==51 - moist:qv,qc,qr,qi;scalar:qnc,qni,qnr,qir,qib;state:re_cloud,re_ice,vmi3d,rhopo3d,di3d,refl_10cm,th_old,qv_old package p3_2category mp_physics==52 - moist:qv,qc,qr,qi,qi2;scalar:qnc,qni,qnr,qir,qib,qni2,qir2,qib2;state:re_cloud,re_ice,vmi3d,rhopo3d,di3d,vmi3d_2,rhopo3d_2,di3d_2,refl_10cm,th_old,qv_old @@ -3066,7 +3068,8 @@ package nssl_graupelvol nssl_density_on==1 - scalar:qvol package nssl_hailvol nssl_density_on==2 - scalar:qvolg,qvolh package nssl_ssat_out nssl_ssat_output==1 - state:ssat package nssl_ssati_out nssl_ssat_output==2 - state:ssat,ssati - +package tempo_aerosol tempo_aerosolaware==1 - scalar:qnc,qnwfa,qnifa;state:qnwfa2d,qnifa2d +package tempo_hail tempo_hailaware==1 - scalar:qng,qvolg package radar_refl compute_radar_ref==1 - state:refl_10cm,refd_max endif diff --git a/clean b/clean index bf063ba4d1..06514476df 100755 --- a/clean +++ b/clean @@ -85,6 +85,10 @@ if ( "$arg" == '-a' || "$arg" == '-aa' ) then run/MPTABLE.TBL /bin/rm -f phys/module_bl_mynnedmf.F phys/module_bl_mynnedmf_common.F \ phys/module_bl_mynnedmf_driver.F + /bin/rm -f phys/module_mp_tempo_cfgs.F90 phys/module_mp_tempo_params.F90 \ + phys/module_mp_tempo_utils.F90 phys/module_mp_tempo_diags.F90 \ + phys/module_mp_tempo_ml.F90 phys/module_mp_tempo_driver.F90 \ + phys/module_mp_tempo_aerosols.F90 phys/module_mp_tempo_main.F90 endif endif diff --git a/dyn_em/module_initialize_real.F b/dyn_em/module_initialize_real.F index 30a6d34a2a..275157b4e4 100644 --- a/dyn_em/module_initialize_real.F +++ b/dyn_em/module_initialize_real.F @@ -2332,7 +2332,8 @@ SUBROUTINE init_domain_rk ( grid & aer_init_opt = config_flags%aer_init_opt if_thompsonaero_3d: IF ((config_flags%mp_physics .EQ. THOMPSONAERO & - .OR. config_flags%mp_physics .EQ. RCON_MP_SCHEME) .AND. & + .OR. (config_flags%mp_physics .EQ. TEMPO .AND. config_flags%tempo_aerosolaware .EQ. 1) & + .OR. config_flags%mp_physics .EQ. RCON_MP_SCHEME) .AND. & config_flags%wif_input_opt .GT. 0) THEN select_aer_init_opt_3d: select case (aer_init_opt) @@ -2740,7 +2741,8 @@ SUBROUTINE init_domain_rk ( grid & end select select_aer_init_opt_3d ELSE IF ((config_flags%mp_physics .EQ. THOMPSONAERO & - .OR. config_flags%mp_physics .EQ. RCON_MP_SCHEME) .and. & + .OR. (config_flags%mp_physics .EQ. TEMPO .AND. config_flags%tempo_aerosolaware .EQ. 1) & + .OR. config_flags%mp_physics .EQ. RCON_MP_SCHEME) .and. & config_flags%wif_input_opt .EQ. 0 ) THEN CALL wrf_error_fatal ('wif_input_opt=0 but mp_physics=28 or mp_physics=29' ) END IF if_thompsonaero_3d @@ -4510,7 +4512,8 @@ SUBROUTINE init_domain_rk ( grid & !+---+-----------------------------------------------------------------+ if_thompsonaero_2d: IF ((config_flags%mp_physics .EQ. THOMPSONAERO & - .OR. config_flags%mp_physics .EQ. RCON_MP_SCHEME) .AND. & + .OR. (config_flags%mp_physics .EQ. TEMPO .AND. config_flags%tempo_aerosolaware .EQ. 1) & + .OR. config_flags%mp_physics .EQ. RCON_MP_SCHEME) .AND. & config_flags%wif_input_opt .GT. 0) THEN select_aer_init_opt_2d: select case (aer_init_opt) @@ -4533,7 +4536,11 @@ SUBROUTINE init_domain_rk ( grid & do j = jts, min(jde-1,jte) do i = its, min(ide-1,ite) z1 = (grid%phb(i,2,j)-grid%phb(i,1,j))/g - grid%qnwfa2d(i,j) = grid%w_wif_now(i,1,j) * 0.000196 * (50./z1) + if (config_flags%mp_physics .EQ. TEMPO) then + grid%qnwfa2d(i,j) = grid%w_wif_now(i,1,j) * 0.000196 * (5./z1) + else + grid%qnwfa2d(i,j) = grid%w_wif_now(i,1,j) * 0.000196 * (50./z1) + endif enddo enddo diff --git a/main/depend.common b/main/depend.common index e9a499501c..676f0a3cf0 100644 --- a/main/depend.common +++ b/main/depend.common @@ -1002,6 +1002,28 @@ module_mp_nssl_2mom.o: \ ../frame/module_wrf_error.o \ ../share/module_model_constants.o +module_mp_tempo_ml.o: \ + module_mp_tempo_params.o +module_mp_tempo_utils.o: \ + module_mp_tempo_params.o +module_mp_tempo_aerosols.o: \ + module_mp_tempo_params.o +module_mp_tempo_diags.o: \ + module_mp_tempo_params.o \ + module_mp_tempo_utils.o +module_mp_tempo_driver.o : \ + module_mp_tempo_params.o \ + module_mp_tempo_cfgs.o \ + module_mp_tempo_utils.o \ + module_mp_tempo_main.o \ + module_mp_tempo_ml.o +module_mp_tempo_main.o : \ + module_mp_tempo_params.o \ + module_mp_tempo_cfgs.o \ + module_mp_tempo_utils.o \ + module_mp_tempo_diags.o \ + module_mp_tempo_aerosols.o \ + module_mp_tempo_ml.o module_mp_fast_sbm.o: \ ../frame/module_domain.o \ @@ -1362,6 +1384,8 @@ module_physics_init.o: \ module_fdda_spnudging.o \ module_fddaobs_rtfdda.o \ module_mp_thompson.o \ + module_mp_tempo_cfgs.o \ + module_mp_tempo_driver.o \ module_mp_rcon.o \ module_mp_gsfcgce.o \ module_mp_gsfcgce_4ice_nuwrf.o \ @@ -1409,6 +1433,8 @@ module_microphysics_driver.o: \ module_mp_wsm6r.o \ module_mp_fer_hires.o \ module_mp_thompson.o \ + module_mp_tempo_cfgs.o \ + module_mp_tempo_driver.o \ module_mp_rcon.o \ module_mp_gsfcgce.o \ module_mp_gsfcgce_4ice_nuwrf.o \ diff --git a/phys/Makefile b/phys/Makefile index 94fc470d4b..d9a97a097e 100644 --- a/phys/Makefile +++ b/phys/Makefile @@ -97,6 +97,14 @@ MODULES = \ module_mp_etanew.o \ module_mp_fer_hires.o \ module_mp_thompson.o \ + module_mp_tempo_cfgs.o \ + module_mp_tempo_params.o \ + module_mp_tempo_utils.o \ + module_mp_tempo_diags.o \ + module_mp_tempo_ml.o \ + module_mp_tempo_aerosols.o \ + module_mp_tempo_main.o \ + module_mp_tempo_driver.o \ module_mp_rcon.o \ module_fire_emis.o \ module_mp_SBM_polar_radar.o \ @@ -238,7 +246,7 @@ DIAGNOSTIC_MODULES_EM = \ module_diag_zld.o \ module_diag_trad_fields.o \ module_diag_solar.o - + PHYSMMM_MODULES = \ physics_mmm/sf_sfclayrev.o \ physics_mmm/cu_ntiedtke.o \ @@ -287,6 +295,24 @@ submodules : else \ echo No action required for MYNN-EDMF submodule ; \ fi + @if [ \( ! -f module_mp_tempo_driver.F90 \) -o \( ! -f module_mp_tempo_main.F90 \) -o \ + \( ! -f module_mp_tempo_cfgs.F90 \) -o \( ! -f module_mp_tempo_aerosols.F90 \) -o \ + \( ! -f module_mp_tempo_ml.F90 \) -o \( ! -f modulemp_tempo_diags.F90 \) -o \ + \( ! -f module_mp_tempo_utils.F90 \) -o \( ! -f module_mp_tempo_params.F90 \) ] ; then \ + echo Pulling in TEMPO submodule ; \ + ( cd .. ; git submodule update --init --recursive ) ; \ + ln -sf TEMPO/src/module_mp_tempo_cfgs.F90 module_mp_tempo_cfgs.F90 ; \ + ln -sf TEMPO/src/module_mp_tempo_params.F90 module_mp_tempo_params.F90 ; \ + ln -sf TEMPO/src/module_mp_tempo_utils.F90 module_mp_tempo_utils.F90 ; \ + ln -sf TEMPO/src/module_mp_tempo_diags.F90 module_mp_tempo_diags.F90 ; \ + ln -sf TEMPO/src/module_mp_tempo_ml.F90 module_mp_tempo_ml.F90 ; \ + ln -sf TEMPO/src/module_mp_tempo_aerosols.F90 module_mp_tempo_aerosols.F90 ; \ + ln -sf TEMPO/src/module_mp_tempo_main.F90 module_mp_tempo_main.F90 ; \ + ln -sf TEMPO/src/module_mp_tempo_driver.F90 module_mp_tempo_driver.F90 ; \ + else \ + echo No action required for TEMPO submodule ; \ + fi + @if [ \( ! -f module_sf_mynnsfc_driver.F \) -o \( ! -f module_sf_mynnsfc_common.F \) -o \ \( ! -f module_sf_mynnsfc_land.F \) -o \( ! -f module_sf_mynnsfc_water.F \) -o \ \( ! -f module_sf_mynnsfc_ice.F \) ] ; then \ diff --git a/phys/TEMPO b/phys/TEMPO new file mode 160000 index 0000000000..e41f020bb5 --- /dev/null +++ b/phys/TEMPO @@ -0,0 +1 @@ +Subproject commit e41f020bb5194a48c3306dd99812a067cbbeab32 diff --git a/phys/module_microphysics_driver.F b/phys/module_microphysics_driver.F index 94004191cb..538d806c61 100644 --- a/phys/module_microphysics_driver.F +++ b/phys/module_microphysics_driver.F @@ -174,7 +174,7 @@ SUBROUTINE microphysics_driver( & ,WSM7SCHEME, WDM7SCHEME, UDMSCHEME & ,NUWRF4ICESCHEME & ,MILBRANDT2MOM , CAMMGMPSCHEME,FULL_KHAIN_LYNN, P3_1CATEGORY, P3_1CATEGORY_NC, P3_2CATEGORY, P3_1CAT_3MOM & - ,MORR_TM_AERO, JENSEN_ISHMAEL, SPRINKLER, NTU !,MILBRANDT3MOM + ,MORR_TM_AERO, JENSEN_ISHMAEL, SPRINKLER, NTU, TEMPO !,MILBRANDT3MOM USE module_state_description, ONLY : WSM6RSCHEME #if ( WRFPLUS == 1 ) USE module_state_description, ONLY : LSCONDSCHEME, MKESSLERSCHEME @@ -224,6 +224,9 @@ SUBROUTINE microphysics_driver( & USE module_mp_fer_hires USE module_mp_rcon USE module_mp_thompson + USE module_mp_tempo_cfgs, only : ty_tempo_cfgs + USE module_mp_tempo_driver, only : tempo_run, ty_tempo_driver_diags, & + tempo_aerosol_surface_emissions USE module_mp_full_sbm #if ( BUILD_SBM_FAST == 1 ) USE module_mp_fast_sbm @@ -796,6 +799,9 @@ SUBROUTINE microphysics_driver( & character*256 :: errmsg integer :: errflg + type(ty_tempo_cfgs) :: tempo_cfgs + type(ty_tempo_driver_diags) :: tempo_driver_diags + logical :: config_tempo_aerosolaware, config_tempo_hailaware !--------------------------------------------------------------------- ! check for microphysics type. We need a clean way to ! specify these things! @@ -1381,6 +1387,111 @@ SUBROUTINE microphysics_driver( & ELSE CALL wrf_error_fatal ( 'arguments not present for calling thompson_et_al' ) ENDIF + CASE (TEMPO) + ! add surface emissions + if (present(qnwfa_curr) .and. present(qnwfa2d)) then + call tempo_aerosol_surface_emissions(dt=dt, & + nwfa=qnwfa_curr, nwfa2d=qnwfa2d, & + ims=ims, ime=ime, jms=jms, & + jme=jme, kms=kms, kme=kme, kts=kts) + endif + + CALL wrf_debug ( 100 , 'microphysics_driver: calling tempo' ) + IF ( PRESENT( QV_CURR ) .AND. PRESENT ( QC_CURR ) .AND. & + PRESENT( QR_CURR ) .AND. PRESENT ( QI_CURR ) .AND. & + PRESENT( QS_CURR ) .AND. PRESENT ( QG_CURR ) .AND. & + PRESENT( QNR_CURR) .AND. PRESENT ( QNI_CURR)) THEN + + config_tempo_aerosolaware = .false. + config_tempo_hailaware = .false. + if (config_flags%tempo_aerosolaware == 1) config_tempo_aerosolaware = .true. + if (config_flags%tempo_hailaware == 1) config_tempo_hailaware = .true. + tempo_cfgs%aerosolaware_flag = config_tempo_aerosolaware + tempo_cfgs%hailaware_flag = config_tempo_hailaware + CALL tempo_run( & + tempo_cfgs=tempo_cfgs, & + dt=dt, & + itimestep=itimestep, & + th=th, & + pii=pi_phy, & + p=p, & + w=w, & + dz=dz8w, & + qv=qv_curr, & + qc=qc_curr, & + qr=qr_curr, & + qi=qi_curr, & + qs=qs_curr, & + qg=qg_curr, & + ni=qni_curr, & + nr=qnr_curr, & + nc=qnc_curr, & ! optionally present when tempo_aerosolaware == 1 + nwfa=qnwfa_curr, & ! optionally present when tempo_aerosolaware == 1 + nifa=qnifa_curr, & ! optionally present when tempo_aerosolaware == 1 + ng=qng_curr, & ! optionally present when tempo_hailaware == 1 + qb=qvolg_curr, & ! optionally present when tempo_hailaware == 1 + 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, & + tempo_diags = tempo_driver_diags) + ! map tempo diagnostics to WRF variable names noting that some wrf variables are optional + do j = jts, jte + do i = its, ite + if (present(snowncv)) then + snowncv(i,j) = tempo_driver_diags%ice_liquid_equiv_precip(i,j) + & + tempo_driver_diags%snow_liquid_equiv_precip(i,j) + endif + if (present(snownc)) snownc(i,j) = snownc(i,j) + snowncv(i,j) + + if (present(graupelncv)) then + graupelncv(i,j) = tempo_driver_diags%graupel_liquid_equiv_precip(i,j) + endif + if (present(graupelnc)) graupelnc(i,j) = graupelnc(i,j) + graupelncv(i,j) + + if (present(rainncv)) then + rainncv(i,j) = tempo_driver_diags%rain_precip(i,j) + snowncv(i,j) + graupelncv(i,j) + endif + if (present(rainnc)) rainnc(i,j) = rainnc(i,j) + rainncv(i,j) + ! ratio of frozen precipitation to total is not optional in wrf + sr(i,j) = tempo_driver_diags%frozen_fraction(i,j) + + if (config_flags%nwp_diagnostics == 1) then + if (present(hail_maxk1)) then + if (allocated(tempo_driver_diags%max_hail_diameter_sfc)) then + hail_maxk1(i,j) = tempo_driver_diags%max_hail_diameter_sfc(i,j) + endif + endif + if (present(hail_max2d)) then + if (allocated(tempo_driver_diags%max_hail_diameter_column)) then + hail_max2d(i,j) = tempo_driver_diags%max_hail_diameter_column(i,j) + endif + endif + endif + ! 3d tempo diagnostics + do k = kts, kte + if (do_radar_ref == 1) then + if (present(refl_10cm)) then + if (allocated(tempo_driver_diags%refl10cm)) then + refl_10cm(i,k,j) = tempo_driver_diags%refl10cm(i,k,j) + endif + endif + endif + ! effective radius values are not optional in wrf + if (allocated(tempo_driver_diags%re_cloud)) then + re_cloud(i,k,j) = tempo_driver_diags%re_cloud(i,k,j) + endif + if (allocated(tempo_driver_diags%re_ice)) then + re_ice(i,k,j) = tempo_driver_diags%re_ice(i,k,j) + endif + if (allocated(tempo_driver_diags%re_snow)) then + re_snow(i,k,j) = tempo_driver_diags%re_snow(i,k,j) + endif + enddo + enddo + enddo + ELSE + CALL wrf_error_fatal ( 'arguments not present for calling tempo' ) + ENDIF #if (EM_CORE==1) CASE (NTU) CALL wrf_debug(100, 'microphysics_driver: calling ntu') diff --git a/phys/module_physics_init.F b/phys/module_physics_init.F index fe069c771c..2e9c6640bc 100644 --- a/phys/module_physics_init.F +++ b/phys/module_physics_init.F @@ -1004,6 +1004,7 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & (config_flags%ra_sw_physics .eq. goddardswscheme ) ) .and. & (config_flags%mp_physics .eq. THOMPSON .or. & config_flags%mp_physics .eq. THOMPSONAERO .or. & + config_flags%mp_physics .eq. TEMPO .or. & config_flags%mp_physics .eq. RCON_MP_SCHEME .or. & (config_flags%mp_physics .eq. NSSL_2MOM .and. config_flags%nssl_2moment_on == 1) .or. & config_flags%mp_physics .eq. WSM3SCHEME .or. & @@ -1040,6 +1041,7 @@ SUBROUTINE phy_init ( id, config_flags, DT, restart, zfull, zhalf, & IF (( config_flags%mp_physics == THOMPSON .OR. & config_flags%mp_physics == RCON_MP_SCHEME .OR. & config_flags%mp_physics == THOMPSONAERO .OR. & + config_flags%mp_physics == TEMPO .OR. & config_flags%mp_physics == WSM3SCHEME .OR. & config_flags%mp_physics == WSM5SCHEME .OR. & config_flags%mp_physics == WSM6SCHEME .OR. & @@ -4403,6 +4405,8 @@ SUBROUTINE mp_init(RAINNC,SNOWNC,GRAUPELNC,config_flags,restart,warm_rain, USE module_mp_wdm6 USE module_mp_wdm7 USE module_mp_udm + USE module_mp_tempo_cfgs, only : ty_tempo_cfgs + USE module_mp_tempo_driver, only : tempo_init #if (WRFPLUS != 1) & !defined( VAR4D ) USE module_mp_nssl_2mom, only: nssl_2mom_init #endif @@ -4447,6 +4451,8 @@ SUBROUTINE mp_init(RAINNC,SNOWNC,GRAUPELNC,config_flags,restart,warm_rain, INTEGER, INTENT(IN) :: num_sc ! G. Thompson REAL, DIMENSION(ims:ime,kms:kme,jms:jme, num_sc), INTENT(INOUT):: scalar ! G. Thompson + type(ty_tempo_cfgs) :: tempo_cfgs ! for tempo + logical :: config_tempo_aerosolaware, config_tempo_hailaware ! Local INTEGER :: i, j, itf, jtf REAL, DIMENSION(20) :: nssl_params @@ -4575,6 +4581,14 @@ SUBROUTINE mp_init(RAINNC,SNOWNC,GRAUPELNC,config_flags,restart,warm_rain, IMS=ims, IME=ime, JMS=jms, JME=jme, KMS=kms, KME=kme, & ITS=its, ITE=ite, JTS=jts, JTE=jte, KTS=kts, KTE=kte) + CASE (TEMPO) + config_tempo_aerosolaware = .false. + config_tempo_hailaware = .false. + if (config_flags%tempo_aerosolaware == 1) config_tempo_aerosolaware = .true. + if (config_flags%tempo_hailaware == 1) config_tempo_hailaware = .true. + CALL tempo_init(aerosolaware_flag=config_tempo_aerosolaware, & + hailaware_flag=config_tempo_hailaware, tempo_cfgs=tempo_cfgs) + CASE (MORR_TWO_MOMENT) CALL morr_two_moment_init( config_flags%morr_rimed_ice ) #if (EM_CORE==1) diff --git a/share/module_check_a_mundo.F b/share/module_check_a_mundo.F index 03bb74ba96..6ab24c7848 100644 --- a/share/module_check_a_mundo.F +++ b/share/module_check_a_mundo.F @@ -2533,7 +2533,9 @@ END FUNCTION bep_bem_ngr_u ! Set aer_init_opt for Thompson-MP-Aero (mp_physics=28) AND rcon mp (mp_physics=29) !----------------------------------------------------------------------- DO i = 1, model_config_rec % max_dom - IF ( model_config_rec%mp_physics(i) .EQ. THOMPSONAERO .OR. model_config_rec%mp_physics(i) .EQ. RCON_MP_SCHEME ) THEN + IF ( model_config_rec%mp_physics(i) .EQ. THOMPSONAERO .OR. & + (model_config_rec%mp_physics(i) .EQ. TEMPO .AND. model_config_rec%tempo_aerosolaware .EQ. 1) .OR. & + model_config_rec%mp_physics(i) .EQ. RCON_MP_SCHEME ) THEN IF ( model_config_rec%use_aero_icbc ) THEN model_config_rec%aer_init_opt = 1 ELSE IF ( model_config_rec%use_rap_aero_icbc ) THEN