IFEM 90A354
EqualOrderOperators.h
Go to the documentation of this file.
1//==============================================================================
11//==============================================================================
12
13#ifndef EQUAL_ORDER_OPERATORS_H
14#define EQUAL_ORDER_OPERATORS_H
15
16#include "MatVec.h"
17
18class FiniteElement;
19class Tensor;
20class Vec3;
21
22
23namespace WeakOperators
24{
32}
33
34
39{
40public:
42 class Weak {
43 public:
51 static void Advection(Matrix& EM, const FiniteElement& fe,
52 const Vec3& AC, double scale=1.0,
53 WeakOperators::ConvectionForm form = WeakOperators::CONVECTIVE,
54 int basis=1);
55
64 static void Convection(Matrix& EM, const FiniteElement& fe,
65 const Vec3& U, const Tensor& dUdX, double scale,
66 WeakOperators::ConvectionForm form=WeakOperators::CONVECTIVE,
67 int basis=1);
68
75 static void Divergence(Matrix& EM, const FiniteElement& fe,
76 double scale=1.0, int basis=1, int tbasis=1);
77
84 static void Divergence(Vector& EV, const FiniteElement& fe,
85 const Vec3& D, double scale=1.0, int basis=1);
86
93 static void Gradient(Matrix& EM, const FiniteElement& fe,
94 double scale=1.0, int basis=1, int tbasis=1);
95
102 static void Laplacian(Matrix& EM, const FiniteElement& fe,
103 double scale=1.0, bool stress=false, int basis=1);
104
110 static void Stress(Matrix& EM, const FiniteElement& fe,
111 double scale=1.0, int basis=1);
112
119 static void LaplacianCoeff(Matrix& EM, const Matrix& K, const FiniteElement& fe,
120 double scale=1.0, int basis=1);
121
128 static void LaplacianCoeff(Matrix& EM, const Vec3& K, const FiniteElement& fe,
129 double scale=1.0, int basis=1);
130
136 static void ItgConstraint(Matrix& EM, const FiniteElement& fe,
137 double scale = 1.0, int basis = 1);
138
144 static void Mass(Matrix& EM, const FiniteElement& fe,
145 double scale=1.0, int basis=1);
146
153 static void Source(Vector& EV, const FiniteElement& fe,
154 double scale=1.0, int cmp=1, int basis=1);
155
162 static void Source(Vector& EV, const FiniteElement& fe,
163 const Vec3& f, double scale=1.0, int basis=1);
164 };
165
167 class Residual {
168 public:
176 static void Advection(Vector& EV, const FiniteElement& fe,
177 const Vec3& AC, const Tensor& g,
178 double scale = 1.0, int basis=1);
179
189 static void Convection(Vector& EV, const FiniteElement& fe,
190 const Vec3& U, const Tensor& dUdX, const Vec3& UC,
191 double scale,
192 WeakOperators::ConvectionForm form=WeakOperators::CONVECTIVE,
193 int basis=1);
194
201 static void Divergence(Vector& EV, const FiniteElement& fe,
202 const Tensor& dUdX, double scale=1.0,
203 size_t basis=1);
204
210 static void Gradient(Vector& EV, const FiniteElement& fe,
211 double scale=1.0, int basis=1);
212
219 static void Laplacian(Vector& EV, const FiniteElement& fe,
220 const Vec3& dUdX, double scale = 1.0,
221 int basis = 1);
222
230 static void Laplacian(Vector& EV, const FiniteElement& fe,
231 const Tensor& dUdX, double scale = 1.0,
232 bool stress = false, int basis = 1);
233 };
234};
235
236#endif
static SystemMatrix * K
Pointer to coefficient matrix A.
Definition EigSolver.C:91
ConvectionForm
Enum for the form of the convection term.
Definition EqualOrderOperators.h:27
@ CONSERVATIVE
-u_i u_j v_i,j
Definition EqualOrderOperators.h:29
@ SKEWSYMMETRIC
(u_i u_j,i v_j - u_i u_j v_i,j)/2
Definition EqualOrderOperators.h:30
@ CONVECTIVE
u_i u_j,i v_j
Definition EqualOrderOperators.h:28
Global algebraic operations on index 1-based matrices and vectors.
Common weak residual operators using equal-ordered discretizations.
Definition EqualOrderOperators.h:167
static void Laplacian(Vector &EV, const FiniteElement &fe, const Vec3 &dUdX, double scale=1.0, int basis=1)
Compute a laplacian term in a residual vector.
Definition EqualOrderOperators.C:336
static void Advection(Vector &EV, const FiniteElement &fe, const Vec3 &AC, const Tensor &g, double scale=1.0, int basis=1)
Compute an advection term.
Definition EqualOrderOperators.C:268
static void Convection(Vector &EV, const FiniteElement &fe, const Vec3 &U, const Tensor &dUdX, const Vec3 &UC, double scale, WeakOperators::ConvectionForm form=WeakOperators::CONVECTIVE, int basis=1)
Compute a convection term in a residual vector.
Definition EqualOrderOperators.C:280
static void Gradient(Vector &EV, const FiniteElement &fe, double scale=1.0, int basis=1)
Compute a gradient term.
Definition EqualOrderOperators.C:325
static void Divergence(Vector &EV, const FiniteElement &fe, const Tensor &dUdX, double scale=1.0, size_t basis=1)
Compute a divergence term in a residual vector.
Definition EqualOrderOperators.C:316
Common weak operators using equal-ordered discretizations.
Definition EqualOrderOperators.h:42
static void ItgConstraint(Matrix &EM, const FiniteElement &fe, double scale=1.0, int basis=1)
Compute an integration constraint.
Definition EqualOrderOperators.C:230
static void Advection(Matrix &EM, const FiniteElement &fe, const Vec3 &AC, double scale=1.0, WeakOperators::ConvectionForm form=WeakOperators::CONVECTIVE, int basis=1)
Compute an advection term.
Definition EqualOrderOperators.C:54
static void Convection(Matrix &EM, const FiniteElement &fe, const Vec3 &U, const Tensor &dUdX, double scale, WeakOperators::ConvectionForm form=WeakOperators::CONVECTIVE, int basis=1)
Compute a (nonlinear) convection term.
Definition EqualOrderOperators.C:86
static void LaplacianCoeff(Matrix &EM, const Matrix &K, const FiniteElement &fe, double scale=1.0, int basis=1)
Compute a heterogeneous coefficient laplacian.
Definition EqualOrderOperators.C:194
static void Stress(Matrix &EM, const FiniteElement &fe, double scale=1.0, int basis=1)
Compute a stress operator.
Definition EqualOrderOperators.C:177
static void Divergence(Matrix &EM, const FiniteElement &fe, double scale=1.0, int basis=1, int tbasis=1)
Compute a divergence term.
Definition EqualOrderOperators.C:134
static void Laplacian(Matrix &EM, const FiniteElement &fe, double scale=1.0, bool stress=false, int basis=1)
Compute a laplacian.
Definition EqualOrderOperators.C:158
static void Source(Vector &EV, const FiniteElement &fe, double scale=1.0, int cmp=1, int basis=1)
Compute a source term.
Definition EqualOrderOperators.C:243
static void Gradient(Matrix &EM, const FiniteElement &fe, double scale=1.0, int basis=1, int tbasis=1)
Compute a gradient term for a (potentially mixed) vector/scalar field.
Definition EqualOrderOperators.C:141
static void Mass(Matrix &EM, const FiniteElement &fe, double scale=1.0, int basis=1)
Compute a mass term.
Definition EqualOrderOperators.C:214
Common discrete operators using equal-ordered discretizations.
Definition EqualOrderOperators.h:39
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
A vector class with some added algebraic operations.
Definition matrix.h:64