19 for (
int _c = 0;
_c < 4;
_c++)
22 for (
int _c = 0;
_c < 4;
_c++)
29 for (
int _c = 0;
_c < 4;
_c++)
104 for (
int _c = 0;
_c < 4;
_c++)
110 for (
int _c = 0;
_c < 4;
_c++)
131 for (
int _s = 0;
_s < 1;
_s++) {
166 q1.x.gradient =
q2.x.gradient =
u.x.gradient;
vector uf[]
We allocate the (face) velocity field.
scalar * tracers
Here we set the gradient functions for each tracer (as defined in the user-provided tracers list).
double dtmax
The timestep is computed using the CFL condition on the face velocity field.
trace double timestep(void)
define neighbor(o, p, q)((Point)
scalar * list_concat(scalar *l1, scalar *l2)
scalar * list_add(scalar *list, scalar s)
static number clamp(number x, number a, number b)
scalar f[]
The primary fields are:
scalar * interfaces
The height functions are stored in the vector field associated with each VOF tracer.
static scalar * interfaces1
We overload the vof() event to transport consistently the volume fraction and the momentum of each ph...
static void momentum_refine(Point point, scalar u)
void event_vof(void)
Event: vof (i++)
void event_defaults(void)
We switch-off the default advection scheme of the centered solver.
void event_tracer_advection(void)
We set the list of interfaces back to its default value.
void event_stability(void) dtmax
We need to overload the stability event so that the CFL is taken into account (because we set stokes ...
static void momentum_restriction(Point point, scalar u)
#define rho(f)
The density and viscosity are defined using arithmetic averages by default.
static void refine_bilinear(Point point, scalar s)
void vof_advection(scalar *interfaces, int i)