Class TrayHydraulicsCalculator
- All Implemented Interfaces:
Serializable
Calculates per-tray hydraulics for sieve, valve, and bubble-cap trays using industry-standard correlations including:
- Flooding velocity — Fair correlation (Souders-Brown with tray spacing and FLV correction)
- Weeping — Sinnott correlation (minimum vapor velocity to prevent liquid weeping)
- Entrainment — Fair entrainment correlation (fractional entrainment vs percent flood)
- Downcomer backup — Francis weir formula and backup height calculation
- Pressure drop — dry tray + liquid head + residual head
- Tray efficiency — O'Connell correlation (function of relative volatility and viscosity)
- Turndown ratio — ratio of minimum to design vapor rate
References: Kister, H.Z. "Distillation Design" (1992); Ludwig, E.E. "Applied Process Design vol. 2" (2001); Fair, J.R. Petro/Chem Eng. (1961); Sinnott, R.K. "Chemical Engineering Design" (2005).
- Version:
- 1.0
- Author:
- NeqSim
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleActive (bubbling) area [m2].private doubleActive area as fraction of total column area (1 - 2 * downcomer fraction).private doubleActual vapor velocity through net area [m/s].private doubleCalculated weir length [m].private doubleColumn internal diameter [m].private doubleDesign flooding fraction (0.70-0.85 typical).private booleanOverall design verdict: true if all checks pass.private doubleDowncomer area (one side) [m2].private doubleDowncomer area as fraction of total column area.private doubleTotal downcomer backup [m of clear liquid].private doubleDowncomer backup as fraction of tray spacing + weir height.private booleanDowncomer backup check: true if backup < 50% of (spacing + weir height).private doubleDry tray pressure drop [Pa].private doubleFractional liquid entrainment (mol liquid/mol vapor).private booleanEntrainment check: true if entrainment < 0.1 (10%).private doubleFlooding velocity based on net area [m/s].private doubleF-factor = u_v * sqrt(rho_v) [Pa^0.5].private doubleHole area [m2] (sieve trays).private doubleHole area as fraction of active area (sieve trays: 0.05-0.16, typical 0.10).private doubleHole diameter [mm] (sieve trays).private doubleLiquid density [kg/m3].private doubleLiquid head on tray [Pa].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 vapor velocity before weeping [m/s] (sieve trays).private doublePercent of flooding [%].private doubleRelative volatility of key components.private doubleResidual head pressure drop [Pa].private static final longSerialization version UID.private doubleLiquid surface tension [N/m].private doubleTotal column cross-sectional area [m2].private doubleTotal tray pressure drop [Pa].private doubleTray efficiency (O'Connell).private doubleTray spacing [m].private StringTray type: "sieve", "valve", or "bubble-cap".private doubleTurndown ratio (min vapor/design vapor).private doubleVapor density [kg/m3].private doubleVapor mass flow rate [kg/s].private booleanWeeping check: true if actual velocity is above minimum.private doubleWeir loading (crest over weir) [m3/s per m of weir length].private doubleWeir height [m].private doubleWeir length [m]. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidAssess overall design feasibility.voidPerform all tray hydraulic calculations.private voidCalculate actual vapor velocity and percent flooding.private voidCalculate all tray areas from geometry.private voidCalculate downcomer backup height.private voidCalculate entrainment using Fair's correlation.private voidCalculate flooding velocity using the Fair correlation.private voidCalculate tray pressure drop components.private voidCalculate tray efficiency using the O'Connell correlation.private voidCalculate turndown ratio.private voidCheck for weeping condition (sieve and valve trays).doubleGet the active area [m2].doubleGet actual vapor velocity through net area [m/s].doubleGet the calculated weir length [m].private doublegetCapacityFactor(double spacing, double flv) Get the Fair capacity factor K as a function of tray spacing and flow parameter.doubleGet column diameter [m].doubleGet the downcomer area (one side) [m2].doubleGet the downcomer area fraction.doubleGet the total downcomer backup [m of clear liquid].doubleGet downcomer backup as fraction of available height.doubleGet dry tray pressure drop [Pa].doubleGet fractional entrainment.doubleGet flooding velocity [m/s].doubleGet the F-factor (Fs = u_v * sqrt(rho_v)).doubleGet the hole area [m2].doubleGet liquid head pressure drop component [Pa].doubleGet minimum vapor velocity to prevent weeping [m/s].private doubleGet the orifice discharge coefficient for the tray type.doubleGet percent of flooding [%].doubleGet residual head pressure drop component [Pa].doubleGet the total column area [m2].doubleGet total tray pressure drop [Pa].doubleGet total tray pressure drop in mbar.doubleGet tray efficiency (O'Connell).doubleGet tray spacing [m].Get the tray type.doubleGet the turndown ratio (min velocity / actual velocity).doubleGet weir height [m].booleanCheck if overall design is feasible.booleanCheck if downcomer backup is within limits.booleanCheck if entrainment is below the 10% threshold.booleanCheck if tray is above the weeping point.private doubleroundToStandardDiameter(double diameter) Round diameter to nearest standard vessel size (API/ASME).voidsetColumnDiameter(double columnDiameter) Set column diameter [m].voidsetDesignFloodFraction(double fraction) Set design flooding fraction (0.70-0.85).voidsetDowncommerAreaFraction(double fraction) Set the downcomer area fraction (typically 0.08-0.12).voidsetHoleAreaFraction(double fraction) Set hole area fraction (sieve trays, typical 0.05-0.16).voidsetHoleDiameter(double holeDiameter) Set hole diameter [mm] (sieve trays).voidsetLiquidDensity(double density) Set liquid density [kg/m3].voidsetLiquidMassFlow(double flow) Set liquid mass flow [kg/s].voidsetLiquidViscosity(double viscosity) Set liquid viscosity [Pa.s].voidsetRelativeVolatility(double alpha) Set relative volatility of key components.voidsetSurfaceTension(double tension) Set liquid surface tension [N/m].voidsetTraySpacing(double traySpacing) Set tray spacing [m].voidsetTrayType(String trayType) Set tray type: "sieve", "valve", or "bubble-cap".voidsetVaporDensity(double density) Set vapor density [kg/m3].voidsetVaporMassFlow(double flow) Set vapor mass flow [kg/s].voidsetWeirHeight(double weirHeight) Set weir height [m].voidsetWeirLength(double weirLength) Set weir length [m].doubleSize column diameter for a given design flooding 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. -
trayType
Tray type: "sieve", "valve", or "bubble-cap". -
columnDiameter
private double columnDiameterColumn internal diameter [m]. -
traySpacing
private double traySpacingTray spacing [m]. -
weirHeight
private double weirHeightWeir height [m]. -
weirLength
private double weirLengthWeir length [m]. Set < 0 to auto-calculate as 0.73 * diameter. -
downcommerAreaFraction
private double downcommerAreaFractionDowncomer area as fraction of total column area. -
holeDiameter
private double holeDiameterHole diameter [mm] (sieve trays). -
holeAreaFraction
private double holeAreaFractionHole area as fraction of active area (sieve trays: 0.05-0.16, typical 0.10). -
activeAreaFraction
private double activeAreaFractionActive area as fraction of total column area (1 - 2 * downcomer fraction). -
designFloodFraction
private double designFloodFractionDesign flooding fraction (0.70-0.85 typical). -
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]. -
liquidViscosity
private double liquidViscosityLiquid viscosity [Pa.s]. -
surfaceTension
private double surfaceTensionLiquid surface tension [N/m]. -
relativeVolatility
private double relativeVolatilityRelative volatility of key components. -
totalArea
private double totalAreaTotal column cross-sectional area [m2]. -
activeArea
private double activeAreaActive (bubbling) area [m2]. -
downcommerArea
private double downcommerAreaDowncomer area (one side) [m2]. -
holeArea
private double holeAreaHole area [m2] (sieve trays). -
floodingVelocity
private double floodingVelocityFlooding velocity based on net area [m/s]. -
actualVaporVelocity
private double actualVaporVelocityActual vapor velocity through net area [m/s]. -
percentFlood
private double percentFloodPercent of flooding [%]. -
minimumVaporVelocity
private double minimumVaporVelocityMinimum vapor velocity before weeping [m/s] (sieve trays). -
weepingOk
private boolean weepingOkWeeping check: true if actual velocity is above minimum. -
entrainment
private double entrainmentFractional liquid entrainment (mol liquid/mol vapor). -
entrainmentOk
private boolean entrainmentOkEntrainment check: true if entrainment < 0.1 (10%). -
downcommerBackup
private double downcommerBackupTotal downcomer backup [m of clear liquid]. -
downcommerBackupFraction
private double downcommerBackupFractionDowncomer backup as fraction of tray spacing + weir height. -
downcommerBackupOk
private boolean downcommerBackupOkDowncomer backup check: true if backup < 50% of (spacing + weir height). -
weirCrest
private double weirCrestWeir loading (crest over weir) [m3/s per m of weir length]. -
dryTrayPressureDrop
private double dryTrayPressureDropDry tray pressure drop [Pa]. -
liquidHeadPressureDrop
private double liquidHeadPressureDropLiquid head on tray [Pa]. -
residualHeadPressureDrop
private double residualHeadPressureDropResidual head pressure drop [Pa]. -
totalTrayPressureDrop
private double totalTrayPressureDropTotal tray pressure drop [Pa]. -
trayEfficiency
private double trayEfficiencyTray efficiency (O'Connell). -
turndownRatio
private double turndownRatioTurndown ratio (min vapor/design vapor). -
fsFactor
private double fsFactorF-factor = u_v * sqrt(rho_v) [Pa^0.5]. -
calculatedWeirLength
private double calculatedWeirLengthCalculated weir length [m]. -
designOk
private boolean designOkOverall design verdict: true if all checks pass.
-
-
Constructor Details
-
TrayHydraulicsCalculator
public TrayHydraulicsCalculator()Default constructor.
-
-
Method Details
-
calculate
public void calculate()Perform all tray hydraulic calculations.Call this after setting all geometry and operating parameters. Results are available through getter methods.
-
calculateAreas
private void calculateAreas()Calculate all tray areas from geometry. -
calculateFloodingVelocity
private void calculateFloodingVelocity()Calculate flooding velocity using the Fair correlation.Uses the Souders-Brown equation with the capacity factor K from the Fair plot as a function of tray spacing and flow parameter (FLV). Surface tension correction is applied per the Kister-Haas modification.
-
getCapacityFactor
private double getCapacityFactor(double spacing, double flv) Get the Fair capacity factor K as a function of tray spacing and flow parameter.Implements a curve fit to the Fair flooding correlation for sieve trays. Data from Kister (1992), Table 6.3.
- Parameters:
spacing- tray spacing [m]flv- flow parameter [-]- Returns:
- capacity factor K [m/s]
-
calculateActualVelocity
private void calculateActualVelocity()Calculate actual vapor velocity and percent flooding. -
calculateWeepingCheck
private void calculateWeepingCheck()Check for weeping condition (sieve and valve trays).Uses the Sinnott correlation: minimum vapor velocity through holes to prevent weeping: u_min = [K_w - 0.90 * (25.4 - d_h)] / sqrt(rho_v), where K_w is from the weeping chart.
-
calculateEntrainment
private void calculateEntrainment()Calculate entrainment using Fair's correlation.Fractional entrainment (psi) as a function of percent flood and flow parameter. High entrainment (> 0.1) reduces tray efficiency.
-
calculatePressureDrop
private void calculatePressureDrop()Calculate tray pressure drop components.Total tray DP = dry tray DP + liquid head + residual head. Dry tray DP uses the orifice equation. Liquid head includes weir crest. Residual head accounts for surface tension at hole rim.
-
getOrificeCoefficient
private double getOrificeCoefficient()Get the orifice discharge coefficient for the tray type.- Returns:
- orifice coefficient Co
-
calculateDowncommerBackup
private void calculateDowncommerBackup()Calculate downcomer backup height.Downcomer backup = tray pressure drop (as liquid head) + liquid head in downcomer + friction under downcomer. Must be less than tray spacing + weir height to prevent flooding.
-
calculateTrayEfficiency
private void calculateTrayEfficiency()Calculate tray efficiency using the O'Connell correlation.E_o = 51 - 32.5 * log10(alpha * mu_L) where alpha is relative volatility and mu_L is liquid viscosity in centipoise. Valid range: alpha*mu from 0.1 to 10.
-
calculateTurndownRatio
private void calculateTurndownRatio()Calculate turndown ratio. -
assessDesign
private void assessDesign()Assess overall design feasibility. -
sizeColumnDiameter
public double sizeColumnDiameter()Size column diameter for a given design flooding fraction.Given the operating conditions, calculates the minimum column diameter required to stay below the design flooding fraction. The diameter is rounded up to the nearest standard vessel size.
- Returns:
- required column diameter [m]
-
roundToStandardDiameter
private double roundToStandardDiameter(double diameter) Round diameter to nearest standard vessel size (API/ASME).- Parameters:
diameter- raw diameter in meters- Returns:
- nearest standard diameter in meters (rounded up)
-
getTrayType
-
setTrayType
Set tray type: "sieve", "valve", or "bubble-cap".- Parameters:
trayType- the tray type
-
getColumnDiameter
public double getColumnDiameter()Get column diameter [m].- Returns:
- column diameter
-
setColumnDiameter
public void setColumnDiameter(double columnDiameter) Set column diameter [m].- Parameters:
columnDiameter- column internal diameter
-
getTraySpacing
public double getTraySpacing()Get tray spacing [m].- Returns:
- tray spacing
-
setTraySpacing
public void setTraySpacing(double traySpacing) Set tray spacing [m].- Parameters:
traySpacing- tray spacing
-
getWeirHeight
public double getWeirHeight()Get weir height [m].- Returns:
- weir height
-
setWeirHeight
public void setWeirHeight(double weirHeight) Set weir height [m].- Parameters:
weirHeight- weir height
-
setWeirLength
public void setWeirLength(double weirLength) Set weir length [m]. Use -1 for automatic calculation (0.73 * diameter).- Parameters:
weirLength- weir length or -1 for auto
-
getDowncommerAreaFraction
public double getDowncommerAreaFraction()Get the downcomer area fraction.- Returns:
- downcomer area fraction
-
setDowncommerAreaFraction
public void setDowncommerAreaFraction(double fraction) Set the downcomer area fraction (typically 0.08-0.12).- Parameters:
fraction- downcomer area fraction
-
setHoleDiameter
public void setHoleDiameter(double holeDiameter) Set hole diameter [mm] (sieve trays).- Parameters:
holeDiameter- hole diameter in mm
-
setHoleAreaFraction
public void setHoleAreaFraction(double fraction) Set hole area fraction (sieve trays, typical 0.05-0.16).- Parameters:
fraction- hole area as fraction of active area
-
setDesignFloodFraction
public void setDesignFloodFraction(double fraction) Set design flooding fraction (0.70-0.85).- Parameters:
fraction- design flooding fraction
-
setVaporMassFlow
public void setVaporMassFlow(double flow) Set vapor mass flow [kg/s].- Parameters:
flow- vapor mass flow rate
-
setLiquidMassFlow
public void setLiquidMassFlow(double flow) Set liquid mass flow [kg/s].- Parameters:
flow- liquid mass flow rate
-
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
-
setLiquidViscosity
public void setLiquidViscosity(double viscosity) Set liquid viscosity [Pa.s].- Parameters:
viscosity- liquid dynamic viscosity
-
setSurfaceTension
public void setSurfaceTension(double tension) Set liquid surface tension [N/m].- Parameters:
tension- surface tension
-
setRelativeVolatility
public void setRelativeVolatility(double alpha) Set relative volatility of key components.- Parameters:
alpha- relative volatility
-
getFloodingVelocity
public double getFloodingVelocity()Get flooding velocity [m/s].- Returns:
- flooding velocity based on net area
-
getActualVaporVelocity
public double getActualVaporVelocity()Get actual vapor velocity through net area [m/s].- Returns:
- actual vapor velocity
-
getPercentFlood
public double getPercentFlood()Get percent of flooding [%].- Returns:
- percent flood
-
getMinimumVaporVelocity
public double getMinimumVaporVelocity()Get minimum vapor velocity to prevent weeping [m/s].- Returns:
- minimum velocity based on net area
-
isWeepingOk
public boolean isWeepingOk()Check if tray is above the weeping point.- Returns:
- true if no weeping
-
getEntrainment
public double getEntrainment()Get fractional entrainment.- Returns:
- fractional liquid entrainment (mol/mol)
-
isEntrainmentOk
public boolean isEntrainmentOk()Check if entrainment is below the 10% threshold.- Returns:
- true if entrainment is acceptable
-
getDowncommerBackup
public double getDowncommerBackup()Get the total downcomer backup [m of clear liquid].- Returns:
- downcomer backup height
-
getDowncommerBackupFraction
public double getDowncommerBackupFraction()Get downcomer backup as fraction of available height.- Returns:
- downcomer backup fraction
-
isDowncommerBackupOk
public boolean isDowncommerBackupOk()Check if downcomer backup is within limits.- Returns:
- true if backup is acceptable
-
getTotalTrayPressureDrop
public double getTotalTrayPressureDrop()Get total tray pressure drop [Pa].- Returns:
- total tray pressure drop
-
getTotalTrayPressureDropMbar
public double getTotalTrayPressureDropMbar()Get total tray pressure drop in mbar.- Returns:
- total tray pressure drop in mbar
-
getDryTrayPressureDrop
public double getDryTrayPressureDrop()Get dry tray pressure drop [Pa].- Returns:
- dry tray pressure drop
-
getLiquidHeadPressureDrop
public double getLiquidHeadPressureDrop()Get liquid head pressure drop component [Pa].- Returns:
- liquid head pressure drop
-
getResidualHeadPressureDrop
public double getResidualHeadPressureDrop()Get residual head pressure drop component [Pa].- Returns:
- residual head pressure drop
-
getTrayEfficiency
public double getTrayEfficiency()Get tray efficiency (O'Connell).- Returns:
- tray efficiency (0-1)
-
getFsFactor
public double getFsFactor()Get the F-factor (Fs = u_v * sqrt(rho_v)).- Returns:
- F-factor [Pa^0.5]
-
getTurndownRatio
public double getTurndownRatio()Get the turndown ratio (min velocity / actual velocity).- Returns:
- turndown ratio
-
getCalculatedWeirLength
public double getCalculatedWeirLength()Get the calculated weir length [m].- Returns:
- weir length
-
getActiveArea
public double getActiveArea()Get the active area [m2].- Returns:
- active bubbling area
-
getTotalArea
public double getTotalArea()Get the total column area [m2].- Returns:
- total cross-sectional area
-
getHoleArea
public double getHoleArea()Get the hole area [m2].- Returns:
- hole (or slot) area
-
getDowncommerArea
public double getDowncommerArea()Get the downcomer area (one side) [m2].- Returns:
- downcomer area
-
isDesignOk
public boolean isDesignOk()Check if overall design is feasible.- Returns:
- true if all hydraulic checks pass
-