GraviPet.jl

GraviPet is the General Relativistic Astrophysics Visualization, Initialization, and Postprocessing Efficient Toolkit
Author eschnett
Popularity
4 Stars
Updated Last
3 Months Ago
Started In
November 2023

GraviPet logo

GraviPet.jl

GraviPet is the General Relativistic Astrophysics Visualization, Initialization, and Postprocessing Efficient Toolkit.

  • Documentation
  • GitHub CI
  • codecov

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.

Ideas and Plans

  • Rename Category to something else, e.g. AbstractFunction.
  • Do not call extrema to use the image as codomain in map. For JuliaFunction we known the codomain, for other functions be conservative.
  • Determine the result type of map in a predictable way: For regular functions call f on zero (is this a good idea?), for Fun and JuliaFunction use 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 coordinates for make_identity
  • Add alias interpolate for evaluate
  • Add vectorized evaluate
  • Think about ghost zones
    • Make new AbstractGridFunction with efficient ghost zones?
    • What about refined grid functions, as needed for mesh refinement?
  • 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

Acknowledgements

The GraviPet logo was created by Grabriela Secara at the Perimeter Institute for Theoretical Physics.

Used By Packages

No packages found.