Air-cooled exchanger (fin-fan)
API 661 air-cooled heat exchanger: finned-tube bundles with plug-type or bolted cover-plate box headers, galvanised plenums and fan rings, forced- or induced-draft fans with V-belt drives, vertical TEFC motors, belt guards and vibration switches, optional top louvres. Column structure with bracing, header walkways with handrails and caged ladders, inlet and outlet manifolds across the bays. Fans spin while running.
Installation
Copies thermal/air-cooled-exchanger.tsx and the shared lib/ into src/components/deck-twin/. Needs three, @react-three/fiber and @react-three/drei. See installation for the manual route.
Usage
import { Canvas } from '@react-three/fiber'
import { OrbitControls } from '@react-three/drei'
import { Stage } from './components/deck-twin/lib/stage'
import { AirCooledExchanger } from './components/deck-twin/thermal/air-cooled-exchanger'
export default function Scene() {
return (
<Canvas shadows camera={{ position: [8, 5, 9], fov: 35 }}>
<Stage>
<AirCooledExchanger />
</Stage>
<OrbitControls makeDefault />
</Canvas>
)
}
Props
| Prop | Type | Default | Range |
|---|---|---|---|
bays | number | null | 1 – 6 |
fansPerBay | 1 | 2 | 3 | null | |
tubeLength | number (m) | null | 4 – 15 |
bayWidth | number (m) | null | 1.5 – 4.5 |
rows | number | null | 3 – 10 |
draft | "forced" | "induced" | null | |
height | number (m) | null | 3 – 10 |
passes | 1 | 2 | null | |
louvres | boolean | null | |
header | "plug" | "cover-plate" | null | |
inletNps | number (NPS, in) | null | |
outletNps | number (NPS, in) | null | |
rating | 150 | 300 | 600 | 900 | 1500 | 2500 | null | |
kw | number (kW) | null | 7.5 – 75 |
running | boolean | null | |
tag | string | null | |
...group | position, rotation, scale… |
P&ID
Rectangle (the finned-tube bundle, often with a zig-zag tube line inside) with a fan below it (forced draft) or above it (induced draft), drawn as a propeller or bow-tie on a shaft to a motor (circle with M); louvres as a row of slanted lines over the bundle.
The fan with its motor tells it from a shell-and-tube exchanger. The number of bays and fans is written beside it (e.g. 2 bays × 2 fans).
baysfansPerBaytubeLengthbayWidthrowsdraftpasseslouvresheaderinletNpsoutletNpsratingkwtagTypical suppliers
Chart Industries (Hudson Products, Smithco, Air-X-Changers). The geometry is generic and sized from public standards. It is not vendor CAD.
For agents
Machine-readable entry with props, ranges, defaults and ports:
Or fetch /r/air-cooled-exchanger.json, or copy a ready-made instruction:
Add the Deck Twin "Air-cooled exchanger (fin-fan)" component to this project. Run `npx -y https://decktwin.com/cli/deck-twin-0.2.2.tgz add air-cooled-exchanger` (it copies the file and the shared lib into src/components/deck-twin/), then `npx -y https://decktwin.com/cli/deck-twin-0.2.2.tgz info air-cooled-exchanger` for its props, ranges and ports. Render <AirCooledExchanger /> inside a React Three Fiber <Canvas shadows>, wrapped in <Stage> from src/components/deck-twin/lib/stage. Set props from my data (metres, NPS in inches, ASME class) and leave the rest at defaults. Install three, @react-three/fiber, @react-three/drei and @types/three if they're missing. Full guide: https://decktwin.com/skill/SKILL.md