Class IncrementalZoneAnalysis
java.lang.Object
neqsim.process.mechanicaldesign.heatexchanger.IncrementalZoneAnalysis
- All Implemented Interfaces:
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classRepresents a single incremental zone in the heat exchanger.static enumPhase regime within a zone. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleprivate doubleprivate doubleprivate doubleprivate static final longSerialization version UID.private doubleprivate intprivate doubleprivate doubleprivate doubleprivate doubleprivate booleanprivate intprivate doubleprivate doubleprivate doubleprivate intprivate doubleprivate doubleprivate double -
Constructor Summary
ConstructorsConstructorDescriptionCreates an IncrementalZoneAnalysis with default 20 zones.IncrementalZoneAnalysis(int targetZones) Creates an IncrementalZoneAnalysis with the specified number of zones. -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds a zone to the analysis.private doublecalcOverallU(double hTube, double hShell) Calculates the overall U for a zone using resistance-in-series.private doubleCalculates shell-side HTC for a zone.private doubleCalculates shell-side pressure drop for one zone.private doublecalcSinglePhaseHTC(double massFlux, double density, double viscosity, double cp, double conductivity) Calculates single-phase HTC using Gnielinski or laminar correlation.private doubleCalculates tube-side HTC for a zone based on its phase regime.private doublecalcTubeSideMassFlux(double massFlowRate) Calculates tube-side mass flux.private doubleCalculates tube-side pressure drop for one zone.voidPerforms the incremental zone calculation.private doubleCalculates the LMTD for a zone.voidClears all zones.doubleGets the minimum temperature approach along the exchanger length.intGets the target zone count.doubleGets the total heat duty across all zones.doubleGets the total required heat transfer area.doubleGets the total shell-side pressure drop.doubleGets the total tube-side pressure drop.doubleGets the weighted average overall heat transfer coefficient.Returns a summary of all zone results.getZones()Gets the list of zones.voidsetFouling(double tubeFouling, double shellFouling) Sets fouling resistances.voidsetGeometry(double tubeID, double tubeOD, double tubeLength, int tubeCount, int tubePasses) Sets the tube geometry parameters.voidsetShellGeometry(double shellID, double baffleSpacing, double tubePitch, boolean triangularPitch) Sets the shell-side geometry parameters.voidsetTubeWallConductivity(double conductivity) Sets the tube wall thermal conductivity.toJson()Converts all results to a JSON string.toMap()Returns all computed results as a map.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDSerialization 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 tubestubePasses- 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
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
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
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
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
Calculates tube-side pressure drop for one zone.- Parameters:
zone- the incremental zone- Returns:
- pressure drop for this zone (Pa)
-
calcShellSidePressureDrop
Calculates shell-side pressure drop for one zone.- Parameters:
zone- the incremental zone- Returns:
- pressure drop for this zone (Pa)
-
getZoneResults
-
toMap
-
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))
-