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