BISICLES AMR ice sheet model  0.9
Public Member Functions | Protected Attributes | List of all members
PiecewiseLinearFlux Class Reference

SurfaceFlux which has a piecewise linear dependence on ice thickness. More...

#include <ComplexSurfaceFlux.H>

Inheritance diagram for PiecewiseLinearFlux:
Inheritance graph
[legend]
Collaboration diagram for PiecewiseLinearFlux:
Collaboration graph
[legend]

Public Member Functions

 PiecewiseLinearFlux (const Vector< Real > &a_abscissae, const Vector< Real > &a_ordinates, const Real a_minWaterDepth=-1.0)
 
 ~PiecewiseLinearFlux ()
 
virtual SurfaceFluxnew_surfaceFlux ()
 factory method: return a pointer to a new SurfaceFlux object More...
 
virtual void surfaceThicknessFlux (LevelData< FArrayBox > &a_flux, const AmrIceBase &a_amrIce, int a_level, Real a_dt)
 define source term for thickness evolution and place it in flux More...
 
- Public Member Functions inherited from SurfaceFlux
virtual ~SurfaceFlux ()
 virtual destructor More...
 
virtual void evaluate (LevelData< FArrayBox > &a_data, const AmrIceBase &a_amrIce, int a_level, Real a_dt)
 Sub-classes of this class turned out to be useful for various data apart from thickness fluxes... More...
 

Protected Attributes

Vector< Real > m_abscissae
 
Vector< Real > m_ordinates
 
Real m_minWaterDepth
 

Additional Inherited Members

- Static Public Member Functions inherited from SurfaceFlux
static SurfaceFluxparse (const char *a_prefix)
 assemble a SurfaceFlux* object from ParmParse inputs More...
 

Detailed Description

SurfaceFlux which has a piecewise linear dependence on ice thickness.

Usually used in conjunction with MaskedFlux to impose a depth dependent ice shelf melt rate. Provided that the cavity water thickness $ d = s-h-b > d_0$, the surface flux is computed from $ n $ pairs of abissiciae and ordinates $ ( h_i, f_i ) $

$ f = f_0 $ for $ h < h_0 $

$ f = f_{i}(h-h_{i+1})/(h{i}-h_{i+1}) + f_{i+1}(h-h_{i})/(h_{i+1}-h_{i}) + $ for $ h_i \leq h < h_{i+1} $

$ f = f_{n-1} $ for $ h > h_{n-1} $

Run-time configuration is carried out in SurfaceFlux::parse. If the string A.B.C.type = piecewiseLinearFlux is found, then the expected form is:

Constructor & Destructor Documentation

◆ PiecewiseLinearFlux()

PiecewiseLinearFlux::PiecewiseLinearFlux ( const Vector< Real > &  a_abscissae,
const Vector< Real > &  a_ordinates,
const Real  a_minWaterDepth = -1.0 
)
Parameters
a_abscissaelist of thickness abscissae $h_i$
a_abscissaelist of flux ordinates $f_i$
a_minWaterDepthset flux to zero in sub-shelf cavities thinner than a_minWaterDepth

References m_abscissae, m_ordinates, and PiecewiseLinearFlux().

Referenced by PiecewiseLinearFlux().

◆ ~PiecewiseLinearFlux()

PiecewiseLinearFlux::~PiecewiseLinearFlux ( )
inline

Member Function Documentation

◆ new_surfaceFlux()

SurfaceFlux * PiecewiseLinearFlux::new_surfaceFlux ( )
virtual

factory method: return a pointer to a new SurfaceFlux object

Implements SurfaceFlux.

References m_abscissae, m_minWaterDepth, and m_ordinates.

◆ surfaceThicknessFlux()

void PiecewiseLinearFlux::surfaceThicknessFlux ( LevelData< FArrayBox > &  a_flux,
const AmrIceBase a_amrIce,
int  a_level,
Real  a_dt 
)
virtual

define source term for thickness evolution and place it in flux

Parameters
a_fluxoutput flux data
a_amrIcereference to the ice sheet state
a_levelmesh level of a_flux
a_dtcurrent timestep

a_dt is included in case one needs integrals or averages over a timestep. flux should be defined in meters per year in the current implementation.

Implements SurfaceFlux.

References AmrIceBase::geometry(), m_abscissae, m_minWaterDepth, and m_ordinates.

Member Data Documentation

◆ m_abscissae

Vector<Real> PiecewiseLinearFlux::m_abscissae
protected

◆ m_minWaterDepth

Real PiecewiseLinearFlux::m_minWaterDepth
protected

◆ m_ordinates

Vector<Real> PiecewiseLinearFlux::m_ordinates
protected

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