Agent Skill
2/7/2026

diffraction-analysis

Master skill for hydrodynamic diffraction analysis - AQWA, OrcaWave, and BEMRosetta integration

V
vamseeachanta
7GitHub Stars
2Views
npx skills add vamseeachanta/digitalmodel

SKILL.md

Namediffraction-analysis
DescriptionMaster skill for hydrodynamic diffraction analysis - AQWA, OrcaWave, and BEMRosetta integration

Digital Model - Engineering Asset Lifecycle Management

Python License Commits

Sustainable digital models for engineering assets built with sustainable engineering processes and solutions. Single source of truth for offshore, subsea, and marine engineering analysis.

Dedicated to Mark Cerkovnik - Chief Engineer, mentor, and inspiration.


šŸ” Capabilities Snapshot

  • Lifecycle coverage: fatigue, stress, hydrodynamics, riser & mooring, metocean, vessel systems.
  • Digital thread: ASCII-first configs drive FE models, CAD/animations, reports, and QA workflows.
  • Data procurement: structured spec library for supplier intelligence across offshore domains.
  • Automation ready: modular APIs, CLI tooling, and integration hooks for pipelines & dashboards.
  • Validation tooling: cross-check analytical vs. numerical results with repeatable benchmarking.

šŸŽÆ Vision

Utilize a single source of ASCII inputs (promoting single source of truth) to generate equivalent analytical models encompassing the complete lifecycle operations of engineering assets:

  • Analytical Calculations - Fatigue, stress, hydrodynamics, structural capacity
  • Computational Analysis - FEA models, time-domain simulations, frequency analysis
  • 3D CAD Models - Automated geometry generation
  • 3D Animations - Visual representations of designs
  • Drawing Automation - Engineering documentation
<img src="docs/digital_model_architecure.svg" width="800" alt="Digital Model Architecture"/>

šŸ“Š Repository Overview

CategoryCountDescription
Python Modules704+Core engineering libraries
Test Files1,971+Comprehensive test coverage
Examples12+Working demonstrations
Documentation352+Technical guides and references
Commits305+Active development history

šŸš€ Key Features

āœ… Single Source of Truth

  • ASCII-based input files (.yml, .json, .csv)
  • Generate FE models, analytical calculations, 3D CAD, animations, and drawings from one source
  • Version-controlled engineering data

āœ… Modular Architecture

  • Import engineering assets using configuration files
  • Reusable components across projects
  • Standardized naming conventions for cross-team collaboration

āœ… Analytical QA

  • Automated verification of computational results
  • Cross-validation between analytical and numerical methods
  • Weight checks, load verification, structural capacity validation

āœ… Industry-Proven Workflows

  • 20+ years of hands-on engineering experience
  • Validated by 200+ SURF engineers
  • Production-ready for offshore and marine projects

šŸ”¬ Core Capabilities

Fatigue Analysis Module ⭐ NEW

Comprehensive S-N Curve Database & Analysis Tools

  • 221 S-N curves from 17 international standards:
    • DNV (81 curves), BS 7608 (79), ABS (24), BP (25), Norsok (15), Bureau Veritas (14), API (2), Titanium (4)
  • Joint types: Plated welded, Tubular, Tubular nodal
  • Environments: In Air, Seawater with CP, Free Corrosion
  • Advanced plotting: Log-log, linear-log, SCF application, fatigue limit handling
  • Data formats: CSV, JSON for easy integration
from digitalmodel.fatigue.sn_curve_plotter import SNCurvePlotter

# Initialize plotter
plotter = SNCurvePlotter()

# Plot S-N curves with stress concentration factor
plotter.plot_curves(
    lookup_indices=[64, 175, 183],
    scf=2.0,
    include_fatigue_limit=True,
    plot_type='log-log',
    save_path='sn_curves.png'
)

Quick Access:

  • Data: /data/fatigue/
  • Examples: /examples/fatigue/
  • Documentation: /data/fatigue/README.md

CALM Buoy Operational Analysis ⭐ NEW

Interactive Dashboards for Mooring System Design

  • Complete reference dataset from Hengyi PMB project (Brunei)
  • 13 CSV files covering all operational aspects:
    • Environmental conditions (1-yr and 100-yr return periods)
    • Mooring line properties and configurations (95mm Studless R3 chain)
    • Performance analysis (offsets, tensions, safety factors)
    • Vessel design (300k DWT tanker)
    • Buoy geometry and hawser systems
  • Interactive HTML reports with Plotly visualizations
  • Production-ready for OrcaFlex model generation
from digitalmodel.mooring.calm_buoy import CALMBuoyReportGenerator

# Generate interactive HTML dashboard
generator = CALMBuoyReportGenerator("data/mooring/results/calm_buoy/project_specific/south_east_asia_project_1")
report_path = generator.generate_report()

