Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 2 additions & 0 deletions components/mpas-ocean/bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -1200,6 +1200,8 @@ if ($ice_bgc eq 'ice_bgc' ) {
add_default($nl, 'config_use_ecosysTracers_sea_ice_coupling', 'val'=>".false.");
}
add_default($nl, 'config_use_ecosysTracers_river_inputs_from_coupler');
add_default($nl, 'config_use_ecosysTracers_atm_dust_from_coupler');
add_default($nl, 'config_use_ecosysTracers_iron_solubility_file');

####################################################
# Namelist group: tracer_forcing_freshwaterTracers #
Expand Down
2 changes: 2 additions & 0 deletions components/mpas-ocean/bld/build-namelist-section
Original file line number Diff line number Diff line change
Expand Up @@ -599,11 +599,13 @@ add_default($nl, 'config_use_ecosysTracers_ttd_forcing');
add_default($nl, 'config_use_ecosysTracers_surface_value');
add_default($nl, 'config_use_ecosysTracers_river_inputs_from_coupler');
add_default($nl, 'config_use_ecosysTracers_sea_ice_coupling');
add_default($nl, 'config_use_ecosysTracers_atm_dust_from_coupler');
add_default($nl, 'config_ecosysTracers_diagnostic_fields_level1');
add_default($nl, 'config_ecosysTracers_diagnostic_fields_level2');
add_default($nl, 'config_ecosysTracers_diagnostic_fields_level3');
add_default($nl, 'config_ecosysTracers_diagnostic_fields_level4');
add_default($nl, 'config_ecosysTracers_diagnostic_fields_level5');
add_default($nl, 'config_use_ecosysTracers_iron_solubility_file');

####################################################
# Namelist group: tracer_forcing_freshwaterTracers #
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -760,11 +760,13 @@
<config_use_ecosysTracers_surface_value>.false.</config_use_ecosysTracers_surface_value>
<config_use_ecosysTracers_river_inputs_from_coupler>.false.</config_use_ecosysTracers_river_inputs_from_coupler>
<config_use_ecosysTracers_sea_ice_coupling>.false.</config_use_ecosysTracers_sea_ice_coupling>
<config_use_ecosysTracers_atm_dust_from_coupler>.false.</config_use_ecosysTracers_atm_dust_from_coupler>
<config_ecosysTracers_diagnostic_fields_level1>.false.</config_ecosysTracers_diagnostic_fields_level1>
<config_ecosysTracers_diagnostic_fields_level2>.false.</config_ecosysTracers_diagnostic_fields_level2>
<config_ecosysTracers_diagnostic_fields_level3>.false.</config_ecosysTracers_diagnostic_fields_level3>
<config_ecosysTracers_diagnostic_fields_level4>.false.</config_ecosysTracers_diagnostic_fields_level4>
<config_ecosysTracers_diagnostic_fields_level5>.false.</config_ecosysTracers_diagnostic_fields_level5>
<config_use_ecosysTracers_iron_solubility_file>.false.</config_use_ecosysTracers_iron_solubility_file>

<!-- tracer_forcing_freshwaterTracers -->
<config_use_freshwaterTracers>.false.</config_use_freshwaterTracers>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3115,6 +3115,14 @@ Valid values: .true. or .false.
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_use_ecosysTracers_atm_dust_from_coupler" type="logical"
category="tracer_forcing_ecosysTracers" group="tracer_forcing_ecosysTracers">
if true, get atmospheric dust inputs from the coupler, else from ecosys monthly forcing file

Valid values: .true. or .false.
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_ecosysTracers_diagnostic_fields_level1" type="logical"
category="tracer_forcing_ecosysTracers" group="tracer_forcing_ecosysTracers">
if true, make variables in ecosysDiagFieldsLevel1 available for output
Expand Down Expand Up @@ -3155,6 +3163,14 @@ Valid values: .true. or .false.
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_use_ecosysTracers_iron_solubility_file" type="logical"
category="tracer_forcing_ecosysTracers" group="tracer_forcing_ecosysTracers">
if true, read in Fe solubility from the ecosys forcing file

Valid values: .true. or .false.
Default: Defined in namelist_defaults.xml
</entry>


<!-- tracer_forcing_freshwaterTracers -->

