| Gerris Flow Solver Reference Manual |
|---|
#include <gfs.h>void gfs_diffusion_rhs (GfsDomain *domain, GfsVariable *v, GfsVariable *rhs, GfsVariable *dia,gdouble beta);void gfs_diffusion_residual (GfsDomain *domain, GfsVariable *u, GfsVariable *rhs, GfsVariable *dia, GfsVariable *res);void gfs_diffusion_coefficients (GfsDomain *domain,GfsSourceDiffusion *d,gdouble dt, GfsVariable *dia, GfsFunction *alpha,gdouble beta);void gfs_diffusion_cycle (GfsDomain *domain,guint levelmin,guint depth,guint nrelax, GfsVariable *u, GfsVariable *rhs, GfsVariable *dia, GfsVariable *res);
void gfs_diffusion_rhs (GfsDomain *domain, GfsVariable *v, GfsVariable *rhs, GfsVariable *dia,gdouble beta);
Adds to the rhs variable of cell the right-hand side of the
diffusion equation for variable v.
The diffusion coefficients must have been already set using
gfs_diffusion_coefficients().
domain : | a GfsDomain. |
v : | a GfsVariable. |
rhs : | a GfsVariable. |
dia : | the diagonal weight. |
beta : | the implicitness parameter (0.5 Crank-Nicholson, 1. backward Euler). |
void gfs_diffusion_residual (GfsDomain *domain, GfsVariable *u, GfsVariable *rhs, GfsVariable *dia, GfsVariable *res);
Sets the res variable of each leaf cell of domain to the residual
of the diffusion equation for v.
The diffusion coefficients must have been set using
gfs_diffusion_coefficients() and the right-hand side using
gfs_diffusion_rhs().
domain : | a GfsDomain. |
u : | the variable to use as left-hand side. |
rhs : | the right-hand side. |
dia : | the diagonal weight. |
res : | the residual. |
void gfs_diffusion_coefficients (GfsDomain *domain,GfsSourceDiffusion *d,gdouble dt, GfsVariable *dia, GfsFunction *alpha,gdouble beta);
Initializes the face coefficients for the diffusion equation.
domain : | a GfsDomain. |
d : | a |
dt : | the time-step. |
dia : | where to store the diagonal weight. |
alpha : | the inverse of density or NULL. |
beta : | the implicitness parameter (0.5 Crank-Nicholson, 1. backward Euler). |
void gfs_diffusion_cycle (GfsDomain *domain,guint levelmin,guint depth,guint nrelax, GfsVariable *u, GfsVariable *rhs, GfsVariable *dia, GfsVariable *res);
Apply one multigrid iteration to the diffusion equation for u.
The initial value of res on the leaves of root must be set to
the residual of the diffusion equation using gfs_diffusion_residual().
The diffusion coefficients must be set using gfs_diffusion_coefficients().
The values of u on the leaf cells are updated as well as the values
of res (i.e. the cell tree is ready for another iteration).
domain : | the domain on which to solve the diffusion equation. |
levelmin : | the top level of the multigrid hierarchy. |
depth : | the total depth of the domain. |
nrelax : | the number of relaxations to apply at each level. |
u : | the variable to use as left-hand side. |
rhs : | the right-hand side. |
dia : | the diagonal weight. |
res : | the residual. |
| <<< Poisson solver | Simulations, initialisations, events >>> |