Back to README
Codebase Brief / Fortran 2003

Introducing GRASS

General Relativistic Axisymmetric Spacetime Solver for rotating neutron-star equilibria in GR and Scalar-Tensor gravity.

GRASS computes axisymmetric neutron-star equilibrium models on a compactified meridional grid. It combines tabulated EOS handling, Newton shooting targets, adaptive field relaxation, and diagnostic output for reproducible relativistic stellar-structure runs.
63
Fortran source and test files
21
EOS tables and examples
12
Unit tests across numerics and modules
6
Regression-backed integration scenarios
What It Solves

GRASS builds uniformly and differentially rotating neutron-star equilibria under General Relativity or Scalar-Tensor gravity. The main workflow reads an EOS table, constructs the grid, relaxes the metric and scalar fields, then reports bulk quantities such as mass, baryon mass, angular momentum, spin, and radius.

The solver supports single-model runs, shooting against target properties, and mass-radius sequence construction.

Numerical Core

Core modules provide EOS interpolation, compactified grids, restart I/O, constraint checks, and 1D / 2D shooting drivers. Theory modules own the rotation solver, Green's-function targets, multipole projection, and metric-field updates.

PCHIP EOS Newton shooting Restart binary Hamiltonian check
Relaxation Strategy

The field solve uses an adaptive four-stage relaxation path: Picard, Chebyshev, Anderson, and Aitken delta-squared. This keeps early iterations stable while accelerating late-stage convergence.

Run Flow
1
Configure physics, EOS, grid resolution, and task mode in src/para_panel.f90.
2
Build with CMake using cmake --preset release and cmake --build build -j.
3
Run ./build/grass to produce diagnostics under Cont/ and restart data under Res/res.rst.
4
Verify behavior with ctest --test-dir build --output-on-failure.
Diagnostics

Output files include properties.dat for bulk quantities, Omega.dat for equatorial profiles, velocity.dat for orbital diagnostics, hamiltonian.dat for constraint fields, and moment_tail.dat for far-field multipoles.

GR
Start from README.md for build instructions, then inspect src/para_panel.f90 before production runs. The current branch is dev, with CMake as the recommended build path and legacy Make support preserved.