Repository navigation
fix(openfast): retries at any dtM, CalcSteady, FAST.Farm range files and full notes - #98
Merged
Merged
Conversation
The OpenFAST shell read a line's notes into 1024 characters while the summary held 2048, so a long list was cut in mid-word, and a cable's own 1024-character note buffer dropped the notes past it, the omission marker with them. A line with stiffener notes at both ends, the friction note and the dtM advisory lost the friction note and the tail of the advisory. All the holders now share CD_INIT_NOTE_LEN (32 KiB): a line reports fewer than 32 notes of at most 1024 characters, so every note fits. Results are unchanged. Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
A rebuilt instance lost the map of its linearization states, so a run that rebuilt before it linearized stopped with "dXdu exists only for a linearization run": CalcSteady rewinds to its operating point through the rebuild, and a restart of a linearizing run takes the same path. The parameters now record that the run linearizes, and the rebuild maps the states again. This adds a parameter to the OpenFAST checkpoint. Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
CalcSteady linearizes at its saved operating points in time order, so after the rewind to the first one each further restore goes forward. The rebuild took that for a damaged history and stopped the run at the second operating point. A forward restore has no rows to trim and now goes on. Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
…leted CD_End took a run that had reached TMax for a completed one. FAST.Farm ends its turbines at the last whole DT_Low, so a per-turbine instance with a TMax off that grid completed normally and wrote no range file; a run that CalcSteady stopped early did the same; and an abort in another module after CableDyn's last commit was written as if complete. The hosts now say it: ExitThisProgram_T sets CD%m%HostComplete after a run without an error, and FAST.Farm, which ends its turbines the same way on an abort, sets it after its last step (patches 0014 and 0023). CD_End writes on that signal alone. A process that only restored a checkpoint and stepped nothing (-VTKLin) leaves the file as it is. Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
… its restores When the glue's solver retries a step it copies the states of the step's start back over the predicted ones, the OtherState included. CableDyn took that for a rewound checkpoint: at dtM = DT it rebuilt the whole model at every retry, and at dtM > DT it stopped, because the retried call lies inside the mooring interval and the rebuild accepts only a commit. A retry is now recognised for what it is (step_retry) and takes the aggregate's step-start snapshot, at any ratio. The load predictor, which shifts once per mooring step, is mirrored again into the copied-back OtherState. A retried step matches one that was never retried bit for bit. That held at dtM = DT only after a change in the cable: an output probe after the first pass cleared the cached committed force, and the restore then dropped it, though the step had started from it. A restore now judges the cache as it stood when the step began. With retries gone from the rebuild, what remains in a run is the restore of an operating point, so a restore no longer drops rows or range samples: .CD.out and the range graphs run to the end of a CalcSteady run. They are abandoned only if the run steps on from a restored state (resume_after_rewind). A rebuild no longer writes .CD.static.out: its state is the checkpoint's, and a restart overwrote the static equilibrium with it. Signed-off-by: Jae Hoon Seo <jaehoon.seo@inha.ac.kr>
Owner
Author
|
@codex review |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Keep them coming! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
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.
Summary
Fixes from running the coupled route end to end in OpenFAST and FAST.Farm.
dtM/DT. The glue copies the step-start OtherState back over the predicted one, which CableDyn read as a rewound checkpoint: atdtM = DTit rebuilt the model on every retry, and atdtM > DTit stopped. A retry now restores the aggregate's step-start snapshot, and the load predictor is mirrored back into OtherState. A retried step matches an unretried one, including across a restart.CalcSteady: the linearisation state map survives a rebuild, a second operating point no longer stops the run, and.CD.outand the range graphs run to the end of the run.DT_Low, and not after an error. A turbine's own instance in FAST.Farm writes them as<RootName>.T<n>.CD.Line<L>.range.out. Patch 0014 changes and patch 0023 is new..CD.static.out.Checkpoint format: Parameter gains
Linearizeand Misc gainsHostComplete, so checkpoints from earlier builds cannot be restarted.Checks
Real runs, ModCoupling 3, forced retries, 0 rebuilds:
dtM = DT2 DT4 DT2 DT, predictor offdtM= 1, 2 and 4DTand three retry and restore modes:.CD.outand the range files bit-identical to the unretried run, in double and single precision.CalcSteadywith 1 and 2 operating points:.CD.outand range samples agree to the end of the run..CD.outto print rounding; an aborting turbine writes none.OPENBLAS_CORETYPE=Prescottand in Debug; pytest passes.The CHANGELOG entry lands with the release batch.