Repository navigation
Screen ellipsoid ode45 cases against refined full-duration source - #655
Merged
Merged
Conversation
This was referenced Oct 24, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Scope
Screen repository-local copies of the pinned
Nonlinear_Hydro/ode45/RegularandRegularCICapplications 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 itsqualified_motionstatus visible and unchanged.Source provenance and controls
The source workflow checks out pinned WEC-Sim core
0753b2e47f2457c078751dcfe5d251d1767b80aband WEC-Sim_Applicationsd53d4d4c9eda2581f04204f5d394a6ef84bb099e. 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, solverMaxStep). The first three arms also use their physical step fordtOut; the finest arm usesdtOut=0.005s 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.00125versus0.005s. 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.
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.