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

Scale eigenvector with new Eigenvalue executioner #14500

Closed
zachmprince opened this issue Dec 10, 2019 · 1 comment · Fixed by #14505
Closed

Scale eigenvector with new Eigenvalue executioner #14500

zachmprince opened this issue Dec 10, 2019 · 1 comment · Fixed by #14505
Labels
C: Framework P: normal A defect affecting operation with a low possibility of significantly affects. T: task An enhancement to the software.

Comments

@zachmprince
Copy link
Contributor

Reason

Typically the solution to an eigenvalue problem, or eigenvector, can be scaled by anything and still be correct. I believe the SLEPc eigenvalue solver scales the solution to the L2 norm of the solution vector. This type of normalization does not have much physical meaning. However, when using eigenvalue solves to initialize transient simulations or coupling multi-physics, the scale of the eigenvector matters significantly. It would useful to have an input parameter in the Eigenvalue executioner that would allow the eigenvector to be scaled to a user defined quantity after the solve has finished.

Design

After the executioner finishes the solve step, call a function in EigenProblem that scales the variables that have been marked as eigen variables. The scaling would include an inputted postprocessor value and a scaler, which is to have the ability to scale the eigenvector such that a certain postprocessor is a specified value.

Impact

Allow users to transfer and couple an eigenvector with a physically meaningful normalization.

@zachmprince zachmprince added P: normal A defect affecting operation with a low possibility of significantly affects. T: task An enhancement to the software. labels Dec 10, 2019
@YaqiWang
Copy link
Contributor

YaqiWang commented Dec 10, 2019

My thinking is that the numerical solution in SLEPc solver does not have to be scaled to have a physical meaning. Not sure if this is the right thinking though. But we do want a function in eigen system like scaleEigenVector(unsigned int comp, Real factor), where comp is the index of eigenvalues (0 for fundamental mode). If eigen system does not own the solution vector, the interface might be like scaleEigenVector(NumericVector<Real> & sol, Real factor).

Currently Eigenvalue is derived from Steady, making me tend to think we possibly can merge Eigenvalue and Steady into one. But I think Eigenvalue should stand by itself. In the future, we should derive Eigenvalue directly from Executioner. We can add MeshAdaptation solve object to avoid code duplication. Talked with Zach, we think adding two extra parameters in Eigenvalue does not hurt and can sometimes be pretty convenient considering that we will not merge Eigenvalue into Steady. Probably Zach is working on a PR for this.

zachmprince added a commit to zachmprince/moose that referenced this issue Dec 10, 2019
zachmprince added a commit to zachmprince/moose that referenced this issue Dec 10, 2019
zachmprince added a commit to zachmprince/moose that referenced this issue Dec 10, 2019
zachmprince added a commit to zachmprince/moose that referenced this issue Dec 11, 2019
zachmprince added a commit to zachmprince/moose that referenced this issue Dec 13, 2019
zachmprince added a commit to zachmprince/moose that referenced this issue Jan 8, 2020
zachmprince added a commit to zachmprince/moose that referenced this issue Jan 13, 2020
zachmprince added a commit to zachmprince/moose that referenced this issue Jan 13, 2020
aeslaughter pushed a commit to aeslaughter/moose that referenced this issue Jan 21, 2020
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

Successfully merging a pull request may close this issue.

3 participants