PISM, A Parallel Ice Sheet Model
stable v2.1.1 committed by Constantine Khrulev on 2024-12-04 13:36:58 -0900
|
Implements a functional corresponding to (the square of) an \(H^1\) norm of a scalar valued function over a region with only grounded ice. More...
#include <IPGroundedIceH1NormFunctional.hh>
Public Member Functions | |
IPGroundedIceH1NormFunctional2S (std::shared_ptr< const Grid > grid, double cL2, double cH1, array::CellType1 &ice_mask, array::Scalar *dirichletLocations=NULL) | |
virtual | ~IPGroundedIceH1NormFunctional2S () |
virtual void | valueAt (array::Scalar &x, double *OUTPUT) |
Computes the value of the functional at the vector x. More... | |
virtual void | dot (array::Scalar &a, array::Scalar &b, double *OUTPUT) |
Computes the inner product \(Q(a, b)\). More... | |
virtual void | gradientAt (array::Scalar &x, array::Scalar &gradient) |
Computes the gradient of the functional at the vector x. More... | |
virtual void | assemble_form (Mat J) |
Public Member Functions inherited from pism::inverse::IPInnerProductFunctional< array::Scalar > | |
IPInnerProductFunctional (std::shared_ptr< const Grid > grid) | |
virtual void | interior_product (array::Scalar &x, array::Scalar &y) |
Computes the interior product of a vector with the IPInnerProductFunctional's underlying bilinear form. More... | |
Public Member Functions inherited from pism::inverse::IPFunctional< array::Scalar > | |
IPFunctional (std::shared_ptr< const Grid > grid) | |
virtual | ~IPFunctional () |
Protected Attributes | |
double | m_cL2 |
double | m_cH1 |
array::Scalar * | m_dirichletIndices |
array::CellType1 & | m_ice_mask |
Protected Attributes inherited from pism::inverse::IPFunctional< array::Scalar > | |
std::shared_ptr< const Grid > | m_grid |
fem::ElementIterator | m_element_index |
fem::Q1Element2 | m_element |
Private Member Functions | |
IPGroundedIceH1NormFunctional2S (IPGroundedIceH1NormFunctional2S const &) | |
IPGroundedIceH1NormFunctional2S & | operator= (IPGroundedIceH1NormFunctional2S const &) |
Implements a functional corresponding to (the square of) an \(H^1\) norm of a scalar valued function over a region with only grounded ice.
The functional is, in continuous terms
\[ J(f) = \int_{\Omega_g} c_{H^1} \left|\nabla f\right|^2 + c_{L^2}f^2 \; dA \]
where \(\Omega_g\) is a subset of the square domain consisting of grounded ice. Numerically it is implemented using Q1 finite elements. Only those elements where all nodes have grounded ice are included in the integration, which alleviates edge effects due to steep derivatives in parameters that can occur at the transition between icy/non-icy regions. Integration can be 'restricted', in a sense, to a subset of the domain using a projection that forces \(f\) to equal zero at nodes specified by the constructor argument dirichletLocations.
Definition at line 48 of file IPGroundedIceH1NormFunctional.hh.