Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
4338 commits
Select commit Hold shift + click to select a range
8681010
Print CMake root source directory in configuration summary
PhilMiller Sep 10, 2025
0000047
GeoJSON: Add definitions for a 'Sentinel' feature type besides the on…
PhilMiller Sep 10, 2025
86605f3
Add sentinel wb-SENTINEL-nex-NNN features downstream of otherwise-ter…
PhilMiller Sep 10, 2025
be81661
Remove validation of nexus partition boundaries arbitrarily at partit…
PhilMiller Sep 10, 2025
1f7253c
Adjust partition sizes for added sentinel features
PhilMiller Sep 10, 2025
8d99b6a
Add missing support for added SentinelFeature in FeatureVisitor test
PhilMiller Sep 10, 2025
6b26706
Comment about what's going on with sentinel flowpaths
PhilMiller Sep 11, 2025
1dabc87
fix: don't error out on sentinal features
hellkite500 Feb 2, 2026
5ff4e10
Add GetValuePtrInt for Fortran Adapter
idtodd Feb 12, 2026
1455562
Update t-route submod ref fixing missed ewts helper call
cmaynard-ngwpc Feb 12, 2026
83e8d1d
Update t-route submod ref
cmaynard-ngwpc Feb 12, 2026
05acc5c
Merge pull request #149 from NGWPC/cmaynard_update_development_submod…
cmaynard-ngwpc Feb 13, 2026
ba42226
Add topoflow-glacier submodule
jswade-rtx Feb 16, 2026
37fbec0
Fortran state hackery
idtodd Feb 17, 2026
8a88b4d
Add variable name
idtodd Feb 17, 2026
15569dc
Merge remote-tracking branch 'NOAA-OWP/master' into development
idtodd Feb 12, 2026
94439fd
Add logging library for access to Logger.hpp
idtodd Feb 12, 2026
c550648
Update Boost version requirement
idtodd Feb 12, 2026
e2ee4dc
Fix download URL to Boost 1.86.0
idtodd Feb 12, 2026
0eb20d6
fixing boost version in code scan
miguelp1986 Feb 18, 2026
9ab664b
fixing boost version in code scan
miguelp1986 Feb 18, 2026
901f9c7
fixing boost version in code scan
miguelp1986 Feb 18, 2026
bf843f9
cicd updates
miguelp1986 Feb 18, 2026
95051a9
cicd updates
miguelp1986 Feb 18, 2026
3ed8fa4
Merge pull request #152 from NGWPC/pena-pipeline-updates
miguelp1986 Feb 18, 2026
c82b2e1
Update submodules for testing
idtodd Feb 18, 2026
753c09a
Remove explicit pip install call for package nextgen_forcings_ewts
mxkpp Jan 25, 2026
32e0eb4
Add new Dockerfile arg to specify the full name of the ngen-forcing b…
mxkpp Feb 1, 2026
f033660
updates to cicd and dockerfile
miguelp1986 Feb 5, 2026
2d6de6e
updated cicd file
miguelp1986 Feb 5, 2026
e39ba46
Added unit conversion code to ForcingsEngineLumpedDataProvider which …
sivasankkar Feb 4, 2026
f66b321
updated cicd file
miguelp1986 Feb 11, 2026
8c8f026
updated cicd file
miguelp1986 Feb 11, 2026
ae14cc8
updated cicd file
miguelp1986 Feb 11, 2026
fa377bf
updated cicd file
miguelp1986 Feb 11, 2026
c7fc7d4
updated cicd file
miguelp1986 Feb 11, 2026
9e0d470
Ignore git info
peterkronenberg-rtx Feb 9, 2026
ba9a9f2
Merge remote-tracking branch 'NOAA-OWP/master' into development
idtodd Feb 12, 2026
0e0c5ad
Add logging library for access to Logger.hpp
idtodd Feb 12, 2026
707f177
Update Boost version requirement
idtodd Feb 12, 2026
feb59b1
Fix download URL to Boost 1.86.0
idtodd Feb 12, 2026
3cca499
fixing boost version in code scan
miguelp1986 Feb 18, 2026
6d25073
fixing boost version in code scan
miguelp1986 Feb 18, 2026
4373702
fixing boost version in code scan
miguelp1986 Feb 18, 2026
31db233
cicd updates
miguelp1986 Feb 18, 2026
15fbc1a
cicd updates
miguelp1986 Feb 18, 2026
a8ac4dc
Flesh out API for state saving and restoring, with adjusted use in Bm…
PhilMiller Nov 25, 2025
0dc8944
Add logic and structures for parsing state saving configuration from …
PhilMiller Dec 9, 2025
4bf8935
State saving for multi-BMI
idtodd Jan 16, 2026
815bd73
Use Boost for serializing Multi-BMI
idtodd Feb 6, 2026
3751624
Remove duplicate declaration
idtodd Feb 18, 2026
8ca9cbd
Remove old state calls
idtodd Feb 18, 2026
f7a8046
Remove old state saving definitions
idtodd Feb 18, 2026
00ca29c
Update submodule references for bug fixes
idtodd Feb 18, 2026
1ed7c80
Update submodules for testing
idtodd Feb 18, 2026
785aaab
Update submodule for snow17 fix
idtodd Feb 19, 2026
e7f378f
Merge remote-tracking branch 'upstream/master' into idt-merge-owp-mas…
idtodd Feb 20, 2026
a299b88
Merge resolution from OWP Master
idtodd Feb 20, 2026
3d283fd
Merge from OWP Master (Maintain Commit Hash)
idtodd Feb 20, 2026
27d2dcb
Update submodels for bug fixes
idtodd Feb 20, 2026
e8bcf22
Fortran packages report byte size of data
idtodd Feb 20, 2026
296560c
Update topoflow-glacier branch
jswade-rtx Feb 24, 2026
3fa4a34
Align Fortran state size with sizeof int
idtodd Feb 24, 2026
6dbcfc5
Revert changes from OWP
idtodd Feb 25, 2026
5bc2c86
Update topoflow-glacier submodule to dev merge
jswade-rtx Feb 25, 2026
fc7ea0b
Merge pull request #156 from NGWPC/jwade_integrate_topoflow_glacier
peterkronenberg-rtx Feb 25, 2026
c9a1fdd
Update references for bug fixes
idtodd Feb 26, 2026
7ca4f2a
Dynamically check Fortran state size for load alignment
idtodd Feb 26, 2026
4c247a2
Update repo references
idtodd Feb 26, 2026
e0cfde0
Revert HY_PointHydroNexusRemote Changes from OWP
idtodd Feb 26, 2026
4d96a4f
Fortran reports size in bytes
idtodd Mar 2, 2026
a132555
Update reference for snow17 fix
idtodd Mar 3, 2026
fff3a33
updated cicd file
miguelp1986 Mar 4, 2026
d02e54f
Merge pull request #158 from NGWPC/pena-cicd-updates
miguelp1986 Mar 4, 2026
4d5557a
Update Topmodel reference for bug fix
idtodd Mar 5, 2026
6a46fba
Update reference for Topmodel bug fix
idtodd Mar 5, 2026
3c2b12a
Update Topmodel reference for bug fix
idtodd Mar 9, 2026
7818d2c
Catch csv file errors and log exceptions initializing formulation
cmaynard-ngwpc Dec 4, 2025
65219f1
Merge remote-tracking branch 'NOAA-OWP/master' into development
idtodd Feb 12, 2026
611e66c
feat(mass_balance): define the bmi mass balance protocol
hellkite500 Sep 16, 2025
269135c
test(bmi_protocols): add mock for BMI protocol testing
hellkite500 Sep 16, 2025
701ce05
feat(ngen): add mass balance check for all bmi modules during runtime
hellkite500 Sep 17, 2025
c593a30
feat(bmi-protocols)!: v0.2 of the protocols lib using expected semant…
hellkite500 Sep 27, 2025
e723e15
fix(protocols): better default handling; add missing return
hellkite500 Oct 23, 2025
0e9c677
test: point formulation tests to use same protocol mock
hellkite500 Oct 23, 2025
07578de
fix(mpi): prevent potential deadlock scenario
hellkite500 Feb 4, 2026
9033ab7
fix(mpi): better handling of pending communication in remote nexus de…
hellkite500 Feb 4, 2026
2313b80
Merge resolution from OWP Master
idtodd Feb 20, 2026
c3a4a45
Add topoflow-glacier submodule
jswade-rtx Feb 16, 2026
6109298
Update topoflow-glacier branch
jswade-rtx Feb 24, 2026
de56f9e
Update topoflow-glacier submodule to dev merge
jswade-rtx Feb 25, 2026
094c1bf
Revert changes from OWP
idtodd Feb 25, 2026
af1a968
updated cicd file
miguelp1986 Mar 4, 2026
0504534
Flesh out API for state saving and restoring, with adjusted use in Bm…
PhilMiller Nov 25, 2025
fea5eb4
State saving for multi-BMI
idtodd Jan 16, 2026
ac0f71e
Cold start loading
idtodd Jan 20, 2026
279c8bd
Use Boost for serializing Multi-BMI
idtodd Feb 6, 2026
ed13a81
Merge remote-tracking branch 'NOAA-OWP/master' into development
idtodd Feb 12, 2026
32809d2
Update submodule references for bug fixes
idtodd Feb 18, 2026
bd0c2a1
Update submodels for bug fixes
idtodd Feb 20, 2026
7ab1527
Align Fortran state size with sizeof int
idtodd Feb 24, 2026
3f16a29
Fortran reports size in bytes
idtodd Mar 2, 2026
cab402d
Fix rebase problems
idtodd Mar 10, 2026
7dae404
Remove commented old code
idtodd Mar 10, 2026
af1e2e4
Log end of run saving
idtodd Mar 10, 2026
33dd57d
Fix documentation
idtodd Mar 10, 2026
1239ac1
Update submodule pointers for state saving
jswade-rtx Mar 12, 2026
211dc95
Send NGEN's delta time to T-route
idtodd Mar 13, 2026
2e02e02
Resolve merge conflicts
idtodd Mar 13, 2026
4a3c4dd
Update submodule references to development branches
idtodd Mar 13, 2026
8c95e05
Add State Saving/Loading API for NGEN
idtodd Mar 13, 2026
361f533
Update sac-sma and smp submodules to new commits
jswade-rtx Mar 23, 2026
8221292
Update setup-trivy action to v0.2.6
cnealen Mar 23, 2026
bc299b5
Merge pull request #161 from NGWPC/jwade_couple_sacsma_smp
jswade-rtx Mar 23, 2026
3750fee
Merge pull request #162 from NGWPC/feature/update-trivy-0.2.6
cnealen Mar 23, 2026
cff8211
Use new nwm-ewts libraries and python package
cmaynard-ngwpc Mar 10, 2026
2e9dc48
Update submodule references to their nwm-ewts feature branches
cmaynard-ngwpc Mar 11, 2026
9c37b67
updated Dockerfile to include EWTS
miguelp1986 Mar 13, 2026
1dace8a
Updates to Dockerfile comments for clarification
cmaynard-ngwpc Mar 13, 2026
4380a56
fixing cloning issue with ewts
miguelp1986 Mar 13, 2026
b027df4
added ewts path to t route build
miguelp1986 Mar 13, 2026
552543a
dockerfile updates
miguelp1986 Mar 13, 2026
a6e7568
dockerfile updates
miguelp1986 Mar 13, 2026
c6f2e62
dockerfile updates
miguelp1986 Mar 13, 2026
2738b93
fix: change ewts linkage from PRIVATE to PUBLIC in all CMakeLists
miguelp1986 Mar 13, 2026
c2ef526
Fix ewts-verify stage to handle lib64 install path
miguelp1986 Mar 13, 2026
5086d5e
removed ewts verification stage
miguelp1986 Mar 13, 2026
22e9e22
Update submod refs for ewts python bind
cmaynard-ngwpc Mar 17, 2026
c091601
added ewts build arguments to ngwpc cicd file
miguelp1986 Mar 17, 2026
83355ee
added ewts to ngwpc cicd file in codeql step
miguelp1986 Mar 17, 2026
66f7f51
cicd updates
miguelp1986 Mar 17, 2026
7118c62
cicd updates
miguelp1986 Mar 17, 2026
c72209e
Add ewts to ngen state saving.
cmaynard-ngwpc Mar 18, 2026
40f6058
Update lstm submod ref
cmaynard-ngwpc Mar 18, 2026
ed60232
Updates SFT submod ref
cmaynard-ngwpc Mar 19, 2026
b6c2423
Updaate SMP submod ref for sac-sma recent merge to development
cmaynard-ngwpc Mar 23, 2026
828cccf
Update sac-sma submod ref
cmaynard-ngwpc Mar 24, 2026
ab50e99
Update submod refs for ewts branches merged to development
cmaynard-ngwpc Mar 25, 2026
4991fec
Merge pull request #164 from NGWPC/cmaynard_ewts_separate_repo
cmaynard-ngwpc Mar 25, 2026
a3f6cc6
merged ngen development with sfincs and schism updates
mkarim-rtx Apr 1, 2026
001f68e
merged ngen development with sfincs and schism updates
mkarim-rtx Apr 1, 2026
7665894
fixing oci labels
miguelp1986 Apr 3, 2026
ac33091
removed oci label created since creation date is already in image, an…
miguelp1986 Apr 3, 2026
7206fee
Merge pull request #165 from NGWPC/mpena-oci-labels
miguelp1986 Apr 4, 2026
9ac4e48
copied sfincs update and fixed merge mistake
mkarim-rtx Apr 5, 2026
f954dcc
copied sfincs update and fixed merge mistake
mkarim-rtx Apr 5, 2026
addbbe5
latest updates for SFINCS
mkarim-rtx Apr 9, 2026
54a7aed
latest updates for SFINCS
mkarim-rtx Apr 9, 2026
9a0f5c0
Add ewts cache bust argument to Dockerfile
cmaynard-ngwpc Apr 9, 2026
5ce010e
Map NHF hydrofabric to old field names
idtodd Mar 11, 2026
618d14b
Improved messaging for geopackage error handling
idtodd Mar 12, 2026
e488f5d
Account for realization config json not including feature type prefix
idtodd Mar 18, 2026
f94fa9e
Change IIF to CASE for sqlite 3.26 support
idtodd Mar 25, 2026
24a10fc
State saving for multi-BMI
idtodd Jan 16, 2026
de9bba6
Cold start loading
idtodd Jan 20, 2026
ad0af73
Docker updates for python ewts packages
cmaynard-ngwpc Jan 8, 2026
3363a49
Use Boost for serializing Multi-BMI
idtodd Feb 6, 2026
430b017
updates to cicd and dockerfile
miguelp1986 Feb 5, 2026
54e3ca7
updated cicd file
miguelp1986 Feb 11, 2026
8063085
Merge remote-tracking branch 'NOAA-OWP/master' into development
idtodd Feb 12, 2026
997d48a
Align Fortran state size with sizeof int
idtodd Feb 24, 2026
3185098
Fortran reports size in bytes
idtodd Mar 2, 2026
50a7e15
feat(ngen): add mass balance check for all bmi modules during runtime
hellkite500 Sep 17, 2025
cf48a18
Revert changes from OWP
idtodd Feb 25, 2026
0c1a4ee
Use new nwm-ewts libraries and python package
cmaynard-ngwpc Mar 10, 2026
1ca6b56
EWST function name change
idtodd Mar 26, 2026
ce81551
Fix rebase problems
idtodd Mar 26, 2026
0faf55a
Ensure realization catchment IDs start with "cat-" when searching the…
idtodd Apr 2, 2026
1b44131
Add logic and structures for parsing state saving configuration from …
PhilMiller Dec 9, 2025
ef6218d
State saving for multi-BMI
idtodd Jan 16, 2026
e3a1c93
Cold start loading
idtodd Jan 20, 2026
b6f5d86
Use Boost for serializing Multi-BMI
idtodd Feb 6, 2026
b07cff6
updates to cicd and dockerfile
miguelp1986 Feb 5, 2026
09683a1
updated cicd file
miguelp1986 Feb 11, 2026
a801b29
Merge remote-tracking branch 'NOAA-OWP/master' into development
idtodd Feb 12, 2026
744d93a
Add topoflow-glacier submodule
jswade-rtx Feb 16, 2026
2e3b86b
Revert changes from OWP
idtodd Feb 25, 2026
984a453
Use new nwm-ewts libraries and python package
cmaynard-ngwpc Mar 10, 2026
d05d9af
Use Boost for serializing Multi-BMI
idtodd Feb 6, 2026
ceba228
Fortran state hackery
idtodd Feb 17, 2026
d84585a
Merge remote-tracking branch 'NOAA-OWP/master' into development
idtodd Feb 12, 2026
c2ae76a
Revert changes from OWP
idtodd Feb 25, 2026
d6c5f92
Fix rebase problems
idtodd Mar 26, 2026
8cd5fa8
Remove duplicate function declaration
idtodd Apr 6, 2026
02b4791
Ignore sentinels made up by partitionGenerator
idtodd Apr 7, 2026
c6e3dd8
Fix whereclause builder when sentinels are included
idtodd Apr 7, 2026
5aebdca
Pass catchment and nexus results to T-Route
idtodd Apr 8, 2026
6391652
Add documentation
idtodd Apr 9, 2026
45d9c66
Update t-route submod reference for its BMI updates
idtodd Apr 9, 2026
f7e99b5
Update dockerfile to build from NGEN_FORCING_IMAGE
jswade-rtx Apr 15, 2026
127708a
Submodule reference to NHF t-route branch
idtodd Apr 20, 2026
158d143
added get_available_variable_names function
mkarim-rtx Apr 20, 2026
68139a8
added get_available_variable_names function
mkarim-rtx Apr 20, 2026
5382f4a
turned tests off in Dockerfile and removed gitlab cicd file
miguelp1986 Apr 25, 2026
4a7047d
Merge pull request #175 from NGWPC/mpena-remove-tests-from-Dockerfile
miguelp1986 Apr 25, 2026
c2e4c9e
Update ARGS to streamline customer delivery
cmaynard-ngwpc Apr 22, 2026
4ce84e2
Update submodule reference for t-route
idtodd Apr 28, 2026
facc6c6
Add trigger-downstream job to dispatch nwm-cal-mgr and nwm-fcst-mgr C…
cnealen Apr 13, 2026
f77bd89
cicd updates
miguelp1986 Apr 29, 2026
1f75e0d
cicd updates
miguelp1986 Apr 29, 2026
b4e8a92
Remove calls to LogAndThrow
idtodd Apr 29, 2026
fff694f
Merge pull request #159 from NGWPC/idt-nhf1-integration
idtodd Apr 29, 2026
39e9cd9
Update t-route reference
idtodd Apr 29, 2026
44bfc1a
Merge pull request #176 from NGWPC/idt-troute-sub-ref
idtodd Apr 29, 2026
58bdc34
cicd updates
miguelp1986 Apr 29, 2026
3eddb30
cicd updates
miguelp1986 Apr 29, 2026
356146f
Merge pull request #174 from NGWPC/feat/trigger-downstream-pipelines
miguelp1986 Apr 30, 2026
e2c49dc
Reduce MPI stdout interleaving with single cout write
cmaynard-ngwpc Apr 22, 2026
6f83a90
Destroy python interpreter when run_ngen throws an error
idtodd Apr 10, 2026
1b8b898
Remove unneeded calls to InterpreterUtil::getInstance() to ensure mai…
idtodd Apr 10, 2026
b5a53d4
Sync python interpreter shutdowns between MPI ranks
idtodd Apr 20, 2026
6e38469
Merge pull request #169 from NGWPC/idt-ensure-python-atexit-called
idtodd May 1, 2026
a519aaa
merged with development
mkarim-rtx May 5, 2026
6885d7c
merged with development
mkarim-rtx May 5, 2026
9631ca0
update for coastal to include run_coastal
zhengtaocui May 5, 2026
ac0779f
update for coastal to include run_coastal
zhengtaocui May 5, 2026
ea3c160
removed coastal from main.cpp
zhengtaocui May 5, 2026
f3227f3
removed coastal from main.cpp
zhengtaocui May 5, 2026
2b0393b
more updates
zhengtaocui May 5, 2026
04a4a0c
more updates
zhengtaocui May 5, 2026
dc1f302
update NGen.cpp
zhengtaocui May 5, 2026
a68a4c3
update NGen.cpp
zhengtaocui May 5, 2026
06d0b6c
bug fixes related to run_coastal function
mkarim-rtx May 6, 2026
6e234ad
bug fixes related to run_coastal function
mkarim-rtx May 6, 2026
b3f1475
Update submodule refs for cfe, LASAM, noah, sac-sma snow17, t-route, …
cmaynard-ngwpc May 6, 2026
292df37
Update UEB_BME submod ref
cmaynard-ngwpc May 6, 2026
82dd321
Fix for compilation error
mkarim-rtx May 6, 2026
329001b
Fix for compilation error
mkarim-rtx May 6, 2026
7d351a4
added SFINCS compilation
mkarim-rtx May 7, 2026
d3e40f2
added SFINCS compilation
mkarim-rtx May 7, 2026
d3c0e3a
Submod refs for unit converstion fixes in ueb and topmodel
cmaynard-ngwpc May 7, 2026
40141e9
Merge pull request #181 from NGWPC/cmaynard_submod_ref_updates
cmaynard-ngwpc May 8, 2026
a6807ed
Use compiler_bmi.sh when building t-route in ngen
cmaynard-ngwpc May 8, 2026
da4ed60
added NGEN_WITH_COASTAL=ON
mkarim-rtx May 8, 2026
75dd267
added NGEN_WITH_COASTAL=ON
mkarim-rtx May 8, 2026
92b5133
added NGEN_WITH_COASTAL=ON
mkarim-rtx May 8, 2026
c91039f
added NGEN_WITH_COASTAL=ON
mkarim-rtx May 8, 2026
8a29027
Update t-route submod ref for the new ewts configure_existing_logger
cmaynard-ngwpc May 11, 2026
8b99e13
Merge pull request #185 from NGWPC/cmaynard_update_troute_submod
cmaynard-ngwpc May 11, 2026
3513a33
Added SCHISM BMI components for the merged branch.
zhengtaocui May 12, 2026
ad5fbb1
Added SCHISM BMI components for the merged branch.
zhengtaocui May 12, 2026
b577bc0
Merge branch 'development' into ngen_sfincs_schism_merged_040126
mkarim-rtx May 12, 2026
1ec3e2a
Merge branch 'development' into ngen_sfincs_schism_merged_040126
mkarim-rtx May 12, 2026
03c761d
Fixed compilation error for SCHISM BMIs, fixed build errors
zhengtaocui May 15, 2026
ce69abd
Removed test samples for coastal Hawaii domain becasue the test case …
zhengtaocui May 15, 2026
6150045
fixed conflicts.
zhengtaocui May 18, 2026
4922057
added ignore file
zhengtaocui May 18, 2026
be5d196
Resolved issues after committed large (>100MB) test files. Merge bran…
zhengtaocui May 18, 2026
e2c0e21
Remove data/catchment_data_huc01.geojson
zhengtaocui May 18, 2026
1d5afb1
Removed the NetCDF Metero data provider for SCHISM test case because …
zhengtaocui May 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -135,4 +135,8 @@ data/forcing/huc01_demo/
# HUC01 Demo Testing Hydrofabric
data/hydrofabric/huc01_demo/

