The LoggingObserver is currently rather primitive and not tested, but has become sufficiently complex that this should change.
After implementation of Ticket 68, it should be refactored. As one preliminary idea, the LoggingObserver should be split into four classes:
- A printer that deals with the actual output
- A calculator that calculates the various expectation values
- A LoggingObserver that ties the printer and calculator together
- A factory that sets up everything accordingly
Several use-cases should be kept in mind here:
- Output should be possible to multiple streams (files and/or stdout/stderr)
- Proper handling of electronic states (only electronic grid, resolve data for each electronic state, handling of multiple electronic grids (?)), also note that the current implementation takes only one Hamiltonian.
- Proper handling of multiple coupled equations of motion (Redfield equations)
Diff:
Diff:
Related
Tickets: #68
Diff: