Reduced gravity

    We re-express gravity in two-phase flows as an interfacial force as \displaystyle -\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 \displaystyle \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"
    #include "curvature.h"

    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;
        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;