Crude oil export terminal

Onshore crude receiving and export terminal: the 12" pipeline arrives through block-valve station PVS-1001 and ESDV-1001 into pig receiver L-1010, then passes basket strainer STR-1003 into fiscal metering skid X-1100, proved by compact prover X-1150. PCV-1104 lets down into the receipt header on the pipe rack, which fills dome-roof tanks TK-2001 and TK-2002 inside bund BW-2000. The tank outlets join the suction header on the rack to duty/standby loading pumps P-3001A/B, which deliver through ESDV-3101 to marine loading arm MLA-3101 at the jetty edge, with a branch through PCV-3201 to truck loading bay X-3200. Bund drainage goes to oily-water separator S-4001, receiver relief to vent stack VS-1020, and two fire monitors on the firewater ring cover the tanks.

Check
No issues. Every port is connected and nothing overlaps or floats.
Install everything it uses
$npx -y https://decktwin.com/cli/deck-twin-0.2.2.tgz assemble crude-export-terminal.plant.json
plant.json
{
  "name": "Crude oil export terminal",
  "description": "Onshore crude receiving and export terminal: the 12\" pipeline arrives through block-valve station PVS-1001 and ESDV-1001 into pig receiver L-1010, then passes basket strainer STR-1003 into fiscal metering skid X-1100, proved by compact prover X-1150. PCV-1104 lets down into the receipt header on the pipe rack, which fills dome-roof tanks TK-2001 and TK-2002 inside bund BW-2000. The tank outlets join the suction header on the rack to duty/standby loading pumps P-3001A/B, which deliver through ESDV-3101 to marine loading arm MLA-3101 at the jetty edge, with a branch through PCV-3201 to truck loading bay X-3200. Bund drainage goes to oily-water separator S-4001, receiver relief to vent stack VS-1020, and two fire monitors on the firewater ring cover the tanks.",
  "source": "Deck Twin example (illustrative layout, not a real asset)",
  "camera": {
    "target": [
      0,
      0,
      -11
    ],
    "radius": 42.5,
    "direction": [
      -0.45,
      0.8,
      1
    ]
  },
  "items": [
    {
      "tag": "PVS-1001",
      "component": "pipeline-valve-station",
      "position": [
        -66,
        0,
        -34
      ],
      "props": {
        "nps": 12,
        "rating": 600,
        "tag": "PVS-1001"
      }
    },
    {
      "tag": "L-1010",
      "component": "pig-launcher",
      "position": [
        -49,
        0,
        -34
      ],
      "props": {
        "service": "receiver",
        "nps": 12,
        "rating": 600,
        "kickerNps": 12,
        "length": 3.2,
        "tag": "L-1010"
      }
    },
    {
      "tag": "VS-1020",
      "component": "vent-stack",
      "position": [
        -48.47,
        0,
        -42
      ],
      "rotation": 90,
      "props": {
        "nps": 2,
        "height": 10,
        "tag": "VS-1020"
      }
    },
    {
      "tag": "X-1100",
      "component": "metering-skid",
      "position": [
        -28,
        0,
        -32.219
      ],
      "props": {
        "runs": 3,
        "meterType": "ultrasonic",
        "headerNps": 12,
        "runNps": 8,
        "rating": 600,
        "tag": "X-1100"
      }
    },
    {
      "tag": "X-1150",
      "component": "compact-prover",
      "position": [
        -17,
        -0.08,
        -31
      ],
      "props": {
        "nps": 8,
        "rating": 600,
        "tag": "X-1150"
      }
    },
    {
      "tag": "PR-1",
      "component": "pipe-rack",
      "position": [
        15,
        0,
        -24
      ],
      "props": {
        "bays": 12,
        "bayLength": 6,
        "width": 6,
        "tiers": 2,
        "firstTier": 5,
        "tierSpacing": 2,
        "cableTray": false,
        "walkway": false
      }
    },
    {
      "tag": "TEE-2011",
      "component": "tee",
      "position": [
        -12,
        7.162,
        -25.5
      ],
      "props": {
        "nps": 12,
        "branchNps": 12,
        "ends": "flanged",
        "rating": 150,
        "branch": "down",
        "service": "oil"
      }
    },
    {
      "tag": "ELB-2012",
      "component": "elbow",
      "position": [
        18,
        7.162,
        -25.5
      ],
      "props": {
        "nps": 12,
        "ends": "flanged",
        "rating": 150,
        "turn": "down",
        "service": "oil"
      }
    },
    {
      "tag": "BW-2000",
      "component": "bund-wall",
      "position": [
        3,
        0,
        0
      ],
      "props": {
        "length": 64,
        "width": 34,
        "height": 1.5,
        "drainNps": 4,
        "tag": "BW-2000"
      }
    },
    {
      "tag": "TK-2001",
      "component": "storage-tank",
      "position": [
        -12,
        0,
        0
      ],
      "rotation": 235,
      "props": {
        "roof": "dome",
        "diameter": 22,
        "height": 14.4,
        "gravity": 0.86,
        "inletNps": 12,
        "outletNps": 12,
        "tag": "TK-2001"
      }
    },
    {
      "tag": "TK-2002",
      "component": "storage-tank",
      "position": [
        18,
        0,
        0
      ],
      "rotation": 235,
      "props": {
        "roof": "dome",
        "diameter": 22,
        "height": 14.4,
        "gravity": 0.86,
        "inletNps": 12,
        "outletNps": 12,
        "tag": "TK-2002"
      }
    },
    {
      "tag": "ELB-2101",
      "component": "elbow",
      "position": [
        -0.16999999999999993,
        5.162,
        -22.5
      ],
      "rotation": 180,
      "props": {
        "nps": 12,
        "ends": "flanged",
        "rating": 150,
        "turn": "down",
        "service": "oil"
      }
    },
    {
      "tag": "TEE-2102",
      "component": "tee",
      "position": [
        29.83,
        5.162,
        -22.5
      ],
      "props": {
        "nps": 12,
        "branchNps": 12,
        "ends": "flanged",
        "rating": 150,
        "branch": "down",
        "service": "oil"
      }
    },
    {
      "tag": "TEE-3001",
      "component": "tee",
      "position": [
        42,
        5.162,
        -22.5
      ],
      "props": {
        "nps": 12,
        "branchNps": 12,
        "ends": "flanged",
        "rating": 150,
        "branch": "down",
        "service": "oil"
      }
    },
    {
      "tag": "P-3001A",
      "component": "centrifugal-pump",
      "position": [
        42,
        0,
        -12
      ],
      "rotation": 90,
      "props": {
        "suctionNps": 12,
        "dischargeNps": 10,
        "kw": 450,
        "tag": "P-3001A"
      }
    },
    {
      "tag": "P-3001B",
      "component": "centrifugal-pump",
      "position": [
        48,
        0,
        -12
      ],
      "rotation": 90,
      "props": {
        "suctionNps": 12,
        "dischargeNps": 10,
        "kw": 450,
        "running": false,
        "tag": "P-3001B"
      }
    },
    {
      "tag": "TEE-3002",
      "component": "tee",
      "position": [
        48,
        3.5,
        -12.532
      ],
      "props": {
        "nps": 10,
        "branchNps": 10,
        "ends": "flanged",
        "rating": 300,
        "branch": "down",
        "service": "oil"
      }
    },
    {
      "tag": "TEE-3003",
      "component": "tee",
      "position": [
        59.9,
        3.5,
        -12.532
      ],
      "props": {
        "nps": 10,
        "branchNps": 4,
        "ends": "flanged",
        "rating": 300,
        "branch": "side",
        "service": "oil"
      }
    },
    {
      "tag": "MLA-3101",
      "component": "marine-loading-arm",
      "position": [
        76,
        0,
        -12.532
      ],
      "rotation": 90,
      "props": {
        "nps": 10,
        "rating": 150,
        "tag": "MLA-3101"
      }
    },
    {
      "tag": "TEE-3201",
      "component": "tee",
      "position": [
        59.9,
        0.75,
        3.3
      ],
      "rotation": 90,
      "props": {
        "nps": 4,
        "branchNps": 4,
        "ends": "flanged",
        "rating": 300,
        "branch": "side",
        "service": "oil"
      }
    },
    {
      "tag": "X-3200",
      "component": "truck-loading-bay",
      "position": [
        70,
        0,
        9
      ],
      "props": {
        "bays": 2,
        "product": "crude",
        "loading": "bottom",
        "nps": 4,
        "tag": "X-3200"
      }
    },
    {
      "tag": "S-4001",
      "component": "oily-water-separator",
      "position": [
        45,
        0,
        15.8
      ],
      "props": {
        "flow": 60,
        "inletNps": 4,
        "oilNps": 3,
        "tag": "S-4001"
      }
    },
    {
      "tag": "FM-7101",
      "component": "fire-monitor",
      "position": [
        -33,
        0,
        0
      ],
      "props": {
        "tag": "FM-7101",
        "slew": 0
      }
    },
    {
      "tag": "FM-7102",
      "component": "fire-monitor",
      "position": [
        38.5,
        0,
        -2
      ],
      "rotation": 180,
      "props": {
        "tag": "FM-7102",
        "slew": 0
      }
    },
    {
      "tag": "B-9001",
      "component": "industrial-building",
      "position": [
        -46,
        0,
        8
      ],
      "props": {
        "kind": "control",
        "length": 16,
        "width": 10,
        "eaves": 4.5,
        "rollerDoors": 0,
        "personnelDoors": 2,
        "tag": "B-9001"
      }
    }
  ],
  "lines": [
    {
      "tag": "12\"-PO-1001-D6A-N",
      "from": {
        "at": [
          -80,
          -1.36,
          -34
        ],
        "label": "FROM PIPELINE"
      },
      "to": "PVS-1001.upstream"
    },
    {
      "tag": "12\"-PO-1002-D6A-N",
      "from": "PVS-1001.downstream",
      "to": "L-1010.mainline",
      "inline": [
        {
          "component": "esd-valve",
          "at": 0.62,
          "tag": "ESDV-1001"
        }
      ]
    },
    {
      "tag": "12\"-PO-1003-D6A-N",
      "from": "L-1010.kicker",
      "to": "X-1100.inlet",
      "supports": false,
      "via": [
        [
          -45.5,
          2.78,
          -34
        ],
        [
          -45.5,
          1.03,
          -34
        ],
        [
          -35.5,
          1.03,
          -34
        ],
        [
          -35.5,
          1.63,
          -34
        ]
      ],
      "inline": [
        {
          "component": "basket-strainer",
          "at": 0.42,
          "tag": "STR-1003"
        }
      ]
    },
    {
      "tag": "2\"-VA-1011-A1A-N",
      "from": "L-1010.psv",
      "to": "VS-1020.inlet"
    },
    {
      "tag": "8\"-PO-1101-D6A-N",
      "from": "X-1100.prover-out",
      "to": "X-1150.inlet"
    },
    {
      "tag": "8\"-PO-1102-D6A-N",
      "from": "X-1150.outlet",
      "to": "X-1100.prover-return",
      "supports": false,
      "via": [
        [
          -13.77,
          0.55,
          -28.6
        ],
        [
          -22.21,
          0.55,
          -28.6
        ],
        [
          -22.21,
          0.55,
          -30.688
        ]
      ]
    },
    {
      "tag": "12\"-PO-1103-D6A-N",
      "from": "X-1100.outlet",
      "to": "TEE-2011.run-a",
      "supports": false,
      "via": [
        [
          -16,
          1.63,
          -34
        ],
        [
          -16,
          7.162,
          -34
        ],
        [
          -16,
          7.162,
          -25.5
        ]
      ],
      "inline": [
        {
          "component": "control-valve",
          "at": 0.12,
          "tag": "PCV-1104"
        }
      ]
    },
    {
      "tag": "12\"-PO-2001-A1A-N",
      "from": "TEE-2011.branch",
      "to": "TK-2001.inlet",
      "elevation": 2.2,
      "inline": [
        {
          "component": "motor-operated-valve",
          "at": 0.45,
          "tag": "MOV-2001"
        }
      ]
    },
    {
      "tag": "12\"-PO-2002-A1A-N",
      "from": "TEE-2011.run-b",
      "to": "ELB-2012.A",
      "supports": false
    },
    {
      "tag": "12\"-PO-2003-A1A-N",
      "from": "ELB-2012.B",
      "to": "TK-2002.inlet",
      "elevation": 2.2,
      "inline": [
        {
          "component": "motor-operated-valve",
          "at": 0.45,
          "tag": "MOV-2002"
        }
      ]
    },
    {
      "tag": "12\"-PO-2101-A1A-N",
      "from": "TK-2001.outlet",
      "to": "ELB-2101.B",
      "elevation": 2.2,
      "inline": [
        {
          "component": "motor-operated-valve",
          "at": 0.3,
          "tag": "MOV-2101"
        }
      ]
    },
    {
      "tag": "12\"-PO-2102-A1A-N",
      "from": "ELB-2101.A",
      "to": "TEE-2102.run-a",
      "supports": false
    },
    {
      "tag": "12\"-PO-2103-A1A-N",
      "from": "TK-2002.outlet",
      "to": "TEE-2102.branch",
      "elevation": 2.2,
      "inline": [
        {
          "component": "motor-operated-valve",
          "at": 0.3,
          "tag": "MOV-2103"
        }
      ]
    },
    {
      "tag": "12\"-PO-2104-A1A-N",
      "from": "TEE-2102.run-b",
      "to": "TEE-3001.run-a",
      "supports": false
    },
    {
      "tag": "12\"-PO-3001-A1A-N",
      "from": "TEE-3001.branch",
      "to": "P-3001A.suction",
      "inline": [
        {
          "component": "gate-valve",
          "at": 0.6
        }
      ]
    },
    {
      "tag": "12\"-PO-3002-A1A-N",
      "from": "TEE-3001.run-b",
      "to": "P-3001B.suction",
      "supports": false,
      "via": [
        [
          48,
          5.162,
          -22.5
        ],
        [
          48,
          0.91,
          -22.5
        ]
      ],
      "inline": [
        {
          "component": "gate-valve",
          "at": 0.75
        }
      ]
    },
    {
      "tag": "10\"-PO-3003-C3A-N",
      "from": "P-3001A.discharge",
      "to": "TEE-3002.run-a",
      "inline": [
        {
          "component": "swing-check-valve",
          "at": 0.12
        }
      ]
    },
    {
      "tag": "10\"-PO-3004-C3A-N",
      "from": "P-3001B.discharge",
      "to": "TEE-3002.branch",
      "inline": [
        {
          "component": "swing-check-valve",
          "at": 0.5
        }
      ]
    },
    {
      "tag": "10\"-PO-3005-C3A-N",
      "from": "TEE-3002.run-b",
      "to": "TEE-3003.run-a",
      "inline": [
        {
          "component": "esd-valve",
          "at": 0.5,
          "tag": "ESDV-3101"
        }
      ]
    },
    {
      "tag": "10\"-PO-3101-C3A-N",
      "from": "TEE-3003.run-b",
      "to": "MLA-3101.riser",
      "inline": [
        {
          "component": "motor-operated-valve",
          "at": 0.4,
          "tag": "MOV-3102"
        }
      ]
    },
    {
      "tag": "4\"-PO-3201-C3A-N",
      "from": "TEE-3003.branch",
      "to": "TEE-3201.run-b",
      "inline": [
        {
          "component": "control-valve",
          "at": 0.35,
          "tag": "PCV-3201"
        }
      ]
    },
    {
      "tag": "4\"-PO-3202-C3A-N",
      "from": "TEE-3201.branch",
      "to": "X-3200.inlet-1"
    },
    {
      "tag": "4\"-PO-3203-C3A-N",
      "from": "TEE-3201.run-a",
      "to": "X-3200.inlet-2",
      "order": "zx"
    },
    {
      "tag": "4\"-OD-4001-A1A-N",
      "from": "BW-2000.drain",
      "to": "S-4001.inlet"
    },
    {
      "tag": "4\"-PW-4002-A1A-N",
      "from": "S-4001.water-out",
      "to": {
        "at": [
          56,
          1.9,
          15.8
        ],
        "label": "TO OUTFALL"
      }
    },
    {
      "tag": "3\"-PO-4003-A1A-N",
      "from": "S-4001.oil-out",
      "to": {
        "at": [
          45.4,
          2,
          22
        ],
        "label": "TO SLOP TANK"
      }
    },
    {
      "tag": "4\"-FW-7101-A1A-N",
      "from": {
        "at": [
          -36,
          -0.8,
          0
        ],
        "direction": [
          0,
          1,
          0
        ],
        "label": "FW RING MAIN"
      },
      "to": "FM-7101.inlet"
    },
    {
      "tag": "4\"-FW-7102-A1A-N",
      "from": {
        "at": [
          41.5,
          -0.8,
          -2
        ],
        "direction": [
          0,
          1,
          0
        ],
        "label": "FW RING MAIN"
      },
      "to": "FM-7102.inlet"
    }
  ]
}