Provided by: librheolef-dev_5.93-2_i386 bug

NAME

       characteristic  -  discrete  mesh  advection  by  a  field: gh(x)=fh(x-
       dt*uh(x))

SYNOPSYS

        The class characteristic is a class implementing the
        Lagrange-Galerkin method. It is the extension of the method
        of characteristic in the finite element context.
        This is an expreimental implementation: please use the "geomap"
        one for practical usage.

EXAMPLE

        The following code compute the Riesz representant, denoted
        by "mgh" of gh(x)=fh(x-dt*uh(x)).

         geo omega_h;
         field uh = ...;
         field fh = ...;
         characteristic X (omega_h, -dt*uh);
         field mgh = riesz_representer(Vh, compose(fh, X));

        The Riesz representer is the "mgh" vector of values:

               mgh(i) = integrate fh(x-dt*uh(x)) phi_i(x) dx

        where phi_i is the i-th basis function in Vh
        and the integral is evaluated by using a quadrature formulae.
        By default the quadrature formule is Gauss-Lobatto with
        the order equal to the polynomial order of Vh.
        This quadrature formulae guaranties inconditional stability
        at any polynomial order (order 1: trapeze, order 2: simpson).
        Extension will accept in the future alternative quadrature
        formulae.

IMPLEMENTATION

       class characteristic {
       public:
               characteristic(const geo& bg_omega, const field& ah);
               const geo& get_background_geo() const;
               const field& get_advection() const;
       protected:
               geo   _bg_omega;
               field _ah;
       };
       class field_o_characteristic {
       public:
               field_o_characteristic(const field& fh, const characteristic& X);
               friend field_o_characteristic compose(
                       const field& fh, const characteristic& X);
               Float operator() (const point& x) const;
               point vector_evaluate (const point& x) const;
               tensor tensor_evaluate (const point& x) const;
               const field& get_field() const;
               const geo& get_background_geo() const;
               const field& get_advection() const;
       protected:
               field          _fh;
               characteristic _X;
               point advect (const point& x0) const;
       };