Quick Access:

  • Data: /data/mooring/results/calm_buoy/
  • Reports: /reports/mooring/calm_buoy/
  • Documentation: /docs/PHASE5_CALM_BUOY_OPERATIONAL_ANALYSIS.md
  • Source: /src/digitalmodel/mooring/calm_buoy/

Key Features:

  • 6-leg CALM buoy with 60° spacing
  • Operational (intact & 1 line damaged) scenarios
  • Survival (100-year metocean) scenarios
  • All safety factors exceed ABS requirements (SF > 2.0)
  • Full traceability to design reports

Structural Analysis

Stress Analysis

  • Von Mises stress calculations
  • Nonlinear stress-strain analysis
  • Multi-axial stress states
  • Stress concentration factors

Plate Capacity

  • Buckling analysis (DNV, API standards)
  • Ultimate strength calculations
  • Multi-plate structural systems
  • Stiffened panel analysis

Time-Series Analysis

Signal Processing

  • Fast Fourier Transform (FFT)
  • Inverse FFT (iFFT)
  • Peak energy frequency identification
  • Signal integration and differentiation
  • Statistical analysis

Hydrodynamics

  • Wave load calculations (DNV-RP-H103)
  • Drag and inertia coefficients
  • Circular and rectangular section hydrodynamics
  • Current profile generation

Engineering Asset Modeling

Risers

  • Catenary Risers (SCR) - Simple Catenary Riser analysis
  • Lazy Wave Risers (SLWR) - Buoyancy-supported configurations
  • Stack-up calculations - Material properties, weights, tensions

Mooring Systems

  • SALM - Single Anchor Line Mooring
  • Buoy systems - Hydrodynamic analysis
  • Anchor design - Load capacity verification
  • CALM Buoy Analysis ⭐ NEW - Comprehensive operational datasets with interactive dashboards

Subsea Infrastructure

  • Pipelines - On-bottom stability, span analysis
  • Flexibles/Umbilicals - Configuration design
  • Rigid Jumpers - Structural analysis

Vessels

  • Light Service Vessels
  • Intervention Vessels
  • Ship design calculations

Software Integration

OrcaFlex

  • Automated model generation from YAML
  • Post-processing and results extraction
  • Time-series analysis integration

WAMIT

  • Hydrodynamic coefficient processing
  • RAO (Response Amplitude Operator) analysis

AQWA

  • Model setup automation
  • Results post-processing

BEMRosetta

  • Boundary element method integration

šŸ“¦ Installation

Quick Start (pip)

# Install from GitHub
pip install git+https://github.com/vamseeachanta/digitalmodel.git

# Or clone for development
git clone https://github.com/vamseeachanta/digitalmodel.git
cd digitalmodel
pip install -e .

Using Conda Environment

# Create environment from YAML
conda env create -f dev_tools/environment.yml
conda activate digitalmodel

# Or install package in existing environment
pip install -e .

šŸŽÆ Quick Examples

1. Fatigue S-N Curve Analysis

from digitalmodel.fatigue.sn_curve_plotter import SNCurvePlotter

plotter = SNCurvePlotter()

# List available curves
dnv_curves = plotter.list_curves(
    curve_type_filter='DNV',
    environment_filter='Air'
)
print(dnv_curves)

# Compare multiple standards
plotter.create_comparison_plot(
    reference_index=64,  # API curve
    comparison_indices=[175, 183, 190],  # BS, BV, ABS
    scf=1.5,
    save_path='standard_comparison.png'
)

2. Catenary Riser Analysis

from digitalmodel.tests import test_catenary_riser

# Run analysis with YAML configuration
test_catenary_riser.main()

3. Stress Analysis

from digitalmodel.stress import StressAnalyzer

analyzer = StressAnalyzer()
vm_stress = analyzer.von_mises_stress(
    sigma_x=100,  # MPa
    sigma_y=80,
    sigma_z=60,
    tau_xy=20,
    tau_yz=15,
    tau_xz=10
)
print(f"Von Mises Stress: {vm_stress:.2f} MPa")

4. Plate Buckling Analysis

from digitalmodel.analysis.plate_capacity import PlateCapacity

plate = PlateCapacity(
    length=2.0,      # meters
    width=1.0,
    thickness=0.02,
    material='API 5L X65'
)

capacity = plate.calculate_buckling_capacity()
print(f"Buckling Capacity: {capacity:.2f} kN")

šŸ“š Documentation

Getting Started

Module Documentation

API Reference


šŸ—‚ļø Repository Structure

