To Liouvillean, add the possibility of providing a function which calculates L*rho*Ldagger. Then, Liouvillean must somehow signal to Master to rely on this, rather than actWithJ.
It should have a default implementation, which would be to throw an exception. The Master::step function catches this exception, and falls back to the hitherto method in performing the JrhoJdagger operation.
The Composite implementation of the function is just to reach to the corresponding element for the necessary operation (which is again just throwing an exception by default).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
The function should have this signature:
void JrhoJdagger(double t, const DensityOperatorLow& rho, DensityOperatorLow& drhodt, size_t jumpNo)
It should have a default implementation, which would be to throw an exception. The Master::step function catches this exception, and falls back to the hitherto method in performing the JrhoJdagger operation.
The Composite implementation of the function is just to reach to the corresponding element for the necessary operation (which is again just throwing an exception by default).
Achieved on commit #6c1188