Skip to content

Releases: ksk5429/numerical_model

Op^3 v1.0.0

16 Apr 06:51

Choose a tag to compare

Op^3 v1.0.0 Release Notes

Release date: 2026-04-16
Prior release: 1.0.0-rc2 (2026-04-10)
Tag: v1.0.0

What this release is

This is the first stable release of the Op^3 integrated numerical framework for
offshore wind turbine foundation assessment. The release is cut from the
same codebase as 1.0.0-rc2 with no functional changes; it is a stable
version tag to support the pending submission of the framework paper to
Advances in Engineering Software (paper J10 in the KSK publication roster)
and to provide a reproducible citation for papers J2, J5, J6, J8, and J9
that depend on the framework.

What is in the release

Same substance as 1.0.0-rc2:

  • OptumGX three-dimensional limit analysis integration with automated
    parameter extraction for four foundation modes (A fixed, B six-by-six
    stiffness, C distributed BNWF, D dissipation-weighted generalised BNWF).
  • OpenSeesPy structural dynamics integration with eigenvalue sweep,
    pushover analysis, and cyclic degradation.
  • OpenFAST v5 aero-servo-hydro-elastic coupling via SoilDyn mode with
    six-by-six stiffness handoff.
  • Fatigue module per DNV-RP-C203 with rainflow counting.
  • Op^3 Studio web application with eight-tab interactive UI, large-
    language-model chat sandbox, and Three.js three-dimensional visualisation.
  • Mooring anchor module with novel dissipation-centroid padeye method
    and one hundred thirty-four validation tests.
  • Thirty-nine cross-validation benchmarks from twenty-five-plus published
    sources at ninety-two percent coverage.

Verification

Test suite at the release tag:

  • 362 passed, 11 skipped (optional data not bundled in this checkout).
  • Zero failures after the 2026-04-16 cp949 encoding fix in
    tests/test_op3_framework.py::TestSSOTConfig::test_yaml_exists_and_parses
    (explicit encoding="utf-8" added).

Installation

pip install op3-framework==1.0.0

or directly from this release on GitHub:

pip install https://github.com/ksk5429/numerical_model/releases/download/v1.0.0/op3_framework-1.0.0-py3-none-any.whl

Citing

