Class DropletSettlingCalculator

java.lang.Object
neqsim.process.equipment.separator.entrainment.DropletSettlingCalculator
All Implemented Interfaces:
Serializable

public class DropletSettlingCalculator extends Object implements Serializable
Calculates terminal settling velocity for droplets/bubbles using the Schiller-Naumann drag correlation, which covers the full range from Stokes (creeping) flow through the intermediate regime to the Newton (turbulent) regime.

The Schiller-Naumann correlation provides a smooth transition across flow regimes (Schiller and Naumann, 1935):

$$ C_D = \frac{24}{Re}\left(1 + 0.15 Re^{0.687}\right) \quad \text{for } Re < 1000 $$ $$ C_D = 0.44 \quad \text{for } Re \geq 1000 $$

The settling velocity is found by iterating the force balance:

$$ v_t = \sqrt{\frac{4 g d_p |\Delta\rho|}{3 C_D \rho_c}} $$

For the Stokes regime ($Re \ll 1$), this reduces to:

$$ v_t = \frac{d_p^2 |\Delta\rho| g}{18 \mu_c} $$

References: Schiller, L. and Naumann, Z. (1935), "A drag coefficient correlation", Zeitschrift des Vereines Deutscher Ingenieure, 77, 318-320. Clift, R., Grace, J.R., and Weber, M.E. (1978), Bubbles, Drops and Particles, Academic Press, New York.

