PISM, A Parallel Ice Sheet Model
stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
|
Tridiagonal linear system for conservation of energy in vertical column of ice enthalpy. More...
#include <enthSystem.hh>
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::Array3D & | m_Enth3 |
const array::Array3D & | m_strain_heating3 |
EnthalpyConverter::Ptr | m_EC |
Protected Attributes inherited from pism::columnSystemCtx | |
TridiagonalSystem * | m_solver |
ColumnInterpolation * | m_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::Array3D & | m_u3 |
pointers to 3D velocity components More... | |
const array::Array3D & | m_v3 |
const array::Array3D & | m_w3 |
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.