Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
fdkong opened this issue Jul 25, 2016 · 9 comments
Closed

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

fdkong opened this issue Jul 25, 2016 · 9 comments
Assignees
Labels
C: Framework P: normal A defect affecting operation with a low possibility of significantly affects. T: task An enhancement to the software.

Comments

@fdkong
Copy link
Contributor

fdkong commented Jul 25, 2016

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
Copy link
Member

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

@permcody permcody added this to the Tiger Team 2016 milestone Jul 25, 2016
@permcody
Copy link
Member

@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 fdkong assigned fdkong and unassigned friedmud and permcody Jul 25, 2016
@fdkong
Copy link
Contributor Author

fdkong commented Jul 25, 2016

@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
Copy link
Contributor

YaqiWang commented Jul 25, 2016

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 permcody added C: Framework T: task An enhancement to the software. P: normal A defect affecting operation with a low possibility of significantly affects. labels Jul 28, 2016
fdkong added a commit to fdkong/moose that referenced this issue Aug 23, 2016
There is already a class called EigenSystem in LibMesh. Renamed EigenSystem to MooseEigenSystem
to resolve the name confict because we are going to bring the libmesh EigenSystem into
moose.

Refs idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue Aug 31, 2016
to allow us to derive EigenSystem from Libmesh. To achieve this goal, the following steps will be taken:

(1) Rename  NonlinearSystem to NonlinearSystemBase

(2) Create a new class NonlinearSystem deriving from the class NonlinearSystemBase

(3) Change the inheritance of the class MooseEigenSystem. MooseEigenSystem should  derive  from the class NonlinearSystemBase instead of the class NonlinearSystem

(4) Move some functions specified for the NonlinearSystem only from the NonlinearSystemBase  to the class NonlinearSystem

(5) Enable SystemTempl<EigenSystem> to bring SLEPc from Libmesh

In this PR, we finished steps (1) and (2).

Refs  idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue Sep 1, 2016
to allow us to derive EigenSystem from Libmesh. To achieve this goal, the following steps will be taken:

(1) Rename  NonlinearSystem to NonlinearSystemBase

(2) Create a new class NonlinearSystem deriving from the class NonlinearSystemBase

(3) Change the inheritance of the class MooseEigenSystem. MooseEigenSystem should  derive  from the class NonlinearSystemBase instead of the class NonlinearSystem

(4) Move some functions specified for the NonlinearSystem only from the NonlinearSystemBase  to the class NonlinearSystem

(5) Enable SystemTempl<EigenSystem> to bring SLEPc from Libmesh

In this PR, we finished steps (1) and (2).

Refs  idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue Sep 20, 2016
ThreadedElementLoop does not necessarily depend on
System.

Refs idaholab#7398 idaholab#7654
fdkong added a commit to fdkong/moose that referenced this issue Sep 20, 2016
Remove NonlinearSystem/AxiliarySystem from constructors as long as FEProblem is also an input parameter.
Nonlinearsystem and AxiliarSystem can be retreived from FEProblem.

Refs  idaholab#7398 idaholab#7654
fdkong added a commit to fdkong/moose that referenced this issue Sep 20, 2016
Remove NonlinearSystem/AxiliarySystem from constructors as long as FEProblem is also an input parameter.
Nonlinearsystem and AxiliarSystem can be retreived from FEProblem.

Refs  idaholab#7398 idaholab#7654
fdkong added a commit to fdkong/moose that referenced this issue Sep 20, 2016
Remove NonlinearSystem/AxiliarySystem from constructors as long as FEProblem is also an input parameter.
Nonlinearsystem and AxiliarSystem can be retreived from FEProblem.

Refs  idaholab#7398 idaholab#7654
fdkong added a commit to fdkong/moose that referenced this issue Sep 20, 2016
Remove NonlinearSystem/AxiliarySystem from constructors as long as FEProblem is also an input parameter.
Nonlinearsystem and AxiliarSystem can be retreived from FEProblem.

Refs  idaholab#7398 idaholab#7654
fdkong added a commit to fdkong/moose that referenced this issue Sep 21, 2016
Move SystemTempl into NonlinearSystem to make AssemblySystem independent.

