# Explore scan() for implementation of ICON graupel() ###### tags: `functional cycle 10` Explore new `scan()` functionality for writing single column solvers with ICON graupel() routine. Developers: David, Nikki, Linus Appetite: 3 weeks ## Idea Write a toy implementation of the primary algorithmic motif of graupel(): vector multiply + implicit sedimentation in functional GT4Py. Continuously implement special cases on that toy. ## Goals 1. Test scan 2. Gather and implement missing features, specifically of scan but also in general, for this scheme ## Not (yet) goals: - Performance, code beauty - Completeness, scientific usefullness (wont implement a real scheme) - Full single column abstraction ## Potential Issues - Handling of lower boundary conditions - Explicit indices - offsets on IF statements ## Required Featrues: ### For [satad](https://github.com/C2SM/icon4py/tree/satad): - [x] Docstings in field_operator (Nikki) - [ ] Discuss/shape fixed-size for loop or recursion (Linus) - [ ] Shape multiple returns form where (Nikki) - [ ] local, global, compile-time constants (Peter) ### For [graupel_stub](https://github.com/leuty/graupel_standalone/tree/graupel_stub) - [x] ternary in scan_operator (Till, fast track) - [ ] Shape local IF statement in scan_operator (Till) - [ ] think about optimized returning CellDim field. Maybe hotfix possible? (Till)