Skip to content

This updates the code to spatial domain and new i/o SUMMA v4.5.0-exp - #37

Open
ashleymedin wants to merge 38 commits into
uofs-simlab:mainfrom
ashleymedin:main
Open

ashleymedin wants to merge 38 commits into
uofs-simlab:mainfrom
ashleymedin:main

Conversation

@ashleymedin

@ashleymedin ashleymedin commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

This will work with the new SUMMA; the old version won't work after v4.0.1. We may want a tag or a branch.

Thunder327 and others added 28 commits November 10, 2025 08:48
Adaptive tolerance working, beats baseline
Merge main with Adaptive tolerance branch
…64, matching SUMMA's write_id_info), alongside the domType(dom,hru)
# Conflicts:
#	build/source/file_access_actor/output_buffer.f90
#	build/source/gru_actor/hru_interface.f90
Note, hru_interface.f90 is dead code at the moment and i've already taken care of what it was trying to do
@ashleymedin

Copy link
Copy Markdown
Contributor Author

I merged the current main back in so there are no conflicts. One note, I'm pretty sure I did what you were going for with the new hru_interface.f90 so I don't need that.

Updating now to use summa v4.2.0-exp, with MPI capabilities. Rebuilt clean and confirmed `bin/summa_actors.exe` is up to date, matching the current SUMMA submodule state (`fbb2c225`, two commits past `c429abf7`, which is where the read/write files changed).

### Root cause

PR #631 (domain-parallel MPI support) was merged into SUMMA in `c429abf7`, reworking the file/domain/local indexing model across `read_attrb.f90`, `read_param.f90`, `read_force.f90`, `read_icond.f90`, `def_output.f90`, `modelwrite.f90`, and related driver files.

### Fixes applied

| File | Problem | Fix |
|---|---|---|
| `build/source/file_access_actor/forcing_file_info.f90:216` | `globalData::ixHRUfile_min/max` (file-offset globals) were removed | Use the already-computed `iHRU_global = gru_struc(1)%hruInfo(1)%hru_nc` as the read offset instead |
| `build/source/gru_actor/hru_read.f90:117-119` | Same removed globals, used to convert a global HRU index to a local row index | Same reference point: `iHRU_global - gru_struc(1)%hruInfo(1)%hru_nc + 1` |
| `build/source/job_actor/summa_setup.f90`, `build/source/file_access_actor/summa_init_struc.f90`, `build/source/gru_actor/gru_actor.f90` | `summa1_type_dec%nGRU` / `%nHRU` were renamed to `%nGRU_local` / `%nHRU_local` (the type now also carries `nGRU_user`, `nHRU_check` for the new file/domain/local indexing tiers) | Updated the `associate` bindings to the new field names |
| `build/source/job_actor/summa_setup.f90:329` | `read_param`'s signature dropped `iRunMode, checkHRU, startGRU` (that logic moved into `read_dimension` / `read_mapping_vectors`, which this framework never called anyway — it builds `gru_struc` itself) | Trimmed the call to the new 8-arg form: `read_param(nGRU,nHRU,nDOM,idStruct,mparStruct,bparStruct,err,cmessage)`; removed the now-unused `startGRU`/`checkHRU`/`iRunMode` imports |

### Checked, no change needed

- `read_attrb`, `ffile_info`, `read_dimensionGrid`, `def_output`, `read_icond_nlayers`, `summa_readRestart` — same argument shape, only internal dummy-arg names changed.
- `writeParam` / `writeTime` / `writeRestart` — self-contained implementations in the actors framework, never call into SUMMA's `modelwrite_module`.
- `read_dimension` / `read_mapping_vectors` — not called by this framework at all; `gru_struc.f90` reads the GRU/HRU mapping itself.
@ashleymedin ashleymedin changed the title This updates the code to spatial domain This updates the code to spatial domain and new i/o SUMMA v4.5.0-exp Sep 14, 2026
ashleymedin and others added 8 commits September 15, 2026 19:51
Updating the SUMMA submodule to the current develop broke the build in two
places, both from the parameter-setup refactor upstream:

- read_param moved from summa_read_param_module to param_override_module when
  read_param.f90 was renamed param_override.f90. The signature is unchanged, so
  this is just the USE line
- the refactor added summa_simulation.f90 to SUMMA's driver sources. It drives
  the standalone run lifecycle (initialize / run / finalize, and the objective
  function built on that) and depends on the summa_init we already exclude, so
  exclude it too -- the job and GRU actors replace that orchestration

Verified on the Provo domain: 53 GRUs solve with no failures, and
averageRoutedRunoff is bit-identical to the standalone summa_sundials.exe run
over the same period.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Picks up the objective-function refactor fixes and the later blank-line
cleanup. The Provo domain solves 53 GRUs with no failures.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants