Skip to content

EAMxx: Stub out water_isotope and water_tracer process registrations#8505

Open
rfiorella wants to merge 4 commits into
masterfrom
rfiorella/eamxx/water-isotope-infra-001-register-processes
Open

EAMxx: Stub out water_isotope and water_tracer process registrations#8505
rfiorella wants to merge 4 commits into
masterfrom
rfiorella/eamxx/water-isotope-infra-001-register-processes

Conversation

@rfiorella

@rfiorella rfiorella commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Add build-time infra for water tracer/isotopes:

  • Register WaterTracer and WaterIsotopes process types
  • add CMake logic under src/physics/aux_tracers/{water_tracers,water_isotopes} (per @mahf708 suggestion)
  • Create stub process interfaces for WaterTracer/Isotope impl (currently do nothing)
  • Add namelist defaults for water_tracer and water_isotope count

Ref #8504

Add infrastructure for water-tracer and isotope tracking:
- Register WaterTracers and WaterIsotopes process types
- Add CMake build rules and process factory integration
- Create stub process interfaces with identity tendencies
- Add namelist defaults for tracer_count configuration

Part of water isotope infrastructure campaign (spec 001).
@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://E3SM-Project.github.io/E3SM/pr-preview/pr-8505/

Built to branch gh-pages at 2026-07-09 18:42 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

@mahf708

mahf708 commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

very minor piece of feedback: we might expect people wanting random tracers of all sorts of types, and so I would generalize the dir housing them all:

instead of components/eamxx/src/physics/water_tracers, I would call them "aux_tracers" or something like additional_tracers to indicate these are not "core" model/physics tracers

additionally, I would consider add a subfolder for each class or even each tracer so:

components/eamxx/src/physics/aux_tracers
├── water_tracers
│   ├── water_tracer.cpp
│   ├── water_tracer.hpp
│   ├── water_isotope.cpp
│   ├── ...
├── chemical_tracers
│   ├── radon_tracer.cpp
│   ├── ...
├── ...

or

components/eamxx/src/physics/aux_tracers
├── water_tracers
│   ├── water_tracer_Y.cpp
│   ├── water_tracer_Y.hpp
├── water_isotopes
│   ├── water_isotope_X.cpp
│   ├── ...
├── radon_tracers
│   ├── radon_tracer_Z.cpp
│   ├── ...
├── ...

if you foresee these tracers sharing core features, they can inherit from each other or they can share some utils etc

@rfiorella

rfiorella commented Jun 27, 2026

Copy link
Copy Markdown
Contributor Author

Thanks @mahf708, that seems reasonable.

I'll start with just the one subfolder for now - the "passive/semi-passive" (water tracers where all the accounting is just around phase changes) and "semi-reactive to reactive" (e.g., chemistry) breakdown makes a lot of sense to me though. Also would allow longer term common infra to exist in the top-level aux_tracers folder.

I'm out of office next week. I'll try to clean this up based on suggestions if I get a few moments, but more than likely I'll get it done soon after I'm back so that this one doesn't have to stick in the queue for an extended period.

Move water tracer and isotope processes from physics/water_tracers/
to physics/aux_tracers/{water_tracers,water_isotopes}/ with separate
libraries per process. Water isotopes depend on and extend water tracers.

- Add aux_tracers/CMakeLists.txt with EAMXX_ENABLE_WATER_TRACERS and
  EAMXX_ENABLE_WATER_ISOTOPES options (both default OFF)
- Enforce dependency: isotopes require tracers
- Create separate water_tracers and water_isotopes libraries
- Update register_physics.hpp include paths
- Use full include path in water_isotopes header for robustness
@rfiorella

Copy link
Copy Markdown
Contributor Author

@mahf708 updated this PR based on your suggestions.

As for CI, could one of the Sandians add me to this runner? Or would you suggest a different testing structure for ES projects? @bartgol @tcclevenger

@rfiorella rfiorella marked this pull request as ready for review July 9, 2026 15:45
@mahf708 mahf708 added the CI: approved Allow gh actions PR testing on ghci-snl-* machines label Jul 10, 2026
Copilot stopped work on behalf of mahf708 due to an error July 10, 2026 14:50
Copilot AI requested a review from mahf708 July 10, 2026 14:50
@rljacob rljacob added the EAMxx C++ based E3SM atmosphere model (aka SCREAM) label Jul 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI: approved Allow gh actions PR testing on ghci-snl-* machines EAMxx C++ based E3SM atmosphere model (aka SCREAM)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants