Convert OrcaFlex .dat binary model files to enriched YAML fixtures using worldenergydata public databases (vessel fleet, riser components, pipe schedules). All stages run on licensed-win-1. Output committed to digitalmodel as test fixtures.
Scanned 9/9/2026
Install to Claude Code
npx -y skills add vamseeachanta/workspace-hub --skill orcaflex-enrichment --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Orcaflex Enrichment?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vamseeachanta-orcaflex-enrichment)More formats (shields.io, HTML) on the badges page.
---
name: orcaflex-enrichment
version: 1.0.0
description: >
Convert OrcaFlex .dat binary model files to enriched YAML fixtures using
worldenergydata public databases (vessel fleet, riser components, pipe schedules).
All stages run on licensed-win-1. Output committed to digitalmodel as test fixtures.
type: reference
triggers:
- "orcaflex dat to yaml"
- "enrich orcaflex"
- "extract orcaflex model"
- "orcaflex pipeline fixtures"
computer: licensed-win-1
repos: [workspace-hub, worldenergydata, digitalmodel, client-c]
related_wrk: [WRK-589, WRK-593, WRK-594, WRK-595]
tags: []
category: data
---
# OrcaFlex Enrichment Skill
Converts binary OrcaFlex `.dat` model files to **enriched, client-clean YAML
test fixtures** using worldenergydata public databases.
## Pipeline (all on licensed-win-1)
```
Stage 1 Extract .dat + OrcFxAPI → raw YAML params
Stage 2 Enrich raw YAML + worldenergydata lookups → enriched YAML → client-c/
Stage 3 Clean enriched YAML → strip client names → legal scan → digitalmodel/
```
## Stage 1 — Extract
```cmd
python scripts\data\orcaflex\dat-to-yaml.py ^
--input "\\dev-secondary\dde\Orcaflex\0000 Drilling Riser Development\Latest" ^
--output "client-c\data\raw\orcaflex-extracted\drilling-riser-development" ^
--project drilling-riser-development
```
Extracts: `general`, `environment`, `lines[]`, `vessels[]` per .dat file.
## Stage 2 — Enrich + Stage (client-c)
```cmd
python scripts\data\orcaflex\enrich-and-clean.py ^
--input client-c\data\raw\orcaflex-extracted\ ^
--output digitalmodel\data\orcaflex\ ^
--dry-run
```
### Enrichment lookups performed
| Object | OrcaFlex field | worldenergydata lookup | Result field |
|--------|---------------|----------------------|--------------|
| Line | OD (m→in) | `DrillingRiserLoader.filter_by_size(od_in)` | `component_type`, `grade_range`, `api_standard` |
| Line | OD + WT | `PipelineSpecLookup.match_od_wt(od_m, wt_m)` | `nps_in`, `schedule`, `grade_range` |
| Vessel | type hint from context | BSEE rig fleet `.bin` | `vessel_class`, `water_depth_rating_m`, `dp_class` |
### Enriched YAML output example (line object)
```yaml
lines:
- component_type: marine_drilling_riser_joint
nps_in: 21.0
public_match:
grade_range: [G105, S135]
api_standard: API-STD-16F
source: worldenergydata.vessel_fleet.DrillingRiserLoader
dat_properties: # numeric props from .dat — unchanged
OD: [0.5334]
WallThickness: [0.025]
Length: [15.24, 15.24, 15.24]
CDt: 0.01
CDn: 1.0
# name: stripped (client-specific)
```
### Enriched YAML output example (vessel object)
```yaml
vessels:
- vessel_class: drillship
water_depth_rating_m: 3658
dp_class: DP3
public_source: worldenergydata.vessel_fleet.BSEE_rig_fleet
dat_properties:
InitialX: 0.0
InitialY: 0.0
InitialZ: 0.0
# name: stripped
```
## Stage 3 — Clean + Commit
```cmd
bash scripts/legal/legal-sanity-scan.sh digitalmodel/data/orcaflex/
cd digitalmodel
git add data/orcaflex/
git commit -m "data(orcaflex): enriched fixtures from public vessel/riser databases"
```
## Priority Extraction Order
| Project | .dat count | Standards | worldenergydata lookup |
|---------|-----------|-----------|------------------------|
| `0000 Drilling Riser Dev/Latest` | 31 | DNV-OS-F201 | DrillingRiserLoader (21" joints) |
| `31290 WellHead Fatigue/BOP on Wellhead` | 240 | API-RP-2A-WSD | DrillingRiserLoader (BOP) |
| `611 Mecor S Lay/Reference` | 3 | DNV-OS-F101 | PipelineSpecLookup (pipe OD) |
| `5 - OrcaFlex API Check` | 1 | — | minimal fixture |
## worldenergydata Database Status
| Dataset | Status | Location |
|---------|--------|----------|
| `drilling_riser_components.csv` | 24 rows (partial) | `data/modules/vessel_fleet/curated/` |
| `rig_fleet_full.bin` | 2,320 rigs (Feb 2026) | `data/modules/bsee/.local/rig_fleet/` |
| `construction_vessels.csv` | missing — see WRK-593 | `data/modules/vessel_fleet/curated/` |
| `api_5l_pipe_schedule.csv` | missing — see WRK-594 | `data/modules/pipeline/` |
## Key worldenergydata API Calls
```python
from worldenergydata.vessel_fleet import DrillingRiserLoader
loader = DrillingRiserLoader()
# Match riser joint by OD
joints = loader.filter_by_size(od_in=21.0)
# Get all riser joints
all_joints = loader.get_riser_joints()
# Get BOPs
bops = loader.get_bops()
```
```python
# Pipeline spec lookup (after WRK-594)
from worldenergydata.bsee.pipeline import PipelineSpecLookup
lookup = PipelineSpecLookup()
spec = lookup.match_od_wt(od_m=0.2731, wt_m=0.012)
# → {nps_in: 10.75, schedule: "XS", grade_range: ["X60", "X65"], ...}
```
## Blocked By
- WRK-593: expand drilling_riser_components.csv + add construction_vessels.csv
- WRK-594: create api_5l_pipe_schedule.csv + PipelineSpecLookup class
## Documentation Reference
llm-wiki base: `data/llm-wiki/orcaflex/`
Relevant OrcaFlex topics:
- `Textdatafiles.md` -- YAML/text data file format for .dat extraction
- `Vesseldata.md`, `Vesseltypes.md` -- vessel object properties extracted in Stage 1
- `Lines.md`, `Linedata.md`, `Linetypes,Geometry,massexpansiondata.md` -- line object properties (OD, WT)
- `Environment.md`, `Generaldata.md` -- general/environment parameters
OrcFxAPI topics (`data/llm-wiki/orcfxapi/`):
- `Modelbuilding,Settingthedata.md` -- programmatic data extraction via OrcFxAPI
- `Pythoninterface,Objectdata.md` -- Python object data access for .dat reading
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!