https://mooseframework.inl.gov
TimeDependentEquationSystemProblemOperator.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 
17 
18 namespace Moose::MFEM
19 {
20 
24 {
25 public:
30  {
31  }
32 
33  virtual void SetGridFunctions() override;
34  virtual void Init(mfem::BlockVector & X) override;
35  virtual void ImplicitSolve(const mfem::real_t, const mfem::Vector &, mfem::Vector &) override;
36  virtual void Solve() override;
37 
38  [[nodiscard]] virtual Moose::MFEM::TimeDependentEquationSystem *
39  GetEquationSystem() const override
40  {
41  mooseAssert(_equation_system,
42  "No TimeDependentEquationSystem in TimeDependentEquationSystemProblemOperator.");
43  return _equation_system.get();
44  }
45 
46 protected:
48  void BuildEquationSystemOperator(mfem::real_t dt);
49 
50 private:
51  std::shared_ptr<Moose::MFEM::TimeDependentEquationSystem> _equation_system{nullptr};
52 };
53 
54 } // namespace Moose::MFEM
55 
56 #endif
Problem operator for time-dependent problems with no equation system.
std::unique_ptr< T_DEST, T_DELETER > dynamic_pointer_cast(std::unique_ptr< T_SRC, T_DELETER > &src)
These are reworked from https://stackoverflow.com/a/11003103.
void BuildEquationSystemOperator(mfem::real_t dt)
Add kernels/bcs and assemble the linear part of the equation system.
Class to store weak form components for time dependent PDEs.
virtual Moose::MFEM::TimeDependentEquationSystem * GetEquationSystem() const override
Returns a pointer to the operator&#39;s equation system.
Problem operator for time-dependent problems with an equation system.
std::shared_ptr< Moose::MFEM::TimeDependentEquationSystem > _equation_system
Utilities for converting between vector(s) of libMesh Points and MFEM Vector(s).
virtual void ImplicitSolve(const mfem::real_t, const mfem::Vector &, mfem::Vector &) override