-1
$\begingroup$

What method of numerical solving ODEs is better? BDF2 or TR-BDF2?

Namely, what advantages has TR-BDF2 over BDF2? Is TR-BDF2 more accurate? Does it damp "ringing" better?

The BDF2 method requires the values of $y_{n-1}$ and $y_n$ for computing $y_{n+1}$ but we can use, for example, the trapezoidal method for $n = 0$ and BDF2 on next steps.

The TR-BDF2 method computes an auxiliary value $y_{n+1/2}$ with the trapezoidal method and applies the BDF2 for computing $y_{n+1}$ by using $y_n$ and $y_{n+1/2}$.

TR-BDF2 for solving $y' = f(y)$ represents the following scheme: $$ y_{n+1/2} = y_n + \frac{\tau}{4}(f(y_n) + f(y_{n+1/2})), $$ $$ y_{n+1} = \frac{1}{3}(4y_{n+1/2} - y_n + \tau f(y_{n+1})). $$ Here $\tau$ is a step size. The both stages are implicit. The first stage is the trapezoidal method with the step size $\tau/2$ and the second stage is the BDF2 with the step size $\tau/2$.

UPD Edwards et al. in the paper Nonlinear variants of the TR/BDF2 method for thermal radiative diffusion point out that BDF2 has undesirable conservation properties. Could you explain please how can this influence the computation accuracy?

$\endgroup$

1 Answer 1

4
$\begingroup$

The TR-BDF2 method (as introduced by R.E. Bank et al., IEEE Trans. CAD 4, 436–451, 1985, and widely used in circuit simulation) is using an optimized internal time step $y_{n+\gamma}$ with the value $\gamma = 2-\sqrt{2}$ being optimal in the following three senses at once:

(A) TR and BDF2 share the same Jacobian for the Newton solver,

(B) the composite method is L-stable,

(C) the error constant for dynamic time-stepping is best.

This optimized one-step TR-BDF2 method is much better than using the two-step BDF2 started with one step of TR, most notably because of its ease and flexibility of allowing dynamic time step control for stiff systems.

$\endgroup$
1
  • $\begingroup$ I am not planning to use variable step sizes. If I don't use it, does TR-BDF2 provide more accuracy than BDF2? $\endgroup$
    – jokersobak
    Jan 16, 2015 at 22:11

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