# Gas-turbine-driven compressor train

Mechanical-drive train: a two-shaft gas turbine in an acoustic enclosure (filter house with weather hoods and filter stages, exhaust silencer and stack, fuel gas skid, lube console with fin-fan cooler, internal monorail) driving an API 617 barrel or horizontally split centrifugal compressor through a guarded coupling, with anti-surge valve, suction strainer and dry gas seal panel. A preset of `centrifugal-compressor` with the gas-turbine driver.

**Standards:** API 616, API 617, API 614, API 692, API 671, ASME B16.5

## Installation

```bash
npx -y https://decktwin.com/cli/deck-twin-0.2.2.tgz add gas-turbine-compressor
```

Copies `rotating/gas-turbine-compressor.tsx`, any helper files it imports and the shared `lib/` into `src/components/deck-twin/`. Needs `three`, `@react-three/fiber` and `@react-three/drei`.

## Usage

```tsx
import { Canvas } from '@react-three/fiber'
import { OrbitControls } from '@react-three/drei'
import { Stage } from './components/deck-twin/lib/stage'
import { GasTurbineCompressor } from './components/deck-twin/rotating/gas-turbine-compressor'

export default function Scene() {
  return (
    <Canvas shadows camera={{ position: [8, 5, 9], fov: 35 }}>
      <Stage>
        <GasTurbineCompressor doorsOpen={true} />
      </Stage>
      <OrbitControls makeDefault />
    </Canvas>
  )
}
```

## Props

| Prop | Type | Default | Range |
| --- | --- | --- | --- |
| `suctionNps` | `number (NPS, in)` | `16` |  |
| `dischargeNps` | `number (NPS, in)` | `12` |  |
| `rating` | `150 \| 300 \| 600 \| 900 \| 1500 \| 2500` | `600` |  |
| `mw` | `number (MW)` | `12` | 2 – 40 |
| `casing` | `"barrel" \| "split"` | `"barrel"` |  |
| `nozzles` | `"up" \| "down"` | `"up"` |  |
| `cutaway` | `boolean` | `false` |  |
| `doorsOpen` | `boolean` | `false` |  |
| `running` | `boolean` | `true` |  |
| `tag` | `string` | `"K-2300"` |  |
| `...group` | position, rotation, scale… |  |  |

## Ports

Flange faces in the component's local frame, metres. Origin: centre of the footprint at deck level (y = 0).

| Id | Label | Position | Direction | Size | Class |
| --- | --- | --- | --- | --- | --- |
| `suction` | Suction | 4.554, 3.682, 0.000 | 0, 1, 0 | 16" | 600 |
| `discharge` | Discharge | 3.489, 3.682, 0.000 | 0, 1, 0 | 12" | 600 |
| `recycle` | Anti-surge recycle | 3.489, 3.034, -1.511 | 0, 0, -1 | 6" | 600 |
| `fuel-gas` | Fuel gas | -6.215, 0.900, -2.750 | 0, 0, -1 | 3" | 600 |

## P&ID

A gas turbine (narrowing trapezoid, combustor box with the fuel line, widening trapezoid) coupled by its shaft to a compressor trapezoid, wide end at suction; anti-surge recycle and blowdown lines around the compressor.

tag K · tag C · tag GT · ISO 10628-2 / PIP PIC001

A compressor coupled to a motor circle with M is the motor-driven version (centrifugal-compressor). A turbine coupled to a G circle is a gas-turbine-generator.

API 616 gas turbine + API 617 compressor datasheets fields and the props they set:

| Field | Prop |
| --- | --- |
| Suction nozzle size | `suctionNps` |
| Discharge nozzle size | `dischargeNps` |
| Flange rating | `rating` |
| Turbine rated power | `mw` |
| Casing type | `casing` |
| Nozzle orientation | `nozzles` |
| Tag number | `tag` |

## Typical suppliers

Solar Turbines · Siemens Energy · Baker Hughes. The geometry is generic and sized from public standards. It is not vendor CAD.

## Source

`rotating/gas-turbine-compressor.tsx`. This is the component file only: it imports shared code, so install it with the command above rather than pasting it alone. https://decktwin.com/r/gas-turbine-compressor.json has every file.

```tsx
// Gas-turbine-driven centrifugal compressor train (API 616 driver, API 617 compressor): the centrifugal-compressor package with a two-shaft GT in its own enclosure.
import type { GroupProps } from '../lib/mesh'
import type { Port } from '../lib/ports'
import type { Rating } from '../lib/standards'
import { CentrifugalCompressor, ports as trainPorts } from './centrifugal-compressor'

export interface GasTurbineCompressorProps {
  suctionNps?: number
  dischargeNps?: number
  rating?: Rating
  /** turbine shaft power, MW */
  mw?: number
  casing?: 'barrel' | 'split'
  nozzles?: 'up' | 'down'
  /** leave out the +Z enclosure wall */
  cutaway?: boolean
  doorsOpen?: boolean
  tag?: string
  running?: boolean
}

export const defaults = {
  suctionNps: 16,
  dischargeNps: 12,
  rating: 600 as Rating,
  mw: 12,
  casing: 'barrel' as 'barrel' | 'split',
  nozzles: 'up' as 'up' | 'down',
  cutaway: false,
  doorsOpen: false,
  tag: 'K-2300',
  running: true,
}

export function ports(p: GasTurbineCompressorProps = {}): Port[] {
  return trainPorts({ ...defaults, ...p, driver: 'gas-turbine' })
}

export function GasTurbineCompressor(props: GasTurbineCompressorProps & GroupProps) {
  return <CentrifugalCompressor {...defaults} {...props} driver="gas-turbine" />
}

export default GasTurbineCompressor
```