Version:
1.0
Author:
NeqSim team
See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    Holds the result of an API 12J compliance check for a separator design.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private static final double
    Gravitational acceleration [m/s2].
    private static final int
    Maximum iterations for velocity convergence.
    private static final long
    Serialization version UID.
    private static final double
    Convergence tolerance for velocity iteration.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static double
    calcCriticalDiameter(double availableHeight, double residenceTime, double continuousDensity, double dispersedDensity, double continuousViscosity)
    Calculates the critical (cut) diameter for gravity separation in a given geometry.
    static double
    Calculates the drag coefficient using the Schiller-Naumann correlation.
    static double
    calcReynolds(double diameter, double velocity, double continuousDensity, double continuousViscosity)
    Calculates the particle Reynolds number.
    static double
    calcTerminalVelocity(double dropletDiameter, double continuousDensity, double dispersedDensity, double continuousViscosity)
    Calculates the terminal settling velocity of a single droplet or bubble using the Schiller-Naumann drag correlation.
    static double
    calcTurbulenceCorrectedCutDiameter(double gravityCutDiameter, double gasVelocity, double settlingHeight, double kFactor, double designKFactor, double gasDensity, double liquidDensity, double gasViscosity)
    Calculates the turbulence-corrected gravity cut diameter for a separator section.
    checkApi12JCompliance(double gravityCutDiameter_m, double kFactor, boolean mistEliminatorPresent, double liquidResidenceTime_s, String orientation, boolean isThreePhase)
    Checks API 12J (2014) compliance for a separator gravity section.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Serialization version UID.
      See Also:
    • G

      private static final double G
      Gravitational acceleration [m/s2].
      See Also:
    • MAX_ITERATIONS

      private static final int MAX_ITERATIONS
      Maximum iterations for velocity convergence.
      See Also:
    • TOLERANCE

      private static final double TOLERANCE
      Convergence tolerance for velocity iteration.
      See Also:
  • Constructor Details

    • DropletSettlingCalculator

      public DropletSettlingCalculator()
  • Method Details

    • calcTerminalVelocity

      public static double calcTerminalVelocity(double dropletDiameter, double continuousDensity, double dispersedDensity, double continuousViscosity)
      Calculates the terminal settling velocity of a single droplet or bubble using the Schiller-Naumann drag correlation.

      Positive velocity means downward (settling), applicable when dispersed phase is heavier. Negative velocity means upward (buoyant rise), applicable for bubbles in liquid.

      Parameters:
      dropletDiameter - diameter of the droplet or bubble [m]
      continuousDensity - density of the continuous phase [kg/m3]
      dispersedDensity - density of the dispersed phase [kg/m3]
      continuousViscosity - dynamic viscosity of the continuous phase [Pa.s]
      Returns:
      terminal settling velocity [m/s], positive = downward, negative = upward
    • calcDragCoefficient

      public static double calcDragCoefficient(double re)
      Calculates the drag coefficient using the Schiller-Naumann correlation.
      Parameters:
      re - particle Reynolds number
      Returns:
      drag coefficient C_D
    • calcReynolds

      public static double calcReynolds(double diameter, double velocity, double continuousDensity, double continuousViscosity)
      Calculates the particle Reynolds number.
      Parameters:
      diameter - droplet diameter [m]
      velocity - settling velocity [m/s]
      continuousDensity - density of continuous phase [kg/m3]
      continuousViscosity - dynamic viscosity of continuous phase [Pa.s]
      Returns:
      Reynolds number
    • calcTurbulenceCorrectedCutDiameter

      public static double calcTurbulenceCorrectedCutDiameter(double gravityCutDiameter, double gasVelocity, double settlingHeight, double kFactor, double designKFactor, double gasDensity, double liquidDensity, double gasViscosity)
      Calculates the turbulence-corrected gravity cut diameter for a separator section.

      In a real separator, turbulence generated at the inlet redistributes small droplets, increasing the effective cut diameter beyond the quiescent gravity value. This correction applies the Csanady (1963) passive-particle turbulent diffusion model, simplified to an engineering formula (Koenders et al., 2015):

      Turbulent diffusivity: $D_t = u_{rms} \cdot L_t$, where $L_t$ is the integral length scale (vessel radius / 5).

      Effective cut diameter correction: $d_{cut,turb} = d_{cut,grav} \cdot \left(1 + \frac{D_t}{v_t \cdot H}\right)^{0.25}$

      Turbulence intensity increases with gas load: at 50% of design K-factor the correction is negligible; above 80% it becomes significant and can shift the effective cut diameter by 20-60%.

      References: Csanady, G.T. (1963). Turbulent diffusion of heavy particles in the atmosphere. J. Atmos. Sci., 20, 201-208. Koenders, M.A., Slot, J.J., Hoeijmakers, H.W.M. (2015). Numerical simulation of gas-liquid separator performance. SPE Production and Operations, 30(3), 215-225.

      Parameters:
      gravityCutDiameter - quiescent gravity cut diameter [m]
      gasVelocity - superficial gas velocity in the vessel [m/s]
      settlingHeight - effective droplet settling height [m]
      kFactor - operating Souders-Brown K-factor [m/s]
      designKFactor - maximum design K-factor [m/s]; use 0 if unknown
      gasDensity - gas phase density [kg/m3]
      liquidDensity - liquid dispersed phase density [kg/m3]
      gasViscosity - gas dynamic viscosity [Pa.s]
      Returns:
      turbulence-corrected cut diameter [m], always >= gravityCutDiameter
    • checkApi12JCompliance

      public static DropletSettlingCalculator.ApiComplianceResult checkApi12JCompliance(double gravityCutDiameter_m, double kFactor, boolean mistEliminatorPresent, double liquidResidenceTime_s, String orientation, boolean isThreePhase)
      Checks API 12J (2014) compliance for a separator gravity section.

      API 12J criteria applied:

      • Gas section — K-factor: operating K must not exceed 0.107 m/s (vertical, no mist eliminator) or 0.120 m/s (horizontal, no mist eliminator). With a mist eliminator the limit depends on the device type — 0.12 to 0.30 m/s.
      • Gas section — droplet removal: gravity section alone must remove droplets ≥ 100 μm from gas (API 12J Table 2 for clean service).
      • Liquid section — residence time: minimum 3 minutes (180 s) for two-phase separators in clean service; 5 minutes (300 s) for three-phase.

      Reference: API Specification 12J, 8th Edition (2014). Specification for Oil and Gas Separators. American Petroleum Institute, Washington, DC.

      Parameters:
      gravityCutDiameter_m - gravity cut diameter at operating conditions [m]
      kFactor - operating Souders-Brown K-factor [m/s]
      mistEliminatorPresent - true when a mist eliminator is installed
      liquidResidenceTime_s - liquid residence time in the vessel [s]
      orientation - vessel orientation: "vertical" or "horizontal"
      isThreePhase - true for three-phase (gas/oil/water) separators
      Returns:
      compliance result object encapsulating pass/fail status and comments
    • calcCriticalDiameter

      public static double calcCriticalDiameter(double availableHeight, double residenceTime, double continuousDensity, double dispersedDensity, double continuousViscosity)
      Calculates the critical (cut) diameter for gravity separation in a given geometry.

      This is the smallest droplet that can settle across the available height within the available residence time. In the Stokes regime:

      $$ d_{cut} = \sqrt{\frac{18 \mu_c H}{|\Delta\rho| g t_{res}}} $$

      For higher Reynolds numbers, the critical diameter is found iteratively.

      Parameters:
      availableHeight - height available for settling [m]
      residenceTime - gas or liquid residence time in the section [s]
      continuousDensity - density of continuous phase [kg/m3]
      dispersedDensity - density of dispersed phase [kg/m3]
      continuousViscosity - dynamic viscosity of continuous phase [Pa.s]
      Returns:
      critical (cut) diameter [m]