Feel++  0.92.0
Feel::EIM< T, Dmu, F > Class Template Reference

Empirical interpolation of a function to obtain an affine decomposition. More...

#include <eim.hpp>

Inheritance diagram for Feel::EIM< T, Dmu, F >:
Feel::EIMBase< T >

List of all members.

Public Types

Typedefs
typedef EIMBase< T > super
typedef super::value_type value_type
typedef super::coord_type coord_type
typedef Dmu::singleton_type pset_type
typedef
pset_type::parameter_set_type 
parameter_set_type
typedef super::matrix_type matrix_type
typedef F< value_type > f_type

Public Member Functions

Methods
void beta (vector_type &__beta, size_t M) const
 Online stage of the coefficient-function interpolation.
void beta (vector_type &__beta, value_type &__err, size_t M) const
template<class Archive >
void serialize (Archive &__ar, const unsigned int __version)

Constructors, destructor

 EIM (space_type const &Xh, double __tol=1e-8)
 EIM (EIM const &__bbf)
 ~EIM ()
static EIMBase< T > * create ()

Detailed Description

template<typename T, typename Dmu, template< typename > class F>
class Feel::EIM< T, Dmu, F >

Empirical interpolation of a function to obtain an affine decomposition.

We are given a function $g (\: \cdot\: ; \mu) \in L^{\infty} (\Omega)$ of sufficient regularity.

Offline Stage

To begin, we choose $\mu^g_1$, and define $S^g_1 = \{ \mu^g_1 \}$, $\xi_1 \equiv g (x ; \mu^g_1)$, and $W^g_1 = {\rm span} \: \{\xi_1 \}$; we assume that $\xi_1 \neq 0$. Then, for $M \geq 2$, we set $\mu^g_M = \arg \max_{\mu \in \Xi^{^g}}\inf _{z \in W^g_{M-1}} \|g (\: \cdot \: ; \mu) - z \|_{L^{\infty} (\Omega)}$, where $\Xi^g$ is a suitably fine parameter sample over ${\mathcal{D}}$. We then set $S^g_M = S^g_{M-1} \cup \mu^g_M$, $\xi_M = g (x;\mu^g_M)$, and $W^g_M = {\rm span} \: \{ \xi_m, \: 1 \leq m \leq M \}$. Note that, thanks to our truth approximation, $\mu^g_M$ is the solution of a standard linear program.

We suppose that $M_{\max}$ is chosen such that the dimension of $\{g (\: \cdot \: ; \mu) \: | \: \mu \in \mathcal{D}\} $ exceeds $M_{\max}$.

We now construct nested sets of interpolation points $T_M = \{ t_1, \ldots, t_M \}$, $1 \leq M \leq M_{\max}$. We first set $t_1 = \arg \: {\rm ess} \: \sup_{x \in \Omega} | \xi_1 (x)|$, $q_1 = \xi_1 (x) / \xi_1 (t_1) $, $B^1_{11} = 1$. Then for $M = 2, \ldots, M_{\max}$, we solve the linear system $ \sum^{M-1}_{j = 1} \: \sigma^{M-1}_j \: q_j(t_i) = \xi_M (t_i)$, $ 1 \leq i \leq M-1$, and set $r_M (x) = \xi_M (x) - \sum^{M-1}_{j = 1}\: \sigma^{M-1}_j \: q_j (x)$, $t_M = \arg \: {\rm ess} \: \sup_{x \in \Omega} |r_M (x)|$, $q_M (x) = r_M (x) /r_M (t_M) $, and $B^M_{i \: j} = q_j (t_i)$, $1 \leq i,j \leq M$.

Online Stage

Our coefficient function approximation is the interpolant of $g$ over $T_M$ : $g_M (x ; \mu) = \sum^M_{m = 1} \beta_m (\mu) \: q_m (x)$, where $\sum^M_{j = 1} \: B^M_{i \: j} \: \beta_j (\mu) = g (t_i ; \mu)$, $ 1 \leq i \leq M$. We define $\varepsilon_M (\mu) \equiv \| g (\: \cdot \: ; \mu) - g_M (\: \cdot \: ; \mu)\|_{L^{\infty} (\Omega)}$.

Todo:

make it truly mesh independent.

find a generic solution for coordinates type coord_type

Author:
Christophe Prud'homme <christophe.prudhomme@ujf-grenoble.fr>
See also:

Member Function Documentation

template<typename T , typename Dmu , template< typename > class F>
void Feel::EIM< T, Dmu, F >::beta ( vector_type &  __beta,
size_t  M 
) const [virtual]

Online stage of the coefficient-function interpolation.

Our coefficient function approximation is the interpolant of $g$ over $T_M$ : $g_M (x ; \mu) = \sum^M_{m = 1} \beta_m (\mu) \: q_m (x)$, where $\sum^M_{j = 1} \: B^M_{i \: j} \: \beta_j (\mu) = g (t_i ; \mu)$, $ 1 \leq i \leq M$. We define $\varepsilon_M (\mu) \equiv \| g (\: \cdot \: ; \mu) - g_M (\: \cdot \: ; \mu)\|_{L^{\infty} (\Omega)}$.

Note that $ \Omega $ is given and $D^$ is handled by the parameterset_type data structure.

Reimplemented from Feel::EIMBase< T >.