Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Aland, Sebastian
amdis
Commits
1eb6b83f
Commit
1eb6b83f
authored
Jan 15, 2014
by
Praetorius, Simon
Browse files
GenericOperatorTerm added - provides a math-like syntax for adding terms
parent
68db6597
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
AMDiS/src/Functors.h
View file @
1eb6b83f
...
@@ -123,14 +123,14 @@ template<typename T>
...
@@ -123,14 +123,14 @@ template<typename T>
struct
Diff
:
public
BinaryAbstractFunction
<
T
,
T
,
T
>
struct
Diff
:
public
BinaryAbstractFunction
<
T
,
T
,
T
>
{
{
Diff
(
int
degree
=
1
)
:
BinaryAbstractFunction
<
T
,
T
,
T
>
(
degree
)
{}
Diff
(
int
degree
=
1
)
:
BinaryAbstractFunction
<
T
,
T
,
T
>
(
degree
)
{}
T
operator
()(
const
T
&
v1
,
const
T
&
v2
)
const
{
return
abs
(
v1
-
v2
);
}
T
operator
()(
const
T
&
v1
,
const
T
&
v2
)
const
{
return
std
::
abs
(
v1
-
v2
);
}
};
};
template
<
typename
T
=
double
>
template
<
typename
T
=
double
>
struct
Abs
:
public
AbstractFunction
<
T
,
T
>
struct
Abs
:
public
AbstractFunction
<
T
,
T
>
{
{
Abs
(
int
degree
=
1
)
:
AbstractFunction
<
T
,
T
>
(
degree
)
{}
Abs
(
int
degree
=
1
)
:
AbstractFunction
<
T
,
T
>
(
degree
)
{}
T
operator
()(
const
T
&
v
)
const
{
return
abs
(
v
);
}
T
operator
()(
const
T
&
v
)
const
{
return
std
::
abs
(
v
);
}
};
};
template
<
typename
T
=
double
>
template
<
typename
T
=
double
>
...
@@ -151,35 +151,36 @@ template<typename T=double>
...
@@ -151,35 +151,36 @@ template<typename T=double>
struct
Sqrt
:
public
AbstractFunction
<
T
,
T
>
struct
Sqrt
:
public
AbstractFunction
<
T
,
T
>
{
{
Sqrt
(
int
degree
=
4
)
:
AbstractFunction
<
T
,
T
>
(
degree
)
{}
Sqrt
(
int
degree
=
4
)
:
AbstractFunction
<
T
,
T
>
(
degree
)
{}
T
operator
()(
const
T
&
v
)
const
{
return
sqrt
(
v
);
}
T
operator
()(
const
T
&
v
)
const
{
return
std
::
sqrt
(
v
);
}
};
};
namespace
detail
{
namespace
detail
{
template
<
int
p
>
template
<
int
p
,
typename
T
>
struct
Pow
struct
Pow
{
{
t
emplate
<
typename
T
>
t
ypedef
typename
AMDiS
::
ProductType
<
T
,
typename
Pow
<
p
-
1
,
T
>::
result_type
>::
type
result_type
;
static
T
eval
(
const
T
&
v
)
{
return
v
*
Pow
<
p
-
1
>::
eval
(
v
);
}
static
result_type
eval
(
const
T
&
v
)
{
return
v
*
Pow
<
p
-
1
,
T
>::
eval
(
v
);
}
};
};
template
<
>
template
<
typename
T
>
struct
Pow
<
1
>
{
struct
Pow
<
1
,
T
>
{
t
emplate
<
typename
T
>
t
ypedef
T
result_type
;
static
T
eval
(
const
T
&
v
)
{
return
v
;
}
static
result_type
eval
(
const
T
&
v
)
{
return
v
;
}
};
};
template
<
>
template
<
typename
T
>
struct
Pow
<
0
>
{
struct
Pow
<
0
,
T
>
{
t
emplate
<
typename
T
>
t
ypedef
double
result_type
;
static
T
eval
(
const
T
&
v
)
{
return
1.0
;
}
static
result_type
eval
(
const
T
&
v
)
{
return
1.0
;
}
};
};
}
}
template
<
int
p
,
typename
T
=
double
>
template
<
int
p
,
typename
T
=
double
>
struct
Pow
:
public
AbstractFunction
<
T
,
T
>
struct
Pow
:
public
AbstractFunction
<
typename
detail
::
Pow
<
p
,
T
>::
result_type
,
T
>
{
{
Pow
(
double
factor_
=
1.0
,
int
degree
=
p
)
:
AbstractFunction
<
T
,
T
>
(
degree
),
factor
(
factor_
)
{}
typedef
typename
detail
::
Pow
<
p
,
T
>::
result_type
result_type
;
T
operator
()(
const
T
&
v
)
const
{
return
factor
*
detail
::
Pow
<
p
>::
eval
(
v
);
}
Pow
(
double
factor_
=
1.0
,
int
degree
=
p
)
:
AbstractFunction
<
result_type
,
T
>
(
degree
),
factor
(
factor_
)
{}
result_type
operator
()(
const
T
&
v
)
const
{
return
factor
*
detail
::
Pow
<
p
,
T
>::
eval
(
v
);
}
private:
private:
double
factor
;
double
factor
;
};
};
...
@@ -188,7 +189,7 @@ template<typename T1, typename T2 = ProductType<T1, T1> >
...
@@ -188,7 +189,7 @@ template<typename T1, typename T2 = ProductType<T1, T1> >
struct
Norm2
:
public
AbstractFunction
<
T1
,
T2
>
struct
Norm2
:
public
AbstractFunction
<
T1
,
T2
>
{
{
Norm2
(
int
degree
=
4
)
:
AbstractFunction
<
T1
,
T2
>
(
degree
)
{}
Norm2
(
int
degree
=
4
)
:
AbstractFunction
<
T1
,
T2
>
(
degree
)
{}
T1
operator
()(
const
T2
&
v
)
const
{
return
sqrt
(
v
*
v
);
}
T1
operator
()(
const
T2
&
v
)
const
{
return
std
::
sqrt
(
v
*
v
);
}
};
};
template
<
typename
T1
,
typename
T2
>
template
<
typename
T1
,
typename
T2
>
...
@@ -202,7 +203,7 @@ template<typename T>
...
@@ -202,7 +203,7 @@ template<typename T>
struct
Norm2_comp2
:
public
BinaryAbstractFunction
<
T
,
T
,
T
>
struct
Norm2_comp2
:
public
BinaryAbstractFunction
<
T
,
T
,
T
>
{
{
Norm2_comp2
(
int
degree
=
4
)
:
BinaryAbstractFunction
<
T
,
T
,
T
>
(
degree
)
{}
Norm2_comp2
(
int
degree
=
4
)
:
BinaryAbstractFunction
<
T
,
T
,
T
>
(
degree
)
{}
T
operator
()(
const
T
&
v1
,
const
T
&
v2
)
const
{
return
sqrt
(
sqr
(
v1
)
+
sqr
(
v2
));
}
T
operator
()(
const
T
&
v1
,
const
T
&
v2
)
const
{
return
std
::
sqrt
(
sqr
(
v1
)
+
sqr
(
v2
));
}
};
};
template
<
typename
T
>
template
<
typename
T
>
...
@@ -216,7 +217,7 @@ template<typename T>
...
@@ -216,7 +217,7 @@ template<typename T>
struct
Norm2_comp3
:
public
TertiaryAbstractFunction
<
T
,
T
,
T
,
T
>
struct
Norm2_comp3
:
public
TertiaryAbstractFunction
<
T
,
T
,
T
,
T
>
{
{
Norm2_comp3
(
int
degree
=
4
)
:
TertiaryAbstractFunction
<
T
,
T
,
T
,
T
>
(
degree
)
{}
Norm2_comp3
(
int
degree
=
4
)
:
TertiaryAbstractFunction
<
T
,
T
,
T
,
T
>
(
degree
)
{}
T
operator
()(
const
T
&
v1
,
const
T
&
v2
,
const
T
&
v3
)
const
{
return
sqrt
(
sqr
(
v1
)
+
sqr
(
v2
)
+
sqr
(
v3
));
}
T
operator
()(
const
T
&
v1
,
const
T
&
v2
,
const
T
&
v3
)
const
{
return
std
::
sqrt
(
sqr
(
v1
)
+
sqr
(
v2
)
+
sqr
(
v3
));
}
};
};
template
<
typename
T
>
template
<
typename
T
>
...
@@ -229,7 +230,7 @@ struct Norm2Sqr_comp3 : public TertiaryAbstractFunction<T,T,T,T>
...
@@ -229,7 +230,7 @@ struct Norm2Sqr_comp3 : public TertiaryAbstractFunction<T,T,T,T>
template
<
typename
T
>
template
<
typename
T
>
struct
L1Diff
:
public
BinaryAbstractFunction
<
T
,
T
,
T
>
struct
L1Diff
:
public
BinaryAbstractFunction
<
T
,
T
,
T
>
{
{
T
operator
()(
const
T
&
v1
,
const
T
&
v2
)
const
{
return
abs
(
v1
-
v2
);
}
T
operator
()(
const
T
&
v1
,
const
T
&
v2
)
const
{
return
std
::
abs
(
v1
-
v2
);
}
};
};
template
<
typename
TOut
,
typename
T
=
TOut
>
template
<
typename
TOut
,
typename
T
=
TOut
>
...
...
AMDiS/src/GenericOperatorTerm.h
0 → 100644
View file @
1eb6b83f
This diff is collapsed.
Click to expand it.
AMDiS/src/ProblemStat.cc
View file @
1eb6b83f
...
@@ -71,7 +71,9 @@ namespace AMDiS {
...
@@ -71,7 +71,9 @@ namespace AMDiS {
deserialized
(
false
),
deserialized
(
false
),
computeExactError
(
false
),
computeExactError
(
false
),
boundaryConditionSet
(
false
),
boundaryConditionSet
(
false
),
writeAsmInfo
(
false
)
writeAsmInfo
(
false
),
solutionTime
(
0.0
),
buildTime
(
0.0
)
{
{
Parameters
::
get
(
name
+
"->components"
,
nComponents
);
Parameters
::
get
(
name
+
"->components"
,
nComponents
);
TEST_EXIT
(
nComponents
>
0
)(
"No value set for parameter
\"
%s->components
\"
!
\n
"
,
TEST_EXIT
(
nComponents
>
0
)(
"No value set for parameter
\"
%s->components
\"
!
\n
"
,
...
@@ -666,6 +668,7 @@ namespace AMDiS {
...
@@ -666,6 +668,7 @@ namespace AMDiS {
INFO
(
info
,
8
)(
"solution of discrete system needed %.5f seconds
\n
"
,
INFO
(
info
,
8
)(
"solution of discrete system needed %.5f seconds
\n
"
,
t
.
elapsed
());
t
.
elapsed
());
solutionTime
=
t
.
elapsed
();
adaptInfo
->
setSolverIterations
(
solver
->
getIterations
());
adaptInfo
->
setSolverIterations
(
solver
->
getIterations
());
adaptInfo
->
setMaxSolverIterations
(
solver
->
getMaxIterations
());
adaptInfo
->
setMaxSolverIterations
(
solver
->
getMaxIterations
());
...
@@ -924,6 +927,7 @@ namespace AMDiS {
...
@@ -924,6 +927,7 @@ namespace AMDiS {
MPI
::
COMM_WORLD
.
Barrier
();
MPI
::
COMM_WORLD
.
Barrier
();
#endif
#endif
INFO
(
info
,
8
)(
"buildAfterCoarsen needed %.5f seconds
\n
"
,
t
.
elapsed
());
INFO
(
info
,
8
)(
"buildAfterCoarsen needed %.5f seconds
\n
"
,
t
.
elapsed
());
buildTime
=
t
.
elapsed
();
}
}
...
...
AMDiS/src/ProblemStat.h
View file @
1eb6b83f
...
@@ -547,6 +547,16 @@ namespace AMDiS {
...
@@ -547,6 +547,16 @@ namespace AMDiS {
{
{
return
fileWriters
;
return
fileWriters
;
}
}
double
getSolutionTime
()
{
return
solutionTime
;
}
double
getBuildTime
()
{
return
buildTime
;
}
protected:
protected:
/// If the exact solution is known, the problem can compute the exact
/// If the exact solution is known, the problem can compute the exact
...
@@ -664,6 +674,9 @@ namespace AMDiS {
...
@@ -664,6 +674,9 @@ namespace AMDiS {
bool
writeAsmInfo
;
bool
writeAsmInfo
;
std
::
map
<
Operator
*
,
std
::
vector
<
OperatorPos
>
>
operators
;
std
::
map
<
Operator
*
,
std
::
vector
<
OperatorPos
>
>
operators
;
double
solutionTime
;
double
buildTime
;
};
};
#ifndef HAVE_PARALLEL_DOMAIN_AMDIS
#ifndef HAVE_PARALLEL_DOMAIN_AMDIS
...
...
AMDiS/src/Recovery.h
View file @
1eb6b83f
...
@@ -51,9 +51,9 @@ namespace AMDiS {
...
@@ -51,9 +51,9 @@ namespace AMDiS {
double
operator
()(
const
WorldVector
<
double
>&
y
,
double
operator
()(
const
WorldVector
<
double
>&
y
,
const
WorldVector
<
double
>&
z
)
const
const
WorldVector
<
double
>&
z
)
const
{
{
double
result
=
pow
(
y
[
0
]
-
z
[
0
],
exponent
[
0
]);
double
result
=
std
::
pow
(
y
[
0
]
-
z
[
0
],
double
(
exponent
[
0
])
)
;
for
(
int
i
=
1
;
i
<
exponent
.
size
();
i
++
)
for
(
int
i
=
1
;
i
<
exponent
.
size
();
i
++
)
result
*=
pow
(
y
[
i
]
-
z
[
i
],
exponent
[
i
]);
result
*=
std
::
pow
(
y
[
i
]
-
z
[
i
],
double
(
exponent
[
i
])
)
;
return
result
;
return
result
;
}
}
...
...
AMDiS/src/ZeroOrderTerm.h
View file @
1eb6b83f
...
@@ -99,20 +99,20 @@ namespace AMDiS {
...
@@ -99,20 +99,20 @@ namespace AMDiS {
public:
public:
/// Constructor.
/// Constructor.
VecAtQP_ZOT
(
DOFVectorBase
<
double
>
*
dv
,
VecAtQP_ZOT
(
DOFVectorBase
<
double
>
*
dv
,
AbstractFunction
<
double
,
double
>
*
ab
=
nullptr
,
AbstractFunction
<
double
,
double
>
*
ab
=
NULL
,
double
factor_
=
1.0
double
factor_
=
1.0
);
);
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implementation of \ref OperatorTerm::initElement() for multiple meshes.
/// Implementation of \ref OperatorTerm::initElement() for multiple meshes.
void
initElement
(
const
ElInfo
*
smallElInfo
,
void
initElement
(
const
ElInfo
*
smallElInfo
,
const
ElInfo
*
largeElInfo
,
const
ElInfo
*
largeElInfo
,
SubAssembler
*
subAssembler
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -160,7 +160,7 @@ namespace AMDiS {
...
@@ -160,7 +160,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -203,19 +203,19 @@ namespace AMDiS {
...
@@ -203,19 +203,19 @@ namespace AMDiS {
/// Constructor.
/// Constructor.
Vec2AtQP_ZOT
(
DOFVectorBase
<
double
>
*
dv1
,
Vec2AtQP_ZOT
(
DOFVectorBase
<
double
>
*
dv1
,
DOFVectorBase
<
double
>
*
dv2
,
DOFVectorBase
<
double
>
*
dv2
,
BinaryAbstractFunction
<
double
,
double
,
double
>
*
f
=
nullptr
,
BinaryAbstractFunction
<
double
,
double
,
double
>
*
f
=
NULL
,
double
factor_
=
1.0
double
factor_
=
1.0
);
);
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implementation of \ref OperatorTerm::initElement() for multilpe meshes.
/// Implementation of \ref OperatorTerm::initElement() for multilpe meshes.
void
initElement
(
const
ElInfo
*
smallElInfo
,
void
initElement
(
const
ElInfo
*
smallElInfo
,
const
ElInfo
*
largeElInfo
,
const
ElInfo
*
largeElInfo
,
SubAssembler
*
subAssembler
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -260,13 +260,13 @@ namespace AMDiS {
...
@@ -260,13 +260,13 @@ namespace AMDiS {
Vec3AtQP_ZOT
(
DOFVectorBase
<
double
>
*
dv1
,
Vec3AtQP_ZOT
(
DOFVectorBase
<
double
>
*
dv1
,
DOFVectorBase
<
double
>
*
dv2
,
DOFVectorBase
<
double
>
*
dv2
,
DOFVectorBase
<
double
>
*
dv3
,
DOFVectorBase
<
double
>
*
dv3
,
TertiaryAbstractFunction
<
double
,
double
,
double
,
double
>
*
f
=
nullptr
,
TertiaryAbstractFunction
<
double
,
double
,
double
,
double
>
*
f
=
NULL
,
double
factor_
=
1.0
double
factor_
=
1.0
);
);
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -309,7 +309,7 @@ namespace AMDiS {
...
@@ -309,7 +309,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
elInfo
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
elInfo
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -349,7 +349,7 @@ namespace AMDiS {
...
@@ -349,7 +349,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -392,7 +392,7 @@ namespace AMDiS {
...
@@ -392,7 +392,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -433,7 +433,7 @@ namespace AMDiS {
...
@@ -433,7 +433,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -477,7 +477,7 @@ namespace AMDiS {
...
@@ -477,7 +477,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
elInfo
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
elInfo
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -519,7 +519,7 @@ namespace AMDiS {
...
@@ -519,7 +519,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -557,7 +557,7 @@ namespace AMDiS {
...
@@ -557,7 +557,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -599,7 +599,7 @@ namespace AMDiS {
...
@@ -599,7 +599,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -645,7 +645,7 @@ namespace AMDiS {
...
@@ -645,7 +645,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -679,7 +679,7 @@ namespace AMDiS {
...
@@ -679,7 +679,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -710,12 +710,12 @@ namespace AMDiS {
...
@@ -710,12 +710,12 @@ namespace AMDiS {
/// Constructor.
/// Constructor.
VecDivergence_ZOT
(
int
nComponents
,
VecDivergence_ZOT
(
int
nComponents
,
DOFVectorBase
<
double
>
*
vec0
,
DOFVectorBase
<
double
>
*
vec0
,
DOFVectorBase
<
double
>
*
vec1
=
nullptr
,
DOFVectorBase
<
double
>
*
vec1
=
NULL
,
DOFVectorBase
<
double
>
*
vec2
=
nullptr
);
DOFVectorBase
<
double
>
*
vec2
=
NULL
);
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -747,7 +747,7 @@ namespace AMDiS {
...
@@ -747,7 +747,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -786,7 +786,7 @@ namespace AMDiS {
...
@@ -786,7 +786,7 @@ namespace AMDiS {
QuartAbstractFunction
<
double
,
double
,
double
,
WorldVector
<
double
>
,
WorldVector
<
double
>
>
*
af
);
QuartAbstractFunction
<
double
,
double
,
double
,
WorldVector
<
double
>
,
WorldVector
<
double
>
>
*
af
);
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -816,7 +816,7 @@ namespace AMDiS {
...
@@ -816,7 +816,7 @@ namespace AMDiS {
TertiaryAbstractFunction
<
double
,
double
,
double
,
WorldVector
<
double
>
>
*
f
);
TertiaryAbstractFunction
<
double
,
double
,
double
,
WorldVector
<
double
>
>
*
f
);
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -850,7 +850,7 @@ namespace AMDiS {
...
@@ -850,7 +850,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -899,7 +899,7 @@ namespace AMDiS {
...
@@ -899,7 +899,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
@@ -950,7 +950,7 @@ namespace AMDiS {
...
@@ -950,7 +950,7 @@ namespace AMDiS {
/// Implementation of \ref OperatorTerm::initElement().
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
nullptr
);
Quadrature
*
quad
=
NULL
);
/// Implements ZeroOrderTerm::getC().
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
void
getC
(
const
ElInfo
*
,
int
nPoints
,
ElementVector
&
C
);
...
...
AMDiS/src/expressions/AtomicExpression.h
0 → 100644
View file @
1eb6b83f
/******************************************************************************
*
* AMDiS - Adaptive multidimensional simulations
*
* Copyright (C) 2013 Dresden University of Technology. All Rights Reserved.
* Web: https://fusionforge.zih.tu-dresden.de/projects/amdis
*
* Authors:
* Simon Vey, Thomas Witkowski, Andreas Naumann, Simon Praetorius, et al.
*
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*