1#ifndef NS_SOLUTIONS_HPP
2#define NS_SOLUTIONS_HPP
10 namespace NavierStokesSolutions
18 double degen_param = 0.0);
22 inline std::string
name()
const {
55 virtual Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const = 0;
57 virtual Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const = 0;
58 virtual double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const = 0;
59 virtual Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const = 0;
60 virtual Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const = 0;
79 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
80 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
81 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
82 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
93 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
94 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
95 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
96 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
105 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
107 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
108 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
109 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
110 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
119 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
121 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
122 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
123 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
124 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
134 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
136 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
137 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
138 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
139 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
149 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
151 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
152 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
153 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
154 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
164 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
166 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
167 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
168 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
169 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
181 return std::array<double, 2>{2. * x[0] - 0.5, 2. * x[1]};
184 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
186 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
187 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
188 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
189 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
203 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
205 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
206 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
207 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
208 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
218 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
220 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
221 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
222 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
223 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
233 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
235 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
236 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
237 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
238 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
250 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
252 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
253 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
254 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
255 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
267 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
269 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
270 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
271 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
272 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
286 Eigen::Vector2d
momentumForcingTerm(
const Eigen::Vector2d & x,
const double & t = 0)
const;
288 Eigen::Vector2d
velocity(
const Eigen::Vector2d & x,
const double & t = 0)
const;
289 double pressure(
const Eigen::Vector2d & x,
const double & t = 0)
const;
290 Eigen::Matrix2d
velocityGradient(
const Eigen::Vector2d & x,
const double & t = 0)
const;
291 Eigen::Vector2d
pressureGradient(
const Eigen::Vector2d & x,
const double & t = 0)
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:28
bool m_is_stokes
Definition ns-solutions.hpp:64
virtual ~IExactSolution()
Definition ns-solutions.cpp:29
double m_flow_index
Definition ns-solutions.hpp:67
double degenParam() const
Return the Carreau-Yasuda degeneracy parameter.
Definition ns-solutions.hpp:51
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
bool isNonNewtonian() const
Return true if the fluid is assumed to be non-Newtonian;.
Definition ns-solutions.hpp:41
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
double m_degen_param
Definition ns-solutions.hpp:68
double flowIndex() const
Return the Carreau-Yasuda flow index.
Definition ns-solutions.hpp:46
bool m_is_nonnewtonian
Definition ns-solutions.hpp:66
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
Definition ns-solutions.hpp:175
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:390
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:385
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:380
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:362
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:370
static Mesh2D::MeshBuilder::TransformationType domain_transformation
A function to transform the unit domain to .
Definition ns-solutions.hpp:180
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:395
Definition ns-solutions.hpp:283
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:764
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:759
LidDrivenCavity()
Definition ns-solutions.cpp:743
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:749
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:774
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:769
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:779
Definition ns-solutions.hpp:88
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:101
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:96
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:91
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:85
LinearPressure()
Definition ns-solutions.cpp:79
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:113
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:108
Definition ns-solutions.hpp:264
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:718
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:723
LinearTemporal()
Definition ns-solutions.cpp:75
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:733
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:728
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:711
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:706
Definition ns-solutions.hpp:74
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:71
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:56
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:43
LinearVelocity()
Definition ns-solutions.cpp:37
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:66
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:49
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:61
Definition ns-solutions.hpp:161
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:325
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:341
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:330
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:335
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:346
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:320
Definition ns-solutions.hpp:247
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:664
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:659
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:691
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:671
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:677
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:684
Definition ns-solutions.hpp:146
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:291
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:296
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:301
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:272
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:306
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:280
Definition ns-solutions.hpp:131
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:229
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:221
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:250
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:240
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:245
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:258
Definition ns-solutions.hpp:102
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:127
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:160
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:136
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:145
QuadraticVelocity()
Definition ns-solutions.cpp:121
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:155
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:150
Definition ns-solutions.hpp:200
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:483
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:469
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:433
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:415
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:454
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:513
Definition ns-solutions.hpp:215
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:536
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:563
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:554
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:527
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:549
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:578
Definition ns-solutions.hpp:230
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:603
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:593
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:619
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:631
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:645
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:624
Definition ns-solutions.hpp:116
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:197
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:174
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:207
Trigonometric()
Definition ns-solutions.cpp:168
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:192
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:202
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:182