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.
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)
Thanks for your reply. It seems to be working.