SNOWPACK 20241221.26c8720
SeaIce Class Reference

#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)
 
SeaIceoperator= (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)
 

Member Enumeration Documentation

◆ salinityprofiles

Enumerator
NONE 
CONSTANT 
COXANDWEEKS 
LINEARSAL 
LINEARSAL2 
SINUSSAL 

◆ thermalmodels

Enumerator
IGNORE 
ASSUR1958 
VANCOPPENOLLE2019 
VANCOPPENOLLE2019_M 

Constructor & Destructor Documentation

◆ SeaIce() [1/2]

SeaIce::SeaIce ( )

◆ ~SeaIce()

SeaIce::~SeaIce ( )

◆ SeaIce() [2/2]

constexpr SeaIce::SeaIce ( const SeaIce org)
constexprdefault

Member Function Documentation

◆ ApplyBottomIceMassBalance()

void SeaIce::ApplyBottomIceMassBalance ( SnowStation Xdata,
const CurrentMeteo Mdata,
double  dM,
SurfaceFluxes Sdata 
)

Apply mass gain/loss at the bottom (dM)

Version
16.08: initial version
Parameters
Xdata
Mdata
dMmass 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

◆ bottomIceFormation()

void SeaIce::bottomIceFormation ( SnowStation Xdata,
const CurrentMeteo Mdata,
const double &  sn_dt,
SurfaceFluxes Sdata 
)

Calculate ice formation and decay at the bottom.

Version
16.08: initial version
Parameters
XdataSnowStation object to use in calculation
MdataMeteo data
sn_dtTime step (s)
Sdata

◆ calculateBrineSalinity()

double SeaIce::calculateBrineSalinity ( const double &  T)

Calculate brine salinity as a function of temperature.

Version
17.12: initial version
Parameters
TTemperature (K)

◆ calculateMeltingTemperature() [1/2]

double SeaIce::calculateMeltingTemperature ( const double &  Sal)

Calculate melting temperature as function of brine salinity.

Version
17.12: initial version
Parameters
SalBrine salinity (PSU, which is g/kg)

◆ calculateMeltingTemperature() [2/2]

void SeaIce::calculateMeltingTemperature ( ElementData Edata)

Calculate melting temperature as function of brine salinity.

Version
16.08
Parameters
EdataLayer element to use in calculation

◆ compFlooding()

void SeaIce::compFlooding ( SnowStation Xdata,
SurfaceFluxes Sdata 
)

Apply flooding
.

Version
16.08
Parameters
XdataSnowStation object to use in calculation
Sdata

◆ compSalinityProfile()

void SeaIce::compSalinityProfile ( SnowStation Xdata)

Determines the salinity and associated melting temperature.

Parameters
XdataSnowStation to apply the salinity profile to

◆ compSeaIceHeatCapacity()

double SeaIce::compSeaIceHeatCapacity ( const double &  T,
const double &  Sal 
)
static

Heat capacity of sea ice, for the combined system ICE + WATER (brine).

Version
16.08: initial version
Parameters
TTemperature (K)
SalSalinity (PSU, which is g/kg)
Returns
Heat capacity for sea ice (J / kg / K)

◆ compSeaIceLatentHeatFusion() [1/2]

double SeaIce::compSeaIceLatentHeatFusion ( const double &  T,
const double &  Sal 
)
static

Latent heat of melting for sea ice, for the combined system ICE + WATER (brine)

Version
16.08: initial version
Parameters
TTemperatur (K)
SalSalinity (PSU, which is g/kg)
Returns
Latent heat of fusion for sea ice (J / kg)

◆ compSeaIceLatentHeatFusion() [2/2]

double SeaIce::compSeaIceLatentHeatFusion ( const ElementData Edata)
static

Latent heat of melting for sea ice, for the combined system ICE + WATER (brine)

Version
16.08: initial version
Parameters
Edata
Returns
Latent heat of fusion for sea ice (J / kg)

◆ compSeaIceThermalConductivity()

double SeaIce::compSeaIceThermalConductivity ( const ElementData Edata)
static

