The second and the third entry determine the domain where the basis functions are generated and the order of these functions. The first entry specify the type of finite elements. “BDMCF” is a type of vector elements. The third entry in function element() specify the dimension of the element, say, shape=2 implies the element is a two dimensional vector. The defaut implies a scalar, i.e., shape=1. 1. Is this understanding correct? 2. I want to ask what’s the default dimension for vector element "BDMCF" and in VectorElement(). Is it equal to the dimension of the mesh, say, we have a three component vector in a box? 3. Is the vector element considered somewhat a form of mixed element so that to get the component we can simply use a line like u1, u2 = u.sub(0).collapse(), u.sub(1).collapse()?
The default shape is (), Which means a scalar value, (N,) would be a N-dimensional vector, (N,M) an NxM matrix etc
When it comes to BDMCF, see:
an element in this space has a vector basis, as seen in: DefElement
i.e. the degree of freedom is a scalar value, that is then multiplied by the vector basis to get a vector valued function.
As such an element has a scalar DOF and a vector valued basis, you cannot decompose it into sub spaces for coordinate components, as you can do with a VectorElement with a Lagrange basis.
Is there any function space to store a third order tensor function? I’m now dealing third order tensors by storing them with 3 tensor function spaces, but it’s a bit messy.