Class IncrementalZoneAnalysis

java.lang.Object
neqsim.process.mechanicaldesign.heatexchanger.IncrementalZoneAnalysis
All Implemented Interfaces:
Serializable

public class IncrementalZoneAnalysis extends Object implements Serializable
Incremental zone-by-zone thermal analysis for heat exchangers.

Divides the heat exchanger into N incremental zones along the tube length, performing local thermodynamic flash calculations at each zone boundary to determine local fluid properties. This is analogous to the "incremental" rating mode in HTRI Xist.

Key capabilities:

  • Adaptive zone sizing — finer resolution near phase boundaries (dew point, bubble point)
  • Local heat transfer coefficient calculation per zone (single-phase, condensing, or boiling)
  • Local pressure drop per zone (single-phase Fanning, two-phase Friedel)
  • Cumulative duty, area, pressure drop tracking
  • Pinch temperature detection (minimum temperature approach along the exchanger)
  • Phase regime identification (superheated, two-phase, subcooled)

Usage pattern:

IncrementalZoneAnalysis analysis = new IncrementalZoneAnalysis(20);
analysis.setGeometry(tubeID, tubeOD, tubeLength, tubeCount, tubePasses);

// Add zones from hot end to cold end with local properties at each boundary
for (int i = 0; i < numZones; i++) {
  IncrementalZone zone = new IncrementalZone();
  zone.setTubeSideProperties(...);
  zone.setShellSideProperties(...);
  zone.setTemperatures(tHotIn, tHotOut, tColdIn, tColdOut);
  zone.setDuty(localDuty);
  analysis.addZone(zone);
}

