#include <SeaIce.h>
Public Types | |
enum | salinityprofiles { NONE , CONSTANT , COXANDWEEKS , LINEARSAL , LINEARSAL2 , SINUSSAL } |
enum | thermalmodels { IGNORE , ASSUR1958 , VANCOPPENOLLE2019 , VANCOPPENOLLE2019_M } |
Public Member Functions | |
SeaIce () | |
~SeaIce () | |
void | ConfigSeaIce (const SnowpackConfig &i_cfg) |
SeaIce & | operator= (const SeaIce &) |
Assignement operator. More... | |
constexpr | SeaIce (const SeaIce &org)=default |
double | calculateBrineSalinity (const double &T) |
Calculate brine salinity as a function of temperature. More... | |
double | calculateMeltingTemperature (const double &Sal) |
Calculate melting temperature as function of brine salinity. More... | |
void | calculateMeltingTemperature (ElementData &Edata) |
Calculate melting temperature as function of brine salinity. More... | |
std::pair< double, double > | getMu (const double &Sal) |
Returns the tangent line to the salinity-melting point curve General tangent line equation: T = mu0 + mu1 * Sal, with mu1 = dTm/dS. More... | |
void | compSalinityProfile (SnowStation &Xdata) |
Determines the salinity and associated melting temperature. More... | |
void | updateFreeboard (SnowStation &Xdata) |
Updates the freeboard variable (i.e., sea level with respect to ice surface) positive: sea level below ice surface negative: sea level above ice surface (flooding) . More... | |
double | findIceSurface (SnowStation &Xdata) |
Find snow/ice transition for sea ice simulations . More... | |
void | compFlooding (SnowStation &Xdata, SurfaceFluxes &Sdata) |
Apply flooding . More... | |
void | bottomIceFormation (SnowStation &Xdata, const CurrentMeteo &Mdata, const double &sn_dt, SurfaceFluxes &Sdata) |
Calculate ice formation and decay at the bottom. More... | |
void | ApplyBottomIceMassBalance (SnowStation &Xdata, const CurrentMeteo &Mdata, double dM, SurfaceFluxes &Sdata) |
Apply mass gain/loss at the bottom (dM) More... | |
double | getAvgBulkSalinity (const SnowStation &Xdata) |
Returns the average bulk salinity (g / kg) More... | |
double | getAvgBrineSalinity (const SnowStation &Xdata) |
Returns the average brine salinity (g / kg) More... | |
double | getTotSalinity (const SnowStation &Xdata) |
Returns the total salinity (g / m^2) More... | |
void | InitSeaIce (SnowStation &Xdata) |
Initializes a SnowStation object for appropriate sea ice conditions First, water and ice content is calculated, while maintaining initial bulk salinity and temperature After that, initialize pressure head consistently with the displaced ocean water. More... | |
void | runSeaIceModule (SnowStation &Xdata, const CurrentMeteo &Mdata, BoundCond &Bdata, const double &sn_dt, SurfaceFluxes &Sdata) |
The sea ice module This function runs the sea ice module of SNOWPACK. . More... | |
Static Public Member Functions | |
static double | compSeaIceHeatCapacity (const double &T, const double &Sal) |
Heat capacity of sea ice, for the combined system ICE + WATER (brine). More... | |
static double | compSeaIceThermalConductivity (const ElementData &Edata) |
Heat conduction in sea ice, for the combined system ICE + WATER (brine) More... | |
static double | compSeaIceLatentHeatFusion (const ElementData &Edata) |
Latent heat of melting for sea ice, for the combined system ICE + WATER (brine) More... | |
static double | compSeaIceLatentHeatFusion (const double &T, const double &Sal) |
Latent heat of melting for sea ice, for the combined system ICE + WATER (brine) More... | |
Public Attributes | |
double | SeaLevel |
Sea level in domain (m) More... | |
double | ForcedSeaLevel |
Force sea level externally (Alpine3D) More... | |
double | FreeBoard |
Freeboard of sea ice (m) More... | |
double | IceSurface |
Interface sea ice/snow (m) More... | |
size_t | IceSurfaceNode |
Interface node sea ice/snow (m) More... | |
double | OceanHeatFlux |
Ocean heat flux (W/m^2) More... | |
double | BottomSalFlux |
double | TopSalFlux |
bool | check_initial_conditions |
salinityprofiles | salinityprofile |
thermalmodels | thermalmodel |
Static Public Attributes | |
static const double | SeaWaterFreezingTemp = IOUtils::C_TO_K(-1.95) |
static const double | SeaIceDensity = ReSolver1d::max_theta_ice * Constants::density_ice |
static const double | ice_threshold = 800. |
static const double | mu = 0.054 |
static const double | betaS = 0.824 |
static const double | ThicknessFirstIceLayer = 0.01 |
static const double | InitRg = 5. |
static const double | InitRb = 2.5 |
static const double | OceanSalinity = 35. |
static const double | InitSeaIceSalinity = 5. |
static const double | InitSnowSalinity = 0. |
Friends | |
std::iostream & | operator<< (std::iostream &os, const SeaIce &data) |
std::iostream & | operator>> (std::iostream &is, SeaIce &data) |
SeaIce::SeaIce | ( | ) |
SeaIce::~SeaIce | ( | ) |
|
constexprdefault |
void SeaIce::ApplyBottomIceMassBalance | ( | SnowStation & | Xdata, |
const CurrentMeteo & | Mdata, | ||
double | dM, | ||
SurfaceFluxes & | Sdata | ||
) |
Apply mass gain/loss at the bottom (dM)
Xdata | |
Mdata | |
dM | mass change from phase changes at the bottom of the sea ice (kg/m^2), positive=gain, negative=loss. Note, dM only concerns change in ice mass. |
Sdata |
void SeaIce::bottomIceFormation | ( | SnowStation & | Xdata, |
const CurrentMeteo & | Mdata, | ||
const double & | sn_dt, | ||
SurfaceFluxes & | Sdata | ||
) |
Calculate ice formation and decay at the bottom.
Xdata | SnowStation object to use in calculation |
Mdata | Meteo data |
sn_dt | Time step (s) |
Sdata |
double SeaIce::calculateBrineSalinity | ( | const double & | T | ) |
Calculate brine salinity as a function of temperature.
T | Temperature (K) |
double SeaIce::calculateMeltingTemperature | ( | const double & | Sal | ) |
Calculate melting temperature as function of brine salinity.
Sal | Brine salinity (PSU, which is g/kg) |
void SeaIce::calculateMeltingTemperature | ( | ElementData & | Edata | ) |
Calculate melting temperature as function of brine salinity.
Edata | Layer element to use in calculation |
void SeaIce::compFlooding | ( | SnowStation & | Xdata, |
SurfaceFluxes & | Sdata | ||
) |
void SeaIce::compSalinityProfile | ( | SnowStation & | Xdata | ) |
Determines the salinity and associated melting temperature.
Xdata | SnowStation to apply the salinity profile to |
|
static |
Heat capacity of sea ice, for the combined system ICE + WATER (brine).
T | Temperature (K) |
Sal | Salinity (PSU, which is g/kg) |
|
static |
Latent heat of melting for sea ice, for the combined system ICE + WATER (brine)
T | Temperatur (K) |
Sal | Salinity (PSU, which is g/kg) |
|
static |
Latent heat of melting for sea ice, for the combined system ICE + WATER (brine)
Edata |
|
static |
Heat conduction in sea ice, for the combined system ICE + WATER (brine)
Edata |
void SeaIce::ConfigSeaIce | ( | const SnowpackConfig & | i_cfg | ) |
double SeaIce::findIceSurface | ( | SnowStation & | Xdata | ) |
Find snow/ice transition for sea ice simulations
.
Xdata | SnowStation object to use in calculation |
double SeaIce::getAvgBrineSalinity | ( | const SnowStation & | Xdata | ) |
Returns the average brine salinity (g / kg)
Xdata | Snow cover data |
double SeaIce::getAvgBulkSalinity | ( | const SnowStation & | Xdata | ) |
Returns the average bulk salinity (g / kg)
Xdata | Snow cover data |
std::pair< double, double > SeaIce::getMu | ( | const double & | Sal | ) |
Returns the tangent line to the salinity-melting point curve General tangent line equation: T = mu0 + mu1 * Sal, with mu1 = dTm/dS.
double SeaIce::getTotSalinity | ( | const SnowStation & | Xdata | ) |
Returns the total salinity (g / m^2)
Xdata | Snow cover data |
void SeaIce::InitSeaIce | ( | SnowStation & | Xdata | ) |
Initializes a SnowStation object for appropriate sea ice conditions
First, water and ice content is calculated, while maintaining initial bulk salinity and temperature After that, initialize pressure head consistently with the displaced ocean water.
Xdata | The SnowStation object to initialize |
void SeaIce::runSeaIceModule | ( | SnowStation & | Xdata, |
const CurrentMeteo & | Mdata, | ||
BoundCond & | Bdata, | ||
const double & | sn_dt, | ||
SurfaceFluxes & | Sdata | ||
) |
The sea ice module
This function runs the sea ice module of SNOWPACK.
.
Xdata | |
Mdata | |
Bdata | |
sn_dt | SNOWPACK time step (s) |
Sdata |
void SeaIce::updateFreeboard | ( | SnowStation & | Xdata | ) |
Updates the freeboard variable (i.e., sea level with respect to ice surface)
positive: sea level below ice surface
negative: sea level above ice surface (flooding)
.
Xdata | SnowStation object to use in calculation |
|
friend |
|
friend |
|
static |
double SeaIce::BottomSalFlux |
bool SeaIce::check_initial_conditions |
double SeaIce::ForcedSeaLevel |
Force sea level externally (Alpine3D)
double SeaIce::FreeBoard |
Freeboard of sea ice (m)
|
static |
double SeaIce::IceSurface |
Interface sea ice/snow (m)
size_t SeaIce::IceSurfaceNode |
Interface node sea ice/snow (m)
|
static |
|
static |
|
static |
|
static |
|
static |
double SeaIce::OceanHeatFlux |
Ocean heat flux (W/m^2)
|
static |
salinityprofiles SeaIce::salinityprofile |
|
static |
double SeaIce::SeaLevel |
Sea level in domain (m)
|
static |
thermalmodels SeaIce::thermalmodel |
|
static |
double SeaIce::TopSalFlux |