IFEM 90A354
TractionField.h
Go to the documentation of this file.
1// $Id$
2//==============================================================================
12//==============================================================================
13
14#ifndef _TRACTION_FIELD_H
15#define _TRACTION_FIELD_H
16
17#include "Function.h"
18#include "Tensor.h"
19
20class TensorFunc;
21class STensorFunc;
22
23
35{
38
39public:
41 explicit TractionField(const STensorFunc& field);
43 explicit TractionField(const TensorFunc& field);
45 virtual ~TractionField() {}
46
48 virtual bool isZero() const;
49
53 virtual Vec3 deriv(const Vec3& x, const Vec3& n) const;
54
55protected:
59 virtual Vec3 evaluate(const Vec3& x, const Vec3& n) const;
60};
61
62
75{
77 char pdir;
78 const VecFunc* pdfn;
79
80public:
84 explicit PressureField(Real p, int dir = 0);
88 explicit PressureField(const RealFunc* p, int dir = 0)
89 : pressure(p), pdir(dir), pdfn(nullptr) {}
93 PressureField(const RealFunc* p, const VecFunc* dir)
94 : pressure(p), pdir(-1), pdfn(dir) {}
96 virtual ~PressureField() { delete pressure; delete pdfn; }
97
99 virtual bool isNormalPressure() const { return !pdfn && (pdir<1 || pdir>3); }
101 virtual bool isZero() const { return pressure ? pressure->isZero() : true; }
102
106 virtual Vec3 deriv(const Vec3& x, const Vec3& n) const;
107
108protected:
112 virtual Vec3 evaluate(const Vec3& x, const Vec3& n) const;
113};
114
115
151{
153
156
159 const Vec3Func* fdir;
161
162 bool dirVec;
163 char rotAxis;
164
165public:
174 ForceDirField(const ScalarFunc* f, const Vec3Func* d, const RealFunc* s,
175 const Vec3& Xaxis = Vec3(Real(1),Real(0),Real(0)),
176 const Vec3& Zaxis = Vec3(Real(0),Real(0),Real(1)),
177 const Vec3& Xorig = Vec3(), bool v = false)
178 : X0(Xorig), Tlg(Xaxis,Zaxis,false,true), force(f), angle(nullptr), fdir(d),
179 shape(s), dirVec(v), rotAxis(0) {}
180
189 ForceDirField(const ScalarFunc* f, const ScalarFunc* a, char x,
190 const RealFunc* s,
191 const Vec3& Xaxis = Vec3(Real(1),Real(0),Real(0)),
192 const Vec3& Zaxis = Vec3(Real(0),Real(0),Real(1)),
193 const Vec3& Xorig = Vec3())
194 : X0(Xorig), Tlg(Xaxis,Zaxis,false,true), force(f), angle(a), fdir(nullptr),
195 shape(s), dirVec(false), rotAxis(x) {}
196
198 virtual ~ForceDirField();
199
201 virtual bool isZero() const { return force ? force->isZero() : true; }
202
203protected:
206 virtual Vec3 evaluate(const Vec3& x, const Vec3&) const;
207};
208
209#endif
General functions with arbitrary argument and value type.
#define Real
The floating point type to use.
Definition ImmersedBoundaries.h:18
Representation of second-order tensors with some basic operations.
Traction field based on a given force resultant and orientation.
Definition TractionField.h:151
const RealFunc * shape
Shape function for force distribution.
Definition TractionField.h:160
ForceDirField(const ScalarFunc *f, const ScalarFunc *a, char x, const RealFunc *s, const Vec3 &Xaxis=Vec3(Real(1), Real(0), Real(0)), const Vec3 &Zaxis=Vec3(Real(0), Real(0), Real(1)), const Vec3 &Xorig=Vec3())
Alternative constructor for single-axis rotation.
Definition TractionField.h:189
virtual bool isZero() const
Returns whether the function is identically zero or not.
Definition TractionField.h:201
bool dirVec
If true, fdir is the force direction vector.
Definition TractionField.h:162
const ScalarFunc * angle
Force angle about rotAxis.
Definition TractionField.h:158
const ScalarFunc * force
Force resultant magnitude.
Definition TractionField.h:157
virtual Vec3 evaluate(const Vec3 &x, const Vec3 &) const
Evaluates the traction field function at the specified point.
Definition TractionField.C:127
ForceDirField(const ScalarFunc *f, const Vec3Func *d, const RealFunc *s, const Vec3 &Xaxis=Vec3(Real(1), Real(0), Real(0)), const Vec3 &Zaxis=Vec3(Real(0), Real(0), Real(1)), const Vec3 &Xorig=Vec3(), bool v=false)
The constructor initializes the function pointers.
Definition TractionField.h:174
Vec3 X0
Local origin.
Definition TractionField.h:154
utl::Function< Real, Vec3 > Vec3Func
Convenience type.
Definition TractionField.h:152
Tensor Tlg
Local-to-global transformation.
Definition TractionField.h:155
virtual ~ForceDirField()
The destructor frees the force functions.
Definition TractionField.C:118
const Vec3Func * fdir
Force direction/angles.
Definition TractionField.h:159
char rotAxis
Which local axis the angle is referring to.
Definition TractionField.h:163
Traction field based on a given scalar pressure function.
Definition TractionField.h:75
PressureField(const RealFunc *p, const VecFunc *dir)
Constructor initializing the scalar pressure field function.
Definition TractionField.h:93
const VecFunc * pdfn
Varying global pressure direction.
Definition TractionField.h:78
virtual bool isZero() const
Returns whether the function is identically zero or not.
Definition TractionField.h:101
char pdir
The global pressure direction (0...3)
Definition TractionField.h:77
const RealFunc * pressure
Scalar field to derive the traction field from.
Definition TractionField.h:76
virtual bool isNormalPressure() const
Returns whether the traction is always normal to the face or not.
Definition TractionField.h:99
virtual Vec3 evaluate(const Vec3 &x, const Vec3 &n) const
Evaluates the traction field function at the specified point.
Definition TractionField.C:66
PressureField(const RealFunc *p, int dir=0)
Constructor initializing the scalar pressure field function.
Definition TractionField.h:88
virtual ~PressureField()
The destructor frees the scalar and vector field functions.
Definition TractionField.h:96
virtual Vec3 deriv(const Vec3 &x, const Vec3 &n) const
Returns the time-derivative of the function.
Definition TractionField.C:93
Scalar-valued unary function of a spatial point.
Definition Function.h:193
Symmetric tensor-valued unary function of a spatial point.
Definition TensorFunction.h:71
Scalar-valued unary function of a scalar value.
Definition Function.h:127
Tensor-valued unary function of a spatial point.
Definition TensorFunction.h:27
Simple class for representing a non-symmetric second-order tensor.
Definition Tensor.h:28
Traction field based on a given stress tensor function.
Definition TractionField.h:35
const STensorFunc * sigma
Symmetric tensor field to derive tractions from.
Definition TractionField.h:36
virtual bool isZero() const
Returns whether the function is identically zero or not.
Definition TractionField.C:55
virtual Vec3 evaluate(const Vec3 &x, const Vec3 &n) const
Evaluates the traction field function at the specified point.
Definition TractionField.C:33
virtual Vec3 deriv(const Vec3 &x, const Vec3 &n) const
Returns the time-derivative of the function.
Definition TractionField.C:44
virtual ~TractionField()
Empty destructor.
Definition TractionField.h:45
const TensorFunc * sigmaN
Tensor field to derive tractions from.
Definition TractionField.h:37
Vector-valued binary function of a spatial point and normal vector.
Definition Function.h:292
Simple class for representing a point in 3D space.
Definition Vec3.h:27
Vector-valued unary function of a spatial point.
Definition Function.h:242
Base class for unary functions of arbitrary result and argument type.
Definition Function.h:31
virtual bool isZero() const
Returns whether the function is identically zero or not.
Definition Function.h:41