PISM, A Parallel Ice Sheet Model
stable v2.1-1-g6902d5502 committed by Ed Bueler on 2023-12-20 08:38:27 -0800
|
Implements a functional corresponding to (the square of) an \(H^1\) norm of a scalar valued function. More...
#include <IP_H1NormFunctional.hh>
Public Member Functions | |
IP_H1NormFunctional2S (std::shared_ptr< const Grid > grid, double cL2, double cH1, array::Scalar *dirichletLocations=NULL) | |
virtual | ~IP_H1NormFunctional2S () |
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 |
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 | |
IP_H1NormFunctional2S (IP_H1NormFunctional2S const &) | |
IP_H1NormFunctional2S & | operator= (IP_H1NormFunctional2S const &) |
Implements a functional corresponding to (the square of) an \(H^1\) norm of a scalar valued function.
The functional is, in continuous terms
\[ J(f) = \int_{\Omega} c_{H^1} \left|\nabla f\right|^2 + c_{L^2}f^2 \; dA \]
where \(\Omega\) is the square domain. Numerically it is implemented using Q1 finite elements. 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 38 of file IP_H1NormFunctional.hh.