Skip to content

Commit

Permalink
ESCOMP tag: cam6_4_028
Browse files Browse the repository at this point in the history
Merge pull request ESCOMP#1104 from fvitt/dust_emissions

cam6_4_028: Dust emissions

ESCOMP commit: d125217
  • Loading branch information
fvitt authored and Steve Goldhaber committed Oct 16, 2024
1 parent 7e4fb3e commit 7ced55f
Show file tree
Hide file tree
Showing 6 changed files with 354 additions and 57 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
./xmlchange ROF_NCPL=\$ATM_NCPL
./xmlchange GLC_NCPL=\$ATM_NCPL
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
dust_emis_method = 'Leung_2023'

fincl2 = 'dst_a1SF', 'dst_a2SF', 'dst_a3SF'

mfilt=1,1,1,1,1,1
ndens=1,1,1,1,1,1
nhtfrq=9,9,9,9,9,9
write_nstep0=.true.
inithist='ENDOFRUN'
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
!----------------------------------------------------------------------------------
! Users should add all user specific namelist changes below in the form of
! namelist_var = new_namelist_value
!
! Include namelist variables for drv_flds_in ONLY if -megan and/or -drydep options
! are set in the CLM_NAMELIST_OPTS env variable.
!
! EXCEPTIONS:
! Set use_cndv by the compset you use and the CLM_BLDNML_OPTS -dynamic_vegetation setting
! Set use_vichydro by the compset you use and the CLM_BLDNML_OPTS -vichydro setting
! Set use_cn by the compset you use and CLM_BLDNML_OPTS -bgc setting
! Set use_crop by the compset you use and CLM_BLDNML_OPTS -crop setting
! Set spinup_state by the CLM_BLDNML_OPTS -bgc_spinup setting
! Set irrigate by the CLM_BLDNML_OPTS -irrig setting
! Set dtime with L_NCPL option
! Set fatmlndfrc with LND_DOMAIN_PATH/LND_DOMAIN_FILE options
! Set finidat with RUN_REFCASE/RUN_REFDATE/RUN_REFTOD options for hybrid or branch cases
! (includes $inst_string for multi-ensemble cases)
! Set glc_grid with CISM_GRID option
! Set glc_smb with GLC_SMB option
! Set maxpatch_glcmec with GLC_NEC option
! Set glc_do_dynglacier with GLC_TWO_WAY_COUPLING env variable
!----------------------------------------------------------------------------------
hist_nhtfrq = 9
hist_mfilt = 1
hist_ndens = 1

185 changes: 185 additions & 0 deletions doc/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,190 @@
===============================================================

Tag name: cam6_4_028
Originator(s): fvitt
Date: 4 Sep 2024
One-line Summary: Add capability to use Leung dust emission scheme
Github PR URL: https://github.com/ESCOMP/CAM/pull/1104

Purpose of changes (include the issue number and title text for each relevant GitHub issue):

