On Sat, Mar 24, 2007 at 06:52:04PM +0100, Garth N. Wells wrote:
In the old FFC output format, the function
void pointmap(Point points[], unsigned int components[],
const AffineMap& map) const
returns in components[] a degree of freedom identifier (e.g. 0 for u, 1
for v, 2 for p, etc) for each entry in the element tensor. How can we
get this information with the new UFC format? (or how can we avoid
requiring it?)
Garth
Do you mean for evaluating dofs on user-defined functions (to get the
expansion coefficients in the nodal basis to put in the array w) or
for setting boundary conditions?
I think that in both cases it should be enough to evaluate the dofs on
the ufc::function, but we might have missed something. The function
evaluate_dof() takes a function f that may or may not be vector-valued
and computes the scalar value of dof i. So for a 2D vector-valued
Lagrange element of degree 1, dof 0 will be f_0(v0), dof 1 will be
f_0(v1), dof 2 will be f_0(v2), dof 3 will be f_1(v0) etc. The
function evaluate() in ufc::function needs to compute all values of
the possibly tensor-valued function.