# 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 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 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