Expand Down
5 changes: 5 additions & 0 deletions components/mpas-ocean/cime_config/buildnml
Original file line number Diff line number Diff line change
Expand Up @@ -1812,6 +1812,11 @@ def buildnml(case, caseroot, compname):
lines.append(' <var name="depositionFluzNH4"/>')
lines.append(' <var name="IRON_FLUZ_IN"/>')
lines.append(' <var name="dust_FLUZ_IN"/>')
lines.append(' <var name="dust_FLUZ_DRY"/>')
lines.append(' <var name="dust_FLUZ_WET"/>')
lines.append(' <var name="IRON_Zolubility_dry"/>')
lines.append(' <var name="IRON_Zolubility_wet"/>')
lines.append(' <var name="IRON_in_duzt_fraction"/>')
lines.append(' <var name="riverFluzNO3"/>')
lines.append(' <var name="riverFluzPO4"/>')
lines.append(' <var name="riverFluzDON"/>')
Expand Down
45 changes: 44 additions & 1 deletion components/mpas-ocean/driver/ocn_comp_mct.F
Original file line number Diff line number Diff line change
Expand Up @@ -1981,6 +1981,8 @@ subroutine ocn_import_mct(x2o_o, errorCode)!{{{
atmosphericPressureField, iceFractionField, &
seaIcePressureField, windSpeedSquared10mField, &
atmosphericCO2Field, atmosphericCO2_ALT_CO2Field, &
dust_FLUX_WETField, &
dust_FLUX_DRYField, &
iceFluxDICField, &
iceFluxDONField, &
iceFluxNO3Field, &
Expand Down Expand Up @@ -2032,6 +2034,8 @@ subroutine ocn_import_mct(x2o_o, errorCode)!{{{
seaIcePressure, windSpeedSquared10m, &
atmosphericCO2, atmosphericCO2_ALT_CO2, &
windSpeedSquared10mCFC, &
dust_FLUX_WET, &
dust_FLUX_DRY, &
iceFluxDIC, &
iceFluxDON, &
iceFluxNO3, &
Expand Down Expand Up @@ -2251,6 +2255,11 @@ subroutine ocn_import_mct(x2o_o, errorCode)!{{{
call mpas_pool_get_field(ecosysSeaIceCoupling, 'iceFluxDOC', iceFluxDOCField)
call mpas_pool_get_field(ecosysSeaIceCoupling, 'iceFluxDON', iceFluxDONField)

if (config_use_ecosysTracers_atm_dust_from_coupler) then
call mpas_pool_get_field(ecosysAuxiliary, 'dust_FLUX_WET' , dust_FLUX_WETField)
call mpas_pool_get_field(ecosysAuxiliary, 'dust_FLUX_DRY' , dust_FLUX_DRYField)
endif

iceFluxPhytoC => iceFluxPhytoCField % array
iceFluxDIC => iceFluxDICField % array
iceFluxNO3 => iceFluxNO3Field % array
Expand All @@ -2262,6 +2271,12 @@ subroutine ocn_import_mct(x2o_o, errorCode)!{{{
iceFluxDust => iceFluxDustField % array
iceFluxDOC => iceFluxDOCField % array
iceFluxDON => iceFluxDONField % array

if (config_use_ecosysTracers_atm_dust_from_coupler) then
dust_FLUX_WET => dust_FLUX_WETField % array
dust_FLUX_DRY => dust_FLUX_DRYField % array
endif

endif
endif
if (config_use_DMSTracers .and. config_use_DMSTracers_sea_ice_coupling) then
Expand Down Expand Up @@ -2518,9 +2533,26 @@ subroutine ocn_import_mct(x2o_o, errorCode)!{{{
if ( iceFluxFeDissolvedField % isActive ) then
iceFluxFeDissolved(i) = x2o_o % rAttr(index_x2o_Fioi_fed1, n)
endif
if ( iceFluxDustField % isActive ) then
if ( config_use_ecosysTracers_iron_solubility_file .and. &
config_use_ecosystracers_sea_ice_coupling .and. &
iceFluxDustField % isActive ) then
iceFluxDust(i) = x2o_o % rAttr(index_x2o_Fioi_dust1, n)
endif
! do not want atmospheric deposition on 100% land ice to enter the ocean
if ( config_use_ecosysTracers_atm_dust_from_coupler .and. dust_FLUX_WETField % isActive ) then
dust_FLUX_WET(i) = ( x2o_o % rAttr(index_x2o_Faxa_dstwet1, n) &
+ x2o_o % rAttr(index_x2o_Faxa_dstwet2, n) &
+ x2o_o % rAttr(index_x2o_Faxa_dstwet3, n) &
+ x2o_o % rAttr(index_x2o_Faxa_dstwet4, n) ) &
* (1.0_RKIND - landIceFraction(i))
endif
if ( config_use_ecosysTracers_atm_dust_from_coupler .and. dust_FLUX_DRYField % isActive ) then
dust_FLUX_DRY(i) = ( x2o_o % rAttr(index_x2o_Faxa_dstdry1, n) &
+ x2o_o % rAttr(index_x2o_Faxa_dstdry2, n) &
+ x2o_o % rAttr(index_x2o_Faxa_dstdry3, n) &
+ x2o_o % rAttr(index_x2o_Faxa_dstdry4, n) ) &
* (1.0_RKIND - landIceFraction(i))
endif
if ( iceFluxDOCField % isActive ) then
iceFluxDOC(1,i) = x2o_o % rAttr(index_x2o_Fioi_doc1, n)
iceFluxDOC(2,i) = x2o_o % rAttr(index_x2o_Fioi_doc2, n)
Expand Down Expand Up @@ -2626,6 +2658,11 @@ subroutine ocn_import_mct(x2o_o, errorCode)!{{{
call mpas_pool_get_field(ecosysSeaIceCoupling, 'iceFluxDust', iceFluxDustField)
call mpas_pool_get_field(ecosysSeaIceCoupling, 'iceFluxDOC', iceFluxDOCField)
call mpas_pool_get_field(ecosysSeaIceCoupling, 'iceFluxDON', iceFluxDONField)

if (config_use_ecosysTracers_atm_dust_from_coupler) then
call mpas_pool_get_field(ecosysAuxiliary, 'dust_FLUX_WET' , dust_FLUX_WETField)
call mpas_pool_get_field(ecosysAuxiliary, 'dust_FLUX_DRY' , dust_FLUX_DRYField)
endif
endif
endif
if (config_use_DMSTracers .and. config_use_DMSTracers_sea_ice_coupling) then
Expand Down Expand Up @@ -2808,6 +2845,12 @@ subroutine ocn_import_mct(x2o_o, errorCode)!{{{
if ( iceFluxDustField % isActive ) then
call mpas_dmpar_exch_halo_field(iceFluxDustField)
endif
if ( config_use_ecosysTracers_atm_dust_from_coupler .and. dust_FLUX_WETField % isActive ) then
call mpas_dmpar_exch_halo_field(dust_FLUX_WETField)
endif
if ( config_use_ecosysTracers_atm_dust_from_coupler .and. dust_FLUX_DRYField % isActive ) then
call mpas_dmpar_exch_halo_field(dust_FLUX_DRYField)
endif
if ( iceFluxDOCField % isActive ) then
call mpas_dmpar_exch_halo_field(iceFluxDOCField)
endif
Expand Down
5 changes: 4 additions & 1 deletion components/mpas-ocean/src/shared/mpas_ocn_constants.F
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@ module ocn_constants
ocn_ref_salinity ,&! ocean reference salinity (psu)
atm_ref_pressure ,&! standard sea level pressure (Pa)
molecular_weight_C ,&! molecular weight carbon
molecular_weight_O2 ! molecular weight oxygen
molecular_weight_O2 ,&! molecular weight oxygen
molecular_weight_Fe ! molecular weight iron

! conversion factors

Expand Down Expand Up @@ -137,6 +138,7 @@ subroutine ocn_constants_init(configPool, packagePool)!{{{
atm_ref_pressure = 101325.0_RKIND ! (Pa)
molecular_weight_C = 12.0107_RKIND ! molecular weight carbon
molecular_weight_O2 = 15.9994_RKIND ! molecular weight oxygen
molecular_weight_Fe = 55.845_RKIND ! molecular weight iron


!-----------------------------------------------------------------------
Expand Down Expand Up @@ -176,6 +178,7 @@ subroutine ocn_constants_init(configPool, packagePool)!{{{
sea_ice_salinity = SHR_CONST_ICE_REF_SAL ! psu
molecular_weight_C = SHR_CONST_MWC ! molecular weight carbon
molecular_weight_O2 = SHR_CONST_MWO ! molecular weight oxygen
molecular_weight_Fe = SHR_CONST_MWFE ! molecular weight iron
#endif

!#ifdef ZERO_SEA_ICE_REF_SAL
Expand Down
Loading