TransFlow  0.1.0
A transient pipeline flow simulation library
governingequationsolver.hpp
1 #pragma once
2 
3 #include <armadillo>
4 #include <memory>
5 
6 class Pipeline;
9 class MatrixEquation;
10 class Discretizer;
11 
19 {
20 public:
23 
25  virtual arma::mat solve(
26  const arma::uword dt,
27  const Pipeline& currentState,
28  const Pipeline& newState,
29  const BoundaryConditions& boundaryConditions) = 0;
30 
34  bool isOverDetermined(const BoundaryConditions& boundaryConditions);
35 };
36 
42 template<typename T = InternalEnergyDiscretizer>
44 {
45 public:
47  virtual ~GoverningEquationSolver();
48 
53  explicit GoverningEquationSolver(const arma::uword nGridPoints);
54 
59  explicit GoverningEquationSolver(std::unique_ptr<Discretizer> discretizer);
60 
70  virtual arma::mat solve(
71  const arma::uword dt,
72  const Pipeline& currentState,
73  const Pipeline& newState,
74  const BoundaryConditions& boundaryConditions) override;
75 
76 private:
77  const arma::uword m_nVariables = 3;
78 
84  std::unique_ptr<Discretizer> m_discretizer;
85 
88  std::unique_ptr<MatrixEquation> m_matrixEquation;
89 };
MatrixEquation
The MatrixEquation class sets up the matrix equation from the system of equations found from the gove...
Definition: matrixequation.hpp:36
Pipeline
Definition: pipeline.hpp:16
GoverningEquationSolver::m_nVariables
const arma::uword m_nVariables
Number of flow variables (flow, pressure and temperature)
Definition: governingequationsolver.hpp:77
GoverningEquationSolverBase::solve
virtual arma::mat solve(const arma::uword dt, const Pipeline &currentState, const Pipeline &newState, const BoundaryConditions &boundaryConditions)=0
See GoverningEquationSolver::solve().
GoverningEquationSolverBase::~GoverningEquationSolverBase
virtual ~GoverningEquationSolverBase()
Declared to avoid the inline compiler-generated default destructor.
GoverningEquationSolver::m_discretizer
std::unique_ptr< Discretizer > m_discretizer
Definition: governingequationsolver.hpp:84
GoverningEquationSolver
The GoverningEquationSolver class is a composition of Discretizer and MatrixEquation with a little bi...
Definition: governingequationsolver.hpp:43
GoverningEquationSolver::~GoverningEquationSolver
virtual ~GoverningEquationSolver()
Declared to avoid the inline compiler-generated default destructor.
GoverningEquationSolver::GoverningEquationSolver
GoverningEquationSolver(const arma::uword nGridPoints)
Construct with string determining the type of energy equation.
GoverningEquationSolver::m_matrixEquation
std::unique_ptr< MatrixEquation > m_matrixEquation
Definition: governingequationsolver.hpp:88
BoundaryConditions
The BoundaryConditions class is a container for the boundary conditions at the inlet and outlet of a ...
Definition: boundaryconditions.hpp:27
InternalEnergyDiscretizer
Implementation of Discretizer for the internal energy form of the energy equation.
Definition: internalenergy.hpp:13
GoverningEquationSolverBase
Simple Base class to avoid having to specify template argument for GoverningEquationSolver....
Definition: governingequationsolver.hpp:18
GoverningEquationSolver::solve
virtual arma::mat solve(const arma::uword dt, const Pipeline &currentState, const Pipeline &newState, const BoundaryConditions &boundaryConditions) override
Solve the governing equations for a given time step and boundary conditions.
Discretizer
Discretizer is an abstract class, the base class the implementation of the discretization of the two ...
Definition: discretizer.hpp:42
GoverningEquationSolverBase::isOverDetermined
bool isOverDetermined(const BoundaryConditions &boundaryConditions)