aboutsummaryrefslogtreecommitdiff
Overview
========

This is a linear scalar elliptic PDE solver using the multigrid method. See the
author's PhD thesis for more information.

If you use this code in your research that leads to a publication, please cite
our paper:
  Universality of Curvature Invariants in Critical Vacuum Gravitational Collapse
  https://doi.org/10.1103/PhysRevLett.127.011104

If you modify the code, we ask that you share your changes with the author (e.g.
via email).

Building and installation
=========================

The library uses the meson build system. A C99-compliant compiler and a POSIX
environment are expected.

Dependencies:
- BLAS
- LAPACKE (the C interface to LAPACK)
- libthreadpool (thread pool utility library)
- libndarray (array utility library)
- MPI

The shared library and the headers mg2d.h, mg2d_boundary.h, mg2d_constants.h
must be copied to where the linker and C compiler, respectively, will find them
(typically /usr/local/lib and /usr/local/include).

Usage
=====

The public C API is described in the teukolsky_data.h header.

A simplistic Python wrapper using ctypes is also provided. It contains a single
public class that takes the C context options as keyword arguments and solves
the equation on initialization. The instance methods then allow to evaluate the
solution where needed.

Licence
=======

This library is free software, available under GNU GPLv3 (see the LICENCE file
for full licence text).