IFEM 90A354
CompatibleOperators.h
Go to the documentation of this file.
1//==============================================================================
11//==============================================================================
12
13#ifndef COMPATIBLE_OPERATORS_H_
14#define COMPATIBLE_OPERATORS_H_
15
16class FiniteElement;
17class Tensor;
18class Vec3;
19
20#include "MatVec.h"
21#include "EqualOrderOperators.h"
22
23#include <array>
24
30{
31public:
33 class Weak {
34 public:
42 static void Advection(std::vector<Matrix>& EM, const FiniteElement& fe,
43 const Vec3& AC,
44 const std::array<std::array<int,3>,3>& idx,
45 double scale = 1.0,
46 WeakOperators::ConvectionForm cnvForm = WeakOperators::CONVECTIVE);
47
56 static void Convection(std::vector<Matrix>& EM, const FiniteElement& fe,
57 const Vec3& U, const Tensor& dUdX,
58 const std::array<std::array<int,3>,3>& idx,
59 double scale,
60 WeakOperators::ConvectionForm form = WeakOperators::CONVECTIVE);
61
67 static void Gradient(std::vector<Matrix>& EM,
68 const FiniteElement& fe,
69 const std::array<int,3>& idx,
70 double scale = 1.0);
71
76 static void ItgConstraint(std::vector<Matrix>& EM,
77 const FiniteElement& fe,
78 const std::array<int,3>& idx);
79
87 static void Laplacian(std::vector<Matrix>& EM, const FiniteElement& fe,
88 const std::array<std::array<int,3>,3>& idx,
89 double scale = 1.0, bool stress = false);
90
96 static void Mass(std::vector<Matrix>& EM,
97 const FiniteElement& fe,
98 const std::array<std::array<int,3>,3>& idx,
99 double scale = 1.0);
100
106 static void Source(Vectors& EV, const FiniteElement& fe,
107 const std::array<int,3>& idx, double scale = 1.0);
108
115 static void Source(Vectors& EV, const FiniteElement& fe,
116 const Vec3& f, const std::array<int,3>& idx,
117 double scale = 1.0);
118 };
119
122 {
123 public:
133 static void Convection(Vectors& EV, const FiniteElement& fe,
134 const Vec3& U, const Tensor& dUdX,
135 const Vec3& UC,
136 const std::array<int,3>& idx,
137 double scale,
138 WeakOperators::ConvectionForm form = WeakOperators::CONVECTIVE);
139
145 static void Gradient(Vectors& EV, const FiniteElement& fe,
146 const std::array<int,3>& idx, double scale = 1.0);
147
155 static void Laplacian(Vectors& EV, const FiniteElement& fe,
156 const Tensor& dUdX,
157 const std::array<int,3>& idx,
158 double scale = 1.0,
159 bool stress = false);
160 };
161};
162
163#endif
Various equal-ordered discrete operators.
ConvectionForm
Enum for the form of the convection term.
Definition EqualOrderOperators.h:27
Global algebraic operations on index 1-based matrices and vectors.
std::vector< Vector > Vectors
An array of real-valued vectors with algebraic operations.
Definition MatVec.h:37
Common weak residual operators using div-compatible discretizations.
Definition CompatibleOperators.h:122
static void Gradient(Vectors &EV, const FiniteElement &fe, const std::array< int, 3 > &idx, double scale=1.0)
Compute a gradient term.
Definition CompatibleOperators.C:190
static void Laplacian(Vectors &EV, const FiniteElement &fe, const Tensor &dUdX, const std::array< int, 3 > &idx, double scale=1.0, bool stress=false)
Compute a laplacian term in a residual vector.
Definition CompatibleOperators.C:199
static void Convection(Vectors &EV, const FiniteElement &fe, const Vec3 &U, const Tensor &dUdX, const Vec3 &UC, const std::array< int, 3 > &idx, double scale, WeakOperators::ConvectionForm form=WeakOperators::CONVECTIVE)
Compute a convection term in a residual vector.
Definition CompatibleOperators.C:152
Common weak operators using div-compatible discretizations.
Definition CompatibleOperators.h:33
static void Mass(std::vector< Matrix > &EM, const FiniteElement &fe, const std::array< std::array< int, 3 >, 3 > &idx, double scale=1.0)
Compute a mass term.
Definition CompatibleOperators.C:122
static void Source(Vectors &EV, const FiniteElement &fe, const std::array< int, 3 > &idx, double scale=1.0)
Compute a scalar source term.
Definition CompatibleOperators.C:142
static void ItgConstraint(std::vector< Matrix > &EM, const FiniteElement &fe, const std::array< int, 3 > &idx)
Compute an integration constraint.
Definition CompatibleOperators.C:92
static void Laplacian(std::vector< Matrix > &EM, const FiniteElement &fe, const std::array< std::array< int, 3 >, 3 > &idx, double scale=1.0, bool stress=false)
Compute a laplacian.
Definition CompatibleOperators.C:102
static void Convection(std::vector< Matrix > &EM, const FiniteElement &fe, const Vec3 &U, const Tensor &dUdX, const std::array< std::array< int, 3 >, 3 > &idx, double scale, WeakOperators::ConvectionForm form=WeakOperators::CONVECTIVE)
Compute a (nonlinear) convection term.
Definition CompatibleOperators.C:44
static void Advection(std::vector< Matrix > &EM, const FiniteElement &fe, const Vec3 &AC, const std::array< std::array< int, 3 >, 3 > &idx, double scale=1.0, WeakOperators::ConvectionForm cnvForm=WeakOperators::CONVECTIVE)
Compute an advection term.
Definition CompatibleOperators.C:19
static void Gradient(std::vector< Matrix > &EM, const FiniteElement &fe, const std::array< int, 3 > &idx, double scale=1.0)
Compute a gradient term.
Definition CompatibleOperators.C:81
Common operators using div-compatible discretizations.
Definition CompatibleOperators.h:30
Class representing a finite element.
Definition FiniteElement.h:29
Simple class for representing a non-symmetric second-order tensor.
Definition Tensor.h:28
Simple class for representing a point in 3D space.
Definition Vec3.h:27