# 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