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 ========================= A C99-compliant compiler and a POSIX environment are expected, as well as the foloowing dependencies: - BLAS - LAPACKE (the C interface to LAPACK) - libthreadpool (thread pool utility library) - libndarray (array utility library) - MPI You must create a separate build directory and run the 'configure' script from there, followed by 'make'. 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 header files. A simplistic Python wrapper using ctypes is also provided. It largely mirrors the C API. Licence ======= This library is free software, available under GNU GPLv3 (see the LICENCE file for full licence text).