|
| 1 | +# Op^3 v1.0.0 Release Notes |
| 2 | + |
| 3 | +**Release date:** 2026-04-16 |
| 4 | +**Prior release:** 1.0.0-rc2 (2026-04-10) |
| 5 | +**Tag:** `v1.0.0` |
| 6 | + |
| 7 | +## What this release is |
| 8 | + |
| 9 | +This is the first stable release of the Op^3 integrated numerical framework for |
| 10 | +offshore wind turbine foundation assessment. The release is cut from the |
| 11 | +same codebase as `1.0.0-rc2` with no functional changes; it is a stable |
| 12 | +version tag to support the pending submission of the framework paper to |
| 13 | +*Advances in Engineering Software* (paper J10 in the KSK publication roster) |
| 14 | +and to provide a reproducible citation for papers J2, J5, J6, J8, and J9 |
| 15 | +that depend on the framework. |
| 16 | + |
| 17 | +## What is in the release |
| 18 | + |
| 19 | +Same substance as 1.0.0-rc2: |
| 20 | + |
| 21 | +- **OptumGX three-dimensional limit analysis** integration with automated |
| 22 | + parameter extraction for four foundation modes (A fixed, B six-by-six |
| 23 | + stiffness, C distributed BNWF, D dissipation-weighted generalised BNWF). |
| 24 | +- **OpenSeesPy structural dynamics** integration with eigenvalue sweep, |
| 25 | + pushover analysis, and cyclic degradation. |
| 26 | +- **OpenFAST v5 aero-servo-hydro-elastic** coupling via SoilDyn mode with |
| 27 | + six-by-six stiffness handoff. |
| 28 | +- **Fatigue module** per DNV-RP-C203 with rainflow counting. |
| 29 | +- **Op^3 Studio web application** with eight-tab interactive UI, large- |
| 30 | + language-model chat sandbox, and Three.js three-dimensional visualisation. |
| 31 | +- **Mooring anchor module** with novel dissipation-centroid padeye method |
| 32 | + and one hundred thirty-four validation tests. |
| 33 | +- **Thirty-nine cross-validation benchmarks** from twenty-five-plus published |
| 34 | + sources at ninety-two percent coverage. |
| 35 | + |
| 36 | +## Verification |
| 37 | + |
| 38 | +Test suite at the release tag: |
| 39 | + |
| 40 | +- 362 passed, 11 skipped (optional data not bundled in this checkout). |
| 41 | +- Zero failures after the 2026-04-16 cp949 encoding fix in |
| 42 | + `tests/test_op3_framework.py::TestSSOTConfig::test_yaml_exists_and_parses` |
| 43 | + (explicit `encoding="utf-8"` added). |
| 44 | + |
| 45 | +## Installation |
| 46 | + |
| 47 | +```bash |
| 48 | +pip install op3-framework==1.0.0 |
| 49 | +``` |
| 50 | + |
| 51 | +or directly from this release on GitHub: |
| 52 | + |
| 53 | +```bash |
| 54 | +pip install https://github.com/ksk5429/numerical_model/releases/download/v1.0.0/op3_framework-1.0.0-py3-none-any.whl |
| 55 | +``` |
| 56 | + |
| 57 | +## Citing |
| 58 | + |
| 59 | +``` |
| 60 | +@software{op3_2026, |
| 61 | + author = {Kim, Kyeong Sun}, |
| 62 | + title = {Op^3: OptumGX-OpenSeesPy-OpenFAST integrated numerical |
| 63 | + modeling framework for offshore wind turbines}, |
| 64 | + version = {1.0.0}, |
| 65 | + date = {2026-04-16}, |
| 66 | + doi = {10.5281/zenodo.19476542}, |
| 67 | + url = {https://github.com/ksk5429/numerical_model} |
| 68 | +} |
| 69 | +``` |
| 70 | + |
| 71 | +## Changes versus 1.0.0-rc2 |
| 72 | + |
| 73 | +- Version string bumped to `1.0.0` in `op3/__init__.py`, |
| 74 | + `pyproject.toml`, `CITATION.cff`, and `docs/sphinx/conf.py`. |
| 75 | +- `__release_date__` attribute added to `op3/__init__.py`. |
| 76 | +- Pre-existing Windows cp949 encoding bug in |
| 77 | + `tests/test_op3_framework.py::TestSSOTConfig::test_yaml_exists_and_parses` |
| 78 | + fixed by specifying `encoding="utf-8"` when reading the YAML that |
| 79 | + contains Korean site metadata. |
| 80 | + |
| 81 | +No library behaviour changes. Papers J2, J5, J6, J8, and J9 that cite |
| 82 | +the framework can use `1.0.0` as a pinned version. |
| 83 | + |
| 84 | +## Known limitations carried from 1.0.0-rc2 |
| 85 | + |
| 86 | +- Scour mode validated on Gunsan normally consolidated clay only; |
| 87 | + applicability boundaries to other soil classes are discussed in |
| 88 | + the companion OE-D-26-00984 paper. |
| 89 | +- Anchor mode validated on one hundred thirty-four reference tests; |
| 90 | + field validation is open. |
| 91 | +- OpenFAST coupling is tested against NREL reference turbines; |
| 92 | + utility-scale commercial OWT turbines are not yet validated. |
| 93 | +- Op^3 Studio is a research prototype, not production-hardened. |
| 94 | + |
| 95 | +## Manual publish steps (pending after local build) |
| 96 | + |
| 97 | +The following steps require user credentials and cannot be completed |
| 98 | +automatically. They are listed for user action. |
| 99 | + |
| 100 | +1. **Rotate the PyPI token** (pending manual task #1 in memory). The |
| 101 | + previous token was exposed in conversation and should be revoked at |
| 102 | + <https://pypi.org/manage/account/token/>. Generate a new token scoped |
| 103 | + to `op3-framework` and store it in `~/.pypirc` or the environment |
| 104 | + variable `TWINE_PASSWORD`. |
| 105 | + |
| 106 | +2. **Upload wheel and source distribution to PyPI.** |
| 107 | + |
| 108 | + ```bash |
| 109 | + cd F:/GITHUB3/numerical_model_fresh |
| 110 | + python -m twine upload dist/op3_framework-1.0.0* |
| 111 | + ``` |
| 112 | + |
| 113 | +3. **Create the Git tag and push.** |
| 114 | + |
| 115 | + ```bash |
| 116 | + cd F:/GITHUB3/numerical_model_fresh |
| 117 | + git add -A |
| 118 | + git commit -m "release: v1.0.0" |
| 119 | + git tag -a v1.0.0 -m "Op^3 v1.0.0 stable release" |
| 120 | + git push origin main --tags |
| 121 | + ``` |
| 122 | + |
| 123 | +4. **Create the GitHub release.** Either in the web UI at |
| 124 | + <https://github.com/ksk5429/numerical_model/releases/new?tag=v1.0.0> |
| 125 | + or via the `gh` CLI: |
| 126 | + |
| 127 | + ```bash |
| 128 | + gh release create v1.0.0 dist/op3_framework-1.0.0-py3-none-any.whl \ |
| 129 | + dist/op3_framework-1.0.0.tar.gz \ |
| 130 | + --title "Op^3 v1.0.0" \ |
| 131 | + --notes-file RELEASE_NOTES_v1.0.0.md |
| 132 | + ``` |
| 133 | + |
| 134 | +5. **Zenodo mint.** Zenodo automatically mints a DOI for the GitHub |
| 135 | + release if the repository has the Zenodo integration enabled. Verify |
| 136 | + at <https://zenodo.org/account/settings/github/> that the repository |
| 137 | + is switched on. The concept DOI `10.5281/zenodo.19476542` stays |
| 138 | + constant; a new version DOI is assigned to this release. |
| 139 | + |
| 140 | +6. **Update README badge.** After PyPI upload succeeds, the README |
| 141 | + version badge should automatically reflect `1.0.0`. Verify manually. |
| 142 | + |
| 143 | +## What does not happen in this release |
| 144 | + |
| 145 | +- No breaking API changes. |
| 146 | +- No dependency changes. |
| 147 | +- No new tests or benchmarks (the test suite remains at 362 passing). |
| 148 | +- No new documentation pages; the Sphinx content is identical to rc2. |
0 commit comments