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::stressbalance::BlatterTestXY Class Reference

#include <BlatterTestXY.hh>

+ Inheritance diagram for pism::stressbalance::BlatterTestXY:

Public Member Functions

 BlatterTestXY (std::shared_ptr< const Grid > grid, int Mz, int coarsening_factor)
 
- Public Member Functions inherited from pism::stressbalance::Blatter
 Blatter (std::shared_ptr< const Grid > grid, int Mz, int coarsening_factor)
 
virtual ~Blatter ()=default
 
void update (const Inputs &inputs, bool)
 
std::shared_ptr< array::Array3Dvelocity_u_sigma () const
 
std::shared_ptr< array::Array3Dvelocity_v_sigma () const
 
- Public Member Functions inherited from pism::stressbalance::ShallowStressBalance
 ShallowStressBalance (std::shared_ptr< const Grid > g)
 
virtual ~ShallowStressBalance ()
 
void init ()
 
const array::Vector1velocity () const
 Get the thickness-advective 2D velocity. More...
 
const array::Scalarbasal_frictional_heating ()
 Get the basal frictional heating (for the adaptive energy time-stepping). More...
 
void compute_basal_frictional_heating (const array::Vector &velocity, const array::Scalar &tauc, const array::CellType &mask, array::Scalar &result) const
 Compute the basal frictional heating. More...
 
virtual std::string stdout_report () const
 Produce a report string for the standard output. More...
 
std::shared_ptr< const rheology::FlowLawflow_law () const
 
EnthalpyConverter::Ptr enthalpy_converter () const
 
const IceBasalResistancePlasticLawsliding_law () const
 
double flow_enhancement_factor () const
 
- Public Member Functions inherited from pism::Component
 Component (std::shared_ptr< const Grid > grid)
 
virtual ~Component ()=default
 
DiagnosticList diagnostics () const
 
TSDiagnosticList ts_diagnostics () const
 
std::shared_ptr< const Gridgrid () const
 
const Timetime () const
 
const Profilingprofiling () const
 
void define_model_state (const File &output) const
 Define model state variables in an output file. More...
 
void write_model_state (const File &output) const
 Write model state variables to an output file. More...
 
MaxTimestep max_timestep (double t) const
 Reports the maximum time-step the model can take at time t. More...
 

Protected Member Functions

bool marine_boundary (int face, const int *node_type, const double *ice_bottom, const double *sea_level)
 
bool dirichlet_node (const DMDALocalInfo &info, const fem::Element3::GlobalIndex &I)
 
Vector2d u_bc (double x, double y, double z) const
 
void residual_source_term (const fem::Q1Element3 &element, const double *surface, const double *bed, Vector2d *residual)
 
- Protected Member Functions inherited from pism::stressbalance::Blatter
void init_impl ()
 
void define_model_state_impl (const File &output) const
 The default (empty implementation). More...
 
void write_model_state_impl (const File &output) const
 The default (empty implementation). More...
 
void compute_node_type (double min_thickness)
 
virtual void nodal_parameter_values (const fem::Q1Element3 &element, Parameters **P, int i, int j, int *node_type, double *bottom, double *thickness, double *surface, double *sea_level) const
 
void compute_jacobian (DMDALocalInfo *info, const Vector2d ***x, Mat A, Mat J)
 
void jacobian_dirichlet (const DMDALocalInfo &info, Parameters **P, Mat J)
 
virtual void jacobian_f (const fem::Q1Element3 &element, const Vector2d *u_nodal, const double *B_nodal, double K[2 *fem::q13d::n_chi][2 *fem::q13d::n_chi])
 
virtual void jacobian_basal (const fem::Q1Element3Face &face, const double *tauc_nodal, const double *f_nodal, const Vector2d *u_nodal, double K[2 *fem::q13d::n_chi][2 *fem::q13d::n_chi])
 
void compute_residual (DMDALocalInfo *info, const Vector2d ***X, Vector2d ***R)
 
void residual_dirichlet (const DMDALocalInfo &info, Parameters **P, const Vector2d ***x, Vector2d ***R)
 
virtual void residual_f (const fem::Q1Element3 &element, const Vector2d *u_nodal, const double *B_nodal, Vector2d *residual)
 
virtual void residual_basal (const fem::Q1Element3 &element, const fem::Q1Element3Face &face, const double *tauc_nodal, const double *f_nodal, const Vector2d *u_nodal, Vector2d *residual)
 
virtual void residual_surface (const fem::Q1Element3 &element, const fem::Q1Element3Face &face, Vector2d *residual)
 
