Subject: [FIAT-dev] make_quadrature

From: Anders Logg <[email-masked]>
Date: Tue, 5 Dec 2006 18:15:06 +0100

I need a somewhat expanded version of make_points to handle the
implementation of DG. Let me explain:

Up until now, we have considered the nf^2 different cases of two
facets meeting, where nf is the number of facets. (9 cases for
triangles and 16 for tetrahedra.) This is handled by an argument to
trace_tabulate_jet() in FIAT.

For triangles, there are also two possible alignments when two
triangles meet at common edge, so in total there are 18 different
cases to consider. (For tetrahedra there are 96.)

Here's an example: When we integrate the product of a function from
one of the triangles with a function from the other triangle, there
are two possible values for the integral.

Say that both functions are Phi(X, Y) = X on the reference triangle.
Then the mapped functions on the common edge may be

    phi = t

or

    phi = 1 - t

depending on the parametrization of the edge. So the integral of the
product may be 1/3 or 1/6 depending on whether we get t*(1-t) or t^2.

The extra variation depending on the alignment of the two facets could
be handled by generating the points in various ways in the call to
make_quadrature(). Could this be fixed?

For a line segment, I want to give an extra argument "alignment" that
can be either 0 or 1:

    0 : x0 - x1 - ... - xn
    1 : xn - ... - x1 - x0

For a triangle, I want to give an extra argument "alignment" that can
be 0, 1, 2, 3, 4, 5.

For tetrahedra I don't care.

/Anders