ASL
0.1.7
Advanced Simulation Library
Toggle main menu visibility
Loading...
Searching...
No Matches
src
math
aslPositionFunction.h
Go to the documentation of this file.
1
/*
2
* Advanced Simulation Library <http://asl.org.il>
3
*
4
* Copyright 2015 Avtech Scientific <http://avtechscientific.com>
5
*
6
*
7
* This file is part of Advanced Simulation Library (ASL).
8
*
9
* ASL is free software: you can redistribute it and/or modify it
10
* under the terms of the GNU Affero General Public License as
11
* published by the Free Software Foundation, version 3 of the License.
12
*
13
* ASL is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU Affero General Public License for more details.
17
*
18
* You should have received a copy of the GNU Affero General Public License
19
* along with ASL. If not, see <http://www.gnu.org/licenses/>.
20
*
21
*/
22
23
24
#ifndef ASLPOSITIONFUNCTION_H
25
#define ASLPOSITIONFUNCTION_H
26
27
#include <
acl/aclMath/aclVectorOfElementsDef.h
>
28
#include "
utilities/aslUValue.h
"
29
30
namespace
acl
31
{
32
class
KernelConfiguration
;
33
}
34
35
namespace
asl
{
36
37
template
<
typename
T>
class
AVec
;
38
class
Block
;
39
40
class
AbstractDataWithGhostNodes
;
41
typedef
std::shared_ptr<AbstractDataWithGhostNodes>
SPAbstractDataWithGhostNodes
;
42
45
48
class
PositionFunction
49
{
50
protected
:
51
PositionFunction
();
52
public
:
53
virtual
~PositionFunction
();
54
virtual
acl::VectorOfElements
value
(
acl::VectorOfElements
& pos)=0;
55
};
56
58
typedef
std::shared_ptr<PositionFunction>
SPPositionFunction
;
59
61
class
PFBinaryOperation
:
public
PositionFunction
62
{
63
protected
:
64
SPPositionFunction
e1
;
65
SPPositionFunction
e2
;
66
public
:
67
PFBinaryOperation
(
SPPositionFunction
a,
SPPositionFunction
b);
68
};
69
71
class
PFUnaryOperation
:
public
PositionFunction
72
{
73
protected
:
74
SPPositionFunction
e1
;
75
public
:
76
PFUnaryOperation
(
SPPositionFunction
a);
77
};
78
80
class
PFOperationPlus
:
public
PFBinaryOperation
81
{
82
public
:
83
PFOperationPlus
(
SPPositionFunction
a,
SPPositionFunction
b);
84
virtual
acl::VectorOfElements
value
(
acl::VectorOfElements
& pos);
85
};
86
88
class
PFOperationMinus
:
public
PFBinaryOperation
89
{
90
public
:
91
PFOperationMinus
(
SPPositionFunction
a,
SPPositionFunction
b);
92
virtual
acl::VectorOfElements
value
(
acl::VectorOfElements
& pos);
93
};
94
96
class
PFOperationProduct
:
public
PFBinaryOperation
97
{
98
public
:
99
PFOperationProduct
(
SPPositionFunction
a,
SPPositionFunction
b);
100
virtual
acl::VectorOfElements
value
(
acl::VectorOfElements
& pos);
101
};
102
104
class
PFOperationInversion
:
public
PFUnaryOperation
105
{
106
public
:
107
PFOperationInversion
(
SPPositionFunction
a);
108
virtual
acl::VectorOfElements
value
(
acl::VectorOfElements
& pos);
109
};
110
112
class
PFConstant
:
public
PositionFunction
113
{
114
private
:
115
acl::VectorOfElements
val;
116
public
:
117
PFConstant
(
acl::VectorOfElements
v);
118
virtual
acl::VectorOfElements
value
(
acl::VectorOfElements
& pos);
119
};
120
122
class
PFLinear
:
public
PositionFunction
123
{
124
private
:
125
acl::VectorOfElements
gradient;
126
acl::VectorOfElements
b;
127
public
:
128
PFLinear
(
acl::VectorOfElements
g,
acl::VectorOfElements
p0);
129
virtual
acl::VectorOfElements
value
(
acl::VectorOfElements
& pos);
130
};
131
133
class
PFRotationField
:
public
PositionFunction
134
{
135
private
:
136
acl::VectorOfElements
axis;
137
acl::VectorOfElements
c;
138
public
:
142
PFRotationField
(
acl::VectorOfElements
rotationAxis,
143
acl::VectorOfElements
center);
144
virtual
acl::VectorOfElements
value
(
acl::VectorOfElements
& pos);
145
};
146
148
class
PFSign
:
public
PFUnaryOperation
149
{
150
public
:
151
PFSign
(
SPPositionFunction
a);
152
virtual
acl::VectorOfElements
value
(
acl::VectorOfElements
& pos);
153
};
154
156
SPPositionFunction
generatePFLinear
(
const
AVec<double>
& g,
double
p0);
158
template
<
typename
T>
159
SPPositionFunction
generatePFLinear
(
const
AVec<double>
& g,
UValue<T>
p0);
160
162
SPPositionFunction
generatePFConstant
(
const
AVec<double>
& a);
164
SPPositionFunction
generatePFConstant
(
double
a);
166
SPPositionFunction
generatePFRotationField
(
const
AVec<double>
& axis,
167
const
AVec<double>
& c);
168
169
171
inline
SPPositionFunction
operator+
(
SPPositionFunction
a,
SPPositionFunction
b);
173
inline
SPPositionFunction
operator-
(
SPPositionFunction
a,
SPPositionFunction
b);
175
inline
SPPositionFunction
operator-
(
SPPositionFunction
a);
177
inline
SPPositionFunction
operator*
(
SPPositionFunction
a,
SPPositionFunction
b);
179
inline
SPPositionFunction
sign
(
SPPositionFunction
a);
180
182
SPAbstractDataWithGhostNodes
generateDataContainer_SP
(
const
Block
&b,
183
SPPositionFunction
df,
184
unsigned
int
gN,
185
acl::TypeID
t);
186
187
189
void
initData
(
SPAbstractDataWithGhostNodes
d,
190
SPPositionFunction
f);
192
void
initData
(
SPAbstractDataWithGhostNodes
d,
193
SPPositionFunction
f,
194
const
acl::KernelConfiguration
& k);
195
196
197
//---------------------------- Implementation --------------------------------
198
199
200
inline
SPPositionFunction
operator+
(
SPPositionFunction
a,
SPPositionFunction
b)
201
{
202
return
SPPositionFunction
(
new
PFOperationPlus
(a,b));
203
}
204
205
inline
SPPositionFunction
operator-
(
SPPositionFunction
a,
SPPositionFunction
b)
206
{
207
return
SPPositionFunction
(
new
PFOperationMinus
(a,b));
208
}
209
210
inline
SPPositionFunction
operator-
(
SPPositionFunction
a)
211
{
212
return
SPPositionFunction
(
new
PFOperationInversion
(a));
213
}
214
215
inline
SPPositionFunction
operator*
(
SPPositionFunction
a,
SPPositionFunction
b)
216
{
217
return
SPPositionFunction
(
new
PFOperationProduct
(a,b));
218
}
219
220
inline
SPPositionFunction
sign
(
SPPositionFunction
a)
221
{
222
return
SPPositionFunction
(
new
PFSign
(a));
223
}
224
225
}
// asl
226
227
#endif
// ASLPositionFunction
aclVectorOfElementsDef.h
aslUValue.h
acl::KernelConfiguration
ACL Kernel configuration class.
Definition
aclKernelConfiguration.h:35
acl::VectorOfElements
The class represents several Element.
Definition
aclVectorOfElementsDef.h:92
asl::AVec
Definition
aslVectorsDynamicLength.h:40
asl::AbstractDataWithGhostNodes
Definition
aslDataWithGhostNodes.h:39
asl::Block
Definition
aslBlocks.h:57
asl::PFBinaryOperation::PFBinaryOperation
PFBinaryOperation(SPPositionFunction a, SPPositionFunction b)
asl::PFBinaryOperation::e2
SPPositionFunction e2
Definition
aslPositionFunction.h:65
asl::PFBinaryOperation::e1
SPPositionFunction e1
Definition
aslPositionFunction.h:64
asl::PFConstant::value
virtual acl::VectorOfElements value(acl::VectorOfElements &pos)
asl::PFConstant::PFConstant
PFConstant(acl::VectorOfElements v)
asl::PFLinear::PFLinear
PFLinear(acl::VectorOfElements g, acl::VectorOfElements p0)
asl::PFLinear::value
virtual acl::VectorOfElements value(acl::VectorOfElements &pos)
asl::PFOperationInversion
Definition
aslPositionFunction.h:105
asl::PFOperationInversion::value
virtual acl::VectorOfElements value(acl::VectorOfElements &pos)
asl::PFOperationInversion::PFOperationInversion
PFOperationInversion(SPPositionFunction a)
asl::PFOperationMinus
Definition
aslPositionFunction.h:89
asl::PFOperationMinus::value
virtual acl::VectorOfElements value(acl::VectorOfElements &pos)
asl::PFOperationMinus::PFOperationMinus
PFOperationMinus(SPPositionFunction a, SPPositionFunction b)
asl::PFOperationPlus
Definition
aslPositionFunction.h:81
asl::PFOperationPlus::PFOperationPlus
PFOperationPlus(SPPositionFunction a, SPPositionFunction b)
asl::PFOperationPlus::value
virtual acl::VectorOfElements value(acl::VectorOfElements &pos)
asl::PFOperationProduct
Definition
aslPositionFunction.h:97
asl::PFOperationProduct::value
virtual acl::VectorOfElements value(acl::VectorOfElements &pos)
asl::PFOperationProduct::PFOperationProduct
PFOperationProduct(SPPositionFunction a, SPPositionFunction b)
asl::PFRotationField::PFRotationField
PFRotationField(acl::VectorOfElements rotationAxis, acl::VectorOfElements center)
asl::PFRotationField::value
virtual acl::VectorOfElements value(acl::VectorOfElements &pos)
asl::PFSign
Definition
aslPositionFunction.h:149
asl::PFSign::PFSign
PFSign(SPPositionFunction a)
asl::PFSign::value
virtual acl::VectorOfElements value(acl::VectorOfElements &pos)
asl::PFUnaryOperation::e1
SPPositionFunction e1
Definition
aslPositionFunction.h:74
asl::PFUnaryOperation::PFUnaryOperation
PFUnaryOperation(SPPositionFunction a)
asl::PositionFunction::PositionFunction
PositionFunction()
asl::PositionFunction::value
virtual acl::VectorOfElements value(acl::VectorOfElements &pos)=0
asl::PositionFunction::~PositionFunction
virtual ~PositionFunction()
asl::UValue
Updatable value. This class stores value and its TimeStamp.
Definition
aslUValue.h:35
asl::generateDataContainer_SP
SPDataWrapperACL generateDataContainer_SP(const Block &b, const acl::VectorOfElements &a)
asl::operator-
SPDistanceFunction operator-(SPDistanceFunction a)
asl::generatePFConstant
SPPositionFunction generatePFConstant(const AVec< double > &a)
asl::generatePFRotationField
SPPositionFunction generatePFRotationField(const AVec< double > &axis, const AVec< double > &c)
asl::generatePFLinear
SPPositionFunction generatePFLinear(const AVec< double > &g, double p0)
asl::operator*
SPPositionFunction operator*(SPPositionFunction a, SPPositionFunction b)
Definition
aslPositionFunction.h:215
asl::SPPositionFunction
std::shared_ptr< PositionFunction > SPPositionFunction
Definition
aslPositionFunction.h:58
asl::sign
SPPositionFunction sign(SPPositionFunction a)
Definition
aslPositionFunction.h:220
acl
Advanced Computational Language.
Definition
acl.h:41
acl::TypeID
TypeID
Definition
aclTypes.h:39
asl
Advanced Simulation Library.
Definition
aslDataInc.h:31
asl::SPAbstractDataWithGhostNodes
std::shared_ptr< AbstractDataWithGhostNodes > SPAbstractDataWithGhostNodes
Definition
aslGenerators.h:51
asl::operator+
const AMatr< T > operator+(const AMatr< T > &a, const AMatr< T > &b)
Definition
aslMatrices.h:252
asl::initData
void initData(SPAbstractData d, double a)
Generated by
1.17.0