- Source: MacCormack method
In computational fluid dynamics, the MacCormack method (/məˈkɔːrmæk ˈmɛθəd/) is a widely used discretization scheme for the numerical solution of hyperbolic partial differential equations. This second-order finite difference method was introduced by Robert W. MacCormack in 1969. The MacCormack method is elegant and easy to understand and program.
The algorithm
The MacCormack method is designed to solve hyperbolic partial differential equations of the form
∂
u
∂
t
+
∂
f
(
u
)
∂
x
=
0
{\displaystyle {\frac {\partial u}{\partial t}}+{\frac {\partial f(u)}{\partial x}}=0}
To update this equation one timestep
Δ
t
{\displaystyle \Delta t}
on a grid with spacing
Δ
x
{\displaystyle \Delta x}
at grid cell
i
{\displaystyle i}
, the MacCormack method uses a "predictor step" and a "corrector step", given below
u
i
p
=
u
i
n
−
Δ
t
Δ
x
(
f
i
+
1
n
−
f
i
n
)
u
i
n
+
1
=
1
2
(
u
i
n
+
u
i
p
)
−
Δ
t
2
Δ
x
(
f
i
p
−
f
i
−
1
p
)
{\displaystyle {\begin{aligned}&u_{i}^{p}=u_{i}^{n}-{\frac {\Delta t}{\Delta x}}\left(f_{i+1}^{n}-f_{i}^{n}\right)\\&u_{i}^{n+1}={\frac {1}{2}}(u_{i}^{n}+u_{i}^{p})-{\frac {\Delta t}{2\Delta x}}(f_{i}^{p}-f_{i-1}^{p})\end{aligned}}}
Linear Example
To illustrate the algorithm, consider the following first order hyperbolic equation
∂
u
∂
t
+
a
∂
u
∂
x
=
0.
{\displaystyle \qquad {\frac {\partial u}{\partial t}}+a{\frac {\partial u}{\partial x}}=0.}
The application of MacCormack method to the above equation proceeds in two steps; a predictor step which is followed by a corrector step.
Predictor step: In the predictor step, a "provisional" value of
u
{\displaystyle u}
at time level
n
+
1
{\displaystyle n+1}
(denoted by
u
i
p
{\displaystyle u_{i}^{p}}
) is estimated as follows
u
i
p
=
u
i
n
−
a
Δ
t
Δ
x
(
u
i
+
1
n
−
u
i
n
)
{\displaystyle u_{i}^{p}=u_{i}^{n}-a{\frac {\Delta t}{\Delta x}}\left(u_{i+1}^{n}-u_{i}^{n}\right)}
The above equation is obtained by replacing the spatial and temporal derivatives in the previous first order hyperbolic equation using forward differences.
Corrector step: In the corrector step, the predicted value
u
i
p
{\displaystyle u_{i}^{p}}
is corrected according to the equation
u
i
n
+
1
=
u
i
n
+
1
/
2
−
a
Δ
t
2
Δ
x
(
u
i
p
−
u
i
−
1
p
)
{\displaystyle u_{i}^{n+1}=u_{i}^{n+1/2}-a{\frac {\Delta t}{2\Delta x}}\left(u_{i}^{p}-u_{i-1}^{p}\right)}
Note that the corrector step uses backward finite difference approximations for spatial derivative. The time-step used in the corrector step is
Δ
t
/
2
{\displaystyle \Delta t/2}
in contrast to the
Δ
t
{\displaystyle \Delta t}
used in the predictor step.
Replacing the
u
i
n
+
1
/
2
{\displaystyle u_{i}^{n+1/2}}
term by the temporal average
u
i
n
+
1
/
2
=
u
i
n
+
u
i
p
2
{\displaystyle u_{i}^{n+1/2}={\frac {u_{i}^{n}+u_{i}^{p}}{2}}}
to obtain the corrector step as
u
i
n
+
1
=
u
i
n
+
u
i
p
2
−
a
Δ
t
2
Δ
x
(
u
i
p
−
u
i
−
1
p
)
{\displaystyle u_{i}^{n+1}={\frac {u_{i}^{n}+u_{i}^{p}}{2}}-a{\frac {\Delta t}{2\Delta x}}\left(u_{i}^{p}-u_{i-1}^{p}\right)}
= Some remarks
=The MacCormack method is well suited for nonlinear equations (Inviscid Burgers equation, Euler equations, etc.) The order of differencing can be reversed for the time step (i.e., forward/backward followed by backward/forward). For nonlinear equations, this procedure provides the best results. For linear equations, the MacCormack scheme is equivalent to the Lax–Wendroff method.
Unlike first-order upwind scheme, the MacCormack does not introduce diffusive errors in the solution. However, it is known to introduce dispersive errors (Gibbs phenomenon) in the region where the gradient is high.
See also
Lax–Wendroff method
Upwind scheme
Hyperbolic partial differential equations
References
Kata Kunci Pencarian:
- MacCormack method
- Lax–Wendroff method
- McCormack
- Shock-capturing method
- List of numerical analysis topics
- Panta Rhei (game engine)
- Index of physics articles (M)
- Timeline of numerical analysis after 1945
- Gradient discretisation method
- Schwarz alternating method