Offshore deck module

Offshore topsides deck section: primary girders (HEB or welded plate girders) on the leg lines with fin-plate connections and web stiffeners, IPE secondaries, 12 mm deck plate with grated drain gutters and 3" drain outlets through liquid-seal pots (ports drain-1…n, flange faces pointing down) or bar grating, coaming, ISO 14122 guard rail with self-closing gated openings, escape-route markings, CHS legs with node cans and chevron bracing below, and stub columns up to a stacked module. Walking surface: top of the floor at y = 0, so equipment placed at y = 0 sits on it. Girders and legs go below (leg foot at y = -legHeight, to sit on a jacket at y = 0); stack another module at y = upperDeckAt with legHeight: 0 (otherwise its legs run down through this floor).

ISO 19902ISO 14122-3EN 10365NORSOK N-004NORSOK C-001
Drag to orbit, scroll to zoom
Parameters
– m
– m
– m
– m
– m
– m
– m
– m

Installation

$npx -y https://decktwin.com/cli/deck-twin-0.2.2.tgz add deck-module

Copies structure/deck-module.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 { DeckModule } from './components/deck-twin/structure/deck-module'

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

Props

PropTypeDefaultRange
lengthnumber (m)null6 – 80
widthnumber (m)null4 – 60
floor"plate" | "grating"null
primary"HEB 500" | "HEB 600" | "HEB 800" | "HEB 1000" | "W36x300" | "PG 1200" | "PG 1600" | "PG 2000"null
secondary"IPE 200" | "IPE 240" | "IPE 300" | "IPE 360" | "IPE 400" | "HEA 300"null
secondarySpacingnumber (m)null0.6 – 3
legs4 | 6 | 8null
legSpanXnumber (m)null4 – 70
legSpanZnumber (m)null3 – 50
legHeightnumber (m)null0 – 20
legDiameternumber (m)null0.6 – 2.5
upperDeckAtnumber (m)null0 – 15
column"HEB 300" | "HEB 400" | "HEB 500" | "HEB 600"null
handrailsbooleannull
railMinXbooleannull
railMaxXbooleannull
railMinZbooleannull
railMaxZbooleannull
drainsbooleannull
markingsbooleannull
...groupposition, rotation, scale…

P&ID

P&ID symbol for deck-module

Plan view: the deck outline with dash-dot structural grid lines (rows and columns, e.g. A–D and 1–6) and circles at the jacket leg positions; deck elevations (EL +28.000 TOS) written in the corners.

Layout plan convention (structural / plot plan drawings); ISO 19902

Not on P&IDs. Equipment layouts use this outline as the background; the grid labels locate equipment. A smaller framed rectangle with bracing is a module-frame.

Structural design basis / deck framing drawing (ISO 19902, NORSOK N-004) fields and the props they set
Deck lengthlength
Deck widthwidth
Floor typefloor
Primary girderprimary
Secondary beamsecondary
Secondary spacingsecondarySpacing
Number of legslegs
Leg spacing XlegSpanX
Leg spacing ZlegSpanZ
Leg diameterlegDiameter

Typical suppliers

Fabricated to project specification. 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:

$npx -y https://decktwin.com/cli/deck-twin-0.2.2.tgz info deck-module

Or fetch /r/deck-module.json, or copy a ready-made instruction:

Add the Deck Twin "Offshore deck module" component to this project. Run `npx -y https://decktwin.com/cli/deck-twin-0.2.2.tgz add deck-module` (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 deck-module` for its props, ranges and ports. Render <DeckModule /> 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