Skip to content

Improve propagation in the multisystem framework

Sebastian Ohlmann requested to merge multisystem_propagators into main

Description

With this merge request, the propagation of different systems in the new framework is improved. For electrons, now two propagators (expmid and aetrs) are available that give the same results as for the old framework (I have not tested for all fancy features, though), also with moving ions.

Some details:

  • add exponential midpoint propagator and implement for electrons in the same way as in the old framework
  • fix the time arguments in the calls to td_* functions
  • add RK4 propagator and implement for dispersive medium
  • fix when the e field is copied from the interaction for the dispersive medium
  • use new exponential midpoint propagator for Maxwell (only one update_interactions per time step)
  • fix extrapolation of source terms from other systems for Maxwell (current) and dispersive medium (e field)

Now the propagation in the new framework with exponential midpoint or AETRS with moving ions gives the same results as in the old framework. Also, restarting works both with moving ions and without.

Some tests are expected to fail at the moment:

  • Maxwell + dispersive medium because the extrapolation of the source terms has changed
  • Maxwell + charged particles because I have changed the charged particle propagator to verlet (the changes should be small, however)

News snippet

Improve multisystem propagation

Checklist

  • I have checked that my code follows the Octopus coding standards
  • I have added tests for all the new features added in this request.

Merge request reports