---
# System prepended metadata

title: '[Green line] IO Prototype'
tags: [cycle 21]

---

# [Greenline] IO Prototype

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

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

## Problem
<!-- The raw idea, a use case, or something we’ve seen that motivates us to work on this -->
Finish and clean up left overs from last cycle. Requirements for IO POC are defined in this [document](#IO).

Functionality recap:

Design `IOMonitor`: that can be configured to write fields at configured time intervals to output files. The Monitor decides based on configuration what fields from the state it needs to pick.

- Output is NetCDF4. The monitor also re-writes the gridfile into a UGRID extended version. Datafiles are such that they can be loaded together with the UGRID-file


- Currently due to a lack of a complete *model state* (including all meta data) only prognostic fields are available. 

Output fields are 3D with on model levels on the unstructured grid, no regridding.
 




## Appetite
<!-- Explain how much time we want to spend and how that constrains the solution -->
Several components of the task were explored in the last cycle an need to be combined and tested properly. 

## Solution
<!-- The core elements we came up with, presented in a form that’s easy for people to immediately understand -->
Steps to be completed:
[#IO](https://hackmd.io/U202TVPoQveNej2xMbtUMw)

see below

## Rabbit holes
<!-- Details about the solution worth calling out to avoid problems -->

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



## 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] Task 1 ([PR#451](https://github.com/C2SM/icon4py/pull/451)
    - [x] contigurable field groups
    - [x] write ugrid file
    - [x] write data files
        - [x] Netcdf (need netcdf4-python directly)
        - [x] CF convention like
        - [x] support for half level fields
        - [ ] add physical height dimension (vct_a for now)?
        - [x] allow for rolling files per group _1.nc,, _2.nc 
         
- [ ] Documentation
    - [ ] how to use?

- [x] Test
    - [x] improve test coverage
    - [x] integration test: check whether output is readable with uxarray

