atomec-project / atoMEC

Python-based average-atom code for simulations of high energy density phenomena such as in warm dense matter.
https://atomec-project.github.io/atoMEC/
BSD 3-Clause "New" or "Revised" License
17 stars 12 forks source link

Linear solver for Numerov #178

Closed timcallow closed 1 year ago

timcallow commented 1 year ago

A new option for solving the Numerov equation is created. This directly propagates the Schrodinger equation using the Numerov scheme rather than solving with sparse matrix diagonalization, and allows to scale much more easily with grid size and temperature.

codecov[bot] commented 1 year ago

Codecov Report

Merging #178 (cc256f4) into develop (f98caca) will decrease coverage by 3.53%. The diff coverage is 47.36%.

@@             Coverage Diff             @@
##           develop     #178      +/-   ##
===========================================
- Coverage    97.81%   94.29%   -3.53%     
===========================================
  Files           14       14              
  Lines         2247     2350     +103     
===========================================
+ Hits          2198     2216      +18     
- Misses          49      134      +85     
Impacted Files Coverage Δ
atoMEC/models.py 92.48% <42.85%> (-4.37%) :arrow_down:
atoMEC/numerov.py 69.17% <45.61%> (-26.90%) :arrow_down:
atoMEC/__init__.py 99.04% <100.00%> (ø)
atoMEC/config.py 100.00% <100.00%> (ø)
atoMEC/staticKS.py 98.68% <100.00%> (ø)

... and 1 file with indirect coverage changes

timcallow commented 1 year ago

Closing because the Numerov propagation is numerically unstable. The implementation of the sqrt grid (PR #179) allows scaling to higher temperatures, although does not necessarily offer a speed-up. In the future, we may re-examine this PR.