virtual void residual_lateral (const fem::Q1Element3 &element, const fem::Q1Element3Face &face, const double *surface_nodal, const double *z_nodal, const double *sl_nodal, Vector2d *residual)
 
virtual void init_2d_parameters (const Inputs &inputs)
 
void init_ice_hardness (const Inputs &inputs, const petsc::DM &da)
 
PetscErrorCode setup (DM pism_da, grid::Periodicity p, int Mz, int coarsening_factor, const std::string &prefix)
 
void set_initial_guess (const array::Array3D &u_sigma, const array::Array3D &v_sigma)
 
void copy_solution ()
 
void compute_averaged_velocity (array::Vector &result)
 
void get_basal_velocity (array::Vector &result)
 
void report_mesh_info ()
 
SolutionInfo solve ()
 
SolutionInfo parameter_continuation ()
 
- Protected Member Functions inherited from pism::stressbalance::ShallowStressBalance
virtual DiagnosticList diagnostics_impl () const
 
- Protected Member Functions inherited from pism::Component
virtual MaxTimestep max_timestep_impl (double t) const
 
virtual TSDiagnosticList ts_diagnostics_impl () const
 
void regrid (const std::string &module_name, array::Array &variable, RegriddingFlag flag=NO_REGRID_WITHOUT_REGRID_VARS)
 

Protected Attributes

double m_B
 constant ice hardness More...
 
- Protected Attributes inherited from pism::stressbalance::Blatter
std::shared_ptr< array::Array3Dm_u_sigma
 
std::shared_ptr< array::Array3Dm_v_sigma
 
petsc::DM m_da
 
petsc::Vec m_x
 
petsc::Vec m_x_old
 
petsc::SNES m_snes
 
array::Array2D< Parametersm_parameters
 
double m_scaling
 
double m_rho_ice_g
 
double m_rho_ocean_g
 
double m_glen_exponent
 
bool m_eta_transform
 
double m_viscosity_eps
 
double m_E_viscosity
 
bool m_ksp_use_ew
 
double m_work [m_n_work][m_Nq]
 
Vector2d m_work2 [m_n_work][m_Nq]
 
fem::Q1Element3Face m_face4
 
fem::Q1Element3Face m_face100
 
- Protected Attributes inherited from pism::stressbalance::ShallowStressBalance
IceBasalResistancePlasticLawm_basal_sliding_law
 
std::shared_ptr< rheology::FlowLawm_flow_law
 
EnthalpyConverter::Ptr m_EC
 
array::Vector2 m_velocity
 
array::Scalar m_basal_frictional_heating
 
double m_e_factor
 flow enhancement factor More...
 
- Protected Attributes inherited from pism::Component
const std::shared_ptr< const Gridm_grid
 grid used by this component More...
 
const Config::ConstPtr m_config
 configuration database used by this component More...
 
const units::System::Ptr m_sys
 unit system used by this component More...
 
const Logger::ConstPtr m_log
 logger (for easy access) More...
 

Additional Inherited Members

- Protected Types inherited from pism::Component
enum  RegriddingFlag { REGRID_WITHOUT_REGRID_VARS , NO_REGRID_WITHOUT_REGRID_VARS }
 This flag determines whether a variable is read from the -regrid_file file even if it is not listed among variables in -regrid_vars. More...
 
- Static Protected Member Functions inherited from pism::stressbalance::Blatter
static bool exterior_element (const int *node_type)
 
static bool grounding_line (const double *F)
 
static bool partially_submerged_face (int face, const double *z, const double *sea_level)
 
static PetscErrorCode jacobian_callback (DMDALocalInfo *info, const Vector2d ***x, Mat A, Mat J, Blatter *solver)
 
static PetscErrorCode function_callback (DMDALocalInfo *info, const Vector2d ***x, Vector2d ***f, Blatter *solver)
 
- Static Protected Attributes inherited from pism::stressbalance::Blatter
static const int m_Nq = 100
 
static const int m_n_work = 9
 

Detailed Description

Implements Dirichlet BC and the source term for a verification test using the following exact solution:

u = exp(x) * sin(2 * pi * y) v = exp(x) * cos(2 * pi * y)

Domain: [0, 1] * [0, 1] * [0, 1].

Ice thickness is equal to 1 everywhere; bed elevation is 0 everywhere.

Dirichlet BC are imposed at all the nodes along the lateral boundary.

Natural boundary conditions are used on the top and bottom boundaries.

Note: KSP iterations seem to stall when the default preconditioner is used. Use "-pc_type gamg" instead.

Definition at line 46 of file BlatterTestXY.hh.


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