https://mooseframework.inl.gov
Loading...
Searching...
No Matches
MFEMNonlinearSolverBase.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 "MFEMSolverBase.h"
15
16#include "libmesh/ignore_warnings.h"
17#include "mfem.hpp"
18#include "libmesh/restore_warnings.h"
19
20namespace Moose::MFEM
21{
26{
27public:
28 virtual ~NonlinearSolverBase() = default;
29
31
33
34 void ConstructSolver() override = 0;
35
37 virtual void SetLinearSolver(mfem::Solver & solver) = 0;
38
40 virtual bool RequiresGradient() const = 0;
41
43 virtual bool RequiresExternalLinearSolver() const = 0;
44};
45} // namespace Moose::MFEM
46
47#endif
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
const InputParameters & parameters() const
Get the parameters of the object.
Definition MooseBase.h:131
MooseObject base for nonlinear MFEM solve strategies configured in the input file.
virtual bool RequiresGradient() const =0
Return whether this nonlinear solver requires Jacobian/gradient information from the operator.
void ConstructSolver() override=0
Override in derived classes to construct and set the solver options.
virtual bool RequiresExternalLinearSolver() const =0
Return whether this nonlinear solver requires an externally configured MFEM linear solver.
virtual ~NonlinearSolverBase()=default
virtual void SetLinearSolver(mfem::Solver &solver)=0
Configure the linear solver used inside the nonlinear solve.
Base class for wrapping mfem::Solver-derived classes.
Utilities for converting between vector(s) of libMesh Points and MFEM Vector(s).