# Port dry dycore to python
###### tags: `cycle 14`
- Developers:
- Appetite: full cycle
## Problem
For EXCLAIM greenline we want to drive the ICON dry dycore from python. Diffusion (mo_nh_diffusion.f90) and mo_velocity_advection.f90 have already been ported to python. In order to complete and make the ICON dynamics timestep available we need to port mo_solve_nonhydro.f90.
### Task
- [ ] finish velocity advection
- [ ] solve_nh in mo_solve_nonhydro.f90
## Solution
Starting from `solve_nh` in `mo_solve_nonhydro.f90` code write a component that performs one substep integration.
The component should have
- an initialization phase where
- configuration options relevant to the component are passed
- local fields are allocated
- parameters that will not change during a run of the component get calculated.
- a run phase:
- where actual time stepping is performed. Fields that during integration get passed.
```
comp = IconComponent(config) # initialization
(...)
for i in dyn_steps:
comp.run() # time loop call
```
It calls the (possibly fused) gt4py stencils that are integrated into icon-dsl.
the ICON dycore uses a predictor-corrector integration sc heme (given by the `istep` variable). This can be made explicit in the code.
The (already ported) velocity advection should be integrated in the component
The component should be verified against serialized ICON data.
## Rabbit holes
<!-- Details about the solution worth calling out to avoid problems -->
- Don't follow all possible configuration options and branches in the ICON code:
- only consider namelist parameters of `exp.mch_ch_r04b09_dsl`
- additionally , keep an eye on non-LAM mode for the Aquaplanet test case (`exclaim_ape_R2B05`).
## 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 -->
- Nested grids `jg > 0`, `lvert_nest=TRUE`
- Multi-Node (halo exchanges)