Line data Source code
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 : #pragma once 11 : 12 : #include "MooseObject.h" 13 : #include "PerfGraphInterface.h" 14 : #include "PostprocessorInterface.h" 15 : 16 : class SolveObject; 17 : class Executioner; 18 : class FEProblemBase; 19 : class DisplacedProblem; 20 : class MooseMesh; 21 : class SystemBase; 22 : class AuxiliarySystem; 23 : 24 : class SolveObject : public MooseObject, public PerfGraphInterface, public PostprocessorInterface 25 : { 26 : public: 27 : SolveObject(Executioner & ex); 28 : 29 : /** 30 : * Method that should be executed once, before any solve calls 31 : */ 32 0 : virtual void initialSetup() {}; 33 : 34 : /** 35 : * Solve routine provided by this object. 36 : * @return True if solver is converged. 37 : */ 38 : virtual bool solve() = 0; 39 : 40 : /// Set the inner solve object wrapped by this object. 41 57501 : virtual void setInnerSolve(SolveObject & solve) { _inner_solve = &solve; } 42 : 43 : protected: 44 : /// Executioner used to construct this 45 : Executioner & _executioner; 46 : /// Reference to FEProblem 47 : FEProblemBase & _problem; 48 : /// Displaced problem 49 : DisplacedProblem * _displaced_problem; 50 : /// Mesh 51 : MooseMesh & _mesh; 52 : /// Displaced mesh 53 : MooseMesh * _displaced_mesh; 54 : /// Reference to a system for creating vectors as needed for the solve, etc. 55 : SystemBase & _solver_sys; 56 : /// Reference to auxiliary system for faster access 57 : AuxiliarySystem & _aux; 58 : /// SolveObject wrapped by this solve object 59 : SolveObject * _inner_solve; 60 : };