Tuesday, October 18, 2011

Why is the order of accuracy important?

Most of the commercial CFD codes are 1st or 2nd order accurate. This is largely due to the robustness offered by these low order methods.  First order methods can be used to compute a steady-state solution reliably and quickly on almost any mesh. For many industrial applications, getting a solution with the correct order of magnitude may be good enough to provide some guidance for product designs. In such cases, low order CFD codes obviously serve a useful purpose.

If the accuracy of a solution is important (e.g. the lift coefficient of a Boeing airliner), first order methods are usually too crude. In theory, one can always refine the mesh enough times to obtain the desired solution accuracy. But mesh refinement is a very inefficient means for low order methods to reach an accuracy threshold. High order (OOA > 2) methods are much more efficient with mesh refinement. Here is why.

Assume that doubling the number of cells in each direction in space (3D) and time increases the computational cost by a factor of 16, i.e., 2^4. For a 1st order scheme, however, the solution error is only reduced by a factor of 2. For a 2nd order scheme, the error is reduced by a factor of 4, while for a 4th order scheme the error is reduced by a factor of 16. Now you see why mesh refinement is much more efficient in reducing the error for a high order method. In fact, a 4th order method on a mesh of 1 million cells may produce a more accurate solution than a 1st order method on a mesh of a billion cells! In computational aeroacoustics (CAA), high-order methods have been used almost exclusively for wave propagation problems because of the stringent accuracy requirement.

Why, then, aren't all the commercial codes 4th order accurate? The quick answer is that it is very difficult to develop robust and efficient high-order methods for unstructured meshes!


How about structured meshes? It is relatively straightforward to develop high-order methods on structured meshes. However, the structured meshes must be smooth enough to achieve the high-order accuracy. Otherwise, the actucal OOA may be only 2nd order or even 1st order.

Given that almost all commercial codes use unstructured meshes, the ultimate solution appears to be adaptive high-order methods capable of handling unstructured meshes.See the following Workshop for the latest development:
http://zjwang.com/hiocfd.html