Dear Lawrence and Matt,
Thank you so much for your emails. I am not sure I understood correctly. In my case BDM is used for the stress (tensor), DGv for displacement (vector) and DGs for rotation (vector).
 If I write something like this:
BDM = TensorFunctionSpace(mesh, "BDM", 1)
DGv = VectorFunctionSpace(mesh, "DG", 0)
DGs = VectorFunctionSpace(mesh, "DG", 0)
# Mixed function spaces
Vh_element = MixedElement([TensorElement(BDM), VectorElement(DGv), VectorElement(DGs)])
Vh = FunctionSpace(mesh, Vh_element)
I have the following error:
Traceback (most recent call last):
  File "Elasticity2D_Firedrake.py", line 116, in <module>
    BDM = TensorFunctionSpace(mesh, "BDM", 1)
  File "/home/simone/firedrake/src/firedrake/firedrake/functionspace.py", line 213, in TensorFunctionSpace
    assert sub_element.value_shape() == ()
AssertionError
Thank you so much, probably I am a little bit confused how to use these terms.
Thanks in advance, have a wonderful day.
Best regards,
Simone