← Back to team overview

dolfin team mailing list archive

Re: [FFC-dev] functions

 

2007/4/12, Garth N. Wells <g.n.wells@xxxxxxxxxx>:
Martin Sandve Alnæs wrote:
> The idea is to construct an "artificial finite element" where the dofs
> _are_ values in the Gauss quadrature points. By generating a
> corresponding implementation of ufc::finite_element where
> evaluate_dof(i, f, ...) evaluates the function f in dof (quadpoint) i,
> and local_dimension() returns the number of quadrature points, this
> should work.
>

Isn't this getting overly-complicated? It would also be necessary to
evaluate the functions and derivatives of functions on the "real"
element at the dofs of the artificial element (to compute a stress
update in a plasticity problem, for example).

Those coefficient functions should then be passed to tabulate_tensor
in w[][] by their dofs in the basis of the "real element", and
evaluated in the quadrature points within tabulate_tensor.

If you have a discrete function with an attached finite element basis,
you should be able to pass that as a ufc::function to
my_quad_finite_element::evaluate_dof if a precomputation of values in
quadrature points is what you want.

Speaking of which, evaluating derivatives of a finite element basis is
missing from the UFC interface, and can only be done within
tabulate_tensor (since the form compiler knows the basis) or weakly by
defining a separate form and inverting a mass matrix.

The user will have to choose in the FFC input file wether to get a
coefficient in a finite element basis or a "quadrature basis". Instead
of (I don't remember FFC syntax exactly):
 w = Lagrange(...)
 f = Function(w)
it could be:
 w = QuadRule(...) # or some better name...
 f = Function(w)

martin


References