`interpolate`

function or expression interpolation

# Description

The `interpolation` function implements the usual Lagrange interpolation of a function or a class-function on a finite element `space`.

# Synopsis

        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);

# Expressions

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));

# Reinterpolation

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.

# Implementation

This documentation has been generated from file main/lib/interpolate.h

The implementation of expressions bases on the expression template and SFINAE C++ idioms.