Heat conduction in sea ice, for the combined system ICE + WATER (brine)

Version
16.08: initial version
Parameters
Edata
Returns
Thermal conductivity for sea ice (W K-1 m-1)

◆ ConfigSeaIce()

void SeaIce::ConfigSeaIce ( const SnowpackConfig i_cfg)

◆ findIceSurface()

double SeaIce::findIceSurface ( SnowStation Xdata)

Find snow/ice transition for sea ice simulations
.

Version
16.08
Parameters
XdataSnowStation object to use in calculation

◆ getAvgBrineSalinity()

double SeaIce::getAvgBrineSalinity ( const SnowStation Xdata)

Returns the average brine salinity (g / kg)

Parameters
XdataSnow cover data

◆ getAvgBulkSalinity()

double SeaIce::getAvgBulkSalinity ( const SnowStation Xdata)

Returns the average bulk salinity (g / kg)

Parameters
XdataSnow cover data

◆ getMu()

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.

◆ getTotSalinity()

double SeaIce::getTotSalinity ( const SnowStation Xdata)

Returns the total salinity (g / m^2)

Parameters
XdataSnow cover data

◆ InitSeaIce()

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.

Version
21.06: initial version
Author
Nander Wever
Parameters
XdataThe SnowStation object to initialize

◆ operator=()

SeaIce & SeaIce::operator= ( const SeaIce source)

Assignement operator.

◆ runSeaIceModule()

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.
.

Version
16.08: initial version
Author
Nander Wever
Parameters
Xdata
Mdata
Bdata
sn_dtSNOWPACK time step (s)
Sdata

◆ updateFreeboard()

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)
.

Version
16.08
Parameters
XdataSnowStation object to use in calculation

Friends And Related Function Documentation

◆ operator<<

std::iostream & operator<< ( std::iostream &  os,
const SeaIce data 
)
friend

◆ operator>>

std::iostream & operator>> ( std::iostream &  is,
SeaIce data 
)
friend

Member Data Documentation

◆ betaS

const double SeaIce::betaS = 0.824
static

◆ BottomSalFlux

double SeaIce::BottomSalFlux

◆ check_initial_conditions

bool SeaIce::check_initial_conditions

◆ ForcedSeaLevel

double SeaIce::ForcedSeaLevel

Force sea level externally (Alpine3D)

◆ FreeBoard

double SeaIce::FreeBoard

Freeboard of sea ice (m)

◆ ice_threshold

const double SeaIce::ice_threshold = 800.
static

◆ IceSurface

double SeaIce::IceSurface

Interface sea ice/snow (m)

◆ IceSurfaceNode

size_t SeaIce::IceSurfaceNode

Interface node sea ice/snow (m)

◆ InitRb

const double SeaIce::InitRb = 2.5
static

◆ InitRg

const double SeaIce::InitRg = 5.
static

◆ InitSeaIceSalinity

const double SeaIce::InitSeaIceSalinity = 5.
static

◆ InitSnowSalinity

const double SeaIce::InitSnowSalinity = 0.
static

◆ mu

const double SeaIce::mu = 0.054
static

◆ OceanHeatFlux

double SeaIce::OceanHeatFlux

Ocean heat flux (W/m^2)

◆ OceanSalinity

const double SeaIce::OceanSalinity = 35.
static

◆ salinityprofile

salinityprofiles SeaIce::salinityprofile

◆ SeaIceDensity

const double SeaIce::SeaIceDensity = ReSolver1d::max_theta_ice * Constants::density_ice
static

◆ SeaLevel

double SeaIce::SeaLevel

Sea level in domain (m)

◆ SeaWaterFreezingTemp

const double SeaIce::SeaWaterFreezingTemp = IOUtils::C_TO_K(-1.95)
static

◆ thermalmodel

thermalmodels SeaIce::thermalmodel

◆ ThicknessFirstIceLayer

const double SeaIce::ThicknessFirstIceLayer = 0.01
static

◆ TopSalFlux

double SeaIce::TopSalFlux

The documentation for this class was generated from the following files: