1
$\begingroup$

I am interested in solving ODE systems of the form \begin{align} \frac{\partial \vec{u}}{\partial t} = F(\vec{u}) \end{align} where $F$ is a nonlinear operator, $\vec{u}$ is a vector valued function of $t$, and we have initial conditions $\vec{u}(0) = \vec{u}_0$. I am specifically interested in equations of this form that come from (finite element) spatial discretizations of initial-boundary value problems involving systems of PDEs.

An accurate way of doing this would be to further discretize $F(\vec{u})$ and take small time steps with high order, but this may be too costly for the application. Instead, one may perform the ``operator split'' \begin{align} F(\vec{u}) = A(\vec{u}) + B(\vec{u}), \end{align} and solve the following two subproblems in an alternating fashion for a single time step $t \mapsto t + \Delta t$: \begin{align} \begin{cases} \frac{\partial \vec{v}}{\partial t} = A(\vec{v}), \\ \frac{\partial \vec{w}}{\partial t} = B(\vec{w}). \end{cases} \end{align} To start, the initial condition $\vec{u_0}$ is used to solve the first equation for $\vec{v_1}$, and then $\vec{v_1}$ is used as a condition to solve the second eqution for $\vec{w_1}$. We then set $\vec{u_1} := \vec{w_1}$, and then repeat this process to obtain $\vec{u_2}, \vec{u_3}, ... $ at each time step. This operator splitting method is well known to be first-order accurate, i.e., the operator error grows like $\mathcal{O}(\Delta t)$. The advantage here is the subproblems should somehow be easier to solve.

I am somewhat familiar with CFL conditions for explicit time-stepping schemes. They basically tell you how small you need to make your time step, for a specific problem, relative to your mesh size, and are generally only applicable for simple (linear) problems. For implicit time-stepping schemes applied to simple (linear) problems, one can expect unconditional stability, allowing for large time steps to be used.


My questions are the following:

  1. When solving the two subproblems $\vec{v}_t = A\vec{v}$ and $\vec{w}_t = B \vec{w}$ in an alternating fashion, is one required to use the same time-integration scheme for both subproblems? For example, would I be able solve the first equation for time $v_{t_{n+1}}$ using a first-order implicit method, and then the second equation for time $w_{t_{n+1}}$ using a second-order explicit method?
  2. Do the time-step sizes for the two subproblems need to be the same? Or could one, for example, compute $v_{t_{n+1}}$ using the entire $\Delta t$ time step, and compute $w_{t_{n+1}}$ using four smaller $\frac{\Delta t}{4}$ time steps? Isn't this what higher order operator splitting basically is? Also, is this how you would ensure minimum step-size stability if one of the subproblems was "stiff"?
  3. If the two subproblems are nonlinear, how does one determine a good timestep size for each problem to guarantee stability?
  4. Is there any known relationship between the timestep size needed to guarantee stability of the original problem and timestep sizes needed to guarantee stability for the two subproblems?
  5. Should I probably be using second-order and higher operator splitting schemes, and if so, how do I decide which one to use (e.g., from this list http://www.asc.tuwien.ac.at/~winfried/splitting/index.php?rc=0&ab=strang-ab&name=Strang)?
  6. Does it matter which subproblem you solve first?

Partial answers or references to literature are appreciated.

$\endgroup$
3
$\begingroup$

Yes, you can use different time steps and time stepping methods for the two sub-problems. In fact, that is one of the reasons why operator splitting methods are so popular: if you had two physical effects -- one slow, and one fast -- then you can use long time steps for the slow process and only need to use small time steps for the fast process.

Furthermore, finding the correct time step size is often easier for the separated sub-problems than for the coupled problem because you can more easily do things like a time step stability analysis for each process individually. How exactly you have to choose the time step of course depends on what exactly the two sub-processes are, and there is no guidance possible if you don't tell us what they are.

About the question regarding whether you should use a second order method: Yes, you should! Learning about the first order splitting is often a good idea because it's more intuitive what is happening, but implementing the second order splitting is only marginally more complicated but has substantial advantages as far as accuracy is concerned. So yes, you should definitely do that!

Finally: From a convergence order perspective, it makes no difference which of the two processes you solve first and which second. That is also true for the second order splitting, though there one often chooses the simpler-to-solve process for the two half-steps because then you only have to solve the more-complicated one once per time step.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.