Class ShellAndTubeDesignCalculator
java.lang.Object
neqsim.process.mechanicaldesign.heatexchanger.ShellAndTubeDesignCalculator
Shell and tube heat exchanger design calculator per TEMA standards.
This calculator performs detailed mechanical design for shell and tube heat exchangers following TEMA (Tubular Exchanger Manufacturers Association) standards. It calculates:
- Tube bundle geometry (tube count, length, passes)
- Shell dimensions and type selection
- Baffle configuration and spacing
- Thermal-hydraulic performance estimates
- Weight and cost estimates
TEMA Classes
- Class R: Severe service (refineries, petrochemical)
- Class C: Moderate service (chemical, process)
- Class B: General service (HVAC, commercial)
Usage Example
ShellAndTubeDesignCalculator calc = new ShellAndTubeDesignCalculator();
calc.setTemaDesignation("AES");
calc.setTemaClass(TEMAClass.R);
calc.setRequiredArea(150.0); // m2
calc.setShellSidePressure(30.0); // bara
calc.setTubeSidePressure(15.0); // bara
calc.setDesignTemperature(200.0); // °C
calc.calculate();
System.out.println("Shell ID: " + calc.getShellInsideDiameter() + " mm");
System.out.println("Tube count: " + calc.getTubeCount());
System.out.println("Total weight: " + calc.getTotalWeight() + " kg");
- Version:
- 1.0
- Author:
- NeqSim Development Team
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate doubleprivate intprivate doubleprivate doubleprivate TEMAStandard.BaffleTypeprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate booleanprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate booleanprivate doubleprivate doubleprivate doubleprivate TEMAStandard.TubePitchPatternprivate doubleprivate doubleprivate doubleprivate doubleprivate Stringprivate Stringprivate intprivate booleanprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate booleanprivate booleanprivate TEMAStandard.TEMAClassprivate Stringprivate ThermalDesignCalculatorprivate doubleprivate doubleprivate doubleprivate intprivate doubleprivate Stringprivate Stringprivate intprivate booleanprivate intprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate doubleprivate booleanprivate doubleprivate doubleprivate doubleprivate TEMAStandard.StandardTubeSizeprivate doubleprivate doubleprivate doubleprivate double -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new ShellAndTubeDesignCalculator with default parameters.Creates a calculator from existing heat exchanger equipment. -
Method Summary
Modifier and TypeMethodDescriptionvoidPerforms the complete TEMA-based design calculation.private voidCalculates baffle parameters.private voidCalculates cost estimates.private voidCalculates hydrostatic test pressure per ASME VIII UG-99.private voidBack-calculates Maximum Allowable Working Pressure (MAWP) for shell and tube sides.private voidCalculates nozzle reinforcement per ASME VIII UG-37.private voidCalculates shell dimensions.private voidPerforms thermal-hydraulic calculations using the ThermalDesignCalculator.private voidCalculates tube bundle parameters.private voidCalculates tubesheet thickness per ASME VIII UHX-13 for fixed tubesheet exchangers.private voidCalculates component weights.private doubleEstimates tubesheet thickness per TEMA/ASME.doubleGets actual calculated area.private doublegetAllowableStress(String material, double temperature) Gets allowable stress for material at temperature.Gets the list of applied design standards.intGets baffle count.doubleGets baffle spacing in mm.doubleGets H2S partial pressure.doubleGets hydrostatic test pressure for the shell side per UG-99.doubleGets hydrostatic test pressure for the tube side per UG-99.doubleGets MAWP for the shell side per ASME UG-27.doubleGets MAWP for the tube side.Gets the list of NACE compliance issues.doubleGets the nozzle reinforcement available area.doubleGets operating weight in kg.doubleGets required area.doubleGets shell inside diameter in mm.doubleGets shell joint efficiency.Gets the shell material grade.doubleGets shell outside diameter in mm.doubleGets shell wall thickness in mm.Gets TEMA class.Gets TEMA designation.Gets the thermal design calculator, available after calculate() when fluid properties are set.doubleGets total estimated cost in USD.doubleGets total dry weight in kg.intGets tube count.Gets the tube material grade.doubleGets tubesheet thickness per ASME UHX-13.doubleGets the tube thermal conductivity.Gets the vibration screening result, available after calculate() when fluid properties are set.booleanChecks whether thermal-hydraulic data is available.booleanGets whether the nozzle reinforcement is adequate per UG-37.booleanGets whether the shell material is NACE compliant.booleanGets whether sour service assessment is enabled.booleanGets whether sour service is required per NACE MR0175.booleanGets whether the tube material is NACE compliant.private voidloadMaterialFromDB(String materialGrade, boolean isShell) Loads a single material's properties from the database.private voidLoads material properties from HeatExchangerTubeMaterials database table.private voidPerforms NACE MR0175/ISO 15156 sour service assessment.private voidPerforms flow-induced vibration screening per TEMA RCB-4.6.private doubleroundToStandardPlateThickness(double thickness) Rounds to standard plate thickness.private doubleroundToStandardShellSize(double diameter) Rounds to standard shell sizes (pipe sizes).voidsetDesignTemperature(double temperature) Sets design temperature in °C.voidsetFoulingShell(double fouling) Sets shell-side fouling resistance.voidsetFoulingTube(double fouling) Sets tube-side fouling resistance.voidsetH2sPartialPressure(double pressure) Sets the H2S partial pressure for sour service determination.voidsetNozzleDiameter(double diameter) Sets the nozzle diameter for reinforcement calculations.voidsetNozzleWallThickness(double thickness) Sets the nozzle wall thickness.voidsetRequiredArea(double area) Sets required heat transfer area in m2.voidsetShellJointEfficiency(double efficiency) Sets shell joint efficiency per ASME VIII.voidsetShellMaterialGrade(String grade) Sets the shell material grade for property lookup.voidsetShellSideFluidProperties(double density, double viscosity, double cp, double conductivity, double massFlowRate) Sets shell-side fluid properties for thermal-hydraulic calculations.voidSets the shell-side thermal analysis method (Kern or Bell-Delaware).voidsetShellSidePressure(double pressure) Sets shell side design pressure in bara.voidsetSourServiceAssessment(boolean enabled) Enables or disables sour service assessment per NACE MR0175.voidsetTemaClass(TEMAStandard.TEMAClass temaClass) Sets TEMA class.voidsetTemaDesignation(String designation) Sets TEMA designation (e.g., "AES").voidsetTubeLength(double length) Sets tube length in mm.voidsetTubeMaterialGrade(String grade) Sets the tube material grade for property lookup.voidsetTubePasses(int passes) Sets number of tube passes.voidsetTubeSideFluidProperties(double density, double viscosity, double cp, double conductivity, double massFlowRate, boolean heating) Sets tube-side fluid properties for thermal-hydraulic calculations.voidsetTubeSidePressure(double pressure) Sets tube side design pressure in bara.voidsetTubeSize(TEMAStandard.StandardTubeSize tubeSize) Sets tube size.toJson()Converts results to JSON.toMap()Converts results to a map.
-
Field Details
-
temaDesignation
-
temaClass
-
requiredArea
private double requiredArea -
shellSidePressure
private double shellSidePressure -
tubeSidePressure
private double tubeSidePressure -
designTemperature
private double designTemperature -
shellMaterial
-
tubeMaterial
-
corrosionAllowanceShell
private double corrosionAllowanceShell -
corrosionAllowanceTube
private double corrosionAllowanceTube -
tubeSize
-
tubeWallThickness
private double tubeWallThickness -
tubeLength
private double tubeLength -
tubePasses
private int tubePasses -
pitchPattern
-
tubePitchRatio
private double tubePitchRatio -
baffleType
-
baffleCut
private double baffleCut -
baffleCount
private int baffleCount -
shellInsideDiameter
private double shellInsideDiameter -
shellOutsideDiameter
private double shellOutsideDiameter -
shellWallThickness
private double shellWallThickness -
tubeCount
private int tubeCount -
actualArea
private double actualArea -
baffleSpacing
private double baffleSpacing -
tubePitch
private double tubePitch -
shellWeight
private double shellWeight -
tubeWeight
private double tubeWeight -
tubesheetWeight
private double tubesheetWeight -
headWeight
private double headWeight -
baffleWeight
private double baffleWeight -
totalDryWeight
private double totalDryWeight -
operatingWeight
private double operatingWeight -
materialCost
private double materialCost -
fabricationCost
private double fabricationCost -
totalCost
private double totalCost -
tubesheetThicknessUHX
private double tubesheetThicknessUHX -
nozzleReinforcementArea
private double nozzleReinforcementArea -
nozzleReinforcementAdequate
private boolean nozzleReinforcementAdequate -
mawpShellSide
private double mawpShellSide -
mawpTubeSide
private double mawpTubeSide -
hydroTestPressureShell
private double hydroTestPressureShell -
hydroTestPressureTube
private double hydroTestPressureTube -
shellJointEfficiency
private double shellJointEfficiency -
shellMaterialGrade
-
tubeMaterialGrade
-
shellAllowableStress
private double shellAllowableStress -
tubeAllowableStress
private double tubeAllowableStress -
tubeThermalConductivity
private double tubeThermalConductivity -
shellSmys
private double shellSmys -
tubeSmys
private double tubeSmys -
sourServiceAssessment
private boolean sourServiceAssessment -
shellNACECompliant
private boolean shellNACECompliant -
tubeNACECompliant
private boolean tubeNACECompliant -
h2sPartialPressure
private double h2sPartialPressure -
sourServiceRequired
private boolean sourServiceRequired -
shellMaxHardnessHV
private int shellMaxHardnessHV -
tubeMaxHardnessHV
private int tubeMaxHardnessHV -
appliedStandards
-
naceIssues
-
nozzleDiameter
private double nozzleDiameter -
nozzleWallThickness
private double nozzleWallThickness -
thermalCalculator
-
hasThermalData
private boolean hasThermalData -
tubeSideDensity
private double tubeSideDensity -
tubeSideViscosity
private double tubeSideViscosity -
tubeSideCp
private double tubeSideCp -
tubeSideConductivity
private double tubeSideConductivity -
tubeSideMassFlowRate
private double tubeSideMassFlowRate -
tubeSideHeating
private boolean tubeSideHeating -
shellSideDensity
private double shellSideDensity -
shellSideViscosity
private double shellSideViscosity -
shellSideCp
private double shellSideCp -
shellSideConductivity
private double shellSideConductivity -
shellSideMassFlowRate
private double shellSideMassFlowRate -
foulingTube
private double foulingTube -
foulingShell
private double foulingShell -
shellSideMethod
-
vibrationResult
-
-
Constructor Details
-
ShellAndTubeDesignCalculator
public ShellAndTubeDesignCalculator()Creates a new ShellAndTubeDesignCalculator with default parameters. -
ShellAndTubeDesignCalculator
Creates a calculator from existing heat exchanger equipment.- Parameters:
equipment- heat exchanger equipment
-
-
Method Details
-
calculate
public void calculate()Performs the complete TEMA-based design calculation. -
calculateTubeBundle
private void calculateTubeBundle()Calculates tube bundle parameters. -
calculateShellDimensions
Calculates shell dimensions.- Parameters:
config- TEMA configuration
-
calculateBaffles
private void calculateBaffles()Calculates baffle parameters. -
calculateWeights
Calculates component weights.- Parameters:
config- TEMA configuration
-
estimateTubesheetThickness
private double estimateTubesheetThickness()Estimates tubesheet thickness per TEMA/ASME.- Returns:
- tubesheet thickness in mm
-
calculateCosts
Calculates cost estimates.- Parameters:
config- TEMA configuration
-
getAllowableStress
Gets allowable stress for material at temperature. Uses database value if loaded, otherwise falls back to simplified ASME Section II tables.- Parameters:
material- material nametemperature- temperature in degrees C- Returns:
- allowable stress in MPa
-
loadMaterialProperties
private void loadMaterialProperties()Loads material properties from HeatExchangerTubeMaterials database table. -
loadMaterialFromDB
Loads a single material's properties from the database.- Parameters:
materialGrade- the material grade to look upisShell- true if this is a shell material, false for tube
-
calculateTubesheetThicknessUHX
private void calculateTubesheetThicknessUHX()Calculates tubesheet thickness per ASME VIII UHX-13 for fixed tubesheet exchangers. -
calculateNozzleReinforcement
private void calculateNozzleReinforcement()Calculates nozzle reinforcement per ASME VIII UG-37. -
calculateMAWP
private void calculateMAWP()Back-calculates Maximum Allowable Working Pressure (MAWP) for shell and tube sides. -
calculateHydroTestPressure
private void calculateHydroTestPressure()Calculates hydrostatic test pressure per ASME VIII UG-99. -
performNACEAssessment
private void performNACEAssessment()Performs NACE MR0175/ISO 15156 sour service assessment. -
roundToStandardShellSize
private double roundToStandardShellSize(double diameter) Rounds to standard shell sizes (pipe sizes).- Parameters:
diameter- diameter in mm- Returns:
- standard diameter
-
roundToStandardPlateThickness
private double roundToStandardPlateThickness(double thickness) Rounds to standard plate thickness.- Parameters:
thickness- thickness in mm- Returns:
- standard thickness
-
calculateThermalHydraulic
private void calculateThermalHydraulic()Performs thermal-hydraulic calculations using the ThermalDesignCalculator. Requires fluid properties to have been set via setTubeSideFluidProperties and setShellSideFluidProperties. -
performVibrationScreening
private void performVibrationScreening()Performs flow-induced vibration screening per TEMA RCB-4.6. -
setTubeSideFluidProperties
public void setTubeSideFluidProperties(double density, double viscosity, double cp, double conductivity, double massFlowRate, boolean heating) Sets tube-side fluid properties for thermal-hydraulic calculations.- Parameters:
density- density (kg/m3)viscosity- dynamic viscosity (Pa*s)cp- heat capacity (J/(kg*K))conductivity- thermal conductivity (W/(m*K))massFlowRate- mass flow rate (kg/s)heating- true if fluid is being heated
-
setShellSideFluidProperties
public void setShellSideFluidProperties(double density, double viscosity, double cp, double conductivity, double massFlowRate) Sets shell-side fluid properties for thermal-hydraulic calculations.- Parameters:
density- density (kg/m3)viscosity- dynamic viscosity (Pa*s)cp- heat capacity (J/(kg*K))conductivity- thermal conductivity (W/(m*K))massFlowRate- mass flow rate (kg/s)
-
setFoulingTube
public void setFoulingTube(double fouling) Sets tube-side fouling resistance.- Parameters:
fouling- fouling resistance (m2*K/W)
-
setFoulingShell
public void setFoulingShell(double fouling) Sets shell-side fouling resistance.- Parameters:
fouling- fouling resistance (m2*K/W)
-
setShellSideMethod
Sets the shell-side thermal analysis method (Kern or Bell-Delaware).- Parameters:
method- analysis method
-
getThermalCalculator
Gets the thermal design calculator, available after calculate() when fluid properties are set.- Returns:
- thermal calculator, or null if no thermal data provided
-
getVibrationResult
Gets the vibration screening result, available after calculate() when fluid properties are set.- Returns:
- vibration result, or null if screening was not performed
-
hasThermalData
public boolean hasThermalData()Checks whether thermal-hydraulic data is available.- Returns:
- true if fluid property data has been supplied
-
setTemaDesignation
Sets TEMA designation (e.g., "AES").- Parameters:
designation- TEMA designation
-
getTemaDesignation
-
setTemaClass
Sets TEMA class.- Parameters:
temaClass- TEMA class
-
getTemaClass
-
setRequiredArea
public void setRequiredArea(double area) Sets required heat transfer area in m2.- Parameters:
area- required area
-
getRequiredArea
public double getRequiredArea()Gets required area.- Returns:
- required area in m2
-
getActualArea
public double getActualArea()Gets actual calculated area.- Returns:
- actual area in m2
-
setShellSidePressure
public void setShellSidePressure(double pressure) Sets shell side design pressure in bara.- Parameters:
pressure- pressure
-
setTubeSidePressure
public void setTubeSidePressure(double pressure) Sets tube side design pressure in bara.- Parameters:
pressure- pressure
-
setDesignTemperature
public void setDesignTemperature(double temperature) Sets design temperature in °C.- Parameters:
temperature- temperature
-
setTubeSize
Sets tube size.- Parameters:
tubeSize- standard tube size
-
setTubeLength
public void setTubeLength(double length) Sets tube length in mm.- Parameters:
length- tube length
-
setTubePasses
public void setTubePasses(int passes) Sets number of tube passes.- Parameters:
passes- tube passes
-
getShellInsideDiameter
public double getShellInsideDiameter()Gets shell inside diameter in mm.- Returns:
- shell ID
-
getShellOutsideDiameter
public double getShellOutsideDiameter()Gets shell outside diameter in mm.- Returns:
- shell OD
-
getShellWallThickness
public double getShellWallThickness()Gets shell wall thickness in mm.- Returns:
- shell wall thickness
-
getTubeCount
public int getTubeCount()Gets tube count.- Returns:
- tube count
-
getBaffleCount
public int getBaffleCount()Gets baffle count.- Returns:
- baffle count
-
getBaffleSpacing
public double getBaffleSpacing()Gets baffle spacing in mm.- Returns:
- baffle spacing
-
getTotalDryWeight
public double getTotalDryWeight()Gets total dry weight in kg.- Returns:
- dry weight
-
getOperatingWeight
public double getOperatingWeight()Gets operating weight in kg.- Returns:
- operating weight
-
getTotalCost
public double getTotalCost()Gets total estimated cost in USD.- Returns:
- total cost
-
toMap
-
toJson
-
getTubesheetThicknessUHX
public double getTubesheetThicknessUHX()Gets tubesheet thickness per ASME UHX-13.- Returns:
- tubesheet thickness in mm
-
getMawpShellSide
public double getMawpShellSide()Gets MAWP for the shell side per ASME UG-27.- Returns:
- MAWP in bara
-
getMawpTubeSide
public double getMawpTubeSide()Gets MAWP for the tube side.- Returns:
- MAWP in bara
-
getHydroTestPressureShell
public double getHydroTestPressureShell()Gets hydrostatic test pressure for the shell side per UG-99.- Returns:
- hydro test pressure in bara
-
getHydroTestPressureTube
public double getHydroTestPressureTube()Gets hydrostatic test pressure for the tube side per UG-99.- Returns:
- hydro test pressure in bara
-
isNozzleReinforcementAdequate
public boolean isNozzleReinforcementAdequate()Gets whether the nozzle reinforcement is adequate per UG-37.- Returns:
- true if adequate
-
getNozzleReinforcementArea
public double getNozzleReinforcementArea()Gets the nozzle reinforcement available area.- Returns:
- available reinforcement area in mm2
-
setShellMaterialGrade
Sets the shell material grade for property lookup.- Parameters:
grade- material grade (e.g., "SA-516-70")
-
getShellMaterialGrade
-
setTubeMaterialGrade
Sets the tube material grade for property lookup.- Parameters:
grade- material grade (e.g., "SA-179", "SA-213-TP316")
-
getTubeMaterialGrade
-
getTubeThermalConductivity
public double getTubeThermalConductivity()Gets the tube thermal conductivity.- Returns:
- thermal conductivity in W/mK
-
setSourServiceAssessment
public void setSourServiceAssessment(boolean enabled) Enables or disables sour service assessment per NACE MR0175.- Parameters:
enabled- true to enable NACE assessment
-
isSourServiceAssessment
public boolean isSourServiceAssessment()Gets whether sour service assessment is enabled.- Returns:
- true if NACE assessment is enabled
-
setH2sPartialPressure
public void setH2sPartialPressure(double pressure) Sets the H2S partial pressure for sour service determination.- Parameters:
pressure- H2S partial pressure in bar
-
getH2sPartialPressure
public double getH2sPartialPressure()Gets H2S partial pressure.- Returns:
- H2S partial pressure in bar
-
isSourServiceRequired
public boolean isSourServiceRequired()Gets whether sour service is required per NACE MR0175.- Returns:
- true if H2S levels require sour service materials
-
getNaceIssues
-
getAppliedStandards
-
setShellJointEfficiency
public void setShellJointEfficiency(double efficiency) Sets shell joint efficiency per ASME VIII.- Parameters:
efficiency- joint efficiency (0.65 to 1.0)
-
getShellJointEfficiency
public double getShellJointEfficiency()Gets shell joint efficiency.- Returns:
- joint efficiency
-
setNozzleDiameter
public void setNozzleDiameter(double diameter) Sets the nozzle diameter for reinforcement calculations.- Parameters:
diameter- nozzle diameter in mm
-
setNozzleWallThickness
public void setNozzleWallThickness(double thickness) Sets the nozzle wall thickness.- Parameters:
thickness- nozzle wall thickness in mm
-
isShellNACECompliant
public boolean isShellNACECompliant()Gets whether the shell material is NACE compliant.- Returns:
- true if compliant
-
isTubeNACECompliant
public boolean isTubeNACECompliant()Gets whether the tube material is NACE compliant.- Returns:
- true if compliant
-