Skip to content

wip: refactor functions and interfaces to get onebody and manybody closer

Kloss requested to merge onebody_manybody into master

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.

Edited by Kloss

Merge request reports