Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SNICAR snow albedo scheme updates #1861

Merged
merged 72 commits into from
Oct 19, 2023
Merged
Changes from 1 commit
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
a625eac
add output for SNICAR related albedo variables
cenlinhe Jan 19, 2022
759ef18
bug fix for adding new albedo output variables
cenlinhe Jan 20, 2022
e3c5459
expand SNICAR from 5-band to 480-band with namelist control option
cenlinhe Jan 25, 2022
314c7d3
add adding-doubling solver in SNICAR with namelist option
cenlinhe Jan 26, 2022
3e9299f
add nonspherical snow grains with namelist option
cenlinhe Jan 28, 2022
e006dc5
add BC-snow internal mixing and namelist control
cenlinhe Jan 29, 2022
43e52bf
add dust-snow internal mixing and namelist control
cenlinhe Jan 29, 2022
7dc18ab
bug fix for BC/dust-snow internal mixing
cenlinhe Jan 29, 2022
9d5fee6
update 5-band input optics database & move DO_SNO_OC to namelist control
cenlinhe Feb 1, 2022
a6e168e
add DO_SNO_OC to namelist_definition_ctsm
cenlinhe Feb 1, 2022
7191233
bug fix for albsni_hst2
cenlinhe Apr 11, 2022
83991f7
correcting default values for new SNICAR namelist options
cenlinhe Apr 11, 2023
b4a30d6
Merge remote-tracking branch 'escomp/master' into snicar_allupdate
slevis-lmwg Jul 19, 2023
a6422a2
Merge remote-tracking branch 'escomp/master' into snicar_allupdate
slevis-lmwg Jul 28, 2023
32ca5ec
snicar_snw_optics: keep option 3 only
slevis-lmwg Aug 2, 2023
725f527
snicar_rt_solver: keep option 2 only
slevis-lmwg Aug 3, 2023
5f8d50d
snicar_snw_shape: replace integers with descriptive options
slevis-lmwg Aug 3, 2023
3164bc6
snicar_solarspec & snicar_dust_optics: replace integers with descript…
slevis-lmwg Aug 3, 2023
230e3fc
General clean-up of other snicar switches and comments
slevis-lmwg Aug 3, 2023
4ab6738
Some clean-up associated with snicar_numrad_snw
slevis-lmwg Aug 4, 2023
21b607d
Update namelist defaults and differentiate clm5_1 from 5_0, 4_5
slevis-lmwg Aug 4, 2023
604968e
Minor cleanup of unnecessary things
slevis-lmwg Aug 4, 2023
9cd7a55
Minor cleanup of unused things
slevis-lmwg Aug 7, 2023
a0cd959
Rename use_snicar_frc to snicar_aerforc_diag and make default .false.
slevis-lmwg Aug 7, 2023
0e6f1df
Correction of a typo in /testmods_dirs/.../user_nl_clm
slevis-lmwg Aug 8, 2023
55e91e4
Replace dimension 8 with ngmax for two arrays; wait to hear about others
slevis-lmwg Aug 8, 2023
992ef0f
Minor refactor: replace some / and ** with *, replace some ifs with m…
slevis-lmwg Aug 8, 2023
5ddaa34
Correct comments that label hydrophilic/phobic OC and BC
slevis-lmwg Aug 9, 2023
d47da29
Consolidated fsnowoptics480 with fsnowoptics
slevis-lmwg Aug 9, 2023
afbe2d6
Add quotes to correct namelist_defaults_ctsm.xml
slevis-lmwg Aug 10, 2023
9808d1a
Consolidate some repetitive code pertaining to wvl_ct
slevis-lmwg Aug 10, 2023
5ad655a
Reduce repetitive code in 'Weight output NIR albedo' section
slevis-lmwg Aug 10, 2023
40bcf15
Reduce repetitive code in 'Weight output NIR absorbed' section
slevis-lmwg Aug 10, 2023
98f229a
Replace if-statements with min/max
slevis-lmwg Aug 10, 2023
2ee70af
Replace another if-statmt with max and two ints with floats
slevis-lmwg Aug 10, 2023
2a4159d
Merge remote-tracking branch 'escomp/master' into snicar_allupdate
slevis-lmwg Aug 11, 2023
5709993
Add a clarifying comment to the code
slevis-lmwg Aug 11, 2023
a5e8c7c
Draft of ChangeLog/Sum files
slevis-lmwg Aug 11, 2023
093e54c
Update to the ChangeLog
slevis-lmwg Aug 11, 2023
f0b6d60
Update2 to the ChangeLog
slevis-lmwg Aug 11, 2023
ab5b8f4
Merge remote-tracking branch 'escomp/master' into snicar_allupdate
slevis-lmwg Aug 28, 2023
557e664
Merge remote-tracking branch 'escomp/master' into snicar_allupdate
slevis-lmwg Aug 29, 2023
d4be616
Merge tag 'ctsm5.1.dev139'
slevis-lmwg Sep 10, 2023
1b0f7a2
Rm Defaults from snicar vars in namelist_definition
slevis-lmwg Sep 22, 2023
27f3237
Rm one more Default
slevis-lmwg Sep 22, 2023
0129068
Add licencing info to subr. piecewise_linear_interp1d
slevis-lmwg Sep 25, 2023
05ea928
Add readv argument to call ncd_io in SnowSnicarMod (not tested, yet)
slevis-lmwg Sep 26, 2023
8cf2c70
Updates to last commit for test to PASS
slevis-lmwg Sep 26, 2023
ffc8eae
Replace 3600 with secsphr
slevis-lmwg Sep 27, 2023
55ad199
Replace indices 1, 2 with ivis, inir where appropriate
slevis-lmwg Sep 27, 2023
33c8524
Replace 1e5 with enh_omg_max parameter
slevis-lmwg Sep 27, 2023
eb10335
Replace hardwired numbers with parameters and other clean-up
slevis-lmwg Sep 27, 2023
3f0fe62
Changed many constants to parameters and other minor clean-up
slevis-lmwg Sep 28, 2023
00493ef
Change some arrays to parameters
slevis-lmwg Sep 28, 2023
ed2a177
Change more arrays to parameters
slevis-lmwg Sep 29, 2023
eddb844
Add case default lines and corresponding error messages
slevis-lmwg Sep 29, 2023
d6b92ec
Change two more arrays to parameters
slevis-lmwg Sep 29, 2023
99ee926
Replace suffixes 1 & 2 representing hydrophillic/phobic w hphil/hphob
slevis-lmwg Sep 29, 2023
94846be
Replace pointers with allocatables
slevis-lmwg Sep 29, 2023
b892252
Improve error checks and comments
slevis-lmwg Oct 5, 2023
20ce1ea
Remove option of running this copy of snicar in csim
slevis-lmwg Oct 5, 2023
f952e50
Replace hardwired numbers with parameters
slevis-lmwg Oct 5, 2023
eeba54f
Add comment explaining posNOTonfile=.true.
slevis-lmwg Oct 6, 2023
67bf624
Merge remote-tracking branch 'escomp/master' into snicar_allupdate
slevis-lmwg Oct 6, 2023
3838ceb
Correct syntax error
slevis-lmwg Oct 6, 2023
3a4ffdc
Merge remote-tracking branch 'escomp/master' into snicar_allupdate
slevis-lmwg Oct 17, 2023
6adba3d
Remove a bit of redundant code and change a comment
slevis-lmwg Oct 17, 2023
a2370a0
CLMBuildNamelist.pm: Put most snicar error checks in loop
slevis-lmwg Oct 18, 2023
f0260cf
Revert snicar_aerforc_diag to original use_snicar_frc
slevis-lmwg Oct 18, 2023
1890865
Removing duplicate lines of code #2129 #2107
slevis-lmwg Oct 19, 2023
44d128e
Merge branch 'master' into snicar_allupdate
slevis-lmwg Oct 19, 2023
82a335a
Merge remote-tracking branch 'escomp/master' into snicar_allupdate
slevis-lmwg Oct 19, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add BC-snow internal mixing and namelist control
cenlinhe committed Jan 29, 2022
commit e006dc54c2f17e9004894f3f608a5279d2618e6d
5 changes: 5 additions & 0 deletions bld/namelist_files/namelist_definition_ctsm.xml
Original file line number Diff line number Diff line change
@@ -198,6 +198,11 @@ SNICAR radiative transfer solver type
snow grain shape used in SNICAR snow albedo calculation
</entry>

