HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
Loading...
Searching...
No Matches
ns-solutions.hpp
Go to the documentation of this file.
1#ifndef NS_SOLUTIONS_HPP
2#define NS_SOLUTIONS_HPP
3
4#include <Eigen/Dense>
5
6// #include "MeshBuilder2D.hpp"
7#include <mesh.hpp>
8namespace HArDCore2D
9{
10 namespace NavierStokesSolutions
11 {
12 //------------------------------------------------------------------------------
13 // Interface for exact solutions
14
15 struct IExactSolution {
16 IExactSolution(std::string name, bool fluid_magnetic_coupling, bool is_stokes, bool steady_fluid_equation,
18 virtual ~IExactSolution();
19
21 inline std::string name() const {
22 return m_name;
23 }
24
26 inline bool fluid_magnetic_coupling() const {
28 }
29
30
33 inline bool isStokes() const {
34 return m_is_stokes;
35 }
36
38 inline bool steady_fluid_equation() const {
40 }
41
43 inline bool steady_magnetic_equation() const {
45 }
46
48 inline double viscosity() const {
49 return m_viscosity;
50 }
51
53 inline double magnetic_diffusivity() const {
55 }
56
57 virtual Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const = 0;
58 virtual Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const = 0;
59 virtual double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const = 0;
60
61 virtual Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const = 0;
62 virtual double pressure(const Eigen::Vector2d & x, const double & t = 0) const = 0;
63 virtual Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const = 0;
64 virtual Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const = 0;
65
66 virtual Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const = 0;
67 virtual double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const = 0;
68 virtual Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const = 0;
69 virtual Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const = 0;
70
71
72 protected:
73 std::string m_name;
75 bool m_is_stokes;
78 double m_viscosity;
80 };
81
82 //------------------------------------------------------------------------------
83 // Linear velocity
84
85 struct LinearVelocity : public IExactSolution {
87
88 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
89 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
90 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
91
92 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
93 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
94 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
95 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
96
97 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
98 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
99 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
100 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
101 };
102
103 //------------------------------------------------------------------------------
104 // Linear magnetic field
105
108
109 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
110 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
111 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
112
113 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
114 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
115 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
116 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
117
118 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
119 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
120 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
121 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
122 };
123
124
125 //------------------------------------------------------------------------------
126 // Linear pressure
127
128 struct LinearPressure : public IExactSolution {
130
131 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
132 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
133 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
134
135 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
136 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
137 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
138 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
139
140 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
141 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
142 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
143 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
144 };
145
146 //------------------------------------------------------------------------------
147 // Linear magnetic pressure
148
151
152 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
153 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
154 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
155
156 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
157 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
158 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
159 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
160
161 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
162 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
163 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
164 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
165 };
166
167 //------------------------------------------------------------------------------
168 // Quadratic velocity
169
170 struct QuadraticVelocity : public IExactSolution {
172
173 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
174 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
175 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
176
177 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
178 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
179 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
180 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
181
182 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
183 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
184 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
185 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
186 };
187
188 //------------------------------------------------------------------------------
189 // Quadratic magnetic field
190
193
194 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
195 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
196 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
197
198 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
199 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
200 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
201 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
202
203 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
204 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
205 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
206 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
207 };
208
209
210 //------------------------------------------------------------------------------
211 // Trigonometric velocity field
212
215
216 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
217 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
218 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
219
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;
224
225 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
226 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
227 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
228 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
229 };
230
231 //------------------------------------------------------------------------------
232 // Trigonometric magnetic field
233
236
237 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
238 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
239 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
240
241 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
242 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
243 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
244 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
245
246 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
247 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
248 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
249 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
250 };
251
252 //------------------------------------------------------------------------------
253 // Pressure-robust Stokes on velocity
254
255 struct PressureRobustStokes : public IExactSolution {
257
258 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
259 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
260 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
261
262 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
263 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
264 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
265 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
266
267 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
268 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
269 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
270 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
271 };
272
273 //------------------------------------------------------------------------------
274 // Magnetic Pressure-robust Stokes on velocity
275
278
279 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
280 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
281 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
282
283 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
284 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
285 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
286 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
287
288 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
289 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
290 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
291 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
292 };
293
294 //------------------------------------------------------------------------------
295 // Steady Sinusoidal solution
296
298 SteadySinusoidal(const double & viscosity,const double & magnetic_diffusivity);
299
300 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
301 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
302 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
303
304 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
305 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
306 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
307 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
308
309 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
310 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
311 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
312 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
313
314 private:
315 double U;
316 double B;
317 };
318
319
320
321
322 //------------------------------------------------------------------------------
323 // A viscosity-dependent solution of the Navier-Stokes problem to test
324 // pressure-robustness
325
328
329 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
330 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
331 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
332
333 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
334 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
335 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
336 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
337
338 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
339 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
340 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
341 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
342
343 };
344
345 //------------------------------------------------------------------------------
346 // Kovasznay
347
348 struct Kovasznay : public IExactSolution {
350 Kovasznay(const double & viscosity, std::ostream & output = std::cout);
351
353 static inline Mesh2D::MeshBuilder::TransformationType domain_transformation = [](const std::array<double, 2> & x) {
354 return std::array<double, 2>{2. * x[0] - 0.5, 2. * x[1]};
355 };
356
357 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
358 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
359 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
360
361 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
362 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
363 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
364 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
365
366 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
367 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
368 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
369 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
370
371 private:
372 double m_Re;
373 double m_lambda;
374 };
375
376 //------------------------------------------------------------------------------
377 // Steady Linear-Quadratic Coupled solution
378
380 SteadyLinearQuadraticCoupled(const double & viscosity, const double & magnetic_diffusivity);
381
382 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
383 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
384 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
385
386 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
387 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
388 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
389 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
390
391 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
392 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
393 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
394 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
395
396 };
397
398
399 //------------------------------------------------------------------------------
400 // Steady Sinusoidal Coupled solution
401
403 SteadySinusoidalCoupled(const double & viscosity,const double & magnetic_diffusivity);
404
405 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
406 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
407 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
408
409 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
410 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
411 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
412 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
413
414 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
415 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
416 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
417 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
418
419 private:
420 double U;
421 double B;
422 };
423
424
425
426 //------------------------------------------------------------------------------
427 // A time-dependent solution of the Velocity Stokes problem
428
431
432 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
433 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
434 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
435
436 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
437 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
438 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
439 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
440
441 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
442 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
443 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
444 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
445 };
446
447 //------------------------------------------------------------------------------
448 // A time-dependent solution of the Magnetic Stokes problem
449
452
453 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
454 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
455 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
456
457 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
458 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
459 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
460 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
461
462 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
463 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
464 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
465 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
466 };
467
468
469 //------------------------------------------------------------------------------
470 // A time-dependent solution of the Navier-Stokes problem
471
474
475 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
476 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
477 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
478
479 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
480 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
481 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
482 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
483
484 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
485 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
486 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
487 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
488 };
489
490
492 VelocityTrigTimeDep(const double & viscosity);
493
494 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
495 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
496 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
497
498 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
499 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
500 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
501 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
502
503 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
504 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
505 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
506 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
507
508 private:
509 double m_param;
510 };
511
512
513 //------------------------------------------------------------------------------
514 // Unsteady Sinusoidal Coupled solution
515
517 UnsteadySinusoidalCoupled(const double & viscosity,const double & magnetic_diffusivity);
518
519 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
520 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
521 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
522
523 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
524 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
525 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
526 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
527
528 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
529 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
530 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
531 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
532
533 private:
534 double U;
535 double m_u_param;
536 double B;
537 double m_b_param;
538 };
539
540
541 } // namespace NavierStokesSolutions
542
543} // namespace HArDCore2D
544#endif
if t
Definition extract_phi_min_max.m:22
Create grid points x
Definition generate_cartesian_mesh.m:22
std::function< std::array< double, 2 >(const std::array< double, 2 > &)> TransformationType
Definition mesh_builder.hpp:174
Definition bgg-klplate.hpp:30
virtual Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const =0
double viscosity() const
Return the viscosity.
Definition ns-solutions.hpp:33
bool isStokes() const
Definition ns-solutions.hpp:33
bool m_is_stokes
Definition ns-solutions.hpp:64
double magnetic_diffusivity() const
Return the magnetic diffusivity.
Definition ns-solutions.hpp:53
double m_magnetic_diffusivity
Definition ns-solutions.hpp:79
virtual double pressure(const Eigen::Vector2d &x, const double &t=0) const =0
bool m_steady_magnetic_equation
Definition ns-solutions.hpp:77
std::string name() const
Return the solution name.
Definition ns-solutions.hpp:22
bool fluid_magnetic_coupling() const
Return true if the fluid and magnetic field are oupled in the two equations.
Definition ns-solutions.hpp:26
bool steady_magnetic_equation() const
Return true if the magnetic field is steady, false if unsteady!
Definition ns-solutions.hpp:43
bool steady_fluid_equation() const
Return true if the fluid field is steady, false if unsteady!
Definition ns-solutions.hpp:38
virtual Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
bool m_fluid_magnetic_coupling
Definition ns-solutions.hpp:74
virtual double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
bool m_steady_fluid_equation
Definition ns-solutions.hpp:76
double m_viscosity
Definition ns-solutions.hpp:65
virtual double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const =0
virtual Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
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::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const =0
virtual Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const =0
IExactSolution(std::string name, bool is_stokes, double viscosity, bool isNonNewtonian=false, double flow_index=2.0, double degen_param=0.0)
Definition ns-solutions.cpp:17
virtual Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const =0
Definition ns-solutions.hpp:175
double pressure(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:989
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:968
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
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:973
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:994
static Mesh2D::MeshBuilder::TransformationType domain_transformation
A function to transform the unit domain to .
Definition ns-solutions.hpp:180
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1004
Kovasznay(const double &viscosity, std::ostream &output=std::cout)
Construct the class given the Reynolds number.
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:199
LinearMagneticField()
Definition ns-solutions.cpp:182
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:215
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:227
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:233
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:188
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:194
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:204
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:238
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:222
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:209
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:243
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:294
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:273
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:278
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:268
LinearMagneticPressure()
Definition ns-solutions.cpp:251
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:257
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:311
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:289
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:283
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:263
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:306
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:301
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:151
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:156
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:139
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 magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:145
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:167
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:69
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:86
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:75
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:81
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:97
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:725
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:709
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:696
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:740
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:753
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:730
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:745
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:735
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:720
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:691
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:701
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:895
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:910
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:890
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:926
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:915
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:654
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:659
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:639
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:672
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:634
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:455
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:426
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:440
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:408
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:418
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:450
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:403
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:435
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:445
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:413
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:398
QuadraticMagneticField()
Definition ns-solutions.cpp:392
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 magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:363
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:378
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:368
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:357
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:352
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1098
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1086
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1044
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1073
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1036
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1058
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1068
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1029
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1053
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1024
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1063
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1164
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1178
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1124
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1151
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1116
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1133
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1190
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1141
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1169
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1156
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1203
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:810
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:787
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:857
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:823
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:795
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:832
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:770
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:844
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:818
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:805
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:778
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1321
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1353
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1343
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1348
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1358
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1367
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1372
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1311
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1386
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1316
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1330
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1526
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1486
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1446
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1451
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1491
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1290
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1247
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1242
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1220
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1257
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1271
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1252
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1229
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1266
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1296
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1276
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:552
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:542
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:560
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:581
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:576
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:547
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:571
TrigonometricMagnetic()
Definition ns-solutions.cpp:536
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:601
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:591
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:596
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:586
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:528
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:512
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:518
TrigonometricVelocity()
Definition ns-solutions.cpp:463
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:497
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:487
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:492
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:523
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:469
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:502
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:477
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:507
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1655
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1737
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1695
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1705
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1712
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1751
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1723
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1688
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1676
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1645
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1666
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1589
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1579
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1625
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1574
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1558
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1620
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1601
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1596
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1584
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1606
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition ns-solutions.cpp:1548