# Orcawave Analysis Orcfxapi Result Extraction

> Sub-skill of orcawave-analysis: OrcFxAPI Result Extraction (+3).

- Skill: `vamseeachanta/orcawave-analysis-orcfxapi-result-extraction` (Agent Skill)
- Install (CLI): `npx skillmds@latest add vamseeachanta/orcawave-analysis-orcfxapi-result-extraction`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vamseeachanta/orcawave-analysis-orcfxapi-result-extraction/raw
- Safety review: PASS (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: vamseeachanta (https://skillmd.com/u/vamseeachanta)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/vamseeachanta/orcawave-analysis-orcfxapi-result-extraction

---


# OrcFxAPI Result Extraction (+3)

## OrcFxAPI Result Extraction


| Property | Gotcha | Fix |
|----------|--------|-----|
| `.frequencies` | Returns **Hz**, not rad/s | Multiply by `2 * np.pi` |
| `.frequencies` | Returns **descending** order | `np.argsort()` ascending before comparison |
| `.displacementRAOs` | Shape `(nheading, nfreq, 6)` | Transpose to `(nfreq, nheading, 6)` |
| Rotational RAOs (indices 3,4,5) | In **rad/m** | `np.degrees()` for deg/m (AQWA convention) |
| `.addedMass`, `.damping` | Follow frequency order | Apply same sort index as frequencies |

## Unit Conversion: WAMIT .frc → spec.yml


| Source | Mass Unit | Inertia Unit | Density | To spec.yml |
|--------|-----------|-------------|---------|-------------|
| WAMIT `.frc` (RHO=1) | te | te·m² | 1 te/m³ | ×1000 for kg, kg·m² |
| OrcaWave `.owd` | te | te·m² | 1 te/m³ | ×1000 for kg, kg·m² |
| spec.yml | kg | kg·m² | kg/m³ | — (canonical) |

**TRAP**: When porting from WAMIT `.frc` to spec.yml, multiply inertia by 1000 (te·m² → kg·m²). Do NOT multiply twice — the ISSC TLP case 2.5 had inertia tensors 1000× too large (8.02e13 vs correct 8.02e10) from double conversion.

## Phase Correlation for Zero-Magnitude DOFs


Fixed DOFs (e.g. heave/roll/pitch on TLPs) produce zero RAO magnitudes. Phase is undefined (`atan2(0,0)` noise), so:
- `multi_solver_comparator.py`: when `peak_mag < 1e-10`, overrides phase correlation to `r = 1.0`
- `validate_owd_vs_spec.py`: skips DOFs with `max_diff < 1e-6` in pass/fail verdict

## QTF Settings Guard


When `qtf_calculation: false` in spec.yml, do NOT include any QTF-related keys in the OrcaWave YAML:
- `QTFMinCrossingAngle`, `QTFMaxCrossingAngle`, `PreferredQuadraticLoadCalculationMethod`
- These cause "Change not allowed" errors from OrcaWave
- `QuadraticLoadPressureIntegration: No` is safe (explicitly disabling)

---

