Dear experienced fenics users,
I am trying to get a transformation matrix A which computes f = A*d, which f is a scaler field and d is a vector of design variables.
from fenics import * import numpy as np mesh = UnitSquareMesh(5, 5) V = VectorElement("CG", mesh.ufl_cell(), 2) Vh = FunctionSpace(mesh, V) #actual expression is f = Expression(("d0*x*x + d1*(x+x)"), degree=2) #trying to get matrix A from differentiated u_D, such that f = A*d u_D = Expression(("x*x", "x+x"), degree=2) u = Function(Vh) u.interpolate(u_D) print(np.shape(u.vector().get_local())) #However I get a single column vector instead of two column matrix
I have some questions regarding how fenics discrete vector or mixed function space. If I have a vector field expression in 2D, I will expect the discrete vector is of the shape of (dof_dimension * vector_dimension). However, as the following example shows, I’m getting a single column vector instead of a matrix.
The output is (242,), I think it is of dimension (2*dof, ). So does it make sense if I just make it shape of (dof, 2) by cut it in the middle.
Hi, some additional thoughts,
so if I have a variational problem formulated in a vector function space and I assembled the system getting a linear system A*x = b.
Did I get A of shape (dof, dof) and b of shape (dof, vector_dimension)
or I get A of shape(dof, dofvector_space) and b of shape (dofvector_space, )