Chi-Tech
chi_solver.h
Go to the documentation of this file.
1#ifndef CHI_PHYSICS_SOLVER_H
2#define CHI_PHYSICS_SOLVER_H
3
4#include "ChiObject.h"
6
9
10#include <iostream>
11#include <utility>
12
13namespace chi_physics
14{
15class FieldFunctionGridBased;
16class TimeStepper;
17
18// ######################################################### Solver parent class
19/**\defgroup SolverBase Base class for all solvers
20* \ingroup doc_PhysicsSolver*/
21class Solver : public ChiObject
22{
23public:
25 explicit Solver(std::string in_text_name);
26 Solver(std::string in_text_name,
27 std::initializer_list<BasicOption> in_options);
28 explicit Solver(const chi::InputParameters& params);
29 virtual ~Solver() = default;
30
31 std::string TextName() const;
32
34 const BasicOptions& GetBasicOptions() const;
35
36 std::vector<std::shared_ptr<FieldFunctionGridBased>>& GetFieldFunctions();
37
38 const std::vector<std::shared_ptr<FieldFunctionGridBased>>&
39 GetFieldFunctions() const;
40
42 const TimeStepper& GetTimeStepper() const;
43
44 virtual void Initialize();
45 virtual void Execute();
46 virtual void Step();
47 virtual void Advance();
48
49 /**Generalized query for information supporting varying returns.*/
50 virtual chi::ParameterBlock GetInfo(const chi::ParameterBlock& params) const;
51 virtual void SetProperties(const chi::ParameterBlock& params);
52 /**PreCheck call to GetInfo.*/
54 GetInfoWithPreCheck(const chi::ParameterBlock& params) const;
55
56protected:
58 std::vector<std::shared_ptr<FieldFunctionGridBased>> field_functions_;
59 std::shared_ptr<TimeStepper> timestepper_ = nullptr;
60
61private:
62 static std::shared_ptr<TimeStepper>
64 const std::string text_name_;
65};
66
67} // namespace chi_physics
68
69#endif
std::vector< std::shared_ptr< FieldFunctionGridBased > > field_functions_
Definition: chi_solver.h:58
TimeStepper & GetTimeStepper()
Definition: chi_solver.cc:128
std::string TextName() const
Definition: chi_solver.cc:116
virtual void Initialize()
Definition: chi_solver.cc:146
const std::string text_name_
Definition: chi_solver.h:64
static std::shared_ptr< TimeStepper > InitTimeStepper(const chi::InputParameters &params)
Definition: chi_solver.cc:70
static chi::InputParameters GetInputParameters()
Definition: chi_solver.cc:16
BasicOptions & GetBasicOptions()
Definition: chi_solver.cc:118
Solver(std::string in_text_name)
Definition: chi_solver.cc:48
std::shared_ptr< TimeStepper > timestepper_
Definition: chi_solver.h:59
virtual ~Solver()=default
virtual void SetProperties(const chi::ParameterBlock &params)
Definition: chi_solver.cc:195
virtual void Step()
Definition: chi_solver.cc:156
BasicOptions basic_options_
Definition: chi_solver.h:57
virtual void Execute()
Definition: chi_solver.cc:151
virtual void Advance()
Definition: chi_solver.cc:161
std::vector< std::shared_ptr< FieldFunctionGridBased > > & GetFieldFunctions()
Definition: chi_solver.cc:123
virtual chi::ParameterBlock GetInfo(const chi::ParameterBlock &params) const
Definition: chi_solver.cc:166
chi::ParameterBlock GetInfoWithPreCheck(const chi::ParameterBlock &params) const
Definition: chi_solver.cc:172