Class ColumnInternalsDesigner

java.lang.Object
neqsim.process.equipment.distillation.internals.ColumnInternalsDesigner
All Implemented Interfaces:
Serializable

public class ColumnInternalsDesigner extends Object implements Serializable
Column internals designer for distillation columns.

High-level facade that evaluates hydraulic performance on every tray in a converged DistillationColumn, identifies the controlling tray (highest vapor/liquid loading), sizes the column diameter, and produces a comprehensive JSON report.

Supports both tray columns (sieve, valve, bubble-cap via TrayHydraulicsCalculator) and packed columns (PackingHydraulicsCalculator).

Usage example:

// After running a DistillationColumn:
column.run();

ColumnInternalsDesigner designer = new ColumnInternalsDesigner(column);
designer.setInternalsType("sieve");
designer.setTraySpacing(0.6);
designer.setDesignFloodFraction(0.80);
designer.calculate();

double diameter = designer.getRequiredDiameter();
boolean ok = designer.isDesignOk();
String report = designer.toJson();
Version:
1.0
Author:
NeqSim
See Also:
  • Field Details

    • serialVersionUID

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

      private static final org.apache.logging.log4j.Logger logger
      Logger object for class.
    • column

      private transient DistillationColumn column
      The distillation column to evaluate.
    • internalsType

      private String internalsType
      Internals type: "sieve", "valve", "bubble-cap", or "packed".
    • traySpacing

      private double traySpacing
      Tray spacing [m] (for tray columns).
    • weirHeight

      private double weirHeight
      Weir height [m] (for tray columns).
    • holeDiameter

      private double holeDiameter
      Hole diameter [mm] (for sieve trays).
    • holeAreaFraction

      private double holeAreaFraction
      Hole area fraction (sieve trays).
    • downcommerAreaFraction

      private double downcommerAreaFraction
      Downcomer area fraction (tray columns).
    • designFloodFraction

      private double designFloodFraction
      Design flooding fraction (0-1).
    • packingPreset

      private String packingPreset
      Packing preset name (for packed columns).
    • structuredPacking

      private boolean structuredPacking
      Whether the packing is structured.
    • packedHeight

      private double packedHeight
      Packed bed height [m] (for packed columns).
    • columnDiameterOverride

      private double columnDiameterOverride
      Column diameter override [m]. If > 0, use this instead of auto-sizing.
    • trayResults

      private List<TrayHydraulicsCalculator> trayResults
      Per-tray hydraulics results (tray columns only).
    • packingResult

      private PackingHydraulicsCalculator packingResult
      Packing hydraulics result (packed columns only).
    • controllingTrayIndex

      private int controllingTrayIndex
      Index of the controlling tray (highest loading).
    • requiredDiameter

      private double requiredDiameter
      Required column diameter [m].
    • designOk

      private boolean designOk
      Overall design verdict.
    • averageTrayEfficiency

      private double averageTrayEfficiency
      Overall tray efficiency (O'Connell average).
    • totalPressureDrop

      private double totalPressureDrop
      Total column pressure drop [Pa].
    • maxPercentFlood

      private double maxPercentFlood
      Maximum percent flooding across all trays.
    • minPercentFlood

      private double minPercentFlood
      Minimum percent flooding across all trays (turndown check).
  • Constructor Details

    • ColumnInternalsDesigner

      public ColumnInternalsDesigner(DistillationColumn column)
      Constructor with column.
      Parameters:
      column - the converged distillation column
    • ColumnInternalsDesigner

      public ColumnInternalsDesigner()
      Default constructor. Column must be set via setColumn(DistillationColumn).
  • Method Details

    • setColumn

      public void setColumn(DistillationColumn column)
      Set the distillation column.
      Parameters:
      column - the distillation column
    • setInternalsType

      public void setInternalsType(String type)
      Set internals type: "sieve", "valve", "bubble-cap", or "packed".
      Parameters:
      type - internals type
    • setTraySpacing

      public void setTraySpacing(double spacing)
      Set tray spacing [m].
      Parameters:
      spacing - tray spacing
    • setWeirHeight

      public void setWeirHeight(double height)
      Set weir height [m].
      Parameters:
      height - weir height
    • setHoleDiameter

      public void setHoleDiameter(double diameter)
      Set hole diameter [mm] (sieve trays).
      Parameters:
      diameter - hole diameter
    • setHoleAreaFraction

      public void setHoleAreaFraction(double fraction)
      Set hole area fraction (sieve trays, 0.05-0.16).
      Parameters:
      fraction - hole area fraction
    • setDowncommerAreaFraction

      public void setDowncommerAreaFraction(double fraction)
      Set downcomer area fraction (0.08-0.12).
      Parameters:
      fraction - downcomer area fraction
    • setDesignFloodFraction

      public void setDesignFloodFraction(double fraction)
      Set design flooding fraction (typical 0.70-0.85 for trays, 0.65-0.75 for packing).
      Parameters:
      fraction - design flooding fraction
    • setPackingPreset

      public void setPackingPreset(String preset)
      Set packing preset (for packed columns).
      Parameters:
      preset - packing name (e.g., "Pall-Ring-50", "Mellapak-250Y")
    • setStructuredPacking

      public void setStructuredPacking(boolean structured)
      Set whether packing is structured (default false = random).
      Parameters:
      structured - true for structured packing
    • setPackedHeight

      public void setPackedHeight(double height)
      Set packed bed height [m].
      Parameters:
      height - packed bed height
    • setColumnDiameterOverride

      public void setColumnDiameterOverride(double diameter)
      Override column diameter [m]. Set to -1 for auto-sizing.
      Parameters:
      diameter - column diameter or -1 for auto
    • calculate

      public void calculate()
      Run all internals sizing calculations.

      For tray columns, evaluates hydraulics on EVERY tray, finds the controlling tray, and sizes the column diameter. For packed columns, runs the packing hydraulics calculator.

    • calculateTrayed

      private void calculateTrayed()
      Calculate internals for tray columns.
    • calculatePacked

      private void calculatePacked()
      Calculate internals for packed columns.
    • getTrayFlows

      private double[] getTrayFlows(SimpleTray tray)
      Extract vapor and liquid mass flow rates from a tray [kg/s].
      Parameters:
      tray - the tray to query
      Returns:
      array {vaporMassFlow, liquidMassFlow} in kg/s
    • getTrayProperties

      private double[] getTrayProperties(SimpleTray tray)
      Extract physical properties from a tray's fluid.
      Parameters:
      tray - the tray to query
      Returns:
      array {vaporDensity, liquidDensity, liquidViscosity, surfaceTension, relativeVolatility} in SI units
    • getRequiredDiameter

      public double getRequiredDiameter()
      Get the required column diameter [m].
      Returns:
      required diameter
    • isDesignOk

      public boolean isDesignOk()
      Check if the overall design is feasible.
      Returns:
      true if all tray/packing checks pass
    • getControllingTrayIndex

      public int getControllingTrayIndex()
      Get the controlling tray index.
      Returns:
      index of the tray with highest vapor loading
    • getTrayResults

      public List<TrayHydraulicsCalculator> getTrayResults()
      Get the per-tray results list.
      Returns:
      list of TrayHydraulicsCalculator results (one per tray)
    • getPackingResult

      public PackingHydraulicsCalculator getPackingResult()
      Get the packing result calculator.
      Returns:
      PackingHydraulicsCalculator or null if tray column
    • getMaxPercentFlood

      public double getMaxPercentFlood()
      Get maximum percent flooding across all trays.
      Returns:
      max percent flood
    • getMinPercentFlood

      public double getMinPercentFlood()
      Get minimum percent flooding across all trays.
      Returns:
      min percent flood
    • getAverageTrayEfficiency

      public double getAverageTrayEfficiency()
      Get the average tray efficiency (O'Connell).
      Returns:
      average efficiency (0-1)
    • getTotalPressureDrop

      public double getTotalPressureDrop()
      Get total column pressure drop [Pa].
      Returns:
      total pressure drop
    • getTotalPressureDropMbar

      public double getTotalPressureDropMbar()
      Get total column pressure drop [mbar].
      Returns:
      total pressure drop in mbar
    • toJson

      public String toJson()
      Get a comprehensive JSON report of column internals sizing.
      Returns:
      JSON string with full internals design results