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