<entry id="snicar_snobc_intmix" type="logical" category="clm_physics"
group="clm_inparm" valid_values="" value=".true." >
option to activate BC-snow internal mixing in SNICAR snow albedo calculation
</entry>

<entry id="rooting_profile_method_water" type="integer" category="clm_physics"
group="rooting_profile_inparm" valid_values="0,1,2" >
Index of rooting profile for water
141 changes: 121 additions & 20 deletions src/biogeophys/SnowSnicarMod.F90
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ module SnowSnicarMod
use shr_sys_mod , only : shr_sys_flush
use shr_log_mod , only : errMsg => shr_log_errMsg
use clm_varctl , only : iulog, snicar_numrad_snw, snicar_rt_solver, &
snicar_snw_shape ! cenlin
snicar_snw_shape, snicar_snobc_intmix ! cenlin
use clm_varcon , only : tfrz
use shr_const_mod , only : SHR_CONST_RHOICE
use abortutils , only : endrun
@@ -486,6 +486,29 @@ subroutine SNICAR_RT (flg_snw_ice, bounds, num_nourbanc, filter_nourbanc, &
real(r8) :: gg_F07_intp ! interpolated asymmetry factor related to geometric reflection & refraction
real(r8) :: g_ice_F07 ! asymmetry factor for Fu 2007 parameterization value
integer :: igb ! loop index

!-----------------------------------------------------------------------
! variables used for BC-snow internal mixing (He et al. 2017 J of Climate):
real(r8) :: enh_omg_bcint ! BC-induced enhancement in snow single-scattering co-albedo (1-omega)
real(r8) :: enh_omg_bcint_tmp(1:16) ! temporary BC-induced enhancement in snow 1-omega
real(r8) :: enh_omg_bcint_tmp2(1:16) ! temporary BC-induced enhancement in snow 1-omega
real(r8) :: bcint_wvl(1:17) ! Parameterization band (0.2-1.2um) for BC-induced enhancement in snow 1-omega
real(r8) :: bcint_wvl_ct(1:16) ! Parameterization band center wavelength (um)
real(r8) :: bcint_d0(1:16) ! Parameterization coefficients at each band center wavelength
real(r8) :: bcint_d1(1:16) ! Parameterization coefficients at each band center wavelength
real(r8) :: bcint_d2(1:16) ! Parameterization coefficients at each band center wavelength
real(r8) :: den_bc = 1.49_r8 ! target BC particle density (g/cm3) used in BC MAC adjustment
ekluzek marked this conversation as resolved.
Show resolved Hide resolved
real(r8) :: Re_bc = 0.045 ! target BC effective radius (um) used in BC MAC adjustment
real(r8) :: bcint_m(1:3) ! Parameterization coefficients for BC size adjustment in BC-snow int mix
real(r8) :: bcint_n(1:3) ! Parameterization coefficients for BC size adjustment in BC-snow int mix
real(r8) :: bcint_dd ! intermediate parameter
real(r8) :: bcint_dd2 ! intermediate parameter
real(r8) :: bcint_f ! intermediate parameter
real(r8) :: enh_omg_bcint_intp ! BC-induced enhancement in snow 1-omega (logscale) interpolated to CLM wavelength
real(r8) :: enh_omg_bcint_intp2 ! BC-induced enhancement in snow 1-omega interpolated to CLM wavelength
real(r8) :: wvl_doint ! wavelength doing BC-snow int mixing (<=1.2um)
integer :: ibb ! loop index

!
!-----------------------------------------------------------------------

@@ -548,7 +571,29 @@ subroutine SNICAR_RT (flg_snw_ice, bounds, num_nourbanc, filter_nourbanc, &
1.353873E-1_r8, 1.914431E-1_r8, 1.914431E-1_r8 /)
g_F07_p0(1:7) = (/ 5.292852E-1_r8, 5.425909E-1_r8, 5.601598E-1_r8, 6.023407E-1_r8, &
6.473899E-1_r8, 4.634944E-1_r8, 4.634944E-1_r8 /)
! band center wavelength (um)

! initialize for BC-snow internal mixing
! Eq. 8b & Table 4 in He et al., 2017 J. Climate (wavelength>1.2um, no BC-snow int mixi effect)
bcint_wvl(1:17) = (/ 0.20_r8, 0.25_r8, 0.30_r8, 0.33_r8, 0.36_r8, 0.40_r8, 0.44_r8, 0.48_r8, &
0.52_r8, 0.57_r8, 0.64_r8, 0.69_r8, 0.75_r8, 0.78_r8, 0.87_r8, 1._r8, 1.2_r8 /)
bcint_wvl_ct(1:16) = bcint_wvl(2:17) / 2._r8 + bcint_wvl(1:16) / 2._r8
bcint_d0(1:16) = (/ 2.48045_r8 , 4.70305_r8 , 4.68619_r8 , 4.67369_r8 , 4.65040_r8 , &
2.40364_r8 , 7.95408E-1_r8, 2.92745E-1_r8, 8.63396E-2_r8, 2.76299E-2_r8, &
1.40864E-2_r8, 8.65705E-3_r8, 6.12971E-3_r8, 4.45697E-3_r8, 3.06648E-2_r8, &
7.96544E-1_r8 /)
bcint_d1(1:16) = (/ 9.77209E-1_r8, 9.73317E-1_r8, 9.79650E-1_r8, 9.84579E-1_r8, 9.93537E-1_r8, &
9.95955E-1_r8, 9.95218E-1_r8, 9.74284E-1_r8, 9.81193E-1_r8, 9.81239E-1_r8, &
9.55515E-1_r8, 9.10491E-1_r8, 8.74196E-1_r8, 8.27238E-1_r8, 4.82870E-1_r8, &
4.36649E-2_r8 /)
bcint_d2(1:16) = (/ 3.95960E-1_r8, 2.04820E-1_r8, 2.07410E-1_r8, 2.09390E-1_r8, 2.13030E-1_r8, &
4.18570E-1_r8, 1.29682_r8 , 3.75514_r8 , 1.27372E+1_r8, 3.93293E+1_r8, &
8.78918E+1_r8, 1.86969E+2_r8, 3.45600E+2_r8, 7.08637E+2_r8, 1.41067E+3_r8, &
2.57288E+2_r8 /)
! Eq. 1a,1b and Table S1 in He et al. 2018 GRL
bcint_m(1:3) = (/ -0.8724_r8, -0.1866_r8, -0.0046_r8 /)
bcint_n(1:3) = (/ -0.0072_r8, -0.1918_r8, -0.5177_r8 /)

! SNICAR/CLM snow band center wavelength (um)
wvl_ct5(1:5) = (/ 0.5_r8, 0.85_r8, 1.1_r8, 1.35_r8, 3.25_r8 /) ! 5-band
do igb = 1,480
wvl_ct480(igb) = 0.205_r8 + 0.01_r8 * (igb-1) ! 480-band
@@ -925,42 +970,42 @@ subroutine SNICAR_RT (flg_snw_ice, bounds, num_nourbanc, filter_nourbanc, &
enddo ! snow layer loop


! aerosol species 1 optical properties
! aerosol species 1 optical properties, hydrophilic BC
ss_alb_aer_lcl(1) = ss_alb_bc1(bnd_idx)
asm_prm_aer_lcl(1) = asm_prm_bc1(bnd_idx)
ext_cff_mss_aer_lcl(1) = ext_cff_mss_bc1(bnd_idx)

! aerosol species 2 optical properties
! aerosol species 2 optical properties, hydrophobic BC
ekluzek marked this conversation as resolved.
Show resolved Hide resolved
ss_alb_aer_lcl(2) = ss_alb_bc2(bnd_idx)
ekluzek marked this conversation as resolved.
Show resolved Hide resolved
asm_prm_aer_lcl(2) = asm_prm_bc2(bnd_idx)
ext_cff_mss_aer_lcl(2) = ext_cff_mss_bc2(bnd_idx)

! aerosol species 3 optical properties
! aerosol species 3 optical properties, hydrophilic OC
ss_alb_aer_lcl(3) = ss_alb_oc1(bnd_idx)
asm_prm_aer_lcl(3) = asm_prm_oc1(bnd_idx)
ext_cff_mss_aer_lcl(3) = ext_cff_mss_oc1(bnd_idx)

! aerosol species 4 optical properties
! aerosol species 4 optical properties, hydrophobic OC
ss_alb_aer_lcl(4) = ss_alb_oc2(bnd_idx)
asm_prm_aer_lcl(4) = asm_prm_oc2(bnd_idx)
ext_cff_mss_aer_lcl(4) = ext_cff_mss_oc2(bnd_idx)

! aerosol species 5 optical properties
! aerosol species 5 optical properties, dust size1
ss_alb_aer_lcl(5) = ss_alb_dst1(bnd_idx)
asm_prm_aer_lcl(5) = asm_prm_dst1(bnd_idx)
ext_cff_mss_aer_lcl(5) = ext_cff_mss_dst1(bnd_idx)

! aerosol species 6 optical properties
! aerosol species 6 optical properties, dust size2
ss_alb_aer_lcl(6) = ss_alb_dst2(bnd_idx)
asm_prm_aer_lcl(6) = asm_prm_dst2(bnd_idx)
ext_cff_mss_aer_lcl(6) = ext_cff_mss_dst2(bnd_idx)

! aerosol species 7 optical properties
! aerosol species 7 optical properties, dust size3
ss_alb_aer_lcl(7) = ss_alb_dst3(bnd_idx)
asm_prm_aer_lcl(7) = asm_prm_dst3(bnd_idx)
ext_cff_mss_aer_lcl(7) = ext_cff_mss_dst3(bnd_idx)

! aerosol species 8 optical properties
! aerosol species 8 optical properties, dust size4
ss_alb_aer_lcl(8) = ss_alb_dst4(bnd_idx)
asm_prm_aer_lcl(8) = asm_prm_dst4(bnd_idx)
ext_cff_mss_aer_lcl(8) = ext_cff_mss_dst4(bnd_idx)
@@ -972,6 +1017,62 @@ subroutine SNICAR_RT (flg_snw_ice, bounds, num_nourbanc, filter_nourbanc, &

! Weighted Mie parameters of each layer
do i=snl_top,snl_btm,1

! BC-snow internal mixing applied to hydrophilic BC if activated
! BC-snow internal mixing primarily affect snow single-scattering albedo
if ( snicar_snobc_intmix .and. (mss_cnc_aer_lcl(i,1)>0._r8) ) then
if (snicar_numrad_snw == 5) wvl_doint = wvl_ct5(bnd_idx)
if (snicar_numrad_snw == 480) wvl_doint = wvl_ct480(bnd_idx)

if (wvl_doint <= 1.2_r8) then ! only do for wavelength<=1.2um
! result from Eq.8b in He et al.(2017) is based on BC Re=0.1um &
! MAC=6.81 m2/g (@550 nm) & BC density=1.7g/cm3.
! To be consistent with Bond et al. 2006 recommeded value (BC MAC=7.5 m2/g @550nm)
! we made adjustments on BC size & density as follows to get MAC=7.5m2/g:
! (1) We use BC Re=0.045um [geometric mean diameter=0.06um (Dentener et al.2006,
! Yu and Luo,2009) & geometric std=1.5 (Flanner et al.2007;Aoki et al., 2011)].
! (2) We tune BC density from 1.7 to 1.49 g/cm3 (Aoki et al., 2011).
! These adjustments also lead to consistent results with Flanner et al. 2012 (ACP) lookup table
! for BC-snow internal mixing enhancement in albedo reduction (He et al. 2018 ACP)
do ibb=1,16
enh_omg_bcint_tmp(ibb) = bcint_d0(ibb) * &
( (mss_cnc_aer_lcl(i,1)*1.0E9_r8*1.7_r8/den_bc + bcint_d2(ibb)) **bcint_d1(ibb) )
ekluzek marked this conversation as resolved.
Show resolved Hide resolved
! adjust enhancment factor for BC effective size from 0.1um to Re_bc (He et al. 2018 GRL Eqs.1a,1b)
if (ibb < 3) then ! near-UV
bcint_dd = (Re_bc/0.05_r8)**bcint_m(1)
bcint_dd2 = (0.1_r8/0.05_r8)**bcint_m(1)
bcint_f = (Re_bc/0.1_r8)**bcint_n(1)
endif
if ( (ibb >= 3) .and. (ibb <= 11) ) then ! visible
bcint_dd = (Re_bc/0.05_r8)**bcint_m(2)
bcint_dd2 = (0.1_r8/0.05_r8)**bcint_m(2)
bcint_f = (Re_bc/0.1_r8)**bcint_n(2)
endif
if ( ibb > 11 ) then ! NIR
bcint_dd = (Re_bc/0.05_r8)**bcint_m(3)
bcint_dd2 = (0.1_r8/0.05_r8)**bcint_m(3)
bcint_f = (Re_bc/0.1_r8)**bcint_n(3)
endif
enh_omg_bcint_tmp2(ibb) = LOG10( bcint_dd * ((enh_omg_bcint_tmp(ibb) / bcint_dd2)**bcint_f) )
enddo

! piecewise linear interpolate into targeted SNICAR bands in a logscale space
call piecewise_linear_interp1d(16,bcint_wvl_ct,enh_omg_bcint_tmp2,wvl_doint,enh_omg_bcint_intp)

! update snow single-scattering albedo
enh_omg_bcint_intp2 = 10._r8 ** enh_omg_bcint_intp
enh_omg_bcint_intp2 = max(enh_omg_bcint_intp2, 1._r8) ! BC does not reduce snow absorption
ss_alb_snw_lcl(i) = 1._r8 - (1._r8 - ss_alb_snw_lcl(i)) * enh_omg_bcint_intp2
ss_alb_snw_lcl(i) = max(0._r8, min(ss_alb_snw_lcl(i),1._r8))

! reset hydrophilic BC property to 0 since it is accounted by updated snow ss_alb above
ss_alb_aer_lcl(1) = 0.0
asm_prm_aer_lcl(1) = 0.0
ext_cff_mss_aer_lcl(1) = 0.0

endif ! end if wvl_doint <= 1.2
endif ! end if BC-snow internal mixing

L_snw(i) = h2osno_ice_lcl(i)+h2osno_liq_lcl(i)
tau_snw(i) = L_snw(i)*ext_cff_mss_snw_lcl(i)

@@ -2121,22 +2222,22 @@ subroutine SnowOptics_init( )
call ncd_io( 'ext_cff_mss_dust04', ext_cff_mss_dst4, 'read', ncid, posNOTonfile=.true.)
endif

! BC species 1 Mie parameters
call ncd_io( 'ss_alb_bcphil', ss_alb_bc1, 'read', ncid, posNOTonfile=.true.)
call ncd_io( 'asm_prm_bcphil', asm_prm_bc1, 'read', ncid, posNOTonfile=.true.)
call ncd_io( 'ext_cff_mss_bcphil', ext_cff_mss_bc1, 'read', ncid, posNOTonfile=.true.)
! BC species 1 Mie parameters, uncoated BC, same as bc2 without BC-snow internal mixing
call ncd_io( 'ss_alb_bcphob', ss_alb_bc1, 'read', ncid, posNOTonfile=.true.)
call ncd_io( 'asm_prm_bcphob', asm_prm_bc1, 'read', ncid, posNOTonfile=.true.)
call ncd_io( 'ext_cff_mss_bcphob', ext_cff_mss_bc1, 'read', ncid, posNOTonfile=.true.)

! BC species 2 Mie parameters
! BC species 2 Mie parameters, uncoated BC
call ncd_io( 'ss_alb_bcphob', ss_alb_bc2, 'read', ncid, posNOTonfile=.true.)
call ncd_io( 'asm_prm_bcphob', asm_prm_bc2, 'read', ncid, posNOTonfile=.true.)
call ncd_io( 'ext_cff_mss_bcphob', ext_cff_mss_bc2, 'read', ncid, posNOTonfile=.true.)

! OC species 1 Mie parameters
call ncd_io( 'ss_alb_ocphil', ss_alb_oc1, 'read', ncid, posNOTonfile=.true.)
call ncd_io( 'asm_prm_ocphil', asm_prm_oc1, 'read', ncid, posNOTonfile=.true.)
call ncd_io( 'ext_cff_mss_ocphil', ext_cff_mss_oc1, 'read', ncid, posNOTonfile=.true.)
! OC species 1 Mie parameters, uncoated OC, same as oc2 without OC-snow internal mixing
call ncd_io( 'ss_alb_ocphob', ss_alb_oc1, 'read', ncid, posNOTonfile=.true.)
call ncd_io( 'asm_prm_ocphob', asm_prm_oc1, 'read', ncid, posNOTonfile=.true.)
call ncd_io( 'ext_cff_mss_ocphob', ext_cff_mss_oc1, 'read', ncid, posNOTonfile=.true.)

! OC species 2 Mie parameters
! OC species 2 Mie parameters, uncoated OC
call ncd_io( 'ss_alb_ocphob', ss_alb_oc2, 'read', ncid, posNOTonfile=.true.)
call ncd_io( 'asm_prm_ocphob', asm_prm_oc2, 'read', ncid, posNOTonfile=.true.)
call ncd_io( 'ext_cff_mss_ocphob', ext_cff_mss_oc2, 'read', ncid, posNOTonfile=.true.)
3 changes: 3 additions & 0 deletions src/main/clm_varctl.F90
Original file line number Diff line number Diff line change
@@ -230,6 +230,9 @@ module clm_varctl
! option for snow grain shape in SNICAR (He et al. 2017 JC), ceniln
integer, public :: snicar_snw_shape = 1 ! 1->sphere; 2->spheroid; 3->hexagonal plate; 4->Koch snowflake

! option to activate BC-snow internal mixing in SNICAR (He et al. 2017 JC), ceniln
logical, public :: snicar_snobc_intmix = .true. ! false->external mixing for all BC; true->internal mixing for hydrophilic BC

!----------------------------------------------------------
! C isotopes
!----------------------------------------------------------
5 changes: 3 additions & 2 deletions src/main/controlMod.F90
Original file line number Diff line number Diff line change
@@ -203,7 +203,7 @@ subroutine control_init(dtime)
irrigate, run_zero_weight_urban, all_active, &
crop_fsat_equals_zero, for_testing_run_ncdiopio_tests, &
snicar_numrad_snw, snicar_solarspec, snicar_snw_optics, snicar_dust_optics, &
snicar_use_aerosol, snicar_rt_solver, snicar_snw_shape ! cenlin
snicar_use_aerosol, snicar_rt_solver, snicar_snw_shape, snicar_snobc_intmix ! cenlin

! vertical soil mixing variables
namelist /clm_inparm/ &
@@ -833,6 +833,7 @@ subroutine control_spmd()
call mpi_bcast (snicar_use_aerosol, 1, MPI_LOGICAL, 0, mpicom, ier) ! cenlin
call mpi_bcast (snicar_rt_solver, 1, MPI_INTEGER, 0, mpicom, ier) ! cenlin
call mpi_bcast (snicar_snw_shape, 1, MPI_INTEGER, 0, mpicom, ier) ! cenlin
call mpi_bcast (snicar_snobc_intmix, 1, MPI_LOGICAL, 0, mpicom, ier) ! cenlin

! snow pack variables
call mpi_bcast (nlevsno, 1, MPI_INTEGER, 0, mpicom, ier)
@@ -1023,7 +1024,7 @@ subroutine control_print ()
write(iulog,*) ' SNICAR: number of bands in snow albedo calculation =', snicar_numrad_snw ! cenlin
write(iulog,*) ' SNICAR: radiative transfer solver type = ',snicar_rt_solver ! cenlin
write(iulog,*) ' SNICAR: snow grain shape type = ',snicar_snw_shape ! cenlin

write(iulog,*) ' SNICAR: BC-snow internal mixing = ', snicar_snobc_intmix ! cenlin

write(iulog,*) ' glc number of elevation classes =', maxpatch_glc
if (glc_do_dynglacier) then