# Brainstorming cycle 12
###### tags: `functional cycle 12`
1. Embedded field view
2. Python dycore
- enables experimenting with e.g. halo exchanges
- good starting point for readability refactoring
- maybe single node verification
3. Aquaplanet on daint
- LAM dycore -> Global dycore
- Install software dependencies on Daint
- Merge `icon-dsl` with `aquaplanet_gpu_features`
- Enable restart and tolerance testing for `exclaim_ape_R2B04`
5. Graupel scheme
- Scalar IF staments, IF statement sugar, nested IFs.
- think about optimized returning CellDim field (hotfix Till). return 1D Fields from scan_operator.
- Pass runtime scalars, 2D fields to scan()
- Pass optional fields (kwargs) to program and scan. Test if they are None
- Need to pre-allocate everything we return to carry -> disregarding temporaries should work when calling scan from field operator
- functions/elemental functions
- Support ellipsis expansion for scan definition and init. E.g. carry: tuple[float, ...] and init=(0.0, ...).
6. Cartesian GT4Py Release?
7. GT4Py features
- functional while (or scalar_operator) requirement for graupel
- nested_scan (Lagrangian something) requirement for tracer adv and 2-mom microphysics
- structures (dataclasses) (nice to have)
- expandable parameters (tuple of fields): unrolls to do several tracers in a single kernel (very nice to have)
- iterate over index list (or is there a higher level construct that can expand to mask or index list) (nice to have)
- casting between dtypes (required for tracer adv)
- index builtin (workaround: pass a field)
- finish missing pieces of existing features in operators
8. GPU support from Python for compiled backends
- New storages API in declarative
9. Unstructured compiled backend from prototype to clean
10. Preprocessor
11. Low-level CUDA backend
12. Remove dusk/dawn
- move and clean some dawn headers
- use spack everywhere
13. Implement the last 4 stencils (required for remove dusk/dawn)
14. Cleanup verification in multinode setup -> cooldown?