idaholab / moose

Multiphysics Object Oriented Simulation Environment
https://www.mooseframework.org
GNU Lesser General Public License v2.1
1.77k stars 1.05k forks source link

Enable an eigenvalue-solver package, SLEPc, in MOOSE #7398

Closed fdkong closed 4 years ago

fdkong commented 8 years ago

Description of the enhancement or error report

There are two eigenvalue solvers implemented by @YaqiWang in MOOSE right now; the power method and the nonlinear solver (forming the eigenvalue problem as a regular nonlinear problem). Two solvers work well for the largest/smallest eigenvalue, but they are not enough for other general problems that require more than one eigenpairs. There are also other issues regarding the implementation: (1) it is not easy to maintain because the eigenvalue solver messes up with physics; (2) Kernels are not organized well, which could result in many duplicated kernels for the left hand size operator A and the right hand size operator B (generalized eigenvalue problems Ax=\lambda Bx).

We are improving the implementation by separating the eigenvalue solver from MOOSE by taking advantage of SLEPc which has many eigenvalue algorithms for different problems. Kernel Warehouse should be somehow reorganized so that we compute the right kernels and the left kernels separately. We will allow to form A and B in a matrix-free manner. Users possibly just provide some similar functions as the nonlinear residual evaluations for the matrix-vector multiplication. To implement this, a subclass inheriting from ShellMatrix in Libmesh will be added.

Executioner should be improved so that we could either solve a nonlinear problem or an eigenvalue problem or both during each time step. Asking suggestions from @friedmud.

@YaqiWang possibly has more things to add here.

The system hierarchy and problem hierarchy will be like:

             +--> DisplacedSystem
             | 
SystemBase ->+--> AuxiliarySystem
             |
             +-->NonlinearSystemBase+--> NonlinearSystem
                                    |
                                    +--> NonlinearEigenSystem
SubProblem ->+--> DisplacedProblem
             |
             +-->FEProblem+--> EquationProblem
                          |
                          +--> EigenProblem
permcody commented 8 years ago

Let's chat about this next week at the Tiger Team.

permcody commented 8 years ago

@fdkong - you don't need to assign it to us. The assignees for an issue are the people who are working the issue. If you just want comments, tagging us is all you need. The assignee (is anyone) should probably be you if you are planning to work this.

fdkong commented 8 years ago

@fdkong - you don't need to assign it to us. The assignees for an issue are the people who are working the issue. If you just want comments, tagging us is all you need. The assignee (is anyone) should probably be you if you are planning to work this.

Thanks, @permcody. The assignee is me right now, and I am planning to work on this issue.

YaqiWang commented 8 years ago

Thanks for working on this! We do need a cleaner implementation of the eigen executioners. Also we want more solving options in case the existing two eigen solvers do not perform well for certain problems. In summary, this issue is very important to us! Should you have any questions, feel free to stop by. Once we finish this, we can create a patch in Rattlesnake. This patch is going to be big because Rattlesnake heavily relies on the MOOSE eigen executioners. I hope this refactoring will make the executioners more useful to other physics.

permcody commented 6 years ago

@fdkong - when do you plan to close this ticket? This task is complete correct?

lindsayad commented 6 years ago

@fdkong Shouldn't this issue be closed?

fdkong commented 6 years ago

@lindsayad Not done yet. I still need to refactor the code to support DG

GregVernon commented 5 years ago

What's the status on this capability? Trying to run a natural frequency extraction and this error comes up:

ERROR Need to install SLEPc to solve eigenvalue problems, please reconfigure libMesh

fdkong commented 5 years ago

@GregVernon. It should work. The error means you did not install SLEPc. Our solver is in SLEPc.

Go ahead to install SLEPc, and try again. If you have any issue, please let me know.