Hi, I’m working on using numpy library linalg.eig to get the eigenvalue and eigenvector.
I want to use the eigenvalue and eigenvector to solve some variational formulation.
What I want is as follows.
h is the 3x3 tensor element defined as follows.
P3 = fe.TensorElement(‘CG’, fe.triangle, degree = h_deg) # h tensor
P2 = fe.VectorElement(‘CG’, fe.triangle, degree = v_deg) # velocity
P1 = fe.FiniteElement(‘CG’, fe.triangle, degree = p_deg) # pressure
elem = fe.MixedElement([P3, P2, P1])
V = fe.FunctionSpace(mesh, elem)
z = fe.Function(V)
z_ = fe.TrialFunction(V) # used in Jacobian formulation
h, u, p = fe.split(z)
h_T, v, q = fe.TestFunctions(V)
def eigenvecmatrix(h):
q = np.array(h)
w, v = np.linalg.eig(q)
return v
And then, with using the eigenvecmatrix(h), I want to solve the variational formulation.
F_Eq = - fe.div(v) * p * fe.dx
+ fe.inner((eigenvecmatrix(h), fe.nabla_grad(v)) * fe.dx
+ fe.div(u) * q * fe.dx \
This is not really working formulation… but the system is not that simple to input all the information here. Anyway, is there any to convert the h as the numpy array form? The above method says the h is a ListTensor which does not have its subordinate vector… and not can be converted as mentioned method above…
If you have any ideas, I will really appreciate it.