It seems that only one of ETDRK4substep12!(ts.sol₁, ts.exp½Ldt, sol, ts.ζ, ts.N₁) or @. ts.sol₁ = ts.exp½Ldt * sol + ts.ζ * ts.N₁ is needed as the first substep in ETDRK4. They both operate on the same array in place using the same arguments, so perform identical operations. As a further check, removing either passes the tests.
It seems that only one of
ETDRK4substep12!(ts.sol₁, ts.exp½Ldt, sol, ts.ζ, ts.N₁)
or@. ts.sol₁ = ts.exp½Ldt * sol + ts.ζ * ts.N₁
is needed as the first substep in ETDRK4. They both operate on the same array in place using the same arguments, so perform identical operations. As a further check, removing either passes the tests.