reduced.h

📄 View in API Reference (Doxygen) · View on basilisk.fr

Requires: iforce.h · curvature.h

Test cases (6): axi_rising_bubble, gravity, large-ns, rising, rt, stokes-ns

Examples (2): gaussian-ns, tangaroa

Reduced gravity

We re-express gravity in two-phase flows as an interfacial force as

$$ -\nabla p + \rho\mathbf{g} = -\nabla p' - [\rho]\mathbf{g}\cdot\mathbf{x}\mathbf{n}\delta_s $$

with $p'= p - \rho\mathbf{g}\cdot\mathbf{x}$ the dynamic pressure and $\rho\mathbf{g}\cdot\mathbf{x}$ the hydrostatic pressure. The corresponding potential is

$$ \phi = [\rho]\mathbf{G}\cdot(\mathbf{x} - \mathbf{Z}) $$

with $\mathbf{G}$ the gravity vector and $\mathbf{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" [api]
#include "curvature.h" [api]

We overload the acceleration() event to add the contribution of gravity to the interfacial potential $\phi$.

If $\phi$ 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 phi = f.phi;
  coord G1;
  foreach_dimension()
    G1.x = (rho2 - rho1)*G.x;
  
  if (phi.i)
    position (f, phi, G1, Z, add = true);
  else {
    phi = new scalar;
    position (f, phi, G1, Z, add = false);
    f.phi = phi;
  }
}