PhD Aljoscha Sander - Code Basis
  • Jupyter Notebook 98.2%
  • Python 1.8%
Find a file
2026-03-02 08:28:15 +01:00
.opencode/plans completed restructuring and updated documentation 2026-02-18 23:15:22 +01:00
docs implemented NGSolve 3D FEM 2026-03-02 08:28:15 +01:00
examples/structd implemented NGSolve 3D FEM 2026-03-02 08:28:15 +01:00
notebooks Updated documentation 2026-03-01 22:45:34 +01:00
results added 2-DoF and 3-DoF model to structd 2026-02-08 22:17:17 +01:00
scripts added 2-DoF and 3-DoF model to structd 2026-02-08 22:17:17 +01:00
src implemented NGSolve 3D FEM 2026-03-02 08:28:15 +01:00
tests implemented NGSolve 3D FEM 2026-03-02 08:28:15 +01:00
.cookiecutter.json initial commit 2025-12-08 21:11:31 -05:00
.editorconfig initial commit 2025-12-08 21:11:31 -05:00
.gitattributes initial commit 2025-12-08 21:11:31 -05:00
.gitignore restructured tests 2026-02-08 00:44:35 +01:00
.pre-commit-config.yaml removed old .md files and upadte ruff pre-commit 2026-01-29 14:00:24 -05:00
AGENTS.md completed restructuring and updated documentation 2026-02-18 23:15:22 +01:00
CHANGELOG.md added 2-DoF and 3-DoF model to structd 2026-02-08 22:17:17 +01:00
CODE_OF_CONDUCT.md initial commit 2025-12-08 21:11:31 -05:00
coverage.json thanks, claude (#1) 2025-12-11 01:36:38 +00:00
LICENSE initial commit 2025-12-08 21:11:31 -05:00
Makefile fix/gps-installation-times (#6) 2026-01-28 02:52:08 +00:00
mkdocs.yml updated documentation and fixed timezone bug in wave data ingestion cli interface 2026-02-18 00:49:43 +01:00
package-lock.json final run of ruff 2025-12-13 11:21:30 -05:00
package.json final run of ruff 2025-12-13 11:21:30 -05:00
pyproject.toml implemented NGSolve 3D FEM 2026-03-02 08:28:15 +01:00
README.md completed restructuring and updated documentation 2026-02-18 23:15:22 +01:00
test.toml fixed wmb-sued ingestion issue 2026-02-07 17:07:22 +01:00
test_beam_analytical_verification.png completed restructuring and updated documentation 2026-02-18 23:15:22 +01:00
test_data.db updated notebook examples 2025-12-16 15:15:00 -05:00
uv.lock added 2-DoF and 3-DoF model to structd 2026-02-08 22:17:17 +01:00

phdsan - Structural Health Monitoring of Offshore Wind Turbine Installations

Python 3.13+ Tests Code style: ruff

phdsan is a Python monorepo for PhD research on structural health monitoring and dynamic analysis of offshore wind turbine installations. It provides tools for processing sensor data, performing advanced signal analysis, and extracting structural parameters from vibration measurements collected during installation operations.

Features

  • Data Management: DuckDB-based storage with multi-sensor support and reproducibility tracking
  • Signal Processing: Butterworth filtering, double integration with drift correction, coordinate transformations
  • Advanced Analysis: Stochastic methods, nonlinear dynamics, fatigue analysis, time-frequency analysis
  • Structural Dynamics: 2-DOF and 3-DOF eccentric mass oscillator models with FEM beam solver (structd)
  • Environmental Correlation: ERA5 integration, wave-wind-structure correlation

Quick Start

# Clone and install
git clone https://github.com/flucto-gmbh/phdsan.git
cd phdsan
make install

# Run tests
uv run pytest

# Start Jupyter Lab
uv run jupyter lab

Basic Usage

from twbii.db.connection import create_database, DatabaseConnection
from twbii.processing import process_acceleration_data
from analysis.fatigue.rainflow import analyze_rainflow

# Create database and process data
create_database("turbine_data.db")

with DatabaseConnection("turbine_data.db") as conn:
    # Process acceleration data
    deflection_df = process_acceleration_data(
        conn, turbine_id="20_BW27", location="helihoist-1",
        start_time="2021-07-15 10:00", end_time="2021-07-15 12:00"
    )

    # Analyze fatigue cycles
    cycles_df = analyze_rainflow(deflection_df, component="deflection")

Documentation

Full documentation is available at the documentation site or can be built locally:

uv run mkdocs serve

Package Structure

The project contains five packages (core, analysis, twbii, ispy, structd) with three CLI entry points.

  • core — Shared infrastructure (config, types, exceptions, validation)
  • analysis — Generic analysis algorithms (signal processing, fatigue, nonlinear dynamics, stochastic, wavelets, DTW)
  • twbii — Offshore wind turbine data toolkit (CLI, database, I/O, processing pipelines)
  • ispy — AIS vessel tracking & windfarm matching
  • structd — Beam FEM solver
phdsan/
├── src/
│   ├── core/               # Shared infrastructure (config, types, exceptions, validation)
│   │   └── db/             # Base database connection (DatabaseConnection)
│   ├── analysis/           # Generic analysis algorithms (depends on: core)
│   │   ├── processing/     # Filters, integration, resampling
│   │   ├── fatigue/        # Rainflow counting, fatigue damage
│   │   ├── nonlinear/      # Phase space, Lyapunov, correlation dimension
│   │   ├── stochastic/     # Envelope, narrowband, Rayleigh, random decrement
│   │   ├── similarity/     # DTW time series comparison
│   │   └── timefreq/       # Wavelet analysis
│   ├── twbii/              # Offshore wind turbine data toolkit (CLI: twbii)
│   │   ├── core/           # twbii-specific configs (DatabaseConfig, CatalogConfig, etc.)
│   │   ├── db/             # DuckDB schema, catalog, ingestion, models
│   │   ├── io/             # Data parsers (TOM, MSR, wave, wind, LIDAR)
│   │   ├── processing/     # Signal processing pipelines
│   │   ├── analysis/       # twbii-specific: availability, export, parameter sweep
│   │   ├── metocean/       # ERA5 reanalysis client
│   │   └── cli/            # twbii CLI commands
│   ├── ispy/               # AIS vessel tracking & windfarm matching (CLI: ispy)
│   │   ├── ais/            # AIS CSV parsing, spatial filtering, clustering
│   │   ├── windfarm/       # Windfarm matching, registry, installations
│   │   ├── db/             # ispy-specific database models
│   │   └── cli/            # ispy CLI commands
│   └── structd/            # Beam FEM solver (CLI: structd)
│       └── cli/            # structd CLI commands
├── tests/                  # Test suite (mirrors src/ structure)
├── notebooks/              # Jupyter notebooks
├── docs/                   # MkDocs documentation
└── scripts/                # Utility scripts

Development

# Install with dev dependencies
make install

# Run tests
make test

# Code quality
uv run ruff check --fix
uv run ty check src/

# Build documentation
make docs

License

MIT License - See LICENSE for details.

Citation

@software{phdsan2026,
  title = {phdsan: Structural Health Monitoring of Offshore Wind Turbine Installations},
  author = {Sander, Aljoscha},
  year = {2026},
  url = {https://github.com/flucto-gmbh/phdsan}
}

Project Status: Active development