Changes in version 2016.2.0

UFL 2016.2.0 was released on 2016-11-30.

Summary of changes

  • Deprecate .cell(), .domain(), .element() in favour of .ufl_cell(), .ufl_domain(), .ufl_element(), in multiple classes, to allow closer integration with DOLFIN
  • Remove deprecated properties cell.{d,x,n,volume,circumradius,facet_area}
  • Remove ancient form2ufl script
  • Large reworking of symbolic geometry pipeline
  • Implement symbolic Piola mappings
  • OuterProductCell and OuterProductElement are merged into TensorProductCell and TensorProductElement respectively
  • Better degree estimation for quadrilaterals
  • Expansion rules for Q, DQ, RTCE, RTCF, NCE and NCF on tensor product cells
  • Add discontinuous Taylor elements
  • Add support for the mapping double covariant Piola in uflacs
  • Add support for the mapping double contravariant Piola in uflacs
  • Support for tensor-valued subelements in uflacs fixed
  • Replacing Discontinuous Lagrange Trace with HDiv Trace and removing TraceElement
  • Assigning Discontinuous Lagrange Trace and DGT as aliases for HDiv Trace

Detailed changes

  • Add call operator syntax to Form to replace arguments and coefficients. This makes it easier to e.g. express the norm defined by a bilinear form as a functional. Example usage:

    # Equivalent to replace(a, {u: f, v: f})
    M = a(f, f)
    # Equivalent to replace(a, {f:1})
    c = a(coefficients={f:1})
    
  • Add call operator syntax to Form to replace arguments and coefficients::

    a(f, g) == replace(a, {u: f, v: g}) a(coefficients={f:1}) == replace(a, {f:1})

  • Add @ operator to Form: form @ f == action(form, f) (python 3.5+ only)

  • Reduce noise in Mesh str such that print(form) gets more short and readable

  • Fix repeated split(function) for arbitrary nested elements

  • EnrichedElement: Remove +/* warning

    In the distant past, A + B => MixedElement([A, B]). The change that A + B => EnrichedElement([A, B]) was made in d622c74 (22 March 2010). A warning was introduced in fcbc5ff (26 March 2010) that the meaning of “+” had changed, and that users wanting a MixedElement should use “*” instead. People have, presumably, been seeing this warning for 6 1/2 years by now, so it’s probably safe to remove.

  • Rework TensorProductElement implementation, replaces OuterProductElement

  • Rework TensorProductCell implementation, replaces OuterProductCell

  • Remove OuterProductVectorElement and OuterProductTensorElement

  • Add FacetElement and InteriorElement

  • Add Hellan-Herrmann-Johnson element

  • Add support for double covariant and contravariant mappings in mixed elements

  • Support discontinuous Taylor elements on all simplices

  • Some more performance improvements

  • Minor bugfixes

  • Improve Python 3 support

  • More permissive in integer types accepted some places

  • Make ufl pass almost all flake8 tests

  • Add bitbucket pipelines testing

  • Improve documentation