data/SCHISM_Hawaii
data/SCHISM_Lake_Champlain_BMI_Driver_Test/NextGen_Forcings_Engine_MESH_output_202402201200.nc

/*git_info.json
data/catchment_data_huc01.geojson
30 changes: 18 additions & 12 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -7,38 +7,38 @@
url = https://github.com/pybind/pybind11
[submodule "extern/t-route"]
path = extern/t-route
url = https://github.com/NGWPC/t-route.git
url = git@github.com:NGWPC/t-route
branch = development
[submodule "extern/cfe/cfe"]
path = extern/cfe/cfe
url = https://github.com/NGWPC/cfe.git
url = git@github.com:NGWPC/cfe.git
branch = development
[submodule "extern/topmodel/topmodel"]
path = extern/topmodel/topmodel
url = https://github.com/NGWPC/topmodel.git
url = git@github.com:NGWPC/topmodel
branch = development
[submodule "extern/noah-owp-modular/noah-owp-modular"]
path = extern/noah-owp-modular/noah-owp-modular
url = https://github.com/NGWPC/noah-owp-modular
url = git@github.com:NGWPC/noah-owp-modular
branch = development
[submodule "extern/bmi-cxx"]
path = extern/bmi-cxx
url = https://github.com/NGWPC/bmi-cxx.git
[submodule "extern/evapotranspiration/evapotranspiration"]
path = extern/evapotranspiration/evapotranspiration
url = https://github.com/NGWPC/evapotranspiration.git
url = git@github.com:NGWPC/evapotranspiration
branch = development
[submodule "extern/SoilFreezeThaw/SoilFreezeThaw"]
path = extern/SoilFreezeThaw/SoilFreezeThaw
url = https://github.com/NGWPC/SoilFreezeThaw
url = git@github.com:NGWPC/SoilFreezeThaw
branch = development
[submodule "extern/SoilMoistureProfiles/SoilMoistureProfiles"]
path = extern/SoilMoistureProfiles/SoilMoistureProfiles
url = https://github.com/NGWPC/SoilMoistureProfiles
url = git@github.com:NGWPC/SoilMoistureProfiles
branch = development
[submodule "extern/sloth"]
path = extern/sloth
url = https://github.com/NGWPC/SLoTH
url = git@github.com:NGWPC/sloth
branch = development
[submodule "extern/netcdf-cxx4"]
path = extern/netcdf-cxx4/netcdf-cxx4
Expand All @@ -49,21 +49,27 @@
branch = development
[submodule "extern/snow17"]
path = extern/snow17
url = https://github.com/NGWPC/snow17.git
url = git@github.com:NGWPC/snow17
branch = development
[submodule "extern/sac-sma/sac-sma"]
path = extern/sac-sma/sac-sma
url = https://github.com/NGWPC/sac-sma.git
url = git@github.com:NGWPC/sac-sma
branch = development
[submodule "extern/ueb-bmi"]
path = extern/ueb-bmi
url = https://github.com/NGWPC/ueb_bmi.git
branch = development
[submodule "extern/lstm"]
path = extern/lstm
url = https://github.com/NGWPC/lstm.git
branch = development
url = git@github.com:NGWPC/lstm
branch = development
[submodule "extern/topoflow-glacier"]
path = extern/topoflow-glacier
url = https://github.com/NGWPC/topoflow-glacier.git
branch = development
[submodule "extern/SFINCS"]
path = extern/SFINCS
url = git@github.com:NGWPC/SFINCS
[submodule "extern/schism"]
path = extern/schism
url = git@github.com:NGWPC/schism.git
43 changes: 41 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ option(NGEN_WITH_BMI_C "Build with C BMI support" ON)
option(NGEN_WITH_PYTHON "Build with embedded Python support" ON)
option(NGEN_WITH_TESTS "Build with unit tests" ON)
option(NGEN_QUIET "Silence output" OFF)
option(NGEN_WITH_COASTAL "Build with coastal model support" ON)

# These options require dependency on some of the above options
# Syntax: cmake_dependent_option(<option> "<help_text>" <value> <depends> <force>)
Expand All @@ -81,11 +82,13 @@ cmake_dependent_option(NGEN_WITH_EXTERN_TOPMODEL "Build with extern-dist
cmake_dependent_option(NGEN_WITH_EXTERN_CFE "Build with extern-distributed CFE" ON "NGEN_WITH_BMI_C" OFF)
cmake_dependent_option(NGEN_WITH_EXTERN_PET "Build with extern-distributed PET" ON "NGEN_WITH_BMI_C" OFF)
cmake_dependent_option(NGEN_WITH_EXTERN_NOAH_OWP_MODULAR "Build with extern-distributed Noah-OWP-Modular" ON "NGEN_WITH_BMI_FORTRAN" OFF)
cmake_dependent_option(NGEN_WITH_EXTERN_SFINCS "Build with extern-distributed SFINCS" ON "NGEN_WITH_BMI_FORTRAN" OFF)

# Allow enabling of all extern models dependent on NGen options given.
option(NGEN_WITH_EXTERN_ALL OFF)
if(NGEN_WITH_EXTERN_ALL)
set(NGEN_WITH_EXTERN_SLOTH ON)
set(NGEN_WITH_EXTERN_SFINCS ON)

# Ensure C support is enabled
if(NGEN_WITH_BMI_C)
Expand All @@ -99,6 +102,7 @@ if(NGEN_WITH_EXTERN_ALL)
# Ensure Fortran support is enabled
if(NGEN_WITH_BMI_FORTRAN)
set(NGEN_WITH_EXTERN_NOAH_OWP_MODULAR ON)

else()
message(FATAL_ERROR "NGEN_WITH_EXTERN_ALL set to ${NGEN_WITH_EXTERN_ALL}, but NGEN_WITH_BMI_FORTRAN set to ${NGEN_WITH_BMI_FORTRAN}")
endif()
Expand Down Expand Up @@ -145,7 +149,6 @@ message(STATUS "Found EWTS: ${EWTS_PREFIX} (found version ${ewts_VERSION})")

# NGen itself uses the NGen-specific EWTS logger/bridge
target_link_libraries(ngen PRIVATE ewts::ewts_ngen_bridge)

# Dependencies ================================================================

# -----------------------------------------------------------------------------
Expand Down Expand Up @@ -292,6 +295,29 @@ if(NGEN_WITH_BMI_FORTRAN)
IMPORTS surfacebmi
)
endif()

if(NGEN_WITH_EXTERN_SFINCS)
include(ExternalProject)

if(NOT NETCDF_PREFIX AND DEFINED ENV{NETCDF_PREFIX})
set(NETCDF_PREFIX "$ENV{NETCDF_PREFIX}" CACHE PATH "Prefix for NetCDF used by SFINCS" FORCE)
endif()

ExternalProject_Add(sfincs_bmi_external
SOURCE_DIR "${NGEN_EXT_DIR}/SFINCS/source/src"
BINARY_DIR "${NGEN_EXT_DIR}/SFINCS/cmake_build"
CMAKE_ARGS
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-DCMAKE_Fortran_COMPILER=${CMAKE_Fortran_COMPILER}
-DNETCDF_PREFIX=${NETCDF_PREFIX}
-DSFINCS_ENABLE_NETCDF=ON
-DSFINCS_ENABLE_OPENMP=ON
-DSFINCS_BUILD_TESTS=OFF
BUILD_BYPRODUCTS "${NGEN_EXT_DIR}/SFINCS/cmake_build/libsfincs_bmi.so"
INSTALL_COMMAND ""
)
endif()
endif()

# -----------------------------------------------------------------------------
Expand Down Expand Up @@ -343,12 +369,17 @@ if(NGEN_WITH_EXTERN_NOAH_OWP_MODULAR)
add_dependencies(ngen surfacebmi)
endif()

if(NGEN_WITH_EXTERN_SFINCS)
add_dependencies(ngen sfincs_bmi_external)
endif()

target_include_directories(ngen PUBLIC "${NGEN_INC_DIR}")

add_subdirectory("src/core")
add_subdirectory("src/geojson")
add_subdirectory("src/bmi")
add_subdirectory("src/realizations/catchment")
add_subdirectory("src/realizations/coastal")
add_subdirectory("src/forcing")
add_subdirectory("src/state_save_restore")
add_subdirectory("src/utilities")
Expand All @@ -366,6 +397,7 @@ target_link_libraries(ngen
NGen::core_nexus
NGen::geojson
NGen::realizations_catchment
NGen::realizations_coastal
NGen::forcing
NGen::core_mediator
NGen::logging
Expand All @@ -392,7 +424,12 @@ if(NGEN_WITH_SQLITE)
target_include_directories(partitionGenerator PUBLIC AFTER "${NGEN_INC_DIR}/geopackage")
endif()

target_link_libraries(partitionGenerator PUBLIC NGen::core NGen::geojson)
target_link_libraries(partitionGenerator PUBLIC
NGen::core
NGen::geojson
NGen::realizations_catchment
)

if(NGEN_WITH_SQLITE)
target_link_libraries(partitionGenerator PUBLIC NGen::geopackage)
endif()
Expand Down Expand Up @@ -462,6 +499,7 @@ ngen_multiline_message(
" NGEN_WITH_BMI_C: ${NGEN_WITH_BMI_C}"
" NGEN_WITH_PYTHON: ${NGEN_WITH_PYTHON}"
" NGEN_WITH_ROUTING: ${NGEN_WITH_ROUTING}"
" NGEN_WITH_COASTAL: ${NGEN_WITH_COASTAL}"
" NGEN_WITH_TESTS: ${NGEN_WITH_TESTS}"
" NGEN_WITH_COVERAGE: ${NGEN_WITH_COVERAGE}"
" NGEN_QUIET: ${NGEN_QUIET}"
Expand All @@ -472,6 +510,7 @@ ngen_multiline_message(
" NGEN_WITH_EXTERN_CFE: ${NGEN_WITH_EXTERN_CFE}"
" NGEN_WITH_EXTERN_PET: ${NGEN_WITH_EXTERN_PET}"
" NGEN_WITH_EXTERN_NOAH_OWP_MODULAR: ${NGEN_WITH_EXTERN_NOAH_OWP_MODULAR}"
" NGEN_WITH_EXTERN_SFINCS: ${NGEN_WITH_EXTERN_SFINCS}"
"Environment summary:"
" Boost:"
" Version: ${Boost_VERSION}"
Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ RUN --mount=type=cache,target=/root/.cache/cmake,id=cmake-netcdf-fortran \
mkdir --parents /usr/src/netcdf-fortran && \
tar --extract --directory /usr/src/netcdf-fortran --strip-components=1 --file netcdf-fortran.tar.gz && \
cd /usr/src/netcdf-fortran && \
cmake -B cmake_build -S . -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF \
cmake -B cmake_build -S . -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF -DNGEN_WITH_COASTAL=ON \
-DCMAKE_Fortran_COMPILER=/opt/rh/gcc-toolset-10/root/usr/bin/gfortran && \
cmake --build cmake_build --parallel "$(nproc)" && \
cmake --build cmake_build --target install && \
Expand Down Expand Up @@ -409,7 +409,7 @@ RUN --mount=type=cache,target=/root/.cache/cmake,id=cmake-ngen \
-DNGEN_WITH_BMI_FORTRAN=ON \
-DNGEN_WITH_BMI_C=ON \
-DNGEN_WITH_PYTHON=ON \
-DNGEN_WITH_TESTS=OFF \
-DNGEN_WITH_TESTS=ON \
-DNGEN_WITH_ROUTING=ON \
-DNGEN_QUIET=ON \
-DNGEN_UPDATE_GIT_SUBMODULES=OFF \
Expand Down
57 changes: 57 additions & 0 deletions build_sfincs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#!/usr/bin/env bash
set -euo pipefail

# Build the BMI shared library in the same environment style as the documented
# working SFINCS build.

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SRC_DIR="$ROOT/extern/SFINCS/source/src"
BUILD_DIR="$ROOT/extern/SFINCS/cmake_build"

# Prefer the active conda/pixi env if present
if [[ -n "${CONDA_PREFIX:-}" ]]; then
export NETCDF_PREFIX="$CONDA_PREFIX"
export PKG_CONFIG_PATH="$CONDA_PREFIX/lib/pkgconfig:${PKG_CONFIG_PATH:-}"
fi

# Fall back to nc-config if available
if command -v nc-config >/dev/null 2>&1; then
NC_INC="$(nc-config --includedir)"
NC_LIB="$(nc-config --libdir)"
else
echo "ERROR: nc-config not found on PATH"
exit 1
fi

# Match the documented SFINCS build flags as closely as possible
export FCFLAGS="${FCFLAGS:-} -fopenmp -O3 -fallow-argument-mismatch -w"
export FFLAGS="${FFLAGS:-} -fopenmp -O3 -fallow-argument-mismatch -w"
export CFLAGS="${CFLAGS:-}"
export CXXFLAGS="${CXXFLAGS:-}"

# Clean rebuild while debugging env issues
rm -rf "$BUILD_DIR"

cmake -S "$SRC_DIR" -B "$BUILD_DIR" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER="${CC:-gcc}" \
-DCMAKE_Fortran_COMPILER="${FC:-gfortran}" \
-DNETCDF_PREFIX="${NETCDF_PREFIX:-}" \
-DSFINCS_ENABLE_NETCDF=ON \
-DSFINCS_ENABLE_OPENMP=ON \
-DSFINCS_BUILD_TESTS=OFF \
-DCMAKE_Fortran_FLAGS_RELEASE="$FCFLAGS" \
-DCMAKE_EXE_LINKER_FLAGS="-L$NC_LIB -Wl,-rpath,$NC_LIB" \
-DCMAKE_SHARED_LINKER_FLAGS="-L$NC_LIB -Wl,-rpath,$NC_LIB" \
-DCMAKE_Fortran_FLAGS="-g -O0 -fcheck=all -fbacktrace -ffpe-trap=invalid,zero,overflow" \
-DCMAKE_C_FLAGS_RELEASE="${CFLAGS}" \
-DCMAKE_CXX_FLAGS_RELEASE="${CXXFLAGS}"

cmake --build "$BUILD_DIR" -j1

echo
echo "Built:"
echo " $BUILD_DIR/libsfincs_bmi.so"
echo
echo "Runtime linkage:"
ldd "$BUILD_DIR/libsfincs_bmi.so" || true
10 changes: 10 additions & 0 deletions build_test_sfincs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
cmake -B cmake_build -S . \
-DNGEN_WITH_BMI_FORTRAN=ON \
-DNGEN_BUILD_COASTAL_TESTS=ON \
-DNGEN_ENABLE_SCHISM=OFF \
-DSFINCS_BMI_LIBRARY=/home/mohammed.karim/Calibration/ngen/extern/SFINCS/source/src/build/libsfincs_bmi.so \
-DSFINCS_INIT_CONFIG=/home/mohammed.karim/Calibration/ngen/extern/SFINCS/source/src/build/sfincs_config.txt
cmake --build cmake_build -j
ctest --test-dir cmake_build -N | grep -i sfincs
ctest --test-dir cmake_build -R sfincs -V

6 changes: 6 additions & 0 deletions data/SCHISM_Lake_Champlain_BMI_Driver_Test/README.TXT
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
To run the test, go to cmake_build/test first, then run 'test_coastal'.

For exampke,

cd cmake_build/test
./test_coastal
5 changes: 5 additions & 0 deletions data/SCHISM_Lake_Champlain_BMI_Driver_Test/bctides.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
!10/23/2012 00:00:00 EDT
0 50. ntip
0 nbfr
1 nope
22 4 0 0 0
Loading