Rheolef
7.2
an efficient C++ finite element environment
|
function or expression interpolation
The interpolation
function implements the usual Lagrange interpolation of a function or a class-function on a finite element space
.
template <class Expression> field interpolate (const space& Xh, const Expression& expr);
Example The following code compute the Lagrange interpolation pi_h_u
the function u(x)
:
Float u(const point& x) { return exp(x[0]*x[1]); } ... geo omega("square"); space Xh (omega, "P1"); field pi_h_u = interpolate (Xh, u);
It is possible to interpolate an expression involving a combination of functions, class-functions and fields:
field vh = interpolate (Xh, sqrt(uh) + 2*max(0.,uh));
The reinterpolation of a field on another mesh or on another finite element space is also possible:
geo omega2 ("square2"); space X2h (omega2, "P1"); field uh2 = interpolate (X2h, pi_h_u);
Such a reinterpolation is very frequent in mesh adaptive loops.
This documentation has been generated from file main/lib/interpolate.h
The implementation of expressions bases on the expression template and SFINAE C++ idioms.