Class DropletSizeDistribution

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

public class DropletSizeDistribution extends Object implements Serializable
Represents a droplet (or bubble) size distribution for separator internals calculations.

Supports Rosin-Rammler and log-normal distributions, which are the two most widely used representations in the open literature for liquid droplet and bubble size distributions in gas-liquid and liquid-liquid separation.

Rosin-Rammler (Weibull) distribution:

$$ F(d) = 1 - \exp\left(-\left(\frac{d}{d_{63.2}}\right)^q\right) $$

where $d_{63.2}$ is the characteristic diameter (63.2% undersize) and $q$ is the spread parameter. Typical values: $q = 2.0$–$4.0$ for pipe-flow atomization, $q = 2.5$–$3.5$ for nozzle-generated sprays. See Lefebvre and McDonell (2017), Atomization and Sprays.

Log-normal distribution:

$$ F(d) = \Phi\left(\frac{\ln(d) - \mu}{\sigma}\right) $$

where $\mu = \ln(d_{50})$ and $\sigma$ is the geometric standard deviation. Typical values: $\sigma = 0.5$–$1.5$. See Azzopardi (2011), Gas-Liquid Two-Phase Flow, Springer.

Version:
1.0
Author:
NeqSim team
See Also:
  • Field Details

    • serialVersionUID

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

      Distribution type.
    • characteristicDiameter

      private double characteristicDiameter
      Characteristic diameter [m]. For Rosin-Rammler: d_63.2 (63.2% cumulative undersize), for log-normal: d_50 (mass-median diameter).
    • spreadParameter

      private double spreadParameter
      Spread parameter. For Rosin-Rammler: q (shape parameter, typically 2.0-4.0). For log-normal: sigma (geometric standard deviation, typically 0.5-1.5).
    • numberOfClasses

      private int numberOfClasses
      Number of discrete size classes for numerical integration.
  • Constructor Details

    • DropletSizeDistribution

      public DropletSizeDistribution()
  • Method Details

    • rosinRammler

      public static DropletSizeDistribution rosinRammler(double characteristicDiameter, double spreadParameter)
      Creates a Rosin-Rammler droplet size distribution.
      Parameters:
      characteristicDiameter - d_63.2 characteristic diameter [m]
      spreadParameter - q shape parameter (typically 2.0-4.0)
      Returns:
      a new DropletSizeDistribution
    • logNormal

      public static DropletSizeDistribution logNormal(double medianDiameter, double geometricStdDev)
      Creates a log-normal droplet size distribution.
      Parameters:
      medianDiameter - d_50 mass-median diameter [m]
      geometricStdDev - sigma geometric standard deviation (typically 0.5-1.5)
      Returns:
      a new DropletSizeDistribution
    • fromHinzeCorrelation

      public static DropletSizeDistribution fromHinzeCorrelation(double continuousDensity, double velocity, double pipeDiameter, double surfaceTension, double spreadParameter)
      Creates a Rosin-Rammler distribution estimated from maximum stable droplet diameter using the Hinze (1955) correlation for turbulent breakup.

      The maximum stable droplet diameter in a turbulent pipe flow is estimated as:

      $$ d_{max} = C \cdot We^{-3/5} \cdot D $$

      where $We = \rho_c V^2 D / \sigma$ is the Weber number, $D$ is the pipe diameter, and $C \approx 0.725$ (Hinze, 1955). The d_63.2 is estimated as $d_{max} / 3$ based on typical pipe-flow data (Azzopardi, 2011).

      Parameters:
      continuousDensity - density of continuous phase [kg/m3]
      velocity - mixture velocity [m/s]
      pipeDiameter - pipe internal diameter [m]
      surfaceTension - interfacial tension [N/m]
      spreadParameter - q (Rosin-Rammler spread, default 2.6 if <= 0)
      Returns:
      a new DropletSizeDistribution
    • cumulativeFraction

      public double cumulativeFraction(double d)
      Returns the cumulative volume fraction smaller than diameter d: F(d).
      Parameters:
      d - droplet diameter [m]
      Returns:
      cumulative volume fraction [0-1]
    • volumePDF

      public double volumePDF(double d)
      Returns the volume-weighted probability density function at diameter d.
      Parameters:
      d - droplet diameter [m]
      Returns:
      probability density [1/m]
    • getDiscreteClasses

      public double[][] getDiscreteClasses()
      Returns discrete size classes for numerical integration of grade efficiency.

      Each element is a double[3] containing {lowerBound, midpoint, volumeFraction}. The size range spans from d_min to d_max chosen to cover 0.1% to 99.9% of the distribution.

      Returns:
      array of size class descriptors
    • inverseCDF

      public double inverseCDF(double f)
      Computes the inverse CDF (quantile function) for a given cumulative fraction.
      Parameters:
      f - cumulative fraction [0-1]
      Returns:
      droplet diameter [m]
    • getD50

      public double getD50()
      Gets the volume-median diameter (d_50).
      Returns:
      d_50 [m]
    • getSauterMeanDiameter

      public double getSauterMeanDiameter()
      Gets the Sauter mean diameter (d_32), computed by numerical integration.
      Returns:
      d_32 [m]
    • erf

      static double erf(double x)
      Error function approximation (Abramowitz and Stegun, formula 7.1.26). Maximum error: 1.5e-7.
      Parameters:
      x - input value
      Returns:
      erf(x)
    • inverseErf

      static double inverseErf(double x)
      Inverse error function approximation. Uses rational approximation from Winitzki (2008).
      Parameters:
      x - input value in range (-1, 1)
      Returns:
      inverseErf(x)
    • getType

      Gets the distribution type.
      Returns:
      distribution type
    • getCharacteristicDiameter

      public double getCharacteristicDiameter()
      Gets the characteristic diameter [m].
      Returns:
      characteristicDiameter [m]
    • setCharacteristicDiameter

      public void setCharacteristicDiameter(double characteristicDiameter)
      Sets the characteristic diameter [m].
      Parameters:
      characteristicDiameter - [m]
    • getSpreadParameter

      public double getSpreadParameter()
      Gets the spread parameter.
      Returns:
      spreadParameter
    • setSpreadParameter

      public void setSpreadParameter(double spreadParameter)
      Sets the spread parameter.
      Parameters:
      spreadParameter - the spread parameter
    • getNumberOfClasses

      public int getNumberOfClasses()
      Gets the number of discrete size classes.
      Returns:
      numberOfClasses
    • setNumberOfClasses

      public void setNumberOfClasses(int numberOfClasses)
      Sets the number of discrete size classes for numerical integration.
      Parameters:
      numberOfClasses - number of classes (default 50)