Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
Backofen, Rainer
amdis
Commits
fdbb06df
Commit
fdbb06df
authored
Jan 26, 2010
by
Thomas Witkowski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Work on 3d parallelization.
parent
bdd0796c
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
518 additions
and
571 deletions
+518
-571
AMDiS/src/DOFVector.hh
AMDiS/src/DOFVector.hh
+2
-2
AMDiS/src/Operator.h
AMDiS/src/Operator.h
+111
-334
AMDiS/src/ParallelDomainBase.cc
AMDiS/src/ParallelDomainBase.cc
+312
-221
AMDiS/src/ParallelDomainBase.h
AMDiS/src/ParallelDomainBase.h
+28
-5
AMDiS/src/ParallelDomainVec.cc
AMDiS/src/ParallelDomainVec.cc
+1
-1
AMDiS/src/ProblemVec.cc
AMDiS/src/ProblemVec.cc
+1
-1
AMDiS/src/StdMpi.h
AMDiS/src/StdMpi.h
+39
-1
AMDiS/src/Tetrahedron.cc
AMDiS/src/Tetrahedron.cc
+3
-0
AMDiS/src/VtkWriter.cc
AMDiS/src/VtkWriter.cc
+21
-6
No files found.
AMDiS/src/DOFVector.hh
View file @
fdbb06df
...
...
@@ -378,9 +378,9 @@ namespace AMDiS {
template
<
typename
T
>
void
DOFVector
<
T
>::
interpol
(
AbstractFunction
<
T
,
WorldVector
<
double
>
>
*
fct
)
{
FUNCNAME
(
"interpol"
);
FUNCNAME
(
"
DOFVector::
interpol
()
"
);
TEST_EXIT_DBG
(
fct
)(
"
n
o function to interpolate
\n
"
);
TEST_EXIT_DBG
(
fct
)(
"
N
o function to interpolate
!
\n
"
);
interFct
=
fct
;
...
...
AMDiS/src/Operator.h
View file @
fdbb06df
...
...
@@ -570,9 +570,7 @@ namespace AMDiS {
lalt_kl
(
Lambda
,
xi
,
xj
,
*
(
LALt
[
iq
]),
(
*
factor
));
}
/** \brief
* Implenetation of SecondOrderTerm::eval().
*/
/// Implenetation of SecondOrderTerm::eval().
void
eval
(
int
nPoints
,
const
double
*
,
const
WorldVector
<
double
>
*
,
...
...
@@ -585,9 +583,7 @@ namespace AMDiS {
result
[
iq
]
+=
(
*
factor
)
*
D2UhAtQP
[
iq
][
xi
][
xj
]
*
fac
;
}
/** \brief
* Implenetation of SecondOrderTerm::weakEval().
*/
/// Implenetation of SecondOrderTerm::weakEval().
void
weakEval
(
int
nPoints
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
WorldVector
<
double
>
*
result
)
const
...
...
@@ -598,14 +594,10 @@ namespace AMDiS {
}
private:
/** \brief
* Directions for the derivatives.
*/
/// Directions for the derivatives.
int
xi
,
xj
;
/** \brief
* Pointer to the factor.
*/
/// Pointer to the factor.
double
*
factor
;
};
...
...
@@ -722,20 +714,14 @@ namespace AMDiS {
setSymmetric
(
true
);
}
/** \brief
* Implementation of \ref OperatorTerm::initElement().
*/
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
NULL
);
/** \brief
* Implements SecondOrderTerm::getLALt().
*/
/// Implements SecondOrderTerm::getLALt().
void
getLALt
(
const
ElInfo
*
elInfo
,
int
nPoints
,
DimMat
<
double
>
**
LALt
)
const
;
/** \brief
* Implenetation of SecondOrderTerm::eval().
*/
/// Implenetation of SecondOrderTerm::eval().
void
eval
(
int
nPoints
,
const
double
*
uhAtQP
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
...
...
@@ -743,23 +729,17 @@ namespace AMDiS {
double
*
result
,
double
factor
)
const
;
/** \brief
* Implenetation of SecondOrderTerm::weakEval().
*/
/// Implenetation of SecondOrderTerm::weakEval().
void
weakEval
(
int
nPoints
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
WorldVector
<
double
>
*
result
)
const
;
protected:
/** \brief
* Stores coordinates at quadrature points. Set in \ref initElement().
*/
/// Stores coordinates at quadrature points. Set in \ref initElement().
WorldVector
<
double
>*
coordsAtQPs
;
/** \brief
* Function evaluated at quadrature points.
*/
/// Function evaluated at quadrature points.
AbstractFunction
<
double
,
WorldVector
<
double
>
>
*
g
;
};
...
...
@@ -2522,20 +2502,14 @@ namespace AMDiS {
VecGradCoordsAtQP_ZOT
(
DOFVectorBase
<
double
>
*
dv
,
TertiaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
,
WorldVector
<
double
>
>
*
f
);
/** \brief
* Implementation of \ref OperatorTerm::initElement().
*/
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
NULL
);
/** \brief
* Implements ZeroOrderTerm::getC().
*/
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
std
::
vector
<
double
>
&
C
)
const
;
/** \brief
* Implements ZeroOrderTerm::eval().
*/
/// Implements ZeroOrderTerm::eval().
void
eval
(
int
nPoints
,
const
double
*
uhAtQP
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
...
...
@@ -2544,26 +2518,18 @@ namespace AMDiS {
double
fac
)
const
;
protected:
/** \brief
* DOFVector to be evaluated at quadrature points.
*/
/// DOFVector to be evaluated at quadrature points.
DOFVectorBase
<
double
>*
vec
;
/** \brief
* Vector v at quadrature points.
*/
/// Vector v at quadrature points.
double
*
vecAtQPs
;
/** \brief
* Gradient at quadrature points.
*/
/// Gradient at quadrature points.
WorldVector
<
double
>*
gradAtQPs
;
WorldVector
<
double
>*
coordsAtQPs
;
/** \brief
* Function for c.
*/
/// Function for c.
TertiaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
,
WorldVector
<
double
>
>
*
f
;
};
...
...
@@ -2579,20 +2545,14 @@ namespace AMDiS {
VecAndCoordsAtQP_ZOT
(
DOFVectorBase
<
double
>
*
dv
,
BinaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
>
*
f
);
/** \brief
* Implementation of \ref OperatorTerm::initElement().
*/
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
NULL
);
/** \brief
* Implements ZeroOrderTerm::getC().
*/
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
std
::
vector
<
double
>
&
C
)
const
;
/** \brief
* Implements ZeroOrderTerm::eval().
*/
/// Implements ZeroOrderTerm::eval().
void
eval
(
int
nPoints
,
const
double
*
uhAtQP
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
...
...
@@ -2601,24 +2561,16 @@ namespace AMDiS {
double
fac
)
const
;
protected:
/** \brief
* DOFVector to be evaluated at quadrature points.
*/
/// DOFVector to be evaluated at quadrature points.
DOFVectorBase
<
double
>*
vec
;
/** \brief
* Vector v at quadrature points.
*/
/// Vector v at quadrature points.
double
*
vecAtQPs
;
/** \brief
* Gradient at quadrature points.
*/
/// Gradient at quadrature points.
WorldVector
<
double
>*
coordsAtQPs
;
/** \brief
* Function for c.
*/
/// Function for c.
BinaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
>
*
f
;
};
...
...
@@ -2635,20 +2587,14 @@ namespace AMDiS {
Vec2AndGradAtQP_ZOT
(
DOFVectorBase
<
double
>
*
dv1
,
DOFVectorBase
<
double
>
*
dv2
,
TertiaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
,
double
>
*
af
);
/** \brief
* Implementation of \ref OperatorTerm::initElement().
*/
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
NULL
);
/** \brief
* Implements ZeroOrderTerm::getC().
*/
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
std
::
vector
<
double
>
&
C
)
const
;
/** \brief
* Implements ZeroOrderTerm::eval().
*/
/// Implements ZeroOrderTerm::eval().
void
eval
(
int
nPoints
,
const
double
*
uhAtQP
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
...
...
@@ -2657,26 +2603,18 @@ namespace AMDiS {
double
fac
)
const
;
protected:
/** \brief
* DOFVector to be evaluated at quadrature points.
*/
/// DOFVector to be evaluated at quadrature points.
DOFVectorBase
<
double
>*
vec1
;
DOFVectorBase
<
double
>*
vec2
;
/** \brief
* Vector v at quadrature points.
*/
/// Vector v at quadrature points.
double
*
vecAtQPs1
;
double
*
vecAtQPs2
;
/** \brief
* Gradient at quadrature points.
*/
/// Gradient at quadrature points.
WorldVector
<
double
>
*
gradAtQPs
;
/** \brief
* Function for c.
*/
/// Function for c.
TertiaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
,
double
>
*
f
;
};
...
...
@@ -2694,20 +2632,14 @@ namespace AMDiS {
FctGradient_ZOT
(
DOFVectorBase
<
double
>
*
dv
,
AbstractFunction
<
double
,
WorldVector
<
double
>
>
*
f
);
/** \brief
* Implementation of \ref OperatorTerm::initElement().
*/
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
NULL
);
/** \brief
* Implements SecondOrderTerm::getC().
*/
/// Implements SecondOrderTerm::getC().
void
getC
(
const
ElInfo
*
elInfo
,
int
nPoints
,
std
::
vector
<
double
>
&
C
)
const
;
/** \brief
* Implements ZeroOrderTerm::eval().
*/
/// Implements ZeroOrderTerm::eval().
void
eval
(
int
nPoints
,
const
double
*
uhAtQP
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
...
...
@@ -2718,9 +2650,7 @@ namespace AMDiS {
protected:
DOFVectorBase
<
double
>*
vec
;
/** \brief
* Function wich maps \ref gradAtQPs to a double.
*/
/// Function wich maps \ref gradAtQPs to a double.
AbstractFunction
<
double
,
WorldVector
<
double
>
>
*
f
;
/** \brief
...
...
@@ -2743,20 +2673,14 @@ namespace AMDiS {
VecAndGradAtQP_ZOT
(
DOFVectorBase
<
double
>
*
dv
,
BinaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
>
*
f
);
/** \brief
* Implementation of \ref OperatorTerm::initElement().
*/
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
NULL
);
/** \brief
* Implements ZeroOrderTerm::getC().
*/
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
std
::
vector
<
double
>
&
C
)
const
;
/** \brief
* Implements ZeroOrderTerm::eval().
*/
/// Implements ZeroOrderTerm::eval().
void
eval
(
int
nPoints
,
const
double
*
uhAtQP
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
...
...
@@ -2765,24 +2689,16 @@ namespace AMDiS {
double
fac
)
const
;
protected:
/** \brief
* DOFVector to be evaluated at quadrature points.
*/
/// DOFVector to be evaluated at quadrature points.
DOFVectorBase
<
double
>*
vec
;
/** \brief
* Vector v at quadrature points.
*/
/// Vector v at quadrature points.
double
*
vecAtQPs
;
/** \brief
* Gradient at quadrature points.
*/
/// Gradient at quadrature points.
WorldVector
<
double
>
*
gradAtQPs
;
/** \brief
* Function for c.
*/
/// Function for c.
BinaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
>
*
f
;
};
...
...
@@ -2798,21 +2714,15 @@ namespace AMDiS {
VecAndGradAtQP_SOT
(
DOFVectorBase
<
double
>
*
dv
,
BinaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
>
*
af
);
/** \brief
* Implementation of \ref OperatorTerm::initElement().
*/
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
NULL
);
/** \brief
* Implements SecondOrderTerm::getLALt().
*/
/// Implements SecondOrderTerm::getLALt().
inline
void
getLALt
(
const
ElInfo
*
elInfo
,
int
nPoints
,
DimMat
<
double
>
**
LALt
)
const
;
/** \brief
* Implements SecondOrderTerm::eval().
*/
/// Implements SecondOrderTerm::eval().
void
eval
(
int
nPoints
,
const
double
*
uhAtQP
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
...
...
@@ -2820,32 +2730,22 @@ namespace AMDiS {
double
*
result
,
double
factor
)
const
;
/** \brief
* Implements SecondOrderTerm::weakEval().
*/
/// Implements SecondOrderTerm::weakEval().
void
weakEval
(
int
nPoints
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
WorldVector
<
double
>
*
result
)
const
;
protected:
/** \brief
* DOFVector to be evaluated at quadrature points.
*/
/// DOFVector to be evaluated at quadrature points.
DOFVectorBase
<
double
>*
vec
;
/** \brief
* Vector v at quadrature points.
*/
/// Vector v at quadrature points.
double
*
vecAtQPs
;
/** \brief
* Gradient at quadrature points.
*/
/// Gradient at quadrature points.
WorldVector
<
double
>
*
gradAtQPs
;
/** \brief
* Function for c.
*/
/// Function for c.
BinaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
>
*
f
;
};
...
...
@@ -2916,21 +2816,15 @@ namespace AMDiS {
:
ZeroOrderTerm
(
af
->
getDegree
()),
g
(
af
)
{}
/** \brief
* Implementation of \ref OperatorTerm::initElement().
*/
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
NULL
);
/** \brief
* Implements ZeroOrderTerm::getC().
*/
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
std
::
vector
<
double
>
&
C
)
const
;
/** \brief
* Implements ZeroOrderTerm::eval().
*/
/// Implements ZeroOrderTerm::eval().
void
eval
(
int
nPoints
,
const
double
*
uhAtQP
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
...
...
@@ -2939,14 +2833,10 @@ namespace AMDiS {
double
fac
)
const
;
protected:
/** \brief
* Stores coordinates at quadrature points. Set in \ref initElement().
*/
/// Stores coordinates at quadrature points. Set in \ref initElement().
WorldVector
<
double
>*
coordsAtQPs
;
/** \brief
* Function for c.
*/
/// Function for c.
AbstractFunction
<
double
,
WorldVector
<
double
>
>
*
g
;
};
...
...
@@ -2969,20 +2859,14 @@ namespace AMDiS {
setSymmetric
(
xi
==
xj
);
}
/** \brief
* Implementation of \ref OperatorTerm::initElement().
*/
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
NULL
);
/** \brief
* Implements SecondOrderTerm::getLALt().
*/
/// Implements SecondOrderTerm::getLALt().
inline
void
getLALt
(
const
ElInfo
*
elInfo
,
int
nPoints
,
DimMat
<
double
>
**
LALt
)
const
;
/** \brief
* Implements SecondOrderTerm::eval().
*/
/// Implements SecondOrderTerm::eval().
void
eval
(
int
nPoints
,
const
double
*
uhAtQP
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
...
...
@@ -2990,27 +2874,19 @@ namespace AMDiS {
double
*
result
,
double
factor
)
const
;
/** \brief
* Implements SecondOrderTerm::weakEval().
*/
/// Implements SecondOrderTerm::weakEval().
void
weakEval
(
int
nPoints
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
WorldVector
<
double
>
*
result
)
const
;
private:
/** \brief
* Stores coordinates at quadrature points. Set in \ref initElement().
*/
/// Stores coordinates at quadrature points. Set in \ref initElement().
WorldVector
<
double
>*
coordsAtQPs
;
/** \brief
* Function evaluated at quadrature points.
*/
/// Function evaluated at quadrature points.
AbstractFunction
<
double
,
WorldVector
<
double
>
>
*
g
;
/** \brief
* Directions for the derivatives.
*/
/// Directions for the derivatives.
int
xi
,
xj
;
};
...
...
@@ -3030,20 +2906,14 @@ namespace AMDiS {
VecAtQP_IJ_SOT
(
DOFVectorBase
<
double
>
*
dv
,
AbstractFunction
<
double
,
double
>
*
af
,
int
x_i
,
int
x_j
);
/** \brief
* Implementation of \ref OperatorTerm::initElement().
*/
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
NULL
);
/** \brief
* Implements SecondOrderTerm::getLALt().
*/
/// Implements SecondOrderTerm::getLALt().
void
getLALt
(
const
ElInfo
*
elInfo
,
int
nPoints
,
DimMat
<
double
>
**
LALt
)
const
;
/** \brief
* Implements SecondOrderTerm::eval().
*/
/// Implements SecondOrderTerm::eval().
void
eval
(
int
nPoints
,
const
double
*
uhAtQP
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
...
...
@@ -3051,34 +2921,23 @@ namespace AMDiS {
double
*
result
,
double
factor
)
const
;
/** \brief
* Implements SecondOrderTerm::weakEval().
*/
/// Implements SecondOrderTerm::weakEval().
void
weakEval
(
int
nPoints
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
WorldVector
<
double
>
*
result
)
const
;
protected:
/** \brief
* DOFVector to be evaluated at quadrature points.
*/
/// DOFVector to be evaluated at quadrature points.
DOFVectorBase
<
double
>*
vec
;
/** \brief
* Pointer to an array containing the DOFVector evaluated at quadrature
* points.
*/
/// Pointer to an array containing the DOFVector evaluated at quadrature points.
double
*
vecAtQPs
;
/** \brief
* Function evaluated at \ref vecAtQPs.
*/
/// Function evaluated at \ref vecAtQPs.
AbstractFunction
<
double
,
double
>
*
f
;
private:
/** \brief
* Directions for the derivatives.
*/
/// Directions for the derivatives.
int
xi
,
xj
;
};
...
...
@@ -3090,20 +2949,14 @@ namespace AMDiS {
DOFVectorBase
<
double
>
*
dGrd
,
BinaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
>
*
f
);
/** \brief
* Implementation of \ref OperatorTerm::initElement().
*/
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
NULL
);
/** \brief
* Implements ZeroOrderTerm::getC().
*/
/// Implements ZeroOrderTerm::getC().
void
getC
(
const
ElInfo
*
,
int
nPoints
,
std
::
vector
<
double
>
&
C
)
const
;
/** \brief
* Implements ZeroOrderTerm::eval().
*/
/// Implements ZeroOrderTerm::eval().
void
eval
(
int
nPoints
,
const
double
*
uhAtQP
,
const
WorldVector
<
double
>
*
grdUhAtQP
,
...
...
@@ -3112,29 +2965,19 @@ namespace AMDiS {
double
fac
)
const
;
protected:
/** \brief
* DOFVector to be evaluated at quadrature points.
*/
/// DOFVector to be evaluated at quadrature points.
DOFVectorBase
<
double
>*
vec
;
/** \brief
* Vector v at quadrature points.
*/
/// Vector v at quadrature points.
double
*
vecAtQPs
;
/** \brief
* First DOFVector whose gradient is evaluated at quadrature points.
*/
/// First DOFVector whose gradient is evaluated at quadrature points.
DOFVectorBase
<
double
>*
vecGrd
;
/** \brief
* Gradient of first vector at quadrature points.
*/
/// Gradient of first vector at quadrature points.
WorldVector
<
double
>
*
gradAtQPs
;
/** \brief
* Function for c.
*/
/// Function for c.
BinaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
>
*
f
;
};
...
...
@@ -3147,20 +2990,14 @@ namespace AMDiS {
DOFVectorBase
<
double
>
*
dGrd2
,
TertiaryAbstractFunction
<
double
,
double
,
WorldVector
<
double
>
,
WorldVector
<
double
>
>
*
af
);
/** \brief
* Implementation of \ref OperatorTerm::initElement().
*/
/// Implementation of \ref OperatorTerm::initElement().
void
initElement
(
const
ElInfo
*
elInfo
,
SubAssembler
*
subAssembler
,
Quadrature
*
quad
=
NULL
);
/** \brief
* Implements ZeroOrderTerm::getC().
*/