| name | orcaflex-installation-analysis |
| description | Create and analyze OrcaFlex models for offshore installation sequences including subsea structure lowering, pipeline installation, and crane operations. Generate models at multiple water depths and orientations for installation feasibility studies. |
| version | 1.0.0 |
| updated | "2026-01-17T00:00:00.000Z" |
| category | offshore-engineering |
| triggers | ["installation analysis","subsea installation","structure lowering","crane operation","installation sequence","depth variation","installation feasibility","heavy lift","payload handling"] |
OrcaFlex Installation Analysis Skill
Generate and analyze OrcaFlex models for offshore installation sequences with automated depth variation and orientation studies.
Version Metadata
version: 1.0.0
python_min_version: '3.10'
dependencies:
orcaflex-modeling: '>=2.0.0,<3.0.0'
orcaflex_version: '>=11.0'
compatibility:
tested_python:
- '3.10'
- '3.11'
- '3.12'
- '3.13'
os:
- Windows
- Linux
- macOS
Changelog
[1.0.0] - 2026-01-17
Added:
- Initial release with installation sequence capabilities
- Multi-depth model generation
- Orientation variation support
- Crane wire length adjustment
When to Use
- Subsea structure installation analysis
- Pipeline/umbilical installation sequences
- Heavy lift crane operations
- Installation depth variation studies
- Lowering phase analysis
- Splash zone analysis
- Installation feasibility assessment
- Crane wire and sling configuration
Prerequisites
- OrcaFlex license (for simulation)
- Python environment with
digitalmodel package installed
- Reference model files (.yml format recommended)
- Reference elevation configuration
Installation Sequence Workflow
[Reference Model] → [Define Delta Elevations] → [Generate Depth Models]
↓ ↓ ↓
Base geometry [-10m, -20m, -30m, ...] Model per depth:
at datum - Update structure Z
- Update buoy Z
- Extend crane wire
- Update sling connections
↓
[Orientation Variants]
↓
[Batch Simulation]
Configuration
Basic Installation Depth Study
structure:
BaseFile: "reference_model.yml"
reference_model_file: "models/installation_reference.yml"
reference_elevation_file: "models/elevation_reference.yml"
6DBuoys:
- "Subsea_Structure"
3DBuoys:
- "Masterlink"
Lines:
- name: "Crane_Wire"
EndBZ: true
length_index: 2
TargetSegmentLength: 5.0
- name: "Intermediate_Sling"
EndBZ: true
delta_elevations:
- 0
- -10
- -20
- -30
- -50
-
Heavy Lift Configuration
reference_elevation_file: "models/heavy_lift_reference.yml"
structure: "Topside_Module"
masterlink: "Lifting_Padeye"
crane_wire: "Main_Crane_Wire"
intermediate_sling: "Spreader_Sling"
output_basefile: "topside_installation"
delta_elevations:
- 0
- -5
- -10
- -15
- -20
- -30
- -40
- -45
Python API
Generate Installation Depth Models
from digitalmodel.orcaflex.orcaflex_installation import OrcInstallation
installer = OrcInstallation()
cfg = {
"structure": {
"BaseFile": "reference.yml",
"reference_model_file": "models/reference_model.yml",
"reference_elevation_file": "models/elevations.yml",
"6DBuoys": ["Structure"],
"3DBuoys": ["Masterlink"],
"Lines": [
{
"name": "Crane_Wire",
"EndBZ": True,
"length_index": 1,
"TargetSegmentLength": 5.0
}
],
"delta_elevations": [0, -10, -20, -30, -50, -75, -100]
},
"Analysis": {
"analysis_root_folder": "results/"
}
}
installer.create_model_for_water_depth(cfg)
Simple Depth Model Generation
from digitalmodel.orcaflex.orcaflex_installation import OrcInstallation
installer = OrcInstallation()
cfg = {
"reference_elevation_file": "models/reference.yml",
"structure": "Subsea_Template",
"masterlink": "Lifting_Point",
"crane_wire": "Main_Wire",
"intermediate_sling": None,
"output_basefile": "template_installation",
"delta_elevations": [0, -10, -20, -30, -40, -50]
}
installer.create_installation_depth_model(cfg)
With Structure Orientation
from digitalmodel.orcaflex.orcaflex_installation import OrcInstallation
installer = OrcInstallation()
cfg = {
"structure": {
"BaseFile": "reference.yml",
"reference_model_file": "models/reference.yml",
"reference_elevation_file": "models/elevations.yml",
"6DBuoys": ["Mudmat"],
"3DBuoys": [],
"Lines": [
{"name": "Wire1", "EndBZ": True, "length_index": 0}
],
"delta_elevations": [0, -5, -10, -15, -20]
},
"Analysis": {
"analysis_root_folder": "results/mudmat/"
}
}
installer.create_model_for_water_depth(cfg)
Output File Structure
results/installation/
├── _el_00000m.yml # Reference depth, base orientation
├── _el_00000m_str_orentation.yml # Reference depth, zero rotation
├── el_00000m.yml # Final reference model
├── _el_-0010m.yml # 10m below reference
├── _el_-0010m_str_orentation.yml
├── el_-0010m.yml
├── _el_-0020m.yml # 20m below reference
├── _el_-0020m_str_orentation.yml
├── el_-0020m.yml
└── ...
Key Concepts
Reference Elevation File
Contains the initial Z positions for all objects:
6DBuoys:
Subsea_Structure:
InitialZ: -50.0
InitialRotation3: 45
3DBuoys:
Masterlink:
InitialZ: -45.0
Lines:
Crane_Wire:
EndBZ: -45.0
Sections:
- Length: 10.0
- Length: 50.0
- Length: 5.0
Delta Elevation Application
For each delta_elevation:
- 6DBuoys:
NewZ = ReferenceZ + delta_elevation
- 3DBuoys:
NewZ = ReferenceZ + delta_elevation
- Line EndBZ:
NewEndBZ = ReferenceEndBZ + delta_elevation
- Line Length:
NewLength = ReferenceLength + |delta_elevation|
Crane Wire Extension
As structure lowers, crane wire extends:
new_wire_length = reference_length + abs(delta_elevation)
Integration with Universal Runner
After generating installation models, run batch simulations:
from digitalmodel.orcaflex.universal import UniversalOrcaFlexRunner
runner = UniversalOrcaFlexRunner(
input_directory="results/installation/",
output_directory="results/installation/.sim/",
mock_mode=False
)
results = runner.run_batch(
pattern="el_*.yml",
parallel=True,
max_workers=4
)
for file_name, status in results.items():
print(f"{file_name}: {'SUCCESS' if status['success'] else 'FAILED'}")
Analysis Types
1. Splash Zone Analysis
Focus on depths around waterline:
delta_elevations:
- 5
- 2
- 0
- -2
- -5
- -10
2. Full Lowering Sequence
Complete installation from deck to seabed:
delta_elevations:
- 0
- -5
- -10
- -15
- -20
- -30
- -50
- -75
- -95
- -100
3. Landing Sequence
Fine resolution near seabed:
delta_elevations:
- 0
- -1
- -2
- -3
- -4
- -4.5
- -5
Post-Processing Installation Results
from digitalmodel.orcaflex.opp import OrcaFlexPostProcess
opp = OrcaFlexPostProcess()
cfg = {
"orcaflex": {
"postprocess": {
"summary": {
"flag": True,
"variables": [
{"object": "Crane_Wire", "variable_name": "Effective Tension"},
{"object": "Structure", "variable_name": "Z"}
]
}
}
}
}
sim_files = list(Path("results/installation/.sim/").glob("*.sim"))
for sim_file in sim_files:
results = opp.process_single_file(sim_file, cfg)
depth = extract_depth_from_filename(sim_file.stem)
print(f"Depth {depth}m: Max tension = {results['max_tension']:.1f} kN")
Best Practices
Model Preparation
- Reference model at datum - Start with well-converged static model
- Appropriate segment lengths - Finer segments for crane wire
- Buoyancy and mass - Verify structure properties
- Crane capacity - Check against maximum tensions
Depth Increments
- Fine resolution at splash zone - Wave loading peaks here
- Coarse mid-water - Quasi-static behavior
- Fine at seabed - Landing dynamics critical
Output Validation
- Check crane wire tensions - Must be within capacity
- Verify structure orientation - No unexpected rotations
- Validate connections - All links maintained
- Review static convergence - Each depth should converge
Error Handling
Common Issues
try:
installer.create_model_for_water_depth(cfg)
except FileNotFoundError as e:
print(f"Reference file not found: {e}")
print("Check: reference_model_file and reference_elevation_file paths")
Related Skills
References
- OrcaFlex Installation Analysis: Orcina Documentation
- DNV-RP-H103: Modelling and Analysis of Marine Operations
- API RP 2A: Planning, Designing and Constructing Fixed Offshore Platforms
- Source:
src/digitalmodel/modules/orcaflex/orcaflex_installation.py