bandframework/rose

Potential bug in HF solver

beykyle opened this issue · 5 comments

In the rose HF solver SchroedingerEquation.phi, why does one pass in the mesh on which to evaluate phi, and then also the lower end of the domain rho_0 ? In particular, in the case that rho_0 is larger than the minimum of the mesh, the accuracy of the solution for s < rho_0 is not guaranteed, see: https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.OdeSolution.html#scipy.integrate.OdeSolution

Additionally, any time rho_0 != the minimum of mesh, the initial conditions passed to scipy.integrate.solve_ivp are calculated incorrectly.

I would argue that rho_0 and phi_threshold should be removed as arguments, and the initial conditions be calculated based on the mesh. Similar arguments hold for SchroedingerEquation.delta and s_endpts.

@pabggpnMSU @odell Does this make sense to ya'll? Thanks!

I've implemented this in #49

Did this give some numerical inaccuracies in our solutions? (Do the CAT plots need to be regenerated?)

I believe not, as long as the defaults for s_mesh and s_0 are used in ScatteringAmplitudeEmulator.from_train. This is the case for the tutorial, but without seeing the code used for the paper I don't know for sure.

Closed in #64