Skip to content
Open
Show file tree
Hide file tree
Changes from 2 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_iron_solubility_file');
add_default($nl, 'config_use_ecosysTracers_atm_dust_from_coupler');

####################################################
# 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,6 +599,8 @@ 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_iron_solubility_file');
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');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -760,6 +760,8 @@
<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_iron_solubility_file>.false.</config_use_ecosysTracers_iron_solubility_file>
<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>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3115,6 +3115,22 @@ 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, use iron solubility field read in from a file

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 wet and dry atm dust deposition from the coupler instead of 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
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
Loading