Releases: ksk5429/numerical_model
Op^3 v1.0.0
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
(explicitencoding="utf-8"added).
Installation
pip install op3-framework==1.0.0or 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.whlCiting
@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.0inop3/__init__.py,
pyproject.toml,CITATION.cff, anddocs/sphinx/conf.py. __release_date__attribute added toop3/__init__.py.- Pre-existing Windows cp949 encoding bug in
tests/test_op3_framework.py::TestSSOTConfig::test_yaml_exists_and_parses
fixed by specifyingencoding="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.
-
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
toop3-frameworkand store it in~/.pypircor the environment
variableTWINE_PASSWORD. -
Upload wheel and source distribution to PyPI.
cd F:/GITHUB3/numerical_model_fresh python -m twine upload dist/op3_framework-1.0.0*
-
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
-
Create the GitHub release. Either in the web UI at
https://github.com/ksk5429/numerical_model/releases/new?tag=v1.0.0
or via theghCLI: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 -
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 DOI10.5281/zenodo.19476542stays
constant; a new version DOI is assigned to this release. -
Update README badge. After PyPI upload succeeds, the README
version badge should automatically reflect1.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
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.py—compute_del()+rainflow_count()op3/visualization.py— opsvis integration (model, modes, pushover)op3/viz_optumgx.py— PyVista 3D bucket pressure, collapse mechanismop3/viz_openfast.py— welib PSD, pCrunch DLC batch stats, DEL barop3/viz_tier1.py— VHM envelope, cross-pipeline, scour sweep, Mode C/Dop3/viz_tier2.py— foundation profile, rainflow, Campbell, M-thetaop3/viz_tier3.py— interactive 3D (Plotly HTML), Bayesian sensor overlaybuilder.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.trapz→np.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
op3_studio-win64-v1.0.0-rc1.zip
v0.3.2
feat: initial Op^3 framework v0.1 — 11 examples, 33/33 analyses passing
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, ...}