Any functions which depends on SysBase and SystemTempl, are moved back to
NonlinearSystem.

Refs idaholab#7398 idaholab#7654
fdkong added a commit to fdkong/moose that referenced this issue Sep 22, 2016
Move SystemTempl into NonlinearSystem to make AssemblySystem independent.

Any functions which depends on SysBase and SystemTempl, are moved back to
NonlinearSystem.

Refs idaholab#7398 idaholab#7654
fdkong added a commit to fdkong/moose that referenced this issue Oct 11, 2016
Moved all functions which depends on System (libmesh) only into SystemBase

Refs idaholab#7762 idaholab#7654 idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue Oct 11, 2016
and restoreSolutions.

In these functions, we do not directly use member variables any more, instead, we
call member functions (pure functions) to access solutions (at current step, previous time steps). This allows sub-classes to specify
their own implementation.

Refs idaholab#7762 idaholab#7654 idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue Oct 11, 2016
Removed SystemTmpl from NonlinearSystem, and implemented functions:
solution(), solutionOld(), solutionOlder(), sys() and system().

Refs idaholab#7762 idaholab#7654  idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue Oct 11, 2016
fdkong added a commit to fdkong/moose that referenced this issue Feb 4, 2020
fdkong added a commit to fdkong/moose that referenced this issue Mar 26, 2020
fdkong added a commit to fdkong/moose that referenced this issue Mar 26, 2020
fdkong added a commit to fdkong/moose that referenced this issue Mar 26, 2020
In order to get the best performance, users should use petsc-3.13 or higher

Closes idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue Mar 26, 2020
In order to get the best performance, users should use petsc-3.13 or higher

Closes idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue May 1, 2020
fdkong added a commit to fdkong/moose that referenced this issue May 1, 2020
fdkong added a commit to fdkong/moose that referenced this issue May 1, 2020
In order to get the best performance, users should use petsc-3.13 or higher

Closes idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue May 7, 2020
fdkong added a commit to fdkong/moose that referenced this issue May 7, 2020
fdkong added a commit to fdkong/moose that referenced this issue May 7, 2020
In order to get the best performance, users should use petsc-3.13 or higher

Closes idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue May 13, 2020
fdkong added a commit to fdkong/moose that referenced this issue May 13, 2020
fdkong added a commit to fdkong/moose that referenced this issue May 13, 2020
In order to get the best performance, users should use petsc-3.13 or higher

Closes idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue May 18, 2020
fdkong added a commit to fdkong/moose that referenced this issue May 18, 2020
fdkong added a commit to fdkong/moose that referenced this issue May 18, 2020
In order to get the best performance, users should use petsc-3.13 or higher

Closes idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue May 20, 2020
fdkong added a commit to fdkong/moose that referenced this issue May 20, 2020
fdkong added a commit to fdkong/moose that referenced this issue May 20, 2020
In order to get the best performance, users should use petsc-3.13 or higher

Closes idaholab#7398
fdkong added a commit to fdkong/moose that referenced this issue May 20, 2020
fdkong added a commit to fdkong/moose that referenced this issue May 20, 2020
In order to get the best performance, users should use petsc-3.13 or higher

Closes idaholab#7398
tophmatthews pushed a commit to tophmatthews/moose that referenced this issue May 27, 2020
tophmatthews pushed a commit to tophmatthews/moose that referenced this issue May 27, 2020
tophmatthews pushed a commit to tophmatthews/moose that referenced this issue May 27, 2020
In order to get the best performance, users should use petsc-3.13 or higher

Closes idaholab#7398
tophmatthews pushed a commit to tophmatthews/moose that referenced this issue May 27, 2020
tophmatthews pushed a commit to tophmatthews/moose that referenced this issue May 27, 2020
tophmatthews pushed a commit to tophmatthews/moose that referenced this issue May 27, 2020
In order to get the best performance, users should use petsc-3.13 or higher

Closes idaholab#7398
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: Framework P: normal A defect affecting operation with a low possibility of significantly affects. T: task An enhancement to the software.
Projects
None yet
Development

No branches or pull requests

6 participants