20 #include "pism/stressbalance/blatter/verification/BlatterTestXY.hh"
22 #include "pism/rheology/IsothermalGlen.hh"
24 #include "pism/stressbalance/blatter/verification/manufactured_solutions.hh"
27 namespace stressbalance {
30 :
Blatter(grid, Mz, coarsening_factor) {
44 const double *ice_bottom,
45 const double *sea_level) {
56 return (
I.i == 0 or
I.i == info.mx - 1 or
57 I.j == 0 or
I.j == info.my - 1);
67 const double *surface,
82 for (
int n = 0;
n < element.
n_chi(); ++
n) {
83 x_nodal[
n] = element.
x(
n);
84 y_nodal[
n] = element.
y(
n);
92 for (
int q = 0; q < element.
n_pts(); ++q) {
96 for (
int t = 0; t < element.
n_chi(); ++t) {
97 const auto &psi = element.
chi(q, t);
const Config::ConstPtr m_config
configuration database used by this component
This class represents a 2D vector field (such as ice velocity) at a certain grid point.
void evaluate(const T *x, T *vals, T *dx, T *dy, T *dz) const
Given nodal values, compute the values and partial derivatives at the quadrature points.
const Germ & chi(unsigned int q, unsigned int k) const
int n_pts() const
Number of quadrature points.
double weight(unsigned int q) const
Weight of the quadrature point q
Isothermal Glen ice allowing extra customization.
double m_B
constant ice hardness
void residual_source_term(const fem::Q1Element3 &element, const double *surface, const double *bed, Vector2d *residual)
bool marine_boundary(int face, const int *node_type, const double *ice_bottom, const double *sea_level)
Vector2d u_bc(double x, double y, double z) const
BlatterTestXY(std::shared_ptr< const Grid > grid, int Mz, int coarsening_factor)
bool dirichlet_node(const DMDALocalInfo &info, const fem::Element3::GlobalIndex &I)
double m_work[m_n_work][m_Nq]
std::shared_ptr< rheology::FlowLaw > m_flow_law
EnthalpyConverter::Ptr m_EC
Vector2d blatter_xy_source(double x, double y, double B)
Vector2d blatter_xy_exact(double x, double y)