provide time info from realization file#172
Open
mkarim-rtx wants to merge 10 commits into
Open
Conversation
|
We do not want to hardcode ngen to have to know what model is being used. Do not merge this as is. |
Author
@kyle-larkin @jswade-rtx I have made ngen model agnostic. Please review. |
This was referenced May 5, 2026
|
I tested noah-owp, ueb, and topoflow-glacier with the new updates and confirmed they could be run without time info in the configs |
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.
https://jira.nextgenwaterprediction.com/browse/NGWPC-10207
https://jira.nextgenwaterprediction.com/browse/NGWPC-10194
https://jira.nextgenwaterprediction.com/browse/NGWPC-10157
Centralizing time control via NGen across UEB, TopoFlow-Glacier, and Noah-OWP
This task standardizes how simulation time (start, end, timestep) is handled across multiple models—UEB, TopoFlow-Glacier, and Noah-OWP-Modular—by shifting control from model-specific configuration files to the NGen Framework.
Objective
Ensure all models:
Ignore hardcoded config time (start/end/dt)
Use NGen-provided realization time dynamically via BMI
Maintain compatibility with existing workflows with minimal code changes
What was done
NGen (Core Change)
Added logic to pass realization time through BMI inputs:
start_utime
end_utime
dt_seconds
Ensures a single source of truth for time control
Applies uniformly across all BMI models
PR: provide time info from realization file by mkarim-rtx · Pull Request #172 · NGWPC/ngen
UEB
Replaced reliance on config timing with runtime override
Implemented:
Temporary rewrite of UEB control file before Initialize()
Injected NGen time into rewritten file
Result:
UEB runs using NGen time without modifying original config
Zero changes required in UEB internal physics
PR: Taking time info from ngen by mkarim-rtx · Pull Request #14 · NGWPC/ueb_bmi
TopoFlow-Glacier
Added full BMI-level time handling:
adapter_set_realization_times()
_apply_realization_time_from_strings()
Logic:
Prefer NGen time if provided
Fallback to config only if missing
Result:
Fully decoupled from YAML time configuration
Works seamlessly with NGen forcing window
PR: Pull requests · NGWPC/topoflow-glacier
Removed dependency on internal RunModule time handling
Implemented:
BMI-side apply_realization_time_config logic
Updated NamelistRead.f90:
Made startdate and enddate optional
Added placeholder defaults instead of fatal error
Result:
Model initializes without config time
Real time applied later via BMI inputs from NGen
PR: updates to use time fron NGEN by mkarim-rtx · Pull Request #8 · NGWPC/noah-owp-modular
Why this change was needed
Before
Each model:
Required its own config-based time
Could conflict with NGen realization
Caused errors or inconsistencies
After
NGen controls time globally
Models become:
Consistent
Easier to integrate
Less error-prone
Final Outcome
All three models now:
Use NGen-driven time
Do not require config start/end dates
Maintain backward compatibility via fallbacks
Eliminates duplicated logic and synchronization issues across models