HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
Loading...
Searching...
No Matches
mhd-solutions.hpp
Go to the documentation of this file.
1#ifndef MHD_SOLUTIONS_HPP
2#define MHD_SOLUTIONS_HPP
3
4#include <Eigen/Dense>
5
6// #include "MeshBuilder2D.hpp"
7#include <mesh.hpp>
8namespace HArDCore2D
9{
10 namespace MHDSolutions
11 {
12 //------------------------------------------------------------------------------
13 // Interface for exact solutions
14
15 struct IExactSolution {
18
21 double U, double B);
22 virtual ~IExactSolution();
23
25 inline std::string name() const {
26 return m_name;
27 }
28
30 inline bool fluid_magnetic_coupling() const {
32 }
33
34
37 inline bool isStokes() const {
38 return m_is_stokes;
39 }
40
42 inline bool steady_fluid_equation() const {
44 }
45
47 inline bool steady_magnetic_equation() const {
49 }
50
52 inline double viscosity() const {
53 return m_viscosity;
54 }
55
57 inline double magnetic_diffusivity() const {
59 }
60
61 inline double U() const {
62 return m_U;
63 }
64
65 inline double B() const {
66 return m_B;
67 }
68
69 virtual Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const = 0;
70 virtual Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const = 0;
71 virtual double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const = 0;
72
73 virtual Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const = 0;
74 virtual double pressure(const Eigen::Vector2d & x, const double & t = 0) const = 0;
75 virtual Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const = 0;
76 virtual Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const = 0;
77
78 virtual Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const = 0;
79 virtual double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const = 0;
80 virtual Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const = 0;
81 virtual Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const = 0;
82
83
84 protected:
85 std::string m_name;
87 bool m_is_stokes;
90 double m_viscosity;
92 double m_U;
93 double m_B;
94 };
95
96 //------------------------------------------------------------------------------
97 // Linear velocity
98
99 struct LinearVelocity : public IExactSolution {
101
102 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
103 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
104 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
105
106 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
107 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
108 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
109 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
110
111 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
112 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
113 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
114 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
115 };
116
117 //------------------------------------------------------------------------------
118 // Linear magnetic field
119
120 struct LinearMagneticField : public IExactSolution {
122
123 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
124 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
125 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
126
127 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
128 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
129 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
130 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
131
132 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
133 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
134 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
135 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
136 };
137
138
139 //------------------------------------------------------------------------------
140 // Linear pressure
141
142 struct LinearPressure : public IExactSolution {
144
145 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
146 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
147 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
148
149 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
150 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
151 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
152 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
153
154 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
155 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
156 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
157 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
158 };
159
160 //------------------------------------------------------------------------------
161 // Linear magnetic pressure
162
163 struct LinearMagneticPressure : public IExactSolution {
165
166 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
167 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
168 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
169
170 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
171 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
172 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
173 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
174
175 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
176 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
177 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
178 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
179 };
180
181 //------------------------------------------------------------------------------
182 // Quadratic velocity
183
184 struct QuadraticVelocity : public IExactSolution {
186
187 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
188 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
189 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
190
191 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
192 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
193 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
194 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
195
196 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
197 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
198 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
199 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
200 };
201
202 //------------------------------------------------------------------------------
203 // Quadratic magnetic field
204
205 struct QuadraticMagneticField : public IExactSolution {
207
208 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
209 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
210 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
211
212 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
213 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
214 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
215 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
216
217 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
218 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
219 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
220 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
221 };
222
223
224 //------------------------------------------------------------------------------
225 // Trigonometric velocity field
226
227 struct TrigonometricVelocity : public IExactSolution {
229
230 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
231 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
232 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
233
234 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
235 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
236 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
237 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
238
239 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
240 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
241 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
242 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
243 };
244
245 //------------------------------------------------------------------------------
246 // Trigonometric magnetic field
247
248 struct TrigonometricMagnetic : public IExactSolution {
250
251 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
252 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
253 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
254
255 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
256 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
257 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
258 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
259
260 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
261 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
262 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
263 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
264 };
265
266 //------------------------------------------------------------------------------
267 // Pressure-robust Stokes on velocity
268
269 struct PressureRobustStokes : public IExactSolution {
271
272 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
273 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
274 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
275
276 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
277 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
278 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
279 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
280
281 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
282 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
283 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
284 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
285 };
286
287 //------------------------------------------------------------------------------
288 // Magnetic Pressure-robust Stokes on velocity
289
292
293 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
294 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
295 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
296
297 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
298 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
299 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
300 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
301
302 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
303 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
304 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
305 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
306 };
307
308 //------------------------------------------------------------------------------
309 // Steady Sinusoidal solution
310
311 struct SteadySinusoidal : public IExactSolution {
312 SteadySinusoidal(const double & viscosity,const double & magnetic_diffusivity);
313
314 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
315 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
316 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
317
318 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
319 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
320 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
321 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
322
323 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
324 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
325 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
326 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
327
328 private:
329 double U;
330 double B;
331 };
332
333
334
335
336 //------------------------------------------------------------------------------
337 // A viscosity-dependent solution of the Navier-Stokes problem to test
338 // pressure-robustness
339
342
343 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
344 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
345 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
346
347 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
348 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
349 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
350 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
351
352 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
353 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
354 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
355 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
356
357 };
358
359 //------------------------------------------------------------------------------
360 // Kovasznay
361
362 struct Kovasznay : public IExactSolution {
364 Kovasznay(const double & viscosity, std::ostream & output = std::cout);
365
367 static inline Mesh2D::MeshBuilder::TransformationType domain_transformation = [](const std::array<double, 2> & x) {
368 return std::array<double, 2>{2. * x[0] - 0.5, 2. * x[1]};
369 };
370
371 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
372 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
373 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
374
375 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
376 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
377 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
378 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
379
380 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
381 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
382 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
383 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
384
385 private:
386 double m_Re;
387 double m_lambda;
388 };
389
390 //------------------------------------------------------------------------------
391 // Steady Linear-Quadratic Coupled solution
392
395
396 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
397 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
398 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
399
400 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
401 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
402 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
403 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
404
405 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
406 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
407 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
408 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
409
410 };
411
412
413 //------------------------------------------------------------------------------
414 // Steady Sinusoidal Coupled solution
415
418
419 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
420 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
421 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
422
423 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
424 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
425 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
426 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
427
428 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
429 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
430 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
431 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
432
433 private:
434 double U;
435 double B;
436 };
437
438
439
440 //------------------------------------------------------------------------------
441 // A time-dependent solution of the Velocity Stokes problem
442
445
446 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
447 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
448 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
449
450 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
451 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
452 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
453 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
454
455 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
456 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
457 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
458 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
459 };
460
461 //------------------------------------------------------------------------------
462 // A time-dependent solution of the Magnetic Stokes problem
463
466
467 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
468 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
469 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
470
471 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
472 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
473 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
474 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
475
476 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
477 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
478 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
479 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
480 };
481
482
483 //------------------------------------------------------------------------------
484 // A time-dependent solution of the Navier-Stokes problem
485
488
489 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
490 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
491 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
492
493 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
494 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
495 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
496 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
497
498 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
499 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
500 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
501 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
502 };
503
504
505 struct VelocityTrigTimeDep : public IExactSolution {
507
508 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
509 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
510 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
511
512 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
513 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
514 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
515 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
516
517 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
518 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
519 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
520 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
521
522 private:
523 double m_param;
524 };
525
526
527 //------------------------------------------------------------------------------
528 // Unsteady Sinusoidal Coupled solution
529
532
533 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
534 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
535 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
536
537 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
538 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
539 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
540 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
541
542 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
543 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
544 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
545 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
546
547 private:
548 double U;
549 double m_u_param;
550 double B;
551 double m_b_param;
552 };
553
554
555
556 //------------------------------------------------------------------------------
557 // Unsteady Lid-drive Cavity
558
561 const double & U,const double & B);
562
563 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
564 Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
565 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
566
567 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
568 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
569 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
570 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
571
572 Eigen::Vector2d magnetic_field(const Eigen::Vector2d & x, const double & t = 0) const;
573 double magnetic_pressure(const Eigen::Vector2d & x, const double & t = 0) const;
574 Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d & x, const double & t = 0) const;
575 Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
576 };
577
578
579 } // namespace MHDSolutions
580
581} // namespace HArDCore2D
582#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
depending on the Matrix Market format indicated by or array(dense array storage). The data will be duplicated % as appropriate if symmetry is indicated in the header. % % Optionally
Definition mhd-solutions.hpp:9
Definition mhd-solutions.hpp:15
virtual Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
bool fluid_magnetic_coupling() const
Return true if the fluid and magnetic field are coupled in the two equations.
Definition mhd-solutions.hpp:30
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
double m_viscosity
Definition mhd-solutions.hpp:90
IExactSolution(std::string name, bool fluid_magnetic_coupling, bool is_stokes, bool steady_fluid_equation, bool steady_magnetic_equation, double viscosity, double magnetic_diffusivity)
IExactSolution(std::string name, bool fluid_magnetic_coupling, bool is_stokes, bool steady_fluid_equation, bool steady_magnetic_equation, double viscosity, double magnetic_diffusivity, double U, double B)
double B() const
Definition mhd-solutions.hpp:65
bool steady_fluid_equation() const
Return true if the fluid field is steady, false if unsteady!
Definition mhd-solutions.hpp:42
double U() const
Definition mhd-solutions.hpp:61
bool isStokes() const
Definition mhd-solutions.hpp:37
bool m_steady_fluid_equation
Definition mhd-solutions.hpp:88
double viscosity() const
Return the viscosity.
Definition mhd-solutions.hpp:52
bool m_is_stokes
Definition mhd-solutions.hpp:87
virtual Eigen::Vector2d magneticForcingTerm(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 mhd-solutions.hpp:25
virtual Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const =0
virtual double pressure(const Eigen::Vector2d &x, const double &t=0) const =0
std::string m_name
Definition mhd-solutions.hpp:85
bool m_steady_magnetic_equation
Definition mhd-solutions.hpp:89
virtual double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const =0
double m_B
Definition mhd-solutions.hpp:93
virtual Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const =0
double m_U
Definition mhd-solutions.hpp:92
double m_magnetic_diffusivity
Definition mhd-solutions.hpp:91
double magnetic_diffusivity() const
Return the magnetic diffusivity.
Definition mhd-solutions.hpp:57
bool steady_magnetic_equation() const
Return true if the magnetic field is steady, false if unsteady!
Definition mhd-solutions.hpp:47
virtual Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const =0
virtual double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
bool m_fluid_magnetic_coupling
Definition mhd-solutions.hpp:86
Definition mhd-solutions.hpp:362
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Kovasznay(const double &viscosity, std::ostream &output=std::cout)
Construct the class given the Reynolds number.
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
static Mesh2D::MeshBuilder::TransformationType domain_transformation
A function to transform the unit domain to .
Definition mhd-solutions.hpp:367
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.hpp:120
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(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
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(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
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.hpp:163
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.hpp:142
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(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
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
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.hpp:99
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(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
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
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::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
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
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
MagneticPressureRobustStokes(const double &magnetic_diffusivity)
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_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
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.hpp:269
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
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(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
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_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 magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.hpp:205
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(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
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.hpp:184
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(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
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
SteadyLinearQuadraticCoupled(const double &viscosity, const double &magnetic_diffusivity)
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(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
SteadySinusoidalCoupled(const double &viscosity, const double &magnetic_diffusivity)
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(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::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(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
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.hpp:311
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
SteadySinusoidal(const double &viscosity, const double &magnetic_diffusivity)
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
TimeDependentMagneticStokes(const double &magnetic_diffusivity)
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d magnetic_fieldGradient(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
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
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(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
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.hpp:248
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(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
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.hpp:227
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
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(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
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(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 magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
UnsteadyLidDrivenCavity(const double &viscosity, const double &magnetic_diffusivity, const double &U, const double &B)
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
UnsteadySinusoidalCoupled(const double &viscosity, const double &magnetic_diffusivity)
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.hpp:505
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
double pressure(const Eigen::Vector2d &x, const double &t=0) const
VelocityTrigTimeDep(const double &viscosity)
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::Vector2d magnetic_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
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const