# A pure convection method¶

A method to compute a pure convection is defined in the file
`getfem/getfem_convect.h`

. The call of the function is:

```
getfem::convect(mf, U, mf_v, V, dt, nt, option = CONVECT_EXTRAPOLATION);
```

where `mf`

is a variable of type `getfem::mesh_fem`

, `U`

is a vector which represent the
field to be convected, `mf_v`

is a `getfem::mesh_fem`

for the velocity field, `V`

is the
dof vector for the velocity field, `dt`

is the pseudo time of convection and
`nt`

the number of iterations for the computation of characteristics. `option`

is an option for the boundary condition where there is a re-entrant convection. The possibilities are getfem::CONVECT_EXTRAPOLATION (extrapolation of the field on the nearest element) or getfem::CONVECT_UNCHANGED (no change of the value on the boundary).

The method integrate the partial differential equation

on the time intervall \([0, dt]\).

The method used is of Galerkin-Characteristic kind. It is a very simple version which is inconditionnally stable but rather dissipative. See [ZT1989] and also the Freefem++ documentation on convect command.

The defined method works only if `mf`

is a pure Lagrange finite element method
for the moment. The principle is to convect backward the finite element nodes by solving the ordinary differential equation:

with an initial condition corresponding to each node. This convection is made with `nt`

steps. Then the solution is interploated on
the convected nodes.

In order to make the extrapolation not too expensive, the product \(dt\times V\) should not be too large.

Note that this method can be used to solve convection dominant problems coupling it with a splitting scheme.