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
16 IExactSolution(std::string name, bool fluid_magnetic_coupling, bool is_stokes, bool steady_fluid_equation,
18
19 IExactSolution(std::string name, bool fluid_magnetic_coupling, bool is_stokes, bool steady_fluid_equation,
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;
92 double m_U;
93 double m_B;
94 };
95
96 //------------------------------------------------------------------------------
97 // Linear velocity
98
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
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
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
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
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
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
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
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
270 PressureRobustStokes(const double & viscosity);
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
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
394 SteadyLinearQuadraticCoupled(const double & viscosity, const double & magnetic_diffusivity);
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
417 SteadySinusoidalCoupled(const double & viscosity,const double & magnetic_diffusivity);
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
487 TimeDependentNavierStokes(const double & viscosity);
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
506 VelocityTrigTimeDep(const double & viscosity);
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
531 UnsteadySinusoidalCoupled(const double & viscosity,const double & magnetic_diffusivity);
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
560 UnsteadyLidDrivenCavity(const double & viscosity,const double & magnetic_diffusivity,
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
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 ~IExactSolution()
Definition mhd-solutions.cpp:51
virtual Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const =0
double m_viscosity
Definition mhd-solutions.hpp:90
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
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1008
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1018
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1003
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:998
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:969
static Mesh2D::MeshBuilder::TransformationType domain_transformation
A function to transform the unit domain to .
Definition mhd-solutions.hpp:367
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:977
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:987
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:992
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1013
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1023
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1028
Definition mhd-solutions.hpp:120
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:218
LinearMagneticField()
Definition mhd-solutions.cpp:201
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:234
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:246
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:252
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:207
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:213
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:223
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:257
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:241
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:228
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:262
Definition mhd-solutions.hpp:163
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:313
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:292
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:297
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:287
LinearMagneticPressure()
Definition mhd-solutions.cpp:270
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:276
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:330
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:308
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:302
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:282
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:325
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:320
Definition mhd-solutions.hpp:142
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:151
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:146
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:170
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:141
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:175
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:135
LinearPressure()
Definition mhd-solutions.cpp:129
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:158
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:191
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:164
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:181
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:186
Definition mhd-solutions.hpp:99
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:88
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:105
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:121
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:78
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:65
LinearVelocity()
Definition mhd-solutions.cpp:59
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:111
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:94
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:71
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:100
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:116
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:83
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:744
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:728
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:715
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:759
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:772
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:749
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:764
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:754
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:739
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:710
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:720
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:919
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:914
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:929
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:924
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:940
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:890
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:909
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:945
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:953
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:898
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:934
Definition mhd-solutions.hpp:269
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:673
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:642
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:634
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:678
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:658
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:683
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:691
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:663
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:668
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:696
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:653
Definition mhd-solutions.hpp:205
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:474
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:445
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:459
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:427
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:437
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:469
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:422
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:454
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:464
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:432
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:417
QuadraticMagneticField()
Definition mhd-solutions.cpp:411
Definition mhd-solutions.hpp:184
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:344
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:402
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:352
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:361
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:382
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:397
QuadraticVelocity()
Definition mhd-solutions.cpp:338
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:387
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:392
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:366
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:376
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:371
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1117
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1105
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1063
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1092
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1055
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1077
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1087
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1048
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1072
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1043
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1082
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1183
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1197
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1143
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1170
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1135
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1152
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1209
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1160
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1188
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1175
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1222
Definition mhd-solutions.hpp:311
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:829
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:806
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:876
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:842
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:814
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:851
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:789
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:863
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:837
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:824
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:797
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1340
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1372
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1362
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1367
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1377
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1386
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1391
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1330
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1405
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1335
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1349
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1545
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1515
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1491
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1444
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1505
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1426
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1476
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1465
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1470
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1510
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1550
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1309
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1266
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1261
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1239
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1276
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1290
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1271
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1248
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1285
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1315
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1295
Definition mhd-solutions.hpp:248
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:571
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:561
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:579
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:600
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:595
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:566
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:590
TrigonometricMagnetic()
Definition mhd-solutions.cpp:555
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:620
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:610
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:615
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:605
Definition mhd-solutions.hpp:227
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:547
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:531
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:537
TrigonometricVelocity()
Definition mhd-solutions.cpp:482
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:516
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:506
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:511
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:542
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:488
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:521
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:496
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:526
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1831
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1825
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1815
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1843
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1847
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1790
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1855
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1851
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1821
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1839
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1835
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1674
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1756
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1714
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1724
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1731
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1770
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1742
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1707
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1695
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1664
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1685
Definition mhd-solutions.hpp:505
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1608
Eigen::Matrix2d magnetic_fieldGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1598
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1644
Eigen::Vector2d magnetic_field(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1593
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1577
Eigen::Vector2d magneticForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1639
Eigen::Vector2d magnetic_pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1620
double magnetic_pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1615
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1603
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1625
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition mhd-solutions.cpp:1567