https://mooseframework.inl.gov
MFEMHypreAME.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #ifdef MOOSE_MFEM_ENABLED
11 
12 #pragma once
13 
14 #include "MFEMEigensolverBase.h"
15 
20 {
21 public:
23 
25 
27  virtual void SetOperator(mfem::OperatorHandle & op) override
28  {
29  if (_preconditioner)
30  _preconditioner->SetOperator(op);
31  _eigensolver->SetOperator(*op.As<mfem::HypreParMatrix>());
32  }
33 
35  virtual void SetMassMatrix(mfem::OperatorHandle & mass) override
36  {
37  _eigensolver->SetMassMatrix(*mass.As<mfem::HypreParMatrix>());
38  }
39 
41  virtual void Solve() override { _eigensolver->Solve(); }
42 
44  virtual void GetEigenvalues(mfem::Array<mfem::real_t> & eigenvalues) const override
45  {
46  _eigensolver->GetEigenvalues(eigenvalues);
47  }
48 
50  virtual const mfem::HypreParVector & GetEigenvector(int index) const override
51  {
52  return _eigensolver->GetEigenvector(index);
53  }
54 
55 protected:
57  virtual void ConstructSolver() override;
58 
60  std::unique_ptr<mfem::HypreAME> _eigensolver;
61 };
62 
63 #endif
virtual const mfem::HypreParVector & GetEigenvector(int index) const override
Retrieves the computed eigenvector corresponding to the given index.
Definition: MFEMHypreAME.h:50
virtual void Solve() override
Solves the eigenvalue problem.
Definition: MFEMHypreAME.h:41
const InputParameters & parameters() const
Get the parameters of the object.
Definition: MooseBase.h:131
Class for the HypreAME eigensolver.
Definition: MFEMHypreAME.h:19
static InputParameters validParams()
Definition: MFEMHypreAME.C:18
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
MFEMHypreAME(const InputParameters &parameters)
Definition: MFEMHypreAME.C:27
virtual void ConstructSolver() override
Override in derived classes to construct and set the solver options.
Definition: MFEMHypreAME.C:34
std::shared_ptr< LinearSolverBase > _preconditioner
Preconditioner to be used for the problem.
virtual void GetEigenvalues(mfem::Array< mfem::real_t > &eigenvalues) const override
Retrieves the computed eigenvalues.
Definition: MFEMHypreAME.h:44
std::unique_ptr< mfem::HypreAME > _eigensolver
Eigensolver to be used for the problem.
Definition: MFEMHypreAME.h:60
virtual void SetOperator(mfem::OperatorHandle &op) override
Sets the operator for the eigensolver and propagates it to the preconditioner.
Definition: MFEMHypreAME.h:27
virtual void SetMassMatrix(mfem::OperatorHandle &mass) override
Sets the mass matrix for the eigensolver.
Definition: MFEMHypreAME.h:35
Base class for eigensolvers.