Class PackingHydraulicsCalculator
- All Implemented Interfaces:
Serializable
Calculates hydraulic performance and HETP for random and structured packing using industry-standard correlations:
- Flooding velocity — Eckert generalized correlation (GPDC chart)
- Pressure drop — Leva correlation for wet packing
- HETP — Onda correlation for mass transfer coefficients, then HETP from HTU
- Liquid distribution — minimum wetting rate check
- Loading/flooding transition
References: Eckert, J.S. Chem. Eng. Prog. (1970); Leva, M. Chem. Eng. Prog. (1954); Onda, K. J. Chem. Eng. Japan (1968); Kister, H.Z. "Distillation Design" (1992); Billet, R. "Packed Towers" (1995).
- Version:
- 1.0
- Author:
- NeqSim
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleActual liquid superficial velocity [m/s].private doubleActual gas superficial velocity [m/s].private doubleColumn internal diameter [m].private doubleCritical surface tension of packing material [N/m] (for Onda).private doubleDesign flooding fraction (typically 0.65-0.75 for packed columns).private booleanOverall design verdict.private doubleFlooding gas velocity [m/s].private doubleF-factor = u_v * sqrt(rho_v) [Pa^0.5].private doubleHETP — Height Equivalent to a Theoretical Plate [m].private doubleHeight of a gas-phase transfer unit [m].private doubleHeight of a liquid-phase transfer unit [m].private doubleHeight of an overall gas-phase transfer unit [m].private doubleGas-phase mass transfer coefficient [mol/(m2.s.Pa)] or [1/s].private doubleLiquid-phase mass transfer coefficient [m/s].private doubleLiquid density [kg/m3].private doubleLiquid diffusivity [m2/s].private doubleLiquid mass flow rate [kg/s].private doubleLiquid viscosity [Pa.s].private static final org.apache.logging.log4j.LoggerLogger object for class.private doubleMinimum liquid wetting rate [m3/(m2.s)].private doubleNominal packing size [mm] (for random packing).private doubleNumber of theoretical stages in packed height.private doublePacked bed height [m].private StringPacking category: "random" or "structured".private doublePacking factor Fp [m-1] (used in Eckert GPDC correlation).private StringPacking type name (e.g., "Pall-Ring-50", "Mellapak-250Y").private doublePercent of flooding [%].private doublePressure drop [Pa/m of packing].private static final longSerialization version UID.private doublePacking specific surface area [m2/m3].private doubleLiquid surface tension [N/m].private doubleTotal pressure drop [Pa].private doubleVapor density [kg/m3].private doubleVapor diffusivity [m2/s].private doubleVapor mass flow rate [kg/s].private doubleVapor viscosity [Pa.s].private doublePacking void fraction (porosity) [-].private doubleWetted specific area [m2/m3].private booleanWetting check: true if liquid rate exceeds minimum. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidAssess overall design.voidPerform all packing hydraulic calculations.private voidCalculate actual velocity and percent flooding.private voidCalculate flooding velocity using the Eckert Generalized Pressure Drop Correlation (GPDC).private voidCalculate HETP from mass transfer coefficients.private voidCalculate mass transfer coefficients using the Onda correlation.private voidCalculate pressure drop using the Leva correlation for irrigated packing.private voidCheck minimum liquid wetting rate.private doubleEstimate HETP from empirical rules of thumb when mass transfer calculation is not feasible.doubleGet actual gas superficial velocity [m/s].doubleGet column diameter [m].private doubleGet effective packing diameter for mass-transfer correlations.doubleGet flooding velocity [m/s].doubleGet F-factor [Pa^0.5].doublegetHETP()Get HETP [m].doublegetHtuG()Get HTU_G [m].doublegetHtuL()Get HTU_L [m].doublegetHtuOG()Get HTU_OG [m].doublegetKGa()Get gas-phase mass transfer coefficient [1/s].doublegetKLa()Get liquid-phase mass transfer coefficient [1/s].doubleGet number of theoretical stages in the packed bed.doubleGet packed bed height [m].Get packing category ("random" or "structured").doubleGet packing factor [m-1].Get packing name.doubleGet percent of flooding.doubleGet pressure drop per meter of packing [Pa/m].doubleGet specific surface area [m2/m3].doubleGet total pressure drop [Pa].doubleGet void fraction (porosity).doubleGet wetted specific area [m2/m3].booleanCheck if overall design is feasible.booleanCheck if wetting is adequate.private doubleroundToStandardDiameter(double diameter) Round diameter to nearest standard vessel size.voidsetColumnDiameter(double diameter) Set column diameter [m].voidsetCriticalSurfaceTension(double tension) Set critical surface tension of packing material [N/m].voidsetDesignFloodFraction(double fraction) Set design flooding fraction (typical 0.65-0.75).voidsetLiquidDensity(double density) Set liquid density [kg/m3].voidsetLiquidDiffusivity(double diffusivity) Set liquid diffusivity [m2/s].voidsetLiquidMassFlow(double flow) Set liquid mass flow [kg/s].voidsetLiquidViscosity(double viscosity) Set liquid viscosity [Pa.s].voidsetNominalSize(double size) Set nominal packing size [mm].voidsetPackedHeight(double height) Set packed bed height [m].voidsetPackingCategory(String category) Set packing category.voidsetPackingFactor(double factor) Set packing factor [m-1].voidsetPackingName(String name) Set packing name.voidsetPackingPreset(String preset) Set packing to a standard random packing type.voidsetPackingSpecification(PackingSpecification specification) Apply a reusable packing specification.voidsetSpecificSurfaceArea(double area) Set specific surface area [m2/m3].voidsetStructuredPackingPreset(String preset) Set packing to a standard structured packing type.voidsetSurfaceTension(double tension) Set liquid surface tension [N/m].voidsetVaporDensity(double density) Set vapor density [kg/m3].voidsetVaporDiffusivity(double diffusivity) Set vapor diffusivity [m2/s].voidsetVaporMassFlow(double flow) Set vapor mass flow [kg/s].voidsetVaporViscosity(double viscosity) Set vapor viscosity [Pa.s].voidsetVoidFraction(double fraction) Set void fraction.doubleSize column diameter for packed column at the design flood fraction.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization version UID.- See Also:
-
logger
private static final org.apache.logging.log4j.Logger loggerLogger object for class. -
packingCategory
Packing category: "random" or "structured". -
packingName
Packing type name (e.g., "Pall-Ring-50", "Mellapak-250Y"). -
specificSurfaceArea
private double specificSurfaceAreaPacking specific surface area [m2/m3]. -
voidFraction
private double voidFractionPacking void fraction (porosity) [-]. -
packingFactor
private double packingFactorPacking factor Fp [m-1] (used in Eckert GPDC correlation). -
nominalSize
private double nominalSizeNominal packing size [mm] (for random packing). -
criticalSurfaceTension
private double criticalSurfaceTensionCritical surface tension of packing material [N/m] (for Onda). -
columnDiameter
private double columnDiameterColumn internal diameter [m]. -
packedHeight
private double packedHeightPacked bed height [m]. -
designFloodFraction
private double designFloodFractionDesign flooding fraction (typically 0.65-0.75 for packed columns). -
vaporMassFlow
private double vaporMassFlowVapor mass flow rate [kg/s]. -
liquidMassFlow
private double liquidMassFlowLiquid mass flow rate [kg/s]. -
vaporDensity
private double vaporDensityVapor density [kg/m3]. -
liquidDensity
private double liquidDensityLiquid density [kg/m3]. -
vaporViscosity
private double vaporViscosityVapor viscosity [Pa.s]. -
liquidViscosity
private double liquidViscosityLiquid viscosity [Pa.s]. -
surfaceTension
private double surfaceTensionLiquid surface tension [N/m]. -
vaporDiffusivity
private double vaporDiffusivityVapor diffusivity [m2/s]. -
liquidDiffusivity
private double liquidDiffusivityLiquid diffusivity [m2/s]. -
floodingVelocity
private double floodingVelocityFlooding gas velocity [m/s]. -
actualVelocity
private double actualVelocityActual gas superficial velocity [m/s]. -
percentFlood
private double percentFloodPercent of flooding [%]. -
pressureDropPerMeter
private double pressureDropPerMeterPressure drop [Pa/m of packing]. -
totalPressureDrop
private double totalPressureDropTotal pressure drop [Pa]. -
kGa
private double kGaGas-phase mass transfer coefficient [mol/(m2.s.Pa)] or [1/s]. -
kLa
private double kLaLiquid-phase mass transfer coefficient [m/s]. -
wettedArea
private double wettedAreaWetted specific area [m2/m3]. -
htuG
private double htuGHeight of a gas-phase transfer unit [m]. -
htuL
private double htuLHeight of a liquid-phase transfer unit [m]. -
htuOG
private double htuOGHeight of an overall gas-phase transfer unit [m]. -
hetp
private double hetpHETP — Height Equivalent to a Theoretical Plate [m]. -
numberOfTheoreticalStages
private double numberOfTheoreticalStagesNumber of theoretical stages in packed height. -
minimumWettingRate
private double minimumWettingRateMinimum liquid wetting rate [m3/(m2.s)]. -
actualLiquidVelocity
private double actualLiquidVelocityActual liquid superficial velocity [m/s]. -
wettingOk
private boolean wettingOkWetting check: true if liquid rate exceeds minimum. -
fsFactor
private double fsFactorF-factor = u_v * sqrt(rho_v) [Pa^0.5]. -
designOk
private boolean designOkOverall design verdict.
-
-
Constructor Details
-
PackingHydraulicsCalculator
public PackingHydraulicsCalculator()Default constructor.
-
-
Method Details
-
calculate
public void calculate()Perform all packing hydraulic calculations.Call after setting packing specs and operating conditions. Results available through getters.
-
calculateFloodingVelocity
private void calculateFloodingVelocity()Calculate flooding velocity using the Eckert Generalized Pressure Drop Correlation (GPDC).The GPDC relates the flow parameter FLV to the capacity parameter Y at flooding. The Sherwood/Leva/Eckert chart is fitted with a polynomial in log-log space.
-
calculateActualVelocity
private void calculateActualVelocity()Calculate actual velocity and percent flooding. -
calculatePressureDrop
private void calculatePressureDrop()Calculate pressure drop using the Leva correlation for irrigated packing.Uses the dry packing Ergun-type equation with a Leva wet correction factor that increases with liquid loading.
-
calculateMassTransfer
private void calculateMassTransfer()Calculate mass transfer coefficients using the Onda correlation.The Onda correlation (1968) predicts gas and liquid phase mass transfer coefficients and the effective wetted area for random and structured packings.
-
calculateHETP
private void calculateHETP()Calculate HETP from mass transfer coefficients.Uses the two-resistance model: 1/KOG = 1/kG + m/kL, then HTU_OG = G/(KOG * a * P), and HETP = HTU_OG * ln(lambda) / (lambda - 1), where lambda = m * G_m / L_m is the stripping factor.
-
estimateHETP
private double estimateHETP()Estimate HETP from empirical rules of thumb when mass transfer calculation is not feasible.- Returns:
- estimated HETP [m]
-
getEffectivePackingDiameter
private double getEffectivePackingDiameter()Get effective packing diameter for mass-transfer correlations.Random packings normally provide a nominal size. Structured packings often do not, so an equivalent hydraulic diameter
4 epsilon / ais used as a finite fallback.- Returns:
- effective packing diameter in metres
-
calculateWettingCheck
private void calculateWettingCheck()Check minimum liquid wetting rate. -
assessDesign
private void assessDesign()Assess overall design. -
sizeColumnDiameter
public double sizeColumnDiameter()Size column diameter for packed column at the design flood fraction.- Returns:
- required column diameter [m]
-
roundToStandardDiameter
private double roundToStandardDiameter(double diameter) Round diameter to nearest standard vessel size.- Parameters:
diameter- raw diameter [m]- Returns:
- standard diameter [m]
-
setPackingPreset
Set packing to a standard random packing type.Supported presets are provided by
PackingSpecificationLibrary. The old hard-coded names remain available, and additional entries can be supplied throughdesigndata/Packing.csv.- Parameters:
preset- packing name preset
-
setStructuredPackingPreset
Set packing to a standard structured packing type.Supported presets are provided by
PackingSpecificationLibrary. The old hard-coded names remain available, and additional entries can be supplied throughdesigndata/Packing.csv.- Parameters:
preset- structured packing name preset
-
setPackingSpecification
Apply a reusable packing specification.- Parameters:
specification- packing specification to apply- Throws:
IllegalArgumentException- if the specification is null
-
getPackingCategory
Get packing category ("random" or "structured").- Returns:
- packing category
-
setPackingCategory
Set packing category.- Parameters:
category- "random" or "structured"
-
getPackingName
-
setPackingName
-
getSpecificSurfaceArea
public double getSpecificSurfaceArea()Get specific surface area [m2/m3].- Returns:
- specific surface area
-
setSpecificSurfaceArea
public void setSpecificSurfaceArea(double area) Set specific surface area [m2/m3].- Parameters:
area- specific surface area
-
getVoidFraction
public double getVoidFraction()Get void fraction (porosity).- Returns:
- void fraction
-
setVoidFraction
public void setVoidFraction(double fraction) Set void fraction.- Parameters:
fraction- void fraction
-
getPackingFactor
public double getPackingFactor()Get packing factor [m-1].- Returns:
- packing factor
-
setPackingFactor
public void setPackingFactor(double factor) Set packing factor [m-1].- Parameters:
factor- packing factor
-
setNominalSize
public void setNominalSize(double size) Set nominal packing size [mm].- Parameters:
size- nominal size
-
setCriticalSurfaceTension
public void setCriticalSurfaceTension(double tension) Set critical surface tension of packing material [N/m].- Parameters:
tension- critical surface tension
-
setColumnDiameter
public void setColumnDiameter(double diameter) Set column diameter [m].- Parameters:
diameter- column diameter
-
getColumnDiameter
public double getColumnDiameter()Get column diameter [m].- Returns:
- column diameter
-
setPackedHeight
public void setPackedHeight(double height) Set packed bed height [m].- Parameters:
height- packed height
-
getPackedHeight
public double getPackedHeight()Get packed bed height [m].- Returns:
- packed height
-
setDesignFloodFraction
public void setDesignFloodFraction(double fraction) Set design flooding fraction (typical 0.65-0.75).- Parameters:
fraction- design flooding fraction
-
setVaporMassFlow
public void setVaporMassFlow(double flow) Set vapor mass flow [kg/s].- Parameters:
flow- vapor mass flow
-
setLiquidMassFlow
public void setLiquidMassFlow(double flow) Set liquid mass flow [kg/s].- Parameters:
flow- liquid mass flow
-
setVaporDensity
public void setVaporDensity(double density) Set vapor density [kg/m3].- Parameters:
density- vapor density
-
setLiquidDensity
public void setLiquidDensity(double density) Set liquid density [kg/m3].- Parameters:
density- liquid density
-
setVaporViscosity
public void setVaporViscosity(double viscosity) Set vapor viscosity [Pa.s].- Parameters:
viscosity- vapor viscosity
-
setLiquidViscosity
public void setLiquidViscosity(double viscosity) Set liquid viscosity [Pa.s].- Parameters:
viscosity- liquid viscosity
-
setSurfaceTension
public void setSurfaceTension(double tension) Set liquid surface tension [N/m].- Parameters:
tension- surface tension
-
setVaporDiffusivity
public void setVaporDiffusivity(double diffusivity) Set vapor diffusivity [m2/s].- Parameters:
diffusivity- vapor diffusivity
-
setLiquidDiffusivity
public void setLiquidDiffusivity(double diffusivity) Set liquid diffusivity [m2/s].- Parameters:
diffusivity- liquid diffusivity
-
getFloodingVelocity
public double getFloodingVelocity()Get flooding velocity [m/s].- Returns:
- flooding velocity
-
getActualVelocity
public double getActualVelocity()Get actual gas superficial velocity [m/s].- Returns:
- actual velocity
-
getPercentFlood
public double getPercentFlood()Get percent of flooding.- Returns:
- percent flood
-
getPressureDropPerMeter
public double getPressureDropPerMeter()Get pressure drop per meter of packing [Pa/m].- Returns:
- pressure drop per meter
-
getTotalPressureDrop
public double getTotalPressureDrop()Get total pressure drop [Pa].- Returns:
- total pressure drop
-
getHETP
public double getHETP()Get HETP [m].- Returns:
- height equivalent to a theoretical plate
-
getNumberOfTheoreticalStages
public double getNumberOfTheoreticalStages()Get number of theoretical stages in the packed bed.- Returns:
- number of theoretical stages
-
getKGa
public double getKGa()Get gas-phase mass transfer coefficient [1/s].- Returns:
- kG*a
-
getKLa
public double getKLa()Get liquid-phase mass transfer coefficient [1/s].- Returns:
- kL*a
-
getWettedArea
public double getWettedArea()Get wetted specific area [m2/m3].- Returns:
- wetted area
-
getHtuG
public double getHtuG()Get HTU_G [m].- Returns:
- gas-phase height of transfer unit
-
getHtuL
public double getHtuL()Get HTU_L [m].- Returns:
- liquid-phase height of transfer unit
-
getHtuOG
public double getHtuOG()Get HTU_OG [m].- Returns:
- overall gas-phase height of transfer unit
-
getFsFactor
public double getFsFactor()Get F-factor [Pa^0.5].- Returns:
- F-factor
-
isWettingOk
public boolean isWettingOk()Check if wetting is adequate.- Returns:
- true if above minimum wetting rate
-
isDesignOk
public boolean isDesignOk()Check if overall design is feasible.- Returns:
- true if all checks pass
-