GraviPet is the General Relativistic Astrophysics Visualization, Initialization, and Postprocessing Efficient Toolkit.
GraviPet provides ways to represent functions, for example solutions or initial conditions for PDEs (partial differential equations). Often such functions are discretized, i.e. they are represented in terms of a finite number of basis functions. Common choices are sampling function at grid points (finite differencing) or averaging functions over grid cells (finite volumes). Many other choices exist.
The main design idea behind GraviPet is to offer composable abstractions. That is, instead of multi-threaded finite differencing grid function, there exist basic (serial) grid functions, as well as adapters that render any other kind of grid function multi-threaded.
- Rename
Categoryto something else, e.g.AbstractFunction. - Do not call
extremato use the image as codomain inmap. ForJuliaFunctionwe known the codomain, for other functions be conservative. - Determine the result type of
mapin a predictable way: For regular functions callfonzero(is this a good idea?), forFunandJuliaFunctionuse the provided codomain. We really need to know the result type ahead of time because many things run asynchronously. - Add
map!. - Add functions to modify domains and functions ("categories"):
- change name
- reduce domain, extend codomain
- calculate codomain from image
- Clean up tests: One file per abstract function
- Test projections and integrations
- Add alias
coordinatesformake_identity - Add alias
interpolateforevaluate - Add vectorized
evaluate - Think about ghost zones
- Make new
AbstractGridFunctionwith efficient ghost zones? - What about refined grid functions, as needed for mesh refinement?
- Make new
- Provide
similar - Speed up tests by running fewer cases
- Add CUDA, Metal tests
- Measure performance
- Add more discretizations:
- tree
- spectral
- unstructured
- mesh refinement
- multi-block
- Add symbolic functions
The GraviPet logo was created by Grabriela Secara at the Perimeter Institute for Theoretical Physics.
