---
# System prepended metadata

title: Finish port of dry dycore
tags: [cycle 15]

---

# Finish port of dry dycore

###### tags: `cycle 15`

- Shaped by: Magdalena, Abishek, Nikki
- Appetite: Abishek (2 weeks), Nikki (first 1/2 cycle), Magdalena (1 week), Others (half cycle)
- Developers: Abishek, Nikki, Magdalena, Andreas Jocksch


## Problem
In the last cycles diffusion and dycore for the EXCLAIM experiments were ported to python modules for the so called "greenline". There are left overs that we need to finish in order to run a simple showcase dycore model fully from python.

For the `mch_ch_r04b09_dsl` experiment we generate serialized data for verification, we should also do that for a single node version of the EXCLAIM APE experiment, since this the mode than we will run the greenline in first.

### merge/PR
- [ ] prepare PR for green line stuff back to main
    - [x] Make non-greenline tests run again: parametrized test in icon4py gen is still ignored. After moving back to gt4py main there is only the file discovery left to fix there.
    - [ ] PR and fixes for greenline_dycore.
    - [ ] ~~(optional) enable `datatest` marked tests on the CI. We need a solution for the serialized data:~~
        - using git cache action or find an other solution. Github caches can be at most 10GB per repo. We might easily exceed this. 
        - otherwise we might need our own runner (hosted elsewhere...)~~



### Diffusion
- [x] stencil_15 was rewritten in fieldview in the last cycle and can be integrated in the diffusion module
- [ ] add `limited_area=False` to diffusion
- [x] with stencil_15 ready verification tests of the `run` should pass
- [x] interface clean up: 
    - [x] merge changes that move t_patch fields from timestep to `init`
    - [x] rename `timestep` (diffusion does no timestepping)
 

### Solve Non Hydro
- [ ] spread know how on serialization runs.
- [x] verification tests
- [x] Verify all initialized variables have the correct default value
- [ ] complete implementation with serialized data:
    - [ ] Only some bounds left to do
- [x] Merge `velocity_advection` into `nh_solve`
    - [ ] Update or remove `velocity_advection` tests
- [ ] (optional) integrate into driving code: continue working on `nh_stepping`, cleanup


### Extend verification for global APE experiment  (optional) 
- [ ] (optional) generate data as well for `exclaim_ape_R2B04`
- [ ] (optional) diffusion: `limited_area` mode needs to be added and possibly verified?


## Appetite
<!-- How much time we want to spend and how that constrains the solution -->
High appetite since this project should finish and clean up several projects worked on during the last cycle. It needs several developers, Nikki, Abishek, Magdalena, (some only part time available). Estimates given below are rather minimal and leaving out optional stuff. 
* cleanup diffusion: ~ 1 week
* Solve Non Hydro: ~ 3 weeks (optional without driver code)
* clean up PRs/merge: 3 weeks

## Solution
<!-- The core elements we came up with, presented in a form that’s easy for people to immediately understand -->
Port the modules to python for the MCH and EXCLAIM-APE experiment.
Modules are simple python classes with an 
- `initialize` method where configuration, and static fields are passed, local fields allocated and calculated if they are constant are runtime.
- `run` or `timestep` method does is called during the model run and uses (fused) stencils from icon4py. These functions can vary depending on the component.
    - f.ex. make hidden code structure like predictor/corrector integration scheme for the dycore explicit in to separate functions.

### verification
Verification is done against serialized data from ICON.


## Rabbit holes
<!-- Details about the solution worth calling out to avoid problems -->
- generating verification data is a bit error prone and therefore. Need to spread this more among us! (see point above)
- github caches can be at most 10GB per repository, we might easily exceed this with the serialized data that we have there.


## No-gos
<!-- Anything specifically excluded from the concept: functionality or use cases we intentionally aren’t covering to fit the ## appetite or make the problem tractable -->
- not porting any parameters that are not used either in 
`mch_ch_r04b09_dsl` or `exclaim_ape_R2B0X` experiments.
- for completeness testing/verification of APE global experiment should be done as well because it is the more important experiment for EXCLAIM. We descope this (optional due to time constraints in this cycle)
-


