Implement Strang splitting
-
Here's a puzzle: It's supposed to be second-order accurate, but it turns out to achieve an EOC of 4 (or, really, what seems like the order of the underlying schemes) in this test. I wonder why? It might have something to do with te simple nature of the test. Feel free to play around.
-
I have another question. My understanding of Strang splitting is as follows:
du/dt = A + B
Say the interval is 0 to 1, and we start at u=u0.
- Starting with u0, solve du / dt = A from t = 0 to 1/2, get u1
- Starting with u1, solve du / dt = B from t = 0 to 1, get u2
- Starting with u2, solve du / dt = A from t = 1/2 to 1, get u3
- Return u3
However, in this code, it would appear (line 81) that dt is updated to 1/2 after stage 1. So I am thinking this code runs Step 2 from t = 1/2 to t=1.5. Why is there no
_elide_t_update
in line 81? -
mentioned in issue #110 (closed)
-
You're right. The
<t>
values that this feeds to the solver are off in the way you describe. For autonomous ODEs though... ;)