Alamo
Q4.H
Go to the documentation of this file.
1 #ifndef FINITEELEMENT_Q4_
2 #define FINITEELEMENT_Q4_
3 
4 #include "Set/Set.H"
5 
6 namespace FiniteElement
7 {
8 class Q4
9 {
10 public:
11  Q4() {};
12  Q4(amrex::Real _dx, amrex::Real _dy): dx(_dx), dy(_dy) {};
13  void Define(Set::Scalar a_dx, Set::Scalar a_dy)
14  {
15  dx = a_dx; dy = a_dy;
16  }
17 
18  AMREX_FORCE_INLINE
19  Set::Scalar Phi(int m, const Set::Vector x) const
20  {
21  if (m == 0) return (dx - x(0)) * (dy - x(1)) / dx / dy;
22  if (m == 1) return (x(0) - 0.0) * (dy - x(1)) / dx / dy;
23  if (m == 2) return (dx - x(0)) * (x(1) - 0.0) / dx / dy;
24  if (m == 3) return (x(0) - 0.0) * (x(1) - 0.0) / dx / dy;
25  }
26 
27  AMREX_FORCE_INLINE
28  Set::Vector DPhi(int m, const Set::Vector x) const
29  {
30  if (m == 0) return { AMREX_D_DECL(-(dy - x(1)) / dx / dy,-(dx - x(0)) / dx / dy,0) };
31  if (m == 1) return { AMREX_D_DECL((dy - x(1)) / dx / dy,-x(0) / dx / dy,0) };
32  if (m == 2) return { AMREX_D_DECL(-x(1) / dx / dy,(dx - x(0)) / dx / dy,0) };
33  if (m == 3) return { AMREX_D_DECL(x(1) / dx / dy, x(0) / dx / dy,0) };
34  }
35 
36  Set::Vector Qpt(const int m) const { return qpts[m]; }
37  Set::Scalar Qwt(const int m) const { return qwts[m]; }
38 
39 private:
41  const std::array<Set::Vector, 4> qpts =
42  {
43  Set::Vector(0.5 - 0.5 / sqrt(3.0),0.5 - 0.5 / sqrt(3.0)),
44  Set::Vector(0.5 - 0.5 / sqrt(3.0),0.5 + 0.5 / sqrt(3.0)),
45  Set::Vector(0.5 + 0.5 / sqrt(3.0),0.5 - 0.5 / sqrt(3.0)),
46  Set::Vector(0.5 + 0.5 / sqrt(3.0),0.5 + 0.5 / sqrt(3.0))
47  };
48  const std::array<Set::Scalar, 4> qwts = { 1.0, 1.0, 1.0, 1.0 };
49 
50 };
51 }
52 #endif
FiniteElement::Q4::dx
Set::Scalar dx
Definition: Q4.H:40
FiniteElement::Q4::Phi
AMREX_FORCE_INLINE Set::Scalar Phi(int m, const Set::Vector x) const
Definition: Q4.H:19
BC::AMREX_D_DECL
@ AMREX_D_DECL
Definition: BC.H:34
FiniteElement::Q4::DPhi
AMREX_FORCE_INLINE Set::Vector DPhi(int m, const Set::Vector x) const
Definition: Q4.H:28
Set::Vector
Eigen::Matrix< amrex::Real, AMREX_SPACEDIM, 1 > Vector
Definition: Base.H:20
Set::Scalar
amrex::Real Scalar
Definition: Base.H:19
FiniteElement::Q4::Q4
Q4()
Definition: Q4.H:11
FiniteElement::Q4::Q4
Q4(amrex::Real _dx, amrex::Real _dy)
Definition: Q4.H:12
FiniteElement::Q4::dy
Set::Scalar dy
Definition: Q4.H:40
FiniteElement::Q4::Qpt
Set::Vector Qpt(const int m) const
Definition: Q4.H:36
FiniteElement
Definition: Q4.H:6
FiniteElement::Q4::qwts
const std::array< Set::Scalar, 4 > qwts
Definition: Q4.H:48
FiniteElement::Q4
Definition: Q4.H:8
Set.H
FiniteElement::Q4::qpts
const std::array< Set::Vector, 4 > qpts
Definition: Q4.H:41
FiniteElement::Q4::Qwt
Set::Scalar Qwt(const int m) const
Definition: Q4.H:37
FiniteElement::Q4::Define
void Define(Set::Scalar a_dx, Set::Scalar a_dy)
Definition: Q4.H:13