---
# System prepended metadata

title: Clean Up Dawn Headers
tags: [functional cycle 12]

---

# Clean Up Dawn Headers

###### tags: `functional cycle 12`

Developers: Matthias
Appetite: 1 Week

This project can be considered a stand alone project or be incorporated into other efforts, like removing dusk & dawn from the exclaim toolchain

## Background

In the bindings being generated, 8 headers from dawn are included. While all of them are possibly required, they could certainly be slimmed down, maybe merged or re-organized in other ways. They don't follow a common coding style and are suspected to be of varying quality.

Furthermore, there is quite a bit of code being generated that is static and could be refactored into a header instead.

## Goals

* Go through these headers, ensure a common level of code quality and consistent style. Re-organize the code as needed; maybe some headers can be merged. Remove static code from the generated bindings as deemed approrpriate and move to a header, adapt the bindings generator accordingly.
* References to the `dawn` namespace should be purged 
* Eventually, these headers should be moved out of dusk & dawn. This should be syncronized with the efforts to remove dusk and dawn from the icon-exclaim toolchain

## Non Goals

Do not try to change the actual logic of the code, e.g. do not try to replace vtk serialization by a vtk library or similar. 

### Known Steps

A list of the currently included headers follow, with some suggestions for improvements that were immediately apparent when breifly skimming the headers

- `cuda_utils.hpp` Can probably be trimmed down a lot, reshaping functions probably unused. Could end up to only contain meshing aspects, so maybe rename or move into another header
- `cuda_verify.hpp` Templating of verification functions can be improved
- `defs.hpp` dawn precision handling, try to remove this
- `to_json.hpp` looks reasonable
- `to_vtk.hpp` consider to refactor this into a header only library, `MeshInfoVtk` may be problamtic though
- `unstructured_domain.hpp` may be unused since we pass domains now explicitly from FROTRAN
- `unstructured_interface.hpp` may be unused since we use SID now
- `verification_metrics.hpp` maybe try to move this 
