1#ifndef NS_SOLUTIONS_HPP
2#define NS_SOLUTIONS_HPP
10 namespace NSASolutions
20 inline std::string
name()
const {
35 virtual Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const = 0;
38 virtual Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const = 0;
39 virtual double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const = 0;
40 virtual Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const = 0;
41 virtual Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const = 0;
42 virtual double volumicFraction(
const Eigen::Vector2d & x,
const double & t = 0)
const = 0;
55 Linear(
const int & stokes);
60 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
61 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
62 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
63 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
64 double volumicFraction(
const Eigen::Vector2d & x,
const double & t = 0)
const;
80 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
81 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
82 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
83 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
84 double volumicFraction(
const Eigen::Vector2d & x,
const double & t = 0)
const;
99 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
100 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
101 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
102 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
103 double volumicFraction(
const Eigen::Vector2d & x,
const double & t = 0)
const;
115 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
118 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
119 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
120 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
121 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
122 double volumicFraction(
const Eigen::Vector2d & x,
const double & t = 0)
const;
134 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
137 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
138 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
139 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
140 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
141 double volumicFraction(
const Eigen::Vector2d & x,
const double & t = 0)
const;
154 const double & rho_max,
162 return std::array<double, 2>{
s_L * ( x[0] - 0.5 ),
s_L * (2. * x[1] - 1)};
165 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
168 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
169 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
170 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
171 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
172 double volumicFraction(
const Eigen::Vector2d & x,
const double & t = 0)
const;
189 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
192 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
193 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
194 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
195 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
196 double volumicFraction(
const Eigen::Vector2d & x,
const double & t = 0)
const;
size_t L
Definition HHO_DiffAdvecReac.hpp:46
std::function< std::array< double, 2 >(const std::array< double, 2 > &)> TransformationType
Definition MeshBuilder2D.hpp:174
Definition ddr-klplate.hpp:27
Definition nsa-solutions.hpp:93
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:217
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:182
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:211
double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:235
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:200
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:205
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:190
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:230
Definition nsa-solutions.hpp:186
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:451
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:466
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:456
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:471
double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:501
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:496
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:477
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:490
Definition nsa-solutions.hpp:112
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:259
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:288
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:270
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:282
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:293
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:251
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:276
double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:298
Definition nsa-solutions.hpp:15
double viscosity() const
Return the viscosity.
Definition nsa-solutions.hpp:31
virtual Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
virtual Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const =0
std::string name() const
Return the solution name.
Definition nsa-solutions.hpp:20
virtual ~IExactSolution()
Definition nsa-solutions.cpp:28
virtual double pressure(const Eigen::Vector2d &x, const double &t=0) const =0
virtual Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const =0
double m_viscosity
Definition nsa-solutions.hpp:48
std::string m_name
Definition nsa-solutions.hpp:46
bool isStokes() const
Definition nsa-solutions.hpp:26
virtual Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const =0
bool m_is_stokes
Definition nsa-solutions.hpp:47
virtual double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
virtual double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const =0
virtual double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
Definition nsa-solutions.hpp:131
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:333
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:323
double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:366
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:314
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:356
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:338
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:344
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:361
Definition nsa-solutions.hpp:54
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:88
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:63
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:75
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:58
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:50
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:69
double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:93
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:44
Definition nsa-solutions.hpp:150
double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:435
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:398
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:413
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:408
static Mesh2D::MeshBuilder::TransformationType domain_transformation
A function to transform the unit domain to .
Definition nsa-solutions.hpp:161
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:430
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:425
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:419
static double s_L
Definition nsa-solutions.hpp:151
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:393
Definition nsa-solutions.hpp:74
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:133
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:109
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:161
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:139
double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:166
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:128
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:145
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:117