the full viscoelastic solution was wrong, reimplementing using the
propagator matrix-based version