1#ifndef NS_SOLUTIONS_HPP
2#define NS_SOLUTIONS_HPP
10 namespace NavierStokesSolutions
15 struct IExactSolution {
20 inline std::string
name()
const {
37 virtual Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t=0)
const = 0;
38 virtual double pressure(
const Eigen::Vector2d & x,
const double & t=0)
const = 0;
39 virtual Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t=0)
const = 0;
40 virtual Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t=0)
const = 0;
56 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
57 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
58 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
59 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
70 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
71 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
72 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
73 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
84 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
85 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
86 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
87 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
95 Kovasznay(
const double & Re, std::ostream & output = std::cout);
99 return std::array<double, 2>{2. * x[0] - 0.5, 2. * x[1]};
104 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
105 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
123 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t)
const;
124 double pressure(
const Eigen::Vector2d & x,
const double & t)
const;
125 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t)
const;
126 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t)
const;
std::function< std::array< double, 2 >(const std::array< double, 2 > &)> TransformationType
Definition MeshBuilder2D.hpp:174
Definition ddr-klplate.hpp:27
Definition ns-solutions.hpp:15
double viscosity() const
Return the viscosity.
Definition ns-solutions.hpp:33
bool isStokes() const
Definition ns-solutions.hpp:26
bool m_is_stokes
Definition ns-solutions.hpp:64
virtual ~IExactSolution()
virtual double pressure(const Eigen::Vector2d &x, const double &t=0) const =0
std::string name() const
Return the solution name.
Definition ns-solutions.hpp:22
virtual Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
virtual double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
double m_viscosity
Definition ns-solutions.hpp:65
std::string m_name
Definition ns-solutions.hpp:63
virtual Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const =0
virtual Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const =0
virtual Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const =0
IExactSolution(std::string name, bool is_stokes, double viscosity)
Definition ns-solutions.hpp:117
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t) const
Definition ns-solutions.cpp:243
KimMoin()
Construct the class given the Reynolds number.
Definition ns-solutions.cpp:214
double pressure(const Eigen::Vector2d &x, const double &t) const
Definition ns-solutions.cpp:238
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t) const
Definition ns-solutions.cpp:220
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t) const
Definition ns-solutions.cpp:228
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t) const
Definition ns-solutions.cpp:251
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t) const
Definition ns-solutions.cpp:258
Definition ns-solutions.hpp:175
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Kovasznay(const double &Re, std::ostream &output=std::cout)
Construct the class given the Reynolds number.
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
static Mesh2D::MeshBuilder::TransformationType domain_transformation
A function to transform the unit domain to .
Definition ns-solutions.hpp:180
Definition ns-solutions.hpp:264
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
LinearTemporal()
Definition ns-solutions.cpp:75
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.hpp:51
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:67
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:57
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:62
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:52
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:45
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:39
Linear()
Definition ns-solutions.cpp:33
Definition ns-solutions.hpp:116
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const