Skip to content
Closed
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
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,7 @@ 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>

Expand Down
163 changes: 162 additions & 1 deletion 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 @@ -2110,6 +2110,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="shortwaveDown1D"/>
<var name="longwaveDown1D"/>
</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="airTemperature1D"/>
<var name="airSpecificHumidity1D"/>
<var name="uAirVelocity1D"/>
<var name="vAirVelocity1D"/>
<var name="rainfallRate1D"/>
</stream>
<stream name="ISPOLMonthlyForcing"
type="input"
filename_template="forcing/ocean_forcing_monthly.ispol.nc"
filename_interval="none"
input_interval="none"
immutable="true">
<var name="seaSurfaceTemperature1D"/>
<var name="seaSurfaceSalinity1D"/>
<var name="oceanMixedLayerDepth1D"/>
<var name="uOceanVelocity1D"/>
<var name="vOceanVelocity1D"/>
<var name="seaSurfaceTiltU1D"/>
<var name="seaSurfaceTiltV1D"/>
<var name="oceanHeatFluxConvergence1D"/>
</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 @@ -3737,6 +3785,52 @@
/>
</var_struct>

<!--1D atmos forcing -->
<var_struct name="1D_atmos_forcing" time_levs="1">
<var name="shortwaveDown1D"
type="real"
dimensions="Time"
units="W m-2"
description="Incoming shortwave flux (positive down)"
/>
<var name="longwaveDown1D"
type="real"
dimensions="Time"
units="W m-2"
description="Incoming longwave flux (positive down)"
/>
<var name="airTemperature1D"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this implementation could be greatly simplified if the input forcing files included a nCells=1 dimension so that an airTemperature1D variable etc in addition to the airTemperature variable would not be needed

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@akturner : Agreed. I chose to make the forcing data grid independent though so I could test on an arbitrary grid. It runs with the QU240, for example, at least in short tests.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@njeffery If the forcing is the same everywhere on the mesh, what's the utility of being able to run on meshes other than the single cell one?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@akturner : your point is well taken. I'll restructure the test case with a cell index in the forcing files. I'd like to keep the bgc nutrient file grid independent so that I can use it more generally, i.e. in a standard GCASE but with ocean bgc off. Does that seem reasonable?

type="real"
dimensions="Time"
units="K"
description="2-m air temperature"
/>
<var name="airSpecificHumidity1D"
type="real"
dimensions="Time"
units="1"
description="2-m specific humidity"
/>
<var name="uAirVelocity1D"
type="real"
dimensions="Time"
units="m s-1"
description="10-m wind velocity in the x direction"
/>
<var name="vAirVelocity1D"
type="real"
dimensions="Time"
units="m s-1"
description="10-m wind velocity in the y direction"
/>
<var name="rainfallRate1D"
type="real"
dimensions="Time"
units="kg m-2 s-1"
description="precipitation rate"
/>
</var_struct>

<!--ocean coupling -->
<var_struct name="ocean_coupling" time_levs="1">
<var name="seaSurfaceTemperature"
Expand Down Expand Up @@ -3806,6 +3900,73 @@
/>
</var_struct>

<!--1D ocean forcing -->
<var_struct name="1D_ocean_forcing" time_levs="1">
<var name="seaSurfaceTemperature1D"
type="real"
dimensions="Time"
units="K"
description="sea surface temperature"
/>
<var name="seaSurfaceSalinity1D"
type="real"
dimensions="Time"
units="1e-3"
description="sea surface salinity"
/>
<var name="uOceanVelocity1D"
type="real"
dimensions="Time"
units="m s-1"
description="ocean surface velocity in the x-direction"
/>
<var name="vOceanVelocity1D"
type="real"
dimensions="Time"
units="m s-1"
description="ocean surface velocity in the y-direction"
/>
<var name="seaSurfaceTiltU1D"
type="real"
dimensions="Time"
units="1"
description="sea surface tilt in the x-direction"
/>
<var name="seaSurfaceTiltV1D"
type="real"
dimensions="Time"
units="1"
description="sea surface tilt in the y-direction"
/>
<var name="oceanMixedLayerDepth1D"
type="real"
dimensions="Time"
units="m"
description="ocean mixed layer depth"
/>
<var name="oceanHeatFluxConvergence1D"
type="real"
dimensions="Time"
units="W m-2"
description="deep ocean heat flux positive up"
/>
</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">
<var name="interiorVertex"
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 @@ -97,5 +97,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