The neqsim.process.mechanicaldesign.heatexchanger package includes comprehensive TEMA (Tubular Exchanger Manufacturers Association) standard support for shell and tube heat exchanger design.
Table of Contents
- Overview
- TEMA Designations
- TEMA Classes
- Shell and Tube Design Calculator
- Tube Bundle Design
- Baffle Design
- Materials and Sizing
- Cost Estimation
- Examples
Overview
Location: neqsim.process.mechanicaldesign.heatexchanger
Key Classes:
TEMAStandard- TEMA nomenclature and standard valuesShellAndTubeDesignCalculator- Complete design calculationsHeatExchangerMechanicalDesign- Integration with process equipment
Standards Reference:
- TEMA Standards, 10th Edition (2019)
- ASME Section VIII, Division 1
- ASME B31.3 Process Piping
TEMA Designations
TEMA uses a three-letter code to specify heat exchanger configuration:
[Front Head] [Shell] [Rear Head]
A E S = AES type
Front Head Types (Stationary)
| Type | Name | Description | Application |
|---|---|---|---|
| A | Channel & Removable Cover | Bolted cover for tube access | Most common |
| B | Bonnet (Integral Cover) | More economical | Clean services |
| C | Channel Integral with Tubesheet | High pressure | Process exchangers |
| N | Channel Integral (Large) | Similar to C | Large sizes |
| D | Special High Pressure | Breech-lock design | >1000 psi |
Shell Types
| Type | Name | Description | ΔP Factor |
|---|---|---|---|
| E | One-Pass Shell | Most common, simplest | 1.0 |
| F | Two-Pass with Longitudinal Baffle | Better approach temp | 0.8 |
| G | Split Flow | Lower pressure drop | 0.6 |
| H | Double Split Flow | Very low ΔP | 0.5 |
| J | Divided Flow | Condensers | 0.65 |
| K | Kettle Type | Reboilers | 0.7 |
| X | Cross Flow | Gas cooling | 0.3 |
Rear Head Types
| Type | Name | Removable Bundle | Thermal Expansion |
|---|---|---|---|
| L | Fixed like B | No | Poor |
| M | Fixed like A | No | Poor |
| N | Fixed like N | No | Poor |
| P | Outside Packed Floating | Yes | Good |
| S | Floating with Backing Device | Yes | Good |
| T | Pull-Through Floating | Yes | Good |
| U | U-Tube Bundle | Yes | Excellent |
| W | Externally Sealed Floating | Yes | Good |
Common Configurations
| Type | Description | Use Case |
|---|---|---|
| AES | Most versatile, full access | General process |
| BEM | Fixed tubesheet, economical | Clean fluids |
| AEU | U-tube, thermal expansion | High ΔT |
| AKT | Kettle reboiler | Distillation |
| BEU | U-tube with bonnet | Economical |
TEMA Classes
| Class | Service | Application | Cost Factor |
|---|---|---|---|
| R | Severe | Refineries, petrochemical | 1.0 (baseline) |
| C | Moderate | Chemical, general process | 0.8 |
| B | Light | HVAC, commercial | 0.6 |
Class R Requirements (Most Stringent)
- Minimum tube wall: 12.7 mm (BWG 18)
- Minimum corrosion allowance: 4.76 mm (3/16”)
- Full radiography on welds
- Hydrostatic test: 1.5× design pressure
Class C Requirements
- Minimum tube wall: 9.5 mm (BWG 20)
- Minimum corrosion allowance: 3.18 mm (1/8”)
- Spot radiography on welds
Class B Requirements
- Minimum tube wall: 6.35 mm (BWG 22)
- Minimum corrosion allowance: 2.11 mm (1/12”)
- Visual examination on welds
Shell and Tube Design Calculator
import neqsim.process.mechanicaldesign.heatexchanger.*;
import neqsim.process.mechanicaldesign.heatexchanger.TEMAStandard.*;
// Create calculator
ShellAndTubeDesignCalculator calc = new ShellAndTubeDesignCalculator();
// Set TEMA configuration
calc.setTemaDesignation("AES");
calc.setTemaClass(TEMAClass.R);
// Set thermal requirements
calc.setRequiredArea(150.0); // m²
// Set design conditions
calc.setShellSidePressure(30.0); // bara
calc.setTubeSidePressure(15.0); // bara
calc.setDesignTemperature(200.0); // °C
// Set tube parameters
calc.setTubeSize(StandardTubeSize.TUBE_3_4_INCH);
calc.setTubeLength(6096.0); // mm (20 ft)
calc.setTubePasses(2);
// Run calculation
calc.calculate();
// Get results
System.out.println("Shell ID: " + calc.getShellInsideDiameter() + " mm");
System.out.println("Shell wall: " + calc.getShellWallThickness() + " mm");
System.out.println("Tube count: " + calc.getTubeCount());
System.out.println("Actual area: " + calc.getActualArea() + " m²");
System.out.println("Baffle count: " + calc.getBaffleCount());
System.out.println("Dry weight: " + calc.getTotalDryWeight() + " kg");
System.out.println("Total cost: $" + calc.getTotalCost());
// Get JSON report
String json = calc.toJson();
Tube Bundle Design
Standard Tube Sizes
| Size | OD (mm) | OD (inch) | Common BWG |
|---|---|---|---|
| 3/8” | 9.525 | 0.375 | 18, 20, 22 |
| 1/2” | 12.7 | 0.500 | 16, 18, 20 |
| 5/8” | 15.875 | 0.625 | 14, 16, 18 |
| 3/4” | 19.05 | 0.750 | 14, 16, 18 |
| 1” | 25.4 | 1.000 | 12, 14, 16 |
Tube Pitch Patterns
| Pattern | Angle | Min Ratio | Heat Transfer | Cleaning |
|---|---|---|---|---|
| Triangular 30° | 30° | 1.25 | Best | Difficult |
| Rotated Triangular 60° | 60° | 1.25 | Good | Moderate |
| Square 90° | 90° | 1.25 | Baseline | Easy |
| Rotated Square 45° | 45° | 1.25 | Good | Moderate |
// Set tube layout
calc.setPitchPattern(TubePitchPattern.TRIANGULAR_30);
calc.setTubePitchRatio(1.25); // Pitch/OD ratio
// Calculate tube count
int tubeCount = TEMAStandard.estimateTubeCount(
610.0, // Shell ID (mm)
19.05, // Tube OD (mm)
23.81, // Tube pitch (mm)
TubePitchPattern.TRIANGULAR_30,
2 // Tube passes
);
Baffle Design
Baffle Types
| Type | Heat Transfer | Pressure Drop | Application |
|---|---|---|---|
| Single Segmental | 1.0 | 1.0 | Standard |
| Double Segmental | 0.75 | 0.6 | Lower ΔP |
| Triple Segmental | 0.5 | 0.4 | Very low ΔP |
| No-Tubes-In-Window | 0.6 | 0.5 | Long spans |
| Disc and Doughnut | 0.5 | 0.55 | Low ΔP |
| Rod Baffles | 0.2 | 0.3 | Vibration control |
Baffle Spacing Limits
Per TEMA standards:
// Minimum baffle spacing
double minSpacing = TEMAStandard.getMinBaffleSpacing(
610.0, // Shell ID (mm)
TEMAClass.R // TEMA class
);
// Maximum baffle spacing
double maxSpacing = TEMAStandard.getMaxBaffleSpacing(610.0);
// Maximum unsupported tube span
double maxSpan = TEMAStandard.getMaxUnsupportedSpan(
19.05, // Tube OD (mm)
"Carbon Steel" // Tube material
);
Baffle Cut
Standard baffle cuts: 15%, 20%, 25%, 30%, 35%, 45%
| Cut | Effect |
|---|---|
| 15-20% | High heat transfer, high ΔP |
| 25% | Standard, balanced |
| 30-35% | Lower ΔP, reduced tube support |
| 45% | Very low ΔP, special applications |
Materials and Sizing
Common Materials
| Material | Grade | Allowable Stress (MPa) | Application |
|---|---|---|---|
| Carbon Steel | SA-516-70 | 137.9 | Shell, tubesheets |
| Carbon Steel | SA-179 | 103.4 | Tubes |
| Stainless | SA-240-316L | 115.1 | Corrosive service |
| Copper-Nickel | SB-111-706 | 75.8 | Seawater |
Shell Wall Thickness
Per ASME Section VIII, Div. 1:
t = (P × R) / (S × E - 0.6 × P) + CA
Where:
t = Wall thickness (mm)
P = Design pressure (MPa)
R = Shell inside radius (mm)
S = Allowable stress (MPa)
E = Joint efficiency
CA = Corrosion allowance (mm)
Tubesheet Thickness
Per TEMA:
t = G × √(0.785 × P / S) / η + CA
Where:
G = Gasket diameter (mm)
P = Design pressure (MPa)
S = Allowable stress (MPa)
η = Ligament efficiency
CA = Corrosion allowance (mm)
Cost Estimation
Weight-Based Estimation
// Get component weights
double shellWeight = calc.getShellWeight();
double tubeWeight = calc.getTubeWeight();
double tubesheetWeight = calc.getTubesheetWeight();
double headWeight = calc.getHeadWeight();
double baffleWeight = calc.getBaffleWeight();
// Total weights
double dryWeight = calc.getTotalDryWeight();
double operatingWeight = calc.getOperatingWeight();
// Cost estimate
double materialCost = calc.getMaterialCost();
double fabricationCost = calc.getFabricationCost();
double totalCost = calc.getTotalCost();
Cost Factors
| Factor | Impact on Cost |
|---|---|
| TEMA Class R vs B | +40% for R |
| Floating head vs fixed | +20-25% |
| Stainless vs carbon | +300-400% |
| Pull-through vs split ring | +5-10% |
| K-shell (kettle) | +30% |
Examples
Example 1: Process Heat Exchanger
// Oil cooler for offshore platform
ShellAndTubeDesignCalculator calc = new ShellAndTubeDesignCalculator();
calc.setTemaDesignation("AES"); // Floating head, easy maintenance
calc.setTemaClass(TEMAClass.R); // Refinery grade
calc.setRequiredArea(200.0);
calc.setShellSidePressure(25.0);
calc.setTubeSidePressure(10.0);
calc.setDesignTemperature(150.0);
calc.setTubeSize(StandardTubeSize.TUBE_3_4_INCH);
calc.setTubeWallThickness(2.108); // BWG 14
calc.setTubeLength(6096.0); // 20 ft
calc.setTubePasses(4);
calc.setShellMaterial("Carbon Steel SA-516-70");
calc.setTubeMaterial("Stainless Steel SA-213-316L");
calc.calculate();
System.out.println(calc.toJson());
Example 2: Reboiler
// Kettle reboiler for distillation column
ShellAndTubeDesignCalculator calc = new ShellAndTubeDesignCalculator();
calc.setTemaDesignation("AKT"); // Kettle type, pull-through
calc.setTemaClass(TEMAClass.R);
calc.setRequiredArea(100.0);
calc.setShellSidePressure(5.0); // Low pressure vapor space
calc.setTubeSidePressure(25.0); // Steam or hot oil
calc.setDesignTemperature(250.0);
calc.calculate();
Example 3: Configuration Selection
// Recommend TEMA configuration
String config = TEMAStandard.recommendConfiguration(
true, // Needs mechanical cleaning
true, // Large temperature difference
false, // Not high pressure
false // Not hazardous
);
// Returns "AES"
// Get configuration details
TEMAConfiguration tema = TEMAStandard.getConfiguration(config);
System.out.println("Description: " + tema.getDescription());
System.out.println("Bundle removable: " + tema.isBundleRemovable());
System.out.println("Good thermal expansion: " + tema.hasGoodThermalExpansion());
System.out.println("Cost factor: " + tema.getCostFactor());
JSON Output Example
{
"temaDesignation": "AES",
"temaClass": "R",
"shell": {
"insideDiameter_mm": 610.0,
"outsideDiameter_mm": 635.0,
"wallThickness_mm": 12.7,
"material": "Carbon Steel SA-516-70"
},
"tubes": {
"count": 344,
"outerDiameter_mm": 19.05,
"wallThickness_mm": 2.108,
"length_mm": 6096.0,
"passes": 2,
"pitch_mm": 23.81,
"pitchPattern": "Triangular 30°",
"material": "Carbon Steel SA-179"
},
"baffles": {
"type": "Single Segmental",
"count": 12,
"spacing_mm": 457.0,
"cut": 0.25
},
"area": {
"required_m2": 150.0,
"actual_m2": 158.4,
"margin": 0.056
},
"weights": {
"shell_kg": 1250.0,
"tubes_kg": 2180.0,
"tubesheets_kg": 580.0,
"heads_kg": 420.0,
"baffles_kg": 180.0,
"totalDry_kg": 4610.0,
"operating_kg": 5840.0
},
"costs": {
"material_USD": 8500.0,
"fabrication_USD": 25500.0,
"total_USD": 34000.0
}
}
See Also
Material lookup and screening flags
ShellAndTubeDesignCalculator loads boolean NACECompliant flags from the
bundled tube-material table. True and false values are preserved for both sides.
The flag is a material screening input; it does not certify a manufactured exchanger
or replace hardness, environmental and fabrication qualification.
Shell grades first resolve in HeatExchangerTubeMaterials, then in
CompressorCasingMaterials for its listed casing-material grades. Tube grades resolve
in the tube-material table. An unknown grade stops calculation instead of reusing
carbon-steel or previously loaded properties. Changing a grade invalidates its
stored stress, screening flag and all derived pressure, geometry, weight and cost
results until the next successful calculation. Invalid numeric results are NaN;
derived counts are -1. Reports
identify the actual loaded grade. The existing temperature derating remains an
approximation requiring code-specific verification.