### 3.2 {2 + 1}-dimensional codes

One-dimensional characteristic codes enjoy a very special simplicity due to the two preferred sets
(ingoing and outgoing) of characteristic null hypersurfaces. This eliminates a source of gauge freedom that
otherwise exists in either two- or three-dimensional characteristic codes. However, the manner in which the
characteristics of a hyperbolic system determine domains of dependence and lead to propagation
equations for shock waves is the same as in the one-dimensional case. This makes it desirable for
the purpose of numerical evolution to enforce propagation along characteristics as extensively
as possible. In basing a Cauchy algorithm upon shooting along characteristics, the infinity of
characteristic rays (technically, bicharacteristics) at each point leads to an arbitrariness which, for a
practical numerical scheme, makes it necessary either to average the propagation equations over
the sphere of characteristic directions or to select out some preferred subset of propagation
equations. The latter approach was successfully applied by Butler [53] to the Cauchy evolution
of two-dimensional fluid flow, but there seems to have been very little follow-up along these
lines.
The formal ideas behind the construction of two- or three-dimensional characteristic codes are similar,
although there are various technical options for treating the angular coordinates which label the null rays.
Historically, most characteristic work graduated first from 1D to 2D because of the available computing
power.