diff --git a/bld/build-namelist b/bld/build-namelist
index 258b54f048..7a5ec905eb 100755
--- a/bld/build-namelist
+++ b/bld/build-namelist
@@ -2285,7 +2285,7 @@ if ($chem eq 'trop_mam3') {
if ($phys =~ /cam6/ or $phys =~ /cam7/) {
# OASISS (ocean) DMS emissions
- if (!$aqua_mode and !$scam) {
+ if (!$aqua_mode and !$scam and chem_has_species($cfg, 'DMS')) {
my $rel_filepath = get_default_value('dms_ocn_emis_file');
my $abs_filepath = set_abs_filepath($rel_filepath, $inputdata_rootdir);
my $val = quote_string("DMS -> ". $abs_filepath);
diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml
index ab4a8e28f8..5c9187be4f 100644
--- a/bld/namelist_files/namelist_defaults_cam.xml
+++ b/bld/namelist_files/namelist_defaults_cam.xml
@@ -2994,9 +2994,6 @@
16
32
-4
-4
-
3.e+5
0
diff --git a/src/physics/cam/nucleate_ice.F90 b/src/physics/cam/nucleate_ice.F90
index ac7268c068..42db39a083 100644
--- a/src/physics/cam/nucleate_ice.F90
+++ b/src/physics/cam/nucleate_ice.F90
@@ -226,9 +226,11 @@ subroutine nucleati( &
if ( ((tc.le.0.0_r8).and.(tc.ge.-37.0_r8).and.(qc.lt.1.e-12_r8)).or.(tc.le.-37.0_r8)) then
- A = -1.4938_r8 * log(soot_num+dst_num) + 12.884_r8
- B = -10.41_r8 * log(soot_num+dst_num) - 67.69_r8
- regm = A * log(wbar1) + B
+ if ( (soot_num+dst_num) > 0._r8) then
+ A = -1.4938_r8 * log(soot_num+dst_num) + 12.884_r8
+ B = -10.41_r8 * log(soot_num+dst_num) - 67.69_r8
+ regm = A * log(wbar1) + B
+ end if
! heterogeneous nucleation only
if (tc .gt. regm .or. so4_num < 1.0e-10_r8) then
@@ -260,8 +262,11 @@ subroutine nucleati( &
nihf = 0._r8
n1 = niimm + nidep
- osoot_num = soot_num * (niimm + nidep) / (soot_num + dst_num)
- odst_num = dst_num * (niimm + nidep) / (soot_num + dst_num)
+ if ( (soot_num+dst_num) > 0._r8) then
+ osoot_num = soot_num * (niimm + nidep) / (soot_num + dst_num)
+ odst_num = dst_num * (niimm + nidep) / (soot_num + dst_num)
+ end if
+
endif
! homogeneous nucleation only
@@ -322,8 +327,10 @@ subroutine nucleati( &
oso4_num = nihf
endif
- osoot_num = soot_num * (niimm + nidep) / (soot_num + dst_num)
- odst_num = dst_num * (niimm + nidep) / (soot_num + dst_num)
+ if ( (soot_num+dst_num) > 0._r8) then
+ osoot_num = soot_num * (niimm + nidep) / (soot_num + dst_num)
+ odst_num = dst_num * (niimm + nidep) / (soot_num + dst_num)
+ end if
nihf = nihf * fhom * ((regm - tc) / 5._r8)**2
oso4_num = oso4_num * fhom * ((regm - tc) / 5._r8)**2
@@ -582,4 +589,3 @@ subroutine frachom(Tmean,RHimean,detaT,fhom)
end subroutine frachom
end module nucleate_ice
-