19 #ifndef __enthSystem_hh
20 #define __enthSystem_hh
24 #include "pism/util/ColumnSystem.hh"
25 #include "pism/util/EnthalpyConverter.hh"
42 const std::string &prefix,
43 double dx,
double dy,
double dt,
53 void init(
int i,
int j,
bool ismarginal,
double ice_thickness);
65 virtual void save_system(std::ostream &output,
unsigned int M)
const;
67 void solve(std::vector<double> &result);
73 double Enth(
size_t i)
const {
94 std::vector<double>
m_R;
A class for storing and accessing PISM configuration flags and parameters.
std::shared_ptr< EnthalpyConverter > Ptr
A virtual class collecting methods common to ice and bedrock 3D fields.
Base class for tridiagonal systems in the ice.
void assemble_R()
Assemble the R array. The R value switches at the CTS.
std::vector< double > m_Enth_s
bool m_margin_exclude_vertical_advection
std::vector< double > m_E_ij
const array::Array3D & m_Enth3
std::vector< double > m_E_n
std::vector< double > m_E_w
double Enth(size_t i) const
std::vector< double > m_R
values of
const array::Array3D & m_strain_heating3
std::vector< double > m_Enth
void set_surface_neumann_bc(double dE)
Set enthalpy flux at the surface.
void compute_enthalpy_CTS()
Compute the CTS value of enthalpy in an ice column.
double Enth_s(size_t i) const
EnthalpyConverter::Ptr m_EC
void set_surface_heat_flux(double heat_flux)
Set the top surface heat flux into the ice.
enthSystemCtx(const std::vector< double > &storage_grid, const std::string &prefix, double dx, double dy, double dt, const Config &config, const array::Array3D &Enth3, const array::Array3D &u3, const array::Array3D &v3, const array::Array3D &w3, const array::Array3D &strain_heating3, EnthalpyConverter::Ptr EC)
void init(int i, int j, bool ismarginal, double ice_thickness)
void set_basal_neumann_bc(double dE)
Set enthalpy flux at the base.
bool m_margin_exclude_horizontal_advection
std::vector< double > m_E_e
double k_from_T(double T) const
std::vector< double > m_strain_heating
strain heating in the ice column
bool m_margin_exclude_strain_heat
virtual void save_system(std::ostream &output, unsigned int M) const
void set_basal_heat_flux(double heat_flux)
Set coefficients in discrete equation for Neumann condition at base of ice.
double m_D0
implicit FD method parameter
std::vector< double > m_E_s
void solve(std::vector< double > &result)
Solve the tridiagonal system, in a single column, which determines the new values of the ice enthalpy...
void checkReadyToSolve() const
double compute_lambda()
Compute the lambda for BOMBPROOF.
void set_basal_dirichlet_bc(double E_basal)
Set coefficients in discrete equation for at base of ice.
void set_surface_dirichlet_bc(double E_surface)
Tridiagonal linear system for conservation of energy in vertical column of ice enthalpy.