digitalmodel/
ā”œā”€ā”€ src/digitalmodel/
│   └── modules/                    # 45+ specialized analysis modules
│       ā”œā”€ā”€ aqwa/                   # AQWA hydrodynamic analysis
│       ā”œā”€ā”€ blender_automation/     # 3D model generation
│       ā”œā”€ā”€ catenary/               # Catenary calculations
│       ā”œā”€ā”€ data_procurement/       # Data scraping/validation
│       ā”œā”€ā”€ fatigue_analysis/       # S-N curves, damage accumulation
│       ā”œā”€ā”€ marine_engineering/     # Environmental loading, wave spectra
│       ā”œā”€ā”€ mooring/                # Mooring system design
│       ā”œā”€ā”€ orcaflex/               # OrcaFlex simulation interface
│       ā”œā”€ā”€ pipe_capacity/          # Pipe stress calculations
│       ā”œā”€ā”€ reporting/              # Interactive HTML reports
│       └── ...                     # 35+ more modules
ā”œā”€ā”€ tests/domains/                  # Test suites (mirrors src structure)
ā”œā”€ā”€ specs/modules/                  # Module specifications (39 specs)
ā”œā”€ā”€ docs/domains/                   # Module documentation
ā”œā”€ā”€ examples/domains/               # Working examples per module
ā”œā”€ā”€ config/                         # Configuration files
│   └── templates/                  # Project templates
ā”œā”€ā”€ data/                           # Engineering databases
│   └── fatigue/                    # S-N curve library (17 standards)
ā”œā”€ā”€ scripts/                        # Automation scripts
ā”œā”€ā”€ .claude/                        # AI orchestration (670+ files)
│   ā”œā”€ā”€ agents/                     # Agent definitions
│   ā”œā”€ā”€ skills/                     # Skill library
│   └── commands/                   # CLI commands
└── .claude-flow/                   # Runtime coordination

šŸ”§ Development Tools

Repository Hygiene

# Check for root directory violations
python tools/cleanup-root.py --dry-run

# Automatic cleanup
python tools/cleanup-root.py

# Enable pre-commit hook
git config core.hooksPath .githooks

Testing

# Run all tests
pytest

# Run specific module tests
pytest tests/test_fatigue_analysis.py

# Run with coverage
pytest --cov=digitalmodel --cov-report=html

Code Quality

# Format code
black src/digitalmodel

# Lint
flake8 src/digitalmodel

# Type checking
mypy src/digitalmodel

🌟 Recent Additions

September 2025

  • ✨ Fatigue S-N Curve Database - 221 curves from 17 international standards
  • ✨ Advanced Plotting Module - Log-log, linear-log, SCF, fatigue limits
  • ✨ CLI Tools - Command-line interface for curve analysis
  • ✨ Comprehensive Examples - 8 example scripts demonstrating capabilities

Key Features

  • Direct GitHub data access for remote projects
  • Multiple integration methods (URL, submodule, clone, sparse checkout)
  • Production-ready plotting matching industry Excel tools
  • Full documentation and API reference

šŸ¤ Contributing

Contributions welcome! This library benefits from:

  • 20+ years offshore/subsea engineering experience
  • 200+ SURF engineers' collective insights
  • Active production use in major projects

How to Contribute

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

šŸ“– Citation

When using this library in academic or commercial work, please cite:

@software{digitalmodel2025,
  author = {Achanta, Vamsee},
  title = {Digital Model: Engineering Asset Lifecycle Management},
  year = {2025},
  publisher = {GitHub},
  url = {https://github.com/vamseeachanta/digitalmodel}
}

For the S-N Curve Database specifically:

@dataset{sn_curve_database2025,
  author = {Achanta, Vamsee},
  title = {Fatigue S-N Curve Database for Offshore Structures},
  year = {2025},
  publisher = {GitHub},
  url = {https://github.com/vamseeachanta/digitalmodel/tree/main/data/fatigue},
  note = {221 curves from 17 international standards}
}

šŸ“§ Contact & Support


šŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


šŸ™ Acknowledgments

Dedicated to Mark Cerkovnik - Chief Engineer whose insights shaped major portions of this work and repository.

Special thanks to:

  • 200+ SURF engineers who contributed insights over 20 years
  • Open-source community for foundational tools
  • Industry standards organizations (DNV, API, ABS, BS, Norsok, Bureau Veritas)

šŸ”— Related Projects


šŸ“Š Project Status

  • āœ… Active Development - Regular updates and improvements
  • āœ… Production Ready - Used in active engineering projects
  • āœ… Well Documented - 352+ documentation files
  • āœ… Tested - 1,971+ test cases
  • āœ… Industry Validated - 20+ years of engineering experience

Last Updated: September 30, 2025 Version: 2.0.0 Total Commits: 305+

Skills Info
Original Name:diffraction-analysisAuthor:vamseeachanta