https://mooseframework.inl.gov
MFEMSuperLU.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 MFEM_ENABLED
11 
12 #pragma once
13 #include "MFEMSolverBase.h"
14 #include "libmesh/ignore_warnings.h"
15 #include <mfem.hpp>
16 #include "libmesh/restore_warnings.h"
17 #include <memory>
18 
19 namespace Moose::MFEM
20 {
21 
26 class SuperLUSolver : public mfem::SuperLUSolver
27 {
28 public:
29  SuperLUSolver(MPI_Comm comm, int npdep = 1) : mfem::SuperLUSolver(comm, npdep){};
30  void SetOperator(const mfem::Operator & op) override
31  {
32  _a_superlu = std::make_unique<mfem::SuperLURowLocMatrix>(op);
33  mfem::SuperLUSolver::SetOperator(*_a_superlu.get());
34  }
35 
36 private:
37  std::unique_ptr<mfem::SuperLURowLocMatrix> _a_superlu{nullptr};
38 };
39 } // namespace Moose::MFEM
40 
45 {
46 public:
48 
50 
51 protected:
52  void constructSolver(const InputParameters & parameters) override;
53 
55  void updateSolver(mfem::ParBilinearForm & a, mfem::Array<int> & tdofs) override;
56 };
57 
58 #endif
static InputParameters validParams()
Definition: MFEMSuperLU.C:18
Wrapper for mfem::mfem::SuperLUSolver.
Definition: MFEMSuperLU.h:44
void SetOperator(const mfem::Operator &op) override
Definition: MFEMSuperLU.h:30
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
void constructSolver(const InputParameters &parameters) override
Override in derived classes to construct and set the solver options.
Definition: MFEMSuperLU.C:33
void updateSolver(mfem::ParBilinearForm &a, mfem::Array< int > &tdofs) override
Updates the solver with the bilinear form in case LOR solve is required.
Definition: MFEMSuperLU.C:40
SuperLUSolver(MPI_Comm comm, int npdep=1)
Definition: MFEMSuperLU.h:29
MFEMSuperLU(const InputParameters &parameters)
Definition: MFEMSuperLU.C:27
std::unique_ptr< mfem::SuperLURowLocMatrix > _a_superlu
Definition: MFEMSuperLU.h:37
Wrapper for mfem::SuperLU solver that creates a SuperLURowLocMatrix from the operator when set...
Definition: MFEMSuperLU.h:26
Base class for wrapping mfem::Solver-derived classes.
const InputParameters & parameters() const
Get the parameters of the object.