gmsh-TingyuanDoc  0.1
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
terms.h
Go to the documentation of this file.
1 // Gmsh - Copyright (C) 1997-2022 C. Geuzaine, J.-F. Remacle
2 //
3 // See the LICENSE.txt file in the Gmsh root directory for license information.
4 // Please report all issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
5 //
6 // Contributor(s):
7 // Eric Bechet
8 //
9 
10 #ifndef TERMS_H
11 #define TERMS_H
12 
13 #include "SVector3.h"
14 #include "STensor3.h"
15 #include "STensor43.h"
16 #include "Numeric.h"
17 #include "functionSpace.h"
18 #include "groupOfElements.h"
19 #include "materialLaw.h"
20 #include <vector>
21 #include <iterator>
22 
23 template <class T2> class ScalarTermBase;
24 
25 template <class T2> class LinearTermBase;
26 template <class T2> class PlusTerm;
27 
28 class BilinearTermBase;
29 
30 inline double dot(const double &a, const double &b) { return a * b; }
31 
32 inline int delta(int i, int j)
33 {
34  if(i == j)
35  return 1;
36  else
37  return 0;
38 }
39 
40 inline void setDirection(double &a, const double &b) { a = b; }
41 inline void setDirection(SVector3 &a, const SVector3 &b)
42 {
43  for(int i = 0; i < 3; i++) a(i) = b(i);
44 }
45 
46 template <class T2 = double> class ScalarTermBase {
47 public:
48  virtual ~ScalarTermBase() {}
49  virtual void get(MElement *ele, int npts, IntPt *GP, T2 &val) const = 0;
50  virtual void get(MElement *ele, int npts, IntPt *GP,
51  std::vector<T2> &vval) const = 0;
52  virtual ScalarTermBase<T2> *clone() const = 0;
53 };
54 
55 template <class T2 = double> class ScalarTerm : public ScalarTermBase<T2> {
56 public:
57  virtual ~ScalarTerm() {}
58 };
59 
60 template <class T2 = double> class ScalarTermConstant : public ScalarTerm<T2> {
61 protected:
62  T2 cst;
63 
64 public:
65  ScalarTermConstant(T2 val_ = T2()) : cst(val_) {}
66  virtual ~ScalarTermConstant() {}
67  virtual void get(MElement *ele, int npts, IntPt *GP, T2 &val) const;
68  virtual void get(MElement *ele, int npts, IntPt *GP,
69  std::vector<T2> &vval) const;
70  virtual void get(MVertex *ver, T2 &val) const;
71  virtual ScalarTermBase<T2> *clone() const
72  {
73  return new ScalarTermConstant<T2>(cst);
74  }
75 };
76 
77 class BilinearTermToScalarTerm : public ScalarTerm<double> {
78 protected:
80 
81 public:
84  virtual void get(MElement *ele, int npts, IntPt *GP, double &val) const;
85  virtual void get(MElement *ele, int npts, IntPt *GP,
86  std::vector<double> &vval) const {};
87  virtual ScalarTermBase<double> *clone() const
88  {
90  }
91 };
92 
94 public:
95  virtual ~BilinearTermBase() {}
96  virtual void get(MElement *ele, int npts, IntPt *GP,
97  fullMatrix<double> &m) const;
98  virtual void get(MElement *ele, int npts, IntPt *GP,
99  std::vector<fullMatrix<double> > &mv) const = 0;
100  virtual BilinearTermBase *clone() const = 0;
101 };
102 
103 template <class T2> class BilinearTermContract : public BilinearTermBase {
104 protected:
107 
108 public:
110  const LinearTermBase<T2> &b_)
111  : a(a_.clone()), b(b_.clone())
112  {
113  }
115  {
116  delete a;
117  delete b;
118  }
119  virtual void get(MElement *ele, int npts, IntPt *GP,
120  fullMatrix<double> &m) const;
121  virtual void get(MElement *ele, int npts, IntPt *GP,
122  std::vector<fullMatrix<double> > &mv) const {};
123  virtual BilinearTermBase *clone() const
124  {
125  return new BilinearTermContract<T2>(*a, *b);
126  }
127 };
128 
129 template <class T2>
131 public:
132 protected:
134 
135 public:
137  const LinearTermBase<T2> &a_,
139  const LinearTermBase<T2> &b_)
140  : BilinearTermContract<T2>(a_, b_), c(c_.clone())
141  {
142  }
143  virtual ~BilinearTermContractWithLaw() { delete c; }
144  virtual void get(MElement *ele, int npts, IntPt *GP,
145  fullMatrix<double> &m) const;
146  virtual void get(MElement *ele, int npts, IntPt *GP,
147  std::vector<fullMatrix<double> > &mv) const;
148  virtual BilinearTermBase *clone() const
149  {
152  }
153 };
154 
155 template <class T2>
157  const LinearTermBase<T2> &L2);
158 
159 template <class T1, class T2> class BilinearTerm : public BilinearTermBase {
160 protected:
163 
164 public:
166  : space1(space1_), space2(space2_)
167  {
168  }
169  virtual ~BilinearTerm() {}
170 };
171 
172 template <class T2 = double> class LinearTermBase {
173 public:
174  virtual ~LinearTermBase() {}
175  virtual void get(MElement *ele, int npts, IntPt *GP, fullVector<T2> &v) const;
176  virtual void get(MElement *ele, int npts, IntPt *GP,
177  std::vector<fullVector<T2> > &vv) const = 0;
178  virtual LinearTermBase<T2> *clone() const = 0;
180 };
181 
182 template <class T2> class PlusTerm : public LinearTermBase<T2> {
185 
186 public:
188  : a(a_.clone()), b(b_.clone())
189  {
190  }
191  virtual ~PlusTerm()
192  {
193  delete a;
194  delete b;
195  }
196  virtual void get(MElement *ele, int npts, IntPt *GP, fullVector<T2> &v) const;
197  virtual void get(MElement *ele, int npts, IntPt *GP,
198  std::vector<fullVector<T2> > &vv) const {};
199  virtual LinearTermBase<T2> *clone() const { return new PlusTerm<T2>(*a, *b); }
200 };
201 
202 template <class T1, class T2 = double>
203 class LinearTerm : public LinearTermBase<T2> {
204 protected:
206 
207 public:
208  LinearTerm(FunctionSpace<T1> &space1_) : space1(space1_) {}
209  virtual ~LinearTerm() {}
210 };
211 
212 template <class T1>
213 class GradTerm : public LinearTerm<T1, typename TensorialTraits<T1>::GradType> {
214 public:
216  : LinearTerm<T1, typename TensorialTraits<T1>::GradType>(space1_)
217  {
218  }
219  virtual void
220  get(MElement *ele, int npts, IntPt *GP,
221  fullVector<typename TensorialTraits<T1>::GradType> &vec) const
222  {
224  vec);
225  }
226  virtual void
227  get(MElement *ele, int npts, IntPt *GP,
228  std::vector<fullVector<typename TensorialTraits<T1>::GradType> > &vvec)
229  const;
231  {
232  return new GradTerm<T1>(
234  }
235  virtual ~GradTerm() {}
236 };
237 
238 template <class T1, class T2> class LaplaceTerm : public BilinearTerm<T1, T2> {
239 public:
241  : BilinearTerm<T1, T2>(space1_, space2_)
242  {
243  }
244  virtual ~LaplaceTerm() {}
245  virtual void get(MElement *ele, int npts, IntPt *GP,
246  fullMatrix<double> &m) const
247  {
248  Msg::Error("LaplaceTerm<S1, S2> w/ S1 != S2 not implemented");
249  }
250  virtual void get(MElement *ele, int npts, IntPt *GP,
251  std::vector<fullMatrix<double> > &vm) const
252  {
253  Msg::Error("LaplaceTerm<S1, S2> w/ S1 != S2 not implemented");
254  }
255  virtual void get(MVertex *ver, fullMatrix<double> &m)
256  {
257  Msg::Error("LaplaceTerm<S1, S2> w/ S1 != S2 not implemented");
258  }
259  virtual BilinearTermBase *clone() const
260  {
263  }
264 }; // class
265 
266 template <class T1>
267 class LaplaceTerm<T1, T1>
268  : public BilinearTerm<T1, T1> // symmetric
269 {
270 protected:
271  double diffusivity;
272 
273 public:
274  LaplaceTerm(FunctionSpace<T1> &space1_, double diff = 1)
275  : BilinearTerm<T1, T1>(space1_, space1_), diffusivity(diff)
276  {
277  }
278  virtual ~LaplaceTerm() {}
279  virtual void get(MElement *ele, int npts, IntPt *GP,
280  fullMatrix<double> &m) const;
281  virtual void get(MElement *ele, int npts, IntPt *GP,
282  std::vector<fullMatrix<double> > &vm) const {};
283  virtual BilinearTermBase *clone() const
284  {
285  return new LaplaceTerm<T1, T1>(BilinearTerm<T1, T1>::space1, diffusivity);
286  }
287 }; // class
288 
289 class IsotropicElasticTerm : public BilinearTerm<SVector3, SVector3> {
290 protected:
291  double E, nu;
292  bool sym;
294  { {C11, C12, C12, 0, 0, 0},
295  {C12, C11, C12, 0, 0, 0},
296  {C12, C12, C11, 0, 0, 0},
297  { 0, 0, 0, C44, 0, 0},
298  { 0, 0, 0, 0, C44, 0},
299  { 0, 0, 0, 0, 0, C44} };*/
300 public:
302  FunctionSpace<SVector3> &space2_, double E_, double nu_);
303  IsotropicElasticTerm(FunctionSpace<SVector3> &space1_, double E_, double nu_);
305  virtual void get(MElement *ele, int npts, IntPt *GP,
306  fullMatrix<double> &m) const;
307  virtual void get(MElement *ele, int npts, IntPt *GP,
308  std::vector<fullMatrix<double> > &vm) const {};
309  virtual BilinearTermBase *clone() const
310  {
313  nu);
314  }
315 }; // class
316 
317 template <class T1> class LoadTerm : public LinearTerm<T1> {
318 protected:
320 
321 public:
324  : LinearTerm<T1>(space1_), Load(Load_)
325  {
326  }
327  virtual ~LoadTerm() {}
328  virtual LinearTermBase<double> *clone() const
329  {
331  }
332  virtual void get(MElement *ele, int npts, IntPt *GP,
333  fullVector<double> &m) const;
334  virtual void get(MElement *ele, int npts, IntPt *GP,
335  std::vector<fullVector<double> > &vv) const {};
336 };
337 
338 template <class T1>
339 class LagrangeMultiplierTerm : public BilinearTerm<T1, double> {
340  T1 _d;
341 
342 public:
344  FunctionSpace<double> &space2_, const T1 &d)
345  : BilinearTerm<T1, double>(space1_, space2_)
346  {
347  setDirection(_d, d);
348  }
350  virtual void get(MElement *ele, int npts, IntPt *GP,
351  fullMatrix<double> &m) const;
352  virtual void get(MElement *ele, int npts, IntPt *GP,
353  std::vector<fullMatrix<double> > &vm) const {};
354  virtual BilinearTermBase *clone() const
355  {
358  }
359 };
360 
361 class LagMultTerm : public BilinearTerm<SVector3, SVector3> {
362 private:
363  double _eqfac;
364 
365 public:
367  FunctionSpace<SVector3> &space2_, double eqfac = 1.0)
368  : BilinearTerm<SVector3, SVector3>(space1_, space2_), _eqfac(eqfac)
369  {
370  }
371  virtual ~LagMultTerm() {}
372  virtual void get(MElement *ele, int npts, IntPt *GP,
373  fullMatrix<double> &m) const;
374  virtual void get(MElement *ele, int npts, IntPt *GP,
375  std::vector<fullMatrix<double> > &vm) const {};
376  virtual BilinearTermBase *clone() const
377  {
380  }
381 };
382 
383 template <class T1> class LoadTermOnBorder : public LinearTerm<T1> {
384 private:
385  double _eqfac;
387 
388 public:
391  double eqfac = 1.0)
392  : LinearTerm<T1>(space1_), _eqfac(eqfac), Load(Load_)
393  {
394  }
395  virtual ~LoadTermOnBorder() {}
396  virtual LinearTermBase<double> *clone() const
397  {
399  }
400  virtual void get(MElement *ele, int npts, IntPt *GP,
401  fullVector<double> &m) const;
402  virtual void get(MElement *ele, int npts, IntPt *GP,
403  std::vector<fullVector<double> > &vv) const {};
404 };
405 
406 #include "terms.hpp"
407 
408 #endif
LaplaceTerm::~LaplaceTerm
virtual ~LaplaceTerm()
Definition: terms.h:244
BilinearTermToScalarTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< double > &vval) const
Definition: terms.h:85
ScalarTerm::~ScalarTerm
virtual ~ScalarTerm()
Definition: terms.h:57
GradTerm::~GradTerm
virtual ~GradTerm()
Definition: terms.h:235
BilinearTermBase::~BilinearTermBase
virtual ~BilinearTermBase()
Definition: terms.h:95
LoadTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< fullVector< double > > &vv) const
Definition: terms.h:334
BilinearTermContractWithLaw::get
virtual void get(MElement *ele, int npts, IntPt *GP, fullMatrix< double > &m) const
Definition: terms.hpp:131
LaplaceTerm< T1, T1 >::clone
virtual BilinearTermBase * clone() const
Definition: terms.h:283
BilinearTermContract::b
const LinearTermBase< T2 > * b
Definition: terms.h:106
LoadTerm
Definition: terms.h:317
PlusTerm::a
const LinearTermBase< T2 > * a
Definition: terms.h:183
LaplaceTerm< T1, T1 >
Definition: terms.h:269
LoadTermOnBorder::~LoadTermOnBorder
virtual ~LoadTermOnBorder()
Definition: terms.h:395
fullVector
Definition: MElement.h:26
ScalarTermConstant::get
virtual void get(MElement *ele, int npts, IntPt *GP, T2 &val) const
Definition: terms.hpp:41
IsotropicElasticTerm::E
double E
Definition: terms.h:291
GradTerm::clone
virtual LinearTermBase< typename TensorialTraits< T1 >::GradType > * clone() const
Definition: terms.h:230
LinearTerm::~LinearTerm
virtual ~LinearTerm()
Definition: terms.h:209
ScalarTermConstant::ScalarTermConstant
ScalarTermConstant(T2 val_=T2())
Definition: terms.h:65
delta
int delta(int i, int j)
Definition: terms.h:32
terms.hpp
MVertex
Definition: MVertex.h:24
Msg::Error
static void Error(const char *fmt,...)
Definition: GmshMessage.cpp:482
IsotropicElasticTerm::clone
virtual BilinearTermBase * clone() const
Definition: terms.h:309
SVector3
Definition: SVector3.h:16
LoadTerm::LoadTerm
LoadTerm(FunctionSpace< T1 > &space1_, simpleFunction< typename TensorialTraits< T1 >::ValType > *Load_)
Definition: terms.h:322
LagrangeMultiplierTerm::_d
T1 _d
Definition: terms.h:340
LagrangeMultiplierTerm::clone
virtual BilinearTermBase * clone() const
Definition: terms.h:354
LoadTermOnBorder
Definition: terms.h:383
LinearTermBase::clone
virtual LinearTermBase< T2 > * clone() const =0
SVector3.h
LaplaceTerm::get
virtual void get(MVertex *ver, fullMatrix< double > &m)
Definition: terms.h:255
LinearTerm::LinearTerm
LinearTerm(FunctionSpace< T1 > &space1_)
Definition: terms.h:208
GradTerm::GradTerm
GradTerm(FunctionSpace< T1 > &space1_)
Definition: terms.h:215
LagMultTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, fullMatrix< double > &m) const
Definition: terms.cpp:159
LagrangeMultiplierTerm::LagrangeMultiplierTerm
LagrangeMultiplierTerm(FunctionSpace< T1 > &space1_, FunctionSpace< double > &space2_, const T1 &d)
Definition: terms.h:343
LoadTermOnBorder::LoadTermOnBorder
LoadTermOnBorder(FunctionSpace< T1 > &space1_, simpleFunction< typename TensorialTraits< T1 >::ValType > *Load_, double eqfac=1.0)
Definition: terms.h:389
BilinearTermContractWithLaw::BilinearTermContractWithLaw
BilinearTermContractWithLaw(const LinearTermBase< T2 > &a_, const ScalarTermBase< typename TensorialTraits< T2 >::TensProdType > &c_, const LinearTermBase< T2 > &b_)
Definition: terms.h:136
LinearTerm::space1
FunctionSpace< T1 > & space1
Definition: terms.h:205
BilinearTermContract
Definition: terms.h:103
ScalarTermBase
Definition: terms.h:23
GradTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, fullVector< typename TensorialTraits< T1 >::GradType > &vec) const
Definition: terms.h:220
LoadTermOnBorder::get
virtual void get(MElement *ele, int npts, IntPt *GP, fullVector< double > &m) const
Definition: terms.hpp:219
IsotropicElasticTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< fullMatrix< double > > &vm) const
Definition: terms.h:307
ScalarTermConstant::cst
T2 cst
Definition: terms.h:62
fullMatrix< double >
IsotropicElasticTerm
Definition: terms.h:289
BilinearTermToScalarTerm::clone
virtual ScalarTermBase< double > * clone() const
Definition: terms.h:87
simpleFunction
Definition: GModel.h:30
LinearTermBase::get
virtual void get(MElement *ele, int npts, IntPt *GP, fullVector< T2 > &v) const
Definition: terms.hpp:12
PlusTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< fullVector< T2 > > &vv) const
Definition: terms.h:197
LinearTermBase::~LinearTermBase
virtual ~LinearTermBase()
Definition: terms.h:174
LagMultTerm::_eqfac
double _eqfac
Definition: terms.h:363
LoadTermOnBorder::Load
simpleFunction< typename TensorialTraits< T1 >::ValType > * Load
Definition: terms.h:386
LaplaceTerm< T1, T1 >::LaplaceTerm
LaplaceTerm(FunctionSpace< T1 > &space1_, double diff=1)
Definition: terms.h:274
IsotropicElasticTerm::sym
bool sym
Definition: terms.h:292
LoadTerm::clone
virtual LinearTermBase< double > * clone() const
Definition: terms.h:328
Numeric.h
STensor43.h
LagMultTerm
Definition: terms.h:361
LoadTerm::~LoadTerm
virtual ~LoadTerm()
Definition: terms.h:327
BilinearTermContractWithLaw
Definition: terms.h:130
IsotropicElasticTerm::nu
double nu
Definition: terms.h:291
LaplaceTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, fullMatrix< double > &m) const
Definition: terms.h:245
BilinearTermToScalarTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, double &val) const
Definition: terms.cpp:12
LagMultTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< fullMatrix< double > > &vm) const
Definition: terms.h:374
ScalarTermConstant::~ScalarTermConstant
virtual ~ScalarTermConstant()
Definition: terms.h:66
LaplaceTerm
Definition: terms.h:238
LaplaceTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< fullMatrix< double > > &vm) const
Definition: terms.h:250
ScalarTermBase::~ScalarTermBase
virtual ~ScalarTermBase()
Definition: terms.h:48
MElement
Definition: MElement.h:30
BilinearTermContract::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< fullMatrix< double > > &mv) const
Definition: terms.h:121
PlusTerm::clone
virtual LinearTermBase< T2 > * clone() const
Definition: terms.h:199
materialLaw.h
IsotropicElasticTerm::IsotropicElasticTerm
IsotropicElasticTerm(FunctionSpace< SVector3 > &space1_, FunctionSpace< SVector3 > &space2_, double E_, double nu_)
Definition: terms.cpp:40
LaplaceTerm< T1, T1 >::diffusivity
double diffusivity
Definition: terms.h:271
PlusTerm::PlusTerm
PlusTerm(const LinearTermBase< T2 > &a_, const LinearTermBase< T2 > &b_)
Definition: terms.h:187
BilinearTerm::BilinearTerm
BilinearTerm(FunctionSpace< T1 > &space1_, FunctionSpace< T2 > &space2_)
Definition: terms.h:165
IsotropicElasticTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, fullMatrix< double > &m) const
Definition: terms.cpp:78
LagMultTerm::LagMultTerm
LagMultTerm(FunctionSpace< SVector3 > &space1_, FunctionSpace< SVector3 > &space2_, double eqfac=1.0)
Definition: terms.h:366
LoadTerm::Load
simpleFunction< typename TensorialTraits< T1 >::ValType > * Load
Definition: terms.h:319
LoadTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, fullVector< double > &m) const
Definition: terms.hpp:90
BilinearTermContract::get
virtual void get(MElement *ele, int npts, IntPt *GP, fullMatrix< double > &m) const
Definition: terms.hpp:117
LoadTermOnBorder::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< fullVector< double > > &vv) const
Definition: terms.h:402
BilinearTerm::space2
FunctionSpace< T2 > & space2
Definition: terms.h:162
ScalarTermBase::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< T2 > &vval) const =0
LinearTermBase::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< fullVector< T2 > > &vv) const =0
IsotropicElasticTerm::H
fullMatrix< double > H
Definition: terms.h:293
BilinearTermBase
Definition: terms.h:93
BilinearTermToScalarTerm::bilterm
BilinearTermBase & bilterm
Definition: terms.h:79
GradTerm
Definition: terms.h:213
IntPt
Definition: GaussIntegration.h:12
LagrangeMultiplierTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, fullMatrix< double > &m) const
Definition: terms.hpp:194
BilinearTermContractWithLaw::~BilinearTermContractWithLaw
virtual ~BilinearTermContractWithLaw()
Definition: terms.h:143
BilinearTermBase::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< fullMatrix< double > > &mv) const =0
BilinearTerm::~BilinearTerm
virtual ~BilinearTerm()
Definition: terms.h:169
BilinearTerm::space1
FunctionSpace< T1 > & space1
Definition: terms.h:161
BilinearTermToScalarTerm
Definition: terms.h:77
BilinearTermBase::get
virtual void get(MElement *ele, int npts, IntPt *GP, fullMatrix< double > &m) const
Definition: terms.cpp:20
dot
double dot(const double &a, const double &b)
Definition: terms.h:30
LaplaceTerm< T1, T1 >::~LaplaceTerm
virtual ~LaplaceTerm()
Definition: terms.h:278
PlusTerm
Definition: terms.h:26
ScalarTermConstant
Definition: terms.h:60
ScalarTermConstant::clone
virtual ScalarTermBase< T2 > * clone() const
Definition: terms.h:71
BilinearTermContractWithLaw::c
const ScalarTermBase< typename TensorialTraits< T2 >::TensProdType > * c
Definition: terms.h:133
STensor3.h
ScalarTermBase::clone
virtual ScalarTermBase< T2 > * clone() const =0
operator|
BilinearTermContract< T2 > operator|(const LinearTermBase< T2 > &L1, const LinearTermBase< T2 > &L2)
Definition: terms.hpp:112
ScalarTerm
Definition: terms.h:55
BilinearTerm
Definition: terms.h:159
LaplaceTerm::LaplaceTerm
LaplaceTerm(FunctionSpace< T1 > &space1_, FunctionSpace< T2 > &space2_)
Definition: terms.h:240
FunctionSpace< T1 >
LaplaceTerm::clone
virtual BilinearTermBase * clone() const
Definition: terms.h:259
LinearTermBase::operator+
PlusTerm< T2 > operator+(const LinearTermBase< T2 > &other)
Definition: terms.hpp:153
TensorialTraits
Definition: functionSpace.h:22
LagMultTerm::~LagMultTerm
virtual ~LagMultTerm()
Definition: terms.h:371
ScalarTermBase::get
virtual void get(MElement *ele, int npts, IntPt *GP, T2 &val) const =0
LagrangeMultiplierTerm
Definition: terms.h:339
LinearTermBase
Definition: terms.h:25
BilinearTermContract::a
const LinearTermBase< T2 > * a
Definition: terms.h:105
LaplaceTerm< T1, T1 >::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< fullMatrix< double > > &vm) const
Definition: terms.h:281
LagMultTerm::clone
virtual BilinearTermBase * clone() const
Definition: terms.h:376
IsotropicElasticTerm::~IsotropicElasticTerm
virtual ~IsotropicElasticTerm()
Definition: terms.h:304
LoadTermOnBorder::_eqfac
double _eqfac
Definition: terms.h:385
PlusTerm::b
const LinearTermBase< T2 > * b
Definition: terms.h:184
BilinearTermBase::clone
virtual BilinearTermBase * clone() const =0
BilinearTermToScalarTerm::BilinearTermToScalarTerm
BilinearTermToScalarTerm(BilinearTermBase &bilterm_)
Definition: terms.h:82
LoadTermOnBorder::clone
virtual LinearTermBase< double > * clone() const
Definition: terms.h:396
LagrangeMultiplierTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, std::vector< fullMatrix< double > > &vm) const
Definition: terms.h:352
BilinearTermContract::clone
virtual BilinearTermBase * clone() const
Definition: terms.h:123
PlusTerm::~PlusTerm
virtual ~PlusTerm()
Definition: terms.h:191
groupOfElements.h
BilinearTermContract::BilinearTermContract
BilinearTermContract(const LinearTermBase< T2 > &a_, const LinearTermBase< T2 > &b_)
Definition: terms.h:109
BilinearTermContract::~BilinearTermContract
virtual ~BilinearTermContract()
Definition: terms.h:114
functionSpace.h
BilinearTermContractWithLaw::clone
virtual BilinearTermBase * clone() const
Definition: terms.h:148
BilinearTermToScalarTerm::~BilinearTermToScalarTerm
virtual ~BilinearTermToScalarTerm()
Definition: terms.h:83
LinearTerm
Definition: terms.h:203
LagrangeMultiplierTerm::~LagrangeMultiplierTerm
virtual ~LagrangeMultiplierTerm()
Definition: terms.h:349
PlusTerm::get
virtual void get(MElement *ele, int npts, IntPt *GP, fullVector< T2 > &v) const
Definition: terms.hpp:33
setDirection
void setDirection(double &a, const double &b)
Definition: terms.h:40