Tensor Finite Element

Firstly, the terminology “2-form” usually refers specifically to a differential form of rank 2, i.e., an anti-symmetric mapping from two vectors to a scalar. In finite element calculations, it is most common to represent differential forms via their classical vector calculus proxies, e.g., Tables 2.1–2.3 here, for which special H(\operatorname{div})- and H(\operatorname{curl})-conforming elements are implemented in FEniCS (e.g., Raviart–Thomas and Nédélec elements).

However, since you mention that you want a symmetric tensor, I assume you mean an ordinary rank-2 tensor. FEniCS does nominally support TensorElements, although forum discussions from a few years ago suggest that the option to enforce symmetry may be buggy. See, e.g., this thread. Another option is to just use a VectorElement with the optional keyword argument dim set to the right number of unique scalar components. These components can then be manually packaged into a matrix before defining variational forms, using the UFL as_matrix function.

2 Likes