wip: refactor functions and interfaces to get onebody and manybody closer
First proposition to make the solvers in onebody and manybody more symmetric.
onebody.Solver
and manybody.Solver
are now the two main solvers for time dependent scattering states.
They are as easy to use and as "fault tolerant" as possible.
Using the solvers is compared in section 2.2.4 of the tutorial:
solver_o = onebody.Solver(syst, energy=1, lead=0, tmax=500)
solver_m = manybody.Solver(syst, occupation, tmax=500)
Both solver instances have an evolve
and evaluate
method.
Also physically, these two solvers describe the same, as they start in an equilibrium scattering state
for an open system.
All setups that are not covered by the solvers described above can be realized by the low-level solvers
onebody.Wavefunction
and manybody.Wavefunction
, that handle the states.
Handling in onebody means basically set up a time stepper to solve the ODE and in manybody to handle a bunch of the onebody states with MPI. The two wavefunction solvers are in fact the building blocks of above high-level
solvers.
The onebody wavefunction is a bit more involved to set up, so there is an additional driver routine
onebody.make_wavefunction
. For manybody, there is no equivalent for the moment.