HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
Loading...
Searching...
No Matches
brinkman-solutions.hpp
Go to the documentation of this file.
1#ifndef BRINKMAN_SOLUTIONS_HPP
2#define BRINKMAN_SOLUTIONS_HPP
3
4#include <Eigen/Dense>
5
6#include "MeshBuilder2D.hpp"
7
8#include "ns-solutions.hpp"
9
10namespace HArDCore2D
11{
12 namespace BrinkmanSolutions
13 {
14 //------------------------------------------------------------------------------
15 // Interface for exact solutions
16
18 IBrinkmanExactSolution(std::string name, double viscosity, double permeability);
20
22 inline std::string name() const {
23 return m_name;
24 }
25
27 inline double viscosity() const {
28 return m_viscosity;
29 }
30
32 inline double permeability() const {
33 return m_permeability;
34 }
35
36 virtual Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const = 0;
37 virtual double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const = 0;
38 virtual Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const = 0;
39 virtual double pressure(const Eigen::Vector2d & x, const double & t = 0) const = 0;
40 virtual Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const = 0;
41 virtual Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const = 0;
42
43 protected:
45 };
46
47 //------------------------------------------------------------------------------
48 // Linear velocity
49
52
53 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
54 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
55 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
56 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
57 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
58 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
59 };
60
61 //------------------------------------------------------------------------------
62 // Linear pressure
63
66
67 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
68 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
69 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
70 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
71 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
72 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
73 };
74
75 //------------------------------------------------------------------------------
76 // Quadratic velocity
77
80
81 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
82 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
83 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
84 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
85 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
86 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
87 };
88
89 //------------------------------------------------------------------------------
90 // Trigonometric
91
93 Trigonometric(double viscosity = 1., double permeability = 1.);
94
95 Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
96 double compressibilityForcingTerm(const Eigen::Vector2d & x, const double & t = 0) const;
97 Eigen::Vector2d velocity(const Eigen::Vector2d & x, const double & t = 0) const;
98 double pressure(const Eigen::Vector2d & x, const double & t = 0) const;
99 Eigen::Matrix2d velocityGradient(const Eigen::Vector2d & x, const double & t = 0) const;
100 Eigen::Vector2d pressureGradient(const Eigen::Vector2d & x, const double & t = 0) const;
101 };
102
103 } // namespace BrinkmanSolutions
104
105} // namespace HArDCore2D
106#endif
Definition ddr-klplate.hpp:27
Definition brinkman-solutions.hpp:17
virtual double pressure(const Eigen::Vector2d &x, const double &t=0) const =0
double permeability() const
Return the permeability.
Definition brinkman-solutions.hpp:32
virtual ~IBrinkmanExactSolution()
Definition brinkman-solutions.cpp:24
virtual Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const =0
virtual Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
virtual Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const =0
virtual Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const =0
virtual double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const =0
double m_permeability
Definition brinkman-solutions.hpp:44
std::string name() const
Return the solution name.
Definition brinkman-solutions.hpp:22
double viscosity() const
Return the viscosity.
Definition brinkman-solutions.hpp:27
Definition brinkman-solutions.hpp:64
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:96
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:91
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:86
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:80
LinearPressure()
Definition brinkman-solutions.cpp:74
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:108
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:103
Definition brinkman-solutions.hpp:50
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:66
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:51
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:38
LinearVelocity()
Definition brinkman-solutions.cpp:32
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:61
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:44
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:56
Definition brinkman-solutions.hpp:78
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:122
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:155
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:131
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:140
QuadraticVelocity()
Definition brinkman-solutions.cpp:116
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:150
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:145
Definition brinkman-solutions.hpp:92
Eigen::Vector2d pressureGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:192
Eigen::Vector2d velocity(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:169
double compressibilityForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:208
double pressure(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:187
Eigen::Vector2d momentumForcingTerm(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:200
Eigen::Matrix2d velocityGradient(const Eigen::Vector2d &x, const double &t=0) const
Definition brinkman-solutions.cpp:177
double m_viscosity
Definition ns-solutions.hpp:65
std::string m_name
Definition ns-solutions.hpp:63