| Thread Previous • Date Previous • Date Next • Thread Next |
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
| Thread Previous • Date Previous • Date Next • Thread Next |