Add the capability to use Leung_2023 land model dust emission scheme.
Zender_2003 is the default scheme for all F compsets.
(issues #141 and #654)

NOTE: This reverts cam7 compsets back to Zender_2003 dust emissions.
In tag cam6_4_027 cam7 compsets dust emissions scheme defaulted to
Leung_2023 and where not properly scaled.

Describe any changes made to build system: N/A

Describe any changes made to the namelist: N/A

List any changes to the defaults for the boundary datasets: N/A

Describe any substantial timing or memory changes: N/A

Code reviewed by: ekluzek, cacraigucar

List all files eliminated: N/A

List all files added and what they do:
A cime_config/testdefs/testmods_dirs/cam/outfrq9s_Leung_dust/shell_commands
A cime_config/testdefs/testmods_dirs/cam/outfrq9s_Leung_dust/user_nl_cam
A cime_config/testdefs/testmods_dirs/cam/outfrq9s_Leung_dust/user_nl_clm
- add test for Leung_2023 dust emis scheme

List all existing files that have been modified, and describe the changes:
M bld/build-namelist
M bld/namelist_files/namelist_defaults_cam.xml
- set default dust emis namelist settings (Zender_2003 is the default scheme)

M bld/namelist_files/namelist_definition.xml
- new dust emis namelist vars:
. dust_emis_method ('Zender_2003' or 'Leung_2023')
. zend_soil_erod_source ('atm' or 'lnd')

M cime_config/config_compsets.xml
- override the 'LND_SETS_DUST_EMIS_DRV_FLDS' xml setting to be FALSE for cam7/clm6 F compsets

M cime_config/testdefs/testlist_cam.xml
- increase time for aux_cam HEMCO test
- regression test Leung_2023 dust emis scheme

M src/chemistry/bulk_aero/dust_model.F90
M src/chemistry/modal_aero/dust_model.F90
- use soil_erod only if Zender scheme is used

If there were any failures reported from running test_driver.sh on any test
platform, and checkin with these failures has been OK'd by the gatekeeper,
then copy the lines from the td.*.status files for the failed tests to the
appropriate machine below. All failed tests must be justified.

derecho/intel/aux_cam:
PEND SMS_D_Ln9_P1280x1.ne0CONUSne30x8_ne0CONUSne30x8_mt12.FCHIST.derecho_intel.cam-outfrq9s
- pre-existing failures -- need fix in CLM external

FAIL ERP_Ln9.f09_f09_mg17.FCSD_HCO.derecho_intel.cam-outfrq9s COMPARE_base_rest
- pre-existing failure due to HEMCO not having reproducible results issues #1018 and #856

DIFF ERP_D_Ln9.ne30pg3_ne30pg3_mg17.FLTHIST.derecho_intel.cam-outfrq9s
DIFF ERP_D_Ln9.ne30pg3_ne30pg3_mg17.FLTHIST.derecho_intel.cam-outfrq9s_rrtmgp
DIFF SMS_D_Ln9.ne30pg3_ne30pg3_mg17.FCts4MTHIST.derecho_intel.cam-outfrq9s
DIFF SMS_D_Ln9.ne30pg3_ne30pg3_mg17.FMTHIST.derecho_intel.cam-outfrq9s
- differences due to switching dust emis scheme from Leung_2023 to Zender_2003

DIFF SMS_D_Ln9_P1280x1.ne30pg3_ne30pg3_mg17.FCLTHIST.derecho_intel.cam-outfrq9s_Leung_dust
- new reg test -- no baseline to compare against

NLFAIL ERC_D_Ln9.f19_f19_mg17.QPC6.derecho_intel.cam-outfrq3s_cosp
NLFAIL ERC_D_Ln9.f19_f19_mg17.QPMOZ.derecho_intel.cam-outfrq3s
NLFAIL ERC_D_Ln9.f19_f19_mg17.QPX2000.derecho_intel.cam-outfrq3s
NLFAIL ERC_D_Ln9.ne16_ne16_mg17.FADIAB.derecho_intel.cam-terminator
NLFAIL ERC_D_Ln9.ne16_ne16_mg17.QPC5HIST.derecho_intel.cam-outfrq3s_usecase
NLFAIL ERC_D_Ln9_P144x1.ne16pg3_ne16pg3_mg17.QPC6HIST.derecho_intel.cam-outfrq3s_ttrac_usecase
NLFAIL ERC_D_Ln9.T42_T42_mg17.FDABIP04.derecho_intel.cam-outfrq3s_usecase
NLFAIL ERC_D_Ln9.T42_T42_mg17.FHS94.derecho_intel.cam-outfrq3s_usecase
NLFAIL ERI_D_Ln18.f45_f45_mg37.QPC41850.derecho_intel.cam-co2rmp_usecase
NLFAIL ERP_D_Ln9.f19_f19_mg17.QPC6.derecho_intel.cam-outfrq9s
NLFAIL ERP_D_Ln9_P64x2.f09_f09_mg17.QSC6.derecho_intel.cam-outfrq9s
NLFAIL ERP_Ln9_P24x3.f45_f45_mg37.QPWmaC6.derecho_intel.cam-outfrq9s_mee_fluxes
NLFAIL ERS_Ln9.f19_f19_mg17.FSPCAMS.derecho_intel.cam-outfrq9s
NLFAIL ERS_Ln9.ne0TESTONLYne5x4_ne0TESTONLYne5x4_mg37.FADIAB.derecho_intel.cam-outfrq3s_refined
NLFAIL SCT_D_Ln7.ne3_ne3_mg37.QPC5.derecho_intel.cam-scm_prep
NLFAIL SCT_D_Ln7.T42_T42_mg17.QPC5.derecho_intel.cam-scm_prep
NLFAIL SMS_D_Ld2.f19_f19_mg17.QPC5HIST.derecho_intel.cam-volc_usecase
NLFAIL SMS_D_Ld5.f19_f19_mg17.PC4.derecho_intel.cam-cam4_port5d
NLFAIL SMS_D_Ln9.f19_f19_mg17.QPC2000climo.derecho_intel.cam-outfrq3s_usecase
NLFAIL SMS_D_Ln9.f19_f19_mg17.QPC5M7.derecho_intel.cam-outfrq9s
NLFAIL SMS_D_Ln9.ne16_ne16_mg17.QPX2000.derecho_intel.cam-outfrq9s
NLFAIL SMS_Ld5.f09_f09_mg17.PC6.derecho_intel.cam-cam6_port_f09
NLFAIL SMS_Ln9.f19_f19_mg17.FHIST.derecho_intel.cam-outfrq9s_nochem
- namelist compare failures due to dust_emis_inparm namelist in drv_flds_in
otherwise bit-for-bit

derecho/nvhpc/aux_cam:
DIFF ERS_Ln9_G4-a100-openacc.ne30pg3_ne30pg3_mg17.F2000dev.derecho_nvhpc.cam-outfrq9s_mg3_default
- difference due to switching dust emis scheme from Leung_2023 to Zender_2003

izumi/nag/aux_cam:
FAIL DAE.f45_f45_mg37.FHS94.izumi_nag.cam-dae
- pre-existing failure - issue #670

NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-carma_sea_salt
NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-outfrq3s_cosp
NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-outfrq3s_subcol
NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC6.izumi_nag.cam-outfrq3s_am
NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC6.izumi_nag.cam-outfrq3s_cospsathist
NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC6.izumi_nag.cam-outfrq3s
NLFAIL ERC_D_Ln9.f10_f10_mg37.QPWmaC6.izumi_nag.cam-outfrq3s
NLFAIL ERC_D_Ln9.f10_f10_mg37.QSPCAMS.izumi_nag.cam-outfrq3s
NLFAIL ERC_D_Ln9.mpasa480z32_mpasa480.FHS94.izumi_nag.cam-outfrq3s_usecase
NLFAIL ERC_D_Ln9.ne16_ne16_mg17.QPC4.izumi_nag.cam-outfrq3s_usecase
NLFAIL ERC_D_Ln9.ne16pg3_ne16pg3_mg17.QPC4.izumi_nag.cam-outfrq3s_usecase
NLFAIL ERC_D_Ln9.ne5_ne5_mg37.QPC5.izumi_nag.cam-outfrq3s_ttrac
NLFAIL ERC_D_Ln9.T5_T5_mg37.QPC4.izumi_nag.cam-outfrq3s_usecase
NLFAIL ERI_D_Ln18.f10_f10_mg37.QPC5.izumi_nag.cam-outfrq3s_eoyttrac
NLFAIL ERI_D_Ln18.f19_f19_mg17.QPC6.izumi_nag.cam-ghgrmp_e8
NLFAIL ERI_D_Ln18.ne5_ne5_mg37.FADIAB.izumi_nag.cam-outfrq3s_bwic
NLFAIL ERI_D_Ln18.ne5pg3_ne5pg3_mg37.FADIAB.izumi_nag.cam-outfrq3s_bwic
NLFAIL ERP_Ln9.ne5pg3_ne5pg3_mg37.QPC6.izumi_nag.cam-outfrq9s_clubbmf
NLFAIL ERS_Ln27.ne5pg3_ne5pg3_mg37.FKESSLER.izumi_nag.cam-outfrq9s
NLFAIL ERS_Ln9.ne5_ne5_mg37.FADIAB.izumi_nag.cam-outfrq9s
NLFAIL PEM_D_Ln9.ne5_ne5_mg37.FADIAB.izumi_nag.cam-outfrq3s
NLFAIL PLB_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-ttrac_loadbal0
NLFAIL PLB_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-ttrac_loadbal1
NLFAIL PLB_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-ttrac_loadbal3
NLFAIL PLB_D_Ln9.ne5_ne5_mg37.QPC5.izumi_nag.cam-ttrac_loadbal0
NLFAIL PLB_D_Ln9.ne5_ne5_mg37.QPC5.izumi_nag.cam-ttrac_loadbal1
NLFAIL PLB_D_Ln9.ne5_ne5_mg37.QPC5.izumi_nag.cam-ttrac_loadbal3
NLFAIL SMS_D_Ld2.f45_f45_mg37.PC5.izumi_nag.cam-outfrq24h_port
NLFAIL SMS_D_Ln3.ne5pg3_ne5pg3_mg37.QPX2000.izumi_nag.cam-outfrq3s
NLFAIL SMS_D_Ln6.ne5_ne5_mg37.QPWmaC4.izumi_nag.cam-outfrq3s_physgrid_tem
NLFAIL SMS_D_Ln7.T42_T42_mg17.QPSCAMC5.izumi_nag.cam-scmarm
NLFAIL SMS_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-rad_diag_mam
NLFAIL SMS_D_Ln9.f10_f10_mg37.QPC6.izumi_nag.cam-outfrq3s_ba
NLFAIL SMS_D_Ln9_P1x1.ne5_ne5_mg37.FADIAB.izumi_nag.cam-outfrq3s
NLFAIL SMS_P48x1_D_Ln3.f09_f09_mg17.QPC6HIST.izumi_nag.cam-outfrq3s_co2cycle_usecase
NLFAIL SUB_D_Ln9.f10_f10_mg37.QPC5.izumi_nag.cam-outfrq3s
NLFAIL TMC_D.f10_f10_mg37.QPC5.izumi_nag.cam-outfrq3s_eoyttrac
NLFAIL TMC_D.T5_T5_mg37.QPC5.izumi_nag.cam-ghgrmp_e8
- namelist compare failures due to dust_emis_inparm namelist in drv_flds_in
otherwise bit-for-bit

izumi/gnu/aux_cam:
NLFAIL ERC_D_Ln9.f10_f10_mg37.FADIAB.izumi_gnu.cam-terminator
NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC4.izumi_gnu.cam-outfrq3s_diags
NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC5.izumi_gnu.cam-outfrq3s_unicon
NLFAIL ERC_D_Ln9.f10_f10_mg37.QPC5.izumi_gnu.cam-rad_diag
NLFAIL ERC_D_Ln9.f10_f10_mg37.QPSPCAMM.izumi_gnu.cam-outfrq3s
NLFAIL ERC_D_Ln9.ne5_ne5_mg37.QPC4.izumi_gnu.cam-outfrq3s_nudging_ne5_L26
NLFAIL ERC_D_Ln9.ne5_ne5_mg37.QPC5.izumi_gnu.cam-outfrq3s_ba
NLFAIL ERC_D_Ln9.ne5pg2_ne5pg2_mg37.FADIAB.izumi_gnu.cam-outfrq3s
NLFAIL ERC_D_Ln9.ne5pg3_ne5pg3_mg37.FADIAB.izumi_gnu.cam-outfrq3s
NLFAIL ERI_D_Ln18.T5_T5_mg37.QPC4.izumi_gnu.cam-co2rmp
NLFAIL ERP_D_Ln9.C48_C48_mg17.QPC6.izumi_gnu.cam-outfrq9s
NLFAIL ERP_D_Ln9.ne3pg3_ne3pg3_mg37.QPC6.izumi_gnu.cam-outfrq9s_rrtmgp
NLFAIL ERP_Ln9.ne5_ne5_mg37.FHS94.izumi_gnu.cam-outfrq9s
NLFAIL ERP_Ln9.ne5_ne5_mg37.QPC5.izumi_gnu.cam-outfrq9s
NLFAIL PEM_D_Ln9.ne5pg3_ne5pg3_mg37.FADIAB.izumi_gnu.cam-outfrq3s
NLFAIL PLB_D_Ln9.ne5pg3_ne5pg3_mg37.QPC5.izumi_gnu.cam-ttrac_loadbal0
NLFAIL PLB_D_Ln9.ne5pg3_ne5pg3_mg37.QPC5.izumi_gnu.cam-ttrac_loadbal1
NLFAIL PLB_D_Ln9.ne5pg3_ne5pg3_mg37.QPC5.izumi_gnu.cam-ttrac_loadbal3
NLFAIL SCT_D_Ln7.ne3_ne3_mg37.QPC6.izumi_gnu.cam-scm_prep_c6
NLFAIL SCT_D_Ln7.T42_T42_mg17.QPC4.izumi_gnu.cam-scm_prep
NLFAIL SCT_D_Ln7.T42_T42_mg17.QPC6.izumi_gnu.cam-scm_prep_c6
NLFAIL SMS_D_Ln3.f10_f10_mg37.QPMOZ.izumi_gnu.cam-outfrq3s_chemproc
NLFAIL SMS_D_Ln9.f10_f10_mg37.QPWmaC4.izumi_gnu.cam-outfrq9s_apmee
NLFAIL SMS_D_Ln9.ne5pg3_ne5pg3_mg37.QPC5.izumi_gnu.cam-outfrq3s_ttrac
NLFAIL SMS_Ld5.f09_f09_mg17.PC6.izumi_gnu.cam-cam6_port_f09_rrtmgp
- namelist compare failures due to dust_emis_inparm namelist in drv_flds_in
otherwise bit-for-bit

Summarize any changes to answers: larger than roundoff for cam7, otherwise bit-for-bit

===============================================================
===============================================================

Tag name: cam6_4_027
Originator(s): fvitt
Date: 3 Sep 2024
Expand Down
88 changes: 66 additions & 22 deletions src/chemistry/bulk_aero/dust_model.F90
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
!===============================================================================
! Dust for Bulk Aerosol Model
!===============================================================================
module dust_model
module dust_model
use shr_kind_mod, only: r8 => shr_kind_r8, cl => shr_kind_cl
use spmd_utils, only: masterproc
use cam_abortutils, only: endrun
use cam_logfile, only: iulog
use shr_dust_emis_mod,only: is_dust_emis_zender, is_zender_soil_erod_from_atm

implicit none
private
Expand Down Expand Up @@ -34,8 +36,9 @@ module dust_model
real(r8) :: dust_dmt_vwr(dust_nbin)
real(r8) :: dust_stk_crc(dust_nbin)

real(r8) :: dust_emis_fact = -1.e36_r8 ! tuning parameter for dust emissions
character(len=cl) :: soil_erod_file = 'soil_erod_file' ! full pathname for soil erodibility dataset
real(r8) :: dust_emis_fact = -1.e36_r8 ! tuning parameter for dust emissions
character(len=cl) :: soil_erod_file = 'none' ! full pathname for soil erodibility dataset

contains

!=============================================================================
Expand All @@ -44,8 +47,8 @@ module dust_model
subroutine dust_readnl(nlfile)

use namelist_utils, only: find_group_name
use units, only: getunit, freeunit
use mpishorthand
use spmd_utils, only: mpicom, masterprocid, mpi_character, mpi_real8, mpi_success
use shr_dust_emis_mod, only: shr_dust_emis_readnl

character(len=*), intent(in) :: nlfile ! filepath for file containing namelist input

Expand All @@ -59,8 +62,7 @@ subroutine dust_readnl(nlfile)

! Read namelist
if (masterproc) then
unitn = getunit()
open( unitn, file=trim(nlfile), status='old' )
open( newunit=unitn, file=trim(nlfile), status='old' )
call find_group_name(unitn, 'dust_nl', status=ierr)
if (ierr == 0) then
read(unitn, dust_nl, iostat=ierr)
Expand All @@ -69,14 +71,34 @@ subroutine dust_readnl(nlfile)
end if
end if
close(unitn)
call freeunit(unitn)
end if

#ifdef SPMD
! Broadcast namelist variables
call mpibcast(dust_emis_fact, 1, mpir8, 0, mpicom)
call mpibcast(soil_erod_file, len(soil_erod_file), mpichar, 0, mpicom)
#endif
call mpi_bcast(soil_erod_file, len(soil_erod_file), mpi_character, masterprocid, mpicom, ierr)
if (ierr/=mpi_success) then
call endrun(subname//' MPI_BCAST ERROR: soil_erod_file')
end if
call mpi_bcast(dust_emis_fact, 1, mpi_real8, masterprocid, mpicom, ierr)
if (ierr/=mpi_success) then
call endrun(subname//' MPI_BCAST ERROR: dust_emis_fact')
end if

call shr_dust_emis_readnl(mpicom, 'drv_flds_in')

if ((soil_erod_file /= 'none') .and. (.not.is_zender_soil_erod_from_atm())) then
call endrun(subname//': should not specify soil_erod_file if Zender soil erosion is not in CAM')
end if

if (masterproc) then
if (is_dust_emis_zender()) then
write(iulog,*) subname,': Zender_2003 dust emission method is being used.'
end if
if (is_zender_soil_erod_from_atm()) then
write(iulog,*) subname,': Zender soil erod file is handled in atm'
write(iulog,*) subname,': soil_erod_file = ',trim(soil_erod_file)
write(iulog,*) subname,': dust_emis_fact = ',dust_emis_fact
end if
end if

end subroutine dust_readnl

Expand All @@ -95,7 +117,9 @@ subroutine dust_init()
dust_active = any(dust_indices(:) > 0)
if (.not.dust_active) return

call soil_erod_init( dust_emis_fact, soil_erod_file )
if (is_zender_soil_erod_from_atm()) then
call soil_erod_init( dust_emis_fact, soil_erod_file )
endif

call dust_set_params( dust_nbin, dust_dmt_grd, dust_dmt_vwr, dust_stk_crc )

Expand All @@ -106,6 +130,7 @@ end subroutine dust_init
subroutine dust_emis( ncol, lchnk, dust_flux_in, cflx, soil_erod )
use soil_erod_mod, only : soil_erod_fact
use soil_erod_mod, only : soil_erodibility
use cam_history_support, only : fillvalue

! args
integer, intent(in) :: ncol, lchnk
Expand All @@ -115,25 +140,44 @@ subroutine dust_emis( ncol, lchnk, dust_flux_in, cflx, soil_erod )

! local vars
integer :: i, m, idst
real(r8) :: erodfctr(ncol)
real(r8), parameter :: dust_emis_sclfctr(dust_nbin) &
= (/ 0.011_r8/0.032456_r8, 0.087_r8/0.174216_r8, 0.277_r8/0.4085517_r8, 0.625_r8/0.384811_r8 /)

! set dust emissions

col_loop: do i =1,ncol
if (is_zender_soil_erod_from_atm()) then

col_loop1: do i =1,ncol

soil_erod(i) = soil_erodibility( i, lchnk )

! adjust emissions
do m = 1,dust_nbin

idst = dust_indices(m)
cflx(i,idst) = -dust_flux_in(i,m) &
* dust_emis_sclfctr(m)*soil_erod(i)/dust_emis_fact*1.15_r8

soil_erod(i) = soil_erodibility( i, lchnk )
enddo

! adjust emissions based on soil erosion
do m = 1,dust_nbin
end do col_loop1

idst = dust_indices(m)
cflx(i,idst) = -dust_flux_in(i,m) &
* dust_emis_sclfctr(m)*soil_erod(i)/soil_erod_fact*1.15_r8
else

enddo
col_loop2: do i =1,ncol

end do col_loop
! adjust emissions
do m = 1,dust_nbin

idst = dust_indices(m)
cflx(i,idst) = -dust_flux_in(i,m) * dust_emis_sclfctr(m) / dust_emis_fact

enddo

end do col_loop2

end if

end subroutine dust_emis

Expand Down
Loading

0 comments on commit 7ced55f

Please sign in to comment.