analysis.calculate();
double totalArea = analysis.getTotalRequiredArea();
double minApproach = analysis.getMinimumApproachTemperature();
Version:
1.0
Author:
NeqSim Development Team
See Also:
  • Field Details

    • serialVersionUID

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

      private double tubeIDm
    • tubeODm

      private double tubeODm
    • tubeLengthm

      private double tubeLengthm
    • tubeCount

      private int tubeCount
    • tubePasses

      private int tubePasses
    • tubePitchm

      private double tubePitchm
    • triangularPitch

      private boolean triangularPitch
    • shellIDm

      private double shellIDm
    • baffleSpacingm

      private double baffleSpacingm
    • tubeWallConductivity

      private double tubeWallConductivity
    • foulingTube

      private double foulingTube
    • foulingShell

      private double foulingShell
    • zones

    • targetZoneCount

      private int targetZoneCount
    • totalRequiredArea

      private double totalRequiredArea
    • totalDuty

      private double totalDuty
    • totalTubeSidePressureDrop

      private double totalTubeSidePressureDrop
    • totalShellSidePressureDrop

      private double totalShellSidePressureDrop
    • minimumApproachTemperature

      private double minimumApproachTemperature
    • weightedAverageU

      private double weightedAverageU
  • Constructor Details

    • IncrementalZoneAnalysis

      public IncrementalZoneAnalysis(int targetZones)
      Creates an IncrementalZoneAnalysis with the specified number of zones.
      Parameters:
      targetZones - target number of zones (minimum 3)
    • IncrementalZoneAnalysis

      public IncrementalZoneAnalysis()
      Creates an IncrementalZoneAnalysis with default 20 zones.
  • Method Details

    • setGeometry

      public void setGeometry(double tubeID, double tubeOD, double tubeLength, int tubeCount, int tubePasses)
      Sets the tube geometry parameters.
      Parameters:
      tubeID - tube inner diameter (m)
      tubeOD - tube outer diameter (m)
      tubeLength - tube length (m)
      tubeCount - number of tubes
      tubePasses - number of tube passes
    • setShellGeometry

      public void setShellGeometry(double shellID, double baffleSpacing, double tubePitch, boolean triangularPitch)
      Sets the shell-side geometry parameters.
      Parameters:
      shellID - shell inside diameter (m)
      baffleSpacing - baffle spacing (m)
      tubePitch - tube pitch (m)
      triangularPitch - true for triangular layout
    • setFouling

      public void setFouling(double tubeFouling, double shellFouling)
      Sets fouling resistances.
      Parameters:
      tubeFouling - tube-side fouling resistance (m2*K/W)
      shellFouling - shell-side fouling resistance (m2*K/W)
    • addZone

      public void addZone(IncrementalZoneAnalysis.IncrementalZone zone)
      Adds a zone to the analysis.
      Parameters:
      zone - the incremental zone to add
    • clearZones

      public void clearZones()
      Clears all zones.
    • calculate

      public void calculate()
      Performs the incremental zone calculation.

      For each zone, calculates local heat transfer coefficients using appropriate correlations (single-phase Gnielinski/Kern, Shah condensation, Gungor-Winterton boiling), local pressure drops (Fanning or Friedel), local LMTD, and local required area.

    • calcTubeSideHTC

      private double calcTubeSideHTC(IncrementalZoneAnalysis.IncrementalZone zone)
      Calculates tube-side HTC for a zone based on its phase regime.
      Parameters:
      zone - the incremental zone
      Returns:
      tube-side HTC (W/(m2*K))
    • calcShellSideHTC

      private double calcShellSideHTC(IncrementalZoneAnalysis.IncrementalZone zone)
      Calculates shell-side HTC for a zone.
      Parameters:
      zone - the incremental zone
      Returns:
      shell-side HTC (W/(m2*K))
    • calcSinglePhaseHTC

      private double calcSinglePhaseHTC(double massFlux, double density, double viscosity, double cp, double conductivity)
      Calculates single-phase HTC using Gnielinski or laminar correlation.
      Parameters:
      massFlux - mass flux (kg/(m2*s))
      density - density (kg/m3)
      viscosity - viscosity (Pa*s)
      cp - heat capacity (J/(kg*K))
      conductivity - thermal conductivity (W/(m*K))
      Returns:
      heat transfer coefficient (W/(m2*K))
    • calcOverallU

      private double calcOverallU(double hTube, double hShell)
      Calculates the overall U for a zone using resistance-in-series.
      Parameters:
      hTube - tube-side HTC (W/(m2*K))
      hShell - shell-side HTC (W/(m2*K))
      Returns:
      overall U based on outer area (W/(m2*K))
    • calcZoneLMTD

      private double calcZoneLMTD(IncrementalZoneAnalysis.IncrementalZone zone)
      Calculates the LMTD for a zone.
      Parameters:
      zone - the incremental zone
      Returns:
      zone LMTD (K)
    • calcTubeSideMassFlux

      private double calcTubeSideMassFlux(double massFlowRate)
      Calculates tube-side mass flux.
      Parameters:
      massFlowRate - tube-side mass flow rate (kg/s)
      Returns:
      mass flux in tubes (kg/(m2*s))
    • calcTubeSidePressureDrop

      private double calcTubeSidePressureDrop(IncrementalZoneAnalysis.IncrementalZone zone)
      Calculates tube-side pressure drop for one zone.
      Parameters:
      zone - the incremental zone
      Returns:
      pressure drop for this zone (Pa)
    • calcShellSidePressureDrop

      private double calcShellSidePressureDrop(IncrementalZoneAnalysis.IncrementalZone zone)
      Calculates shell-side pressure drop for one zone.
      Parameters:
      zone - the incremental zone
      Returns:
      pressure drop for this zone (Pa)
    • getZoneResults

      public List<Map<String,Object>> getZoneResults()
      Returns a summary of all zone results.
      Returns:
      list of zone result maps
    • toMap

      public Map<String,Object> toMap()
      Returns all computed results as a map.
      Returns:
      map of result keys and values
    • toJson

      public String toJson()
      Converts all results to a JSON string.
      Returns:
      JSON string with pretty printing
    • getTotalRequiredArea

      public double getTotalRequiredArea()
      Gets the total required heat transfer area.
      Returns:
      total area (m2)
    • getTotalDuty

      public double getTotalDuty()
      Gets the total heat duty across all zones.
      Returns:
      total duty (W)
    • getMinimumApproachTemperature

      public double getMinimumApproachTemperature()
      Gets the minimum temperature approach along the exchanger length.
      Returns:
      minimum approach temperature (K)
    • getWeightedAverageU

      public double getWeightedAverageU()
      Gets the weighted average overall heat transfer coefficient.
      Returns:
      weighted average U (W/(m2*K))
    • getTotalTubeSidePressureDrop

      public double getTotalTubeSidePressureDrop()
      Gets the total tube-side pressure drop.
      Returns:
      total tube-side pressure drop (Pa)
    • getTotalShellSidePressureDrop

      public double getTotalShellSidePressureDrop()
      Gets the total shell-side pressure drop.
      Returns:
      total shell-side pressure drop (Pa)
    • getZones

      Gets the list of zones.
      Returns:
      list of incremental zones
    • getTargetZoneCount

      public int getTargetZoneCount()
      Gets the target zone count.
      Returns:
      target number of zones
    • setTubeWallConductivity

      public void setTubeWallConductivity(double conductivity)
      Sets the tube wall thermal conductivity.
      Parameters:
      conductivity - conductivity (W/(m*K))