---
# System prepended metadata

title: '[Blueline] Dycore Wrapper: Dycore granule wrapper for Py2F'
tags: [cycle 24 - 08/24]

---

# [Blueline] Dycore Wrapper: Dycore granule wrapper for Py2F

<!-- Add the tag for the current cycle number in the top bar -->

- Shaped by: Christoph, Sam
- Appetite (FTEs, weeks): full cycle 1 person
- Developers: <!-- Filled in at the betting table unless someone is specifically required here -->

## Problem

Want to expose the icon4py ICON dycore to Fortran.

## Appetite

Full cycle

## Solution
<!-- The core elements we came up with, presented in a form that’s easy for people to immediately understand -->

Integrate dycore granule:

- Write a Python interface for a dycore granule and create an integration test to test it from Python.

- Use Py2F to generate corresponding bindings for the dycore wrapper.

- Integrate this into Fortran, writing a Fortran call to Py2F bindings, passing all the correct parameters and arrays.

- Verify dycore results (for mch production experiments and aquaplanet experiments).

## Rabbit holes

- Do not support all possible combinations of namelist switches.

## 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 -->

- Do not prematurely optimise things, except if there is time left. However do write down any ideas/observations related to this for future reference.

## Progress
<!-- Don't fill during shaping. This area is for collecting TODOs during building. As first task during building add a preliminary list of coarse-grained tasks for the project and refine them with finer-grained items when it makes sense as you work on them. -->

- [x] Write wrapper for dycore granule
- [x] Write python integration test executing wrapper(granule) with random data
- [x] Write Fortran integration test executing wrapper through py2f with random data (CPU).
- [x] Write Fortran integration test executing wrapper through py2f with random data (GPU). Adapt existing f90 driver with data create statements and add test_cli integration test on GPU (can only be run on CI).
- [x] Write call to Fortran subroutine calling Python dycore granule.
- [ ] Make dycore granule verify for mch_ch_r04b09 or other production experiment
- [ ] Make dycore granule verify for aquaplanet
    - [ ] maybe need to create dummy metric fields
- [ ] Switch to dace and test