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 Attributes | List of all members
pism::inverse::IPLogRatioFunctional Class Reference

Implements a functional for log-ratio errors. More...

#include <IPLogRatioFunctional.hh>

+ Inheritance diagram for pism::inverse::IPLogRatioFunctional:

Public Member Functions

 IPLogRatioFunctional (std::shared_ptr< const Grid > grid, array::Vector &u_observed, double eps, array::Scalar *weights=NULL)
 
virtual ~IPLogRatioFunctional ()
 
virtual void normalize (double scale)
 Determine the normalization constant for the functional. More...
 
virtual void valueAt (array::Vector &x, double *OUTPUT)
 Computes the value of the functional at the vector x. More...
 
virtual void gradientAt (array::Vector &x, array::Vector &gradient)
 Computes the gradient of the functional at the vector x. More...
 
- Public Member Functions inherited from pism::inverse::IPFunctional< array::Vector >
 IPFunctional (std::shared_ptr< const Grid > grid)
 
virtual ~IPFunctional ()
 

Protected Attributes

array::Vectorm_u_observed
 
array::Scalarm_weights
 
double m_normalization
 
double m_eps
 
- Protected Attributes inherited from pism::inverse::IPFunctional< array::Vector >
std::shared_ptr< const Gridm_grid
 
fem::ElementIterator m_element_index
 
fem::Q1Element2 m_element
 

Detailed Description

Implements a functional for log-ratio errors.

This type of functional appears in [Morlighemetal2010]. Specifically, given a reference function \(u_{obs}=[U_i]\), and an array::Vector \(x=[X_i]\),

\[ J(x) = c_N \sum_i W_i\left[\log\left(\frac{|X_i+U_i|^2+\epsilon^2}{|U_{i}|^2+\epsilon^2}\right)\right]^2 \]

where \(\epsilon\) is a regularizing constant and \([W_i]\) is a vector of weights.
The term \(X_i+U_i\) appears because the argument is expected to already be in the form \(V_i-U_i\), where \(v=[V_i]\) is some approximation of \([U_i]\) and hence the integrand has the form \(\log(|V_i|/|U_i|)\).

The normalization constant \(c_N\) is determined implicitly by normalize().

Definition at line 41 of file IPLogRatioFunctional.hh.


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