Class DropletSizeDistribution
- All Implemented Interfaces:
Serializable
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic enumEnumeration of supported distribution types. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleCharacteristic diameter [m].private intNumber of discrete size classes for numerical integration.private static final longSerialization version UID.private doubleSpread parameter.Distribution type. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondoublecumulativeFraction(double d) Returns the cumulative volume fraction smaller than diameter d: F(d).(package private) static doubleerf(double x) Error function approximation (Abramowitz and Stegun, formula 7.1.26).static DropletSizeDistributionfromHinzeCorrelation(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.doubleGets the characteristic diameter [m].doublegetD50()Gets the volume-median diameter (d_50).double[][]Returns discrete size classes for numerical integration of grade efficiency.intGets the number of discrete size classes.doubleGets the Sauter mean diameter (d_32), computed by numerical integration.doubleGets the spread parameter.getType()Gets the distribution type.doubleinverseCDF(double f) Computes the inverse CDF (quantile function) for a given cumulative fraction.(package private) static doubleinverseErf(double x) Inverse error function approximation.static DropletSizeDistributionlogNormal(double medianDiameter, double geometricStdDev) Creates a log-normal droplet size distribution.static DropletSizeDistributionrosinRammler(double characteristicDiameter, double spreadParameter) Creates a Rosin-Rammler droplet size distribution.voidsetCharacteristicDiameter(double characteristicDiameter) Sets the characteristic diameter [m].voidsetNumberOfClasses(int numberOfClasses) Sets the number of discrete size classes for numerical integration.voidsetSpreadParameter(double spreadParameter) Sets the spread parameter.doublevolumePDF(double d) Returns the volume-weighted probability density function at diameter d.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
type
Distribution type. -
characteristicDiameter
private double characteristicDiameterCharacteristic diameter [m]. For Rosin-Rammler: d_63.2 (63.2% cumulative undersize), for log-normal: d_50 (mass-median diameter). -
spreadParameter
private double spreadParameterSpread 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 numberOfClassesNumber 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
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)
-