20 #ifndef BLATTERTESTHALFAR_H
21 #define BLATTERTESTHALFAR_H
23 #include "pism/stressbalance/blatter/Blatter.hh"
26 namespace stressbalance {
37 double u_exact(
double x,
double z)
const;
44 const double *surface,
50 const double *surface_nodal,
51 const double *z_nodal,
52 const double *sl_nodal,
61 const double *tauc_nodal,
62 const double *f_nodal,
67 const double *tauc_nodal,
68 const double *f_nodal,
std::shared_ptr< const Grid > grid() const
This class represents a 2D vector field (such as ice velocity) at a certain grid point.
double H_exact(double x) const
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)
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)
double u_exact(double x, double z) const
bool dirichlet_node(const DMDALocalInfo &info, const fem::Element3::GlobalIndex &I)
void residual_surface(const fem::Q1Element3 &element, const fem::Q1Element3Face &face, Vector2d *residual)
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)
BlatterTestHalfar(std::shared_ptr< const Grid > grid, int Mz, int coarsening_factor)
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])
const int n_chi
Number of shape functions on a Q1 element.
static double K(double psi_x, double psi_y, double speed, double epsilon)