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:218
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:183
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:212
double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:236
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:201
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:206
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:191
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:231
Definition nsa-solutions.hpp:186
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:452
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:467
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:457
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:472
double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:502
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:497
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:478
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:491
Definition nsa-solutions.hpp:112
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:260
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:289
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:271
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:283
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:294
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:252
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:277
double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:299
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:334
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:324
double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:367
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:315
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:357
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:339
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:345
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:362
Definition nsa-solutions.hpp:54
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:89
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:94
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:436
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:399
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:414
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:409
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:431
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:426
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:420
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:394
Definition nsa-solutions.hpp:74
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:134
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:110
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:162
double volumicFraction(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:140
double densityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:167
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:129
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:146
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition nsa-solutions.cpp:118