Skip to content

Commit

Permalink
Merge branch 'njeffery/seaice/ispol-column-forcing-Dtest' into next (PR
Browse files Browse the repository at this point in the history
#5506)

Adds a 1D bgc forcing test case and a bgc D-TEST

New data file with atmospheric, ocean and biogeochemical data from the
2004 Ice Station Polarstern (ISPOL) Weddell Sea experiment from
June 16, 2004 to December 31, 2004. Core 2 from the ISPOL location fills
out the remainder of the year.

A uniform_1D initial condition was added for flexible initialization of
BGC. Atmophere and Ocean forcing use the nCells dimension of 1. A new
testcase - single_cell_ispol - was added to the
MPAS-Seaice_standalone_framework to verify this forcing and
initialization.

The ISPOL bgc forcing can be used with any of the gridded physics
forcing datasets for testing purposes.

[NML]
[BFB]
  • Loading branch information
jonbob committed Apr 27, 2023
2 parents dc071e4 + 7832891 commit a5cc7bb
Show file tree
Hide file tree
Showing 9 changed files with 1,202 additions and 68 deletions.
1 change: 1 addition & 0 deletions components/mpas-seaice/bld/build-namelist
Original file line number Diff line number Diff line change
Expand Up @@ -567,6 +567,7 @@ add_default($nl, 'config_forcing_cycle_start');
add_default($nl, 'config_forcing_cycle_duration');
add_default($nl, 'config_forcing_precipitation_units');
add_default($nl, 'config_forcing_sst_type');
add_default($nl, 'config_forcing_bgc_type');
add_default($nl, 'config_update_ocean_fluxes');
add_default($nl, 'config_include_pond_freshwater_feedback');

Expand Down
1 change: 1 addition & 0 deletions components/mpas-seaice/bld/build-namelist-section
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ add_default($nl, 'config_forcing_cycle_start');
add_default($nl, 'config_forcing_cycle_duration');
add_default($nl, 'config_forcing_precipitation_units');
add_default($nl, 'config_forcing_sst_type');
add_default($nl, 'config_forcing_bgc_type');
add_default($nl, 'config_update_ocean_fluxes');
add_default($nl, 'config_include_pond_freshwater_feedback');

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@
<config_forcing_cycle_duration>'2-00-00_00:00:00'</config_forcing_cycle_duration>
<config_forcing_precipitation_units>'mm_per_sec'</config_forcing_precipitation_units>
<config_forcing_sst_type>'ncar'</config_forcing_sst_type>
<config_forcing_bgc_type>'ISPOL'</config_forcing_bgc_type>
<config_update_ocean_fluxes>true</config_update_ocean_fluxes>
<config_include_pond_freshwater_feedback>false</config_include_pond_freshwater_feedback>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ Default: Defined in namelist_defaults.xml
category="initialize" group="initialize">
Initial condition type for sea ice state.

Valid values: 'restart', 'uniform', 'circle', 'square' or 'uniform_interior'
Valid values: 'restart', 'uniform', 'circle', 'square', 'uniform_interior' or 'uniform_1D'
Default: Defined in namelist_defaults.xml
</entry>

Expand Down Expand Up @@ -461,7 +461,7 @@ Default: Defined in namelist_defaults.xml
category="forcing" group="forcing">
Atmospheric forcing type.

Valid values: 'CORE'
Valid values: 'CORE' or 'ISPOL'
Default: Defined in namelist_defaults.xml
</entry>

Expand Down Expand Up @@ -501,7 +501,15 @@ Default: Defined in namelist_defaults.xml
category="forcing" group="forcing">
Sea surface temperature ocean forcing type.

Valid values: 'ncar'
Valid values: 'ncar' or 'ISPOL'
Default: Defined in namelist_defaults.xml
</entry>

<entry id="config_forcing_bgc_type" type="char*1024"
category="forcing" group="forcing">
Ocean biogeochemistry forcing type.

Valid values: 'ISPOL'
Default: Defined in namelist_defaults.xml
</entry>

Expand Down
7 changes: 7 additions & 0 deletions components/mpas-seaice/cime_config/buildnml
Original file line number Diff line number Diff line change
Expand Up @@ -518,6 +518,13 @@ def buildnml(case, caseroot, compname):
lines.append(' filename_interval="none"')
lines.append(' input_interval="initial_only" />')
lines.append('')
lines.append('<immutable_stream name="ISPOLDailyWOAForcing"')
lines.append(' type="input"')
lines.append(' io_type="{}"'.format(ice_pio_typename))
lines.append(' filename_template="{}/ice/mpas-cice/general/ISPOLDailyWOAForcing_10132022.nc"')
lines.append(' filename_interval="none"')
lines.append(' input_interval="none" />')
lines.append('')
lines.append('<immutable_stream name="abort_contents"')
lines.append(' type="none"')
lines.append(' filename_template="abort_variables.nc" />')
Expand Down
72 changes: 69 additions & 3 deletions components/mpas-seaice/src/Registry.xml
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,7 @@
/>
<nml_option name="config_initial_condition_type" type="character" default_value="cice_default" units="unitless"
description="Initial condition type for sea ice state."
possible_values="'restart', 'uniform', 'circle', 'square' or 'uniform_interior'"
possible_values="'restart', 'uniform', 'circle', 'square', 'uniform_interior' or 'uniform_1D'"
/>
<nml_option name="config_initial_ice_area" type="real" default_value="1.0" units="unitless"
description="Sea ice concentration at initialization."
Expand Down Expand Up @@ -522,7 +522,7 @@
<nml_record name="forcing" in_defaults="true">
<nml_option name="config_atmospheric_forcing_type" type="character" default_value="CORE" units="unitless"
description="Atmospheric forcing type."
possible_values="'CORE'"
possible_values="'CORE' or 'ISPOL'"
/>
<nml_option name="config_forcing_start_time" type="character" default_value="2000-01-01_00:00:00" units="unitless"
description="Forcing time to use at the simulation start time"
Expand All @@ -542,7 +542,11 @@
/>
<nml_option name="config_forcing_sst_type" type="character" default_value="ncar" units="unitless"
description="Sea surface temperature ocean forcing type."
possible_values="'ncar'"
possible_values="'ncar' or 'ISPOL'"
/>
<nml_option name="config_forcing_bgc_type" type="character" default_value="ISPOL" units="unitless"
description="Ocean biogeochemistry forcing type."
possible_values="'ISPOL'"
/>
<nml_option name="config_update_ocean_fluxes" type="logical" default_value="false" units="unitless"
description=""
Expand Down Expand Up @@ -2152,6 +2156,54 @@
immutable="true">
<var name="iceCoverage"/>
</stream>
<stream name="ISPOLSixHourlyForcing"
type="input"
filename_template="forcing/atmosphere_forcing_six_hourly.ispol.nc"
filename_interval="0001-00-00_00:00:00"
input_interval="none"
reference_time="2004-01-01_00:00:00"
immutable="true">
<var name="shortwaveDown"/>
<var name="longwaveDown"/>
</stream>
<stream name="ISPOLDailyForcing"
type="input"
filename_template="forcing/atmosphere_forcing_daily.ispol.nc"
filename_interval="0001-00-00_00:00:00"
input_interval="none"
reference_time="2004-01-01_00:00:00"
immutable="true">
<var name="airTemperature"/>
<var name="airSpecificHumidity"/>
<var name="uAirVelocity"/>
<var name="vAirVelocity"/>
<var name="rainfallRate"/>
</stream>
<stream name="ISPOLMonthlyForcing"
type="input"
filename_template="forcing/ocean_forcing_monthly.ispol.nc"
filename_interval="none"
input_interval="none"
immutable="true">
<var name="seaSurfaceTemperature"/>
<var name="seaSurfaceSalinity"/>
<var name="oceanMixedLayerDepth"/>
<var name="uOceanVelocity"/>
<var name="vOceanVelocity"/>
<var name="seaSurfaceTiltU"/>
<var name="seaSurfaceTiltV"/>
<var name="oceanHeatFluxConvergence"/>
</stream>
<stream name="ISPOLDailyWOAForcing"
type="input"
filename_template="forcing/ocean_biogeochemistry_forcing_daily.ispol.nc"
filename_interval="0001-00-00_00:00:00"
input_interval="none"
reference_time="2004-01-01_00:00:00"
immutable="true">
<var name="oceanNitrateConc1D"/>
<var name="oceanSilicateConc1D"/>
</stream>

<!-- Aerosols input -->
<stream name="StandardAerosolsInput"
Expand Down Expand Up @@ -3847,6 +3899,20 @@
dimensions="nVertices Time"
/>
</var_struct>
▶ <var_struct name="1D_ocean_biogeochemistry_forcing" time_levs="1">
<var name="oceanNitrateConc1D"
type="real"
dimensions="Time"
units="mmol N m-3"
description="sea surface nitrate"
/>
<var name="oceanSilicateConc1D"
type="real"
dimensions="Time"
units="mmol Si m-3"
description="sea surface silicate"
/>
</var_struct>

<!-- boundary variables -->
<var_struct name="boundary" time_levs="1">
Expand Down
16 changes: 16 additions & 0 deletions components/mpas-seaice/src/shared/mpas_seaice_constants.F
Original file line number Diff line number Diff line change
Expand Up @@ -103,5 +103,21 @@ module seaice_constants
skeletalLayerThickness = sk_l , &
gramsCarbonPerMolCarbon = R_gC2molC ! g carbon per mol carbon

! ocean biogeochemistry ISPOL values
real(kind=RKIND), parameter, public :: &
oceanAmmoniumISPOL = 1.0_RKIND, & ! mmol N m-3
oceanDMSISPOL = 0.1_RKIND, & ! mmol S m-3
oceanDMSPISPOL = 0.1_RKIND, & ! mmol S m-3
oceanDiatomsISPOL = 1.0_RKIND, & ! mmol N m-3
oceanSmallAlgaeISPOL = 0.0057_RKIND, & ! mmol N m-3
oceanPhaeocystisISPOL = 0.0027_RKIND, & ! mmol N m-3
oceanPolysaccharidsISPOL = 16.2_RKIND, & ! mmol C m-3
oceanLipidsISPOL = 9.0_RKIND, & ! mmol C m-3
oceanProteinsCarbonISPOL = 9.0_RKIND, & ! mmol C m-3
oceanDICISPOL = 1.0_RKIND, & ! mmol C m-3
oceanProteinsISPOL = 12.9_RKIND, & ! mmol N m-3
oceanDissolvedIronISPOL = 0.4_RKIND, & ! mmol Fe m-3
oceanParticulateIronISPOL = 2.0_RKIND,& ! mmol Fe m-3
oceanHumicsISPOL = 1.0_RKIND ! mmol C m-3

end module seaice_constants
Loading

0 comments on commit a5cc7bb

Please sign in to comment.