lanl/singularity-eos

Matrix solvers for the Jacobian

Open

#549 opened on Aug 25, 2025

View on GitHub
 (0 comments) (1 reaction) (1 assignee)C++ (21 forks)auto 404
Robustnesshelp wanted

Repository metrics

Stars
 (36 stars)
PR merge metrics
 (PR metrics pending)

Description

A strenuous test in hydro solvers is to run a problem that should be symmetric, without enforcing it, and check that the solution remains symmetric with time. Running this test in riot with real materials on a strenuous problem, I found that the PTE solver can play a key role in symmetry preservation. This experience suggests that, in particular, the matrix inversion for the Jacobian can matter a great deal.

I found that the most radical solution---replacing the matrix inversion with an SVD pseudo-inverse (hacked in to the code) was effective, but much more expensive and quite brittle. In particular, Eigen's psuedo-inverse on CPU functioned well but the SVD in Kokkos-Kernels frequently failed to converge. The default algorithm provided by Kokkos, however, doesn't have any preconditioning. This suggests to me that more attention should be payed to the matrix inversion, perhaps by introducing pivoting to the QR decomposition we use in the Kokkos code-path.

Contributor guide