Backend

The Introduction to EDRIXS describes the four stages of a calculation. Stages two to four – building operators, diagonalizing, and assembling spectra – delegate their numerical work to a backend selected with backend:

  • 'dense' returns full NumPy matrices and uses exact dense diagonalization and explicit eigenstate sums. It is intended for small problems, reference calculations, and pedagogy.

  • 'scipy' returns SciPy sparse matrices and uses LOBPCG, Lanczos, and GMRES. It is the default backend.

  • 'fortran' uses the native MPI solvers and communicates through files in the current working directory. We provide the function edrixs.get_ops_disk to load the setup from disk if desired.

  • 'petsc' reserves the PETSc backend contract but is not yet implemented.

Backend-specific numerical controls belong in a backend_kws mapping. The mapping is specific to both the backend and the operation.

Numerical precision

XAS and RIXS thermally average over the retained initial eigenstates. Request enough eigenpairs from ed to keep every thermally populated state in the ground-state manifold, including complete degenerate or nearly degenerate multiplets; otherwise the Boltzmann average is incomplete.

EDRIXS uses established numerical linear-algebra packages, but floating-point and iterative solvers are not exact. If numerical accuracy is a concern, repeat the calculation with varied solver settings and check that the result is unchanged. Relevant settings include tol or eigval_tol, maxiter, blocksize or ncv, nkryl, and the RIXS linsys_* options documented below.

Backend keyword reference

Choose the backend whose keywords you need:

These references apply to the staged get_ops / ed / xas / rixs interface. The legacy ed_*_fort, xas_*_fort, and rixs_*_fort functions retain their existing explicit parameters.