---
# System prepended metadata

title: 'Research: Types for full and half KLevels'
tags: [shaping-archive]

---

- Shaped by: Christoph, Magdalena, Till
- Appetite (FTEs, weeks):
- Developers:

## Problem
Some fields live at the center, some live on the interface of the vertical, so two different vertical dimensions. Usually center fields have n levels, interface fields n+1 levels. Currently we are not differentiating between center and interface fields, but have workarounds in place in order for the index computations to work out.

## Obervations
A staggered grid concept already exists in gt4py-cartesian, the design could be similar
* In ICON there exist interpolation coefficients between full and half dimensions, as gt4py sparse type they would be something like `Field[[KFull, KFull2KHalfDim], float]`

## Appetite
<!-- Explain how much time we want to spend and how that constrains the solution -->

## Solution
Introduce two vertical dimensions and mapping functionality to each other similar to the C, E, V concepts and `neighbor_sum` in the horizontal
* Similar to the horizontal case, there should be type errors when directly assigning a full k field to a half k field, or vice versa.

## Steps
* Develop concept of mapping between full and half dimensions
* Outline implementation details in field view and ITIR

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