Skip to content

Screen ellipsoid ode45 cases against refined full-duration source - #655

Merged
cmccomb merged 9 commits into
masterfrom
codex/ellipsoid-ode45-599
Oct 24, 2026
Merged

cmccomb merged 9 commits into
masterfrom
codex/ellipsoid-ode45-599

Conversation

@cmccomb

@cmccomb cmccomb commented Oct 24, 2026 •

Copy link
Copy Markdown
Member

Scope

Screen repository-local copies of the pinned Nonlinear_Hydro/ode45/Regular and RegularCIC applications at physical steps 0.005, 0.0025, 0.00125, and 0.000625 s with MATLAB R2025b. Pair the step-screened source with independently advanced, full-duration public Python runs. Keep the published 0.05 s input, original strict diagnostic, and its qualified_motion status visible and unchanged.

Source provenance and controls

The source workflow checks out pinned WEC-Sim core 0753b2e47f2457c078751dcfe5d251d1767b80ab and WEC-Sim_Applications d53d4d4c9eda2581f04204f5d394a6ef84bb099e. Only Python-repository scripts, fixtures, tests, and workflow files change in this PR. Each source arm runs in a fresh R2025b process on a copied application input, retains the full 150 s duration, and checks all physical clocks (dt, nonlinearDt, cicDt, solver MaxStep). The first three arms also use their physical step for dtOut; the finest arm uses dtOut=0.005 s with all physical clocks at 0.000625 s. Its output clock is an explicit derived-source limitation.

The controlled output-grid A/B #659 established exact common-grid trajectory and PTO equality at a 0.00125 s physical step for dtOut=0.00125 versus 0.005 s. It did not establish 0.000625 s output neutrality. Multiple all-clock 0.000625 s attempts, including an isolated process #660, lost hosted runners during MATLAB simulation before a physical gate or artifact was available. The mixed-output source is therefore explicitly labeled as a derived reference, while the original 0.05 s diagnostic remains in force.

Measured four-arm source screen

The corrected active-axis first three arms came from R2025b run 40107175117. The finest Regular arm came from run 40106411780, and the finest RegularCIC arm from run 40107064277. Their exact commits, fixture hashes, and full measured sequences are in the fixture README. The committed source archive preserves all eleven sampled channels at every arm, checked settings, HDF5, and STL for ordinary CI.

Case Final source heave step Speed step PTO force step PTO power step Final source signed-work step
Regular 0.000231452 m 0.000341197 m/s 409.436 N 333.393 W 0.069817%
RegularCIC 0.000241166 m 0.000362903 m/s 435.484 N 360.546 W 0.073934%

All four pointwise changes contract at both intermediate stages and finish below the predeclared source limits. Full available-grid and common-grid signed-work sequences are positive, contract by ratios below 0.7, and have final changes below the predeclared 0.1% source-work limit. Wave/time identity, source settings, archived 0.005 s continuity, active PTO damping law, all 38 BEM HDF5 datasets, and STL identity are checked. The 0.00125 s source restoring force samples the preceding state because its 1e-7 s added-mass feedback delay is shorter than that solver step; the finest output grid cannot expose every immediate preceding state.

Independent Python gate

Python advances from the checked HDF5/STL and wave inputs at 0.0025 and 0.00125 s for the full 150 s. Both Python self-step sequences meet the original 0.1 mm, 0.1 mm/s, 100 N, and 100 W limits. At the finest source common grid, direct Python heave/speed/PTO-force/PTO-power errors are 0.000231346 m / 0.000338943 m/s / 406.732 N / 328.493 W for Regular and 0.000241018 m / 0.000362768 m/s / 435.321 N / 359.533 W for RegularCIC. Python/source signed-work differences are 0.069727% and 0.073878%, both below the unchanged 0.1% direct gate. The portable test recomputes these values in ordinary Python CI; the fresh MATLAB workflow recomputes them against source histories generated on that exact PR head.

No CSV, badge, or original published-input status promotion is part of this PR. Related: #599 and the unchanged-input gap in #624.

Exact-head validation

At commit 9b3143bae027db6fb9daa5892a19634658564a57, the fresh four-arm R2025b convergence workflow 40110117845 passed both Regular and RegularCIC, including every source contraction/work gate and the independent full-duration Python physical gate. The output-grid A/B workflow 40110117847 passed both cases, and Python tests workflow 40110117904 passed all six jobs, including the portable archive test. Every one of the eight fresh source histories and all settings matches the committed archive exactly (maximum numeric difference 0); all 38 HDF5 datasets match in value and the STL files match byte-for-byte. The source artifact's signed-work sequences reproduce the values above exactly.

@cmccomb
cmccomb marked this pull request as ready for review October 24, 2026 16:46
@cmccomb
cmccomb merged commit 84890f6 into master Oct 24, 2026
10 checks passed
@cmccomb
cmccomb deleted the codex/ellipsoid-ode45-599 branch October 24, 2026 16:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant