Test problem JCN solves the convection diffusion equation
where
is piecewise constant. The region is shown in
Figure
.
The domain is specified by skeleton,
so TRIGEN must be used to generate a triangulation.
Figure: The domain for test problem JCN (left),
a triangulation produced by TRIGEN (middle), and the
corresponding triangulation after a call to USRCMD with
OBTUSE=1 and ISW=0 (right).
This problem is an idealized model of the current continuity
equation from the semiconductor device model that we have
used to study the stability of discretizations used in
device simulation.
The problem has seven regions;
in regions one and seven.
In the other five regions it has a magnitude of approximately
,
and is directed radially in each of the five subregions. The solution
develops steep gradients at the junction between region seven
and the five adjoining subregions.
Constant nonhomogeneous Dirichlet
boundary conditions are specified along the
bottom of the domain, and on the left hand portion of the top of the
domain. Homogeneous Neumann boundary conditions are imposed elsewhere.
The parameters TOP and BOTTOM in USRCMD can be used to
reset the Dirichlet boundary conditions on the top
and bottom of the domain. The parameter DU can be used to
adjust the size of
in regions 2-5; in particular, the
magnitude of
in these five regions is proportional
to DU.
Our original purpose in constructing this example
was to test the sensitivity of various upwinding techniques [7]
to poor element geometries. Since the goal
of TRIGEN is to produce elements with good geometries, the
USRCMD for this problem includes a procedure for systematically
degrading the quality of the triangulation by introducing
new elements with obtuse angles. This is done by dividing a triangle
into three new triangles by connecting its barycenter to its vertices.
Repeated application of this procedure can produce triangulations with
interior angles arbitrarily close to
.
The USRCMD parameters OBTUSE and ISW are used to specify the
type of mesh modifications. After TRIGEN has been used to make
a triangulation, one can modify the triangulation in USRCMD by
setting OBTUSE=1. Then if ISW=0, all elements in the current
input triangulation are divided into three as described above.
If ISW=I, with
,
then only triangle I in the current mesh is
trisected. If ISW =-I, with
, then all elements
in region I are refined. An example is shown in
Figure
.