DOKK / manpages / debian 10 / librheolef-dev / characteristic.2rheolef.en
characteristic(2rheolef) rheolef-7.0 characteristic(2rheolef)

characteristic - the Lagrange-Galerkin method implemented


The class characteristic implements the Lagrange-Galerkin method:
It is the extension of the method of characteristic from the finite
difference to the finite element context.


Consider the bilinear form lh defined by


/
|
lh(x) = | uh(x+dh(x)) v(x) dx
|
/ Omega

where dh is a deformation vector field.
The characteristic is defined by X(x)=x+dh(x)
and the previous integral writes equivalently:


/
|
lh(x) = | uh(X(x)) v(x) dx
|
/ Omega


For instance, in Lagrange-Galerkin methods,
the deformation field dh(x)=-dt*uh(x)
where uh is the advection field and dt a time step.
The following code implements the computation of lh:


field dh = ...;
field uh = ...;
characteristic X (dh);
test v (Xh);
field lh = integrate (compose(uh, X)*v, qopt);

The Gauss-Lobatto quadrature formule is recommended for
Lagrange-Galerkin methods.
The order equal to the polynomial order of Xh
(order 1: trapeze, order 2: simpson, etc).
Recall that this choice of quadrature formulae guaranties inconditional
stability at any polynomial order.
Alternative quadrature formulae or order can be used by using the
additional quadrature option argument to the integrate function see integrate(4).

template<class T, class M = rheo_default_memory_model>
class characteristic_basic : public smart_pointer<characteristic_rep<T,M> > {
public:

typedef characteristic_rep<T,M> rep;
typedef smart_pointer<rep> base; // allocator:
characteristic_basic(const field_basic<T,M>& dh); // accesors:
const field_basic<T,M>& get_displacement() const;
const characteristic_on_quadrature<T,M>&
get_pre_computed (
const space_basic<T,M>& Xh,
const field_basic<T,M>& dh,
const quadrature_option& qopt) const; }; typedef characteristic_basic<Float> characteristic;

integrate(4)

Copyright (C) 2000-2018 Pierre Saramito <Pierre.Saramito@imag.fr> GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

rheolef-7.0 rheolef-7.0