PISM, A Parallel Ice Sheet Model  stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
pism::energy::enthSystemCtx Class Reference

Tridiagonal linear system for conservation of energy in vertical column of ice enthalpy. More...

#include <enthSystem.hh>

+ Inheritance diagram for pism::energy::enthSystemCtx:

Public Member Functions

 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)
 
 ~enthSystemCtx ()=default
 
void init (int i, int j, bool ismarginal, double ice_thickness)
 
double k_from_T (double T) const
 
void set_surface_heat_flux (double heat_flux)
 Set the top surface heat flux into the ice. More...
 
void set_surface_neumann_bc (double dE)
 Set enthalpy flux at the surface. More...
 
void set_surface_dirichlet_bc (double E_surface)
 
void set_basal_dirichlet_bc (double E_basal)
 Set coefficients in discrete equation for \(E = Y\) at base of ice. More...
 
void set_basal_heat_flux (double heat_flux)
 Set coefficients in discrete equation for Neumann condition at base of ice. More...
 
void set_basal_neumann_bc (double dE)
 Set enthalpy flux at the base. More...
 
virtual void save_system (std::ostream &output, unsigned int M) const
 
void solve (std::vector< double > &result)
 Solve the tridiagonal system, in a single column, which determines the new values of the ice enthalpy. More...
 
double lambda () const
 
double Enth (size_t i) const
 
double Enth_s (size_t i) const
 
- Public Member Functions inherited from pism::columnSystemCtx
 columnSystemCtx (const std::vector< double > &storage_grid, const std::string &prefix, double dx, double dy, double dt, const array::Array3D &u3, const array::Array3D &v3, const array::Array3D &w3)
 A column system is a kind of a tridiagonal system. More...
 
 ~columnSystemCtx ()
 
void save_to_file (const std::vector< double > &x)
 Write system matrix, right-hand-side, and (provided) solution into Python script. Constructs file name from m_prefix. More...
 
void save_to_file (const std::string &filename, const std::vector< double > &x)
 
unsigned int ks () const
 
double dz () const
 
const std::vector< double > & z () const
 
void fine_to_coarse (const std::vector< double > &fine, int i, int j, array::Array3D &coarse) const
 

Protected Member Functions

void compute_enthalpy_CTS ()
 Compute the CTS value of enthalpy in an ice column. More...
 
double compute_lambda ()
 Compute the lambda for BOMBPROOF. More...
 
void assemble_R ()
 Assemble the R array. The R value switches at the CTS. More...
 
void checkReadyToSolve () const
 
- Protected Member Functions inherited from pism::columnSystemCtx
void init_column (int i, int j, double ice_thickness)
 
void reportColumnZeroPivotErrorMFile (unsigned int M)
 Write system matrix and right-hand-side into an Python script. The file name contains ZERO_PIVOT_ERROR. More...
 
void init_fine_grid (const std::vector< double > &storage_grid)
 
void coarse_to_fine (const array::Array3D &coarse, int i, int j, double *fine) const
 

Protected Attributes

std::vector< double > m_Enth
 
std::vector< double > m_Enth_s
 
std::vector< double > m_E_ij
 
std::vector< double > m_E_n
 
std::vector< double > m_E_e
 
std::vector< double > m_E_s
 
std::vector< double > m_E_w
 
std::vector< double > m_strain_heating
 strain heating in the ice column More...
 
std::vector< double > m_R
 values of \( k \Delta t / (\rho c \Delta x^2) \) More...
 
double m_ice_density
 
double m_ice_c
 
double m_ice_k
 
double m_p_air
 
double m_nu
 
double m_R_cold
 
double m_R_temp
 
double m_R_factor
 
double m_ice_thickness
 
double m_lambda
 
double m_D0
 implicit FD method parameter More...
 
double m_U0
 
double m_B0
 
double m_L_ks
 
double m_D_ks
 
double m_U_ks
 
double m_B_ks
 
bool m_marginal
 
bool m_k_depends_on_T
 
bool m_margin_exclude_horizontal_advection
 
bool m_margin_exclude_vertical_advection
 
bool m_margin_exclude_strain_heat
 
const array::Array3Dm_Enth3
 
const array::Array3Dm_strain_heating3
 
EnthalpyConverter::Ptr m_EC
 
- Protected Attributes inherited from pism::columnSystemCtx
TridiagonalSystemm_solver
 
ColumnInterpolationm_interp
 
unsigned int m_ks
 current system size; corresponds to the highest vertical level within the ice More...
 
int m_i
 current column indexes More...
 
int m_j
 
double m_dx
 
double m_dy
 
double m_dz
 
double m_dt
 
std::vector< double > m_u
 u-component of the ice velocity More...
 
std::vector< double > m_v
 v-component of the ice velocity More...
 
std::vector< double > m_w
 w-component of the ice velocity More...
 
std::vector< double > m_z
 levels of the fine vertical grid More...
 
const array::Array3Dm_u3
 pointers to 3D velocity components More...
 
const array::Array3Dm_v3
 
const array::Array3Dm_w3
 

Detailed Description

Tridiagonal linear system for conservation of energy in vertical column of ice enthalpy.

See the page documenting bombproofenth. The top of the ice has a Dirichlet condition.

Definition at line 38 of file enthSystem.hh.


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