Eigenvalues of Kirchoff-Love plate equation with axial load

I hope all are doing great. I want to compute the eigenvalue of the Kirchoff-Love plate equation with uni-direction axial load by using the LOBPCG method. For the discretization of the Kirchoff-Love plate equation, I am using the HHJ method. I already computed the eigenvalue of the Euler-Bernoulli beam equation with axial load using the LOBPCG method. The computed values are the same as the analytical expression. But for the Plate equation, I faced an error (UmfpackInverse: Numeric factorization failed). You can see this in the following attachment. Kindly tell me how I can fix this issue. I will be very grateful to you.

Rectangular_Kirchoff_Love_plate_LOBPCG.ipynb (6.5 KB)

when defining the Q space, you have:
Q = H1(mesh, order=2, dirichlet=ā€œ.*ā€)
Iā€™m not familiar with the .* notation. You need to put the boundary of the domain there. You can call mesh.GetBoundaries() to get the name(s) of it.

Also, when you do the solve step:
S = b.mat.T @ a.mat.Inverse() @ b.mat
you need to feed in the Q.FreeDofs() there.
Also note that Q.FreeDofs() and fes.FreeDofs() is not the same, because fes = V*Q (product space).

I would also suggest you not try an iterative method yet; just do a direct solve. Once you are sure it works, then you can move to an iterative method.


Hi Rauf,

when creating the trial- and testfunctions from the productspace, the a bilinear form thinks that it is defined on the product space. Defining trial- and testfunctions without product space overcomes this issue.

Also, the preconditioner should be created from the k bilinear form, not the b bilinear form, which is a rectangular matrix. Only in 1D the b and k bilinear forms are accidentally the same.

With these changes it seems to work, although the LOBPCG takes a long time to converge (>600).

Rectangular_Kirchoff_Love_plate_LOBPCG.ipynb (5.3 KB)


Hi Michel,
Thanks for your reply. It seems to be working.