@software{op3_2026,
  author  = {Kim, Kyeong Sun},
  title   = {Op^3: OptumGX-OpenSeesPy-OpenFAST integrated numerical
             modeling framework for offshore wind turbines},
  version = {1.0.0},
  date    = {2026-04-16},
  doi     = {10.5281/zenodo.19476542},
  url     = {https://github.com/ksk5429/numerical_model}
}

Changes versus 1.0.0-rc2

  • Version string bumped to 1.0.0 in op3/__init__.py,
    pyproject.toml, CITATION.cff, and docs/sphinx/conf.py.
  • __release_date__ attribute added to op3/__init__.py.
  • Pre-existing Windows cp949 encoding bug in
    tests/test_op3_framework.py::TestSSOTConfig::test_yaml_exists_and_parses
    fixed by specifying encoding="utf-8" when reading the YAML that
    contains Korean site metadata.

No library behaviour changes. Papers J2, J5, J6, J8, and J9 that cite
the framework can use 1.0.0 as a pinned version.

Known limitations carried from 1.0.0-rc2

  • Scour mode validated on Gunsan normally consolidated clay only;
    applicability boundaries to other soil classes are discussed in
    the companion OE-D-26-00984 paper.
  • Anchor mode validated on one hundred thirty-four reference tests;
    field validation is open.
  • OpenFAST coupling is tested against NREL reference turbines;
    utility-scale commercial OWT turbines are not yet validated.
  • Op^3 Studio is a research prototype, not production-hardened.

Manual publish steps (pending after local build)

The following steps require user credentials and cannot be completed
automatically. They are listed for user action.

  1. Rotate the PyPI token (pending manual task #1 in memory). The
    previous token was exposed in conversation and should be revoked at
    https://pypi.org/manage/account/token/. Generate a new token scoped
    to op3-framework and store it in ~/.pypirc or the environment
    variable TWINE_PASSWORD.

  2. Upload wheel and source distribution to PyPI.

    cd F:/GITHUB3/numerical_model_fresh
    python -m twine upload dist/op3_framework-1.0.0*
  3. Create the Git tag and push.

    cd F:/GITHUB3/numerical_model_fresh
    git add -A
    git commit -m "release: v1.0.0"
    git tag -a v1.0.0 -m "Op^3 v1.0.0 stable release"
    git push origin main --tags
  4. Create the GitHub release. Either in the web UI at
    https://github.com/ksk5429/numerical_model/releases/new?tag=v1.0.0
    or via the gh CLI:

    gh release create v1.0.0 dist/op3_framework-1.0.0-py3-none-any.whl \
      dist/op3_framework-1.0.0.tar.gz \
      --title "Op^3 v1.0.0" \
      --notes-file RELEASE_NOTES_v1.0.0.md
  5. Zenodo mint. Zenodo automatically mints a DOI for the GitHub
    release if the repository has the Zenodo integration enabled. Verify
    at https://zenodo.org/account/settings/github/ that the repository
    is switched on. The concept DOI 10.5281/zenodo.19476542 stays
    constant; a new version DOI is assigned to this release.

  6. Update README badge. After PyPI upload succeeds, the README
    version badge should automatically reflect 1.0.0. Verify manually.

What does not happen in this release

  • No breaking API changes.
  • No dependency changes.
  • No new tests or benchmarks (the test suite remains at 362 passing).
  • No new documentation pages; the Sphinx content is identical to rc2.

Op3 v1.0.0-rc2 release

10 Apr 21:57

Choose a tag to compare

Op3 v1.0.0-rc2

Highlights

  • 39 cross-validation benchmarks against 25+ published sources (35/38 in-scope verified, 92%)
  • 23 visualization figures across 3 tiers (defense, journal, interactive)
  • 140 unit tests across 15 modules (was 121 in rc1)
  • Fatigue DEL module with rainflow counting (DNV-RP-C203)
  • Nonlinear BNWF pushover + cyclic analysis in production builder
  • OpenFAST load validation: OC3 GenPwr -0.2%, RotSpeed -0.6%
  • Zero-warning Sphinx build with strict mode enabled on ReadTheDocs

New Features

  • op3/fatigue.pycompute_del() + rainflow_count()
  • op3/visualization.py — opsvis integration (model, modes, pushover)
  • op3/viz_optumgx.py — PyVista 3D bucket pressure, collapse mechanism
  • op3/viz_openfast.py — welib PSD, pCrunch DLC batch stats, DEL bar
  • op3/viz_tier1.py — VHM envelope, cross-pipeline, scour sweep, Mode C/D
  • op3/viz_tier2.py — foundation profile, rainflow, Campbell, M-theta
  • op3/viz_tier3.py — interactive 3D (Plotly HTML), Bayesian sensor overlay
  • builder.py_attach_distributed_bnwf_nonlinear(), run_pushover_moment_rotation(), run_cyclic_analysis()

Audit Fixes

  • LICENSE: MIT → Apache-2.0 (matches pyproject.toml)
  • 3 SyntaxError files fixed (<REDACTED> pattern)
  • 55 bare except: → typed exceptions
  • 25 np.trapznp.trapezoid
  • 16 stale config filename references fixed
  • 5 duplicate pipeline files → re-export shims (-1353 lines)
  • CODE_OF_CONDUCT.md, SECURITY.md, Makefile, .editorconfig, .pre-commit-config.yaml added

V&V Score: 35/38 (92%)

Key results: NcV +1.1%, NcM -0.8%, KR +3.1% vs Doherty, Kr -21% vs Bothkennar field, Seo full-scale f1 -0.2%, DJ Kim My -0.7%, Jeong cyclic +4.2%

op3_studio-win64-v1.0.0-rc1.zip

10 Apr 02:52

Choose a tag to compare

op3_studio-win64-v1.0.0-rc1.zip

v0.3.2

08 Apr 21:51

Choose a tag to compare

Op^3 v0.3.2 -- PISA physics correction

feat: initial Op^3 framework v0.1 — 11 examples, 33/33 analyses passing

08 Apr 07:24

Choose a tag to compare

Op^3 (OptumGX-OpenSeesPy-OpenFAST) integrated numerical modeling
framework for offshore wind turbines, developed around the
Gunsan 4.2 MW tripod suction-bucket OWT and benchmarked against
the complete NREL reference wind turbine library.

CONTENTS

- op3/                    main Python package
  - foundations.py        4 foundation modes (A: fixed, B: 6x6 K,
                          C: distributed BNWF, D: dissipation-weighted)
  - composer.py           rotor x tower x foundation composer
  - cross_compare.py      cross-mode + cross-scour comparison
  - opensees_foundations/ OpenSeesPy builders + 3-analysis runners
                          (eigen, pushover, transient, static condensation)
  - sacs_interface/       Bentley SACS deck parser (read-only) for
                          PLAXIS-SACS suction bucket analysis benchmarks
  - standards/            DNV-ST-0126, ISO 19901-4, API RP 2GEO, OWA
                          published 6x6 stiffness calculators

- examples/               11 runnable examples (build.py + run_eigen.py
                          + run_aeroelastic.py + expected_results.json)
  01_nrel_5mw_baseline       NREL 5MW fixed base
  02_nrel_5mw_oc3_monopile   NREL 5MW OC3 monopile (offshore)
  03_nrel_5mw_oc4_jacket     NREL 5MW OC4 jacket
  04_gunsan_4p2mw_tripod     Gunsan 4.2 MW dissertation subject
  05_nrel_5mw_on_gunsan_tripod   Op^3 isolation test
  06_gunsan_tower_on_monopile    Op^3 isolation test
  07_iea_15mw_monopile          IEA 15MW reference monopile
  08_iea_15mw_volturnus         IEA 15MW VolturnUS-S floating
  09_sacs_nrel_oc4              NREL OC4 jacket via SACS deck
  10_sacs_innwind               INNWIND 10MW jacket via SACS deck
  11_gunsan_tower_on_jacket     Op^3 isolation test (Gunsan + jacket)

- nrel_reference/         bundled NREL OpenFAST reference decks
  - openfast_rtest/        NREL 5MW Baseline + OC3 monopile
  - oc4_jacket/            NREL 5MW OC4 jacket (downloaded from r-test)
  - iea_scaled/            NREL-1.72/1.79/2.3/2.8 MW
  - iea_15mw/              IEA 15MW monopile + VolturnUS (in-progress dl)
  - vestas/V27/            historical baseline
  - sacs_jackets/          SACS NREL OC4 + INNWIND 10MW

- gunsan_4p2mw/           Gunsan 4.2 MW OpenFAST deck (47 files, 0.93 MB)

- data/                   committed OptumGX outputs as CSVs
  - integrated_database_1794.csv         master Monte Carlo database
  - fem_results/                          spring profiles, 6x6 K matrices
  - blade_data_U136.csv

- docs/                   architecture + framework documentation
  - FRAMEWORK.md              Op^3 architecture, 4-mode selector, integration
  - OPTUMGX_BOUNDARY.md       commercial/open license boundary

- validation/benchmarks/  V&V documentation
  - NREL_BENCHMARK.md             per-model verification status
  - GUNSAN_VS_NREL.md             side-by-side comparison
  - FOUNDATION_MODE_STUDY.md      4-mode cross-validation
  - CROSS_COMPARABILITY.md        11x4 matrix + symmetric isolation
  - COMPREHENSIVE_MODEL_REPORT.md  full model dictionary
  - nrel_model_verification.json   automated NREL model parser results
  - three_analyses_results.json    33/33 analyses passing

- tests/                  pytest assertions on scientific claims
- scripts/                build helpers + verification + data generators
- .github/workflows/      CI: NREL model verification + 3-analyses test

VERIFICATION STATUS

- 11 examples build successfully via op3.composer.compose_tower_model
- 33/33 analyses pass (eigen + pushover + transient on each example)
- Gunsan 4.2 MW: Op^3 prediction 0.235 Hz vs field-measured 0.244 Hz
  (-3.7% error, within field OMA scatter)
- Other examples: 10-30% gap to published values, which is expected
  for the stick-model approximation. Calibration of tower templates
  is identified as Phase 2 work.

LICENSE BOUNDARY

- OpenSeesPy: BSD 3-Clause (open source, fully reproducible)
- OpenFAST: Apache 2.0 (open source, user downloads binary)
- OptumGX: commercial academic license required only for Mode D
  (dissipation-weighted BNWF). Modes A, B, C are runnable with
  zero commercial software using the published DNV/ISO/API/OWA
  6x6 stiffness formulas in op3.standards.

CITATION

@phdthesis{kim2026dissertation, ...}
@software{kim2026op3, ...}