src/reduced.h

Reduced gravity

We re-express gravity in two-phase flows as an interfacial force as p+ρg=pʹ[ρ]gxnδs with pʹ=pρgx the dynamic pressure and ρgx the hydrostatic pressure. The corresponding potential is ϕ=[ρ]G(xZ) with G the gravity vector and Z an optional reference level.

coord G = {0.,0.,0.}, Z = {0.,0.,0.};

We need the interfacial force module as well as some functions to compute the position of the interface.

#include "iforce.h"
#include "curvature.h"

We overload the acceleration() event to add the contribution of gravity to the interfacial potential ϕ.

If ϕ is already allocated, we add the contribution of gravity, otherwise we allocate a new field and set it to the contribution of gravity.

event acceleration (i++)
{
  scalar φ = f.φ;
  coord G1;
  foreach_dimension()
    G1.x = (rho2 - rho1)*G.x;
  
  if (φ.i)
    position (f, φ, G1, Z, add = true);
  else {
    φ = new scalar;
    position (f, φ, G1, Z, add = false);
    f.φ = φ;
  }
}

Usage

Tests