Use coordinate_mapping arguments to support non-affine domains

Issue #160 new
Martin Sandve Alnæs created an issue

I added const ufc::coordinate_mapping * cm=nullptr to a bunch of ufc function signatures such as this:

https://bitbucket.org/fenics-project/ffc/src/1be3c1b0f0af6db58fdc9ca528cf116d8554e201/ffc/backends/ufc/finite_element.py?at=master&fileviewer=file-view-default#finite_element.py-120

This was one step towards refactoring ufc, ffc, and dolfin together towards supporting isoparametric / non-affine domains.

The next steps are:

  1. Make dolfin pass the right coordinate_mapping object in all the above calls. No functional change yet. Commit to dolfin master.
  2. Remove the =nullptr default parameter in ufc. No functional change yet. Commit to ffc master.
  3. For each of the functions now taking but not using a coordinate_mapping argument, adjust code generation to map coordinates via the coordinate_mapping interface instead of using a hardcoded affine basis (see mention of the internal affine_weights function elsewhere).
  4. Make sure there's no other use of the internal affine_weights function anywhere in ffc and remove it.

The functions in question are:

  • evaluate_basis* (4 of these)
  • tabulate_dof_coordinates (may also be removed by using the reference version + mapping directly in dolfin)
  • evaluate_dof(s)
  • interpolate_vertex_values

Of course in any of these cases, if a function is deprecated and removed soon no need to change it first.

Comments (4)

  1. Log in to comment