Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pace split #41

Closed
FlorianDeconinck opened this issue Jan 26, 2024 · 10 comments
Closed

Pace split #41

FlorianDeconinck opened this issue Jan 26, 2024 · 10 comments
Assignees

Comments

@FlorianDeconinck
Copy link
Collaborator

FlorianDeconinck commented Jan 26, 2024

Pace will be split alongside three axis and recomposed from them.

  • ndsl: middleware part
  • PyFV3: the Python/DSL version of FV3
  • PySHiELD: the Python/DSL version of physics parametrization

Pace remains a model, bringing the three parts above as submodules and dealing with driver & bespoke init.

⚠ Due to the breath of the refactor - a coding freeze is required⚠

Branch/PR wise, a freeze will be enacted then the following pattern will be implemented.

main (freeze) |----|----|----|---|--------|--- main (resume dev)
               \   /    \   /    \       /     
	       ndsl     pyfv3    pySHiELD

In-between each merge, a full fresh install of Pace + running a C12 for 1 timesteps will insure functionality.

We will document here all changes. Post refactor, we expect some movement of code from and to the new repository but that should be minimal.

Out of scope for this issue.

  • makefile workflow
  • docker image
  • github CI hooks
  • docs

DoD: Pace relies on ndsl, pyFV3 and pySHiELD.

Cross-post: NOAA-GFDL#53

@FlorianDeconinck
Copy link
Collaborator Author

ndsl

  • tracer_variables: need an API in ndsl and calls in the model. Stays in ndsl for now, API needed.
  • halo and origin in gt4py_utils: those should have an API with reasonable defaults.

physics

  • update_dwind_phys.py, update_atmos_state.py and fv_update_phys.py lives in Physics but should be part of a broader plug & play Physics API that know how to interface with the Dynamical Core.

@FlorianDeconinck
Copy link
Collaborator Author

ndsl

  • examples/mpi are the examples from util

@FlorianDeconinck
Copy link
Collaborator Author

ndsl

  • There's a C12 data bundle for testing restart in tests/main/data on Pace

@FlorianDeconinck
Copy link
Collaborator Author

ndsl

  • Clean up the __init__.py of the package or subdirectory to only publicize the correct API. Or do away entirely with the concept.
  • utils:
    • Halo updates are now bundled in utils.halo
    • Comms, partition & MPI are bundled utils.comm

Todo:

  • Reconnect utils tests to github workflow

@FlorianDeconinck
Copy link
Collaborator Author

ndsl

  • utils:
    • remove _corners, _capture_streams, _xarray, nudging, time
    • move util._timing in performance

Todo:

  • PACE_LOGLEVEL: NDSL_LOGLEVEL
  • restart should move to Pace and/or pyFV3

@FlorianDeconinck
Copy link
Collaborator Author

ndsl

  • Do we keep the __init__.py has a method of public API (reduce the import on top of the files) or keep the full import structure (less cross imports)

@FlorianDeconinck
Copy link
Collaborator Author

ndsl

  • pre-commit setup

@FlorianDeconinck
Copy link
Collaborator Author

FlorianDeconinck commented Feb 2, 2024

Porting errors to fix

  • ndsl.grid.eta depends on pyFV3 for ETA calculation.
  • ndsl.stencils.c2l_ord depends on pyFV3, requires DycoreState

Breakage due to refactor

  • docs is broken and need rewire
  • Makefile are broken in all new repositories
  • docker are broken in all new repositories

@FlorianDeconinck
Copy link
Collaborator Author

FlorianDeconinck commented Feb 5, 2024

todo

  • makes issues
  • x-post to NOAA
  • set up working branches and secure main

@FlorianDeconinck
Copy link
Collaborator Author

FlorianDeconinck commented Feb 12, 2024

New repositories:
ndsl
pyFV3
pySHiELD

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

No branches or pull requests

1 participant