51 for (
int _s = 0;
_s < 1;
_s++) {
77 for (
int _c = 0;
_c < 1;
_c++) {
98 double a =
c[]/(
f[]*
c.alpha + (1. -
f[]));
132 for (
int _i = 0;
_i <
l;
_i++) {
135 n +=
D.
x[1]*
a[1] +
D.
x[]*
a[-1] +
155 res[] =
b[] +
cm[]/
dt*
a[];
164 res[] =
b[] +
cm[]/
dt*
a[];
182 for (
int _c = 0;
_c < 1;
_c++) {
204 double ff = (
f[] +
f[-1])/2.;
vector g[]
We store the combined pressure gradient and acceleration field in g*.
vector q[]
The primitive variables are the momentum , pressure , density , (face) specific volume ,...
#define face_gradient_x(a, i)
void(* scalar_clone)(scalar, scalar)
static number sq(number x)
scalar * list_append(scalar *list, scalar s)
scalar f[]
The primary fields are:
static void refine_embed_linear(Point point, scalar s)
vector D[]
The linear system can be inverted with the multigrid Poisson solver.
void event_vof(void)
Event: vof (i++)
void event_tracer_diffusion(void)
Event: tracer_diffusion (i++)
static void h_relax(scalar *al, scalar *bl, int l, void *data)
void event_defaults(void)
Event: defaults (i = 0)
static scalar * phi_tracers
static double h_residual(scalar *al, scalar *bl, scalar *resl, void *data)
static void restriction_volume_average(Point point, scalar s)
void(* restriction)(Point, scalar)
static void refine_linear(Point point, scalar s)
void set_prolongation(scalar s, void(*prolongation)(Point, scalar))
void set_restriction(scalar s, void(*restriction)(Point, scalar))
trace mgstats mg_solve(scalar *a, scalar *b, double(*residual)(scalar *a, scalar *b, scalar *res, void *data), void(*relax)(scalar *da, scalar *res, int depth, void *data), void *data=NULL, int nrelax=4, scalar *res=NULL, int minlevel=0, double tolerance=TOLERANCE)
The user needs to provide a function which computes the residual field (and returns its maximum) as w...