[3pt] PR: Manning roughness optimization #1577
Open
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.
This PR focuses on Manning roughness optimization scripts. In earlier versions of FIM (FIM v5 or earlier), global default values of 0.06 for in-channel (channel_n) and 0.12 for overbank (overbank_n) coefficients have been assigned to the Manning equation to estimate discharge for each stage along a synthetic rating curve (SRC). This PR introduces two Python scripts of
/src/manningN_optimization.py
andtools/run_test_case_mannN_optz_func.py
, for each HUC8 for which we have the benchmark data. Applied benchmark data comprises:The algorithm iteratively updates Manning coefficients to minimize false negatives and false positives in inundated grid cells during each optimization cycle. The objective functions are defined as follows:
OBF_BLE = Minimize (false_negatives_count_100y+false_positives_count_100y)
OBF_AHPS = Minimize (false_negatives_count_action+false_positives_count_action+
false_negatives_count_minor+false_positives_count_minor+
false_negatives_count_moderate+ false_positives_count_moderate+
false_negatives_count_major+false_positives_count_major)
The optimization algorithm is subject to several constraints, including:
The optimization algorithm employs a differential evolution approach, initialized with a population of 15 pairs of in-channel (channel_n) and overbank (overbank_n) Manning’s roughness coefficients.
Closes #1519
Additions
/src/manningN_optimization.py
: Main script that optimizes Manning’s roughness coefficients for each HUC8./tools/run_test_case_mannN_optz_func.py
: Contains required functions formanningN_optimization.py
Testing
This PR has been tested on HUCs in the UAT domain.
Deployment Plan (For developer use)
How does the changes affect the product?
Issuer Checklist (For developer use)
You may update this checklist before and/or after creating the PR. If you're unsure about any of them, please ask, we're here to help! These items are what we are going to look for before merging your code.
[_pt] PR: <description>
dev
branch (the default branch), you have a descriptive Feature Branch name using the format:dev-<description-of-change>
(e.g.dev-revise-levee-masking
)dev
branchpre-commit
hooks were run locally4.x.x.x
Merge Checklist (For Technical Lead use only)